自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

文艺委猿学习笔记

整理学习...整理思路

  • 博客(22)
  • 资源 (2)
  • 收藏
  • 关注

原创 Zookeeper 知识1 笔记

Zookeeper分布式部署特点:1.分布性2.对等性3.并发性4.缺乏全局时钟5.随时会出故障分布式部署带来的问题:1.通信异常,网络是不可靠的2.网络分区,脑裂问题3.三态4.节点故障Zookeeper 的使用场景:1.数据发布订阅2.负载均衡3.命名服务 (全局ID)4.Master选举5.集群管理6.配置管理7.分布式队列8.分布式锁集群配置:zoo.cfg中配置server.0=ip:通讯端口:数据端口server.1=ip:通讯端口:

2020-12-04 11:02:23 100 2

原创 Mysql 体系架构,锁,事务分析 执行计划 笔记

Mysql 体系架构json类型json_extract 函数:从一段json中取指定值 json_extract('json','$[1]') 取下标为1的值 json_extract('json','$.name') 取name的属性值 json_object('name','张三','age',22) :将参数转换为json对象json_insert(json,'$.name','李四') 新增或替换原json中的值json_merge(json1,json2) 合并两个json,如果

2020-09-28 09:38:31 96

原创 JVM GC调优/线上问题排查工具篇 笔记

GC调优工具篇工具常用命令jps -l 显示路径 -v 显示虚拟机参数 -m 显示程序参数 jstat-class 类加载情况-gc [pid][循环时间间隔][循环次数] 堆各个区空间情况/各区gc次数/各区gc花费时间jinfo jvm配置信息工具-flags 显示进程的配置参数-flag VM配置项 可以在jvm不关闭的情况下动态修改参数(只针对manageable的jvm参数)jmap-heap 打印堆快照-histo[:live] 打印对象的内存

2020-08-06 22:20:31 271

原创 JVM 类加载机制/类加载器

类加载机制/类加载器类声明周期验证阶段文件格式验证: 基于二进制流,只有这一步是基于二进制流,后续步骤都是基于方法区数据1.魔数: cafe babe 开头2.主次版本是否在当前JVM支持范围3.常量池的常量是否不被支持4.....很多很多规范元数据验证1.类是否有父类,(Object)2.匪类是否继承了被final修饰的类3......各种其他验证字节码验证符号引用验证准备阶段准备静态i解析阶段JVM将常量池内的符号引用替换为直接引用的过程 1.类/接口解析 2

2020-07-31 19:08:30 89

原创 JVM 垃圾回收机制及算法(二) 笔记

JVM垃圾回收二并发标记,三色标记并发标记: 程序一边执行,垃圾回收器一边进行标记三色标记,CMS,G1都使用:1.黑色 表示对象本身及子对象都被扫描过2.灰色 表示对象本身被标记过3.白色 未被扫描到的对象(表示与根对象不可达)三色标记的问题漏标记问题, 本不应该被回收的对象,被回收掉了有个对象C, 被B引用, 还有个对象A垃圾回收器1线程:扫描到A,标记A为黑色,垃圾回收区2线程:扫描到B,标记B为灰色,此时还未扫描到B下的C对象,---!!!!此时,A引用了C, B把

2020-07-28 19:29:51 125

原创 JVM 垃圾回收机制及算法(一) 笔记

JVM垃圾回收 分代回收理论:1.大多数对象都是"朝生夕死" --新生代2.经历过多次GC而没被回收的对象越难以回收 --老年代复制算法 copying1.实现简单2.无内存碎片3.利用率为50%4.需要调整指针Eden区的来源1.基于appel式回收,Eden与s1,s0的比值8:1:1,利用率从50%提升到90%2.提高空间利用率,空间分配担保(由老年代来兜底)标记-清除算法 Mark-Sweep1.位置不连续,会产生碎片2.效率比较低3.需要扫描两次,需要整理碎片

2020-07-26 19:48:19 155

原创 JVM 深入理解内存区域,对象,引用 笔记

JVM 内存区域深入用到的一些VM参数: -Xms30m 堆初始内存-Xmx100m 堆最大内存-XX:MaxMetaspaceSize=30m 最大元空间内存-XX:+UseConcMarkSweepGC 开启-XX:-UseCompressdOops 关闭对象指针压缩JHSDB: 可视化的映射JVM运行信息的工具复制sawindbg.dll 到jdk/bin下目录到lib下,启动: java -cp ./sa-jdi.jar sun.jvm.hotspot.HSDB栈的优化技

2020-07-23 10:52:11 106

原创 JVM 基础概念,内存模型 笔记

