Twelve articles all programmers must read

1. Memory articles that programmers must know

This is a very classic article, it will lead you into all aspects of memory, there are old, some new, some know, some don't know. Although memory is very common and ubiquitous, not every programmer knows it enough. If you are writing high-performance applications, it is particularly important to understand the memory in modern systems. Hardware designers have brought more complex memory processing and acceleration technologies, such as CPU caches, but they will not be able to maximize their value without the programmer. I’m still reading this article, it’s hard to tell how much I learned about random access memory (RAM), CPU cache, including level 1 and level 2 cache, different types of memory, direct memory access, memory controller design and Knowledge of ordinary memory. In short, it is a must-read article for programmers at all levels.

2. Floating-point operations that every computer scientist must know

Floating point arithmetic is a very technical topic, not easy to master. Many Java programmers don't know what is wrong with using the == operator to compare float/double types. Many people often make mistakes when using float/double for currency calculations. This article is the essence of this series, and all software developers should read it. As your experience grows, you definitely want to go deep into the details of some common things, floating-point arithmetic is one of them. As a senior Java developer, you must understand how to perform currency operations, when to use float, double or BigDecimal, how to round floating-point numbers, and so on. Even if you know some basic knowledge of floating-point arithmetic, you will definitely learn something new after reading this article.

3. Unicode articles every programmer must know

Character encoding is another area that many programmers struggle with. "Every programmer should definitely understand Unicode and character sets (no excuses!)" to fill this gap. Mark it, yes, this is the title of this article. It was written by Joel Spolsky, one of the founders of stackoverflow.com. Joel published this article on his blog 10 years ago, but it still applies today. This article will tell you what Unicode is, what is character encoding, how characters are represented by bytes, and so on. The best thing about this article is its language and writing. Although you don't know what Unicode is, you can easily understand it. In a word, this is another must-read article for programmers, code farmers, and software engineers.
Insert picture description here
Fourth, every programmer must know the time

In addition to character encoding, time and date are another area where programmers often fall down, including myself. Even senior developers will be killed by things like Greenwich Mean Time (GMT), Universal Standard Time (UTC), Daylight Saving Time, and leap seconds. Frankly speaking, in dealing with the issue of time zones, it is difficult not to step on some pits, let alone add daylight saving time or something. It's even worse if you want trial and error, because doing so will never solve your problem. There are many possible errors or misunderstandings here. For example, whether the date includes the time zone or not may bother you. Converting UNIX time to other time zones may crash you. You should forget about clock synchronization and delays. I hope that after reading this classic article, many of your misunderstandings about time can be eliminated, and you can consolidate some basic common sense about dates.

Five, every web developer must know URL encoding articles

This article introduces some common misunderstandings in Uniform Resource Locator (URL) encoding, then tries to clarify what is HTTP URL encoding, and finally lists some common errors and solutions. Although the content of this article is not specific to a programming language, it uses Java to describe the problem and fix the problem in URL encoding. You will learn the basic syntax of URLs, the common URL formats in HTTP and other protocols. This article also introduces some common errors in URLs, such as character encoding, reserved characters in different parts of the URL, and URL encoding and decoding issues. If you are a Java developer, you will learn how to correctly handle URLs in Java, how to construct URLs, and how to use the Apache Common Http client library. Finally, it also provides some best practice suggestions, such as you should encode when constructing URLs, make sure your URL rewriting filters correctly process URLs, and so on. This is a must-read article for any WEB developer.

6. WEB development that every programmer must know

This is a very interesting article on programmers.stackexchange.com. It talks about the technical details that programmers need to implement before releasing the website to the outside world. This includes interface design and user experience, security, WEB standards, performance, search engine optimization (SEO), and some important resources. Today's world is heavily dependent on the Internet, and many programmers have their own website, usually a blog. What you learned in this article may not be helpful to your major, but it will definitely help you personally. You will learn about some key technologies, such as HTML, HTTP, XML, CSS, JavaScript, browser compatibility, techniques to reduce website loading time, XML sitemaps, W3C specifications, and many other key details.
Insert picture description here
Seven, every programmer must know SEO

This is another very important article for web developers, programmers, and bloggers. Since many programmers are also bloggers, you can't ignore SEO. It is very important to learn the basics of search engine optimization, which can help Google retrieve your content and recommend it to other programmers. In today's era of network interconnection, no company can exist without the WEB, SEO has become particularly important. If you have a startup that sells some products, then SEO is what you need to focus on. All programmers, especially WEB developers, can benefit a lot from this article. Remember, SEO is a very widely changing subject. Different search engines, such as Google, Yahoo, etc., have different SEO. Therefore, to master this skill you have to update your knowledge base frequently.

