每月IT摘录201811
技术
1.打牢基础,从会使用-了解原理-了解思想一步一步来,最怕基础很弱但却以什么都用过为荣的人,这样的人我招进来也只是初级而已,工作年限再多也没有用。少林里面,有功和拳之分,如蛇拳猴拳是拳,马步功石锁功是功,你觉得你练会了蛇拳就能打人?同样,编码之路,分清什么是功什么是拳,一开始80%事件花在练功上,而不是练拳。练武不练功,到老一场空。
2.《深入理解计算机系统》比较适合一直从事Java Web开发和APP后端开发工作的人群。《tcp/ip详解 卷一、二、三》比较适合做网络编程的人群,比如你使用netty去开发的话,那么就要对TCP/IP有更深入的了解。而《数据结构与算法》这本书,则比较适合做计算研究工作的人,比如刚才提到的分布式计算。
另外,这里所说的适合,并不是其它两本对你就没有用。比如你做Java Web和APP后端开发,《tcp/ip详解 卷一、二、三》这本书对你的作用也是很大的。这里只是分出个主次关系而已,你要是时间足够的话,能把三本都精读那当然最好不过了。但如果时间有限的话,那么就先挑对你帮助最大的书去读。
理论上来讲,这一年你能把这三本其中一本精读下来,就已经非常厉害了。有了基础,有了前面的工作经验,你就可以去开拓属于你的领域了。
4.学框架必须理解原理。面试时,如果会用dubbo他们就问你计算机网络,网络编程,rpc,netty,会用zookeeper他们就问你分布式原理,怎么保证一致性balalala。
5.reactor设计模式,是一种基于事件驱动的设计模式。nio中采用了reactor设计模式。
在事件驱动的应用中,将一个或多个客户的服务请求分离(demultiplex)和调度(dispatch)给应用程序。在事件驱动的应用中,同步地、有序地处理同时接收的多个服务请求。
6.PHP 、 Python,都适合快速开发不太复杂的 Web系统。但是大型复杂的商业系统开发还是用 Java合适。
7.一个RPC框架大致需要动态代理、序列化、网络请求、网络请求接受(netty实现)、动态加载、反射这些知识点。
现在开源及各公司自己造的RPC框架层出不穷,唯有掌握原理是一劳永逸的。
8.掌握原理最好的方法除了阅读源码,自己动手写是最快的。
9.使用Hystrix进行熔断和降级。
比如,积分服务挂了可以来个降级:每次调用积分服务,你就在数据库里记录一条消息,说给某某用户增加了多少积分,因为积分服务挂了,导致没增加成功!这样等积分服务恢复了,你可以根据这些记录手工加一下积分。这个过程,就是所谓的降级。
- 性能调优、算法数据机构
- 高并发下数据安全、接口冪等性、原子性等
- 分布式下协同、已经锁的处理
- 数据库的分库分表、项目之间的垂直拆分
出现频率高的技术点有:HashMap、JVM、Dubbo、Mybatis、Zookeeper、http tcp/ip
14.数据结构和计算机基础>Java基础>其他开源框架。
- 1. JVM 深入了解,Tomcat 深入了解,多看 Java 库的源码
- 2. 计算机网络深入理解,物理层、数据链路层,可以不用深究,但是网际层、会话层、应用层的概念要熟悉,IP 协议、HTTP 协议要熟悉,基于 IP 协议的子网划分,要熟知
- 3.
操作系统,这是无论哪方便开发都要熟悉的,不论是前端、移动端、后端、数据库、运维,只要是搞计算机的,都要有扎实的计算机操作系统的功底,操作系统的体系结构、运行机制,Linux
内核、账户管理、安全,多用户多进程模式、内存管理、进程管理、进程间通讯等等,《深入理解计算机原理》,《 Linux
入门到精通》等等,要多学多练习,可以使用 Java 去调用操作系统的底层 API,试试,如果想不明白的,可以使用 C 多去研究一下 - 4.
数据库方面,SQL 与 NoSQL,SQL 要注意 SQL 语言的范式模型,从逻辑上理解究竟什么是 SQL,SQL
语句为什么能标识数据查询,SQL 能做到什么,不能做到什么,然后就是 SQL
数据的实现,mysql、oracle、postgresql,深入理解数据引擎,游标这些东西 - 5. 有了上述基础,再去学习一些理论知识,比方说马丁大叔提出的 IOC 理论、Roy Thomas Fielding 提出的 Rest 理论,SOA 的提出和发展、微服务的提出和发展,充实对现代分布式计算架构的理解
- 6. 尝试自己实现一套 IOC、SOA、微服务框架,锻炼自己通过理论去进行实践的能力,当然这点不是要求你造轮子,只是为了能够让你到达,能够通过理论,造轮子的程度
17.Nginx是Web服务器(Http Server)。可以进行负载均衡、反向代理。
Tomcat是应用服务器(Application Server),是一个可以运行Servlet/Jsp应用的容器。
20.RPC(Remote Procedure Call)--远程过程调用。
一个RPC框架大致需要动态代理、序列化、网络请求、网络请求接受(netty实现)、动态加载、反射这些知识点。
21.整个码农界有10%做底层、中间件就不错了。剩余90%都是业务开发,目标是商业的变现,取决于你对业务的深刻理解,对市场、产品、运营等知识的了解。也并没有那么多人做高尖端技术产品,即使这些人,可能也就精通自己的领域知识,搞人工智能的不需要懂JVM,搞JVM可能也不懂数据库,搞数据库的可能也没去看jdk源码。
22.zookeeper分布式锁。
客户端想要加锁,都是先在zookeeper中一个锁节点下创建一个接一个的临时顺序节点。
如果自己不是第一个节点,就对自己上一个节点加监听器。
只要上一个节点释放锁,自己就排到前面了并取得锁,相当于是一个排队机制。
而且用临时顺序节点的另外一个用意就是,如果某个客户端创建临时顺序节点之后,不小心自己宕机了也没关系,zk感知到那个客户端宕机,会自动删除对应的临时顺序节点,相当于自动释放锁,或者是自动取消自己的排队。
23.所谓的"没有银弹"是指没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍。(1987年提出)
在软件开发过程里是没有万能的终杀性武器的,只有各种方法综合运用,才是解决之道。
24:TDD:Test Driven Develop 测试驱动开发
DDD:Domain Driven Develop 领域驱动开发
25.分布式session共享,有多种方案解决。可以选择使用Redis存储session。用nginx负载均衡,然后tomcat集群从redis中获取session。
工作
1.保证充足的睡眠并保持健康。如果你疲倦了或者生病了,就更难保持专注,更易分心走神。
2.在工作和生活中,如果记性不好,就慢慢想;
如果问题不好解决,就慢慢解决;
如果一次不成,就做两次;
既然跑不快,那就不如慢点跑,好好看看风景。
3.跳出圈子,多接触别的圈子,最好是比你层次高的圈子,那最好不过了,你的思维与认知会在不知不觉中发生变化。
如果你是程序员,没事多跟公司的产品经理、设计师们聊聊,多接触下外面更多、更牛的圈子,那你就很容易跳出这种思维的定式,你所看到的,你所想到的,可能都会大不一样。
4.做得越多,出的故障越多。除非你啥也不做,但是出的故障越多,你的成长才会越大。所以我还是跟大家说,趁着年轻,多犯错误。因为你现在犯的错误都还好,只有人犯过错误了,你才会有那种深刻的理解,对这个东西,你会有更深的理解,不犯错误的人你是不会成长的。
5.IT行业的人最好定期更新简历,然后面试一圈,一则看是否有更好的机会,二则了解市场行情与技术动向,也作为自己下一年努力的方向。
6.写代码是一项实践性的工作,不进入生产环境,很多东西自己是搞不懂也不会接触到的。希望各位自学编程的人,都能早日找到工作,快速学习和成长,不断进化和突破,最终超越自己。
学习
1.学习要一步一步来,不要急。
2.与其凭空焦虑,我们还是脚踏实地地学习吧!
互联网
1.双十一不买东西的原因:
- 讨厌被营销,产生焦虑感。
- 不愿囤货,拒绝鸡肋。
- 商家噱头太多,诚意不足。
- 商品不一定是最低价
社会
1.中美两国本科生近十年的毕业率数据发现,美国大学本科毕业率约为50%,不同类型、不同竞争力的大学,乃至相同类型、相同竞争力的大学本科毕业率都存在明显差异;中国大学本科毕业率则超过90%,不同类型、不同竞争力的大学本科毕业率无明显差异。他认为,这种反差,反映了高等教育在人才培养上是“严进宽出”还是“宽进严出”的选择问题。
生活
1.当你的身体不舒服,总是得去医院的时候,什么月薪2万,3万都是浮云。。好好爱惜自己的身体吧。
2.不仅是“生育自由”,我们还需要“恋爱自由”、“婚姻自由”、“产检自由”、“坐月子自由”、“喂奶自由”、“教育自由”、“二胎自由”、“节育自由”!
每月IT摘录201811的更多相关文章
- 每月IT摘录201805
摘录自互联网的前辈心得: 一.技术:0.精通一个淘汰的技术对你没有任何价值.学习的精力有限,更应该花在值得学的技术上.比如网络.操作系统.数据结构.算法1.工作要有定力,更多的应该是关心问题如何更有效 ...
- 每月IT摘录201904
技术 1.项目,相比数量,规模更重要. 毫无疑问,在实际工作中,积极参与实际工程项目是快速积累经验最好的办法. 相对于项目的数量,项目的规模更加重要.项目的规模是可以比较容易判断的.实际服务用户的数量 ...
- 每月IT摘录201903
技术 1.在开发高并发系统时,有很多手段来保护系统,如缓存.降级.限流等.缓存可以提升系统的访问速度,降级可以暂时屏蔽掉非核心业务,使得核心业务不受影响.限流的目的是通过对并发访问进行限速,一旦达到一 ...
- 每月IT摘录201901
技术 1.Jsessionid只是tomcat的对sessionid的叫法,其实就是sessionid:在其它的容器也许就不叫jsessionid了. 2.在 InnoDB 中,索引使用的数据结构是 ...
- 每月IT摘录201812
技术 1.JVM.Java并发.NIO.网络通信,这些都是一个java工程师必须具备底层技术素养. 2.关于技术广度.消息中间件.分布式缓存.海量数据.分布式搜索.NoSQL.分布式架构.高并发.高可 ...
- 每月IT摘录201810
技术 1.Redis.对于单机实例,我们采用原生主从(Master-Slave)模式实现高可用,常规模式下对外仅暴露 Master 节点.由于使用原生 Redis,所以单机实例支持所有 Redis 指 ...
- 每月IT摘录201808--201809
一.技术 海量数据的解决方案: 使用缓存: 页面静态化技术: 数据库优化: 分离数据库中活跃的数据: 批量读取和延迟修改: 读写分离: 使用NoSQL和Hadoop等技术: 分布式部署数据库: 应用服 ...
- 每月IT摘录201807
一.技术 1.专注于一个领域,横向扩展其他领域的技术.2.想得太多,做得太少. 3.想要成为一名web开发高手.必须熟悉以下内容: a.每次请求和响应的背后究竟发生了哪些步骤?客户端和服务器是如何通过 ...
- 每月IT摘录201806
一.技术 1.架构师的技术升级要点:用两个字来描述:集群,用三个字:分布式,再用多点的文字:把海量的流量和数据合理分摊到数量合适的机器上. 想明白这点,后面就能知道该学哪些了,比如流量分摊时得负载均衡 ...
随机推荐
- getdate — 取得日期/时间信息-----参数是一个 integer 的 Unix 时间戳
<?php$today = getdate();print_r($today);?> Array ( [seconds] => 40 [minutes] => 58 [ho ...
- 详解一个ThreadLocal 的谜题
多线程如果不理解透彻, 那么 ThreadLocal 始终是有些会有所迷糊的. ThreadLocal 本身的命名有有问题, 这些美国精英整出来的技术,再加上一个奇怪的命名.对我们中国人来说,就是一场 ...
- 2. instr用法
跟oracle中的instr用法一样: SQL> select count(*) from t where instr(title,‟oracle‟)>0; COUNT(*) ———- 5 ...
- leetcode44
public boolean isMatch(String text, String pattern) { // 多一维的空间,因为求 dp[len - 1][j] 的时候需要知道 dp[len][j ...
- Linux 用户、权限
用户:uid 保存在 /etc/passwd 用户分类: 管理员 uid--0 普通用户 --系统用户 uid 1-499 --一般用户 uid 500-60000 组:gid 保存在/etc/ ...
- APP-9-文字识别-车牌识别
1.获取Access Token APP-9.1-百度应用-文字识别 2.代码部分 <!DOCTYPE html> <html> <head> <meta c ...
- ubuntu oracle 环境搭建
安装 Oracle SQL Developer Oracle客户端安装 https://oracle.github.io/odpi/doc/installation.html#linux
- centos7下找不到iptables文件
最近在centos7下,搭建ftp服务,按照步骤一步一步来,发现 etc/sysconfig/iptables这个文件并不存在,然后去找解决方案, 原文地址:http://blog.csdn.net/ ...
- 如何安装和配置RabbitMQ(转载)
如何安装和配置RabbitMQ 今天开始一个小小的练习,学习一下安装和配置RabbitMQ,为什么要学它,因为WCF可以完全兼容和使用RabbitMQ了.我们新的大数据系统需要使用消息队列,所以就开始 ...
- MIME sniffing攻击
基于IE的MIME sniffing功能的跨站点脚本攻击 IE有一个特性,那就是在将一个文件展示给用户之前会首先检查文件的类型,这乍看起来并没什么问题,但实际上这是相当危险的,因为这会允许IE执行图片 ...