In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-03-26 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >
Share
Shulou(Shulou.com)06/01 Report--
Phase 1: basic stage (basic PHP programmer)
Key point: be proficient in LNMP (the core is the basic operation of installation and configuration)
Goal: to be able to complete the basic LNMP system installation, simple configuration and maintenance; to be able to do basic simple system PHP development; to be able to support the development of a PHP functional module in a medium-sized PHP system.
Time: the time to complete this stage varies from person to person. Some people grow faster than half a year, and there are also two or three years of slow growth.
1.Linux
Basic commands, operations, startup, basic service configuration (including rpm installation files, various service configurations, etc.); can write simple shell scripts and awk/sed script commands, etc.
2.Nginx
To be able to install and configure nginx+php, know the basic nginx core configuration options, know the basic configuration such as server/fastcgi_pass/access_log, the goal is to make nginx+php_fpm work smoothly.
3.MySQL
Will build their own mysql, know the basic mysql configuration options; know the difference between innodb and myisam, know the different configuration options for InnoDB and MyISAM engines; know the basic difference between the two engines and the choice of the above difference; be able to manually compile and build a MySQL database and configure the code to run normally and stably; the core theme is to build a runnable MySQL database.
4.PHP
Basic syntax array, string, database, XML, Socket, GD/ImageMgk image processing, etc.; familiar with all kinds of api (mysql/mysqli/PDO) linked to MySQL operation, know the solution of various coding problems; know the general proficiency in the use of PHP framework (ThinkPHP, Zendframework, Yii, Yaf, etc.); understand the operating mechanism of basic MVC and why to do so, know a little about the difference between different PHP frameworks; be able to quickly learn a MVC framework. Be able to know the file directory organization in the development project, have a basic good code structure and style, and be able to complete the development of small systems and a module in a medium-sized system.
5. Front end
If the conditional time permits, you can properly learn HTML/CSS/JS and other related knowledge, know what web standard, div+css web/wap page pattern, know the difference between HTML5 and HTML4; understand some basic front end just and JS framework (jQuery, etc.); know some basic JavaScript programming knowledge (this item is not required, if you have time, it is OK to know a little bit, but it is not recommended as a focus, unless the individual has a strong interest.)
6. System design
Able to complete the basic design of small systems, including simple database design, to complete the basic design and development of browser-> Nginx+PHP-> database architecture, and to support the development and maintenance of websites with hundreds of thousands to millions of traffic every day.
Phase 2: improvement phase (intermediate PHP programmer)
Focus: improve the skills for LNMP, can be more comprehensive proficient in the application of LNMP.
Goal: to be able to build a LNMP environment anytime and anywhere, quickly complete the regular configuration; be able to track and solve most of the problems encountered in the development and online environment; be able to independently undertake the architecture and development of a medium-sized system; be able to undertake the development of a medium-sized module in a large-scale system.
1. Linux
On the basis of the first stage, you can use Shell scripts fluently to complete a lot of automated work; awk/sed/perl also operates well, can complete a lot of text processing and data statistics, etc.; basically can install most non-special Linux programs (including various libraries, packages, third-party dependencies, etc., such as MongoDB/Redis/Sphinx/Luncene/SVN, etc.) Understand basic Linux services, know how to view Linux performance metrics data, know basic Linux problem tracking, and so on.
2. Nginx
On the basis of the first stage, understand more complex Nginx configuration; including multicore configuration, events, proxy_pass,sendfile/tcp_* configuration, know timeout and other related configuration and performance impact; know that nginx in addition to web server, but also can undertake proxy server, reverse static server and other configurations; know basic nginx configuration tuning; know how to configure permissions, compile a nginx extended to nginx Know the basic nginx operation principle (master/worker mechanism, epoll), know why nginx performance is better than apache performance and so on.
3. MySQL/MongoDB
On the basis of the first stage, I have mastered a lot of tips in MySQL development, including conventional SQL optimization (group by/order by/rand optimization, etc.) In addition to being able to build MySQL, you can also back up MySQL data hot and cold, know the configuration options that affect the performance of innodb/myisam (such as key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size/innodb_flush_log_at_trx_commit, etc.), and know how to configure these options appropriately. In addition, you also know some special configuration options, such as how to build a master-slave synchronization environment of mysql, and the difference between each binlog_format. Know MySQL performance tracking, including slow_log/explain, etc., but also know the basic index establishment processing knowledge; principle understanding of the basic MySQL architecture (Server+ storage engine), know the basic InnoDB/MyISAM index storage structure and different (clustered index, B-tree); know the basic InnoDB transaction mechanism; know most of the MySQL exception handling scheme (or know where to find the solution). If conditions permit, it is recommended to learn about the representative MongoDB database of NoSQL. By the way, compared with MySQL, colleagues can safely and cautiously use MongoDB in appropriate application scenarios and know the combination of basic PHP and MongoDB development.
4. Redis/Memcached
Cache processing must be involved in most medium-sized systems, so be sure to understand basic caching; know the similarities and differences and application scenarios between Memcached and Redis, be able to install Redis/Memcached independently, understand some basic features and limitations of Memcahed, such as the maximum value, and know that PHP is combined with their use Redis understands basic working principles and usage, general data types, what types are applied in what scenarios, Redis transactions, and so on. In the principle part, you can have a general understanding of the memory structure of Memcached (slab mechanism), redis will understand the underlying implementation storage structure of common data types (SDS/ linked list / SkipList/HashTable), and so on, by the way, it is better to understand the transaction, RDB, AOF and other mechanisms of Redis.
5. PHP
In addition to the first phase of the ability, the installation configuration can install PHP and various third-party extensions of the compiler installation configuration; understand most of the configuration options and meaning of php-fpm (such as max_requests/max_children/request_terminate_timeout configuration that affects performance), know the difference between mod_php/fastcgi Have been proficient in various basic technologies in PHP, including various in-depth PHP, including in-depth understanding of PHP object-oriented / special features at the syntax level of SPL/, such as reflection; in the framework, I have read the code of at least one conventional PHP MVC framework, and know the internal implementation mechanism and design ideas of the basic PHP framework Have been proficient in using conventional design patterns in PHP development (Abstract Factory / Singleton / Observer / Command chain / Strategy / Adapter, etc.); it is suggested that you develop your own PHP MVC framework to fully liberalize development, give yourself an in-depth understanding of MVC patterns, and enable you to quickly upgrade in business project development. Familiar with various code optimization methods of PHP, familiar with the solution of most PHP security problems; familiar with the basic mechanism of PHP execution (Zend engine / extension basic working mechanism).
6. C _ blank +
Start to dabble in some Cmax codes, be familiar with basic Cmax codes (pointers, array operations, strings, regular standard API) and data structures (linked lists, trees, hashes, queues); have a basic understanding of C language development under Linux, be able to write simple makefile files, and be able to compile simple GCC/GDB programs for simple debugging Have a general understanding of basic network programming. The purpose of this item is to lay the foundation for a higher level.
7. Front end
On the basis of the first stage, I am familiar with the basic HTTP protocol (protocol code 200: 300 / 400 / 500, basic HTTP interaction header); if possible, you can write a slightly elegant HTML+CSS+JavaScript in depth, or you can roughly simply use some front-end frameworks (jQuery/YUI/ExtJS/RequireJS/BootStrap, etc.); if conditions permit, you can learn more about JavaScript programming, such as closure mechanism and DOM processing. More in-depth can read the jQuery source code to do in-depth study. This item does not focus on learning unless you are interested in the front end.
8. System design
Be able to design website architecture, database and basic PHP framework selection of most medium-sized systems; perform performance testing and troubleshooting; be able to complete basic design, development and maintenance of websites with similar structure: browser-> CDN (Squid)-> Nginx+PHP-> cache-> database structure; can support the development and maintenance of basic websites with millions to tens of millions of traffic every day.
Phase 3: advanced stage (Senior PHP programmer)
Important: in addition to the basic LNMP program, you can also have in-depth study in a certain direction or field. (development of depth dimension)
Goal: in addition to being able to complete the basic PHP business development, it can also solve most in-depth and complex technical problems, and can independently design and complete medium-and large-scale system design and development work; I can independently hold deep into a certain technical direction, more professional in this area. (for example, in-depth research in any direction of MySQL, Nginx, PHP, Redis, etc.)
1. Linux
In addition to the capabilities of the second phase, in Linux, in addition to regular operations and performance monitoring tracking, you can also use many advanced and complex commands (watch/tcpdump/starce/ldd/ar, etc.); in terms of shell scripts, you have been able to write more complex shell scripts (more than 500 lines) to assist in a lot of shell, including backup, automated processing, monitoring, etc. Awk/sed/perl and other applications are already perfect, and can operate and control text statistics and analyze data in various complex formats at will; have some understanding of the internal mechanism of Linux, basic handling of kernel module loading, startup error handling, etc.; at the same time, they also know some other related things, such as NFS, disk management, etc.
2. Nginx
On the basis of the second stage, we have been able to operate Nginx very skillfully and do more in-depth operation and maintenance of Nginx, such as monitoring, performance optimization, dealing with complex problems, and so on. Depending on your personal interest, you can consider focusing on the in-depth study of the working principle of Nginx, mainly at the beginning of reading the source code, such as specific master/worker working mechanism, event handling within Nginx, memory management and so on. At the same time, you can learn the development of Nginx extensions, you can customize some of your own private extensions; at the same time, you can have a certain degree of understanding of Nginx+Lua to see if you can combine with the application of a better model; the requirement of this stage is an in-depth understanding of the principles of Nginx, you can consider becoming an in-depth professional in the direction of Nginx.
3. MySQL/MongoDB
On the basis of the second stage, in MySQL applications, in addition to the previous basic SQL optimization, we can also complete some complex operations, such as import and export of large quantities of data, changing table structure of online large quantities of data, adding and deleting index fields, and other high-risk operations. In addition to installation and configuration, it has been able to handle more complex MySQL problems, such as tracing of various problems, master-slave synchronization delay solution, cross-room synchronization data solution, MySQL high availability architecture, etc.; at the application level of MySQL, I am familiar with the core key technologies of MySQL, such as transaction mechanism (isolation level, lock, etc.), trigger, partition, etc. In terms of MySQL performance, there are disk optimization (SAS migration to SSD), server optimization (memory, server configuration), other core performance optimization options (innodb_log_buffer_size/back_log/table_open_cache/thread_cache_size/innodb_lock_wait_timeout, etc.), connection pooling software selection and application, and in-depth understanding of show * (show status/show profile) operation statements. Be able to trace most of the performance problems In-depth knowledge of MySQL backup technology, including disaster recovery, in-depth understanding of Binlog, hot and cold backup, multi-IDC backup, etc. Learn more about the principle of MySQL, such as starting to read part of the source code about the working mechanism of MySQL, such as learning the source code of master-slave synchronization (replication) technology, or learning and understanding the source code of a storage engine (MyISAM/Innodb/TokuDB), etc. If conditions permit, you can refer to CSV engine to develop your own simple storage engine to save some data and enhance your understanding of MySQL. In this process, if you are interested, you can also consider developing towards DBA. At the MongoDB level, you can consider, for example, to start using MongoDB online when writing less and reading more, or to do some online data analysis and processing operations. Specific scenarios can be done according to the work, but the core is to better understand the applications under different scenarios of RMDBS and NoSQL. If conditions or interests permit, you can start to learn more about the working mechanism of MongoDB.
4. Redis/Memcached
On the basis of the second stage, we can apply and learn more deeply. Because Memcached is not particularly complex, it is recommended to read the source code, especially the memory management part, to facilitate in-depth understanding; in the Redis part, you can do more applications with complex data structures (zset to do ranking operations / transaction processing to ensure atomicity in scenarios such as second kill scenarios); more learning applications involving synchronization mechanisms such as aof, to design a highly available Redis application architecture and cluster It is suggested that you can take an in-depth study of the Redis source code, the knowledge accumulated in the second phase can be applied, especially you can read, including core event management, memory management, internal core data structure and so on. If your interest permits, you can become a very professional user of Redis.
5. PHP
As the basic core skills, we need to have more in-depth study and application on the basis of the second stage. From the perspective of basic code application, it can solve 95% of the problems encountered in PHP development and understand most of the PHP skills; most PHP frameworks can be used quickly in one day, and understand the advantages and disadvantages of various mainstream PHP frameworks, which can quickly and easily make technology selection in project development. In terms of configuration, in addition to the general knowledge of the second phase, you will learn about some partial configuration options (php auto_prepend_file/auto_append_file), including some complex advanced configurations and principles in extensions (such as memcache.hash_strategy in memcached extension configuration, apc.mmap_file_mask/apc.slam_defense/apc.file_update_protection in apc extension configuration, etc.) Have a good understanding of the working mechanism of php, including the working mechanism of php-fpm (such as the calculation and principle of the number of processes started by php-fpm under different configuration machines), basic familiarity with zend engine (vm/gc/stream processing), basic PHP kernel source code (or related articles), and understanding of most of the core data structures (basic types / Array/Object) of PHP internal mechanisms. In-depth knowledge of core infrastructure (zval/hashtable/gc) Be able to develop basic PHP extensions, understand some intermediate and advanced knowledge of extension development (minit/rinit, etc.), and be familiar with the details of different communication and interaction between php and apache/nginx (mod_php/fastcgi); in addition to developing PHP extensions, you can consider learning to develop Zend extensions to understand PHP from a lower level.
6. C _ blank +
On the basis of the second stage, we can have a more in-depth study and understanding of the language of C _ b-tree/rb-tree/skiplist/lsm-tree/trie-tree +, and be able to complete the development of a small and medium-sized C _ hand C ~ + system; in addition to the basic syntax and data structures of the second stage, we can also learn some special data structures (b-tree/rb-tree/skiplist/lsm-tree/trie-tree, etc.) to facilitate the needs of special work. In the aspect of system programming, be familiar with multi-process and multi-thread programming; understand the communication mode between most multi-processes under multi-process situation, and be able to choose communication mode flexibly (shared memory / semaphore / pipeline, etc.); multithreaded programming can solve the problem of lock conflict, and can develop and debug multithreaded programs. At the same time, I am familiar with network programming, understand the differences and selection of multi-process model / multi-thread model / asynchronous network IO model, be familiar with the principles and differences of different asynchronous network IO models (select/poll/epoll/iocp, etc.), and be familiar with common asynchronous frameworks (ACE/ICE/libev/libevent/libuv/Boost.ASIO, etc.) and their use. If you have spare time, you can also take a look at some domestic libraries (such as muduo). At the same time, be able to design a well-designed high concurrency program architecture (leader-follow/master-worker, etc.); understand most of the problems (memory management, log printing, high concurrency, front and back-end communication protocols, service monitoring) in the development of Cmax + back-end Server, and know the RPC communication problems of various back-end services (struct/http/thirft/protobuf, etc.) Can be more familiar with the use of GCC and GDB to develop, compile and debug programs, online programs core can be quickly tracked to solve problems; general module development, you can accumulate or develop some general tools or libraries (such as asynchronous network framework, log library, memory pool, thread pool, etc.), but after the development of the application should be careful, save the pit to chase bug.
7. Front end
In-depth understanding of the HTTP protocol (including the special protocol codes of various detailed protocols and the reasons behind them, such as 302 static files are cached, 502 is the failure of php behind nginx, etc.) In addition to the previous front-end application integration capabilities of various frameworks, front-end learning can be more in-depth if you are interested, in the form of developing some front-end frameworks like jQuery, or developing a rich text editor to test JavaScript skills.
8. Other areas of language learning
There is a basic accumulation in the basic PHP/C/C++ language. It is suggested that at the current stage, you can try to learn different programming languages, depending on your personal interests, scripting languages can learn Python/Ruby, functional programming languages can try Lisp/Haskell/Scala/Erlang, static languages can try Java/Golang, data statistical analysis can understand R language, if you want to do back-end business from a different perspective. You can try Node.js and Nginx_Lua combined with Nginx mentioned earlier. Learning different languages is mainly to improve your vision and differences in problem-solving methods, such as understanding that there are lightweight collaborations in addition to processes / threads; for example, in cross-machine communication scenarios, the Erlang solution is surprisingly simple; for example, if you do not want to choose C _ Erlang/Golang +, there are similar efficient Erlang/Golang available, etc.; mainly to improve your horizons.
9. Study in other majors
In this stage, in addition to the basic LNMP skills, will consider some other areas of knowledge learning, these are OK, depending on personal interests and long-term goal direction. At present, there are many areas to choose from, such as cloud computing (distributed storage, distributed computing, virtual machines, etc.), machine learning (data mining, pattern recognition, etc., applied to statistics, personalized recommendation), natural language processing (Chinese word segmentation, etc.), search engine technology, graphics and images, speech recognition and so on. In addition to these high-end, there are also a lot of partial engineering aspects to learn, such as high-performance systems, mobile development (Android/iOS), computer security, embedded systems, hardware and so on.
10. System design
On the basis of the second stage, the system design can apply the experience and skills mastered to design more complex medium-and large-scale systems, which can solve the problems of most of the complex systems online. Complete complex business such as browser-> CDN-> load balance-> access layer-> Nginx+PHP-> Business Cache-> Database-> various complex backend RPC interactions (storage backend, logical backend, anti-cheating backend, external services)-> more complex backend services. It can support the normal development and maintenance of tens of millions to hundreds of millions of traffic websites every day.
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.