This page was last updated on 20180427

  • The data structure
    • The queue
    • A collection of
    • Linked lists, arrays
    • Dictionaries, associative arrays
    • The stack
    • The tree
      • Binary tree
      • Complete binary tree
      • Balanced binary trees
      • Binary Search tree (BST)
      • Red and black tree
      • B minus, B plus, B star tree
      • LSM tree
    • BitSet
  • Commonly used algorithm
    • Sorting, search algorithm
      • Selection sort
      • Bubble sort
      • Insertion sort
      • Quick sort
      • Merge sort
      • Hill sorting
      • Heap sort
      • Count sorting
      • Bucket sort
      • Radix sort
      • Binary search
      • Sorting tools in Java
    • Bloom filter
    • String comparison
      • KPM algorithm
    • Give priority to depth and breadth
    • Greedy algorithm
    • Backtracking algorithm
    • Pruning algorithm
    • Dynamic programming
    • Naive Bayes
    • Recommendation algorithm
    • Minimum spanning tree algorithm
    • Shortest path algorithm
  • concurrent
    • multithreading
    • Thread safety
    • Consistency, transaction
      • Transaction ACID characteristics
      • The isolation level of the transaction
    • The lock
      • Locking and synchronization classes in Java
      • Fair locks & Unfair locks
      • Pessimistic lock & Optimistic lock & CAS
      • ABA problem
      • CopyOnWrite container
      • RingBuffer
      • Reentrant locks & non-reentrant locks
      • Mutex & shared locks
      • A deadlock
  • The operating system
    • Computer Principles
    • process
    • thread
    • coroutines
    • Linux
  • Design patterns
    • Six principles of design patterns
    • 23 common design patterns
    • Application scenarios
    • The singleton pattern
    • Chain of Responsibility model
    • MVC
    • IOC
    • AOP
    • UML
    • Microservice idea
      • Conway’s law
  • Operation & Statistics & Technical support
    • Routine monitoring
    • APM
    • Statistical analysis
    • Continuous Integration (CI/CD)
      • Jenkins
      • Environmental separation
    • Automated operation and maintenance
      • Ansible
      • puppet
      • chef
    • test
      • TDD theory
      • Unit testing
      • Pressure test
      • Full-link pressure measurement
      • A/B Test
    • virtualization
      • KVM
      • Xen
      • OpenVZ
    • Container technology
      • Docker
    • The cloud
      • OpenStack
    • DevOps
    • Document management
  • The middleware
    • Web Server
      • Nginx
      • OpenResty
      • Apache Httpd
      • Tomcat
        • Architecture principles
        • The tuning scheme
      • Jetty
    • The cache
      • The local cache
    • Client cache
      • Memcached
      • Redis
        • architecture
        • Recovery strategy
      • Tair
    • The message queue
      • The message bus
      • Order of messages
      • RabbitMQ
      • RocketMQ
      • ActiveMQ
      • Kafka
      • Redis message push
      • ZeroMQ
    • Timing schedule
      • Single machine timing scheduling
      • Distributed timing scheduling
    • RPC
      • Dubbo
      • Thrift
      • gRPC
    • Database middleware
      • Sharding Jdbc
    • Logging system
      • Log collection
    • Configuration center
    • API gateway
  • network
    • agreement
      • OSI layer 7 protocol
      • TCP/IP
      • HTTP
      • HTTP2.0
      • HTTPS
    • A network model
      • Epoll
      • NIO
      • kqueue
    • Join and short join
    • The framework
    • Zero-copy
    • Serialization (binary protocol)
      • Hessian
      • Protobuf
  • The database
    • The basic theory
      • Three paradigms of database design
    • MySQL
      • The principle of
      • InnoDB
      • To optimize the
      • The index
        • Clustered index, non-clustered index
        • The composite index
        • Adaptive Hash index (AHI)
      • explain
    • NoSQL
      • MongoDB
      • Hbase
  • Search engine
    • Principles of Search Engines
    • Lucene
    • Elasticsearch
    • Solr
    • sphinx
  • performance
    • Performance optimization methodology
    • Capacity assessment
    • CDN network
    • The connection pool
    • Performance tuning
    • Flow calculation
      • Storm
      • Flink
      • Kafka Stream
      • Application scenarios
    • Hadoop
      • HDFS
      • MapReduce
      • Yarn
    • Spark
  • security
    • Web security
      • XSS
      • CSRF
      • SQL injection
      • Hash Dos
      • Script injection
      • Vulnerability scanning tool
      • Verification code
    • To prevent DDoS
    • User privacy information protection
    • Encryption to decrypt
      • Symmetric encryption
      • The hash algorithm
      • Asymmetric encryption
    • Server security
    • Data security
      • The data backup
    • Network isolation
      • Extranet separation
      • Log in to the jumper
    • authorization
      • RBAC
      • OAuth2.0
  • Common Open Source Frameworks
    • Open source licenses
    • The logging framework
      • Log4j, Log4j2
      • Logback
    • ORM
    • Network framework
    • Web framework
      • The family of the Spring
    • Tool framework
  • Distributed design
    • Extensibility design
    • Stability & high availability
      • Hardware load balancing
      • Software load balancing
      • Current limiting
      • Application-layer Dr
      • Cross-equipment room Dr
      • Dr Test process
      • A smooth start
    • Database extension
      • Read/write separation mode
      • Fragmentation patterns
    • Service governance
      • Service registration and discovery
      • Service routing control
    • Distributed consistency
      • CAP and BASE theory
      • A distributed lock
      • Distributed consistency algorithm
        • PAXOS
        • Zab
        • Raft
        • Gossip
        • Two-phase commit, multi-phase commit
      • Power etc.
      • Distributed consistent scheme
      • Distributed Leader node election
      • TCC(Try/Confirm/Cancel) flexible transaction
    • Distributed file system
    • Unique ID generation
      • Globally unique ID
    • Consistent Hash algorithm
  • Design thought & development mode
    • DDD(Domain Driven Design – Domain Driven Design)
      • Command Query Separation of responsibilities (CQRS)
      • Anemic, hyperemic model
    • The Actor model
    • Responsive programming
    • DODAF2.0
    • Serverless
  • The project management
    • Architecture review
    • refactoring
    • Code specification
    • RUP
    • Kanban management
    • SCRUM
    • Extreme programming (xp)
    • Agile development
    • Pair programming
  • General business terms
  • Technology trends
  • Architect quality
  • Team management
    • recruitment
  • information
    • Industry information
    • List of public accounts
    • blog
      • Team blog
      • Personal blog
    • Integrated portal, community
    • Q&a and discussion community
    • Industry data analysis
    • The special website
    • Other classes
    • Recommended reference books
      • Online e-books
      • Paper books
        • development
        • Architectural aspects
        • Technical management
        • The basic theory
        • tools
        • Big data
  • Technical resources
    • Open source resources
    • Manuals, documents, tutorials
    • Online classroom
    • Meetings, events
    • Commonly used APP
    • Looking for a job
    • tool
    • Managed code
    • File service
    • Integrated cloud service provider

