搜索引擎优化高级编程(如何成为看起来像是有基础的人(一)(组图))

优采云 发布时间: 2021-11-11 05:08

  搜索引擎优化高级编程(如何成为看起来像是有基础的人(一)(组图))

  是时候放弃你的技能树了。踩了很多坑,走了很多弯路。希望我的一些经验可以对你有所帮助。(完全自己整理,是技能树,更像是自己的一些学习计划,如果图片看不清楚,可以私信问我)

  

  接触编程有一段时间了,工作一年,实习一年,学习两年。现在我在独小满,以前雄昌的FSG。

  问题的核心不是如何成为一个看似有基础的人。基础好不好面试官会问几个问题,所以你现在要做的应该是比较基础的,编程这个其实99%的基础决定了你以后的天花板高度或者如何在科技的道路上,你可以走得更远。

  话不多说,开始看知识点:

  一般来说,这句话是:

  精通一种语言,熟悉多种语言,熟悉常用互联网工具(mysql、redis、nginx、kafka等)。

  1、计算机基础

  计算机基础包括操作系统、计算机网络、数据结构、数据库、计算机系统(组成)、编译原理等。

  你现在可能面临的是找工作,所以把你整理好:

  数据结构->操作系统->数据库->计算机网络(粗略看一下应用层&传输层)

  推荐资料:

  数据结构:数据结构和算法(Java版实现),提供

  操作系统:现代操作系统(机械工业出版社计算机科学丛书)

  计算机网络:计算机网络自顶向下法

  Database:数据库系统概念(可能有点无聊)

  那么看完这部分,你可能已经达到了计算机基础的水平,找到了一些类似的工作,但是记住要深化剩下的编译原理和计算机基础的其他部分,把刚才提到的操作系统和计算机,网络,数据结构,必须再次深化数据库。

  此时的一些信息推荐:

  1、TCP/IP详解(Volumes一、Volumes二、Volumes三,总之,尽力而为,尽力而为,内容非常多,我也在学习中)

  2、Unix下的高级编程&Unix下的网络编程(我们使用的大部分服务器都是Linux系统。既然是Java程序员,了解底层很重要,从Java语言层面到JVM操作系统。应该很熟悉)

  3、Linux内核设计与分析

  4、大华设计模式或丛书设计模式

  2、Java 基础

  Java的生态很大,它所依赖的其实是Java的两个组件:Java语言+Java虚拟机

  Java语言部分:(注意Java版本)

  Java语法一定很熟悉,比如Java面向对象编程,Java函数,类,继承,多态,接口,对象,IO等等。 高级一点,Java内部类,Java泛型,Java反射,Java并发,等等。

  JDK部分:

  Java集合包一定很熟悉。无论是日常工作还是面试,Java集合都是重点,比如List、Set、Map等。

  Java Concurrent包下的类从底层基础开始,如CAS、atomic、AQS、CountDownLatch、ReentrantLock、ReadWriteLock等,以及ConcurrentHashMap等一系列并发安全结构。

  然后是String相关的,StringBuilder,StringBuffer,StringUtils等。

  这部分不仅要熟悉API,还要尽可能熟悉源码和原理。比如如何使用AQS构建可重入锁,如何实现公平与不公平,AQS如何避免惊险群效应。让我们更深入地了解 CAS 中如何实现原子操作,以及 UnSafe 和 VarHandle 之间的区别是什么。

  Java虚拟机部分:(注意Java版本)

  Java虚拟机的知识大致可以分为以下几类:

  JVM内存结构,Java内存模型

  Java垃圾采集(垃圾采集算法,垃圾采集器,专注parralel,G1、cms)

  Java对象结构、Java类文件结构

  Java JIT(这一个通常会介绍书中的几个参数,但值得研究,在研究过程中编译相关的方面会有很大的提升)

  Java类加载机制、父委托模型、如何实现热加载、tomcat的类加载机制、ASM字节码操作等。

  一旦熟悉了这些要点,就可以使用它来深入了解 Java 的一些语言特性和语法,例如:

  1、泛型中的擦除

  2、synchronized的实现原理

  3、CAS如何实现原子操作?

  4、CAS 依赖于 SMP 架构中的缓存一致性,因为一致性流量引起的总线风暴,以及其中的 MESI 协议。

  5、Java 1. 为什么G1的吞吐量低于cms 8.

  类似的问题还有很多。当你达到一定的知识积累水平后,你会逐渐面对这些问题。

  另外,Java相关的框架,比如Spring、netty等,应该熟悉API,更懂源码。

  推荐资料:

  1、Java 编程思想

  2、Java并发编程实践

  3、深入理解Java虚拟机

  看完这三本书,建议直接阅读JDK源码和官方文档(JDK &JVM)

  3、常用互联网工具

  Shell&awk&lua等脚本语言

  之所以单独声明,是因为很多程序员写了N年代码,连最基本的shell和awk都不精通,查问题解决问题或者处理数据异常缓慢或者直接找不到合适的方法,重复一遍性工作太多,自动化太少。

  MySQL

  SQL一定要精通,SQL一定要精通,SQL一定要精通(不知道很多原理,你会不会上手SQL。在开发工作的数据处理方面,通常shell+SQL都可以解决99%的问题)

  MySQL实际上更复杂。首先我们需要了解MYSQL的一些特性,主要是从InnoDB开始,比如内存模型,如何刷新脏页,写两次,redo undo等事务保证。然后是间隙锁、行锁、索引的实现结构。

  再深入一点,可以看看InnoDB日志等。如果能用工具来解释十六进制日志就好了。看看Mysql写日志的一些方式。

  推荐资料:

  1、深入了解mysql InnoDB存储引擎

  2、高性能 MySQL

  Redis

  Redis,不要只知道key-value结构之类的

  SDS数据结构、quicklist结构、ziplist&hashTable、HASH等数据结构一定要清楚。

  Redis持久化方式,以及它的区别和优势:AOF、RDB等

  推荐资料:

  请直接对照官方API阅读源代码。市面上虽然有一些书,但是Redis更新还是挺快的,有很多没有时效性的知识。

  从用法来看,Redis 4.X 菜谱很不错

  nginx

  Nginx 在开发中也被大量使用。API首先要明确,其次,我觉得我们应该重点关注这种基于epoll的非阻塞异步IO单线程(进程)处理模型,用于多链接处理。

  Kafka 或其他消息队列

  在分布式应用中,消息队列几乎是必不可少的重要组件,通常用于服务解耦或异步处理。这个可以根据兴趣和应用场景来查看。在这里推荐卡夫卡

  Hadoop、Spark等计算工具

  这类计算工具大家应该尽量熟悉,不过在初级阶段,没必要深入,因为它可以使用。

  4、分布式相关

  Java可以说是构建分布式应用最常用的语言,工具很多而且非常强大。

  统一按照这个维度学习:熟悉API->原理->源码

  Spring(spring核心库(Ioc、AOP等,事务建立在此之上)、spring Boot、Spring Cloud,或者单独看一下Spring MVC),这里推荐,Spring For All玩最纯粹的技术!做最专业的Spring非政府组织~,有对应的群,这么多大佬

  达博

  动物园管理员

  翟永超对服务的实际服务等

  还有一系列关于分布式架构的书籍。这种知识不要太依赖书本。你应该看看一些经典的架构方案等。

  简单来说,就是这样。最后,希望你以后能吃苦耐劳。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线