
java 基础
文章平均质量分 65
hellowbin
这个作者很懒,什么都没留下…
展开
-
并发锁分析
锁为什么加锁并发会造成数据混乱事务原子性a一致性c隔离性i持久性d加锁的影响和优化点线程切换的开销(缓存命中率)加锁失败会进行线程切换用户态和内核态的切换开销(栈的切换/寄存器切换)synchronized重量锁的实现是 系统调用 会涉及到内核和用户态的切换(加锁成功和失败都会切换)cas保证原子性,避免系统调用cas 无系统调用加锁粒度 从表->段->行互斥到共享锁存在的问题死锁指标和分类同步和异步(阻塞和非阻塞和带超时的阻塞)互原创 2022-05-07 00:25:55 · 535 阅读 · 0 评论 -
mysql隔离级别
mysql 隔离级别未提交读事务未提交之前就已经可以被读取到可能有脏读的问题脏读:比如 a=0事务1 修改 a=1事务2 读取 a=1事务1 取消 a=0事务2 结束 a=1 与 a=0 不一致已提交读事务提交之后才能被另一个事务读取或是修改解决了脏读的问题 但是有幻读和不可重复读的问题不可重复读:比如a=0事务1 修改 a=1事务2 读取 a=0事务1 提交 a=1事务2 读取 a=1 两次读取的值不一样幻读-1:比如a=0事务1 插入 b=0事务2 读取 b原创 2021-07-14 00:57:16 · 109 阅读 · 0 评论 -
java引用类型和对象回收
java 引用和垃圾回收流程判断一个对象是否可以被回收首先要 判断是否有指向对象的引用如果没有引用 直接回收然后判断是否有强引用(可以有多个)如果有至少1个强引用 则不回收如果没有强引用 判断是否有软引用如果有软引用 判断jvm内存是否超出如果超出 就回收这个对象 将弱引用加入到引用队列如果没有超出 或者 没有软引用 就判断是否有弱引用如果有弱引用 直接回收 并且将弱引用加入到 引用队列10.如果没有弱引用 判断是否有虚引用 (虚引用对垃圾回收没有影响 只是jvm对原创 2021-04-23 01:44:35 · 182 阅读 · 0 评论 -
jvm虚拟机
jvm首先从计算机原理角度理解jvm存储指令,并顺序执行指令可知:任何程序都应包括代码段和数据段以及PC寄存器对应于jvm中jvm结构代码段:方法区 主要存储java的一些方法数据段:堆虚拟机栈本地方法栈PC寄存器程序计数器虚拟机栈和本地方法栈:jvm的虚拟机栈和本地方法栈可以类比操作系统的用户栈和内核栈jvm是c++写的,jdk中内置了一些c++的方法,称为本地方法调用这些方法,就需要另外的一套栈帧来存储局部数据堆和栈:堆存放的是全局数据任何一段代码段都可原创 2021-03-24 01:50:31 · 159 阅读 · 0 评论 -
Spring循环依赖
Spring循环依赖问题spring对象的生成分2步未创建 需要对象工厂创建 对应spring3级缓存 3级缓存主要是对象工厂实例化 调用构造方法 对应spring的2级缓存初始化 调用set方法 对应spring的1级缓存class A { B b;}class B{ A a;}首先 创建a对象,new A() 放入2级缓存setB(b)new B 放入2级缓冲setA 从1级缓存没有找到A对象 然后从2级缓存找到了A对象 然后B对象的初原创 2021-03-23 01:04:50 · 84 阅读 · 0 评论 -
HashMap笔记
HashMap删除参数key 必须value 可选流程数组为null 数组长度为0 或者 索引处的值为null 说明没有命中 返回nullif ((tab = table) != null && (n = tab.length) > 0 && (p = tab[index = (n - 1) & hash]) != null) { //链表存在 } return null;如果原创 2021-03-22 01:05:40 · 140 阅读 · 0 评论 -
java io笔记
ioio主要包括2个操作等待可读(写) 读(写)其中读(写)的耗时特别短,性能损耗主要在等待就绪上等待可读的原因用户缓冲区的旧内容还未拷贝到系统空间系统空间的旧内容还未拷贝到硬件硬件不可用bio一个连接(socket)一个线程连接不可读或者写 线程阻塞切换到其他线程,处理其他的可读写的连接问题大量的连接需要大量的线程线程切换浪费资源优点使用简单niohttps://tech.meituan.com/2016/11/04/nio.html一个线程处理原创 2021-02-27 17:25:27 · 104 阅读 · 0 评论 -
nginx 使用笔记
nginxnginx是一个高性能 轻量级 的web服务器主要是静态服务器,可以支持动态请求的转发采用多进程模型文档负载均衡upstream模块upstream用在http/server模块下7层负载均衡配置方案url_hashupstream server-test{ #hash $request_uri consistent; server 127.0.0.1:8081; server 127.0.0.1:8082;}原创 2021-02-27 17:20:52 · 143 阅读 · 0 评论 -
java 安全模型
java 安全模型链接链接组成安全管理器SecurityManage访问控制器AccessController类加载器ClassLoader基于域的安全模型代码源CodeSource类生命从哪里加载类 指定类加载器权限Permission 是 AccessController 类处理的基本实体一个实例代表一个具体的权限public final class FilePermission extends Permission implements Serializable {原创 2021-02-27 17:19:31 · 260 阅读 · 0 评论 -
Tomcat Filter流程
Spring Filter使用实现filter接口public class A implements java.servletx.Filter{ private FilterConfig filterConfig = null; @Override public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig;原创 2021-02-27 17:18:12 · 1034 阅读 · 0 评论 -
Tomcat 请求处理流程
tomcat 请求处理executor线程池connector关键属性EndPointAcceptorPollerProtocolHandlerAdaptor一个connector支持一个协议 不同的协议进入不同的connector当然同一个协议也可以有多个connector 端口号不同connector 向下和协议栈交互 处理 socket 向上绑定container 同engine交互封装request 和 response对象 交付给container的p原创 2021-02-27 17:14:30 · 241 阅读 · 0 评论 -
Tomcat 启动流程
tomcat架构Serverserver是tomcat的顶级容器 tomcat的生命周期由server控制一个tomcat可以有1个server一个server可以有多个serviceServiceservice是server的子容器 由Connector和Container组成一个server可以有多个service一个service包含多个Connector和1个ContainerConnectorContainer(Engine)HostContext原创 2021-02-27 17:12:13 · 321 阅读 · 0 评论 -
HTTPS
HTTPSHTTPHTTPSTLS密钥管理密钥协商/密钥交换加密管理签名管理认证管理TLS的流程HTTPS的流程相关概念对称加密算法AESDES3DESRC4非对称加密算法RSAECDHHTTPhttp是超文本传输协议,工作在tcp协议之上HTTPShttps是安全的超文本传输协议https由2部分组成 http协议+tls协议TLStls是安全传输层协议,要保证安全就要实现安全的5要素:可用性 - 劫持机密性 - 私钥加密,公钥解密真实性 - 中间人完整性 - hash校验不可否原创 2021-01-02 00:56:17 · 887 阅读 · 0 评论 -
关于java static关键字的理解
static 修饰的变量称为类变量或全局变量或成员变量,在类被加载的时候成员变量即被初始化,与类关联,只要类存在,static变量就存在。一个static变量单独划分一块存储空间,不与具体的对象绑定在一起,该存储空间被类的各个对象所共享。也就是说当声明一个对象是,并不产生static变量的拷贝,而是该类所有的实例对象共用同一个static变量。非static修饰的成员变量是在对象new出来的时候划...转载 2018-06-12 02:26:13 · 117 阅读 · 0 评论