(Toc generated bysimple-php-github-toc )

The data structure

The queue

  • Java Queues — A Detailed analysis of Queues

    • Non-blocking queue: ConcurrentLinkedQueue(unbounded thread safety), CAS mechanism (compareAndSwapObject atomic operation).
    • Block queues: ArrayBlockingQueue(bounded), LinkedBlockingQueue (unbounded), DelayQueue, PriorityBlockingQueue (lock mechanism); Use ReentrantLock to lock.
  • LinkedList, ConcurrentLinkedQueue, and LinkedBlockingQueue

A collection of

Linked lists, arrays

Dictionaries, associative arrays

The stack

The tree

Binary tree

Each node has a maximum of two leaf nodes.

  • Binary tree

Complete binary tree

Balanced binary trees

The absolute value of the height difference between the left and right subtrees is no more than 1, and both subtrees are a balanced binary tree.

Binary Search tree (BST)

Sorted Binary Tree: sorted Binary Tree: sorted Binary Tree

Red and black tree

B minus, B plus, B star tree

MySQL organizes tables based on B+ tree clustered indexes

LSM tree

Compared with B+ Trees, LSM (log-structured merge-trees) sacrifices part of the read performance in exchange for the write performance (through batch writes). Hbase, LevelDB, Tair (Long DB), and nessDB use the LSM tree structure. LSM can quickly build indexes.

