自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

原创 JDK9~17+Springboot3 @Resource常见问题和解决方案

因为JDK版本升级的改动,在Jdk9~17环境下,搭建Springboot项目,会出现原有@Resource(javax.annotation.Resource)不存在的问题,导致项目从Jdk8迁移到高版本时遇到的问题

2023-06-10 09:18:42 8968 1

原创 Kafka由浅入深(6) Sender线程执行源码解析

Sender继承了Runnable接口,而Sender线程是在KafkaProducer 的构造器中进行实例化和线程启动。当KafkaProducer被创建时,也会在构造器中实例化以 “kafka-producer-network-thread |[clientId]”命名的线程,而这个线程作为守护线程,伴随着KafkaProducer整个生命周期。从下面的源码可以看出,Sender线程的run()方法中,核心发送入口方法为runOnce()。

2022-11-06 07:00:00 1832 1

原创 Kafka由浅入深(5)RecordAccumulator的工作原理

RecordAccumulator类append()的主体逻辑:1、通过当前主题获取主题消息信息(TopicInfo)2、获取分区 a、如果partition参数分区号(大于等于0),则将分区号设置为有效的分区effectivePartition; b、如果partition参数值为 RecordMetadata.UNKNOWN_PARTITION(-1),需要通过分区负载压力进行粘性分区,计算到分区号并复制给effectivePartition3、基于有效分区号

2022-10-29 07:00:00 3565 6

原创 Kafka由浅入深(4)生产者主线程工作原理(下)

KafkaProducer doSend主要执行流程分为6步: 1、 从元数据缓存(MetadataCache)非阻塞的获取当前集群信息 2、 将当前主题和当前时间到元数据中 3、 获取到当前主题的分区数 4、 Case1 如果分区号还没有分配,或者分区号在当前分区号范围之内,则 直接创建ClusterAndWaitTime 并返回当前集群元数据 5、 Case2 如果partitionsCount 为空,或者指定分区号已经有了,或者指定分区号超出当前主题分区号

2022-10-23 09:29:52 1340

原创 Kafka由浅入深(3)一文读懂弃用默认分区器DefaultPartitioner KIP-794

KIP-480:Sticky Partitioner引入了 UniformStickyPartitioner 并使其成为默认分区器。事实证明,尽管被称为统一粘性分区器( UniformStickyPartitioner),但粘性分区器存在问题而实际上并没有统一。

2022-10-17 11:29:02 2221 1

原创 Kafka由浅入深(2) 生产者主线程工作原理(上)

在新版的Kafka(3.3.1)客户端不建议使用默认分区器,改进了默认分区器,以在健康的代理之间分批均匀分布非键控数据,而向不健康的代理分配更少的数据。例如,具有异常行为的生产者工作负载的 p99 延迟从 11 秒减少到 154 毫秒

2022-10-15 11:39:22 1024

原创 Kafka由浅入深(1) Kafka的前世今生

相较于以日志为中心的系统,例如Scribe和Flume,消息队列Kafka版在具备高性能的同时,可以实现更强的数据持久化以及更短的端到端响应时间。起初Linkedin采用了ActiveMQ来进行数据交换,大约是在2010年前后,那时的ActiveMQ还远远无法满足Linkedin对数据传递系统的要求,经常由于各种缺陷而导致消息阻塞或者服务无法正常访问,为了能够解决这个问题,Linkedin决定研发自己的消息传递系统,当时linkedin的首席架构师Jay Kreps 便开始组织团队进行消息传递系统的研发。

2022-10-08 19:16:22 1084

原创 总结6: Mybatis源码分析和架构设计

一、Mybatis设计架构1、架构图2、流程图二、源码解析系列1、源码解析https://www.bbsmax.com/A/rV57bKkRJP/2、Plug的工作原理https://www.cnblogs.com/qdhxhz/p/11390778.html3、Dao没有实现类的思想(JDK动态代理)https://www.cnblogs.com/hopeofthevillage/p/11384848.htmlSqlSes...

2020-05-24 23:28:41 271

原创 总结5: Spring总结

