自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(737)
  • 收藏
  • 关注

原创 Xxxxxx

数据库。

2024-04-01 17:11:30 160

原创 Spring Transaction 指定事务管理器问题

在平时代码中使用声明性事务时,直接在方法上面加注解即可,如下并没有指定事务管理器,为什么?因为只有一个数据源,只有一个事物管理器。多数据源,多个事物管理器时才需要指定事务管理器如下创建事物管理器@Primary但是创建的事物管理器名称是 defaultTransactionManager@Transactional 注解中默认的事物器管理器是 transactionManager为什么依然有效参考文章。

2024-03-29 16:00:44 476

原创 spring创建bean方式

参考以上文章首先IOC 是什么 是:控制反转 + 依赖注入(DI)创建bean与注入bean要区分开创建了说明已经在spring容器中了,要用的时候只是去拿现成的bean,只是依赖注入。

2024-03-13 10:17:16 416

转载 javaWeb项目中到底什么是单例,多例

另外要说一下,并不是说service或dao一定是单例,标准同第3点所讲的,就曾见过有的service中也包含了可改变的状态,同时执行方法也依赖该状态,但一样用的单例,这样就会出现隐藏的BUG,而并发的BUG通常很难重现和查找;如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。饿汉式在类创建的同时就实例化一个静态对象出来,不管之后会不会使用这个单例,都会占据一定的内存,但是相应的,在第一次调用时速度也会更快,因为其资源已经初始化完成,

2024-03-12 10:49:23 26

转载 synchronized和volatile的区别

在这里总结一下,在使用synchronized关键字的时候,本质上是否获得锁,是通过修改锁对象头中的markword的内容来标记是否获得锁,并由虚拟机来根据具体的应用场景来锁进行升级。简单地将上述几个零散的markword变化合在一起,展示在下面:抄录于 https://www.cnblogs.com/cqqfboy/p/15266792.html。

2024-03-12 10:47:20 29

原创 Web服务器和应用服务器

应用服务器是为客户端提供对业务逻辑的访问这种服务器,根据客户端的请求会将数据转化为动态内容,一般还需要数据库的支持,应用服务器的搭建很多时候依赖于应用程序的开发语言,各种编程语言生态下对应不同的软件, 比如使用Java语言开发的项目通常选择 Tomcat或者接jboss来作为程序运行的应用服务器,而使用python语言开发Web应用,一般会选用Django等python框架下的软件,来作为它的应用服务器。现在很多Web服务器通过加载插件也支持动态页面的处理,应用服务器本身也支持静态页面的处理。

2024-03-07 10:48:08 885

原创 SocketTimeoutException: Read timed out

调用第三方接口,报错,如下。

2024-02-28 10:40:52 1443

转载 Feign和openFeign区别和openFeign教程

当我们的Feign实现了fallback后,也就意味着Feign Client有多个相同的Bean在Spring容器中,当我们在使用@Autowired进行注入的时候,不知道注入哪个,所以我们需要设置一个优先级高的,@Primary注解就是干这件事情的。之前项目中需要在Spring Cloud中使用OpenFeign的情况,Spring Cloud的版本是目前最新的Greenwich.SR2版本,对应的Spring boot是2.1.7.RELEASE。@RequestBody的参数可以包括复杂类型。

2024-02-19 09:11:40 78

原创 mysql 批量查询取每一组最新一条数据

根据车牌号查询最新的一条交车记录的‘合同号’ ,与上面需要类似,这里只需要查询‘合同号’这个字段方式1直接把需要查询的字段加上contract_no,直接查,不用子查询查询所有数据发现最新的一条数据并不是上面查询的结果,对比id与contract_no,实际查询到的是最老的一条结论对MAX() 函数有误解,这个只是查询某个字段最大的数据,仅针对字段。想要查询最新记录,还是要关联查询。

2024-02-02 08:52:04 688

原创 字段使用函数是否会走索引

之前的印象中,字段上使用了函数操作,查询不会走索引。