BitSet

It is often used to rearrange large – scale data.

Commonly used algorithm

Sorting, search algorithm

Selection sort

Bubble sort

Insertion sort

Quick sort

Merge sort

Hill sorting

TODO

Heap sort

  • “Graphical Sorting Algorithm (3) heap Sorting”
    • Sorting is the process of building the maximum heap: each node has a value greater than or equal to its left and right children, and the top element is the maximum.

Count sorting

Bucket sort

Radix sort

In the ones place, tens place, hundreds place… Let’s do it one by one.

Binary search

Sorting tools in Java

Bloom filter

It is often used to load big data, such as email, URL, etc. The core principle: each piece of data is computed to produce a fingerprint (one or more bytes, but certainly much less than the original data), each bit of which is obtained by random calculation, and the fingerprint is mapped into a large bitwise storage space. Note: There is a certain error rate. Advantages: Very efficient in space and time. Disadvantages: The error rate increases as the number of stored elements increases.

String comparison

KPM algorithm

KPM: The core principle of Knuth-Morris-Pratt algorithm (KMP for short) is to use a “partial match table” to skip the already matched elements.

  • “KMP Algorithm for String Matching”

Give priority to depth and breadth

Greedy algorithm

Backtracking algorithm

Pruning algorithm

Dynamic programming

Naive Bayes

Recommendation algorithm

Minimum spanning tree algorithm

Shortest path algorithm

concurrent

multithreading

  • 40 Java Multithreading Problems

Thread safety

Consistency, transaction

Transaction ACID characteristics

  • Database Transaction ACID Characteristics

The isolation level of the transaction

MVCC

The lock

Locking and synchronization classes in Java

  • Classification of Locks in Java

    • These include synchronized, ReentrantLock, and ReadWriteLock.
  • AQS in Java Concurrency

  • Semaphore in Java

    • Quantity control
    • If acquire is used for application, block if do not apply; Release with release.
  • Mutex vs Semaphore in Java Development

    • To put it simply, Mutex is exclusive, and only one can get the resource. Semaphore is also exclusive, but can define multiple objects that can get the resource.

Fair locks & Unfair locks

The role of fair lock is strictly in accordance with the order of the thread to execute, do not allow other threads to jump the queue to execute; And non-fair locks allow queue-jumping.

Pessimistic lock & Optimistic lock & CAS

ABA problem

Due to high concurrency, under CAS, this A may not be that A after update. This can be resolved by the version number, similar to the optimistic lock mentioned in Mysql above.

CopyOnWrite container

The CopyOnWrite container can be read concurrently without locking. The CopyOnWrite concurrent container is used in concurrent scenarios where more reads and less writes are required. For example, whitelist, blacklist, and commodity access and update scenarios are not suitable for scenarios requiring strong data consistency.

RingBuffer

Reentrant locks & non-reentrant locks

Mutex & shared locks

Mutex: Only one thread can acquire the lock at a time. For example, ReentrantLock is a mutex, and write locks in ReadWriteLock are mutex. Shared lock: A lock that can have multiple threads simultaneously or simultaneously. For example, Semaphore, CountDownLatch, and ReadWriteLock are shared locks.

A deadlock

The operating system

Computer Principles

  • Fundamentals of Operating Systems — Principles, Types, and Structures of Operating systems

process

TODO

thread

  • The Life cycle of threads and State Transitions

coroutines

Linux

Design patterns

