preface

One thing I wish I could do is take you to the very bottom, the very bottom place, just like we swim, and I’ll take you to the very bottom of the ocean, where there’s a lot of treasure

The body of the

one

Recently, I also communicated with some students. In terms of my own affairs, I actually did a lot of things. Some of the lower-level things, including some. Some electronic programming, and then also some Linux inside some of the driver aspects of some things, is doing this aspect of things, in fact, whether do Android level or do the application layer, or do our embedded, or say to do some. Closer to the bottom, you say level or some semaphore. Or some impulse to do something, in fact the essence of the thing is always the same.

As I mentioned before, android, in fact, to get to where it is today, a lot of times, there are a couple of points. When I was in 2016, I remember when I saw the direction was to do this plugin, it was a big wave, I remember. So at this point in time, 2020, especially 5G, basically Beijing. Shanghai and Guangzhou should be selling it, so the second and third tier cities are also doing it, or the Internet speed is getting higher and higher, can we use this thing to do some interesting and meaningful things?

That’s what you have to think about, including the Internet of things we’re talking about, some of the vehicle systems, even some of the tablets that we’re working with universities.

So if it’s just an APP, as an application development, as an interface, if you’re still doing OKHTTP, you have to draw interfaces. Well, I think there are some. Such a crisis, whether it is a midlife crisis or a career crisis, must exist. Then you will go to see, including things like Tiktok, you will find. Now there are a lot of big shot ah, in the recruitment, recruitment, in the recruitment of such a need for one aspect of the job can not find people.

They also have KPI assessment, so it will be hard to find one. But at the same time, it’s very difficult to really grow and improve yourself in an organization, not just in traditional organizations. The real estate. Ali, including you in Tiktok, is also like this. No matter what company you are, he will have a career bottleneck, including me. Or some universities, or some scientific research institutes, or some highly advanced ones, for example, but companies are all the same, they all face this problem.

Therefore, my idea and suggestion is that you must put pressure on yourself, no matter how tired you are every day, you are very hard. In fact, I told my classmates before, including everyone, that I would ask if you have slept in the group at one o ‘clock in the evening, and I would stick to this point. That I am doing something, in fact, I am now working on the one hand, some of the pressure, I will be in entering into a new field to do something new, so, at the same time, I am still in the memories of some basic things constantly, constantly recycled, constantly to think, to think, why to do this, why other people think of a lot of, for example on some C, C++, the basic stuff, the basic stuff that you learn in college, it’s going to be particularly tough, including the Pointers that we’re talking about. Including the long pointer that we talked about. Including, let’s talk about a variable, what the definition is, what kind of life cycle it has, what kind of storage it has a category.

I’m reflecting. So you will find that the learning process must be a cycle, rather than a cycle process, a process, it is also a breakthrough self, then the second question, that is to say, to work, really want to learn really is particularly difficult, because the work must be what you will, you don’t, you’ll have the pressure and sense of urgency, So how do you never come to a meeting? This is a. Whether it’s learning skills, or self-improvement, this process requires a lot of skills, a lot of experience, and the second point I want to talk about is that we have learned a lot, that is to say, Andrew, I know there are many students in this group who have been doing this for six or seven years. So you’ve been doing this for ten years, and you’ve said so much, have you reflected on what you’ve really learned?

I think this is very important, tomorrow is the weekend, there will be a NDK class tomorrow evening. If you want to learn JIN, if you want to learn NDK, it is really very simple. So for me, what I will talk about tomorrow, including last week, including the next few weeks, it is a specific, a dead skill, or a knowledge. We have such knowledge, understanding, I think it is enough, so you need to continue to strengthen, to polish

two

Sometimes there is a mistake. For example, I go to Douyin for an interview. For example, I go to Xiaomi for an interview. Audio and video, like reverse, like. This shell, like this decompilation, or do some dark tech stuff, or do some. Hook things, we do some work in this aspect of wechat, I know my classmates are doing. In fact, what you’ll find is that no matter what direction you’re going in, there’s going to be some very basic building blocks, and I want you to take the time to do that, to build a solid foundation, and that’s really important.

Let me give you an example, let’s talk about audio and video, maybe every day in the group, students will ask ffMPEG, right, or WebRTC, how can I make it up, how can I solve it? Have you really understood what a single is, what is a signal, what is the definition of a signal, and this signal, when you use a computer to process it, is essentially DSP development, and if you understand DSP development, not only Windows platform, I ubuntu or Android or IOS, I think you get it all figured out, it’s the same as the same as the same, so a lot of the basic concepts in audio and video, for example, what we do with the wave, or what we do with the frequency, the amplitude, things like that, our audio, what’s the sampling rate of the audio, the PCM, the pulse. These things must be thoroughly, thoroughly.