2024-02-01 12:00:53 443

原创 记录job执行批量数据偶发执行失败问题

job读取一个中间表数据,执行频率为10min,读取为处理数据,状态同步到第三方系统。

2024-01-29 16:14:46 351

转载 RestTemplate-postForObject详解、调用Https接口、源码解析,读懂这一篇文章就够了

RestTemplate 是 Spring 提供的,用于访问Rest服务的同步客户端,提供了一些简单的模板方法API;底层支持多种Http客户端类库,因为RestTemplate只是对其他的HTTP客户端的封装,其本身并没有实现HTTP相关的基础功能,底层实现可以按需配置;SimpleClientHttpRequestFactory,默认配置,对应的JDK自带的HttpURLConnection,不支持Http协议的Patch方法,也无法访问Https请求;

2024-01-26 17:23:15 1342

原创 HttpHeaders 源码中headers成员变量为什么声明为final

引用类型变量所指向的对象之所以可以修改, 是因为引用变量不是直接指向对象的数据, 而是指向对象的引用的. 所以被final修饰的引用类型变量将永远指向一个固定的对象, 不能被修改;Lock和synchronized不用说,都是互斥锁,保障了共享资源在同一时刻只有一个线程可以访问,就不会出现可见性的问题。volatile的有序性是指写入修改后的volatile变量这个操作必定优先于 读取这个变量。: final修饰的变量会指向一块固定的内存, 这块内存中的值不能改变.分析一下答案,能对的上的。

2024-01-26 17:10:37 1161

转载 MySQL 数据库去重(distinct)

请看上面原文提前说明:distinct 用法存在误解1.这个关键子只能放最前面2.查询多个字段,无法根据某个字段去重,实际会根据查询的所有字段去重。

2024-01-26 14:47:33 202

转载 最详细说明spring cloud和Spring Cloud Alibaba的联系和区别

我们通过对springboot的使用,就知道,spring从来不是重复造轮子,而是对现有技术的封装和维护,举个简单例子,比如最早spring只提供了IOC和AOP的核心功能,而像ORM框架、缓存、MVC框架,spring只是提供了一种兼容以及支持,所以当时大家说spring是万能胶,可以把各种各样的框架整合进来。提起微服务,不得不提 Spring Cloud 全家桶系列,Spring Cloud 是一个服务治理平台,是若干个框架的集合,提供了全套的分布式系统解决方案。

2024-01-25 17:11:23 268

转载 Feign和openFeign区别和openFeign教程

Feign和openFeign区别和openFeign教程-CSDN博客

2024-01-25 17:09:51 19

原创 ifconfig 主机ip url记录

应该最终找到的是容器,先找容器端口9500 / 9999,怎么找到的,主机监听端口与容器端口做了映射。2.所有服务url ip都是10.129.22.252,前面是网段10.129.22,后面252为什么都是252,为什么这样配置。查看所有服务可知,部门所有服务url,都是10.129.22.252,不同的是‘主机监听端口’不同。1.服务部署两台服务,为什么每台监听两个端口,如上服务器 port 20508/20603。直接找到通过端口20503 找到 9500容器吗。3.访问url,怎么找到这个服务的。

2024-01-24 15:44:36 588

原创 记录xxl-job重复执行引发业务问题

1.创建运单,发现重复(同一个车架号两条记录)2.通知重复反馈,A系统读取中间表状态未处理数据,推送到B系统。

2024-01-24 11:08:21 578

转载 EasyExcel 的基本使用

不同对象和监听器则在创建ReadSheet对象时分别指定;ExcelReader对象指定则是全局生效,ReadSheet对象指定则只针对当前Sheet。INSERT INTO `tb_user` VALUES (11, '小粉', 28, '女', '广东汕头', '2022-11-09 23:38:04', 10000.11);INSERT INTO `tb_user` VALUES (4, '小青', 21, '女', '广东汕头', '2022-11-09 23:38:07', 10000.04);

