Linux Learning (a)-the way of learning

Source: Internet
Author: User
Tags posix svn

first of all, to learn Linux programming, you have to use Linux, that is, in the command-line environment to survive. What does it mean to survive? Is I now give you a host, keyboard, monitor what, and then give you a server version of the Linux system CD-ROM or any other installation disk, you go to the host use up. What do you mean, use it? What do you usually do with your Windows computer, and what do you do with this computer now? New files Ah, view files, edit files, save files, copy, move, delete, package, unzip, network, download something Ah, etc. basic operations you'll have to. There are software how to install, not only to be familiar with Apt-get and Yum, but also to give you the source of the software how to install you have to be familiar with the Linux file system, each directory is what to do, the directory of the file is why, insert a U disk, how to mount this U disk, the operation of the file under the U. This read a book on the line, "Bird Brother's Linux private food-basic article", remember is the basic article, remember to install the Linux system to operate its own, there is a server article, you are to learn the development of Linux programming, then do not see the server set up the article. With this step, you can develop.

Linux under development, the two basic languages, C and C + +, as for others to say Python,java,ruby what is not discussed, because the discussion of Linux under development, what is Linux development? Is the use of Linux API development, first you have to C or C + + language Ah, this to see Dennis's "C programming language", attention is Dennis, C + + to see "Essential C + +" or "C + + Primer", Then in Linux under the development of the program, the Linux API is to follow the POSIX standard, self-Google what is called POSIX. Linux under the development of a few large, file operation, this is very important, you need to know that Linux under a thought that everything is a file, visible file read and write more important. I/O model, five I/O models, blocking, non-blocking, multiplexing, signal-driven and asynchronous I/O, interlocking filaments connected, concepts and operations to be carefully pondered, the most important when it is reused, is select,poll and Epoll, interview written Test asked this thing, to know their scope of application and advantages and disadvantages. Processes and threads, including the concepts and differences of processes and threads, the establishment of processes and threads, synchronization, communication, mutual exclusion, and so on. Network programming, is the socket programming, Linux programming, this learning is not good equals nothing, this estimate also need to understand the TCP/IP protocol, the main programming aspect is that several steps, application socket,bind,listen,accept a few steps, to be familiar with the kind of common server model, The process pool thread pool way, multi-process way, reuse way, the most important is the reuse way, this part can write the server first, test directly with Telnet is good, speed up. The rest is the database, this thing does not belong to Linux, but still have to, otherwise do not do, see that this "MySQL must know will", of course, in-depth words still have to find a professional book to look at carefully. This time can be real thing to do something interesting, such as writing a terminal similar to QQ software Ah, including the server and client ah, slowly increase the number of concurrent, such as can support 5,000 people online Ah, file transfer ah and so on. Then learn to learn QT, familiar with a shape interface, you can change the terminal under the QQ completely into a graphical interface. It is estimated that by this time, you have almost done a decent development under Linux. In this process of learning, I believe you have learned to write makefile Ah, compile Ah, link ah and so on some of the details of things, but also to reflect on the scattered things strung a string, to systematize.

next is to continue to deepen, Linux why so many people use, where the benefits, you have to go a little bit to see the kernel source Ah, the kernel of the thread scheduling ah, I tell you, a list of Linux kernel is enough for you to study several classes. Oh, this time, the data structure what has to be turned out to strengthen it is not, the computer network what also have to see, operating system principle what also have to look at it is not, put these things here is appropriate, the front let you know it, know how to do the programming, now want to know its why is not.

in the process of learning, to constantly accumulate and understand the latest things, at least to know a concept, such as distributed, big data, cloud computing, machine learning, computer vision, JIT, and so on, to form a knowledge chain, which will not lead to you do not know what to learn at last. There is a suggestion, be sure to learn python, be sure to learn python, be sure to learn python, important things to say three times. It can greatly improve your work efficiency, but also can be combined with C + +, very nice language.

Finally, we recommend several books (included in the front):
"Bird Brother's Linux private cuisine Basics"

"C programming language," Dennis wrote.
"Linux C programming One-stop learning" written by Song
"Eensstial C + +"
"C + + Primer"
"Effective C + +"

"Linux network Programming," Song Jingbin wrote.
advanced Programming for the UNIX environment
"UNIX Network Programming" Part two
"Linux Advanced Programming" Huaqing Vision

"MySQL must Know"
"Database system Concept"

"Big Talk data Structure"
Introduction to the algorithm

"Linux kernel scenario analysis"
deep understanding of the Linux kernel

"In-depth understanding of computer systems"
"Modern operating System"
"In-depth understanding of computer networks"
"TCP/IP" three volumes of classic books

Liaoche's Python learning website
In addition, the major forums, StackOverflow, Blog Park, Csdn, and so on, more stroll, of course, but also know how to stroll. Almost so much, the above list of things, as long as the completion of half, estimated that I did not teach you to learn, you should know what you should learn. There is time in the more, it is estimated that there is no time ...

January 20 MORE:
before a little forgot to write, be sure to learn a version management tool, first of all to understand what is version management. Then choose a version management tool, which is important. Git and svn are commonly used, so it's OK to use Git, and you can do it with SVN, of course. It's best to use Git to see Liaoche's git tutorial.

Linux Learning (i)-Learning path

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.