So back up, let’s see. Actually early, you go to write android, there are a lot of performance, something constraints, encryption, reverse decompiling, in fact you this includes our protection between the two processes, said these things, you will find a lot of classmates, the new knowledge, each and every year I study very tired, feel very tired, I do this today, tomorrow do, make it tomorrow, tomorrow to get that one. Actually not you tired ah, is this society, or your work or is the essence of commercialization, let you especially tired, you go to make your technology let you of the technology in the service of your products, make your products and services to the whole of such an audience, found very tired, so many students to turn development, backstage supporter, he left such a business.

Of course, this topic is the problem of career planning, then I want to say that how to make yourself not tired, this is very important.

There are two things that are important in determining whether you are successful or not,

Number one, 40 percent, is your emotional intelligence. Right? Like yours, it is my ability to control and get along with others. There are many students in our group who actually do a very good job in this.

In the second place, there is 60%, is your iron-cloth, is your, is you to new things, new technology of understanding ability, has the ability to quickly migration, in fact, the learning process must have a very important thing, how to use the known thing to push ignorant thing to quickly migration ability, you learn the Java language right, then you want to go to do some C, Or other languages how quickly transfer, this is the focus of learning

That’s what I learned today. I’ve done a lot of work this week, and I think. It is important, that is, to understand it from a larger concept, such as the Flutter framework. It’s an engine system built in the Dart language, and he built one with us. It’s kind of like a DOM tree in JS, it’s actually not a DOM tree, it’s a Widget, right? So a big idea you know, so how does this tree traverse, that’s something about data structures. Right? The underlying engine, there’s already a lot of rendering that Dart is just one of them, C to do it. You can see that these things are connected, so if you’ve done some. If you’re rendering a video, or you’re rendering a 3D game that’s doing some graphics, then Dart is actually pretty clean, and that’s a transformation of that kind of knowledge.

Therefore, it is particularly important that any learning should be structured into a transformation of a certain kind of knowledge, such as the basic subjects involved in audio and video, such as DSP development. So, for example, the transition between Single and this system, where you actually do Tik Tok, or you do some audio stuff, some apps, there’s been a trend lately to adapt to this neural network, to do convolution. Making your voice, like your girl voice, right, accelerated audio, you have to do these things that actually have little to do with Android itself, it’s a sink in the knowledge of a specific discipline. You can also say we use this single chip microcomputer, or we do a car system, android 7.0.8.0. Right? You need to communicate through Bluetooth, or you need to communicate through something else, so that’s another one. The precipitation of this knowledge in the field of wireless communication.

three

For professional knowledge, we should use some professional things, a professional bottom, those things, including what I said earlier, dragon book tiger book, to consolidate it; Our choice of language, our control of language, what is this language? We’ve learned so much over the years. We go to look, the nature of the language, it is for this assembly, right, or the machine with some assembly to the operation of the instruction set, you specify the operating instructions, ARM instruction and X86, so what do you do mobile phone instruction Arm64 this instruction set: are you going to study, that you don’t study the thing, a lot of things, you can’t see some of his nature and the source, So up top, we must have done it in C and C++, one of the most important languages, and it talked a lot about these basic concepts, especially tying to your hardware, so it can manipulate the hardware

So why use C++ to do the Android level, because C++ provides a very broad API, should be a encapsulation of C, there are a lot of threads ah, signal processing and so on, it provides a lot of these processing, so this thing you write in C is particularly convenient, simple. So in terms of the NDK, we always have to use C++ to do it, of course C++ is also ok. For C, it’s more about processing some data that you send yourself, as long as you know, you’ll find ah, we’re going to practice, we’re going to practice what kind of ability you can use, including this C++ that I’m going to do for you, a theory, an enhancement course that we’re going to write, implementing a processing of a TCP stream, We might go ahead and make an MP3 and encode that file ourselves, and do some transformation, and you’ll see that this is actually something that doesn’t have much to do with Android, but this is something that you should do.

