
日常帮助记忆
文章平均质量分 81
你丫才是码农
这个作者很懒,什么都没留下…
展开
-
八股文之-kafka
kafka能屏蔽各种平台以及协议之间的特性,实现应用程序中间的协同1.异步处理2.流量削峰3.弱一致性事务模型中,实现最大能力通知的方式实现最终一致性异步发送:并不是每次把消息直接发送到broker上,而是把消息放入一个队列,由后台线程不断从队列中取消息发送,成功会触发callback积累一定量的消息批量发送:满足任一条件就会发送batch.size :批量提交的字节大小默认16KBlinger.ms:两次发送间隔时间。groupconsumer group是可扩展的具有容错机制的原创 2021-06-17 20:16:54 · 887 阅读 · 1 评论 -
八股文之-Redis
Redis默认有16个库(0-15),可在redis.conf中修改databases 16默认使用第一个db0, 集群里只能使用第一个dbRedis的存储叫做key-value存储,字典结构,key最大长度限制是512MRedis的数据类型?String Hash Set List Zset Hyperloglog Geo Steeams1.String存储类型:INT(整数) float(单精度浮点数) String(字符串)Redis的最外层是通过hashtabl...原创 2021-06-15 21:28:35 · 356 阅读 · 0 评论 -
关于阻塞与非阻塞 同步与异步的区别
一般来说IO分为两个阶段,第一阶段是等待数据阶段,第二阶段是内核空间的数据拷贝到用户空间,假设一个线程(或是进程)P准备执行一个IO操作的话它会经历以下过程:第一阶段:P发出一个IO请求,这时候会有两种情况:1:立刻返回: 非阻塞2:一直等待,P调用sleep/wait休眠或是挂起,让出CPU给别的线程/进程 阻塞第二阶段:这时内核的数据终于准备好了,那么现在用户进程想要...原创 2018-11-05 17:56:38 · 225 阅读 · 0 评论 -
线程安全和锁优化总结
线程安全和锁优化总结线程安全各种操作共享的数据分为5类1.不可变不可变对象一定是线程安全的若共享数据是基本类型,只要是final修饰的就可保证是不可变的把对象中带有状态的变量都声明为final2.绝对线程安全大多数线程安全的类都不是绝对线程安全3.相对线程安全对一些特定顺序的连续调用,可以需要在调用端使用额外的同步手段保证调用正确性:如Vector HashTable4....原创 2018-05-29 23:41:48 · 275 阅读 · 0 评论 -
java运行期优化
java运行期优化 1.虚拟机发现某个方法或代码块运行的特别频繁,会把它认为是“热点代码”,为了提升执行效率,把热点代码编译成平台相关的机器码 JIT编译器 2.即时编译器: 1.解释器和编译器 需要迅速启动和执行的时候,解释器先发挥作用。时间久了,为了执行效率,编译器发挥作用 HotSpot虚拟机2个即时编译器 Client Compiler和Server Compiler(C1...原创 2018-05-28 01:06:59 · 509 阅读 · 0 评论 -
java编译器优化
java编译器优化1.把java文件转变成呢过class文件的过程2.javac编译器的过程: 1.解析与填充符号表过程 2.插入式注解处理器的注解处理过程 3.分析与字节码生成过程 解析与填充符号表: 1.词法,语法分析:词法分析是将源代码的字符流转变为标记(Token)集合,标记是编译过程的最小元素:int, a, =, b, +, 1 语法分析:根据Token序列来构造抽象语...原创 2018-05-28 00:08:04 · 876 阅读 · 0 评论 -
虚拟机字节码执行引擎
虚拟机字节码执行引擎1.执行引擎在执行JAVA代码的时候可能有解释执行(通过解释器执行)和编译执行(通过及时编译器产生本地代码执行)两种选择2.运行时栈帧结构: 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,是虚拟机栈的栈元素, 存储了局部变量表,操作数栈,动态链接和方法返回地址(指向了一条字节码指令的地址) 1.局部变量表:用于存放方法参数和方法内部定义的局部变量,...原创 2018-05-27 20:08:08 · 163 阅读 · 0 评论 -
虚拟机类加载机制
虚拟机类加载机制1.把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。java的类型加载和连接过程都是在程序运行期间完成的,java天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接实现的。2.类的生命周期:加载,验证,准备,解析,初始化,使用,卸载。 (验证,准备,解析称为连接)虚拟机规定有...原创 2018-05-27 16:39:05 · 178 阅读 · 0 评论 -
Class文件总结
类文件结构虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,都可以载入和执行同一种平台无关的字节码,从而实现“一次编写,到处运行”。除JAVA外也有一大批在java虚拟机智商运行的语言:Clojure,Groovy,JRuby等虚拟机不关心Class来源于什么语言,只要复合Class文件应有的结构就能在java虚拟机中运行Class文件是一组以8位字节为基础单位的二进制流,当遇到需要占用8位...原创 2018-05-26 23:49:43 · 183 阅读 · 0 评论 -
垃圾收集器总结
垃圾收集器1.判断对象已死 1.JVM不用引用计数算法,原因:无法解决对象间相互循环引用的问题 2.根搜索算法: 通过一系列名为“GC Roots”的对象做起点向下搜索,走过的路劲称为引用链 当一个对象到GC Roots没有引用链,则判定对象不可用 GC Roots:1.虚拟机栈(栈帧中本地变量表)引用的对象2.方法表中类静态属性引用的对象3.方法区...原创 2018-05-22 13:17:06 · 293 阅读 · 1 评论 -
JVM内存模型总结
jvm运行时数据区域总结:1.程序计数器:当前线程所执行的字节码的行号指示器(线程私有) 如果线程正在执行的是native方法,该计数器值为空。 该区域是唯一没有outOfMemoryError的区域。2.java虚拟机栈:描述方法执行的内存模型(线程私有) 方法执行时创建栈帧(栈帧存储着局部变量表:包括方法的入参,方法的局部变量;操作栈;动态链接;方法出口:即方法的返回地址) 方法从调用到...原创 2018-05-15 13:31:56 · 202 阅读 · 0 评论 -
虚拟机性能监控理论和操作
虚拟机性能监控与分析处理工具JDK命令行工具:jdk \bin 路径下,大多是jdk\lib\tools.jar类开的一层包装1.jps:列出正在运行的虚拟机进程,显示虚拟机执行主类函数所在类的名称,以及虚拟机进程的唯一ID如果同时启动了多个虚拟机,根基进程名称不好区分,可以通过jps显示主类的功能区分(jps -l)2.jstat:监视各种运行状态信息,没有图形界面时,时运行期定位虚...原创 2018-05-25 00:18:56 · 1068 阅读 · 0 评论 -
try{},finally{}代码块执行顺序记录
原创 2018-01-19 14:47:21 · 371 阅读 · 0 评论 -
volatile关键字小结
“观察加入volatile关键字和没有加入volatile关键字时所生成的汇编代码发现,加入volatile关键字时,会多出一个lock前缀指令” lock前缀指令实际上相当于一个内存屏障(也成内存栅栏),内存屏障会提供3个功能: 1)它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完原创 2017-11-14 11:13:50 · 297 阅读 · 0 评论 -
关于二进制的一些总结
1.正负数的二进制表示方法:正数:默认为int类型(4字节32位)5:00000000 00000000 00000000 00000101负数:以正值的补码形式表示 原码:一个整数,按照绝对值大小转换成的二进制数 反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码 补码:反码加1称为补码-原创 2017-09-28 16:52:19 · 2241 阅读 · 6 评论