写点什么

Architecture Phase1 Week9:Summarize

用户头像
phylony-lu
关注
发布于: 2020 年 11 月 22 日

数据库得运行原理得讲解,如何避免 SQL 注入,需要了解其执行原理。


PrepareStatement 会预先提交带占位符的 SQL 到数据库进行预处理,提前生成执行计划,当给定占位符参数,真正执行 SQL 的时候,执行引擎可以直接执行,效率更好一点。PrepareStatement 可以防止 SQL 注入攻击。•select from users where username = 'Frank’;•Frank';droptable users;--•select from users where username = 'Frank';droptable users;--’;•select * from users where username = ?


JVM 虚拟机得讲解,方法区,堆区,JAVA 栈,程序计数器,执行引擎。


执行得流程

自定义类得加载器去实现不同版本得同一类得加载共存。


JVM 得垃圾回收算法,通过分代方法进行分区新生代(Eden 区,From 区,To 区),老年代,Edian 区通过复制算法复制到 From 区。如果 From 区满了,就复制到 To 区,拷贝几次后发现比较稳定就拷贝到老年代。最后垃圾回收会在新生带回收,还有一种全局回收。包含所有区。

并行垃圾回收器,分为四个阶段,分为,初始化标记,并发标记,重标记(会暂停所有线程),并发清理。

最新得版本使用 G1 垃圾回收机制。-XX:MaxGCPauseMillis,可以动态调整垃圾回收时间


Java 启动参数

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

•运行模式-server,-client

•类加载路径-cp,-classpath

•运行调试–verbose•系统变量–D 非标准参数,默认 jvm 实现这些参数,但不保证所有 JVM 实现都实现,且不保证向后兼容

•-Xms 初始堆大小

•-Xmx 最大堆大小

•-Xmn 新生代大小

•-Xss 线程堆栈大小非 Stable 参数,此类参数各个 jvm 实现会有所不同,将来可能会随时取消

•-XX:-UseConcMarkSweepGC 启用 CMS 垃圾回收


Java 多线程使用,需要合理并谨慎得使用多线程。注意线程得安全,方法局部变量是线程安全得,如果多个线程可以同时更新同一对象得同一成员,那就不是线程安全得。


启动线程数=【任务执行时间/(任务执行时间-IO 等待时间)】*CPU 内核数


竞态条件与临界区需要用锁来控制,保证数据一致性


ThreadLocal,通过这样得方式获得私有得变量。


通过各种异步得框架来合理架构自己得系统。加速开发及运行稳定性。


秒杀系统得设计方案,主要利用 CDN 来解决流量问题,再利用动态更新商品 id 得 js 来限制激活,通过计数器控制秒杀连接数。


发布于: 2020 年 11 月 22 日阅读数: 21
用户头像

phylony-lu

关注

还未添加个人签名 2018.12.08 加入

还未添加个人简介

评论

发布
暂无评论
Architecture Phase1 Week9:Summarize