JVM 基础运行时数据区–把内存虚拟化1.线程私有区 (虚拟机栈, 本地方法栈, 程序技术器)2.线程共享区(方法区->运行时常量池(1.7 永久代, 1.8 元空间), 堆)3.直接内存常量池1.静态常量池: 记录在class文件 constant pool中的常量2.运行时常量池: class加载中-->符号引用(代码中)转换为直接引用(实际内存地址)字面量String a="1111aaaa";虚拟机栈1.大小限制 -Xss2.栈溢出直接内存(堆外内

2020-07-19 20:05:36 70

原创 线程安全 JMM 底层基础 笔记

JMM:java内存模型伪共享CPU各级缓存带来的问题,伪共享,会影响性能, CPU缓存是按行分割进行存储,称为缓存行,读取缓存是以缓存行为单位进行读取(64byte),是最小的缓存单位多个变量放在同一个缓存行内,同时修改时会互相锁住解锁锁住解锁,就会产生伪共享false sharing问题…避免伪共享, 使用无意义的数据把不满的缓存行填满@sun.misc.Contented 注解 写在类上,避免false sharing,会自动补齐缓存行 , 自定义类想要使用此注解生效, 需要在虚拟机启

2020-07-16 20:07:07 125

原创 ElasticStack ES集群, 路由,别名 笔记

ES集群, 路由,别名节点类型:1.master node (master-eligible node) 主节点,管理节点分片(默认都是),监视子节点状态在elasticsearch.yml 中配置: node.master:true 表示当前节点可作为主节点备选节点2.data node 数据节点,可以保存分片数据, 每个节点不做任何配置默认都是datanode 配置 node.data:false 则表示当前节点可不存数据,(只作为主节点)3.ingest node 用于预处理操作

2020-07-09 18:37:05 648

原创 ElasticStack ElasticSearch 笔记

##ELKElasticSearch+Logstash+Kibana经典场景:大规模集群日志收集分析系统大规模订单数据离线文本搜索分词查询=========================例子: 查询包含某个字的诗句GET {}使用倒排索引: 这些被提取出来的的词叫term(词项)put indexname/_doc/xxx {abc:123,def:xxx} 索引一个文档get indexname/_mapping 获取文档保存的结构(表结构)字符串类

2020-06-16 22:23:33 359

原创 java 并发安全--单例模式 笔记

java线程安全线程安全的单例模式1.双重检查构造函数私有化getInstance()–>实例对象null判断–>加锁->实例对象null判断–>创建并返回instance实例属性前加volatile 关键字, 用于多线程下2.懒汉式2.饿汉式...

2020-06-16 12:01:35 142

原创 mysql 数据库架构篇 数据切分 笔记

数据切分按照功能模块垂直切分缺点:有表需要跨库join…代码要重构(例如:同@Transaction下调用的两个方法分别写入不同数据库…一个事务没法回滚两个库, 会有分布式事务问题)跨库join后分页/排序等问题…水平拆分数据量大了之后,数据分片…如果单点存储已满…就把分片放到不同数据库实例里优点:缺点: 切分规则不好确定–>要根据业务场景来选择分配规则代码复杂度增加分布式事务问题维护成本增加实现: 使用mybatis的Intercepter 执行sql前计算使

2020-05-26 20:09:18 126

原创 mysql 数据库架构篇 数据同步 笔记

mysql 分库分表数据库扩展解决什么问题? -->单点问题热备份多活故障切换负载均衡读写分离常规复制架构(90%以上使用率): master-slavemaster接收写请求slave分布接收所有读请求–>缺点:–1) 单点master问题,–2) slave过多,会影响master性能–3) master机器维护时, 需要把某个slave提成master,选哪个是问题–4) 某个slave提成master之后, 存在当前master和原master数据不一致

2020-05-21 22:47:16 181

原创 java 并发安全浅析 笔记

并发安全线程安全:当有个多个线程访问某个类的时候,不管运行环境采用何种方式调度,或者这些线程如何交替执行,在调用代码中,不需要任何的协调和协同,那么就可以称,这个类是线程安全的线程封闭的几种类型ad-hoc 线程封闭:指维护线程封闭性的职责完全由程序实现来承担。Ad-hoc线程封闭是非常脆弱的栈封闭:在栈封闭中,只能通过局部变量才能访问对象,栈封闭(也被称为线程内部使用或者线程局部使用)比Ad-hoc线程封闭更易于维护,也更加健壮ThreadLocal如何线程安全================

2020-05-19 15:32:01 98

原创 java 线程池介绍及使用 笔记

