每月IT摘录201808--201809

时间:2022-10-30 01:22:35

一、技术

海量数据的解决方案:

  1. 使用缓存;

  2. 页面静态化技术;

  3. 数据库优化;

  4. 分离数据库中活跃的数据;

  5. 批量读取和延迟修改;

  6. 读写分离;

  7. 使用NoSQL和Hadoop等技术;

  8. 分布式部署数据库;

  9. 应用服务和数据服务分离;

  10. 使用搜索引擎搜索数据库中的数据;

  11. 进行业务的拆分;

高并发情况下的解决方案:

  1. 应用程序和静态资源文件进行分离;

  2. 页面缓存;

  3. 集群与分布式;

  4. 反向代理;

  5. CDN;

1. 有时候就跟你看了一百篇某个技术点的技术文章,真的开始写的时候,什么也想不起来,又得打开一篇,照猫画虎做完,却发现崩溃了。WTF。其实你并没有学会。

我主张你去看原始的资料,主张你去读系统的书籍,主张你去研究官方或是优秀项目的源码。这些都是一手资料和优质 Demo。

2.软件高手是靠踩坑积累起来了。所以在公司里,一旦有了问题,不管是自己的还是别人的,一定得总结,包括总结问题场景,总结排查问题的方法(如何看日志,以及看日志里的哪些要素),以及总结解决问题的方法(比如如何处理jar包冲突,如何通过分区等手段提升数据库查询的性能)。

以我自己的体会,我最近半年遇到的坑比之前3年的都多,但我确实感觉最近进步很快。靠实际解决问题是提升自己身价的最好办法,没有之一。

3.说下学习的方法。第一还得见缝插针地学,第二,一定得通过看视频或书,系列地了解到这个方面的知识点,先面到点,别反过来。第三,一定得边学边实践,如果开发环境没有,就自己搭建。第四,一定得通过面试(未必要去)等手段检验自己的学习方向和成果,一旦出现偏差,得及时纠正。

我就见过不少头脑灵活的人,就不断学不断面试,这类人学习的效率要远比闭门造车的人要高。

4.学习的资料是否适合你当前的知识水平。太简单,以至于整本书都在印证你的想法,让你觉得它”很好读”;太难,你无法通过直觉跳过某些推导步骤,每一页的阅读都需要大量的思考,哪怕看完一整章,你也没有对这个章节的完整图景。

合适的难度,就是让你兴奋的难度,你能从中找到你过往的一些经验,也能看到很多全新的方法和观念,学完一章后,是否有一些愉快的想象,如果有,那么它的难度刚刚好。
5.找到学习资料后,不要浪费它。快速,完整地把它消化掉,不要中断,每天至少两个小时以上的专注,周末也不要停
6.源码阅读,尤其是针对你正在使用的第三方库。千万不要面试的时候,什么源码都未学习过
阅读源码要能回答两个问题:要解决什么问题+是如何实现的?大到整个项目,小到一个模块、函数,看的时候都要抱着这两个问题去看。看完了这两个问题能答上来,才是有效。
 7.除了图书,我们还需要关注文档(reference)。现在很多框架和技术的参考文档已经非常好了。首先是文档的质量越来越高,现在技术都是协作的。Java程序员可以看看Spring Framework,Hibernate,Kotlin,Groovy的文档,质量都非常高。

8.底层技术博大精深,从语言、编程范式、算法和数据结构、计算机原理、网络、数据库、分布式技术,需要多花时间去掌握。

9.阅读源码,需要扎实的技术基础+强烈的求知欲+耐心。
10.进行项目开发时,有一个共识——不要闭门造车,而要尽量采用优秀的开源项目和技术栈——这样可以避免重复造*、避免掉进别人已经解决过的坑中,另外还可以帮助我们快速学习社区大牛们的思想精髓。可以说,使用优秀的项目就相当于站在巨人的肩膀上,在促进个人成长、把控项目质量、保证交付进度等方便都有积极的意义。
11.当下最流行的项目和技术都有哪些呢?
  • Java Web 开发:   Spring系列几乎毫无悬念的成为第一
  • PHP社区: Laravel、Codeigniter等使用最广
  • Node.js社区:express、koa俘获了开发者的心
  • .Net开发: ASP.NET MVC 和CORE各领风骚
  • 前端社区: 以React、Vue、Angular为代表
  • 移动端开发:IOS、Android各占半壁*
  • 数据库开发:Mysql、Oracle、MongoDB等