This is what I call a source of a problem, is that you really to digest the knowledge points, you understand, so we’ll see some source code, look not to understand some things, such as our operator, we use this kind of complex, where the effects of it, to help us about this memory, the memory alignment, big end small end, Why did our sages, why did there be some basic knowledge of the precipitation and accumulation. This is something that you need to think about, in your work, you need to think about, you need to discover. It doesn’t make sense.

Then we go back to consider a problem ah, in fact, from the perspective of work ah, whether Java or C, OR C++, it must be constantly upgraded, I would suggest that everyone is not blindly to catch up with the new, what new learning this, of course, you can go to use. But what is the nature of language, I feel or want to consider to be clear about, you learn Kotlin language, must be going to see the CLASS bytecode, you want to go to the this language feature, what are the characteristics of language, is this kind of assembly, the lexical, a processing of language and understanding, is a premise for you to go to a language, This is very important, so that you can see the essence of something.

So, why don’t I talk about some high-level languages, which are just a bunch of apis? Including some of the classes I see now, most things are like that. This is not true, it is also against some of our ideas of learning, or a big trend of learning, or that background.

So, that’s the second thing I want to share with you tonight, and hopefully you’ll be able to learn as you go along. It doesn’t mean you learn every day, learn every day, code every day. I read books every day and read a lot of books, but after a year, I still feel that SELF-improvement is not much, or that it is not useful. This this state is wrong

four

I’m coming back to C. We will bring you an actual practice of C and C series as a whole and an advanced theory course of C++ at the beginning of next month. So we’ll have a lot of books in this class. , of course, this is my way of learning, so if you determine to learn with me, be sure to follow us this kind of study way, then I go with you to do, we have a lot of classic books, there are some books, basically ten books I read again and will give you a few books, we say, as one of our materials.

The first book, we’re talking about C and Pointers, which I hope you can buy.

The second book is the core handout of C, and I’ll send you the link later, and we’ll give you two books to read. So, but the whole course arrangement, we took the whole process of a mixed compilation of nearly ten books, and the next thing I want to do this time is to say. How to let you go in. Go to college within a certain time, to organize their learning ability, improve their learning, the actual combat of this kind. So any learning you must have some knowledge explanation and guidance, including the transfer of experience, but also need to have a homework arrangement, so we will take the corresponding books on the homework to explain.

You will find that there are two very different phenomena, some of the specific curriculum content, curriculum has been released, it should be in, next Saturday, can give everybody to come out, because I’m here I’m easy to talk about this evening, as some of the most core some grammar is what, go, from nature, and you understand we have a constant variables, we tag, Let’s say this is the right identifier, and then we’ll talk about some operators, like this one. Xor, shift, we will go from memory to take out his project to have a look at ah, different such an editor, GCC or VisualStudio.

We also have some other editors, for such a partition of memory, such a memory model, how to dynamically create memory. Is actually what is the nature of language, some keywords, operators, such as external, Static, such as the variable of the life cycle, we tell him that the stack space, a function, where it should be, if the function, there are some variables that we gave him some keywords to the decoration, How does it change, and then we’re going to talk about engineering module development in C, and we’re going to talk about modularity as well as anybody else, and you’re going to see how modularity can be developed, and then the second point is to integrate the Linux kernel. Let’s look at what canonical development is.

five

I mean, you’re learning, because you’re learning with me, when you’re painting. So I hope you can be, not to say that you are my to waste their time on you, so I must have my ten years of learning ideas and experience will bring you, the idea and experience not necessarily is suitable for you, but can prove that the learning thought and experience on my body has been a good validation, including I now around those Daniel, I’ve talked to a lot of people about learning, including my nephew. I am a senior two today, but there should be no accident, he should also be a pre-selected member of the four major universities, I also went to see how he went to do some… His English vocabulary is more than ten thousand now.

There must be a way to learn. But it’s good to use scientific memory, learning strategies are definitely effective ways, and this is something that I think it makes more sense to spend time and energy studying, rather than watching a video at home and writing a Demo.

So let’s think about it a little bit more, so C, we have some structures that are mixed up, and in Java it’s true, so let’s say. Is this structure right? Because. So these structures and ordinary primitives, we have to specify what Pointers we want to combine, like our smart pointer PTR, second level, third level Pointers, right, multilevel Pointers. So pointer and array associative how to do, Char pointer, then array and pointer in the end what relationship, in fact, to talk about it must be to understand him, of course some. Something very fundamental, I can do it in about 10 lessons, and I tell you, it’s an inheritance of experience, but you have to take the time to understand it. For example, tonight, for example, you are now at home, you are not good to read some books, and then continue to return to the furnace, continuous refining.