Spring源码分析:https://github.com/seaswalker/spring-analysis阿里搭建脚手架https://start.aliyun.com一、Spring1、Spring IOC作用: 依赖注入和控制反转,将对象的创建交给Spring管理,简化代码,降低代码的耦合度控制反转是关于一个对象如何获取它所依赖对象的引用,反转指的是责任的反转a、依赖注入的方式https://zhuanlan.zhihu.com/p/34405799b、Au

2020-05-18 22:34:00 223

原创 总结4: Mysql数据库

学习资料:Mysql5.7官方文档https://dev.mysql.com/doc/refman/5.7/en/innodb-architecture.html《高性能Mysql》《MySQL技术内幕 InnoDB存储引擎 第2版》淘宝mysql月报 http://mysql.taobao.org/monthly一、Mysql1、Mysql的文件架构2、数据库三范式、五个约束https://www.cnblogs.com/zhouguowei/p/926878.

2020-05-18 21:49:08 128

原创 总结3: Redis

参考书籍《Redis设计与实现》整体介绍https://www.processon.com/view/link/5e84a6a0e4b0893f957a84dc#maphttps://blog.csdn.net/piaoslowly/article/details/815635791、Redis的数据类型和数据结构5中数据类型:(对象类型)https://www.runoob.com/redis/redis-data-types.html底层数据结构:https://blog

2020-05-10 17:24:40 274

原创 总结2:Java集合、数据结构

一、常用集合1、HashMap实现原理:https://juejin.im/post/5c1c79b16fb9a049a711c97c线程不安全:https://blog.csdn.net/swpu_ocean/article/details/88917958java8中红黑树的实现https://www.cnblogs.com/finite/p/8251587.html2、TreeMap实现原理:https://www.jianshu.com/p/94acb78a8

2020-05-08 23:23:23 138

原创 总结1:Java并发编程

参考书籍《Java并发编程的艺术》一、并发编程的基础1、多线程上下文切换概念:https://www.cnblogs.com/xrq730/p/5186609.html2、如何减少上下文切换方式: https://www.jianshu.com/p/1dd95d9bc8c5a、无锁编程b、Cas算法:c、使用最少线程d、使用协程:单线程执行多个任务的方式,减少线程切换3、死锁产生的条件和解决方式:条件: https://blog.csdn.net/hd12370/

2020-05-08 23:21:33 237

原创 Idea SpringBoot启动项目报错Command line is too long. Shorten command line for className or also for JUnit

Idea SpringBoot启动项目报错:Command line is too long. Shorten command line for className or also for JUnit defaultconfiguration.解决方法:步骤一:在该项目文件夹.idea/workspace.xml中找到<component name="Propert...

2019-12-20 22:31:28 1726

原创 JAVA 数据类型的取值范围

1、IntegerInteger的最大值 Integer.MaxValue 为2的31次方-1 21亿Integer的最小值 Integer.MinValue 为负的2的31次方2、ShortShort 的最大值 Short.MaxValue 为2的15次方-1 32767Short的最小值 Short.MinValue 为负的2的15次方 -327683、Lo...

2019-12-19 23:07:06 1751

原创 Java解决Ajax跨域请求的方式

一、跨域问题的来源浏览器跨域处理原由:浏览器安全防护的“同源政策”影响。关于什么是“同源政策”,可以看这边文章,讲解比较详细易懂https://blog.csdn.net/dreamcatcher1314/article/details/78652884跨域请求的限制主要是针对前端,Java后端发送Http请求是不存在跨域的问题的,所以通过后端发送Http跨域请求也是解决跨域的一种方式...

2019-12-19 22:28:12 1360 1

原创 Java Object对象相关问题分析

