- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 Mysql事务
1.buffer pool mysql最大的缓冲区,page都放在里面默认大小128M,相当于缓存2.page进来后先存入free链表3.free链表记录buffer pool 哪些位置是空的指针4.buffer pool 放不下的时候会将最近最少的控制块删了用的是lru5.Lru链表最前面的节点就是最常用的节点6.换血的意思用不常用的数据替换了buffer pool 里面的热数据7.lru链表又分为热数据和冷数据,如下图前面5个是热的后面3个是冷8.9.当冷数据在大于1秒的时间又再次被访问
2021-09-21 21:56:44 79 1
原创 arthas 常用命令
1.arthas thread - b 查询死锁2.jmap - histo 服务端口号 | head 20 取这个服务前20内存占用最多的内存对象3.jmap -dump:format=b,file=20170307.dump 16048file后面的是自定义的文件名,最后的数字是进程的pid。4.dump导出来 用visual加载 选择类选项查看具体情况5.arthas jad +类名 = 反编译成代码 主要用在查看现在线上环境的代码6.redefine +类名 = 热部署..
2021-09-21 21:56:00 560
原创 jvm小结
1.jvm组成部分:类加载器,运行数据区也就是内存,字节码执行引擎2.虚拟机栈也就是线程栈,jvm给方法单独开辟一个空间,栈针可以理解为栈的id3.先分配的内存最后释放4.操作数栈是给放入栈的局部变量赋值运算的临时栈5.程序计数器的值是由执行引擎修改的6.栈里面有栈针,通过指针引用就可以找到堆里面的对象7.本地方法栈的空间也是在线程栈里8.元空间里是常量静态变量,类信息9.对象先存到eden区 满了之后由执行引擎开启垃圾收集minor gc10.可达性分析也就是以gc root 查找对象引
2021-09-21 21:54:46 95
原创 mysql结构
1.mysql 的b+树结构 底层的叶子结点的指针是双向的目的是为了范围查找。2.mysql里的节点是Page,大小16k3.Int类型4b大小 s字符串4.查找数据mysql进行磁盘io,把数据放入内存,cpu操作线程从内存中取出5.mysql数据会把数据一次性查找出放入page中6.插入磁盘的时候实际上是插入page对象7.Mysql插入的时就进行了排序8.根据页目录查找,页目录存放最小值9.innerdb 是六条对应一组10.总之如果查找一个page就是一次io查找所有数据放入内存,
2021-09-21 21:49:35 69
原创 AQS+ReentrankLock
AQS+ReentrankLock介绍什么是AQS?AQS是JUC包下的一个同步队列器,他是大部分并发工具类的核心。AQS的作用AQS的主要作用是使用state去控制资源数,并使用队列去维护没有获取到资源的线程。他使用模版方法设计模式把操作资源的方法交给子类实现,其中最典型的实现就是ReentantLock。AQS的应用场景线程协作Semaphore、CountDownLatch、(CyclicBarrier没有,内部使用lock好像**)线程安全ReentrantReadWriteLo
2021-09-21 21:46:29 107
原创 订单模块优化
一、Redis缓存的使用场景1.页面缓存页面缓存的主要思路为,将一些用户经常请求的页面,例如/goods/to_list–商品列表页面,存储到redis缓存中,在用户请求的时候直接在缓存中获取并返回,如果取缓存失败,则利用thymeleaf的手动渲染,渲染后存入缓存,并且返回。我们可以很明显的知道,不使用页面缓存的请求,每次都先访问数据库,然后经thymeleaf渲染,然后返回,其中渲染的过程可能需要从磁盘中读取html模板,而使用页面缓存以后,直接在内存缓存中读取,无需查库和渲染,只有失效的情况下才需
2021-02-27 10:43:56 224
原创 日常收集
日常收集jsonobject中取出jsonarray然后遍历jsonarray放进pagefilter Listlist去重List按属性排序(比较器)jsonobject中取出jsonarray然后遍历JSONArray ids=parameter.getJSONArray(“ids”);if (ids.size()>1) {ids.stream().forEach(id -> {CloudPlatform cloudPlatform = platformJPA.findById(i
2021-02-27 09:05:22 87
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人