Basis, of course, you will find that we have learned a lot of some of the grammar, some of the rules, if you give off these things, that I think to write a simple code, it’s no problem, then how to do some optimization on existing code, mention optimization has to carry data structures and algorithms, actually. There are all kinds of professional algorithms, of course, we will not necessarily study in a very short time, our data structure must not put those things. So I’m also going to use C, C++ to show you some common data structures, and we’re going to write. So the linked list, for example, in our area, there will be a private car in it, and when we train, there will be a Load, right? You know what I mean. So if your Load does not Load *, then you will find that your program is error, then what do you do? We usually write a define by experience, so what is the difference between its define and the pre-instruction like # define? This is a problem of tao and art that I talk about. It’s something to think about, to memorize, to understand. In fact, this is also learning skills, you from the knowledge to ignorance of a deduction, must be like this, sometimes is the need to force their own.

Did you learn at this stage, I believe you about basic grammar should be OK, so what to do next, is a practice, a lot of people will find that most of the time can’t find any exercise, don’t know how to grow more, if this is the situation, then I will tell what I will tell you a point, you have to learn to see some. Open source projects, I look at projects, if you are purely going to learn C to work with Android, then the best projects are you implementing some protocol stuff in pure C. Or you go to compile a small game library is ok, of course, game library compilation, you need to use QT to some front-end things.

So in my next project, I designed four sets of projects for you, the background, this is to implement a thread pool in C, understand the scheduling of threads, and then we will also do a multi-point simulation touch in C language; The latter two projects are still in the research stage and have not been announced yet. It still needs time to do this. For your own learning, you can go to see a lot of things, such as I said some framework with hook can see. Then the HardCoder produced by Tencent, including the Matrix I mentioned before, can also be seen

I’m also going to make a promise here that I’m going to put the entire NDK, JNI, and I’m going to use this free form. Perseverance plus persistence plus dreams in this form to tell you. So with that as a premise, you’re pretty familiar with the relationship between Java and a call to C. I’ve done a lot of a lot of work to sort it out. So you will find, there are a lot of students will find you if you would follow me, there is an insurmountable among this a problem that is to say, I can go to the 10 books, I can go to write a lot of some of the code, but you will find that you can’t, this is a problem, how should the problem really broken, you told me the dragon book tiger, I speak of the four famous universities. I said that after studying, I must be one of the four famous universities. Although I do not have a degree, I must have reached such a level

six

I have been thinking these two days and have come to a conclusion: you encounter such a problem, in fact, its origin is a way of learning and a skill

I’ll tell you all of the skills, and will teach you how to learn, but I need you to cooperate with us to the height of do, and, in the process of doing, put your problem feedback to come over, so I need to have a classmate, is a highly self-discipline of a man, before I have said before, in fact, I want to continue to be free to speak, but the there are a lot of unhappy things, Including some, some voices questioning me ah, or some other trifles, I think this thing turned over, of course, there are many warm-hearted friends in the group, but I think these are OK, no problem, because. Because I want to decide to go with a person for a long time, so this person must be MY recognition. Therefore, I also want to make some requirements for the students. That is to say, if you decide to do it, then I also have the idea to do it, then how can we cooperate with each other?

First, you need to have a high degree of self-discipline, even if you are tired. I know a lot of agencies, basically. You learn with him, you learn on your own. Basically, a class has more than 100 students in the first class, 80 students in the second class, and 30 students in the third class, and you feel that there is almost no one in the end. In fact, it is a very difficult process. I hope you, even if you are very tired, even if you so, you first decided to do this thing, to ship to break through their own, to go to the bottom, including embedded, including intelligent, or do some set-top boxes and so on, useful, including your source code a grasp. Without this foundation, you can hardly go down.

One thing I wish I could do is take you to the very bottom, the very bottom place, just like we swim, and I’ll take you to the very bottom of the ocean, where there’s a lot of treasure

How much of this you can absorb, then, depends on your own fate. Of course this is inevitable. Each person is different, the basis of I speak, of course, is in accordance with the general ability to understand and accept, who said I want you to think, we’ll basically next week in November, so I want you to use the following week of time to reflect on yourself, you to think about how to develop, it is one thing