Six principles of design patterns

  • Six Principles of Design Patterns
    • Open closed principle: Open for extension, closed for modification, use abstract classes and interfaces.
    • Richter’s substitution principle: Base classes can be replaced by subclasses, using abstract class inheritance, not concrete class inheritance.
    • The dependency inversion principle: Rely on the abstract, not the concrete, program for the interface, not the implementation.
    • Interface isolation principle: It is better to use multiple isolated interfaces than to use a single interface, and establish a minimum interface.
    • Demeter’s Law: a software entity should interact with as few other entities as possible, establishing connections through intermediate classes.
    • The rule of compositing reuse: use compositing/aggregating instead of inheritance whenever possible.

23 common design patterns

Application scenarios

The singleton pattern

Chain of Responsibility model

TODO

MVC

  • MVC Pattern
    • Model – View – Controller

IOC

AOP

UML

Microservice idea

Conway’s law

Operation & Statistics & Technical support

Routine monitoring

  • Cultivation of Tencent Business System Monitoring

    • Monitoring methods: active, passive and by-pass (such as public opinion monitoring)
    • Monitoring types: basic monitoring, server monitoring, client monitoring, monitoring, and client monitoring
    • Monitoring objectives: complete, block and accurate
    • Core indicators: Request volume, success rate, time
  • Open Source or Commercial? Review of Top 10 Cloud Operation and Maintenance Monitoring Tools

    • Zabbix, Nagios, Ganglia, Zenoss, Open-Falcon, Monitor Treasure, 360 website service monitoring, Ali Cloud Monitoring, Baidu Cloud Observation, Little Bee website monitoring, etc.
  • Monitoring and Alarm System Construction and Secondary Development Experience

Command line monitoring tool

  • Common Command Line Monitoring Tool

    • Top, SAR, TSAR, NLOAD
  • 20 Command Line Tools to Monitor Linux System Performance

  • JPS, JStack, JMAP, JHAT, Jstat, Hprof

APM

APM — Application Performance Management

Statistical analysis

Continuous Integration (CI/CD)

Jenkins

Environmental separation

Separation of development, test, and build environments.

Automated operation and maintenance

Ansible

  • The Definitive Guide to Ansible Chinese
  • Practical Examples of Ansible Basic Configuration and Enterprise Projects

puppet

chef

test

TDD theory

  • Deep Reading – TDD (Test Driven Development)
    • Coding functional code based on test cases is a core practice of XP (Extreme Programming).
    • Benefits: focus on one point at a time, reduce the burden of thinking; Responding to changing requirements or improving code design; Clarify requirements in advance; Quick feedback;

Unit testing

Pressure test

Full-link pressure measurement

A/B Test

virtualization

KVM

Xen

OpenVZ

Container technology

Docker

  • A few images to help you Understand the basics of Docker and a quick Start
  • Docker Core Technology and Implementation Principle
  • Docker Tutorial

The cloud

OpenStack

  • Overview of OpenStack Architecture

DevOps

Document management

The middleware

Web Server

Nginx

OpenResty

Apache Httpd

Tomcat

Architecture principles

  • Detailed Explanation of TOMCAT Principle and Request Process

  • Detailed Principles of the Tomcat Server

  • Tomcat System Architecture and Design Patterns, Part 1: How it Works

  • Four Diagrams to Guide you to The Tomcat System Architecture

  • JBoss vs. Tomcat: Choosing A Java Application Server

    • Tomcat is a lightweight Serverlet container that does not implement all JEE features (such as persistence and transactions), but can be replaced by other components, such as Srping.
    • Jboss implements all JEE features. The software is free and open source, and documentation is charged.

The tuning scheme

Jetty

The cache

The local cache

Client cache

Memcached

Redis

architecture

Recovery strategy

Tair

Several storage engines:

  • MDB, fully memory, can be used to store data such as sessions.
  • Rdb (similar to Redis), lightweight, eliminates operations like AOF, and supports Restfull operations
  • LevelDB (LevelDB storage engine), persistent storage, LDB as RDB persistence, Google implementation, relatively efficient, based on the log-Structured Merge Tree (LSM) algorithm, now modify data in memory, When a certain amount of data is written to the disk together with the old data summarized in memory, the data is then written to the disk for more efficient storage.
  • Tair uses shared memory to store data, and if the service fails (not the server), the data remains after the service is restarted.

