![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 94
柠檬好酸啊
这个作者很懒,什么都没留下…
展开
-
如何使用Java实现一个分布式调用链追踪系统?
collie使用Java实现一个分布式调用链追踪系统什么是分布式调用链追踪?在微服务和分布式应用十分常见的系统中,如果系统的规模非常的庞大,那么会带来非常多的麻烦,首先是系统复杂度升高了,各个系统之间互相调用,使得查找问题等变得非常复杂。对于新接手项目的人来说也是非常不友好的。所以急需一个工具来使得复杂的系统变得更清晰。分布式调用链追踪就是这样的一个工具。初次听到这样的系统,感觉非常的牛逼。秉持着想深入了解一个东西的话那就来实现它的理念,我决定自己动手实现一个简单的分布式调用链追踪系统。分布式调用原创 2021-10-23 21:51:04 · 1050 阅读 · 1 评论 -
我是如何用java实现一个LeetCode的
我是如何用java实现一个LeetCode的前言作为一个算法小垃圾,有一次我做完了一个LeetCode题目,我想的不是如何在提升一下自己的算法,而是想到了其他的一些东西。比如,我提交了一段Java代码到后台,后台是运行Java代码并且返回结果和这段代码执行的时间、占用内存等信息。我工作中接触的东西并不能考诉我这个过程中到底发生了什么,但是我还是抱着一探究竟的心,想去深入了解一个这个过程每一步的原理。其实说来疑问就那么几点:LeetCode提交的Java代码到底如何执行?代码的运行时间和占用内存怎原创 2021-10-07 22:54:42 · 2093 阅读 · 2 评论 -
Java实现热部署(四):热部署插件分析
插件介绍介绍一个插件,插件地址:https://github.com/liuzhengyang/lets-hotfix。这个插件可以实现热部署,插件的原理原理和前几篇文章中说的原理是一样的。这个插件的具体的使用方式在GitHub上面有详细的说明。插件可以在网页端使用也可以安装idea插件进行热部署。代码分析GitHub中的代项目目录大致分成了这几个部分,我们来一个一个分析。整体的结构和实现的功能图如下:agent这部分原理很好懂,之前我们也讲到过。这里插件实现的主要功能就是通过后端传递过来的文原创 2020-11-04 21:33:11 · 1393 阅读 · 1 评论 -
java测试相关的一些整理
文章目录Junitspring的测试mock测试其实是衡量一个程序员编程素养的一个比较重要的维度。做测试其实是对自己写过代码的一个再思考的过程,而不仅仅是发现程序中的bug。之前工作中很少写测试,虽然短期看代码产出量变多了但是长久来看的话其实是一个非常不好的习惯,中间还是吃过几次亏的。JunitJunit是idea自带的测试框架,可以用快捷键shift+command+T快速的创建测试类。需要添加一下pom依赖: <groupId>org.junit.jupiter</group原创 2020-11-02 16:28:47 · 230 阅读 · 1 评论 -
maven(1):maven打包工具
文章目录maven相关的一些知识maven打包插件 maven-assembly-plugin,maven-shade-plugin与maven-assembly-plugin一、介绍二、 打包准备三、 maven-jar-plugin插件(maven默认打包插件)四、 maven-shade-plugin五、 maven-assembly-pluginid与formatsfileSets/fileSetfiles/filedependencySets/dependencySetmaven相关的一些知识原创 2020-10-28 19:48:00 · 1400 阅读 · 1 评论 -
maven(3):manifest和maven
文章目录jar文件常见的 jar工具用法META-INFmaven和MANIFEST.MFjar文件提到 JAR,最先可能想到的就是依赖,比如 fastjson.jar ,它可以作为依赖在项目中来引用,但是不能通过 java -jar 来执行,这种就是非可执行的 JAR。另外一种,比如我们项目打包之后生成的 JAR (当然也可能是 war),我们可以通过 java -jar 来运行程序,我们把它称之为可执行的 JAR。JAR 作用大体可以分为以下几种:用于发布和使用类库作为应用程序和扩展的构建单原创 2020-10-28 19:46:54 · 1577 阅读 · 1 评论 -
maven(2):通过maven来启动main方法
文章目录通过maven命令来运行Java程序main方法一、从命令行运行二、 在pom.xml中指定某个阶段执行三、 在pom.xml中指定某个配置来执行通过maven命令来运行Java程序main方法一、从命令行运行运行前先编译代码,exec:java不会自动编译代码,你需要手动执行mvn compile来完成编译。mvn compile编译完成后,执行exec运行main方法。不需要传递参数:mvn exec:java -Dexec.mainClass="com.vineetma原创 2020-10-28 19:42:27 · 800 阅读 · 1 评论 -
Java服务异常分析的几个思路
Java服务异常分析的几个思路Java服务异常分析的几个思路首先使用top命令查看CPU使用情况。jps // 拿到Java进程的$pidtop -Hp $pid // 对单独的进程,显示线程资源消耗情况。top(cpu)、free(内存)、df(磁盘)、dstat(网络流量)、pstack、vmstat、strace(底层系统调用)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-69c9MpPT-1603036255554)(https://gitee.co原创 2020-10-19 10:34:58 · 198 阅读 · 0 评论 -
Java服务异常分析的几个思路
Java服务异常分析的几个思路首先使用top命令查看CPU使用情况。jps // 拿到Java进程的$pidtop -Hp $pid // 对单独的进程,显示线程资源消耗情况。top(cpu)、free(内存)、df(磁盘)、dstat(网络流量)、pstack、vmstat、strace(底层系统调用)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ye4cpKjL-1598879455535)(https://raw.githubusercontent.co原创 2020-08-31 21:11:39 · 254 阅读 · 0 评论 -
分布式锁的实现
https://zhuanlan.zhihu.com/p/76294773https://juejin.im/post/6844903863363829767#heading-1原创 2020-08-24 17:37:45 · 97 阅读 · 0 评论 -
使用Java创建一个bitmap
public class BitMap { /** * 创建bitmap数组 */ public byte[] create(int n) { byte[] bits = new byte[getIndex(n) + 1]; for (int i = 0; i < n-1; i++) { add(bits, i); } System.out.println(contains(原创 2020-07-20 16:05:41 · 1562 阅读 · 0 评论 -
利用Redis解决重复数据时候的并发异常和分布式锁解决方案
最近公司里有一个并发业务。多个线程消费一个kafka数据流,这个kafka数据流里数据的某个字段有重复。需要根据这个字段来做下去重。一开始的方案是利用Redis来实现,先查Redis如果没有的话则setex。后来发现这个并不能保证并发安全性,后来的结果还是有重复的数据。经过分析,发现是有的重复数据相隔极短。比如说A1和A2两条数据。如果A1 get不到,则说明没有,这个时候去写redis。但是还没写进去呢。A2也去get,如果A1还没写进去的话,A2就get不到。这个时候就出现了并发不安全了。解决方案原创 2020-07-13 12:17:49 · 1128 阅读 · 0 评论 -
单例模式引出的一些知识点
文章目录懒汉式1. 单线程2. 直接使用synchronized但是效率低3. 双重检验4. 加volatile5. 静态内部类方法饿汉式1. 饿汉式2. 枚举方法单例模式里面其实也是包含很多知识点的,整理一下有助于知识的融会贯通。单例模式的解决的痛点就是节约资源,节省时间从两个方面看:1.由于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级的对象而言,是很重要的.2.因为不需要频繁创建对象,我们的GC压力也减轻了,而在GC中会有STW(stop the world),从这一方面也节约原创 2020-06-26 22:57:19 · 296 阅读 · 0 评论 -
Java实现缓存和redis缓存穿透和缓存雪崩的一些问题
文章目录Java缓存的一些使用和体会公司用到的本地缓存Redis的缓存redis缓存穿透为什么会出现后果怎么办1. 缓存空值2. BloomFilter缓存击穿解决方案缓存雪崩解决热点数据集中失效问题Java缓存的一些使用和体会公司用到的本地缓存https://github.com/PhantomThief/zknotify-cache一直以为用的公司提供的本地缓存是封装的别的缓存模块。结果找到GitHub上一看,这个本地缓存是公司大佬写得一个。瞬间佩服之至,先把源码下下来,回头把这个源码分析一波。原创 2020-05-24 15:54:58 · 402 阅读 · 0 评论 -
写一个迷你版的Tomcat
看了一个博客,非常有意思,自己动手写一个迷你版的Tomcat。整理一下自己遇到的问题。https://www.jianshu.com/p/dce1ee01fb90下面是一个请求信息GET /world HTTP/1.1Host: localhost:8080Connection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Macintosh; Intel M翻译 2020-05-14 19:50:44 · 264 阅读 · 0 评论 -
Java中利用反射(或spring)和多态来解决大量swich/case或者if/else的方法
文章目录背景背景工作中经常会有一些swich case或者if else的情况。一般这种情况一开始可能只有几个,但是几次迭代之后可能就会有非常多。代码不易维护而且代码乱糟糟的。我在工作中就遇到了这种情况。大致的业务就是我们需要对接很多家公司,要为每家公司回传一些数据。每家公司的接口和回传方式都不一样。之前的代码是为每一家公司定义一个枚举。然后在回传的时候根据枚举用swich/case来判别回...原创 2020-05-08 15:56:49 · 1101 阅读 · 3 评论 -
读《java并发编程的艺术》心得1
文章目录wait和notifyCountDownLatchCountDownLatch和join的区别队列同步器自己做一个锁Condition最近在看《Java并发编程的艺术》,看到书里的一些程序片段,发现了一些之前没有仔细思考过的东西,现在记录下来。wait和notifywait是指在一个已经进入了同步锁的线程内,让自己暂时让出同步锁,以便其他正在等待此锁的线程可以得到同步锁并运行,只有其...原创 2020-04-19 17:16:36 · 292 阅读 · 0 评论 -
Java堆排序
java堆排序// https://blog.csdn.net/qq_36186690/article/details/82505569@Slf4jpublic class HeapJava { public static void main(String[] args) { int[] arr = {7, 6, 7, 11, 5, 12, 3, 0, 1}; ...原创 2020-04-12 11:47:06 · 129 阅读 · 0 评论 -
给定一个非空的整数数组,返回其中出现频率前 k 高的元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。———...转载 2020-04-05 18:19:57 · 2314 阅读 · 1 评论 -
java虚拟机jvm的一些知识点
文章目录jvmjvm内存模型堆虚拟机栈方法区程序计数器JVM垃圾回收算法标记-清除复制算法标记-整理分代收集JVM垃圾收集器有哪些?以及优劣势比较?串行收集器并行收集器CMS收集器G1收集器在JVM中,如何判断一个对象是否死亡?引用计数法可达性分析算法谈谈JVM中,对类加载器的认识堆和栈**♥** ♥JVM常见配置汇总堆设置收集器设置垃圾回收统计信息并行收集器设置并发收集器设置从.java到.cl...原创 2020-04-05 16:34:06 · 568 阅读 · 0 评论 -
由倒排索引到《自制搜索引擎》
前言最近在看《自制搜索引擎》这本书,自制xxx系列丛书有很多,之前看过自制操作系统这本书,但是后来感觉有点难懂,确实看不下去了。但是自制系列丛书对于理解比较生涩的原理还是非常有帮助,如果你还在学生时代又对这些底层的原理感兴趣不妨多看看。接触《自制搜索引擎》这本书纯属意外,开始是因为我在快手实习期间用到了倒排索引这个数据结构,后来了解到搜索引擎的数据就是通过倒排索引来保存的,所以一下子就对搜索引...原创 2020-04-05 16:13:34 · 206 阅读 · 0 评论 -
关于消息中间件的一些整理
为什么使用消息中间件?解耦耦合性太强的话可以将消息写入消息队列,需要消息的系统自己从消息队列中订阅。异步将消息写入消息队列,非必要的业务逻辑可以以异步的方式运行,加快主体业务的速度。削峰并发量大的时候,所以的请求都直接对数据库,造成数据库异常,这个时候可以先把请求放入消息队列中,慢慢读取。使用了消息队列有什么缺点?系统可用性降低如果消息队列挂掉了,系统肯定就不行了。...原创 2020-03-23 14:40:34 · 135 阅读 · 1 评论 -
Mybatis错误:Result Maps collection already contains value for ***
最后发现是在mybatis-generator生成代码时我运行了两次,没有覆盖代码,导致解析错误。原创 2019-05-09 17:48:06 · 212 阅读 · 0 评论 -
mybatis报错
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.Persist...原创 2019-05-11 15:21:37 · 387 阅读 · 0 评论 -
SSM整合redis---Redis异常,异常描述:Could not get a resource from the pool
今天SSM整合redis的时候出现错误,排除了网上说的大部分错误之后发现是配置文件redis.properties有一行后面出现了空格。如图可以看见idea已经发现错了,但是我没想到是这个原因。除掉之后就正常了。参考文章:https://blog.csdn.net/danny_mai/article/details/81565097...原创 2019-05-11 20:41:41 · 244 阅读 · 0 评论 -
工作中使用jmeter的一些总结
打开jmx报错,缺少一些包造成的,网上有些说下载缺少的包到/lib/ext文件夹下,但是没有用。CannotResolveClassException: eu.luminis.jmeter.wssampler.OpenWebSocketSampler解决方法是下载plugins-manager.jar,放到/lib/ext文件夹下,打开jmx之后缺少的包会自动下载。...原创 2019-07-19 10:56:14 · 1217 阅读 · 0 评论 -
Java HttpClient工具类 发送get post delete请求
maven依赖: <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore --> <dependency> <groupId>org.apache.httpcomponents</groupId>...原创 2019-08-14 16:37:40 · 600 阅读 · 0 评论 -
springboot整合redis以及工具类
springboot现在引入redis非常方便,网上有大量的教程都不能用了,使用spring-boot-starter-data-redis模块可以大大简化配置,非常简单。springboot引入redis模块:<dependency> <groupId>org.springframework.boot</groupId> <ar...原创 2019-09-15 20:23:00 · 108 阅读 · 0 评论 -
关于org.springframework.beans.factory.BeanCreationException出现此问题的解决方法
网上找了很久都没有解决,而且每个人都有不同的原因。我的原因是:在web.xml配置mybatis时 <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:sprin...原创 2019-05-08 20:42:56 · 430 阅读 · 0 评论