Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

The Road of self-study of Linux Application Development

2025-04-09 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Servers >

Share

Shulou(Shulou.com)06/03 Report--

preface

In the "About Me" blog post, friends should know that I am not a graduate student, but a mechanical forced transfer to Linux application development. Below I will introduce myself to you in detail along the way of career change process, I hope to inspire you.

I am learning mechanical major, for mechanical major I am still very interested in, and then this major is also my own choice. The undergraduate grade did not rank first, but also ranked in the forefront of the profession. Master's grade has always been the first professional, but also received a national scholarship. It can be seen that I still love machinery, even want to go to the Chinese Academy of Sciences for further study when I take an examination (unfortunately, I failed), and want to become a mechanical bricklayer.

turning point

But the turnaround came after I graduated. Originally, I wanted to be a mechanical engineer all the time, but by accident, my first job was transferred from mechanical engineer to electronic engineer. Although he was an electronic engineer, he did a lot of code work. At that time, he learned some Verilog and C#, and developed a test tool and a production PC with C#. It is said that the test tool is still used in the electronics department. That's when I really got into programming and became fascinated by the programming world.

However, what I learned in school was mechanical ah, and the software-related things were at most C language and assembly language, but C language was learned ten years ago (at that time) and had long been returned to the teacher. So, for the sake of my job, I braced myself to learn programming. I get up at 6:00 every morning, study for an hour, catch the bus at 7:00, and come back from work at night to continue my study. Under such conditions I learned Verilog and C#, and at the same time had a general understanding of STM32.

But that position is not entirely software work, but also electronic work. Software developers know that writing code requires an undisturbed environment, and my position can receive more than a dozen calls a day, seriously interfering with my software development progress, so I decided to leave the company and become a real software engineer.

entry

In my second job, I was an embedded engineer. Before going to the company, I systematically learned 51 again, see is Guo Tianxiang ten days to learn 51 SCM, SCM has a preliminary entry. After the real job, and then use a month to learn the C language system, see the C programming language written by the father of the C language. Although this book was written in the 1980s, it still seems to be out of date. And this book is relatively thin, easy to read, more sense of accomplishment.

After reading "C Programming Language", it is best to read C and Pointers, C Expert Programming, C Traps and Defects. These three books are called "C language three swordsmen", learn them your C language level is absolutely very high. In our line of work, C language is the basic language, so we must completely win C language.

After that, Marvell 88MC200 and 88MW300 were introduced for work. These two are WIFI chips, but the essence is a microcontroller, using the ARM M3 core. The underlying driver has been written by the manufacturer. What we have to do is to do secondary development on the basis of SDK. In the process, I have a preliminary understanding of agile development, read the 45 habits of efficient programmers: agile development practice this book.

In the second company, I learned about the overall solution of the Internet of Things and had a deeper understanding of the overall framework of the Internet of Things. At the same time, I have a comprehensive grasp of the skills required for embedded development, reaching the level of being able to independently do an Internet of Things project. Of course, during this period, I also learned the version control tool git, and read the Pro Git and git authoritative guide. At the same time further system learning STM32, see the book is wildfire STM32 library development actual combat guide, but see the video is punctual atom. I highly recommend the atomic video here, it is really done very well.

Because I am a career change, I know that the foundation is weak, the starting point is much behind others, so I study very hard. I live near the company, the company goes to work at 8:00, I still get up at 6:00 and go to bed at 12:00. Usually, when he had nothing to do, he would study in the company, read code, write code, adjust code, and even spend several weekends in the company. In order to change career I threw myself into study, gave up all recreational activities, only to catch up with colleagues a little bit. This state has continued throughout my entire career in this company.

new challenges

Unfortunately, after a year I had to leave, because my wife in Guangzhou, I went to Guangzhou to follow my wife. Because of my good performance in the interview and my good oral English, I was successfully hired by a foreign company in Guangzhou. My new position is Linux application development engineer, using C++ development. At the time, I didn't know Linux or C++, so it was really brave for the company to hire me.

From MCU to Linux is a relatively large span. Linux has three main directions: operations, applications, and the bottom layer, and I chose the application direction. For work, I had to get C++ first. Fortunately, the company is a foreign company, almost no overtime, so I have plenty of time to study. However, the daily bus ride adds up to three hours, so I can't waste such a good time ah, so I bought an iPad, downloaded a set of videos, in the bus also study. Of course, I also pay attention to protecting my eyes, never read books on the bus, and often look out of the window when watching videos.

Here is a self-study process is used to read books or watch video way. I used the video first and then the book. Why is this happening? Because I personally think that many technical books are very thick, it takes a lot of time and energy to read them, and many knowledge points are rarely used in work, so they can be skipped temporarily. Videos are generally short, usually a few days can be seen, and teachers generally only pick the key points. Our time is very precious, I suggest that we master the teacher's knowledge completely first, and then use books to further expand other knowledge. However, whether reading a book or watching a video, be sure to write code, otherwise it is very easy to cause high vision and low hand!