12.想自学成为优秀的java工程师,想提高水平就是做项目,光做出项目只能说到30%,把你做出来的东西用高并发,大数据,节点宕机,长时间运行去压,直到不出问题为止才能到80%。另外20%要在实际的生产环境去学,这个没办法,但达到80%的话,足够你应付Java高级工程师和初级架构师的面试了。

13.技术领域的含义是:选择到一个自己感兴趣、适合自己并且有发展前景的方向。这点很重要,因为工作时间久了之后,再考虑换方向通常是不容易的。

14.对于码代码,在你眼里无论这是一份工作、事业或者志业,都可以赋予其意义。有了意义就会有成就感,它会成为一种精神力量和内在动力,与工作形成一个良好的循环。

15.编译器将*.java文件编译成*.class文件,然后JVM对*.class文件进行解译,它不关心这个类文件是由哪种编译器生成的,只要符合类文件的文件格式即可。Java编译器将一段程序编译为等价的类文件。这些类文件实际上包含了半编译的代码——字节码。

16. 外面的世界很广大和美好,不能在家闭门造车。

17.IT行业不是你会几个框架,会一门编程语言就行的,它是日新月异的,需要不断学习更新知识的。
18.我们首先是一个工程师,意味着后端工程师不要给自己设限贴标签,要学习通用计算机基础知识,解决某一领域的问题,条条大路通罗马,当你把自己当成工程师,并热爱这一个编程行业,保持学习态度,有一天会抽象到不在考虑前后端,无论前后端,语言仅仅是工具,解决通用问题才是工程师的思维。
19.Jenkins 是目前持续构建领域使用最广泛的工具之一,Jenkins 是一个独立的开源自动化服务器,可用于自动化各种任务,如构建,测试和部署软件。Jenkins 可以通过本机系统包 Docker 安装,甚至可以通过安装 Java Runtime Environment 的任何机器独立运行。

说直白一点 Jenkins 就是专门来负责如何将代码变成可执行的程序包,将它部署到目标服务器中,并对其运营状态(日志)进行监控的软件。自动化、性能、打包、部署、发布、发布结果自动化验证、接口测试、单元测试等等关于我们打包测试部署的方方面面 Jenkins 都可以很友好的支持。

20.Spring Boot Actuator 是 Spring Boot 提供的对应用系统监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的 Spring beans 以及一些环境属性等。
21.web技术使用的是TCP协议,HTTP是基于TCP的,HTTP的模式是请求-应答。UDP协议是请求,不需要应答。
22.应该好好地静下心来,深入地研究一些东西,自己写一些东西,而不是这也用过,那也知道,但是多半都是局限于仅仅见过,会用,却从来没有认真思考过其代码背后蕴含的思想,更少有人研究过源码,进而体会大师们在某些问题的解决上秉承的思想和思维的风格。个人感觉,这也算是国内大部分程序员最让人悲哀的地方了,当然这也与外界浮躁氛围的蔓延不无关系。
23.nginx可以反向代理、负载均衡、动静分离
24.Js是动态类型的语言。对于那些想要在 JavaScript 中使用静态检查类型的人,可以去看看 TypeScript 。我从没用过这个语言,但是听别人说过关于它的一些很棒的事情。它直接与 JavaScript 兼容,且添加了许多有用的类型检查和其它特性。

25.SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。
26.业余时将自己从繁杂的业务和维护辣鸡业务中抽身出来,看看书籍和优秀项目代码,自己做个 side project,研究下底层原理,才是提升自身水平的正确路线吧

27.Https和Http的区别:

  • https相对于http加入了ssl层。
  • 需要到ca申请收费的证书。
  • 安全但是耗时多,缓存不是很好。
  • 注意兼容http和https

28.学习编程从来就不是一件容易的事情, 不可能看看视频,看看书就学会, 需要大量的编程和实践。 编程虽然是极为辛苦的脑力和体力劳动, 但其中蕴含的创造的乐趣也是无与伦比的。 享受这个过程,乐在其中。

