preamble
From my perspective, it's still harder to compete for a position like Minister or Technical Director, in other words, programmers have a narrower upward mobility, and if you want to get a senior position, the best thing to do is to work for three to five years and then switch to Project Manager, and then work your way up the ladder.
Architects do get promoted to senior positions, but as far as efficiency goes, it's very low. In my experience, senior positions in the architect department are usually technical management in one hand, but that also means that there is more responsibility, which means a bigger pot.
So senior positions in the architect department are very precarious, very tiring, and very easy to fail to stick with, especially after you get married and have kids.
So, choice is greater than effort, if you want to fight your way up the ladder, it's better to get into the pit as soon as possible for project management is the best policy, if you don't want to fight your way up the ladder or can't do it, it doesn't matter about the choice.
Even if the same architect, java department architects are relatively better, ecological good means that java department architects are relatively do not have to learn so much, and will not have to be so tired.
As a simple example, a java architect can not know android and hongmeng, but a net architect must know winform and wpf.
So, still the words, choice is greater than effort, can pit java or pit java as early as possible, so that you will take a few years less detours, and if you lie flat, can let you after 35 years old can continue to use technology to eat, but also eat a good meal, only the ecology of java.
Of course, the java department there are subdivided, can choose big data to go big data, big data is a job content is unusually simple, the workload is unusually small a position, and people also think you work content is very mysterious, will be more dignified.
In my experience, learning flink is only 30% as hard as learning java, but you'll probably get paid more than java and work less overtime than java.
Let's get back to the main topic, architect preparation.
Architect Preparation - Memorizing the Difficulties
In fact, the so-called difficulty in memorizing is that it's harder to switch between our understanding and bullshit descriptions.
The prototype model (property)
Getting a new object by copying the object properties, or clone, is that object property mapping of DTO to entity.
Be able to analyze that he is describing the prototype pattern by the following definition.
A prototype instance is used to specify the type of object to be created, and new objects are created by copying this prototype. Running objects creates custom pairs without knowing the exact class that created the object and the details of how it was created.
Elephant.
Builder (generator model)
It is the common builder in java to create objects, or understand the annotation @Builder.
Note: Other languages do not have this pattern, other language development, it is understood that the constructor to create objects can be.
To be able to analyze that he is describing the generator pattern by the following definition.
Separating the representation of a complex class from its construction allows the same building process to result in different representations.
Abstract Factory.
Different objects are available through different interfaces.
Note: The difference between the Abstract Factory Pattern and the Factory Pattern is that the Factory Pattern gets different objects by entry. These two patterns are written in other languages as code, so there is no conceptual structure, and it is important to learn to distinguish between them here.
Be able to analyze that he is describing the Abstract Factory pattern by the following definition.
Provides an interface for creating a set of related or interdependent objects without specifying their specific classes.
Warehouse Style Architecture
- Centralized storage: This means that the data is all in one database.
- Data-driven: that is to say, as soon as the data is updated, query the data will immediately get the latest data, because they are in a library.
- Data processing: that is, stored in a database
- Extensibility: plug-ins can be added to extend functionality.
Pipe Filter Styles
- This is mainly to examine the mechanism of servlet, all the questions to servlet can rely on. Other language development can be like a bunch of filters. This general situation is a small part of the architecture, pure pipeline filters made out of components or rare.
- Characteristics: Data flow, single function, flexible combination.
- Extensibility: the flexibility to add filters.
Data-driven mechanisms
A data-driven mechanism is a data-driven approach, and there are several: database-driven applications, configuration file-driven applications, and scripting language-driven applications. This is a bit of IOC, control flip-flop, reverse data-centric drive the performance of the application.
page transition table
This is a must memorize, there will definitely be 1 ~ 2 blanks, i.e. these 1 ~ 2 marks are a must take.
Virtual memory: virtual memory is a combination of physical memory and part of the hard disk (auxiliary storage) for the cpu to call.
Virtual page: In a virtual memory system, the memory used by a program is subdivided into blocks of memory, which are called virtual pages.
Page Frames/Physical Blocks:This is the address of the physical memory and hard disk that the virtual memory corresponds to.
Page Transform Table: is used to record the correspondence between page frames/physical blocks in virtual memory.
Present Bit: Indicates whether the page is currently in physical memory. If the Present Bit is 1, the page is in physical memory; if it is 0, the page is not in physical memory and needs to be retrieved from secondary storage.
Access Bit: Records whether the page has been accessed. The operating system can use the Access Bit to determine which pages have been used recently, so that it can select them when it is time to change out of the page.
Modified Bit: Indicates whether the page has been modified. If the Modified Bit is 1, it means that the page has been modified after being loaded into the physical memory and needs to be written back to the auxiliary storage when it is swapped out; if it is 0, it means that the page has not been modified and can be discarded directly.
Protection Bit: Used to specify the access rights of this page, such as read-only, read-write, executable, etc.
page number | Physical block number/page frame number | status bit | access point |
---|---|---|---|
0 | 1 | 1 | 0 |
1 | - | 0 | 0 |
2 | 3 | 1 | 1 |
3 | 8 | 1 | 1 |
Logical address 16 bits: 3148H, the first bit 5 indicates the virtual page address, the internal address of the page is 148H, check the table, 3 corresponding to the page frame is 8, so the conversion of the physical address is 8148H.
If page 1 is accessed, it is not in memory because of page 1 status bit 0, so a page in memory is eliminated to provide a place for this access, then page 0 is eliminated because it is in memory and has not been accessed recently.
Quality Attributes
The meaning of the quality attributes is as follows:
Performance (response time), Availability (downtime recovery), Modifiability (short modification time), Ease of use, Reliability (fault tolerance, robustness), Security (authentication logic, blocking unauthorized users)
- Improve performance - resource scheduling (that's load balancing)
- Improve availability - heartbeat (availability in the exam is exclusively - service query (nacos) heartbeat system to bring services online and offline via heartbeat)
- Improve modifiability - information hiding (this one is harder to remember and understand, my guess is that they think that a form modifying less content improves modifiability, this one has to be memorized in a special way, it's a bit anti-logical)
- Ease of use - This is the ease of use for the user.
- Reliability - Fault tolerance, robustness. The ability to maintain the functional characteristics of a software system in the event of accidental or incorrect use.
- Improve security - Trace auditing, which is logging and traceability.
Security in the exam should be specifically referring to java's Security and Auth2, his set of logic is still quite difficult to understand, especially in combination with java's control reversal structure. (java now engaged in component design are control reversal, while other languages are forward development)
Non-java faculty developers can refer to the following article for understanding.
In fact, if it is our normal, hand-built framework, I think even java architects will kick out Security and Auth2, because he has a problem with this model, however, many questions in the exam will refer to this out of the non-java Department of development, this piece will only be able to blindfolded, it is really not good to understand.
SpringBoot's use of Security and OAuth2
Category of component
This artifact system, which is spring's system, is injected one by one into the artifacts because the whole thing is IOC.
Since most of us developers do application development, and this building block model, while available, is still relatively rare, the likelihood that a non-java developer may have worked for 20 years and never developed software this way is high.
Non-java developers can imagine this component model as docker. java developers are happier, the following definition of a look, immediately can be associated with a variety of spring components.
- (1) Independent and mature components. Independent and mature components have been tested many times in real operating environments, and this type of components hides all the interfaces, so that the user only needs to use the prescribed commands. For example, database management systems and operating systems.
- (2) Restricted artifacts. Restricted artifacts provide interfaces, pointing out the conditions and prerequisites for use, this kind of artifacts in the assembly, there will be resource conflicts, coverage and other impacts, in the use of the need to be tested. For example, a variety of object-oriented programming languages, such as the basic class libraries.
- (3) Adaptive components. Adaptive components are packaged or use interface technology to handle incompatibilities, resource conflicts, etc., so that they can be used directly. This kind of component can be used in various environments without modification. For example, ActiveX.
- (4) assembled components. Assembly (assemble) of the components in the installation, has been assembled in the operating system, database management system or information system at different levels, the use of glue code (gluecode) can be connected to use. Currently some software vendors provide most software products belong to this category.
- (5) Modifiable components. Modifiable artifacts allow for version replacement. If the original component to modify the error, add new features, can be used to re "packaging" or write interfaces to achieve the replacement of components. This kind of component in the application system development is used more.
middleware
The middleware examined here refers specifically to kafka and redis and nacos, while other languages can just think in terms of rabbitMQ and redis and consul.
Connectivity and communication: the exam considers middleware to be the connection and communication between the client and the server (connectivity and communication is a property of middleware, and in the exam it is considered to be the main property, which I personally feel is a bit strange to define, but still gives some understanding)
Transaction management mechanisms to ensure transaction consistency: this should refer to distributed locks with redis building blocks.
Load Balance and High Availability: This refers to nacos, an internal component Load Balance (Robbin in lower versions) for load balancing and Heartbeat for high availability.
Relationship model R(U,F)
This one is mostly about memorizing some terms.
In "R(U,F)":
"R" denotes a Relation Schema.
"U" is an Attributes Set, which is the set of all attributes in a relational schema. For example, a student relational schema may have Attributes Set U = {Student Number, Name, Age, Class Number} etc.
"F" is a Set of Functional Dependencies, which is used to describe the constraint relationships between attributes. For example, F may contain the functional dependencies {Student Number}→{Name}, {Class Number}→{Counselor}, and so on.
- If the relation R(U, F) is given, U = {A, B, C, D, E, F = {A → BC, B → D, D → E}.
Then there is [dependency transfer], A → B, B → D, D → E.
Based on dependency transfer, a new dependency relation, A → D, A → E, can be obtained - If, for example, U1 = {A, B, C) and U2 = {B, D, E}, then the decomposition p().
This question is asking about splitting the table, splitting the U table into two tables, and then the fields are U1={A, B, C), U2={B, D, E}, this splitting of the table, it's better to understand, we split it all the time, and the splitting in the question, it's the correct splitting, so it doesn't affect anything, so [Lossless joins and maintains function dependency].
A lossless connection is one that doesn't lose fields.
Database Distributed Model
This database schema is designed for the java department of mysql database , in the java project , sometimes use the existing open source projects , most of these projects are microservices model .
Then these open source projects, usually split the table into 8 to 20 databases, because at the beginning of the start of the table and library is too much, so after that, with the development of the table and library of the chaos is an exponential multiplication of the increase in the library of the more tables, the more complex the operation, so some of the mediocre project, there will be some of Taobao Jingdong and such a large system of the same difficulties to be confronted.
Also as a result, there are some concepts that would have been necessary to learn only in a specific environment, but in the java system, they become commonplace concepts.
- Out-of-global mode.
Beast language: is an abstraction of the top level of a distributed database.
People say: the global external schema is a graph. It's is to look at a distributed database as a centralized database, and a centralized database is a database. Then a graph is used to describe the database structure. - Global Conceptual Model.
Beast language: is a distributed database of the overall abstraction, contains all the data characteristics and logical structure of the system describes the distribution of the global data of the logical structure of the database, is a distributed database of the global conceptual view.
Human words: the global conceptual schema is a diagram, the overall, detailed logical relationship diagram of a distributed database. - Segmentation mode.
Beast language: a view that describes the logical division of global data, the logical structure of the global data according to the conditions; each logical division is a segment or called a slice.
People's word: It's not a diagram, he's splitting the database, that is, horizontally, vertically, like by field, by date. - Distribution model (distribution model).
Beast language: the local physical structure that describes the local logic is the physically allocated view of the segmented (or partitioned) segments; it is the content of the global conceptual layer.
Human Words: is a diagram that is a logical relationship diagram of the data sliced above the record. - Localized Conceptual Layer:
Beast language: described by local conceptual schema, a subset of the global conceptual schema; the global conceptual schema is logically divided and assigned to each local site.
Human words: the local conceptual layer is a graph, distributed databases will have multiple libraries, this local conceptual graph is the logical description graph of the node libraries.
Note: This post is original, please contact the author for authorization and attribution for any form of reproduction!
If you think this article is still good, please click [Recommend] below, thank you very much!
/kiba/p/18404588