09 2020 档案
摘要:先看官网。。。。。 https://spring.io/projects/spring-boot 总览 通过Spring Boot,可以轻松地创建独立的,基于生产级别和基于Spring的应用程序,并且可以“运行”它们。 我们对Spring平台和第三方库坚持自己的的观点,因此您可以以最小的麻烦开始使用
阅读全文
摘要:一、进程:计算机分配资源的基本单位-独立的内存空间;比如QQ 父子进程:参考redis中的持久化方案,涉及的fork() :https://www.cnblogs.com/gabin/p/13666134.html 父进程 fork() ->子进程 数据隔离(写时复制,没写之前只是个副本) 僵尸进程
阅读全文
摘要:纯文本描述,时间有限,就不再另行搞图了,以后如果有需要再补充就是,现在本地版的Visual Paradigm还用不熟,processon的话也可以画,到时候看如果说以后需要培训新人或者做技术共享的时候再补充吧 注意:我这边大部分的博客都是为了记录给自己看的,并非为了让大家能一眼看明白,毕竟这玩意不是
阅读全文
摘要:一、隔离级别参考:https://www.cnblogs.com/gabin/p/13457612.html 二、锁 类型: 表共享读锁(MyIsAM):只与共享锁共存 表独占写锁(MyIsAM):任何锁都不能共存,只能等 共享锁(S)- InnoDB:只能与共享锁共存 排它锁(X)- InnoDB
阅读全文
摘要:可以用客户端连接后通过命令来查看: show variables; show variables like '%connection%'; 参考地址:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html 一、通用(G
阅读全文
摘要:一、分区概念: mysql目前应该是只支持水平分区,一般的水平分区如果是表,则相当于原来存储在一个文件的表分为多个文件 应用场景: 单个分区维护更容易 文件分布到不同硬件 避免瓶颈,比如数据量过大导致文件存储限制或者访问速度问题 innoDB单独索引的互斥访问(初步理解是分区把索引也分了,所以基于索
阅读全文
摘要:查询慢的原因 网络&IO(集群) CPU IO - 临时表、文件排序,查询数据量 上下文切换 生成统计信息(Performance_Schema 、Profile等) 锁等待时间 - 并发场景(表锁、行锁 | 读锁、写锁 | 【InnoDB-锁的对象:索引】共享锁、排它锁 | 【MyIsAM】共享锁
阅读全文
摘要:1、Using join buffer (Block Nested Loop) 例如A表 Join B表,如TYPE类型是ALL或Index时候,则可以使用连接缓存(Join Buffer) 官方示例代码: for each row in t1 matching range { for each r
阅读全文
摘要:参考:https://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html 索引(Indexs) 一、作用(轻定义):索引用于快速查找具有特定列值的行。没有索引,MySQL必须从第一行开始,然后通读整个表以找到相关的行。表越大,花费时间越长。如果表中有
阅读全文
摘要:一、官方:https://dev.mysql.com/doc/refman/8.0/en/explain-output.html 二、语句: explain select * from tableName; id:执行的顺序,数值大的优先执行 select_type:查询类型,方式 select_t
阅读全文
摘要:一、无监控不性能 show profile(s) [set profiling=1] performance_schema (show) processlist 二、数据更小的数据 varchar 满足需求的最小数据类型(存储数据大小和占用空间大小是不一样的) 空间占用更小 char 最大长度 25
阅读全文
摘要:1、show profile(s) 查看语句的整个执行时间片 https://dev.mysql.com/doc/refman/8.0/en/show-profile.html set profiling=1 show profile for query id show profile cpu fo
阅读全文
摘要:编程最重要的两个思想: 分层 分而治之(递归) 虽说我们写的软件客户端有可能是纯单机的,但目前的互联网时代,几乎不太可能有完全不连接网络的应用。 开放式系统互联通信参考模型(OSI) 1、思考如果带下一个路由IP则无法访问到百度,带了百度IP,则如何访问下一个路由的IP(通过MAC地址) 2、路由掩
阅读全文
摘要:由于是用docker安装的ubuntu16.04,所以一些非必要的包并未被安装 一、natstat: net-tools包(apt-get install net-tools) 网络状态查看,可以查看一些端口的监听和链接状态 # n表示不解析dns,a表示显示所有,t表示tcp协议,p显示正在使用S
阅读全文
摘要:一、定义:基于消息传递的【一致性算法】 二、算法的前提:没有拜占庭将军问题;可信的计算机环境中才成立 三、故事描述 有一个叫做paxos的小岛,上面居住了一些居民 岛上的事情由一些特殊的人决定:议员(senator) 岛上环境事务的变更都需要通过一个提议(Proposal),每个提议都有一个编号(P
阅读全文
摘要:一、官网:https://zookeeper.apache.org/ 二、定义:分布式应用程序的分布式协调服务(提供一个看起来像是单机,实际上不是单机的服务;比如分布式锁) 三、设计目标 简单:性能要求、严格的顺序(适合同步原语-分布式锁) 复制:主从模式 从上可以看出这是一个主从模式,且路由在服务
阅读全文
摘要:前提条件:高并发 一、缓存穿透: 概念理解: 解决思路: 布隆过滤器:性能不错和存储量可控(不大),使用bitmap位图实现,一个字节8个二进制位;不能删除。只能保证一定不存在,不能保证是否真实存在 布谷鸟过滤器:指纹+布谷鸟特性-把蛋下到别人的窝里=》本质:争抢位置 二、缓存击穿 概念理解: 解决
阅读全文
摘要:一、参考资料:http://redis.cn/topics/cluster-tutorial.html 二、通过源码utils中的脚本创建示例 如:/opt/redis-6.0.8/utils/create-cluster 里面也有个README,先看这个文件 1. Edit create-clus
阅读全文
摘要:安装参考:https://www.cnblogs.com/gabin/p/13652357.html 我这边同样通过redis源码的utils目录下的安装脚本,总共安装了6个服务 3个做主从,1主2从(6379 6380 6381) 3个做哨兵(26379 26380 26381) 上面就不再描述了
阅读全文
摘要:一、参考网址 源码:https://github.com/joyieldInc/predixy readme:https://github.com/joyieldInc/predixy/blob/master/README_CN.md 二、安装(普通分片) 1、这边就直接下载安装包了,因为上面编译提
阅读全文
摘要:还是一样,先参考https://www.cnblogs.com/gabin/p/13652357.html创建一个docker下的ubuntu16实例 在这个实例下进行试验, twemproxy参考:http://redis.cn/topics/partitioning.html 一、进入githu
阅读全文
摘要:这个问题是一个面试官问到的 到现在我也没明白,他具体要问哪个? -- 最近翻邮件的时候看到有人说还是有区别的,就又去瞄了一眼 有查了一些资料 本来大概也知道旧版的HashMap基本上就是传统的数组+链表的方式实现, 1、对key进行hash算法,取模,比如取模20,那么数组的长度就是20 2、那么如
阅读全文
摘要:1、RDB:快照-纯缓存使用可只用RDB作为持久化方案,甚至不持久化 时间点问题:比如 8:00开始快照,8:10分才快照成功,那么快照的是8:00还是8:10分的数据 方式: save 【命令】 bgsave 【命令】- fork[linux]另起一个子进程,数据隔离(写时复制)进行数据快照 sa
阅读全文
摘要:在搭建redis服务的基础上:https://www.cnblogs.com/gabin/p/13652357.html 一、从官网找到module,https://redis.io/modules 二、布隆过滤器源码:https://github.com/RedisBloom/RedisBloom
阅读全文
摘要:先了解下事务的相关命令(redis-cli支持tab自动补全): 0、准备知识 MULTI:事务开启 EXEC:事务提交 WATCH:监控变量,如果变量改变,则不执行事务操作 DISCARD: 放弃事务中的命令,与EXEC排他 ps:MULTI和EXEC两者之间的操作将为原子性操作 启动两个客户端,
阅读全文
摘要:1、数组api lpush array 1 2 3 4 5 lindex array 2 2、栈api lpush stack 1 2 3 4 5 lpop stack lrange stack 0 -1 3、队列api lpush queue 1 2 3 4 5 rpop queue 4、阻塞队列
阅读全文
摘要:help @string 一、设置 setbit bitName 1 1 setbit bitName 8 1 二、查看(位图对应一个字节,8位,所以设置偏移位置8为第二个字节的起点,所以长度是2) 三、应用场景:用于统计登录天数、点赞、评论数 四、优点:存储占位小,操作速度快 例子: 1、key
阅读全文
摘要:写在前面,这边只是我个人的推导思路,由于个人知识水平有限,怕误导人,故在此提醒,此文中的推导有可能是错误的,仅仅是一个个人思路记录 这个其实也是一个面试题 记得比较早之前,比较粗浅的几个回答是 redis基于内存,所以更快(内存比硬盘快) redis是单线程,少了线程切换的花销,且其性能瓶颈在带宽(
阅读全文
摘要:1、redis官网:https://redis.io/ 2、先用Docker启动一个ubuntu16.04(由于之前公司都是用这个,就先且用这个测试吧) docker run -i -t ubuntu:16.04 /bin/bash 3、先更新下apt apt-get update 4、安装wget
阅读全文
摘要:一、强引用(GC不会被回收) 代码: package top.gabin.concurrent.reference; /** * 强引用 * -XX:+PrintGC -Xms11m -Xmx11m * */ public class StrongReference { public static
阅读全文
摘要:1、地址:https://github.com/alibaba/arthas/blob/master/README_CN.md 2、上述地址直接就有很多例子,还有安装方法,也没啥好写的。 最喜欢用的是redefine,这个原理大致应该是ClassLoader重新加载类信息去替换的。因为使用命令cla
阅读全文
摘要:GC常用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间 -XX:+UseTLAB 使用TLAB,默认打开 -XX:+PrintTLAB 打印TLAB的使用情况 -XX:TLABSize 设置TLAB大小 -XX:+DisableExplictGC System.gc()
阅读全文
摘要:CMS的问题 Memory Fragmentation(内存碎片过多,导致启动单线程serial垃圾回收器) -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction 默认为0 指的是经过多少次FGC才进行压缩 Floatin
阅读全文
摘要:https://www.cnblogs.com/liugh/p/7620336.html
阅读全文
摘要:1、远程启动设置参数 java -Djava.rmi.server.hostname=192.168.17.11 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=11111 -Dcom.sun.management
阅读全文
摘要:调优前的基础概念: 吞吐量:用户代码时间 /(用户代码执行时间 + 垃圾回收时间) 响应时间:STW越短,响应时间越好 所谓调优,首先确定,追求啥?吞吐量优先,还是响应时间优先?还是在满足一定的响应时间的情况下,要求达到多大的吞吐量... 一般1.8之后,暂且默认G1就可以了,综合性比较强。其他新代
阅读全文
摘要:JVM的命令行参数参考:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html HotSpot参数分类 标准: - 开头,所有的HotSpot都支持 非标准:-X 开头,特定版本HotSpot支持特定命令 不稳定:-X
阅读全文
摘要:-XX:+UseSerialGC :Serial New (DefNew) + Serial Old 小型程序。默认情况下不会是这种选项,HotSpot会根据计算及配置和JDK版本自动选择收集器【1.2之前默认的】 -XX:+UseParNewGC = ParNew + SerialOld 这个组合
阅读全文
摘要:GC的基础知识 1.什么是垃圾 C语言申请内存:malloc free C++: new delete c/C++ 手动回收内存 Java: new ? 自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种类型的问题: 忘记回收 多次回收 没有任何引用指向的一个对象或者多个对象(循环引
阅读全文
摘要:指令集分类 基于寄存器的指令集 基于栈的指令集 Hotspot中的Local Variable Table = JVM中的寄存器 Runtime Data Area PC 程序计数器:由于存在线程切换,线程需要有自己的程序计数器来记住指令执行到的位置【线程私有】 存放指令位置 虚拟机的运行,类似于这
阅读全文
摘要:对象大小(64位机) 观察虚拟机配置 java -XX:+PrintCommandLineFlags -version 普通对象 对象头:markword 8 ClassPointer指针:-XX:+UseCompressedClassPointers 为4字节 不开启为8字节 实例数据 引用类型:
阅读全文
摘要:JMM 硬件层数据一致性 intel 用MESI https://www.cnblogs.com/z00377750/p/9180644.html 现代CPU的数据一致性实现 = 缓存锁 + 总线锁【早期的唯一实现】 读取缓存以cache line为基本单位,目前64bytes 位于同一缓存行的两个
阅读全文
摘要:1:类加载-初始化 加载过程 Loading 双亲委派,主要出于安全来考虑 LazyLoading 五种情况 –new getstatic putstatic invokestatic指令,访问final变量除外 –java.lang.reflect对类进行反射调用时 –初始化子类的时候,父类首先初
阅读全文
摘要:JVM 1:JVM基础知识 什么是JVM JVM是一种规范 也是一种运行在操作系统之上的虚拟操作系统,也叫虚拟机;当然也存在一种基于硬件的JVM实现(具体的名字有点忘记了),这种作者自己理解的话认为也算是操作系统了 常见的JVM Oracle HotSpot(原SUN,不过也是收购来的),虽然是商用
阅读全文

浙公网安备 33010602011771号