线程池优点:降低资源消耗(不用频繁创建/销毁线程)提高响应速度(否则:线程创建时间–>运行时间–>销毁时间),只会花费运行时间,与数据库连接池道理一样提高线程可管理性,统一分配调控监管线程池的创建:ExecutorService pool = new ThreadPoolExecutor(2,4,3,TimeUnit.SECONDS,new ArrayBlockingList(10),new ThreadPoolExecutor.DiscardOldestPolicy());

2020-05-18 21:17:30 127

原创 java 并发容器 笔记

java并发容器知识准备:Hash,位运算一般hash算法:(md5,sha-1)摘要算法,取模,取整…hash冲突解决方法:开放寻址再散列链地址法位运算与取模:取模a%(2^n) ==a&(2 ^n-1),所以map中的数组个数一定是2的n次方长度,计算keyhash值时,用位运算定位更快1.7 HashMap 多线程put下死循环分析:resize过程中,旧链表移动到新链表过程,使用的头插法:加到链表的头位置由于resize过程中transfer的线程挂起和执行先后顺

2020-05-17 21:42:54 92

原创 java 对象头markword,显式锁和AQS 笔记

显式锁:Lock接口子类隐式锁:synchronizedLock lock = new XXXLock();lock.lock(); -->加锁,(成功就继续进行,不成功就阻塞等待解锁)lock.unlock(); -->解锁lock.tryLock(); -->尝试加锁 (如果不成功直接就return false;)Lock 与 synchronized 比较可以尝试获取锁,如果获取失败, 可以做些其他事情…过后再来获取锁, 但是synchronized 关键字就会

2020-05-15 22:11:22 340

原创 java OS基本锁,CAS,原子操作类 笔记

CAS(Compare and Swap)简述原子操作:对于一堆操作,要么全部完成,要么全部失败,例如:事务乐观锁思想的一个体现,无锁编程CAS 本质是自旋(死循环),比较旧值是否为期望的值, 如果是,则更新为新值, 如果不是,则重新取旧值作为期望值,重新计算,然后再比较旧值与期望值是否相同…如此反复,直到旧值与期望值相同使用现代CPU都支持的 CAS指令(内存地址, 旧值,新值) 来保证CAS的可靠性,耗时大约0.6ns(纳秒)一次JDK中大量实现CAS机制例:ConcurrentHashM

2020-05-13 20:53:05 310

原创 java 多线程协调工具类 笔记

算法思想–>Fork/Join–分而治之大问题—>分割成小问题, 小问题之间无关联 -->分而治之A, a1,a2,a3,a4–>a1(a3) , a2(a4) , 问题之间有依赖, -->动态规划forkJoin中的工作密取:当同时存在多个任务线程,有线程先完成,那么先完成的线程从未完成的任务列表尾部取一部分处理,处理完成后再放回去ForkJoin,如何使用RecursiveTask(递归任务)/RecursiveAction/ForkJoinTask任务

2020-05-13 16:52:50 126 1

原创 java 多线程基础 线程共享/协作 笔记

进程和线程进程:操作系统进行资源分配的最小单位,进程与进程之间相互独立线程: CPU调度的最小单位,必须依赖于进程存在,一个进程至少创建一个线程,真正执行任务的是线程CPU核心数与线程数的关系:1:1的关系,即表示一个核心同一时间只能对应一个线程CPU时间片轮转(RR调度)机制:支持多线程的基础,可以让CPU轮询处理N多个线程1). 时间片一般大小 50ms,是一个折中的方案, 太大浪费CPU时间, 太小会频繁切换线程(上下文切换,要耗费约20000个CPU时钟周期,太浪费时间)CPU如何

2020-05-12 17:08:14 110

原创 mysql 权限管理-笔记

mysql权限管理赋权限脚本GRANT 权限 ON dbName.表 TO 'USERNAME'@ '用户标识' IDENTIFIED BY '密码' WITH GRANT OPTION;#例子 赋所有权限,所有数据库所有表权限给 admin 用户GRANT ALL PRIVILEGES ON *.* TO 'admin'@ '%' IDENTIFIED BY 'abc123456' ...

2020-05-07 22:32:17 80

mp4ToGif.zip

java版批量mp4转gif工具,需要安装JRE,有运行说明及脚本 java版批量mp4转gif工具,需要安装JRE,有运行说明及脚本 java版批量mp4转gif工具,需要安装JRE,有运行说明及脚本

2020-07-26

webp2png转换器.zip

java版批量webp转png工具,需要安装JRE,有运行说明及脚本 java版批量webp转png工具,需要安装JRE,有运行说明及脚本 java版批量webp转png工具,需要安装JRE,有运行说明及脚本

2020-07-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除