笔记
江户川道哥
此人很勤奋,但仍然什么都没有写
展开
-
2021-01-04 juc &jdk1.8
jucvolatile关键字:jmm中每个线程会把主存中的数据拿到自己的缓存中,造成个个线程间数据不一致,不可见,volatile保证了一个线程修改了主存的数据,会通知其他线程重新获取。防止重排,在volatile修饰的语句前后设置内存屏障,防止CPU指令重排,例子:双重判空懒汉单例模式,因指令重排可能会制造出未初始化完全的对象,造成代码错误。synchronized关键字:锁升级机制:默认是偏向锁,只有一个线程在运行,来线程竞争时,转为轻量级锁(cas自旋锁),自旋一定时间或次数时,省级为重量级锁(原创 2021-01-04 20:08:14 · 113 阅读 · 0 评论 -
2021-01-04 开年第一篇 MySQL
MySQL存储引擎:myisam innodb区别:innodb支持行锁,支持事务事务涉及问题脏读:事务a读到事务b未提交的数据不可重复读:事务a读到事务b提交修改的数据幻读:事务a读到事务b提交增加的数据事务隔离级别来解决以上问题...原创 2021-01-04 19:35:26 · 87 阅读 · 0 评论 -
2020-11-27 activeMQ 2
2020眼看着就结束啦,这一年的目标实现了吗,觉得自己进步了吗。嗯,不要认输activeMQ助记笔记2大层次 上可分为一下几点jms规范生产者 和 消费者 理解springboot 整合持久化高可用集群高级特性持久化:默认kahadb,leveldb是趋势,企业用jdbc持久化比较多kahadb存储目录结构,jdbc自动创建表结构高可用集群:zookeapper+leveldb3个节点以上,zookeapper也需要是集群高级特性:异步投递(正常生产者将消息,发送到broke原创 2020-11-27 08:17:36 · 57 阅读 · 0 评论 -
2020-11-10 activeMQ
mq的思想源于大量耗时的操作,在后台却又不需要实时响应,这种时候,诞生了mq,它是解决两个系统间异步,解耦合的相互通信,例如订单系统和库存系统。用户下单后,订单系统 将下单信息提交消息队列,直接返回响应用户下单成功,库存系统自己慢慢拿订单信息处理库存。jms规范:获取链接工厂,创建链接,创建session会话,创建目的地(队列或主题)创建生产者和消费者,发送和接受信息,关闭链接jms是JAVAEE技术规范体系中的一个,里面还有jdbc,servlet,jsp等等...原创 2020-11-10 19:07:11 · 72 阅读 · 0 评论 -
2020-11-09 jvm 垃圾回收器
11原创 2020-11-09 19:15:08 · 120 阅读 · 0 评论 -
2020-11-03 jvm 垃圾回收
垃圾回收分为标记阶段和回收阶段标记算法有可达性分析算法,引用计数算法引用计数算法解决不了循环引用问题,容易造成内存泄露。可达性分析算法解决了循环引用问题,一般将堆以外的数据当作根,比如栈桢里的局部变量,方法区里的常量池...原创 2020-11-03 18:32:38 · 69 阅读 · 0 评论 -
2020-11-03 字符串
jdk 8中string类中的char[]变成了bytenew string(“123”)创建了两个对象,第一个在堆空间中,第二个在字符串常量池中(也在堆里)。new string(“12”)+new string(“3”)中创建了几个对象,看源码,new string两个+号 new stringbuild, 常量池里12 一个,3一个,stringbuilder调用tostring方法 也会创建一个new string 但这时候常量池里并没有123 你说乱不乱?这时候调用inter()方法,原创 2020-11-03 18:22:38 · 92 阅读 · 0 评论 -
2020-10-22 JVM 执行引擎
执行引擎将字节码转变为汇编语言,再转换为机器语言执行hootspot虚拟机执勤引擎分为两部分,解释器,和jit编译器(及时编译器),解释器一行一行解释执行,即时编译器将热点代码直接编译成机器语言放到方法区中。一个像烤鸭,一个像上烤鸭前的小凉菜,哈哈哈哈哈。...原创 2020-10-22 13:39:42 · 63 阅读 · 0 评论 -
2020-10-22 JAVA线程
线程有三种创建模式继承thread类,重写run方法,实现runable接口,重写run方法,实现callable方法,重写call方法。第三种有返回值,如果要获取返回值,主线程会被阻塞。线程的状态 new创建,start 就绪,run运行,sleep阻塞,运行结束关闭。syncronised关键字就是让线程排队,加载类上,调用此类方法都要排队,加在方法上,锁为此类当前对象,在代码块中,锁指定位多个线程运行时共用的对象即可。死锁:一线程 拿到a对象锁不释放,二线程拿到b对象锁不释放,这时候一线程又想拿原创 2020-10-22 13:29:48 · 58 阅读 · 0 评论 -
2020-10-22 JAVA SE学习 IO流
前段时间写一个模板导出功能,对于io流真的是越看越不顺眼,总感觉它不是我朋友,需要深度交流一下。io流 ,就是数据从一端到另一端传输的抽象概念。一般相对于内存而言,进内存叫做读,出内存叫做写。从读写数据单位来分,又可分为字节流和字符流(word字符流读不了),字节流是万能的,字符流只能读写文字。重点记住fileinputstream和fileoutputstream,懂一种,其他都动懂啦。read(byte[])方法每次读取数据放到byte数组中,第二次读的时候会覆盖上次读的数据,所以再复制文件时,每次读原创 2020-10-22 08:00:25 · 77 阅读 · 1 评论 -
2020-09-17 方法区
方法区 jvm的一个概念,落地实现是永久代和元空间jdk8以前是永久代,8以后是元空间,用的本地内存。方法区主要就是存储一些类信息,class文件里的东西,被类加载器加载后,都会变成数据存到方法区jdk6的时候 静态变量存在永久代7的时候,字符串常量和静态变量存在堆8的时候,元空间替换永久代,字符串和静态变量还是在堆...原创 2020-09-17 18:51:12 · 69 阅读 · 0 评论 -
2020-08-18 JVM 堆
堆,个个线程共享区,共享,就存在着线程安全问题。gc的主要作用域就是堆。堆分为三部分 年轻代,老年代(前两者默认比例1:2),永久代(8以后叫元空间)。年轻代又分为伊甸园区(圣经里亚当和夏娃创造人类的地方),幸存者1区,幸存者2区。默认占比8:1:1参数设置 堆的大小 -Xms -Xmx当伊甸园区满的时候,会触发monir gc,当老年代满的时候会触发majir gc,full gc是年轻代,老年代,方法区都回收7以后jvm默认开启逃逸分析,只在方法内用到的对象,会分配在栈中,执行效率高,不用gc原创 2020-08-18 07:55:42 · 113 阅读 · 0 评论 -
2020-08-07 jvm 栈
jvm 类加载系统学完了,关键词:双亲委派过渡:pc寄存器,存储执行引擎要执行的下一条指令地址。栈:线程独有,一个线程一个。栈中已栈桢为单位,一个方法对应一个栈桢。设置栈的大小:...原创 2020-08-07 07:52:33 · 102 阅读 · 0 评论 -
2020-07-27 redis笔记
redis学完了,学了两遍,看不同的人讲课,感觉大家对于redis的重点都在五种数据类型上。今天记录一下redis的事务,主从复制,哨兵模式,和redis集群redis事务,就是一次性批量执行多条命令,multi开启事务 exec执行事务,执行期间如果有执行错误,事务不会回滚,但是如果在编译期间就出错(比如命令输错了,找不到)那整个事务不会执行...原创 2020-07-27 08:05:22 · 70 阅读 · 0 评论 -
2020-07-08 redis
喜欢的人,不喜欢你,是人生中最痛苦的事吗?看样子并不是,但是依然心很痛啊。原创 2020-07-08 18:34:48 · 99 阅读 · 0 评论 -
2020-06-27 tomcat
tomcat 知识巩固加强串联当一个请求过来时,被web服务器的操作系统所接收,tomcat这时需要从操作系统中把数据读取出来。操作系统提供socket接口用于发起和接收TCP链接,所以tomcat要从socket中获取数据。根据http协议,按照请求行,请求头,空行,请求体的规则解析数据。生成request对象。将request对象给容器。这时候,容器根据请求/IP 定位是哪个host。根据/项目名 定位是哪个context。根据/URL 定位是哪个servlet。容器的内部结构大致怕表原创 2020-06-27 12:14:11 · 133 阅读 · 0 评论 -
2020-06-23 NGINX整理
又开始了在家办公的日子周末把nginx系统的学习了一遍,在此做一下笔记,记住多少写多少→_→nginx 有4个主要知识点需要掌握:反向代理,负载均衡,动静分离,高可用。反向代理:就是客户端直接访问代理服务器,代理服务器再将请求转发给应用服务器,和正向代理的区别,正向代理需要客户端配置一个代理服务器,用户请求的地址还是应用服务器,并不是代理服务器。如何配置呢?在Server块中配置IP和Port,location块配置转发的地址即可...原创 2020-06-23 12:12:00 · 109 阅读 · 0 评论 -
2020-06-16 JAVA基础
反射,就是利用类加载器生成的Class对象,获取类信息,据说是框架的灵魂枚举,就是定义一些常量,可以和策略模式一起使用,策略模式就是把ifelse中的代码换成一个个实现类,但是这个模式不完美,它需要用户明确知道要调用哪个,所以,可以利用枚举的常量映射实现类,使代码自动化泛型,分为泛型类,方法,通配符...原创 2020-06-16 19:05:13 · 234 阅读 · 0 评论 -
2020-06-15 JVM
这周表白被拒绝了,哈哈哈哈哈哈哈哈哈哈哈呵呵呵,哎~女生的心思好像比jvm运行原理还难懂jvm 大体上分为 类加载子系统,运行时区,执行引擎,本地方法区(?)周末把类加载子系统学完了,在此做一下总结类加载子系统是干嘛的呢,其实就是将字节码文件加载到内存里整个过程分为 加载,链接,初始化第一步加载中,JAVA存在多个类加载器,有启动加载器bootstrap(c语言写的),ext(扩展类加载器),app(系统类加载器)。。。,这三种是父子关系,类加载时用的是双亲委派机制,其实就是父类先加载,加载不了原创 2020-06-15 07:42:21 · 194 阅读 · 0 评论 -
2020-06-10 JVM
jvm 类加载类加载过程分为三步第一步,加载:将字节码文件加载到方法区,并在内存中生成一个大的class类第二步,链接:(1)校验字节码的正确性(2)准备,给成员变量开辟内存空间,并赋值零值(3)将字节码中的符号引用变成真正的引用第三步:初始化,将类中静态变量,和静态代码块合并,生成一个clinit方法,给变量赋予正真的值...原创 2020-06-10 07:51:05 · 160 阅读 · 0 评论 -
2020-06-06 spring boot 和http
spring boot高级快学完了,主要就是使用spring data框架操作redis和es 再就是rabbitmq,暂时忽略。spring boot中的任务还是很好用的,异步任务,定时任务,四种注解就搞定了,这个得记住,会很方便http协议,电脑间的通信协议,其实就是数据的格式规范,分为请求信息和响应信息请求行(方法类型 请求路径 协议版本)请求头(key value)(空行)请求体(post请求时候用)响应信息:响应行响应头信息(空行)响应体...原创 2020-06-06 22:36:42 · 85 阅读 · 0 评论 -
2020-05-29 设计模式
适配模式解读:官方解读:将一个类的接口适配为用户期待的另一个类的接口。这句话有个误区,就是原本那个类的接口能不能满足你的业务呢,能。那用不用扩展功能呢,不用。单纯的就是在目标类组合一个源类,使用源类的方法。装饰器模式,相对于适配模式的最大区别,就是源类的方法只能满足一部分需求,需要在方法中扩展功能代码...原创 2020-05-29 08:01:09 · 102 阅读 · 0 评论 -
2020-05-27 设计模式
已经两天没有认真学习了,哎~鄙视自己设计模式建造者模式,当一个类的含参构造器过多时,使用适配器模式,使用对象适配器就完啦,正好符合了6大原则最后一条,使用组合代替继承原创 2020-05-27 07:35:58 · 127 阅读 · 0 评论 -
2020-05-25
今天是周一,阴天,昨晚看动漫看到两点,现在脑子有点混沌这个周末学习了吗,学了,学的spring boot数据访问,分为三大块,最底层的jdbc,最流行的mybatis,还有最抽象的jpa,jdbc的整合主要就是配置数据源(数据源支持哪几种看源码),切换自定义数据源,而mybatis和jpa主要就是如何使用了。jpa,一个spring data模块中的统一关系型数据库接口,除了jpa,还有面相redis和mongodb的上周学了一星期的tomcat,勉强学完了,调优这里老师讲的太差,或者说根本没办法讲,原创 2020-05-25 07:48:17 · 199 阅读 · 0 评论 -
2020-05-21 tomcat笔记
jvm参数配置在catalina. sh(启动类也在里边)tomcat集群,ngix和session同步问题设计模式:工厂模式(创建实现同一接口的类)单例模式(创建全局单一实例)原创 2020-05-21 09:09:07 · 157 阅读 · 0 评论 -
2020-05-18 tomcat笔记
周末学了两天tomcat,这里总结一下知识架构树,便于大脑记忆课程前半段分为三个大类tomcat基础tomcat架构Jaspertomcat配置最重要的是tomcat架构,脑海中要有一张图一个Server里有多个service,一个service里有多个连接器connecter和一个容器container,一个容器下有一个引擎,一个引擎下有多个主机host,一个host下有多个web项目context,一个context下有多个wapper(就是servlet)这里连接器可以抽出来成为coy原创 2020-05-18 08:15:24 · 110 阅读 · 0 评论 -
2020-05-15 tomcat组件疑惑,hadoop中mapreduce关键类
最近几天停止了boot的学习,发现在学boot的时候,好多东西原理都没掌握这里记录一下tomcat和hadoop的学习笔记tomcat 中catalina是核心,它的层级就是Server. xml文件,它前面应该还有一个coyote,我的疑惑就是catalina中的connecter 是不是就是coyote,coyote的组件大致就是接受TCP请求,解析http格式数据,适配request和servletresponsehadoop mapper,reducer,proller(数据分发)contex原创 2020-05-15 07:46:44 · 214 阅读 · 0 评论 -
2020-05-13 docker 笔记2
docker search 查询镜像(不推荐)查看官网,运行命令也要参考官网,在示例的基础上增加端口映射原创 2020-05-13 18:14:41 · 104 阅读 · 0 评论 -
2020-05-12 docher笔记1
docker是系统级的吗,不是。是软件级的,将软件安装配置后,打包成镜像文件,扔到docker仓库里,下次不是时候,从仓库里拿,直接启动即可,启动一个,就是一个容器原创 2020-05-12 07:54:49 · 139 阅读 · 0 评论 -
tomcat 笔记1
tomcat是把动态资源转成静态资源传给浏览器,整体架构 server 中有多个 service剪头 ——> service中有多个connecters和一个catalina(connecter中定义线程模型bio,nio,aio)原创 2020-05-12 07:50:49 · 142 阅读 · 0 评论 -
spring boot 中mvc自动配置原理
spring boot 中mvc自动配置原理springmvc原理一个请求过来到TOMCAT,tomcat找到mvc配置的dispacherservlet,将请求给了springmvc,mvc将请求先给handlermapping,获取handler和intercapter,再调用handleradapter 执行handler(也就是controller),返回modelandview,并把它交给视图解析器。mvc自动配置原理查看webmvcautoconfigration源码,可以看到有一个内部原创 2020-05-10 21:39:49 · 189 阅读 · 0 评论 -
spring boot 中servlet容器自动配置原理
嵌入式:要说到servlet容器配置原理,得从springboot启动开始说,运行main方法,初始化ioc容器,加载嵌入式servlet容器工厂(这时候的容器工厂类型要看autoconfigration内注入的是什么样的bean),创建完工厂对象,在赋值之前,后置处理器会将所有的嵌入式servlet容器customer获取到,排序,并调用他们的custom方法,方法里就是给容器属性赋值,最后工厂利用这些属性配置tomcat,并启动它外部容器:根据servlet3.0规范,容器会找jar包中的servle原创 2020-05-10 21:31:23 · 197 阅读 · 0 评论