Thoughts from a senior

——Transferred from Senior Liu Kaining

There are always some classmates chatting with me, saying that they are very confused, that they have no direction on the road of software development. will go downhill. In fact, there is a very important point to be seriously considered here, that is: it is not that you don't know what to learn, but you don't know what you have at all . When we learn C, C++, Java in the classroom, what exactly are we learning? And when you hear that some people want to do Android development, some write great websites, and some are engaged in big data, what do you think they are doing? And what are they actually doing? We seem to have entered a labyrinth with complicated paths and pitch-darkness. We are smug but at a loss. I hope this article can act as a flashlight, and I wish you a clear view of the road ahead, guide the direction, explore slowly, and find your true belonging. own way.

Language articles

C: The first language that many of us come into contact with should be C, and we learn data structures and algorithms, and during the written test interview, there are often some questions that are answered in C language. However, what can C language bring us? What? Personally, I believe that the greatest benefit of C language is to cultivate rigorous programming thinking. Needless to say the basic syntax, constant variable definitions, data types, type conversions, expressions, operators, statement structures, arrays, functions, etc., all of which are basically understood. Of course, the advanced ones are pointers, structures, file processing, and memory. Administration, Linux-C programming, etc., especially pointers, should be carefully understood. Of course, the best way to learn data structures and algorithms is to write them in C. The ACM students themselves know it, so I don't want to say more.

CPP: I haven't learned and used C++ myself, so I don't know much. The object-oriented idea of ​​Cpp still needs a lot of understanding, and I remember that G0F's "Design Patterns" uses CPP to discuss common design patterns.

Java: The basic syntax of Java certainly needs to be understood. The most important thing about Java is the object-oriented nature. class, object, member variable, method, inheritance, interface, abstract class, anonymous inner class, access control, overriding and overloading, constructor, polymorphism, encapsulation, Object class, String class, boxing, unboxing, Arrays, Utility Classes, Collection Frameworks, Streams, File Handling, Exceptions, GUI Programming, GWT, Swing, Multithreading, Locks, Synchronization, Thread Safety and Thread Unsafety, Generics, Reflection, Socket Programming, System Operations, Java Code Optimization . Above, you can refer to the comparison. Learning Java is very useful. You can study big data and play with cloud computing. You can write websites for enterprise-level server development. You can also quickly get started with Android.

PHP: The basic syntax of PHP is similar to C, mainly for web background development. You need to understand the basic syntax and object-oriented points, and you need to learn basic database operations. MySQL is recommended, and then you need to learn a framework early (will be introduced later)

Golang: How to say, emerging language, bright future. Not to mention the basic syntax, just talking about the concurrency features, goroutine and channel are the trump cards of Go, and the interface is also a very artistic design. Go can do basically anything that C can do, while also supporting web programming.

Python: I am learning, I don't know yet. However, life is short, I use python.

JavaScript: It has nothing to do with Java. Basically any dynamic effect you see on a web page is implemented in js (of course some are combined with CSS). Closures should be studied hard. Scope issues can be tricky. DOM. APIs related to browser control will be met. Be compatible.

HTML5 and CSS3: Combining with JS to write web pages. Animation, Canvas, Compatibility. Local Storage and Web Sockets. Responsive design. Will use F12.

R: The language of data analysis and processing.

Application

JavaEE :Servlet、JavaBean、JSP、JDBC、Spring 、Spring MVC、Struts 2、Hibernate、Mybitis、 Velocity。

大数据:Hadoop、HDFS、MapReduce、HBase、Hive、YARN、Zookeeper、Pig、Mahout、Sqoop、Flume

搜索:Lucene 、Nutch、Solr

PHP :ThinkPHP、CodeIgniter、Laravel、WordPress、Typecho

Golang :Beego、Docker、Kubernetes

JS : jQuery、Bootstrap、AngularJS 、ExtJS、DWR、AJAX,XML 解析,JSON。

web server :Apache、Tomcat、Nginx

存储:MySQL、MongoDB、Redis、Memcached 、DDBS

Tools :Maven、SVN、Git、Ant、Eclipse、Sublime Text、WampServer、

平台:SAE、阿里云ECS、西部数码虚拟主机、Coding 、GitCafe、七牛云存储、又拍云存储

Android :四大组件,生命周期,性能优化

iOS :基本API,内存管理(不是非常懂)

理论篇

HTTP 协议 :报文、方法、连接、代理、缓存、安全、Cookie、认证机制、字符编码、状态码、负载均衡、重定向

TCP/IP 协议:连接、断开、选路、广播、DNS、FTP、远程登陆、SMTP、性能优化

数据结构和算法:栈、队列、串、树、二叉树、平衡树、哈弗曼树、红黑树、查找、排序、图

设计模式:工厂、单例、观察者、代理

概念篇

MVC、ORM、NoSQL、RPC

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326987669&siteId=291194637