java
文章平均质量分 95
拾光-铼
这个作者很懒,什么都没留下…
展开
-
HashMap源码解析超详细
HashMap源码解析超详细原创 2023-04-12 15:35:40 · 1636 阅读 · 2 评论 -
RocketMQ使用详解以及高并发系统实践问题
RocketMQ一、MQ介绍1、什么是MQ?为什么要用MQ?2、MQ的优缺点3、几大MQ产品特点比较二、RocketMQ快速实战三、RocketMQ集群架构1、RocketMQ集群中的各个角色RocketMQ集群搭建、四、RocketMQ的消息样例1 、基本样例2、顺序消息3、 广播消息4、 延迟消息5、批量消息6、过滤消息7、事务消息8、ACL权限控制五、SpringBoot整合RocketMQ1、我们创建一个maven工程,引入关键依赖:2、总结:六、SpringCloudStream整合RocketM原创 2022-03-08 23:08:47 · 4632 阅读 · 0 评论 -
并发编程之深入理解CAS(三)
并发编程之深入理解CAS什么是 CASCAS应用CAS源码分析lock前缀指令的作用CAS缺陷ABA问题及其解决方案(狸猫换太子)ABA问题的解决方案补充:什么是 CASCAS(Compare And Swap,比较并交换),通常指的是这样一种原子操作:针对一个变量,首先比较它的内存值与某个期望值是否相同,如果相同,就给它赋一个新值。CAS 的逻辑用伪代码描述如下:if (value == expectedValue) { value = newValue;}以上伪代码描述了一个由比较原创 2021-12-30 11:42:34 · 279 阅读 · 0 评论 -
并发编程之CPU缓存架构&缓存一致性协议详解(二)
并发编程之CPU缓存架构&缓存一致性协议详解CPU高速缓存(Cache Memory)CPU高速缓存在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就是局部性原理。多CPU多核缓存架构缓存一致性(Cache coherence)缓存一致性的要求写传播(Write Propagation)事务串行化(Transaction Serialization)一致性机制(Coherence mechanisms)总线仲裁机制总线锁定缓存锁定总线窥探(Bus Snooping原创 2021-12-15 11:02:02 · 469 阅读 · 0 评论 -
并发编程之深入理解JMM和并发三大特性(一)
前提:JMM属于整个Java并发编程中最难的部分也是最重要的部分(JAVA多线程通信模型——共享内存模型),涉及的理论知识比较多,我会从三个维度去分析:JAVA层面JVM层面硬件层面这块如何学?这部分理解并发的三大特性,JMM工作内存和主内存关系,知道多线程之间如何通信的,掌握volatile能保证可见性和有序性,CAS就可以了,后续JVM层面和硬件层面的分析,基础比较薄弱的可以先跳过,从后面的Java锁机制开始学,掌握常用的并发工具类,并发容器之后再来看JMM这块。并发和并行目标都是最原创 2021-11-17 17:07:14 · 246 阅读 · 1 评论 -
01-Redis核心数据结构和高性能原理
Redis核心数据结构和高性能原理Redis安装核心数据结构以及用法String结构字符串常用操作原子加减应用场景Hash结构Hash常用操作Hash应用场景Hash结构优缺点List结构List常用操作List应用场景Set结构Set常用操作Set运算操作Set应用场景ZSet有序集合结构ZSet常用操作Zset集合操作Zset应用场景Redis的单线程和高性能重要的事说:每一个字都是拾光手敲的,希望你可以一字一字的去阅读和理解拾光在写博客时的思想。希望你有所收获,谢谢!这是第一篇关于redis的文章原创 2021-07-17 16:53:40 · 1505 阅读 · 4 评论 -
02-内存模型深度剖析
内存模型深度剖析JDK体系结构Java语言的跨平台特性JVM整体结构及内存模型元空间的JVM参数有两个:JDK体系结构其实这个图的话,我觉得要讲的东西很多,但是又不知道怎么讲,因为每一个JAVA程序员入门的时候,应该都会看到这个图。首先说一下他们之间的关系吧。JDK>JRE>JVM(>的意思是包含的关系)JDK就是包括我们的java运行环境,还有java的一些api和工具。如果要编写java代码,就得安装JDKJRE就是我们运行java代码的环境JVM就是由c++创建的原创 2021-06-16 22:45:20 · 489 阅读 · 6 评论 -
01-从JDK源码彻底剖析JVM类加载机制
一、类加载运行全过程当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到 JVM。通过Java命令执行代码的大体流程如下:解释一下上图,我们的JAVA程序在启动的时候,首先由java.exe文件启动,底层调用jvm.dll(可以看成是一个JAR包),由c++创建一个JVM,并且会由c++创建一个引导类加载器(BootstrapLoader),然后调用java代码执行Launcher里面的getLauncher方法,会分别去加载扩展类加载器(ExtClassLo原创 2021-06-02 10:03:48 · 234 阅读 · 3 评论 -
JDK源码JVM1 JVM类加载机制与双亲委派机制
JDK源码JVM1 JVM类加载机制与双亲委派机制通过Java命令执行代码的大体流程如下:类加载器和双亲委派机制双亲委派机制为什么要设计双亲委派机制?自定义类加载打破双亲委派机制当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到 JVM。通过Java命令执行代码的大体流程如下:由上图可以看出,首先是由第一部分,在windos系统下,通过jvm.dll创建java虚拟机,并且创建一个引导类加载器(Bootstrap ClassLoad启动类加载器)其中最重原创 2021-02-23 15:12:51 · 311 阅读 · 0 评论 -
SpringBoot使用线程池(ThreadPoolExecutor()和CompletableFuture)处理高并发 线程详解(2)
上一篇文章已经写到了实现线程的几种方式:Java异步任务 线程详解(1)一、说说为什么要用到线程池在处理高并发的时候,往往会考虑到使用多线程的方式来提高速率,但是我们常见的Thread01 extends ThreadRunable01 implements RunnableCallable01 implements Callable这三种方式是不建议直接使用的,具体是为什么呢?我举个列子大家应该就会懂了。比如说一个公司技术开发人员有10个人,为了提高效率,每次有一个新的需求就会去招聘一原创 2021-02-01 13:59:30 · 3136 阅读 · 2 评论 -
Java异步任务 线程详解(1)
Java异步任务 线程详解(1)1.创建线程的四种方式2.四种方法对比废话不多说,直接上代码。1.创建线程的四种方式写main方法public static void main(String[] args) throws ExecutionException, InterruptedException { System.out.println("main......start....."); Thread thread = new Thread01();原创 2020-12-05 16:31:58 · 705 阅读 · 0 评论 -
Macbook更新完Big Sur以后java启动项目出错,重新配置jdk环境变量
Macbook更新完Big Sur以后java启动项目出错我在更新完了系统以后启动nacos的时候,发现java路径找不到,所以我重新安装了jdkJava8安装包点此下载Java8安装包提取码:jg8b重新安装完成以后使用:echo $JAVA_HOME显示的java路径为:/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home这里就是错误问题所在,我在启动的时候提示找不到路径发现是路径错误,这个文件夹有一个空格转义,原创 2020-11-17 10:11:27 · 2870 阅读 · 0 评论 -
Java中BigDecimal工具类(支持空值运算版)
Java中BigDecimal工具类 支持空值运算版前言一.工具类支持功能二.工具类源码三.如何使用总结前言需要计算的场景绕不过去会使用BigDecimal类,可频繁的判空让代码可读性下降也使代码冗余度增高,不判空又容易报空指针异常,而且有些场景下的计算,结果为空时需要返回null,所以也不可以将将BigDecimal类型的值都初始化为0,会让运算结果产生歧义。为解决上述痛点,于是整理了一个工具类供所有项目一起使用。一.工具类支持功能加减乘除、累加、倍数运算。Integer、Long、Float原创 2020-11-05 09:55:02 · 583 阅读 · 0 评论 -
IntelliJ IDEA使用插件JRebel热部署(Mac和Windos都可以使用)
IntelliJ IDEA使用插件JRebel热部署(Mac和Windos都可以使用一、IDEA下载JRebel插件二、下载一个反向代理软件三、激活JRebel四、设置JRebel插件一、IDEA下载JRebel插件在Preference -> Plugins处搜索下载后重启IDEA即可。下载后一定要重启二、下载一个反向代理软件访问此 下载地址windos用户下载 下载完双击就可以,先不要关闭Mac用户下载注意: Mac用户使用Safari下载,不要用Chrome,否则下载之后原创 2020-10-22 15:20:02 · 3022 阅读 · 4 评论 -
Spring源码缺少cglib,objenesis的jar包问题分析及下载
Spring源码缺少cglib,objenesis的jar包问题分析及下载问题错误分析问题解决jar包源来问题本人最近在阅读spring源码的时候,下载下来以后,使用gradle编译发现以下错误错误分析cglib 和 obienesis 的编译错误解决为了避免第三方 class的冲突,Spring把最新的 cglib和 objenesis重新打包( repack)了,它并没有在源码里提供这部分的代码,而是直接将其放在 jar 包当中 ,代码后出现编译错误。 那么为了画过编译,我们要把缺失的原创 2020-10-19 15:03:22 · 558 阅读 · 0 评论 -
List存储对象根据某个属性去重的三种方法
1、废话不多说直接上代码,第一种采取的是重写hashCode和equals的方法,后面两种都是使用java8新特性2、对象代码:@Datapublic class ImportResume { private Integer age; private String phone; //用于去重 @Override public boolean equals(Object object){ ImportResume importResume=(Imp原创 2020-09-21 17:38:18 · 4306 阅读 · 2 评论 -
SpringBoot默认tomcat上传文件大小问题(亲测可用)
SpringBoot默认tomcat上传文件大小问题(亲测可用1、在使用Spring Boot 上传文件报超出自带tomacat限制大小(默认1M)异常2、解决办法1.在配置文件(application.yml)加入如下代码2.在启动类里面加如下配置,并且在类上面添加@Configuration1、在使用Spring Boot 上传文件报超出自带tomacat限制大小(默认1M)异常Caused by: org.apache.tomcat.util.http.fileupload.FileUploadB原创 2020-09-21 13:40:13 · 3891 阅读 · 0 评论 -
分布式锁Redisson的使用,看门狗机制
分布式锁Redisson的使用,看门狗机制Redisson简介Redisson使用项目使用以及说明Redisson简介Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore原创 2020-07-26 11:32:27 · 19622 阅读 · 14 评论 -
RabbitMQ入门学习以及包含源码 使用Mac
在 rabitMQ 中消费者是一定要到某个消息队列中去获取消息的原创 2020-07-09 11:08:46 · 175 阅读 · 0 评论 -
Vue发送get和post请求,Springboot后端接受数据
Vue发送get和post请求,Springboot后端接受数据发送Get请求get请求不携带参数Get请求携带参数Post请求发送Get请求get请求不携带参数前端代码: this.$http({ url: this.$http.adornUrl('/verification/abnormalrecord/list'), method: 'get' }).then(({data}) => { if (d原创 2020-06-10 16:14:42 · 9643 阅读 · 0 评论 -
Springboot使用Nacos做配置中心)
Springboot使用Nacos做配置中心环境项目配置高级使用配置dev,prod,test环境微服务之间互相隔离配置每个微服务创建自己的命名空间,使用配置分组区分环境,dev,test,prod环境jdk: 1.8maven: 3.6.3Idea项目配置新建一个Springboot项目,用Idea自动创建就可以,下面开始使用。引入SpringcloudAlibaba依赖<dependencyManagement> <dependencies>原创 2020-05-27 18:31:30 · 3167 阅读 · 4 评论 -
Spring-Cloud-Alibaba使用Nacos和Feign实现服务注册发现和远程接口调用
Spring-Cloud-Alibaba使用Nacos和Feign实现服务注册发现和远程调用Spring-Cloud-Alibaba简介主要功能组件项目使用(首先使用Idea创建两个Spring-Boot项目)启动Nacos注册中心在项目的pom.xml文件中引入dependencyManagement依赖在两个项目当中引入Nacos的依赖在项目的启动类加上注解在应用的 /src/main/resources/application.properties 配置文件中配置 Nacos Server 地址(**原创 2020-05-24 15:52:01 · 1436 阅读 · 1 评论 -
Swagger2在SpringBoot报NumberFormatException:
Swagger2在SpringBoot报NumberFormatException: For input string: ""首先我看到这个错误的时候氏一脸懵逼的,不知道是哪出错了,一刷新页面就会报这个错,最后没办法根据提示进行Debug然后我重新启动代码,并且打了断点,看到了错误原因首先我看到这个错误的时候氏一脸懵逼的,不知道是哪出错了,一刷新页面就会报这个错,最后没办法根据提示进行Debug然后我重新启动代码,并且打了断点,看到了错误原因最后找到,修改如下,就好了public BusResu原创 2020-05-18 17:59:15 · 414 阅读 · 0 评论 -
Spring Boot项目在linux服务器上设置开机自启(亲测有效)
Spring Boot项目在linux服务器上设置为开机自启(亲测有效)1、使用IDEA工具,将自己项目打成jar包2、将jar包用Xftp上传到服务器任意位置 /usr/local/jar/xxx进入jar包文件夹// 进入jar包位置cd /usr/lcoal/jar//查看jar包是否存在ll 创建软连接// 将自己的jar包和init.d建立软连接ln -...原创 2019-07-08 11:38:46 · 1419 阅读 · 8 评论