2 木棉上的光

尚未进行身份认证

公众号:不止于Java Github:https://github.com/cyxpdc?tab=repositories 邮箱:1142439493@qq.com

等级
TA的排名 2w+

JVM底层操作总结:反射、动态代理、lambda、注解等

反射:https://www.cnblogs.com/yougewe/p/10125073.html将Java文件保存到本地硬盘后,编译Java文件,生成.class文件,然后使用JVM将字节码文件加载到内存,字节码文件在内存(方法区)中生成一个Class类表示此Java对象使用反射的时候,首先获取到Class类,这样就可以得到class文件里的所有内容,包含属性、构造方法、普通方法;属...

2020-02-15 23:23:37

JDK序列化原理总结

参考:https://juejin.im/entry/5bf622436fb9a04a0b21cbe7JDK序列化方式中,使用ObjectInputStream#readObject进行反序列化,使用ObjectInputStream#writeObject进行序列化,反序列化稍微复杂点,朋友们可以结合文字看源码ObjectInputStream#readObject:A 判断子类是否重写了...

2020-01-16 12:09:05

11 分库分表

雪花算法:https://www.sohu.com/a/232008315_453160单元化:https://mp.weixin.qq.com/s/pPGppiQAySBEMZja0nwxkA1 为什么需要分库分表传统的项目结构将所有子系统的数据都交给一个mysql,无法支撑这涉及到数据库性能的瓶颈:1 数据库连接数有限:默认100个,单机最大163842 表数据量:单机表数量过多...

2019-12-13 18:02:03

10 Myisam、InnoDB

《MySQL实战45讲》表结构和表数据文件:https://www.cnblogs.com/meitian/p/9886654.html、https://blog.csdn.net/lhanson/article/details/82803947InnoDB架构:https://blog.csdn.net/qqqq0199181/article/details/80659856Myisam和...

2019-12-13 18:01:07

9 表相关

《MySQL实战45讲》https://mp.weixin.qq.com/s/M1dLLuePpdM9vA3F1uJGyw表空间:https://www.jianshu.com/p/48c63241effb1 数据库表的空间回收问题:为什么表数据删掉⼀半,表文件大小不变⼀个InnoDB表包含两部分,即:表结构定义和数据在MySQL 8.0版本以前,表结构是存在以.frm为后缀的文件里;...

2019-12-13 17:58:32

8 关于集群

1 MySQL的主备基本的主备切换流程:M-S结构备库设置成只读,怎么写入主库的写操作,保持同步更新:readonly设置对超级(super)权限用户是无效的,而用于同步更新的线程,就拥有超级权限。update语句在节点A执行,然后同步到节点B的完整流程图:实际生产上使用比较多的是双M结构:这样切换的时候就不用再修改主备问题不过会有一个循环复制问题:业务逻辑在节点A上更新了⼀条语句...

2019-12-13 17:56:59

7 MySQL的维护、性能优化

《MySQL实战45讲》Rows_examined:https://blog.csdn.net/weixin_34332905/article/details/90683568恢复数据库:https://blog.51cto.com/laobaiv1/1960846性能优化:https://www.cnblogs.com/angelica-duhurica/p/11303281.html1...

2019-12-13 17:52:40

6 SQL语句执行过程中的一些question

1 SQL语句突然变慢场景:⼀条SQL语句,正常执行的时候特别快,但是有时它会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。(即MySQL偶尔“抖”一下)当内存数据页跟磁盘数据页内容不⼀致的时候,t称这个内存页为“脏页”。内存数据写⼊到磁盘后,内存和磁盘上的数据页的内容就⼀致了,称为“干净页”;两种页都在内存中。平时执行很快的更新操作,其实就是在写内存和日志;而My...

2019-12-13 17:48:39

5 索引实战

