自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小鬼当家的博客

软件开发

  • 博客(21)
  • 收藏
  • 关注

原创 Kafka总结

Kafka总结前言入门简介Topics和logs前言本文是根据网络上的其他文章精简的kafka知识点入门简介它提供了类似于JMS(Java消息服务(Java Message Service))的特性,但是在设计实现上完全不同,它并不是JMS规范的实现kafka集群由多个kafka实例组成,每个实例(server)称为broker(代理人)kafka集群、producer、consumer都依赖于zookeeper来保证系统可用性,zookeeper保存meta信息Topics和log

2021-02-25 10:52:44 175

原创 JVM内存区域介绍

JVM内存区域介绍前言方法区虚拟机栈程序计数器本地方法栈堆区前言首先说JVM内存区域划分为下面的5个部分,5个区域的划分只是Java虚拟机规范里概念性的说法,具体的实现在不同版本的JDK中会有区别我们大多数使用的高版本的JDK虚拟机都是HotSpot(当然不排除 一些大厂开发定制适合自己业务的JVM),它的特点是热点代码探测技术,能够把频繁调用,对程序运行效率影响大的代码动态编译成本地代码运行。参数参考-Xms设置堆的最小空间大小。-Xmx设置堆的最大空间大小。-XX:NewSize设置新生

2021-01-29 01:07:35 180

原创 JDK1.7和1.8 ConcurrentHashMap底层原理介绍

ConcurrentHashMap底层原理前言jdk7 ConcurrentHashMap实现底层结构初始化并发添加元素size方法统计数量jdk8 ConcurrentHashMap实现底层结构前言ConcurrentHashMap是并发安全的HashMap,jdk1.7和jdk1.8中的底层实现有比较大的区别ConcurrentHashMap当然还是一个HashMap,而对于HashMap的底层实现上本文不做赘述,可以看之前的关于HashMap底层原理介绍的文章HashTable是java中比较

2021-01-25 02:21:52 399

原创 JDK1.7和1.8中HashMap的底层原理介绍

JDK1.7和1.8中HashMap的底层原理介绍HashMap jdk1.7 底层原理的介绍数据结构数组容量扩容fast-failHashMap jdk1.8 底层原理的介绍数据结构扩容链表树化HashMap jdk1.7 底层原理的介绍数据结构底层数据结构是数组加链表数组中查找元素的时间复杂度是O(1),get某下标下的元素时直接从该下标处取就行引入链表是为了解决hash冲突,当然解决hash冲突的方法还有比如线性探测再散列,二次线性探测再散列, 再hash法等。而链表查询一个元素的时间复

2021-01-15 14:10:51 370

原创 JVM 垃圾回收器总结