The message queue

The message bus

Message bus is equivalent to a layer of encapsulation on message queue, unified entry, unified control, simplified access costs.

Order of messages

RabbitMQ

Transaction support and push and pull mode are both supported and suitable for scenarios requiring reliable message transmission.

RocketMQ

Java implementation, push and pull mode is supported, throughput is inferior to Kafka. Message order can be guaranteed.

ActiveMQ

Pure Java implementation, COMPATIBLE with JMS, can be embedded in Java applications.

Kafka

High throughput and pull mode. Suitable for IO scenarios, such as log synchronization.

Redis message push

Producer and consumer modes are completely client-side behaviors, list and pull modes are implemented, and block waits are blPOP instructions.

ZeroMQ

TODO

Timing schedule

Single machine timing scheduling

Distributed timing scheduling

RPC

Dubbo

** SPI ** TODO

Thrift

gRPC

The server can be authenticated and encrypted to ensure data security on the Internet.

Database middleware

Sharding Jdbc

  • website

Logging system

Log collection

  • “Build an ELKB Log Collection System from scratch”
  • Building a Simple Log Collection and Analysis System with ELK
  • Log Collection System – Exploration

Configuration center

Servlet 3.0 asynchrony features can be used to configure central clients

  • Servlet3.0 new features — asynchronous processing

API gateway

Main responsibilities: request forwarding, security authentication, protocol conversion, and disaster recovery.

network

agreement

OSI layer 7 protocol

TCP/IP

HTTP

HTTP2.0

HTTPS

A network model

Epoll

Java NIO

kqueue

Join and short join

The framework

Zero-copy

Serialization (binary protocol)

Hessian

  • Hessian Principle Analysis Binary-RPC; Not just serialization

Protobuf

  • The Java application example of Protobuf agreement Google product, takes up space and those of other serialization efficiency class libraries, such as the Hessian; You need to write.proto files.
  • Protocol Buffers Serialization Protocol and Its Application Disadvantages: poor readability;

The database

The basic theory

Three paradigms of database design

  • The Three Paradigms and Five Constraints of databases
    • The first paradigm: each column (each field) in the data table must be the smallest unit that cannot be split, that is, to ensure atomicity of each column;
    • Second normal Form (2NF) : after meeting 1NF, all columns in the table must depend on the primary key, and no column can be independent of the primary key, that is, a table only describes one thing;
    • Third normal form: you must first satisfy the second normal form (2NF), which requires that each column in the table is only directly related to the primary key, not indirectly related (each column in the table can only depend on the primary key);

MySQL

The principle of

  • MySQL InnoDB index principle

  • MySQL Storage Engine — Difference between MyISAM and InnoDB

    • The main difference between the two types is that Innodb supports transaction processing and foreign keys and row-level locking
  • The Difference between MyISam and InnoDB Index Implementation

InnoDB

To optimize the

The index

Clustered index, non-clustered index

  • MySQL clustered index/unclustered index
  • MyISAM and InnoDB index Implementation

MyISAM is non-aggregation, InnoDB is aggregation

The composite index

Adaptive Hash index (AHI)

explain

NoSQL

MongoDB

  • Directing a tutorial
  • Advantages and Disadvantages of Mongodb over Relational Databases
    • Advantages: Weak consistency (final consistency), better ensure user access speed; Built-in GridFS to support large storage capacity; Schema-less database, no predefined structure; Built-in Sharding. Compared with other NoSQL, third-party support is richer; Excellent performance;
    • Disadvantages: mongodb does not support transaction operations; Mongodb occupies too much space; MongoDB does not have as mature a maintenance tool as MySQL, which is noteworthy for both development and IT operations.

Hbase

Search engine