2024-01-22 16:56:20 116

转载 poi、easypoi和easyexcel的使用

在平时的业务系统开发中,少不了需要用到导出、导入excel功能,今天我们就一起来总结一下,如果你正为此需求感到困惑,那么阅读完本文,你一定会有所收获!easypoi 同样也支持自定义数据结构导出导入excel。自定义数据导出 excel//封装表头entityList.add(new ExcelExportEntity("姓名", "name"));entityList.add(new ExcelExportEntity("年龄", "age"));

2024-01-22 13:41:17 72

原创 springboot git配置文件自动刷新失败问题排查

1.理解不对,除了git配置文件中配置了该变量,项目配置也配置了该变量,如下,把git中变量注释掉,项目中配置生效,同时说明读取配置顺序 git > 项目中配置文件。意思可以保证health接口可以调用吗,现在设置为false了, 关闭了安全认证,不是更可以健康检查了。2.management.security.enabled=true,该配置含义是什么,控制什么,refresh接口与这个配置关系是什么?处理:把配置true,注释掉,再次调用fresh接口,成功,响应如下,及返回了修改对变量名称。

2024-01-08 17:12:49 1045

原创 MySQLvarchar(5)可以存储多少个汉字,多少个字母数字?

从上面的语句执行时间分析可以看出,不考虑缓存因素,当使用limit的时候,"limit begin,num"这种形式比"limit num"这种形式效率低很多,因此,在使用的时候尽可能的使用第二种形式,比如说要循环获取一个表里面的数据,一次取出来内从放不下,这个时候就要按照id(或者其他排序字段)进行limit了,我们就可以通过获取上次的该字段临界值作为下次取数据的最小值,使用limit num这种形式效率会高很多。还是limit num1,num2?要知道limit使用不同的形式性能差距很大的。

2024-01-08 15:20:48 505

原创 关于mq消息丢失问题讨论

原因很简单,生产者发送到broker后当次通讯就结束了,broker并不会返回消息是否被消费端正确接收。MQ这种协议天然的就是单方向的,即A产生者只需要发送消息给broker并不需要在意有几个消费端订阅消息,而消费端订阅消息并不清楚是第几次推送过来的消息以及哪个生产者生产的消息,消费消息的客户端和生产消息的客户端并不会直接联系,这才是MQ的最基础也是最核心的点。而不是生产者与broker之间,QoS是保证的消息正确推送而不能保证消息发送失败时的重试更不谈什么重复消费了。1.消息日志标,消费记录,异步更新。

2024-01-05 09:51:33 446

原创 RabbitMQ 常用知识点总结,纯手绘23张图带你拿下

1、为消息设置过期时间会有一个缺陷,因为队列是先进先出结构,所以如果为消息设置过期时间,那么先进的消息一定会先被执行,后面的一定会先等到前面的消息执行完成后才被执行,如果前面的消息过期时间长于后面的,那么后面的消息即使到达过期时间后也不会被执行,必须等到前面的消息发送完才能执行。比如消费 C1 是 2,C2 是 3,那么开始的消息会先分配给 C1,直到 C1 中等待消息的消息队列长度为2时,下一个消息才会分配给 C2,然后C2也积累了3个消息后,继续C1、C2轮流分配。

2023-12-22 15:02:39 389

原创 雪花算法-hutool也有

