- 博客(49)
- 收藏
- 关注
原创 并发控制之Semaphore
信号量,用于控制同时访问特定资源的线程数量,通过协调各个线程,以确保对共享资源的访问不会导致冲突或数据不一致等问题,有点类似令牌桶,内部维护一组许可证,获取许可证,获取到了就执行,没获取到就阻塞直到有许可证释放许可证。
2024-12-19 18:29:10
262
原创 并发控制之CyclicBarrier
同步辅助类,多个线程互相等待,直到到达同一个同步点,再继续一起执行,可有重复利用,通过构造函数可以设置一个等待的线程数,线程调用await方法表示自己已经到达屏障点,然后会等待其他线程也到达。如果当前线程不是最后一个到达的,它将被阻塞在这里,直到所有线程都调用了await方法。
2024-12-19 18:27:21
186
原创 并发线程控制之countDownLatch
允许一个或多个线程等待其他一组线程完成操作。它内部维护着一个计数器,当调用countDown方法时,计数器的值会减 1,当计数器的值变为 0 时,所有等待该的线程都会被唤醒并继续执行。
2024-12-19 16:31:29
317
原创 线程join() 方法
join在线程thread 类中定义,当调用join方法时,当前调用的线程会阻塞,直到被调用线程执行完毕,才继续执行可以协调多个线程之间的执行顺序,实现线程之间的同步。
2024-12-19 16:30:53
186
原创 elasticsearch-java api 8 升级
公司项目从升级到了,es的服务端也跟着升级到了es8 ,而es的客户端7和服务端8 是不兼容的,客户端es 7使用的是:es 8 升级到:两者之间查询api的变化还是比较大的,也花了不少时间在这个修改上,所以记录下中间的切换姿势,仅供大家参考。
2024-03-18 18:25:24
1359
1
原创 zookeeper 学习(一):简单认识zookeeper
highly reliable distributed coordination. 来自官网,高可用的分布式协调服务,应用最多的场景就是用来做其他服务中间件的协调者,我最开始接触zk ,是用来做注册中心,后来搭建kafka,需要用zookeeper。其实zk内部就想一个文件系统一样,内部数据以节点znode的形式保存,节点的特性去帮助我们实现以上这些功能。个人学习,这里推荐使用docker 安装,方便快捷,默认端口 映射 2181。官网:https://zookeeper.apache.org/
2023-03-27 19:54:00
641
1
原创 记一次线上es慢查询导致的服务不可用
查询交互设计不合理,报错的es索引,在es库是一个数据量很大的索引,这病频繁请求会导致cpu和频繁的gc后端接口么有校验,导致用户复制输入错误信息,也会去做查询操作,未做查询条件的过滤。
2023-02-27 10:15:03
2316
原创 spring 事务源码解析
spring 事务编程式事务编程式事务,使用TransactionTemplate 控制,就是由我们自己写代码手动控制事务的开启提交回滚,事务粒度细,TransactionTemplate 是一个模板模式的类,我们只需要 关注execute 方法即可public class TransactionTemplate extends DefaultTransactionDefinition implements TransactionOperations, InitializingBean {
2022-04-20 12:06:34
806
原创 spring 事件执行流程源码解析
spring事件观察者模式observer观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。spring事件机制,mq 都是 观察者模式的实现spring event 核心类1、ApplicationEvent 继承自JDK自带的 EventObject, 抽象事件类,自定事件可以继承该类,例如订单创建事件,订单更新事件,由某个动作出发
2022-04-08 09:37:27
634
原创 mapstruct 用法详细介绍
mapstruct 用法mapstruct 是什么mapstruct一款是用于生成类型安全的bean映射类的Java注解处理器 JSR 269规范,只需要定义一个接口,配置字段映射规则,使用注解处理器,在代码编译阶段,生成对应的映射实现类,使用的是纯get/set方法,无反射调用,并且在编译阶段可校验错误官网:https://mapstruct.org/documentation/stable/reference/html/#_apache_mavenJSR 269规范:http://www.jcp
2021-12-03 17:19:35
1794
原创 Dubbo spring cloud 学习(三) spring cloud alibaba dubbo nacos配置中心整合
Dubbo spring cloud 学习(三)spring cloud alibaba dubbo nacos配置中心整合spring cloud alibaba版本 2.2.1.RELEASEspring boot 版本2.2.1.RELEASE服务提供者pom 文件引入依赖 <!-- Dubbo Spring Cloud Starter --> <dependency> <groupId>com.al
2021-04-01 13:44:03
386
原创 Dubbo spring cloud 学习(三)spring cloud alibaba dubbo nacos整合
Dubbo spring cloud 学习(三)spring cloud alibaba dubbo nacos整合spring cloud alibaba版本 2.2.1.RELEASEspring boot 版本2.2.1.RELEASE服务提供者pom 文件引入依赖 <!-- Dubbo Spring Cloud Starter --> <dependency> <groupId>com.alibab
2021-03-24 08:44:54
275
原创 订单延时关单业务随想
订单超时关闭常见的交易系统中都存在这样的业务场景,用户下单之后(扣减库存,有的是在支付之后扣减库存),等待用户支付,这时如用户超过业务设置的支付时间之后,订单自动关闭,释放订单占用的资源(库存,用户优惠券,),这种业务场景下该怎么处理呢定时任务这种是最简单,最易处理的办法,直接使用定时任务,在订单生成是根据业务配置同步生成超时时间保存在订单表,启动一个定时任务,定时扫描订单表,已过超时时间未支付的数据,关闭订单,优点处理简单,快速上线,适合订单量不大,实时性要求不高的场景缺点性能差,如果
2021-03-21 22:33:34
307
原创 spring boot + mybatis plus 动态数据源实现
spring boot + mybatis plus 动态数据源实现参考官网文档https://mp.baomidou.com/guide/dynamic-datasource.html#%E6%96%87%E6%A1%A3-documentationpom引入依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-data
2021-03-20 12:52:37
527
原创 Dubbo spring cloud 学习(二)dubbo功能特性
Dubbo spring cloud 学习(二)dubbo功能特性多协议支持服务可以暴露多种协议,默认dubbo协议dubbohessianthriftrmirest…@DubboService(protocol = {"dubbo","rest"})public class LoginServiceImpl implements ILoginService { @Override public String login(String userName, String
2021-03-10 20:36:23
171
原创 spring cloud alibaba学习(一)–Dubbo
spring cloud alibaba学习(一)–DubboDubbo spring cloud 是基于 阿里开源的 dubbo 技术栈,按照spring cloud 规范实现的一套微服务治理技术框架,和 spring cloud (基于 netfix 开源的一些技术栈)类似功能spring cloudspring cloud alibaba分布式配置(Distributed configuration)Git、Zookeeper、Consul、JDBCSpring Clou
2021-02-21 09:15:54
356
原创 spring cloud eureka 服务分组隔离
spring colund eureka 服务分组隔离spring colund eureka 作为注册中心,feign 服务之间调用,原生不支持服务的隔离,比如以下场景: 服务A 调用服务 B(b1,b2),某些情况下只想让A请求到b1,实现服务之间的分组隔离或者 共用注册中心,配置中心,公共的服务模块,开发人员本机调试的时候不用启动大量的服务,导致开发机运行缓慢实现思路其实要实现很简单,参考MQ消息分组消费的原理,只需要在服务注册的时候,将每个服务实例分组标示好,然后自定义实现负载
2021-02-19 16:17:13
2944
5
原创 drools规则引擎实战(从入门到放弃)
规则引擎从入门到放弃demo定义drl规则文件package 与Java语言类似,drl的头部需要有package和import的声明,package不必和物理路径一致。import 导出java Bean的完整路径,也可以将Java静态方法导入调用。rule 规则名称,需要保持唯一 件,可以无限次执行。when 条件语句,就是当到达什么条件的时候then 根据条件的结果,来执行什么动作end 规则结束package rules // 包名 和class 包名不是同一个概念
2020-11-27 11:00:26
856
原创 git 代码提交注释模板
git 代码提交注释模板idea使用插件 git-commit-templatehttps://plugins.jetbrains.com/plugin/9861-git-commit-templategit bash下使用模板新建模板文件common-commit_templatetype of change:scope of this change:short description:long description:breaking changes:clos
2020-11-27 10:49:49
1312
原创 spring boot 整合 redis 实现分布式锁
spring boot 整合 redis 实现分布式锁利用redis setnx 命令的特性实现分布式锁SETNX key value只在键 key 不存在的情况下, 将键 key 的值设置为 value 。若键 key 已经存在, 则 SETNX 命令不做任何动作。SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。返回值命令在设置成功时返回 1 , 设置失败时返回 0设置key 过期时间,防止死锁具体实现代码lock接口publ
2020-08-28 15:19:28
203
原创 链路追踪skywalking
skywalkingAPM(应用性能管理)工具链路追踪 https://www.sohu.com/a/319806744_100123073性能监控SkyWalking是一个开源的观测平台,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据。SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至可以观测横跨不同云的系统。SkyWalking 更像是一种现代的应用程序性能监控(Application Performance Monitoring,即APM)工具,专为云原
2020-07-09 11:12:00
1075
原创 es 库 elasticsearch-rest-high-level-client
注意不同es版本的兼容可能不同pom文件引入依赖 <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>6...
2019-08-02 17:44:44
1436
原创 MDC + 微服务请求链路追踪spring cloud sleuth
MDC + 微服务请你去链路追踪spring cloud sleuthMDCmdc相信很多人都已经知道是什么东西了,我们在可以在mdc中put某些属性,比如在请求开始时生成一个唯一的requestId,登陆的用户id,登陆的设备类型等等,然后在日志文件中取出打印,来帮助我们排查问题等 //可以在filter或者intercepter中putmdc数据,也可以通过aop拦截在防治法执行...
2019-06-11 11:21:19
4031
原创 spring boot 整合rabbit MQ
spring boot 整合rabbit MQrabbit MQrabbit MQ 是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用[Erlang]语言编写的,而集群和故障转移是构建在[开放电信平台]框架上的。所有主要的编程语言均有与代理接口通讯的客户端[库] 来自百度百科 rabbit MQrabbit 和其他消息中间件不同的...
2019-05-27 18:34:05
355
原创 spring 和spring boot 中的dispatcherServlet 的不同
dispatcherServlet 作用:dispatcherServlet 是作为我们spring web应用的 front controller 前端控制器,继承自servlet,拦截/* 的请求,然后根据请求的uri,将请求分发给我们的application controller(command)去处理具体的请求,1.spring我们以前用spring +spring mvc ...
2019-03-03 13:12:16
1198
转载 Java语法--通配符的上界通配符和下界通配符
<? extends T>和<? super T>是Java泛型中的“通配符(Wildcards)”和“边界(Bounds)”的概念。<? extends T>:是指 “上界通配符(Upper Bounds Wildcards)” <? super T>:是指 “下界通配符(Lower Bounds Wildcards)”为什么要用通配符和边...
2019-02-13 15:37:49
931
原创 springboot使用WebMvcConfigurerAdapter添加javabean配置(Interceptor/messageConvert等)
WebMvcConfigurerAdapter配置类其实是Spring内部的一种配置方式,我们可以在里面声明一些javabean来进行个性化的定制继承WebMvcConfigurerAdapter类,并加上@Configuration注解1、拦截器 ,只要重写 addInterceptors方法就可以添加拦截器@Configurationpublic class LocaleCo...
2018-11-19 11:03:58
658
原创 spring jpa 列名映射问题Unknown column 'redisrole0_.create_date' in 'field list',@column无效
在使用spring jpa 访问数据库表时,在实体类上定义的@column 会无效,package com.lujia.domain;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table...
2018-11-16 16:15:15
4876
5
原创 设计模式之工厂模式(行为模式)
设计模式(design pattern) 是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。java中的设计模式:常见的23中设计模式,可以分为三种类型 创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原...
2018-09-09 18:23:17
494
原创 springboot-整合mybatis
1.idea创建springboot工程工程目录2. pom.xml依赖如下 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan...
2018-09-09 16:41:53
138
原创 git 不用每次输入用户名密码
首先输入 git config --global credential.helper store 命令,然后在git pull或者push的时候会要求你输入用户名或者密码,输入一次之后就会保存下来,下次在操作就不会要求输入用户名和密码了...
2018-04-20 21:00:23
558
原创 docker--使用docker搭建redis集群
1.redis介绍(百度来的)Redis是一款开源的、高性能的键-值存储(key-value store),它是用ANSI C来编写。Redis的项目名是Remote Dictionary Server的缩写,但它常被称作是一款数据结构服务器(data structureserver)。Redis的键值可以包括字符串(strings)、哈希(hashes)、列表(lists)、集合(set
2017-08-10 09:52:05
800
原创 java--几种单例式
单例模式是我们经常用的设计模式之一,下面记一下几种常用的单例模式的写法,方便自己查阅1.饿汉单例模式--缺点就是不能延迟加载 class SingltonDemoOne{ private static SingltonDemoOne singltonDemoOne=new SingltonDemoOne(); private SingltonDemoOne() { ...
2017-08-10 09:08:26
180
原创 java--多线程
1,java中线程的生命周期和5种状态经典图线程的生命周期中有5种状态01:新建状态 (new 一个线程),就是我们new 一个线程对象,此时线程是新建状态 02:就绪状态(runnable),调用线程的start()方法,线程就进入了就绪状态 ,调用start方法的线程并不一定会马上就开始执行,就绪状态表示线程做好了准备,随时等待cpu有资源的时候执行。 03:运...
2017-08-03 17:13:55
237
原创 maven—profiles区分环境的配置文件
在我们的开发过程中一般会有 本地--测试--预发布--生产 几个环境,相对应的数据库连接配置等的一些配置信息都是不一样的,使用maven 的profiles 可以很方便的来区分这些配置文件在项目的pom文件中定义 test true
2017-08-03 09:35:06
1663
原创 docker--安装tomcat
上一篇介绍了win10安装docker ,今天来搞一下docker的基本操作,看看docker可以用来干什么(相信很多小伙伴在看刚看docker的资料的时候都很疑惑)
2017-08-01 16:58:43
318
原创 win10安装docker
1.系统:win10 专业版,10586 之后的版本2.下载docker for windows 地址:https://download.docker.com/win/stable/InstallDocker.msi3.开启windos的 hyper-v功能,控制面板-程序-启用关闭windows功能-勾选hyper-v,重启4.安装点击就可以运行了,我们
2017-08-01 11:30:00
245
原创 maven jar包上传--POM was created by Sonatype Nexus问题
今天遇到一个奇葩问题,记一下别的项目组同事更新了jar包,给了我一份让我上传到私库,贴一下我上传的方式,结果在项目中导入这个包的时候,包里面的pom文件居然变了,jar包里面的依赖不见了 POM was created by Sonatype Nexus造成的后果就是jar包依赖的东西都不能自动导入,好多类找不到, 把packaging改成pom还是不行,百度也是找不到答案
2017-07-28 10:10:00
3950
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人