JVM 垃圾回收器总结CMS回收器原理前言:CMS的过程1. 初始标记2. 并发标记3. 预清理4. 可中断的预清理5. 最终标记6. 并发清除7. 标记重置触发时机缺点CMS回收器原理浏览了目前网上关于CMS的一些文章,对CMS有解释的比较详细的但涉及到的知识点包含的很全面的并不多,本文汇总下CMS中的那些知识点前言:全称是 Concurrent Mark Sweep,采用标记清楚算法CMS回收器是针对老年代的回收器目标是减小STW(stop the world:所有用户工作线程停止,只有垃

2021-01-13 18:09:18 153

原创 负载均衡的常见几种算法

一致性hash算法前言简述特点前言此处是在了解了一致性hash算法后,用自己的语言来描述下简述一致性hash最初是用来解决分布式缓存中节点查找问题,由于缓存是多节点部署的,这些节点都存储了不同的数据(每个节点可以是主备部署,实时同步),那我们在取数据的时候怎么取,通过hash算法可以定位到一个缓存节点,但是,当一个节点挂掉或者新增一个几点,节点的位置序号发生变动时,普通hash算法的定位就不准确了于是一致性hash算法营运而生将主机(ip或者主机名等唯一标识)按一致性hash算法分布在0 —

2020-11-13 13:27:58 4150

原创 让你来描述Java锁升级过程

java锁升级前言简述前言synchronized 在jdk6之前是很笨重的,不同线程的加锁解锁会引起操作系统内核态的切换,十分消耗性能,不过jdk6之后它正在向着智能方向发展——它能根据当前线程运行环境来自动切换不同的锁具体的实现过程我觉得如果不是有专门的开发需求,没必要了解的很透彻,它对业务都是透明的,可以简单了解实现的思想简述首先说synchronized 将一个对象当做锁,对象可以是普通类的实例对象或者是类的class对象,锁的升级过程是:无锁状态的前提下有一个线程来请求synchro

2020-11-09 19:30:15 238

原创 Java调C++避免JVM崩溃

Java调用C++前言实现dll方式cmd命令行方式前言一般情况下很少用到Java调C++的场景,我们这次的场景是有个旧的打印服务是C++实现,旧服务重构较麻烦,就直接使用Java方式调用了实现dll方式在idea中加一个external工具Java代码生成接口方法,即native方法使用第一步中的添加的工具生成C++ .h文件加载C++的dll文件Jni的这种调用容易引起jvm崩溃,大多数原因网络上说的内存溢出,有C++代码没有及时释放内存导致的内存泄漏也有创建线程

2020-11-04 10:01:59 810

原创 Java多数据源动态增加及切换

Java项目中数据源动态切换的实现前言新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言从事餐饮软件项目,作为阿里本地生活的一份子,从19年下半年开始阿里口碑一批P6 P7开发人员陆续加入开发,此处的话题是一个餐饮po

2020-11-03 18:55:30 1248 1

原创 Feign注解方式RPC调用的简单实现

接口注册为Spring中的bean背景实现概述注解RemoteCallScanRemoteServerRemotePath类RemoteCallProxyRemoteFactoryBeanRemoteCallPackageRegistrarRemoteCallScannerConfigurerClassPathRemoteCallScanner结束背景阿里口碑同学主导了一个客户端jar包的项目,跟随P6开发参与其中,项目中使用到了sqlite这种轻量级的数据库,口碑同学直接手写了一个类Mybatis数据

2020-11-02 18:22:30 1401

原创 一个threadlocal案例

一个threadlocal案例public class ThreadLocalTest { private static ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>() { @Override protected Integer initialValue()...

2019-09-27 10:06:16 335

原创 话说MyISAM与InnoDB在索引上的差异

一文快速读懂Mysql引擎MyISAM与InnoDB的索引设计上的差异MyISAM的索引InnoDB的索引对于InnoDB表,这里的启示是:总结本文是根据微信知识星球沈剑老师的文章总结感悟所写(原文地址:https://mp.weixin.qq.com/s/FUXPXKfKyjxAvMUFHZm9UQ)数据库的索引分为主键索引(Primary Inkex)与普通索引(Secondary Ind...

2019-09-25 10:38:46 152

原创 Mysql索引设计

本文是根据微信知识星球沈剑老师的文章的总结与感悟数据库设计索引的原因索引结构为什么要设计成树型,而不是更快的hash数据库索引为什么使用B+树?数据库设计索引的原因类比于书本首页的索引,给全书一个指向索引结构为什么要设计成树型,而不是更快的hash加速查找速度的数据结构,常见的有两类:(1)哈希,例如HashMap,查询/插入/修改/删除的平均时间复杂度都是O(1)(2)树,例如平衡二...

2019-09-25 10:12:13 274

原创 快速排序的时间复杂度

快速排序的时间复杂度是如何计算的快速排序简单回顾时间复杂度快速排序简单回顾首先选定一个元素为“轴”,轴元素与其他元素依次比较并根据比较的结果交换位置,最后处于一个合适的位置时称为一次划分。划分后的两边元素集合重复这个操作时间复杂度排序结果的每次划分看做二叉树的节点如下图节点是所有元素的不重复的划分,每次划分时轴元素与所有元素都要比较一次,因此每层的节点排序的合计时间复杂度可以看做O(...

2019-09-24 18:14:09 11081

原创 初入前端react开发的小结

ssm项目开发中常用注解解释(持续更新中)项目结构简单介绍Modelconnect零碎知识点无状态组件this的绑定实例应公司要求需要开发react,本文是自己刚刚学习react,需要快速了解项目上手开发的简单总结项目结构简单介绍我们主要关注src目录public # 不参与编译的资源文件node_modules #执行npm install 安装的依赖src # 主程序目...

2019-08-12 10:38:54 298

原创 ssm项目开发过程中常用的注解记录

@GetMapping @PostMapping@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。@NoArgsConstructor @AllArgsConstru...

2019-07-31 16:06:45 314

转载 RocketMQ架构原理与消息幂等

集群部署架构结合部署结构图,描述集群工作流程:启动NameServer,NameServer启动后监听端口,等待Broker、Produer、Consumer连上来,相当于一个路由控制中心。Broker启动,跟所有的NameServer保持长连接,定时发送心跳包。心跳包中包含当前Broker信息(IP+端口等)以及存储的所有Topic信息。注册成功后,NameServer集群中就有Top...

2019-07-26 20:08:28 274

原创 记录ssm开发中遇到的简单易错问题

通用mapper表名默认使用类名,驼峰转下划线,如UserInfo默认对应的表名为user_info.表名可以使用@Table(name = “tableName”)进行指定,对不符合第一条默认规则的可以通过这种方式指定表名.字段默认和@Column一样,都会作为表字段,表字段默认为Java对象的Field名字驼峰转下划线形式.可以使用@Column(name = “fieldName...

2019-07-15 17:14:29 861

原创 Java中关于 强引用 软引用 弱引用 虚引用

前言为了使程序能更加灵活的控制对象的生命周期。从JDK1.2版本开始,把对象的引用分为四种级别:强引用、软引用、弱引用和虚引用。接下来分别介绍这四种引用强引用强引用是最常见的引用,就是我们常说的new一个对象出来然后赋值:Object object = new Object();现在栈中保存地址值,堆中保存对象的真实内容。由于可能出现堆中的内容有多个引用,比如Object object...

2019-07-11 16:45:30 78

原创 关于mysql锁的知识总结

mysql锁总结脏读,幻读,重复读与隔离级别Read uncommitted 读未提交Read committed 读已提交Repeatable read 可重复读(这是MySQL的默认事务隔离级别)Serializable 序列化总结Record lockGap lock快照读:当前读:意向锁:加锁过程分析情景一:id字段为主键情景二:id字段有唯一索引,name字段为主键情景三:id字段有非唯...

2019-04-29 13:34:08 233

原创 项目研发过程中的三目表达式空指针异常

三目表达式的问题抛出问题探索过程抛出问题在项目开发中有这么一段代码非常简单的代码,就是向物品对象中set价格。这段代码乍一看没什么问题,但当我调试的时候走到这里总会报空指针异常探索过程通过跟踪代码发现goods对象和precisionMap对象均不为空,哪来的空指针呢于是怀疑是这种三元表达式有问题,就将以上改成了如下代码就是将setXxx方法中的三元表达式提出来而已,果然,它不...

2019-04-29 11:09:15 505

空空如也

空空如也

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

TA关注的人

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