For the other, we, the subsequent I speak of is three years of time to do this thing, to enhance one of your skills, some amount of a classmate did in 78, if you only three years to improve, I think it is very worth doing is worth to spell a, of course, there are students looking for me, he has more than 30, so if you want to. After listening to someone’s class, I went to find a job at BAT. What he said was very straightforward and explicit, so I think I have to make a memory for these students, for example, over 30 of your classmates. So I think it means that age is not a problem, but your idea is actually speculative. It’s not going to work for me, so I think you want to build your knowledge base from the bottom up, something you can understand, you don’t have to learn, like I’m going to talk about the Four Mountains.

We’ll talk about device management, memory management, and communication between processes within the Linux kernel. You’ll process communication and Binder, always confused. Why is that? Just because you didn’t do the research and didn’t think about it when you were an undergraduate, or you didn’t think about it when you were a master.

So for semaphores, we actually find that doing this NDK a lot crashes, empty signals, these things signal some capture, and actually for some of these things, I think it’s a very basic theory of an operating system. So if you have this concept, you go to learn, you go get your hooks, or PLC, or do some other things, you will find the special difficult, sun wukong asked before, want to hear something about the hooks, right, how about this knowledge, it is actually belongs to the skills of reverse packers, What you’re doing here is essentially a classic decompile of C, and you’re going to look at its instruction set operations, and you’re going to understand what C, the C++ editor does to C source code.

seven

Basically I speak a lot, are something in theory, it is my consistent style, details I think doesn’t matter, if your mind not to be able to shift, you learn skills not to ascend, you forever just do some some of the most basic work, you get a level, you will find life difficult, may be the feeling of want to jump off a building. So let you break through, is the feeling that the mountains are small, but this feeling is not overnight, it is a long-term, continuous accumulation process.

So that I also hope that we can establish confidence, if you really have been more than 30, the society itself is such, competitive pressure is very big, so I hope you can go to learn some other classes to high in the short term, but I still hope you feet on the ground, put some basic internal work to strengthen the solid.

Why are we talking about C? Some of you might want to hear about Android apps, or interviews, or custom views, or custom Spaces, or Gradle or whatever. Why not talk about these things, these things are “art”. He is not a nature of things, the thing of this “art”, I think you go to learn to learn makes no difference to me, as a recent graduate students do not have any difference, I hope you can from some candidates to stand out and stand out must be your this technology vision and understanding of technical depth, with C, including C + +? Is the most classical language, it has many uses, we talk about this thing, is to help you understand, including Pointers those operations, the flexible release of memory

If you can think byte, think process oriented, and learn every point well, then you have a solid foundation, and if you switch to object oriented, you’ll find it very easy. C++ is also object-oriented. I spent a lot of time, including the last half month doing it, so it’s late every day, and if you don’t talk about C, you’re just pure C++ object-oriented thinking, there’s no procedural programming tricks or strategies. It’s very important that you have a transformation of thinking that’s very difficult to do. So you’ll find, and this is one of the ways that I’m going to talk about learning, is analogical learning. You have to analogize, you have to analogize something that has some commonality, like our hybrid programming problem, our Flutter. So there are JS operations and there are DOM tree operations, so what’s the difference

It’s also a learning process, so I want you to. Over the next two or three years, we’ll lay out everything.

You’ll see that skill points change all the time, but what doesn’t change, what doesn’t change is the essence of these things, so I also want people to just look at these things.

I’ve talked about algorithms many times before, whether it’s in open class or online. Don’t blindly brush this Leetcode, or some other topics on the Internet. What you need to think about programming thought is, what’s execution efficiency, right, what you write to write this, you can write this, such as a sort of question, are you going to sort out some of its thinking, so you can learn better, even if you a night for a month, you’ll do a kind of algorithm, also enough is enough, I think that in fact I also asked a lot of, Some great people here, such as introduction to algorithms, in fact, they also brush a dozen times, but many of them are more for you to find, let you have such thinking.

Recommended books

  • C and the Pointer
  • C Expert Programming
  • C Interface and Implementation
  • C++STL standard library development guide

Write in the last

So I hope you can still communicate with me more, what kind of confusion you have, you have a role to play in this group. If you can’t use the community, then the community doesn’t exist.

So I want you to be able to. In this group, we can discuss some technical points, not necessarily technology, but some thinking things, learning things, learning breakthroughs, including these things to talk about, I think this is more important than a simple skill point, so much for today’s share

Thank you for your attention

Solemnly declare

This article is organized by “Xiaoran Junior teacher”, copyright ©️ Jesson and Android Institute all rights reserved