架构师训练营第九周学习总结

用户头像
锦澄
关注
发布于: 2020 年 08 月 03 日
架构师训练营第九周学习总结

JVM组成结构



Java字节码文件

Java如何实现在不同操作系统、不同硬件平台上,都可以不用修改代码顺畅地执行?

计算机领域的任何问题都可以通过增加一个中间层(虚拟层)来解决。比如:

  • 面向接口编程

  • 7层网络协议

  • JVM

  • 编程框架

  • 一致性hash算法的虚拟节点



字节码执行流程



双亲委派机制

低层次的当前类加载器,不能覆盖更高层次类加载器已经加载的类。如果低层次类加载器想加载一个未知类,需要上级类加载器确认,只有上级类加载器没有加载过这个类,也允许加载的时候,才让当前类加载器加载这个未知类。



自定义类加载器

隔离加载类:同一个JVM中不同组件加载同一个类的不同版本。

扩展加载源:从网络、数据库等加载字节码。

字节码加密:加载自定义的加密字节码,在Classloader中解密。



JVM垃圾回收

JVM垃圾回收就是将JVM堆中的已经不再被使用的对象清理掉,释放宝贵的内存资源。JVM通过一种可达性分析算法进行垃圾对象的识别。



JVM垃圾回收器算法



Java启动参数

标准参数,所有的JVM实现都必须实现这些参数的功能,而且向后兼容:

  • 运行模式-server,-client

  • 类加载路径-cp,-classpath

  • 运行调试-verbose

  • 系统变量-D

非标准参数,默认JVM实现这些参数,但不保证所有的jvm都实现,而且不保证向后兼容

  • -Xms初始堆大小

  • -Xmx最大堆大小

  • -Xmn新生代大小

  • -Xss线程堆栈大小

非Stable参数,此类参数各个jvm实现会有所不同,将来可能会随时取消

-XX:+UseConcMarkSweepGC 启用CMS





Java内存泄漏

Java内存泄漏是由于开发人员的错误引起的。如果程序保留堆永远不再使用的对象的引用,这些对象将会占用并耗尽内存。

  • 长生命周期对象

  • 静态容器

  • 缓存



典型描述系统的组成



秒杀系统设计原则

静态化

  • 采用JS自动更新技术将动态页面转化为静态页面(再做一个商品录入系统,负责自动更新静态页面)

并发控制,防秒杀器

  • 设置阀门,只放最前面那一部分人进入描述系统

简化流程

  • 砍掉不重要的分支流程,如下单页面的所有数据库查询

  • 以下单成功作为秒杀成功标志。支付流程只要在一天内完成即可

前端优化

  • 采用YSLOW原则提升页面响应速度



秒杀系统静态化

list和detail都是静态页面



商品列表页面和商品详情页面,如何判断秒杀已经开始呢?

答案:valid-offer.js:var valid_offerIds = [1111,2222,3333]



互联网搜索引擎架构



爬虫系统架构



Lucence架构



用户头像

锦澄

关注

还未添加个人签名 2019.12.29 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第九周学习总结