29.消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异步通信、数据同步等等功能,其作为分布式系统架构中的一个重要组件,有着举足轻重的地位。

30.在/etc/hosts中,可以修改主机别名。。例如:192.168.1.112   datanode01

31.自己动手写框架,造*,对能力的提高有莫大的帮助。

32.从 JVM GC 的角度,JDK 11 引入了两种新的 GC。对于 G1 GC,相比于 JDK 8,  JDK 11具有:并行的 Full GC,快速的 CardTable 扫描,自适应的堆占用比例调整(IHOP),在并发标记阶段的类型卸载等等。
从 Java 类库发展的角度来看,JDK 11用HTTP/2 Client API,可以摆脱老旧的 HttpURLConnection。

33.想实现一套能满足高并发的系统,那么得了解负载均衡,限流,模块间的消息队列,缓存,热备冗余,数据库集群等知识。

二‘、工作

1.如果你曾经在一轮技术面试之后感觉糟糕,如果你曾经感觉你彻底失败,是个废物,不该获得任何职位,只想住到远离计算机、技术和那些让你产生这种情绪的招聘流程的话。我想说,你并不是一个人。

2.其实每隔3个月或4个月可以参加一场职位要求较高的面试,这就相当于一场考试,能够清晰的发现自己的不足。

3.多关注招聘网站的信息。 对应的工作经验, 岗位,市场最需要哪些技术,哪些知识?

4.2018年,BAT岗位级别及薪酬。http://baijiahao.baidu.com/s?id=1586661524671333517&wfr=spider&for=pc

5.找工作需要注意哪些点:

  • 公司按时发工资吗?
  • 直属领导懂技术吗?
  • 领导懂技术,这样才好沟通,交待什么任务的时候就知道这个任务大概需要多少时间,也知道你究竟做了什么事情 方便工作的顺利进行
  • 公司目前的产品项目是什么情况?技术环境如何?
  • 直接问cto公司产品是个什么情况,来了以后大致要做什么
  • 互联网行业更新很快, 框架更新也快,要是不学习不动手做 ,那么整个人很快就会倒退,能力就跟不上别人了,就会被这个行业淘汰!!!
  • 加班多吗?是否996?

6.互联网产品的特点就是迭代速度快,一般一年半就能决出胜负,第一的一统天下,第二被第一收购,其他死翘翘。所以快速上线,快速迭代,就是生命线

三、社会

1.海南发展银行的决定。这是新中国历史上唯一一家破产的银行。

当挤兑发生时,第一要全额保证客户存款兑付需求,第二就是注入信心。但是,海发行既没有现金,也没有时间了,最终走向破产。
3.在人际交往中,关于你自己的事情,无论你开心也好,悲伤也好,

99%的人其实根本不关心你怎么样!他们只是在乎他们自己感受,自己的利益。

4.投资理财,“年收益率超过6%的就要打问号,超过8%的就很危险,10%以上就要准备损失全部本金”。

四、生活

1.保持一颗平常心,不患得患失。

2.当年纪越来越大后,我开始尝试减少加班次数。我开始用更多的时间和家人在一起,而不是坐在计算机前

3.精通一门技艺用来赚钱,然后实现精神*。

4.什么是半衰期?
半衰期是物理学中的概念,指放射性元素中半数原子核发生衰变所需要的时间,半衰期越短,元素衰变得越快;半衰期越长,元素衰变得越慢。不同元素的半衰期差别非常大,短的不到0.01秒,长的可达几亿年。
生活中我们做不同的事情产生的愉悦感,用收益值表示大小。收益值可以是心智、情感层面的,也可以是身体、物质层面的。这项收益值随着时间衰减的速度称之为“半衰期”。
我们做的有些事情能带给我们即刻的愉悦感,这些事收益值很高但是半衰期较短,比如刷手机、买一件漂亮衣服、玩游戏等;有的事情虽然不能给我们立竿见影的愉悦感,但是随着时间的推移,收益值可以累积和叠加,这些事收益值很高、半衰期也很长,比如读书学习、坚持一项爱好、找到真爱等。一件事的半衰期越长,其影响越持久、越正面。

五、科技

六、其他

1.大学所教的编程,技术已经落后现有规范好多年。