8. Undefined behaviors that C programs must know

C language has a concept of undefined behavior. Undefined behavior is a very broad topic, and it has many nuances. This is one reason why I like Java. There are not so many undefined behaviors, there is not so much confusion, and it is more stable and more discontinuous. Many things that seem natural to people are actually undefined behavior in C, which is also a common source of program bugs. In addition, any undefined behavior in C is determined by the specific implementation (compiler and runtime), and the code they generate will format your hard drive, do unexpected things, or worse. Read this article and swim in a sea of ​​undefined behavior.

Nine, the network programmers must know

This passage is taken from this article, "You are a programmer. Do you think about how to achieve a multi-player game? From the outside, it looks like: two or more players share the same experience through the network, just It's like they are in the same virtual world. But as programmers, we know that the truth below is different from what you see. In fact, this is just an illusion." This is a very interesting article about the web. It is written for game developers, but I think every program developer can benefit from it.
Insert picture description here
Ten, Java programmers must know String

This is my own article about java.lang.String, I personally think that every Java developer should know about it. String is very important in daily Java development, which is why every Java programmer should know it very well. This article covers many important areas of String, including String pool, string constants, use == and equals to compare strings, convert byte arrays into Strings, why strings are immutable, and how to splice strings correctly ,and many more. Senior programmers should all know these things, but it is good to review them.

11. Security that programmers must know

A computer science student asked this question on StackOverFlow. Just as we learned about some common programming concepts such as operating systems, algorithms, data structures, computer architecture, and other things, understanding security is equally important. Security is a big topic, including encryption and decryption, SSL, WEB security, confusion, authentication, authorization, etc. It is the basic knowledge that every programmer should know. When I first entered this business, I personally didn’t know much about security. At this time, I started to write some Java WEB programs based on Servlet/JSP. Later I learned about EWB security and some security threats such as SQL injection. Denial of service, XML injection, cross-site scripting, etc. As a Java developer, I now follow the Java safe coding standards provided by fortify, PMP, and other static code analyzers for coding. This article is a good collection on the topic of security. Whether you write code or not, these resources are very useful for you.

12. Delay time that programmers must know

This article is an added bonus, but it is also something every programmer should read. No matter what language you are using, Java or C++ is good. To write high-performance applications, you have to understand the basics of latency, such as how long it takes to read a variable from memory and read it from the first-level cache How long does it take? What about the secondary cache, how long does it take to read randomly from the SSD hard disk, and what if it is read from the disk? How long does it take to lock and unlock the mutex, how long does it take to send a data packet from one city to another, and how long does it take to be in the same data center? These delay numbers are independent of any programming language. Developers must want to write high-frequency and low-latency applications. They are part of the core knowledge base. The good news about this article is that it will tell you how these delays have changed over the years. You can see what the delay time was in 2006 and how much it is now.

This is the list of must-read articles for all programmers. Seeing the titles of these articles, XXX that every programmer should know, you can learn some in-depth knowledge about a certain topic. Frankly speaking, programmers have too much to learn. Learning the Java language is just the tip of the iceberg, but not everyone has the enthusiasm to learn. Writing programs is a very challenging job. In your career, it is these basic knowledge that can help you, such as memory, Unicode, floating point numbers, time, and security. These are very important for any programmer. important. Some articles are language-related, such as my own article on String, and undefined behavior that every C programmer should know about, but it is good for many beginners to learn it.

More high-quality articles to share:

The role of testers in agile teams

A very helpful article for young programmers

How to do a good job in automated testing, reveal the road of Alibaba's layered automation practice

You need to understand before doing automated testing

About software testing! Everything you want to know is here, Xiaobai must see!

10 years of automated testing experience

In comparison! Is there such a big difference between software testing and test development compensation?

10 years of software testing engineers' perceptions-to friends who are still confused

Is it true that software testing can't be done after 35?

Finally: here I recommend an architecture learning exchange group. Exchange learning button group: 313782132 Some video recordings recorded by senior architects will be shared: Spring, MyBatis, Netty source code analysis, principles of high concurrency, high performance, distributed, microservice architecture, JVM performance optimization, distributed architecture Wait for these to become the necessary knowledge system for architects.

Guess you like

Origin blog.csdn.net/weixin_50271247/article/details/108534497