博客笔记整理【持续更新...】
java基础总结
-
包括win10 安装jdk8,数据类型与变量,运算符,数组
-
封装,继承,多态
-
java集合又称容器,可以动态的将对象的引用存储在容器中。(灵活可扩展)
什么是泛型?
参数化类型!!!
什么是参数化类型???
将具体的类型(如string,integer)抽象成参数。 -
io指的是input和output,主要目的是实现数据在存储介质之间的传输。【流:数据流,类比与水流的流动】
-
在需要类的实例为一个或者多个并且相对固定的时候,使用枚举类。
annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加 载, 运行时被读取, 并执行相应的处理。
反射机制允许程序在运行期 借助于reflection api取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 (最高权限)
mysql笔记
-
包括mysql介绍,linux下安装mysql进行远程连接,mysql常用命令,数据类型,运算符
-
包括设计表时常用规范,如禁止在数据库中存储图片,文件等大的二进制数据,三大范式等
-
如单表索引最好不超过5个,索引最好加在where从句中
jvm笔记
-
内存结构包括线程公有和线程私有,其中线程公有包括堆,方法区,运行时常量池,线程私有包括虚拟机栈,本地方法栈和程序计数器
-
包括标记算法:可达性分析算法,gc roots的对象,四种垃圾回收算法,适合老年代的标记清除算法和标记整理算法,适合年轻代的复制算法和”因地制宜“的分代算法
包括7种回收器,单线程回收的serial和serial old回收器,多线程的parallel scavenge和parallel old回收器以及流行的cms和g1回收器。
jdk8默认使用parallel scavenge新生代回收器和parallel old老年代回收器
-
jvm调优的目的是保证在一定吞吐量的情况下尽可能的减少gc次数
推荐配置有将堆最大内存和堆初始化内存设置为相同的值,元空间内存增大
可视化工具visualvm用于监控jvm运行情况
-
类加载过程包括加载,验证,准备,解析,初始化
为了避免类的重复加载,jvm使用双亲委派模型,优先将类加载提交给父类加载器加载,避免类的重复加载,实现类的统一
springboot笔记
-
微服务是单体应用在业务发展到一定规模的演化策略。
包括springboot项目构建工程的流程,restcontroller复合注解,pom依赖分析及简单部署。
-
webmvcautoconfiguration静态映射规则,自定义favicon ,banner
-
[springboot——web开发(使用thymeleaf模板引擎)]
thymeleaf跳转规则,crud测试
-
连接池通过省略(复用)了创建连接和销毁连接的过程(tcp连接建立时的三次握手和销毁时的四次握手),从而使性能提高。
嚣张的druid(github的wiki上自称是java语言最好的数据库连接池)
-
提升重复访问数据的访问效率。
redis的应用场景(针对被重复访问的数据)
- 页面缓存(图片,css,html等静态数据)——热点数据
- 最新列表
- 排行榜
- 计数器
- session存储
springcloud笔记
-
统一微服务的调用
-
实现客户端负载均衡
-
hystrix是一个实现容错机制的组件。【弃车保帅】
-
监测服务器的请求量
-
- nginx通过轮询实现负载均衡
- zuul通过集群实现高可用
-
当请求不可用或者变慢时,需要及时排查出故障服务点成为了微服务维护的一大难关。
-
apollo除了功能完备之外,在国内的普及度也相当广泛
设计模式笔记
-
设计模式是一种用于代码设计的经验总结,主要应用场景是在大型应用的构建上
-
设计原则的目的是构建出更加稳定和健壮的软件,七大原则围绕松耦合和可扩展性展开。
-
五种关系都由依赖关系的某种实例
-
单例模式定义:在软件系统中,一个类只有一个实例对象。【doublecheck,静态内部类,枚举】
-
工厂是用来生产的,而在java里,是用来生产对象实例的
-
简单来说,通过复制的方式创建对象。(被复制的对象可以理解为模板)
深拷贝:解决引用类型拷贝问题。
-
简单来说,建造者模式=创建对象+属性赋值。
建造者模式适合创建类中包含多个参数且需要定制化的情况。
-
顾名思义,创建型模式的聚焦点在如何创建对象能够将对象的创建与使用最大化的分离从而降低系统的耦合度。
-
装饰器模式的目的——核心部分和装饰部分可以*组合。‘
架构设计阅读笔记
-
合适优于业界领先。
简单优于复杂。
演化优于一步到位。
-
存储,计算的高性能和高可用常用策略
-
分层架构,soa,微服务架构的演变
-
技术的权衡本质是在业务和成本之间寻求一个平衡点。