Principles of Search Engines

  • Inverted Indexing: An Introduction to Search Engines

Lucene

Elasticsearch

Solr

sphinx

performance

Performance optimization methodology

  • 15 days of Performance optimization, 5 aspects of tuning Experience

    • Code level, business level, database level, server level, front-end optimization.
  • Aspects of System Performance Optimization

Capacity assessment

CDN network

The connection pool

Performance tuning

# big data

Flow calculation

Storm

  • The official website
  • The most detailed Introduction to Storm

Flink

Kafka Stream

Application scenarios

Such as:

  • Advertising related real-time statistics;
  • Recommendation system user portrait label real-time update;
  • Real-time health monitoring of online services;
  • Real-time lists;
  • Real-time data statistics.

Hadoop

  • What Hadoop is and What It Does in Plain English
  • “The Most detailed Hadoop Environment Setup ever”

HDFS

MapReduce

Yarn

Spark

security

Web security

XSS

CSRF

SQL injection

Hash Dos

Script injection

Vulnerability scanning tool

Verification code

To prevent DDoS

User privacy information protection

TODO

Encryption to decrypt

Symmetric encryption

The hash algorithm

Asymmetric encryption

Server security

Data security

The data backup

TODO

Network isolation

Extranet separation

TODO

Log in to the jumper

Log in to the online host via the jumper in the internal and external environment.

authorization

RBAC

  • Organizational Role-based Permission Design
  • Overview of The Authority System and RBAC Model
  • “Detailed case Analysis of Spring integrating Shiro to do Permission Control Module”

OAuth2.0

Common Open Source Frameworks

Open source licenses

  • The Choice of Kaiyuan Agreement

The logging framework

Log4j, Log4j2

  • Log4j In Detail
  • Log4j2 Practical Usage Details
  • Log4j1,Logback, and Log4j2 Performance Test Comparison
    • Log4J provides excellent asynchronous log performance.

Logback

ORM

MyBatis:

  • Mybatis Cache mechanism details

    • Level 1 cache is SqlSession level cache. Cached data is valid only in SqlSession
    • Level 2 cache is mapper level cache. The same namespace shares this cache, so it shares SqlSession. Use the LRU mechanism to clear the cache, enabled by the cacheEnabled parameter.
  • MyBatis Code Generator

Network framework

TODO

Web framework

The family of the Spring

Spring

Spring Boot

  • The official website
  • Spring Boot Reference Guide

Spring Cloud

  • Spring Cloud Chinese documentation

Tool framework

Distributed design

Extensibility design

  • Top 10 Extensible Architectures for Architects to Know

    • In summary, the common patterns are distribution, caching, and asynchronous processing.
  • Data Sharding for Scalable Design

    • Horizontal segmentation + vertical segmentation
    • Sharding with middleware such as MySQL Proxy.
    • Use sharding strategy for segmentation, such as module by ID.
  • How to Achieve scalable Large-scale Web Architecture

    • Distributed services + message queues.
  • Technical Architecture of Large Websites (vii) — Scalability Architecture of Websites

Stability & high availability

Hardware load balancing

Software load balancing

Current limiting

Application-layer Dr

Cross-equipment room Dr

Dr Test process

A smooth start

  • Procedure Smooth application restart Procedure 1. End traffic (for example, VIP layer) 2. Flush data (if any) 3

  • JVM Safe Exit (How to gracefully shut down Java Services) Kill -9 is not recommended. Register the hook with Runtime.addShutdownHook.

  • Common Java Applications how to gracefully Shut down Java, Srping, Dubbo gracefully shut down.

Database extension

Read/write separation mode

Fragmentation patterns

Service governance

