实习生培训小结
Peng's Blog 只记录和技术相关的东西

实习生培训小结

2017-07-21
DAL
 

写在前面:因为公司保密性以及信息安全,所以部分敏感内容本文就不提及了。

培训时间

2017.7.20 ~ 2017.7.21

培训人员

三大核心部门的实习生,总共26人。包括框架工具部、客服开发部、测试运维部。涵盖了算法、机器学习、图像识别、后端开发、前端、测试等岗位。

开场

​ HR姐姐暖场,对我们的到来表示欢迎。说我们是从2500多个人里面筛选出来的,希望我们实习期间能多学点东西,好好工作之类的。之后是副总裁的发言,主要还是强调实习的重要性,以及一些期盼。

框架工具部产品介绍

​ 这里提到了非常多的东西,包括DAL、ELess、Etrace、基础框架、GZS等等。这里不能细说。

​ 只介绍两个东西。

​ DAL-数据访问层:作为应用层和数据库之间的代理和屏障,提供对数据库主备切换、读写分离、分库分表(sharding)、限流、异常SQL阻断的功能。当前支持MySQL和PostgreSQL。

​ GZS-异地多活:控制异地多活的路由配置及灾备切换。支持应用层订阅多活配置和切换信息。

测试部介绍

​ 讲了一下测试的一些东西,主要是讲压力测试。

​ 第一次了解到了大公司是怎么进行压力测试的。压力测试对于大型互联网公司十分重要,能承受的压力越大,说明系统越好。具体的实现细节的话,是在真实环境进行测试,创建了许多测试用例,模拟真实用户的使用。这里是坚决不能使用真实用户的,万一真实用户第二天起来发现订单多了几百单,那非常影响用户体验。

OPS介绍

​ 我的理解,就是operations,也就是运维的意思。下面包含很多部门,有运维,有DBA有DA等。完整的部门应该是叫技术运营部。

​ 讲到了Nginx、Redis、NoSQL、SOA等很多东西。

Nginx

​ 要了解一个新的东西,最好的方法就是知道类似的东西。跟Nginx同级且功能类似的主要有Apache 。所以Nginx和Apache一样,也是一种Web服务器

​ Nginx的速度很快,快的原因主要是里面有 反向代理 这个技术。 多进程 + 事件驱动

​ 反向代理(Reverse Proxy)是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

3101171-71de739352457081

​ 在最右侧一个还有一大群client

Redis

​ Remote DIctionary Server(远程字典服务器)

​ 属于NoSQL的一种,同一级的还有mongodb等。一般公司99%的数据都在这上面。

​ Redis是一种速度非常快的非关系型数据库,可以存储键值对之间的映射、可以将存储在内存的键值对持久化到硬盘等。 Redis不需要使用表。

​ Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

Java

Java的发展

​ Java5的时候加了很多新特性,比如foreach、泛型、枚举、多线程;

​ Java6 主要是Java web方面的东西;

​ Java7 switch里面能使用字符串了、新IO、G1 垃圾收集器(Garbage-First Collector)、JVM支持其他语言;

​ Java8 lambda表达式,函数式编程等、LocalDateTime时间日期类。

知识点

​ 1、Java没有C++重载运算符的概念(除了String的 + 和 += );

​ 2、equals/hashcode for hash based collection;

​ 3、jstack,用于查看jvm内存的,查看当前的某些类和变量占用了多大的内存,非常适合用于JVM调优等;

​ 4、什么是良好的代码?: 1)给机器运行要是高性能的,2)给人阅读要是容易理解的

​ 5、八荣八耻:

​ 以动手实践为荣,以只看不练为耻;

​ 以打印日志为荣,以出错不报为耻;

​ 以局部变量为荣,以全局变量为耻;

​ 以单元测试为荣,以手工测试为耻;

​ 以代码重用为荣,以复制粘贴为耻;

​ 以多态应用为荣,以分支判断为耻;

​ 以定义常量为荣,以魔法数字为耻;

​ 以总结思考为荣,以不求甚解为耻。

简单介绍一下G1

​ G1垃圾回收器是一个服务端的垃圾回收器,针对大内存多核CPU的环境,目的在于减少Full GC带来的暂停次数,增加吞吐量。Java9推荐使用这个。

​ 从实现上看,G1在堆上分配一系列相同大小的连续区域,然后在回收时先扫描所有区域,按照每块区域内存和对象的大小进行排序,优先处理存活对象小的区域,即垃圾对象最多的区域。 所以它叫Garbage First。

​ G1把要收集的区域的存活对象合并并且复制到其他区域,从而避免了CMS遇到的内存碎片问题。