static {

2023-12-22 10:40:54 362

转载 实践!在Spring Boot启动时添加方法运行,一文全懂!

在开发Spring Boot应用程序时,有时我们需要在启动时运行方法或一段代码。我们可以使用这些事件来执行代码,例如,在Spring Boot应用程序启动后,可以使用ApplicationReadyEvent执行代码。请注意,@postConstruct批注是Java EE模块的一部分,在Java 9中被标记为已弃用,在Java 11中已被删除。要通知spring boot我们的commandlineRunner接口,我们可以实现它并在类上方添加@Component批注,或者使用@bean创建其bean。

2023-12-14 14:02:40 124

转载 SpringBoot - @PostConstruct、InitializingBean、 ApplicationRunner 和 CommandLineRunner的执行顺序

另:@PostConstruct可以在容器没有完全启动的情况下能够进行初始化操作,而ApplicationRunner/CommandLineRunner的初始化一定是在容器完全启动之后执行的。System.out.println("3. 执行实现ApplicationRunner接口的方法 - run(ApplicationArguments args)...");System.out.println("1. 执行@PostConstruct注解的方法 - init()...");源码、示例及DEMO。

2023-12-07 10:20:07 116

转载 文件写入的6种方法,你知道哪种性能最牛逼吗

FileWriter 属于「字符流」体系中的一员,也是文件写入的基础类,它包含 5 个构造函数,可以传递一个具体的文件位置,或者 File 对象,第二参数表示是否要追加文件,默认值为 false 表示重写文件内容,而非追加文件内容(关于如何追加文件,我们后面会讲)。我们本文就来盘点一下这些方法,顺便测试一下它们性能,以便为我们选出最优的写入方法。Java 中的“流”是一种抽象的概念,也是一种比喻,就好比水流一样,水流是从一端流向另一端的,而在 Java 中的“水流”就是数据,数据会从一端“流向”另一端。

2023-11-27 15:06:34 159

转载 微信小程序获取用户手机号码,Java后台servlet解密(微信小程序调用微信支付也是大致的流程)

(2)将【code】、【小程序 appId】、【小程序 appSecret】、作为参数,使用okhttp请求微信后台登录凭证校验接口auth.code2Session,获取获取【openid】和【sessionKey】。5、Java后台使用【encryptedData】、【iv】、【sessionKey】解密获取用户手机号返回给微信小程序。3、调用WXCore类的decrypt方法,将【appId】、【iv】、【sessionKey】作为参数,对【encryptedData】进行解密,获取手机号码。

2023-11-21 19:34:11 663

转载 一篇文章带你搞懂微信小程序登录

现在已经无法通过这个 api 来获取用户的头像和信息的,微信给的理由是:当用户进入小程序的时候,很可能因为点击了不授权而导致无法使用改小程序,于是废除了该接口。如果你还是想要获取用户的头像,请使用 wx 提供的新的接口,但是好像无法在 uniapp 中使用了。所以现在想要完成登录的这一套流程,还是需要从 login 做起,通过后端从微信服务器获取。后端:(这里是 express 的例子)

2023-11-21 16:38:13 66

原创 记录一次数据库内存占满

一,背景及表现用户普遍反馈业务功能,无法加载出数据,服务挂了二,数据库指标三,排查方反馈排查方反馈:第二个查询节点查全量数据导致的,就是没查出来但是一直在查四,分析1.应用服务器问题,内存溢出了,因为查询了大量数据2.数据库问题(内存占满,连接数占满)过一会会好,如果服务器出现问题,应该需要重启,无需要重启就好了,说明应该服务器出现了,压根数据没有加载到服务器。同时看数据库内存占用已经100%了,说明问题出现在数据库具体原因呢,是因为量吗,还是因为慢。

2023-11-10 10:20:22 147

原创 OOM排查

1.一次性申请对象太多,创建了大量对象,尤其从表中读取了大量数据,循环中大量创建对象,放入list中。其中 /path/to/dumpfile.hprof 是 dump 文件保存的路径,PID 是进程的 ID。如果没有导出dump,如何在服务器直接查看对象,不过太多了,上面的就被覆盖了。2.内存资源耗尽为释放,如connction,线程。找三角形-垃圾回收节点对应的元素,右击选择,在线程中显示。3.堆空间分配过小,尤其存在大对象。具体是找三角形标记的内容,即垃圾回收根节点。点击进入,找对应代码。

2023-11-08 17:15:22 80

转载 MySQL主从复制,需要VIP吗?(详解VIP的作用和必要性)

MySQL主从复制是一种常用的解决方案,它可以实现数据的备份和读写分离,提高系统的可用性和性能。在MySQL主从复制中,VIP是一个非常重要的组成部分,它可以实现主从切换,提高系统的可用性、性能和可靠性。通过读写分离,可以有效地减轻主库的负载,提高系统的性能。VIP可以实现主从切换,同时,VIP还可以实现负载均衡,将请求均匀地分配到各个从库上,从而提高系统的可靠性。VIP可以实现主从切换,VIP的切换时间通常在几秒钟之内,可以大大缩短系统的宕机时间,提高系统的可用性。1、提高系统的可用性。

2023-11-03 10:11:36 596

转载 主备 主从 主主 集群和分布式区别

就是除数据同步,主备之间还要有个状态传输过程,来让备机只要现在主机过得好不好,可以是主机主动推送它的状态给备机,或者是备机去索要状态。②主从延迟,读操作分配给从库,就会存在数据同步的延迟问题,比如某个人注册了账号之后,登录走的是从机,这时候数据还未从主机同步过来,那可不让人很难受了。主机的意思当然是以它为主了,读写都是主机上,而备机呢就是备用,默默的在背后吸收主机的数据,在主机还活着的情况下,备机的唯一使命就是同步主机的数据,不对外提供服务。2)优点:简单,主备之间只有数据同步,不需要考虑别的情况。