I still get up at 6 a.m. and go to bed at 11 p.m. in this company. So there is 1 hour in the morning, 3 hours in the evening, 3 hours on the bus, a total of 7 hours a day can be used for learning. On weekends, I sleep late, wake up at 7:00, go to bed at 11:00, and hardly go out on weekends, so I have a lot of time to study on weekends.

C++ is so hard that it took me more than a month to get the knowledge from the video completely down. After that, in the work, one after another began to see C++ Primer further consolidated. Other recommended books: Effective C++, C++ Language Design and Evolution, C++ Standard Library. There is a C++ required reading list on stackoverflow that you can check out.

After learning C++, I learned Linux system programming, and the same way was used to make videos first and books later. Whether it's a video or a book, be sure to watch the most classic. There are too many videos and books of mixed quality on the market. If you choose a material of poor quality, you will not only waste a lot of time, but also may be misled. For the selection of videos, you can go to the major training institutions, which usually have some free video materials for us to download.

For Linux application learning, there are six main parts: 1. Environmental construction;2. Basic operations;3. System programming;4. Network programming;5. Database programming, 6. Shell programming. Details are given below.

environment construction

As a Linux engineer, there is no doubt that you need a Linux environment. For Linux environment acquisition, we usually have three ways:

Install Linux as a whole; install a virtual machine in the computer, running Linux computer; Windows +Linux dual system.

It's not enough to get a Linux environment; you need to know how to configure it, how to connect to a Linux computer remotely, how to transfer files to and from a Linux computer, how to read code from a Linux computer on a host computer, and so on.

basic operation

Linux is known to have few or no interfaces, and almost all operations can be done from the command line. For operations personnel, it is necessary to master a considerable number of Linux commands. For those who apply and drive the direction, they only need to master some basic and commonly used commands. For this part, many people suggest watching "Bird Brother's Private Kitchen", but I think this is more suitable for operation and maintenance personnel, we do not need to master so many commands.

system programming

Before learning system programming, be sure to learn Makefile first, which will improve the efficiency of subsequent learning. After the system programming, there are mainly several blocks: IO programming, processes, threads, inter-process communication (including pipes, signals, semaphores, shared memory, etc.). After learning these parts, it was almost done.

network programming

Network programming is mainly socket, poll, epoll, and understanding of TCP/IP, while learning to write high-concurrency servers.

database programming

The contents of the database are not actually Linux, but they are often used in projects. This part mainly to learn the basic operation of the database, and how to write a set of interfaces to operate the database.

Shell Programming

Shell is a scripting language for Linux that, while not as powerful as a high-level language, can do a lot of things, and in some cases is even more convenient than a high-level language. In addition to Shell scripts, there are Python scripts.

Linux application programming book recommendations:

UNIX environment advanced programming. APUE for short, known as the programmer's Bible. It is not an API dictionary, it also tells a lot of operating system details, memory, file system, etc., is a rare good book. But it starts a bit high and is not suitable for beginners. Linux programming. If you find APUE a bit difficult to get started, you can choose this book to get started. Unix/Linux System Programming Manual. This book claims to be a book beyond APUE, it is a relatively new book, which adds new Linux/Unix features that APUE does not have. And for some conceptual things, it's really better than APUE. However, whether APUE can be overloaded remains to be tested by history. UNIX network programming. Is also a very classic book, mainly network programming direction. MySQL must know. This book has long been ranked at the top of database sales on Amazon and is recommended for beginners who want to quickly understand database principles and MySQL. Fast food nature, concise and crisp, small opening, and very thin, relatively easy to read. Linux Shell Script Guide. This book is very thin very essence, its pursuit is not complete, but fine, so use it to get started again suitable.

After learning the above six parts, you will basically have the ability to complete the application programming under Linux environment. Of course, in some cases we may also need to use Python scripts. Some of my company's project scripts are done in Python. For an introduction to Python, see the Short Python Tutorial. But if you want to improve further, you need to read a lot of books. For Linux-level scripting applications, it's enough to know the basics.

The above is my Linux application development self-study road, although I still have a long way to go from the master, but I still share my own self-study experience, hoping to help friends take some detours, but also look forward to learning and improving with the master. Well, that's all for today's sharing.

For more exciting content, please pay attention to the public number good Linux, the public reply 1024 can get free 5T technical information, including: Linux, C/C++, Python, Raspberry Pi, embedded, Java, artificial intelligence, and so on. Reply to the group in the public number, inviting you to enter the technical exchange group of experts.

cdn.xitu.io/2018/8/13/16531c1b61dc557d? w=150&h=150&f=jpeg&s=16304">

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: 269

*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.

Share To

Servers

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report