​ 重点:代码要短,思路要简单。编译时异常 比 运行时异常要好,运行时异常比逻辑错误要好。 因为尽早被发现是最好的。 命名要以意图命名,不要以实现命名。

​ Java8的新特性就不详细说了,研究了一两个星期了,现在已经熟练掌握函数式编程了。

Python

​ 主要讲了语法规范,比如要用四个空格代替tab、开源项目要遵守的规定等。其它类似于上面Java。

​ 有一些很重要的之前不知道的新知识点:

​ 1、每行的行首使用4个空格,不适用tab,除非整个文件都使用的tab缩进

​ 2、一行代码最多79个字符,为了防止其他有人显示器上显示不全。原则是尽量避免出现x轴滚动。

​ 3、行尾不能加空格;

​ 4、在赋值、比较、逻辑运算符的两侧一定要用空格,默认参数值和按名传参的=两侧不要加空格;

​ 5、表达式中优先级最低的运算符两侧加空格;(这句话是亮点)

​ 6、逗号,方括号,花括号内部的包围空格不能用、冒号逗号分号前面不能有空格。

​ 7、命名规则、优先使用意图,而不是具体实现细节。

​ 8、_ :可以理解成Java里的protected、__(两个下划线):可以理解成Java里的private

​ 9、从Exception继承异常而不是从BaseException继承,因为后面那个下面多个4个系统异常,我们用不上。

​ 10、使用def而不是lambda加赋值,lambda的抽象级别较高,不一定每个人都能看懂;

​ 11、不要使用可变对象作为参数默认值;

​ 12、对变量的任何赋值会使得名称变成局部变量。(是基础,也是重点。)

信息安全

​ 讲课的是个声音很好听的小姐姐,2333

​ 安全意识很重要。一份完整的个人信息能在黑市卖到1000块。一定要注意保护自己的信息,平常朋友圈之类的,要主要帮重要信息屏蔽。

​ 上传的代码到GitHub之类的,要十分注意。代码里面不能明文存账号密码等,公司会定期扫描外网,会严查这类情况。

​ 密码复杂点是有好处的,虽然这个以前就知道了,但意识不强,经过这次课深刻意识到了这个的必要性。

架构设计

​ 当一个问题有很多种解决方法的时候,最简单的那种就是最好的,设计也是优先考虑简单。其次还要能解决一些主要的问题。先学习,再模仿,最后再创新。好的架构一定是大胆的,但这种大胆是建立在非常好的技术基础之上的。

衡量好设计的标准

​ 1、长期存活

​ 2、功能强大

​ 3、没有被替代

​ 4、获得大量用户喜爱

培养好的设计品味

​ 1、好的设计是简单的设计。比如VM和Docker、Maven和Gradle

​ 2、不过时

​ 3、能解决主要问题

​ 4、有启发性

​ 5、好设计通常都是艰苦的

​ 6、好设计的看似容易的设计

​ 7、好的设计往往是对称的

​ 8、取名要有隐喻

​ 9、好的设计往往是一种再设计,就是说要多次修改

​ 10、好的设计往往来自创造性的模仿

​ 11、好的设计常常的奇特的设计

​ 12、好的设计常常是大胆的设计

​ 13、先欣赏、再模仿、然后再开始创造

发布系统

​ 公司针对发布项目到服务器这个操作,单独抽出来的一个团队来做。这个不细说,大概就是先编译成二进制文件,然后走两个测试环境。这里面有一些比较复杂的技术,包括服务器的配置,Docker、container容器之类的。

分布式追踪系统

​ 埋点,追踪, 监控整个系统等。也是一个很重要的业务。

SOP

​ SOP的全称是:Standard Operating Procedure,即标准操作步骤。

​ 标准操作步骤程序要做到细化和量化。

​ 按照正确的步骤做事得出正确的结果、按照错误的步骤做事得出未知的结果。

什么是SOP

  • standard operation procedure,标准作业流程
  • SOP是一个标准业务管理或操作流程
  • SOP注重过程管理,而不是结果管理。通过对过程的标准化操作,减少和预防错误和不良后果的发生
  • SOP是一个不断优化的过程,而且也无法避免或预防所有问题的发生

为什么要制定SOP

  • 将企业里面口耳相传的隐性知识显性化。便于消息的传递
  • 可以在最短的时间内培养新员工
  • 保证生产的有序进行
  • 标准化是执行力的保证

什么是好的SOP

  • 六要素,5W1H
  • 不超过目前的人力财力时间所允许的范围
  • 便于人们阅读
  • 效率最高,成本最低
  • 根据业务发展和深入实践,容易修正的

结论

​ 正确的流程得到正确的结果;

​ 错误的流程得到未知的结果。


上一篇 设计模式

Comments

评论功能暂停使用,如需跟作者讨论请联系底部的GitHub