![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 76
xinyuan_java
这个作者很懒,什么都没留下…
展开
-
SpringBoot的配置如何动态刷新(自定义)
SpringBoot的配置如何动态刷新(自定义)原创 2023-05-24 16:24:32 · 3295 阅读 · 0 评论 -
Java创建进程
Java创建进程转载 2023-02-16 13:31:29 · 2107 阅读 · 0 评论 -
java线程生命周期(thread)
java线程生命周期(thread)转载 2023-02-16 12:55:03 · 570 阅读 · 0 评论 -
分布式链路监控系统
分布式链路监控系统转载 2022-12-29 17:36:28 · 792 阅读 · 0 评论 -
java开发经常遇到的bug
java开发经常遇到的bug转载 2022-12-29 17:06:56 · 751 阅读 · 0 评论 -
优雅记录 HTTP 请求/ 响应数据
优雅记录 HTTP 请求/ 响应数据转载 2022-12-29 16:57:04 · 133 阅读 · 0 评论 -
Spring-Retry 和 Guava-Retry
Spring-Retry 和 Guava-Retry转载 2022-12-29 16:40:40 · 137 阅读 · 0 评论 -
Lombok实现原理
Lombok实现原理转载 2022-12-29 16:26:49 · 124 阅读 · 0 评论 -
Kafka消费组rebalance原理
Kafka消费组rebalance原理转载 2022-12-29 13:15:34 · 1001 阅读 · 0 评论 -
使用CSV序列化和反序列化
java写入读取CSV原创 2022-12-16 15:07:52 · 164 阅读 · 0 评论 -
SpEL详解
SpEL详解转载 2022-11-22 10:03:22 · 1130 阅读 · 0 评论 -
java AST 抽象语法树
AST学习转载 2022-08-30 10:24:26 · 2809 阅读 · 0 评论 -
SpringBoot实现动态增删启停定时任务
在spring boot项目中,可以通过@EnableScheduling注解和@Scheduled注解实现定时任务,也可以通过SchedulingConfigurer接口来实现定时任务。但是这两种方式不能动态添加、删除、启动、停止任务。要实现动态增删启停定时任务功能,比较广泛的做法是集成Quartz框架。但是本人的开发原则是:在满足项目需求的情况下,尽量少的依赖其它框架,避免项目过于臃肿和复杂。查看spring-context这个jar包中org.springframework.schedulin转载 2021-09-02 16:05:48 · 386 阅读 · 0 评论 -
SpringBoot 集成 WebSocket,实现后台向前端推送信息
前言在一次项目开发中,使用到了Netty网络应用框架,以及MQTT进行消息数据的收发,这其中需要后台来将获取到的消息主动推送给前端,于是就使用到了MQTT,特此记录一下。一、什么是websocket?WebSocket协议是基于TCP的一种新的网络协议。它实现了客户端与服务器全双工通信,学过计算机网络都知道,既然是全双工,就说明了服务器可以主动发送信息给客户端。这与我们的推送技术或者是多人在线聊天的功能不谋而合。为什么不使用HTTP 协议呢?这是因为HTTP是单工通信,通信只能由客户端.转载 2021-09-02 15:21:13 · 443 阅读 · 0 评论 -
代码规范(Sonar, P3C)
1.SonarLintSonarLint是一个代码质量检测插件,可以帮助我们检测出代码中的坏味道下载与安装在需要检测的单个文件或者单个项目上右键 --> Analyze --> Analyze with SonarLint或者选中文件或目录,点击菜单栏 Analyze --> Analyze with SonarLint我们还可以禁用某些规则如果需要同步自定义的规则时,可以绑定到SonarQube..转载 2021-09-02 13:57:52 · 1119 阅读 · 0 评论 -
几种Java常用序列化框架的选型与对比
一 背景介绍序列化与反序列化是我们日常数据持久化和网络传输中经常使用的技术,但是目前各种序列化框架让人眼花缭乱,不清楚什么场景到底采用哪种序列化框架。本文会将业界开源的序列化框架进行对比测试,分别从通用性、易用性、可扩展性、性能和数据类型与Java语法支持五方面给出对比测试。 通用性:通用性是指序列化框架是否支持跨语言、跨平台。 易用性:易用性是指序列化框架是否便于使用、调试,会影响开发效率。 可扩展性:随着业务的发展,传输实体可能会发生变化,但是旧实体有可能还会.转载 2021-09-02 13:49:39 · 329 阅读 · 0 评论 -
雪花算法的原理和 Java 实现
SnowFlake 算法,是 Twitter 开源的分布式ID生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一ID。在分布式系统中的应用十分广泛,且 ID 引入了时间戳,基本上保持自增的,后面的代码中有详细的注解。这 64 个 bit 中,其中 1 个 bit 是不用的,然后用其中的 41 bit 作为毫秒数,用 10 bit 作为工作机器ID,12 bit 作为序列号。给大家举个例子吧,比如下面那个 64 bit 的 long 型数...转载 2021-02-02 17:32:03 · 268 阅读 · 0 评论 -
Java日志体系
概要本文的目的是搞清楚Java中各种日志Log之间是怎么的关系,如何作用、依赖,好让我们平时在工作中如果遇到“日志打不出”或者“日志jar包冲突”等之类的问题知道该如何入手解决,以及在各种场景下如何调整项目中的各个框架的日志输出,使得输出统一。Log日志体系在日常工作中我们可能看到项目中依赖的跟日志相关的jar包有很多,commons-logging.jar、log4j.jar、sl4j-api.jar、logback.jar等等,眼花缭乱。我们要正确的配置,使得jar包相互作...转载 2021-01-20 20:51:25 · 108 阅读 · 0 评论 -
Spring循环依赖
- 循环依赖 -所谓的循环依赖,就是两个或者两个以上的bean互相依赖对方,最终形成闭环。比如“A对象依赖B对象,而B对象也依赖A对象”,或者“A对象依赖B对象,B对象依赖C对象,C对象依赖A对象”;类似以下代码:public class A { private B b;}public class B { private A a;}常规情况下,会出现以下情况:1、通过构建函数创建A对象(A对象是半成品,还没注入属性和...转载 2021-01-17 11:46:54 · 207 阅读 · 0 评论 -
JVM重点知识
标记-清除算法:标记无用对象,然后进行清除回收。缺点:效率不高,无法清除垃圾碎片。 复制算法:按照容量划分二个大小相等的内存区域,当一块用完的时候将活着的对象复制到另一块上,然后再把已使用的内存空间一次清理掉。缺点:内存使用率不高,只有原来的一半。 标记-整理算法:标记无用对象,让所有存活的对象都向一端移动,然后直接清除掉端边界以外的内存。 分代算法:根据对象存活周期的不同将内存划分为几块,一般是新生代和老年代,新生代基本采用复制算法,老年代采用标记整理算法。 标记-清..转载 2021-01-17 11:45:34 · 113 阅读 · 0 评论 -
对比了几种分布式事务方案,我选择了Seata
分布式事务的产生我们先看看百度上对于分布式事务的定义:分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。额~ 有点抽象,简单的画个图好理解一下,拿下单减库存、扣余额来说举例:当系统的体量很小时,单体架构完全可以满足现有业务需求,所有的业务共用一个数据库,整个下单流程或许只用在一个方法里同一个事务下操作数据库即可。此时做到所有操作要么全部提交 或 要么全部回滚很容易。分库分表、SOA可随着业务量的不断增长,单体架构渐渐扛不转载 2021-01-16 15:27:56 · 1185 阅读 · 1 评论 -
精心整理的JVM笔记带你轻松学习Java虚拟机
前言最近看了深入理解Java虚拟机第三版,整理了一些基础结构图,算是比较全的了,做一下笔记,大家一起学习。1.Java虚拟机运行时数据区图JVM内存结构是Java程序员必须掌握的基础。程序计数器 程序计数器,可以看作当前线程所执行的字节码的行号指示器 它是线程私有的。 Java虚拟机栈 线程私有的,生命周期与线程相同。 每个方法被执行的时候都会创建一个"栈帧",用于存储局部变量表(包括参数)、操作数栈、动态链接、方法出口等信息。 局部变量表存转载 2021-01-16 14:55:54 · 112 阅读 · 0 评论 -
SOA VS 微服务
微服务是近几年非常火热的架构设计理念,大部分人认为是 Martin Fowler提出了微服务概念,但事实上微服务概念的历史要早得多,也不是 Martin Fowler创造出来的, Martin Fowler只是将微服务进行了系统的阐述。不过不能否认 Martin Fowler在推动微服务火热起来的作用,微服务能火, Martin Fowler功不可没。参考维基百科英文版,我们简单梳理一下微服务的历史: 2005年:Dr. PeterRodgers在Web ServicesEdge大会上..转载 2021-01-16 14:20:44 · 266 阅读 · 0 评论 -
JVM性能调优监控工具进行-JDK
一、 jps(Java Virtual Machine Process Status Tool) :基础工具 jps主要用来输出JVM中运行的进程状态信息。语法格式如下:usage: jps [-help] jps [-q] [-mlvV] [<hostid>]Definitions: <hostid>: <hostname>[:<port>]如果不指定hostid就默认为当前主机或服务器。...原创 2020-11-18 17:45:15 · 251 阅读 · 0 评论 -
FastDFS
说起分布式文件管理系统,大家可能很容易想到 HDFS、GFS 等系统,前者是 Hadoop 的一部分,后者则是 Google 提供的分布式文件管理系统。不过对于一般的公司而言,自己去搭建分布式文件管理系统并维护,成本太高,还不如直接上云服务。对于开发者而言,只需要通过 RESTful API 或者一些第三方客户端就可以方便的去操作对象存储,在用户下载使用图片前,可以创建图片样式模板或传入图片处理参数对图片进行处理,例如剪切、压缩。可以自己搭建分布式文件管理系统,自己搭建的话,FastDFS+Ngin转载 2020-11-18 14:55:00 · 138 阅读 · 0 评论 -
分布式事务原理
本文提纲如下: 前言 单数据源事务 & 多数据源事务 常见分布式事务解决方案 2.1. 分布式事务模型 2.2. 二将军问题和幂等性 2.3. 两阶段提交(2PC) & 三阶段提交(3PC)方案 2.4. TCC 方案 2.5. 事务状态表方案 2.6. 基于消息中间件的最终一致性事务方案 Seata in AT mode 的实现 3.1. Seata转载 2020-11-18 13:37:11 · 199 阅读 · 1 评论 -
spring boot 解决跨域问题
在springboot中,加入如下代码import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration;import org.springframework.web.cors.UrlBasedCorsConfiguratio...原创 2020-09-10 17:19:37 · 271 阅读 · 0 评论 -
Java 5,6,7,8,9,10新特性
java5 泛型 (Generics) 1 List<Integer> list=new ArrayList<Integer>(); 增强循环(Enhanced for Loop) 1234 int[] array = {1, 2, 3, 4, 5};for (int i : array) { System.out.println(i);}转载 2020-08-19 17:08:38 · 164 阅读 · 0 评论 -
十大经典排序算法(动图演示)
0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2 算法复杂度0.3 相关概念稳定:如果a原本在b前...转载 2020-04-30 16:35:56 · 216 阅读 · 0 评论 -
《深入理解Java虚拟机:JVM高级特性与最佳实践》读书笔记
第一部分 走进Java一、走进Java1、概述 java广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合,摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想2、java技术体系结构 按照功能来划分包括以下几个组成部分:Java程序设计语言,各种硬件平台的java虚拟机,Java API类库,来自商业机构和开源社区的第三方Java类库,Class文件格式...转载 2020-04-28 14:01:47 · 337 阅读 · 0 评论 -
使用 RestTemplate 进行第三方Rest服务调用
1. 前言RestTemplate是Spring提供的一个调用Restful服务的抽象层,它简化的同Restful服务的通信方式,隐藏了不必要的一些细节,让我们更加优雅地在应用中调用Restful服务 。但是在Spring 5.0以后RestTemplate处于维护模式,不再进行新特性的开发,仅仅进行一些日常维护。Spring建议我们使用同时支持同步、异步和Strea...转载 2020-04-24 13:04:32 · 398 阅读 · 0 评论 -
基于 Appium 的自动化测试
介绍Appium是适用于本机,混合和移动Web和桌面应用程序的开源,跨平台测试自动化工具。我们支持模拟器(iOS),模拟器(Android)和真实设备(iOS,Android,Windows,Mac)。Appium 官网 :http://appium.io/ https://github.com/appium...原创 2020-04-21 12:43:24 · 1409 阅读 · 0 评论 -
Apache ServiceMix 入门
作为 apache 旗下的开源ESB: Apache ServiceMix相关文档:Apache ServiceMix home: http://servicemix.apache.org/ http://servicemix.apache.org/docs/7.x/quickstart/ download: https://mirrors.tuna.t...转载 2020-01-09 14:39:32 · 1696 阅读 · 0 评论 -
集成框架Spring Integration, Mule ESB or Apache Camel比较
Spring Integration,Mule ESB和 Apache Camel(FuseSource (http://fusesource.com) and Talend (http://www.talend.com))都实现了著名的企业整合模式Enteprise Integration Patterns( EIP , http://www.eaipatterns.com ),提供了...转载 2020-01-06 11:32:24 · 2738 阅读 · 1 评论 -
企业应用集成EAI
SOA之企业应用集成EAI 企业集成对公司管理提出显著转变的需要,致力于 一体化的努力通常对业务产生深远的影响,但是如果缺乏标准的集成方案,导致概念和技术学习难度增加。集成定义:将不同的计算机系统,公司或个人连接起来, 企业集成是使不同的应用程序协同工作,产生一个统一的功能集的任务。集成类型信息门户 数据复制 共享业务功能 面向服务的体系结构 分布式业务流程 企业对企业...转载 2020-01-06 11:25:49 · 1436 阅读 · 0 评论 -
Apache Camel例子
详细代码POM.xml<?xml version="1.0"?><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"...原创 2020-01-06 11:02:07 · 1150 阅读 · 0 评论 -
Apache Camel入门
什么是Camel?Camel框架的核心是一个路由引擎,或者更确切地说是一个路由引擎构建器。它允许您定义自己的路由规则,决定从哪个源接收消息,并确定如何处理这些消息并将其发送到其他目标。Camel提供更高层次的抽象,使您可以使用相同的API与各种系统进行交互,而不管系统使用的协议或数据类型如何。 Camel中的组件提供了针对不同协议和数据类型的API的特定实现。开箱即用,Camel支持80多...转载 2020-01-06 09:58:42 · 2229 阅读 · 1 评论 -
Spring Integration学习2
1.1背景Spring框架的一个重要主题是控制反转。从广义上来说,Spring处理其上下文中管理的组件的职责。只要组件减轻了职责,它们同时也被简化了。例如,依赖注入降低了定位和创建组件间依赖的耦合性。同样地,面向方面编程通过模块化可重复利用方面,将业务组件和通用的横切面关注点解耦。在这样的情况下,最终的结果是系统更容易测试,理解,维护和扩展。此外,Spring框架和相...转载 2019-12-20 18:18:05 · 183 阅读 · 0 评论 -
Spring Integration学习1
系统集成Spring Integration提供了基于Spring的EIP(Enterprise Integration Patterns,企业集成模式)的实现,主要解决不同系统之间的交互问题,通过异步消息驱动来达到系统交互时系统之间的松耦合,由Message、Channel、Message EndPoint组成。一、Message:用来在不同部分之间传递的数据1、消息体(payload...转载 2019-12-20 18:11:03 · 435 阅读 · 0 评论 -
如何选择ESB
企业级服务总线的定义来自不同厂商的大量产品都包含了“企业服务总线”名称。不幸地是,这个词汇并没有一个标准的定义。产品因此也提供许多不同的特性。在ESB被使用之前首先应该有个清晰的定义。在下面的内容中,ESB是被定义为一种协助开发者的应用集成软件产品,并且提供必要的基础设施去实现路由,转译和一些其他的集成工具。在集成的复杂路径,ESB通常介于框架和套件作为应用集成的替代,正如以下图片所示:...转载 2019-12-17 13:52:33 · 995 阅读 · 0 评论