Service registration and discovery

  • Never Lost! How to Implement Service discovery in microservices Architecture?

    • Client service discovery mode: The client queries the registry directly and is responsible for load balancing. Eureka takes this approach.
    • Server service discovery mode: The client queries service instances through load balancing.
  • Comparison of SpringCloud Service Registries :Consul vs Zookeeper vs Etcd vs Eureka

    • CAP Support: Consul (CA), ZooKeeper (CP), ETCD (CP), and Euerka (AP)
    • The author believes that Consul currently supports Spring Cloud well.
  • Zookeeper-based Service Registration and Discovery

    • Advantages: Simple API, Pinterest, Airbnb in use, multi-language, through watcher mechanism to achieve configuration PUSH, can quickly respond to configuration changes.

Service routing control

Distributed consistency

CAP and BASE theory

  • From Distributed Consistency to CAP Theory and BASE Theory
    • Consistency classification: strong consistency (immediate consistency); Weak consistency (which can be achieved in unit time, such as seconds); Final agreement (weak agreement, final agreement within a given period of time)
    • CAP: Consistency, availability, and fault tolerance of partitions (due to network failures)
    • BASE: Basically Available, Soft state, and Eventually consistent
    • The core idea of BASE theory is that even if strong consistency cannot be achieved, each application can adopt appropriate ways to achieve the final consistency of the system according to its own business characteristics.

A distributed lock

Distributed consistency algorithm

PAXOS

  • Distributed Series of articles — Principle and Derivation of Paxos Algorithm
  • Fast Paxos–>Zookeeper Analysis
  • [Distributed] Zookeeper and Paxos

Zab

Raft

Gossip

Two-phase commit, multi-phase commit

Power etc.

Distributed consistent scheme

Distributed Leader node election

TCC(Try/Confirm/Cancel) flexible transaction

Distributed file system

Unique ID generation

Globally unique ID

  • Summary of Generating Globally Unique ids in Highly Concurrent Distributed Systems

    • Twitter solution (Snowflake algorithm) : 41-bit timestamp + 10-bit machine id (IP, server name, etc.) + 12-bit serial number (local counter)
    • Flicker solution: MySQL increment ID + “REPLACE INTO XXX:SELECT 1314768;”
    • UUID: Disadvantages: Unordered, too long string, occupying space, affecting retrieval performance.
    • MongoDB solution: Use ObjectId. Disadvantages: Cannot increment.
  • Principle of TDDL SEQUENCE in Distributed Mode

    • Create a sequence table in the database to record the maximum number of ids currently in use.
    • Each client host caches an ID range (for example, 1000 to 2000) and updates the maximum NUMBER of ids in the sequence table.
    • Different ID ranges are set between clients and hosts. The optimistic locking mechanism is used to control concurrency.

Consistent Hash algorithm

Design thought & development mode

DDD(Domain Driven Design – Domain Driven Design)

  • Brief Introduction to my Understanding of DDD Driven Design

    • Concept: DDD addresses the fragmentation of the traditional software development process (analysis-design-coding) to avoid the failure of software delivery (and demander assumptions) due to unclear initial analysis or inconsistent information flow during software development. DDD emphasizes the domain-centric nature of everything, the role of Domain experts, the definition of the Domain model before development, and the Domain model can guide development (the so-called drive).
    • Process: understand the field, split the field, refine the field, the accuracy of the model depends on the depth of the model understanding.
    • Design: Modeling tools such as aggregations, entities, value objects, factories, warehouses, domain services, and domain events are presented in DDD to help with domain modeling.
  • Summary of Basic Knowledge of Domain-Driven Design

    • Doamin is essentially a problem domain, such as an e-commerce system, a forum system, etc.
    • Bounded Context: Describing the relationships between subdomains, which can be simply understood as a subsystem or component module.
    • Domain Model: The core of DDD is to establish the correct Domain Model (using common description Language, tool – Domain common language); Reflect the nature of business requirements, both entities and processes; It runs through the whole process of software analysis, design and development. Common ways to express domain models: diagrams, code, or text;
    • Domain common Language: a language or tool that domain experts, developers and designers can use immediately.
    • Classical hierarchical architecture: user interface/presentation layer, application layer, domain layer, infrastructure layer, is a four-tier architecture mode.
    • Modes to use:
      • As few associations as possible, as far as possible single, as far as possible to reduce the overall complexity.
      • Entity: A unique identifier in a domain. The attributes of an Entity should be as few as possible.
      • Value Object: a simple Object with no unique identifier and immutable property values, such as Date.
      • Domain Service: coordinate multiple Domain objects, only methods have no state (no data); It can be divided into application layer service, domain layer service and basic layer service.
      • Aggregate and Aggregate Root: Aggregate defines a set of related objects that have a cohesive relationship; The aggregation root is the only element referenced to the aggregation; When modifying an aggregate, it must be at the transaction level; In most domain models, 70% of aggregations typically have only one entity and 30% have only 2-3 entities; If an aggregation has only one entity, that entity is the aggregation root; If there are multiple entities, then we can think about which objects within the aggregate have meaning and can interact directly with the outside world;
      • Factory: Similar to the Factory pattern in design pattern.
      • Repository: Persist to DB, manage objects, and only to aggregate design repositories.
  • The Road to Domain-Driven Design (DDD) Implementation

    • Convergence: For example, a Car contains components such as an Engine, a Wheel, and a Tank.
  • Domain Driven Design Series (2) Brief Analysis of the Concept, Difference and Use of VO, DTO, DO and PO