package java.lang;public class Object { private static native void registerNatives(); static { registerNatives(); } // 类加载器 //返回Object 的运行时类 public final native Cla...

2018-09-04 16:52:09 517

原创 SpringMVC拦截器源码解析

 前言:提到拦截器,我们一定会想到Spring Aop。在看SpringMVC源码以前,一直以为SpringMVC的拦截器是用Spring Aop的动态代理来实现,并且也很困惑,如果用动态代理如何实现拦截器?这里就不介绍Spring Aop实现拦截器的方式,剖析SpringMVC 拦截器实现的细节。    SpringMVC拦截器也是Aop(面向切面)思想构建,但不是SpringAop动态代理实现...

2018-07-08 00:10:55 1652

原创 Java多线程内存模型总结

Java多线程内存模型        1.并发线程间的通信机制有两种: 共享内存和消息传递            a.共享内存和消息传递的区别:                      共享内存:线程间有公共状态,通过读写内存中的公共状态隐式通信                      消息传递:线程间没有功能状态,线程间通过发送消息显示通信            Java线程使用的是共享内存...

2018-02-10 11:12:36 1416

原创 Dubbo+Zookeeper+Spring 分布式服务的搭建(一)

第一节:介绍Zookeeper的安装下载安装包方式:1、Linux上wget  http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz   速度相对比较慢2、连接直接下载windows电脑上,然后在上传到Linux  ,下载地址zookeeper  下载成功

2017-11-20 23:07:52 304

原创 Linux centos7下MySQL的安装

MySQl在Linux centos7与centos6的安装方式是不一样,MySQL在centos7下的安装过程和遇到问题和解决方式

2017-11-07 23:50:46 612

原创 JAVA虚拟机内存结构及分析

JAVA虚拟机自动化两大构成,内存动态分配和垃圾收集技术。内存自动分配和GC的相互协作运行,减少JAVA编程内存泄漏和内存溢出的问题。但内存泄漏和内存出,我们也偶尔会碰到。两者的区别有时怎样的呢?内存泄漏和内存溢出的区别?内存泄漏:程序中动态分配的内存,某些数据或对象,没有及时得到释放和回收,没有足够的内存空间得到使用。内存溢出:程序运行过程中,无法申请到足够的内存。将见O

2017-10-23 14:55:40 263

转载 Tomcat运行原理解析

Tomcat:  Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet容器、进程内的Servlet容器和进程外的Servlet容器。Tomcat目录:tomcat  |---bin:存放启动和关闭tomcat脚本  |---conf:存放不同的配置文件(server.xml和web.xml);  |--

2017-10-22 23:13:08 420 1

原创 阿里巴巴JAVA约束插件的安装

最近阿里巴巴JAVA代码规范约束插件刚推出不久(2017.10.14),备受世人关注。阿里给JAVA开发者带来的福利,开源的框架和技术,在工作中或多或少会接触到。FastJson快速高效的解析和转换json数据;Druid数据库连接池,在现有的连接池中性能居于前列;Dubbo分布式服务框架,在2017年又重新维护......2017年开春之际,诚意献上重磅大礼:阿里巴巴Java开发手册

2017-10-20 10:03:00 1105

原创 Linux 常用指令 权限类

权限类指令(ls-l   ,   chmod ,   chown , chgrp)    a. 查看文件权限  ls -l            文件权限符号的含义         第一字符代表文件类型。d代表目录,-代表非目录         紧随其后每三个字符一组权限,分为三组,依次是1.代表所有者权限,同组用户权限,其他用户权限        权限组中,字符代表的含义

2017-10-19 10:21:17 286

原创 Tomcat类加载机制和JAVA类加载机制的比较

图解Tomcat类加载机制  说到本篇的tomcat类加载机制,不得不说翻译学习tomcat的初衷。  之前实习的时候学习javaMelody的源码,但是它是一个Maven的项目,与我们自己的web项目整合后无法直接断点调试。后来同事指导,说是直接把java类复制到src下就可以了。很纳闷....为什么会优先加载src下的java文件(编译出的class),而不

2017-10-18 11:50:42 5896

转载 SpringMVC在tomcat中的执行原理和过程

一、WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象(每个web应用程序唯一),它代表当前web应用web容器提供其一个全局的上下文环境,其为后面的spring IoC容器提供宿主环境;二、读取web.xml服务器软件或容器如(tomcat)加载项目中的web.xml文件,通过其中的各种配置来启动项目,只有其中配置的各项均无误时,项目才能

2017-10-18 11:15:46 3266

jQueryEasyUI文档

官方easyUI中文文档,一个可执行文件,摆脱陈旧的样式。

2015-02-09

空空如也

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

TA关注的人

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