- 博客(18)
- 资源 (1)
- 收藏
- 关注
原创 k8s安装部署
镜像源切换 mv CentOS-Base.repo CentOS-Base.repo.bak.0417 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo docker安装 repo源安装 wget -o /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo 替换源
2022-05-08 19:22:06
291
原创 并发锁分析
锁 为什么加锁 并发会造成数据混乱 事务 原子性a 一致性c 隔离性i 持久性d 加锁的影响和优化点 线程切换的开销(缓存命中率) 加锁失败会进行线程切换 用户态和内核态的切换开销(栈的切换/寄存器切换) synchronized重量锁的实现是 系统调用 会涉及到内核和用户态的切换(加锁成功和失败都会切换) cas保证原子性,避免系统调用 cas 无系统调用 加锁粒度 从表->段->行 互斥到共享 锁存在的问题 死锁 指标和分类 同步和异步(阻塞和非阻塞和带超时的阻塞) 互
2022-05-07 00:25:55
545
原创 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
116
原创 java引用类型和对象回收
java 引用和垃圾回收 流程 判断一个对象是否可以被回收首先要 判断是否有指向对象的引用 如果没有引用 直接回收 然后判断是否有强引用(可以有多个) 如果有至少1个强引用 则不回收 如果没有强引用 判断是否有软引用 如果有软引用 判断jvm内存是否超出 如果超出 就回收这个对象 将弱引用加入到引用队列 如果没有超出 或者 没有软引用 就判断是否有弱引用 如果有弱引用 直接回收 并且将弱引用加入到 引用队列 10.如果没有弱引用 判断是否有虚引用 (虚引用对垃圾回收没有影响 只是jvm对
2021-04-23 01:44:35
189
原创 jvm虚拟机
jvm 首先从计算机原理角度理解jvm 存储指令,并顺序执行指令 可知: 任何程序都应包括 代码段和数据段以及PC寄存器 对应于jvm中 jvm结构 代码段: 方法区 主要存储java的一些方法 数据段: 堆 虚拟机栈 本地方法栈 PC寄存器 程序计数器 虚拟机栈和本地方法栈: jvm的虚拟机栈和本地方法栈可以类比操作系统的用户栈和内核栈 jvm是c++写的,jdk中内置了一些c++的方法,称为本地方法 调用这些方法,就需要另外的一套栈帧来存储局部数据 堆和栈: 堆存放的是全局数据 任何一段代码段都可
2021-03-24 01:50:31
166
原创 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
91
原创 HashMap笔记
HashMap 删除 参数 key 必须 value 可选 流程 数组为null 数组长度为0 或者 索引处的值为null 说明没有命中 返回null if ((tab = table) != null && (n = tab.length) > 0 && (p = tab[index = (n - 1) & hash]) != null) { //链表存在 } return null; 如果
2021-03-22 01:05:40
150
原创 java io笔记
io io主要包括2个操作 等待可读(写) 读(写) 其中读(写)的耗时特别短,性能损耗主要在等待就绪上 等待可读的原因 用户缓冲区的旧内容还未拷贝到系统空间 系统空间的旧内容还未拷贝到硬件 硬件不可用 bio 一个连接(socket)一个线程 连接不可读或者写 线程阻塞 切换到其他线程,处理其他的可读写的连接 问题 大量的连接需要大量的线程 线程切换浪费资源 优点 使用简单 nio https://tech.meituan.com/2016/11/04/nio.html 一个线程处理
2021-02-27 17:25:27
110
原创 nginx 使用笔记
nginx nginx是一个高性能 轻量级 的web服务器 主要是静态服务器,可以支持动态请求的转发 采用多进程模型 文档 负载均衡 upstream模块 upstream用在http/server模块下 7层负载均衡配置 方案 url_hash upstream server-test{ #hash $request_uri consistent; server 127.0.0.1:8081; server 127.0.0.1:8082; }
2021-02-27 17:20:52
151
原创 java 安全模型
java 安全模型 链接 链接 组成 安全管理器 SecurityManage 访问控制器 AccessController 类加载器 ClassLoader 基于域的安全模型 代码源 CodeSource类 生命从哪里加载类 指定类加载器 权限 Permission 是 AccessController 类处理的基本实体 一个实例代表一个具体的权限 public final class FilePermission extends Permission implements Serializable {
2021-02-27 17:19:31
267
原创 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
1044
原创 Tomcat 请求处理流程
tomcat 请求处理 executor 线程池 connector 关键属性 EndPoint Acceptor Poller ProtocolHandler Adaptor 一个connector支持一个协议 不同的协议进入不同的connector 当然同一个协议也可以有多个connector 端口号不同 connector 向下和协议栈交互 处理 socket 向上绑定container 同engine交互 封装request 和 response对象 交付给container的p
2021-02-27 17:14:30
251
原创 Tomcat 启动流程
tomcat 架构 Server server是tomcat的顶级容器 tomcat的生命周期由server控制 一个tomcat可以有1个server 一个server可以有多个service Service service是server的子容器 由Connector和Container组成 一个server可以有多个service 一个service包含多个Connector和1个Container Connector Container(Engine) Host Context
2021-02-27 17:12:13
332
原创 HTTPS
HTTPSHTTPHTTPSTLS密钥管理密钥协商/密钥交换加密管理签名管理认证管理TLS的流程HTTPS的流程相关概念对称加密算法AESDES3DESRC4非对称加密算法RSAECDH HTTP http是超文本传输协议,工作在tcp协议之上 HTTPS https是安全的超文本传输协议 https由2部分组成 http协议+tls协议 TLS tls是安全传输层协议, 要保证安全就要实现安全的5要素: 可用性 - 劫持 机密性 - 私钥加密,公钥解密 真实性 - 中间人 完整性 - hash校验 不可否
2021-01-02 00:56:17
905
原创 gcc 参数 笔记
-g 产生调试信息 -E 只做预处理 不会产生输出信息 -S 做预处理和编译 生成汇编程序 .s -c 预处理和编译和汇编,不链接 生成目标文件 .o -o 指定输出的目标文件 -Ixxx 指定搜索头文件的目录(include) -ixxx 指定用xxx头文件 (xxx.h) -Lxxx 搜索库的路径(library) -lxxx 指定用x...
2019-02-02 00:10:33
446
原创 第一个汇编程序
代码描述:用80x86汇编,查询输入方式实现,从某输入设备输入128B并存入首地址为BUFFER的内存缓冲区,输入设备的数据口地址是0008H,状态口地址是0020H,状态口的第D0位是读状态位,D0=1表示输入数据有效。工具介绍: dosbox 模拟dos环境 masm link 和debug的执行环境 masm 编译器 asm->obj link 连...
2018-06-12 02:26:44
365
转载 关于java static关键字的理解
static 修饰的变量称为类变量或全局变量或成员变量,在类被加载的时候成员变量即被初始化,与类关联,只要类存在,static变量就存在。一个static变量单独划分一块存储空间,不与具体的对象绑定在一起,该存储空间被类的各个对象所共享。也就是说当声明一个对象是,并不产生static变量的拷贝,而是该类所有的实例对象共用同一个static变量。非static修饰的成员变量是在对象new出来的时候划...
2018-06-12 02:26:13
121
原创 c指针的理解 (一) * & (int *)
几行代码了解c指针:敲击如下代码:#include <stdio.h> int main(){ int p=5; printf("%d\n",p); printf("%x\n",*(&p)); printf("%x\n",&p); //int *q= 0x62fe44; //printf("%d",*q); return 1; }然后在IDE中打开调试:我
2018-06-12 02:25:07
654
汇编工具 link.exe masm.exe debug.exe dosbox
2018-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人