Command Query Separation of responsibilities (CQRS)

CQRS — Command Query Responsibility Seperation

Anemic, hyperemic model

The Actor model

TODO

Responsive programming

Reactor

TODO

RxJava

TODO

Vert.x

TODO

DODAF2.0

  • DODAF2.0 methodology
  • DODAF2.0: how to land the power perspective

Serverless

TODO

The project management

Architecture review

refactoring

Code specification

TODO

RUP

  • Software Architecture Design using the RUP 4+1 View Approach

Kanban management

SCRUM

Extreme programming (xp)

TODO

Agile development

TODO

Pair programming

TODO

FMEA management mode

TODO

General business terms

TODO

Technology trends

TODO

Architect quality

Team management

TODO

recruitment

information

Industry information

  • 36kr
  • Techweb

List of public accounts

TODO

blog

Team blog

Personal blog

Integrated portal, community

Domestic:

Abroad:

  • DZone
  • Reddit

Q&a and discussion community

Industry data analysis

The special website

Other classes

Recommended reference books

Online e-books

  • Deep Understanding of Spring Cloud and Microservice Building

  • Ali Technical Reference Atlas – Research and Development

  • Ali Technical Reference Atlas – Algorithms

  • 2018 Meituan Review Technology New Year Products (Collection) 70M

  • InfoQ Architects Monthly)

Paper books

development

  • Alibaba Java Development Manual jd Taobao

Architectural aspects

  • 12 Lessons for Software Architects: Technical Skills
  • The Beauty of Architecture, Jd Taobao
  • Distributed Service Architecture, Jingdong Taobao
  • Talk about Architecture
  • Cloud Native Application Architecture Practice, Jingdong Taobao
  • “100 million level traffic website architecture core Technology” Jingdong Taobao
  • Taobao Technology this Decade jd Taobao
  • “The transformation of enterprise IT architecture – Strategic thinking and architecture practice in Taiwan” jingdong Taobao

Technical management

  • CTO Says jd Taobao
  • Top of Technology Management
  • Netease 1001 Nights: Internet Product Project Management Combat jingdong Taobao

The basic theory

  • The Beauty of Mathematics
  • Programming Abecda taobao

tools

TODO

Big data

Technical resources

Open source resources

Manuals, documents, tutorials

Domestic:

Abroad:

  • Quick Code
    • Free online technical tutorials.
  • gitbook.com
    • There are some Chinese e-books.
  • Cheatography
    • Cheat Sheets, a one-page document website.

Online classroom

Meetings, events

Event Release Platform:

  • Active line

Commonly used APP

Looking for a job

tool

Managed code

File service

  • Seven cattle
  • And take the cloud

Integrated cloud service provider

  • Ali cloud
  • Tencent cloud
  • Baidu cloud
  • Sina cloud
  • Kingsoft cloud group