2023-11-03 09:48:11 473

转载 Java多线程并发控制工具信号量Semaphore,实现原理及案例原创

公平模式与非公平模式的主要差异就在获取许可时的机制,非公平模式直接通过自旋操作让所有线程竞争许可,从而导致了非公平。Semaphore类的几个主要方法如下所示,其中提供了两个构造函数,相关的两个参数为许可最大数和是否使用公平模式,其中FairSync是公平模式的同步器而NonfairSync则是非公平模式的同步器。我们先看一个简单的例子,首先实例化一个拥有5个许可的信号量对象,然后一共有10个线程一同尝试获取5个许可,得到许可的线程将value进行累加1,接着睡眠五秒,最后释放许可。

2023-10-31 13:49:28 293

转载 Redisson源码解读-分布式锁

Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。Redisson有一样功能是可重入的分布式锁。本文来讨论一下这个功能的特点以及源码分析。本文介绍了Redisson的加锁、解锁、看门狗机制,以及对Redis发布订阅机制的应用。因为篇幅有限,很多细节聊得不够深入。此外Redisson的异步机制、对Netty的使用等都是很值得水文章的。参考资料万字长文带你解读Redisson分布式锁的源码 - 知乎 (zhihu.com)

2023-10-30 14:25:10 86

转载 Redis分布式锁-这一篇全了解(Redission实现分布式锁完美方案)

在某些场景中,多个进程必须以互斥的方式独占共享资源,这时用分布式锁是最直接有效的。随着技术快速发展,数据规模增大,分布式系统越来越普及,一个应用往往会部署在多台机器上(多节点),在有些场景中,为了保证数据不重复,要求在同一时刻,同一任务只在一个节点上运行,即保证某一方法同一时刻只能被一个线程执行。

2023-10-30 14:21:35 343

原创 设计模式乱记

2023-10-27 17:10:11 71

原创 mq消费并发排队及幂等机制实现-redisson

主要为了解决并发访问排队执行及重复下发保证幂等的问题实现技术方案如何实现并发访问时,请求排队执行方法。@Redssion如何实现MQ重复下发时,保证幂等。@redis。

2023-10-26 17:15:43 296

原创 java使用注解记录异常方法日志

3,使用ThreadLocal,定义,异常单 全局变量,负责不同类的参数传递(应该是方法的参数传递,同一个方法多线程访问,记录线程级别访问数据)在开发过程,如订单创建逻辑,如果方法异常,需要记录相关的日志信息,比如一些重要的业务信息,及异常信息。2,AOP拦截注解,后置异常通知。2.上下文参数传递类。

2023-10-20 16:29:09 137

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除