- 博客(74)
- 资源 (4)
- 收藏
- 关注
原创 xxl-job源码分析之--执行器(客户端)
xxl-job执行器(客户端的源码还是比较简单的),大致步骤如下声明XxlJobSpringExecutor在XxlJobSpringExecutor调用自身initJobHandlerMethodRepository方法,通过反射将xxljob的类、方法信息放在本地map中在XxlJobSpringExecutor调用父类start方法,该方法重要调用自身的initEmbedServer()
2024-03-02 14:40:49
587
原创 openfeign、nacos获取接口提供方真实IP
都实现了 feign.Client 接口,但是 LoadBalancerFeignClient 实际上调用的还是 feign.Client.Default,无非做了自己处理(负载),有些类似于静态代理。org.springframework.cloud.openfeign.ribbon.LoadBalancerFeignClient和feign.Client.Default。client 是 LoadBalancerFeignClient。这里的request 中 url 就是真实的url资源路径了。
2023-11-16 08:47:23
826
原创 java线程中断、线程池关闭
1、线程终端Thread.interrupt在程序中,我们是不能随便中断一个线程的,因为这是极其不安全的操作,我们无法知道这个线程正运行在什么状态,它可能持有某把锁,强行中断可能导致锁不能释放的问题;或者线程可能在操作数据库,强行中断导致数据不一致混乱的问题。正因此,JAVA里将Thread的stop方法设置为过时,以禁止大家使用。一个线程什么时候可以退出呢?当然只有线程自己才能知道。所以...
2019-12-25 19:55:58
3172
1
原创 ThreadLocal如何解决内存泄漏
ThreadLocal我主要从以下接个方面说明:基础理解接口方法源码分析ThreadLocal如何解决内存泄漏1、基础ThreadLocal从字面意思为:线程本地。它是一个关于创建线程局部变量的类。通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程则无法访问和修改。有一个误区是ThreadLocal的...
2019-12-24 19:35:56
1642
原创 两个线程输出1A 2B 3C 4D 5E 6F.....
两个线程输出1A 2B 3C 4D 5E 6F…下面介绍四种实现方式:LockSupport (最简单方式)代码:public class LockSupportDemo1 { static Thread t1; static Thread t2; public static void main(String[] args) { char[]...
2019-12-24 18:43:40
690
1
原创 java强引用-软引用-弱引用-虚引用
强引用:普通的引用,强引用指向的对象不会被回收;软引用:仅有软引用指向的对象,只有发生gc且内存不足,才会被回收;弱引用:仅有弱引用指向的对象,只要发生gc就会被回收。虚引用:在任何时候都可能被垃圾回收器回收。虚引用必须和引用队列(ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列...
2019-12-24 18:22:58
219
原创 dubbo-2.7新功能
dubbo-2.7新功能配置文件放入配置中心。支持 apollo、nacos、zookeeper(dubbo-admin)#连接配置中心dubbo.config-center.address=zookeeper://134.175.89.109:2181dubbo.config-center.app-name=dubbo-server如果使用配置中心,理论上下面的配置就不需要,但...
2019-09-11 19:47:30
218
1
原创 zookeeper分布式锁实现
zookepeer分布式锁是通过zookeeper临时有序节点特性实现的zookeeper实现分布式锁的算法流程假设锁空间的根节点为/lock:客户端连接zookeeper,并在/lock下创建临时的且有序的子节点,第一个客户端对应的子节点为/lock/lock-0000000000,第二个为/lock/lock-0000000001,以此类推。客户端获取/lock下的子节点列表,判断自...
2019-08-22 11:56:31
202
原创 springboot对静态资源的映射规则
在WebMvcAutoConfiguration类中@ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false)public class ResourceProperties//可以设置和静态资源有关的参数 @Override public void addResou...
2019-08-20 08:54:24
150
原创 springboot精髓-自动配置原理
Springboot启动的时候加载主配置类,开启自动配置功能@EnableAutoConfiguration@EnableAutoConfiguration作用:利用AutoConfigurationImportSelector给容器中导入一些组件,查看selectImports方法SpringFactoriesLoader.loadFactoryNames扫描所有jar包中类路径下...
2019-08-20 08:49:35
131
原创 JVM(四)ClassLoader双亲委派和沙箱安全机制
1、JAVA数据运行区java源文件通过javac编译成java字节码文件.class通过类加载器ClassLoader加载.class文件,将class文件放入内存中各个区域程序计数器、JAVA虚拟机、本地方法栈是线程独有的,不受GC管理堆、方法区受GC管理java8 方法区又称为非堆区,在内存结构中称为“元数据”。下面主要讲ClassLoader双亲委派和沙箱安全机制2、C...
2019-06-28 09:09:07
2020
原创 《软件工程之美》有感--需求变更
常见需求变更解决方案:1、增强需求变更流程,让需求变更规范起来简单来说,就是通过严格的流程,来避免一些没有意义的变更,从而达到管理需求变更的目的2、快速迭代,缩短版本周期将大的功能拆分,每个版本周期仅实现一部分功能需求,周期较短,这样需求发送变更时,就可以快速响应但以上方案并不是一成不变的,不同的项目环境也许要采用不同的方案。所以我们要追本溯源,研究问题背后的原因,研究理论背后的来龙去脉...
2019-06-19 12:05:57
381
原创 《软件工程之美》有感---怎样管好一个项目
软件管理来说:就是管好人、管好事管好人这里人是指项目干系人,可以使用思维导图方式,列举所有项目干系人、这些干系人在项目中承担的角色,以及沟通方式、沟通频率等。项目干系人–客户对于客户管理,就是对于客户期望值管理,想要满足客户预期,通常来说,就是你能在项目的质量、范围、时间和成本上达到的要求。项目干系人–项目组成员对于项目成员管理,不需要过多依赖人的管理,否则项目经理就会成为项目管理的瓶...
2019-06-19 09:50:09
358
原创 JVM(三)垃圾回收器G1
G1的Full GC是一个单线程,它可能引起一个长时间的停顿时间,G1的设计目标是减少Full GC,满足应用性能目标。G1的长期目标是取代CMS(Concurrent Mark-Sweep Collector, 并发标记-清除). 因为特性的不同使G1成为比CMS更好的解决方案. 一个区别是,G1是一款压缩型的收集器.G1通过有效的压缩完全避免了对细微空闲内存空间的分配,不用依赖于region...
2019-06-18 17:09:30
235
原创 JVM(一)JDK JRE JVM三者关系
JDK JRE JVM三者关系:简单来说就是JDK包含JRE,JRE又包含JVM的关系。JDKJDK是Java开发工具包,JDK中包含JRE,在JDK的安装目录下有一个名为jre的目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JDK是整个JAVA的核心,包括了Java运行环境JRE(Java ...
2019-06-18 16:59:43
394
原创 JVM(二)栈、堆、方法区的交互关系
栈、堆、方法区的交互关系public class AppMain { //运行时,JVM把AppMain的信息都放入方法区 public static void main(String[] args) { //main成员方法本身放入方法区。 Sample test1 = new Sample( " 测...
2019-06-18 16:54:58
960
原创 Reactor模型演变
基本上所有的网络处理程序都有以下基本的处理过程:Read request Decode request Process service Encode reply Send replyClassic Service Designs(传统服务设计BIO)对于每一个请求都分发给一个线程,每个线程中都独自处理上面的流程。这种模型由于IO在阻塞时会一直等待,因此在用户...
2019-06-18 08:48:22
396
原创 CountDownLatch
CountDownLatch使一个线程等待其他线程完成各自的工作后再执行。例如:应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后再执行。CountDownLatch是通过一个计算器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1.当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。应用场景...
2019-05-28 08:39:22
97
原创 gateway 网关版本冲突问题
1、spring-cloud版本<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>2、sprring-boot版本<version>2.0.3.RELEASE</version>3、错误描述Error starting ApplicationContext...
2019-05-21 16:57:04
3349
1
原创 墨菲定律
墨菲定律(Murphy's Law)主要内容有四个方面:一、任何事都没有表面看起来那么简单;二、所有的事都会比你预计的时间长;三、会出错的事总会出错;四、如果你担心某种情况发生,那么它就更有可能发生。“墨菲定律”的根本内容是“凡是可能出错的事有很大几率会出错”,指的是任何一个事件,只要具有大于零的机率,就不能够假设它不会发生墨菲定律放在软件工程领域1、当你将软件暴...
2019-05-20 11:30:57
508
1
原创 分布式事物--冥等性
1、概念就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。2、如何设计接口才能做到冥等呢方法1:单次支付请求,也就是直接支付了,不...
2019-05-17 11:01:14
1456
原创 分布式-CAP理论
Consistency一致性、Availability可用性、Partition-tolerance分区可容忍性。三者不可兼得。如果我们选择了 CA 而放弃了 P,那么当发生分区现象时,为了保证一致性,这个时候必须拒绝请求,但是 A 又不允许,所以分布式系统理论上不可能选择 CA 架构,只能选择 CP 或者 AP 架构。CP:放弃可用性,追求一致性和分区容错性,我们的 ZooKeeper ...
2019-05-17 10:55:19
100
原创 rabbitmq-exchange类型
1、directroutingkey 必须完全匹配,也就是相等2 、topicroutingkey 可以有通配符 *,#等3、fanout此exchange的路由规则很简单直接将消息路由到所有绑定的队列中,无须对消息的routingkey进行匹配操作。以上就是exchange 类型的总结,一般来说direct和topic用来具体的路由消息,如果要用广播的消息一般用fa...
2019-05-15 17:43:17
102
原创 Fastjson关于泛型的 json 转 对象
解析的json数据{ "status":0, "data":{ "detail":{ "index":"1.23", "last_index":"1.24", "week_rate":-0.008, "max_congest_day":"20190504", ...
2019-05-10 11:18:02
1263
原创 raabbitmq集群模式
消费者可以使用集群:来提升消费能力,消费数据不重复。同时消费端能避免单点故障问题。rabbitmq 集群中节点包括内存节点(RAM),磁盘节点(DISK,消息持久化),集群中至少有一个DISK节点。如果DISK节点宕机,集群可用,但不用进行消息服务,所以在生成环境中建议至少2个以上DISK节点。集群模式:1、普通模式(默认)对于普通模式,各节点有着相同的队列结构,但消息只会存...
2019-05-10 09:10:30
354
转载 application.properties参数详解
# ----------------------------------------# CORE PROPERTIES# ----------------------------------------# SPRING 相关配置 (ConfigFileApplicationListener)spring.config.name= # config file name (def...
2019-05-08 09:29:38
352
原创 spring-boot2.1升级日志
2.1 中的新特性将spring-boot-starter-oauth2-oidc-client重命名为spring-boot-starter-oauth2-client命名更简洁 添加 OAuth2 资源服务 starter,OAuth2 一个用于认证的组件。 支持ConditionalOnBean和ConditionalOnMissingBean下的参数化容器 自动配置 ap...
2019-05-08 09:24:26
542
原创 Feign与Ribbon区别
Ribbon:是一个基于 HTTP 和 TCP 客户端的负载均衡器它可以在客户端配置 ribbonServerList(服务端列表),然后轮询请求以实现均衡负载它在联合 Eureka 使用时ribbonServerList 会被 DiscoveryEnabledNIWSServerList 重写,扩展成从 Eureka 注册中心获取服务端列表同时它也会用 NIWSDiscover...
2019-05-08 09:21:46
2241
原创 web.xml加载顺序
web.xml组件加载顺序为:context-param -> listener -> filter -> servlet(同类则按编写顺序执行)。web.xml常用组件解析:<web-app> <display-name></display-name>WEB应用的名字 <description><...
2019-05-08 09:17:35
88
转载 详述 PO VO BO DTO DAO 和 POJO 的概念及区别
说实话,我相信对于刚接触 PO、VO、BO、DTO、DAO 和 POJO 这些概念的同学来说,大都会有一种“这都是什么鬼?”的感觉,可谓是云里雾里,不知今夕何夕!现在,就让咱们一起揭开这些 “X”O 的面纱,看看它们的庐山真面目。首先,来个图瞅瞅:第 1 个:DAO DAO(Data Access Object)数据访问对象,它是一个面向对象的数据库接口,负责持久层的操作,为业务层提供接口,主要...
2018-05-07 22:11:27
272
转载 单例模式--内部类
为什么静态内部类的单例模式是最推荐的?如何在反射的情况下保证单例?如何在反序列化中保证单例?针对上述三个问题有了这篇文章,以一种循序渐进的方式,引出最后一种单例设计模式,希望对大家能够有所帮助。单例设计模式1、饿汉式这种其实大家都懂,不多说,上代码。package singleton;public class Singleton1 { private static Singleton1 ...
2018-05-05 23:11:00
421
原创 static 在多线程下安全问题
1、静态全局变量也称为类变量,属于类对象所有,位于方法区,为所有对象共享,共享一份内存,一旦值被修改,则其他对象均对修改可见,故线程非安全public class Test { //全局的静态变量 public static int a = 123; public static void t(int b) { a = b; //............ }}上面t方法,在
2018-01-06 23:20:15
10658
原创 log4j按日期
#log4j.logger.E=errorlog4j.appender.E=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.E.layout=org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern=%d{yyyy-MM-dd
2018-01-06 23:18:33
373
原创 log4j按大小配置
#log4j.logger.E=errorlog4j.appender.E=org.apache.log4j.RollingFileAppenderlog4j.appender.E.layout=org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern=%d{yyyy-MM-dd-HH-m
2018-01-06 23:16:16
864
原创 linux ln 命令使用参数详解(ln -s 软链接)
这是linux中一个非常重要命令,请大家一定要熟悉。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件。当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。...
2017-05-08 21:52:35
4200
转载 FASTDFS 配置文件说明(tracker.conf)
# is this config file disabled# false for enabled# true for disableddisabled=false#用于说明这个配置文件是否可用,false为可用。# bind an address of this host# empty for bind all addresses of this hostbind_...
2017-05-08 21:28:34
1306
转载 FASTDFS 文件同步
文件同步延迟问题的提出 客户端将一个文件上传到一台Storage server后,文件上传工作就结束了。由该Storage server根据binlog中的上传记录将这个文件同步到同组的其他Storage server。这样的文件同步方式是异步方式,异步方式带来了文件同步延迟的问题。新上传文件后,在尚未被同步过去的Storage server上访问该文件,会出现找不到文件的现象。Fa...
2017-05-08 21:19:19
1540
原创 FASTDFS 介绍(一)
FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,Google FS以及FastDFS、mogileFS、HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。FastD...
2017-05-08 21:13:20
1066
fastdfs(5.08)版本安装所需的资源文件
2017-05-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人