3 普通索引和唯一索引的选择以如图的数据,从这两种索引对查询语句和更新语句的性能影响来进行分析3.1 查询过程假设执行查询的语句是:select id from T where k=5这个查询语句在索引树上查找的过程:先是通过B+树从树根开始,按层搜索到叶子节点,也就是图中右下角的这个数据页,然后可以认为数据页内部通过⼆分法来定位记录。对于普通索引来说,查找到满足条件的第⼀个记录(...

2019-12-13 17:38:12

4 索引

来源:《MySQL实战45讲》为什么使用B+树:https://mp.weixin.qq.com/s/Mwh5T5wQNLrxORLpNvIZoA页的概念:https://segmentfault.com/a/1190000008545713sql语句执行顺序:https://www.cnblogs.com/yyjie/p/7788428.html1 索引模型索引是数据库表的“目录”。...

2019-12-13 17:28:02

3 锁

来源:《MySQL实战45讲》根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。本文介绍碰到锁时的现象和其背后的原理。1 全局锁对整个数据库实例加锁加全局读锁的方法:FTWRLFlush tables with read lock使用这个命令之后,整个库处于只读的状态,其他线程的如下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表...

2019-12-13 17:23:36

2 事务

来源:《MySQL实战45讲》MVCC:https://mp.weixin.qq.com/s/bM_g6Z0K93DNFycvfJIbwQ(MVCC算法图)MySQ Binlog日志格式:https://www.cnblogs.com/baizhanshi/p/10512399.htmlForce Log at Commit:https://www.cnblogs.com/f-ck-nee...

2019-12-13 17:20:04

《趣谈Linux》总结十:虚拟化

37 虚拟化Linux越来越强大了,例如,内存动不动就是百G内存,网络设备一个端口的带宽就能有几十G甚至上百G,存储在数据中心至少是PB级别的(一个P是1024个T,一个T是1024个G)。这自然有了一些不灵活的地方:· 资源大小不灵活:有时候我们不需要这么大规格的机器,可能只想尝试一下某些新业务,申请个4核8G的服务器试一下,但是不可能采购这么小规格的机器。无论每个项目需要多大规格的机...

2019-11-20 09:33:12

《趣谈Linux》总结九:容器化

39 容器容器有一定的隔离,但是隔离性没有虚拟化那么好,仅仅做简单的封装。当然封装也带来了好处,一个是打包,二是标准;容器实现封闭的环境主要靠两种技术:一种是看起来是隔离的技术,称为namespace(命名空间);在每个 namespace 中的应用看到的,都是不同的 IP 地址、用户空间、进程 ID 等。一种是用起来是隔离的技术,称为cgroup(网络资源限制);即整台机器有很多的...

2019-11-20 09:29:18

《趣谈Linux》总结八:网络系统

33 Socket通信无论是用socket操作TCP,还是UDP,首先都要调用socket函数,socket函数用于创建一个socket的文件描述符,唯一标识一个socket;把它叫作文件描述符,是因为在内核中会创建类似文件系统的数据结构,并且后续的操作都有用到它:int socket(int domain, int type, int protocol);三个参数的含义:domai...

2019-11-20 09:26:36

《趣谈Linux》总结七:进程间通信

29 进程间通信29.1 管道模型上一个阶段完全做完,才将输出结果交给下一个阶段“|”就是一个管道。它会将前一个命令的输出,作为后一个命令的输入。管道是一种单向传输数据的机制,它其实是一段缓存,里面的数据只能从一端写入,从另一端读出。如果想互相通信,需要创建两个管道才行。管道分为两种类型:“|” 表示的管道称为匿名管道,意思就是这个类型的管道没有名字,用完了就销毁了。竖线代表的管...

2019-11-20 09:23:14

《趣谈Linux》总结六:输入输出系统

26 输入与输出输入输出系统是一个生态,类比售前售后生态体系,这不仅仅是招聘一些售前和售后员工,而是应该建立一套体系让供应商、渠道帮着卖,形成一个生态。计算机系统的输入和输出系统有:键盘、鼠标、显示器、网卡、硬盘、打印机、CD/DVD等等,多种多样。这样方便用户使用了,但是对于操作系统来讲,却是一件复杂的事情,因为这么多设备,形状、用法、功能都不一样,怎么才能统一管理起来呢?核心思想:加中...

2019-11-20 09:19:06

《趣谈Linux》总结五:文件系统

22 文件系统可以永久保存文件22.1 功能规划需要考虑的问题:1 文件系统要有严格的组织形式,使得文件能够以块为单位进行存储2 文件系统中也要有索引区,用来方便查找一个文件分成的多个块都存放在了什么位置3 如果文件系统中有的文件是热点文件,近期经常被读取和写入,文件系统应该有缓存层4 文件应该用文件夹的形式组织起来,方便管理和查询,即分门别类,形成树形结构,也可以减少命名冲突,因为...

2019-11-20 09:14:10

《趣谈Linux》总结四:内存管理

16 内存管理(上)-规划进程内存空间布局每个进程应该有自己的内存空间。内存空间都是独立的、相互隔离的。对于每个进程来讲,看起来应该都是独占的。16.1 独享内存空间的原理内存都被分成一块一块儿的,都编好了号,这些一块一块的地址是实实在在的地址,通过这个地址我们就能够定位到物理内存的位置;如果所有进程都使用这些地址,同时发生同一个位置的写操作时很容易起冲突所以使用虚拟地址:物理地址对...

2019-11-20 09:10:07

《趣谈Linux》总结三:进程/线程

8 进程管理有了系统调用,就可以开始创建进程了8.1 通过写代码使用系统调用创建一个进程在 Linux 上写程序和编译程序,也需要一系列的开发套件,就像 IDEA 一样;运行下面的命令,就可以在 centOS 7 操作系统上安装开发套件:yum -y groupinstall "Development Tools"在 Windows 上写的程序,都会被保存成.h 或者.c 文件,容易...

2019-11-20 09:01:52

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周上午根据用户上周周三的博文发布情况由系统自动颁发。