自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 资源 (4)
  • 收藏
  • 关注

原创 SXSSFWorkbook实现分页查询导出

SXSSFWorkbook实现分页查询导出

2024-04-11 16:28:18 367

原创 面向AI编程,AI可以为我们做哪些事情

本来这篇文章是2023-10月发出的,放在草稿箱比较久了。今天重新捡起来发下。内容很长,很干。希望对大家有启发,编程路上提升效率。

2024-04-09 17:38:19 233

原创 性能爆炸!SXSSFWorkbook原文件上追加写入&分页导出

以上工具类里提供的都是一次性导出的方法。那如果说需要多次导出咋整呢。说实话,支付系统里头最头痛的就是导出大数据量,性能瓶颈第一卡在数据库资源,第二卡在poi性能。以上方法都是经过系统测试的,用于记录自己遇到的问题,如果你也遇到并且有疑问欢迎留言解答。

2024-04-01 16:07:33 267 6

原创 mybatis流式游标查询-导出DB大数据量查询OOM问题

Service层—需注意加上事务注解表示该service并不是在mapper结束时结束事务,而是等整个service结束才结束事务,不然会出现只能读取到第一段游标的结果集。客户端而言,数据每次读取都是从本机器的内核缓冲区,所以性能会更快一些,一般情况不必担心本机内核无数据消费(除非。服务端传递来的数据,在客户端不做任何业务逻辑,拿到数据直接放弃,会发生客户端消费比服务端超前的情况)流式查询,将结果集一条一条的拉取进内存,比较依赖网络,可能会造成网络阻塞。弊端就显而易见了,如果查询数据量过大,会不断经历。

2024-04-01 15:39:38 896

原创 mysql忘记密码重置密码步骤

5.启动mysql服务,net start mysql.这时候新开一个cmd窗口,直接可以mysql -u root 登录。1.使用管理员权限打开cmd窗口,win+r后输入cmd,然后按Ctrl+Shift+Enter.6.修改密码,原密码是加密的所以查到也不知道。3.找到mysql安装目录下的my.ini文件,使用管理员权限打开。7.关闭mysql服务,把my.ini文件还原。2.停止mysql服务,如上图net stop mysql。root123就是root用户的密码了。这时已经可以登录了。

2023-08-02 14:53:38 248

原创 CSDN5周年创作纪念日

这种问题记录下来的价值就不一样。在这里,我结识了许多志同道合的朋友,与他们交流互动,相互学习。不知不觉进入了CSDN5年了,还记得我第一天加入CSDN时是在实习,那时候啥都不懂只会CRUD,我在寻找技术解决方案时意外发现了CSDN。未来的路还很长,我愿意继续在这片创作的土地上耕耘,用心去书写每一个字,见证自己的成长与进步。我的模块各有特色,并发这块我觉得是写的不错,提供给别人价值的还是我的第一篇文章。

2023-07-24 15:52:18 117

原创 结合ChatGPT制作PPT

整体流程是先找个第三方PPT制作网站,看下支不支持文本转PPT功能,有这样功能基本都能用GPT操作。我本次讲的事务相关的内容,可以看下最终成品效果,整体排版还不错,PPT页数少了就需要在文本中多新增一些内容输出,PPT页数也会随着增多。缺点:大部分适用比较简短的PPT制作,精细化的ppt还是需要二次优化,有些第三方网站语法比较奇怪,需要调教GPT才能生成对应的文本结构。今天看到圈友的一个AI分享,然后自己本身需要做一个分享的PPT。mode=demo)具体操作参考,比较细节,我是看了半小时就做完了。

2023-07-17 11:31:22 7063 3

原创 NoClassDefFoundError:Could not initialize class com.sun.proxy.$Proxy65

Could not initialize class com.sun.proxy.$Proxy65

2023-07-03 15:35:04 361

原创 第三方jar包引入项目,发布到本地和远程仓库

本地引用jar的话可以有两种方式。第一种就是本地包引用,如下将包放下工程下,然后maven指定。但这种方式在打包层面可能会有很多奇怪的问题。加上类似Jenkis构建会检查项目规范,不允许在工程中单独放入jar包,所以好的方式是将该包传到仓库直接引用。

2023-04-26 11:17:04 1356 1

原创 Mybatis流式游标查询-大数据DB查询OOM查询问题

mybatis大数据查询解决方案

2023-02-15 17:33:55 2797

原创 linux安装redis

redis搭建

2022-12-29 23:07:06 121

原创 unable to find valid certification path to requested target

https调用

2022-12-01 10:59:51 17853

原创 poi导出excel生成密码文件的版本问题

poi导出

2022-11-23 13:49:22 776 1

原创 非对称加密的公私钥用法

非对称加密的公私钥用法

2022-11-10 19:00:51 309

原创 多线程操作List

多线程

2022-07-15 14:53:39 4347

原创 maven子依赖版本覆盖父依赖

比如父依赖定义了jaskson.version为2.13.3,在中进行管理就会锁死版本。 在子依赖中指定版本也会无法覆盖,需要在子依赖的中也指定

2022-07-11 11:27:29 3688

原创 多线程-线程池的基本使用及原理

基本认识jdk中提供了Executors框架获取几类线程池,经典的四类single(单例),fixed(固定),cache(缓存),Schedul(定时)。工作方式(如果不满足就流向下一步),创建核心线程---->队列存储--->创建救急线程--->拒绝策越。其中单例和固定线程池队列采用LinkBlockQueue无界队列当池中没有可用的线程时,优先放入队列中,cache使用同步有界队列,该队列特点是无容量,即有任务就创建线程不会往队列放,Schedul采用延迟队列,该队列会对..

2022-05-19 15:59:19 271 1

原创 多线程-无锁并发CAS,volatile,juc原子类

ReentrantLock接口中其实采用了CAS的思想,这个方法底层来源于AQS。再底层是基于unsafe类的native方法去实现无锁并发。CAS调用只需要传入旧值与新值,如果旧值不正确则不会修改成功。

2022-05-16 14:46:18 183 1

原创 多线程-ReentrantLock的特性及用法

ReentrantLock实现Lock接口,重写了Lock类中的方法。具有以下特性1.可重入。即在同一个线程中可对同一个lock对象重复加锁。public class TestReentrant { static ReentrantLock lock = new ReentrantLock(); public static void main(String[] args) { method1(); } public static void met

2022-05-10 17:57:47 298

原创 springboot中非容器类获取配置文件数据

如果是被spring容器所管理,一般采用@Value注解就可以读取到application.yml文件的内容。但是不被spring容器管理,使用@Value是无效的。注入时会是NULL。但就是会有这样的场景,此时可采用在springboot启动类中将环境注入到某一个公共配置类,该类所有属性为公共静态属性攻外部类直接使用。@SpringBootApplicationpublic class DemoStarterTestApplication { public static void ma

2022-04-22 16:53:35 2240 1

原创 多线程-线程通信(wait-notify,await-single,park-unpark)

在多线程场景中,如有些线程需要依赖另外线程的结果而继续执行,如多个线程处理请求,有的处理的快有点慢。快的需要等待慢的线程结果一起提交执行结果。都会涉及到线程间的通信,就是A线程告知B线程处理的结果是怎么样,B线程再执行对应逻辑。通信比较经典的就是采用等待通知模式,当然还有join,volilate等也可作为通信手段。本文重点讲下API层面的通信。举个例子,三个线程T1,T2,MAIN的场景,T1因为条件不满足进入等待状态,等待其他线程的唤醒(可理解为孩子吃饭没辣条自己关上门在房间里等待辣条)。T2的工作

2022-04-22 16:02:45 464

原创 多线程-syncronized的应用与原理分析

synronized许多开发人员看到就认为是重量级锁,其实不然,JVM对它定义有很多种状态。偏向锁->轻量锁->重量锁。这其中有很多的优化过程,业务概念被称为锁膨胀,锁消除,锁撤销。下面来具体分析一下。首先syncronized本质作用于对象上,修饰普通方法锁this对象,修饰静态方法锁类对象。以下代码说明。@Slf4jpublic class SyncronThread03 { //以下代码效果一样 public synchronized void say(){

2022-04-14 22:07:08 622

原创 多线程-Thread类的常用方法及使用场景

众所周知,操作线程就必须熟读线程的API方法,万一你开个多线程刹不住车就歇菜了,下面就介绍一些API基本用法。包括sleep,join,yield,interrupt。sleep,让当前线程睡一会。原生用法Thread.sleep(毫秒),会抛出一个打断的异常;此方法可防止CPU100%的问题,如果你代码中有轮训机制,就会体验到。while(true) 中加上一个sleep,CPU至少会减低80%消耗。一般我们采用自制工具类。因为JUC中支持改玩意,不需要每次去catch异常public clas

2022-04-12 15:47:06 504

原创 多线程-java线程创建的四种方式

java中表面有四种创建线程的方法,其实可以说是两种1.通过Thread类,重写run方法。再调用其start。2.通过Thread类,实现Runable接口重写run方法。将Runable对象传入Thread类构造方法中,再调Thread类的start。3.通过Thread类,通过FutureTask和Callable接口重写run方法,将实例对象传入Thread类构造方法中,再调Thread类的start。4.通过ThreadPool来创建线程。需要往线程池中提交Callbale对象或R

2022-04-12 12:28:11 2267

原创 Oracle在navicat查看执行计划,order by时间索引优化

select * from TB_SS_INFORMATION_CN order by PUB_DATE desc ;该表目前10w数据,再不建立索引的情况下,执行此SQL时间为1min.可查看其执行计划:先执行 EXPLAIN PLAN FOR select * from TB_SS_INFORMATION_CN order by PUB_DATE desc ;再执行 select * from table(dbms_xplan.display); 主要看rows。如果都显示100k了那说明就

2022-03-07 16:38:22 2828

原创 设计模式:观察者模式

今收到要对接外部系统需求,因为该产品属于资讯产品。内容是由外部系统编辑,编辑完成后就要通过接口方式通知我方系统,我方系统根据调用接口的参数来确定更新哪些内容。这看上去就属于一个发布订阅模式,可采用MQ去实现。可由于某些因素无法使用MQ。此时的场景就可以用观察者模式解决。举个更具体的例子,A类资讯 分A1,A2,A3B类资讯 分B1,B2,B3 当A类资讯在外部系统编辑后,我就知道要去更新A1,A2,A3的内容。此时A类B类资讯可抽象成一个Sender接口,表示被观察者(发布者)。A1,A2,A3也可抽.

2022-01-16 16:50:35 228

原创 设计模式:模板模式

模板模式 就是将通用方法抽象到父类作为模板,将公共的结构化逻辑在父类中完成。子类继承父类其通用方法实现不同业务逻辑。一般来说通用方法定义为抽象方法,公共逻辑方法使用final修饰不让子类重写。如人的一天按早中晚三餐吃饭,每个人每顿吃的不一样。但顺序肯定是早中晚,这样就可以用模板方式实现。人生活接口public abstract class PersonLife { abstract void monEat(); abstract void lunchEat(); abs

2021-12-21 10:55:18 83

原创 java8中list的高级玩法

最近频繁做List的一些操作,换成java8后发现有的可以直接通过steam流完成快速开发。记录一下List<A> list = new ArrayList<>();@Datapublic class A{private String name;private int age;private Date birthday;}List<A> list = new ArrayList<>();数据字段过滤list

2021-12-04 18:38:03 1026 2

原创 No active profile set, falling back to default profiles: default问题

这个问题出现在多环境配置切换时,springboot会提供一个active指定编译时加载哪个配置文件。spring: profiles: active: dev有时候明明指定了active确发现还是不生效,走了默认的配置。如果有些业务参数时放在配置文件中的就会报Could not resolve placeholder 'CM3.WORKING_DIR' in value "${CM3.WORKING_DIR}" 类似这种错误。 但这类问题一般在配置文件层面检查能查出。今天一问题.

2021-12-04 18:15:58 1884

原创 设计模式:策略模式

策略模式很大方面是为了解决代码中多层嵌套if else的问题。当某一类业务有共同特性时,并且分为多个场景要走不同的逻辑时,比如if(我是人) deal(我要吃饭) if(我是牛) deal(我要吃草)if(我是大熊猫) deal(我要吃竹子) 这样如此多的业务的话 会变成if() else if() else if() else{} 如果中间if中再带if判断条件,整个代码看起来就晕掉。这时候可以使用策略模式美化代码。定义一个共同接口public interface Person { v.

2021-11-30 21:07:57 483

原创 设计模式:代理模式

代理模式分为静态代理和动态代理两种,静态代理就是一个代理类将原来真实业务类的方法全部实现了一遍,并持有原来业务类的引用。对外提供API供调用。这样外部调用都是调用代理类。 动态代理例举JDK动态代理,将方法在运行过程中动态传入,并赋予源对象的引用。两者的区别就是动态代理会更简洁,能动态生成代理。不需要编译前先定义好代码。看实例:静态代理公共接口public interface Life { void eat(); void sleep();}真实业务类public

2021-11-29 21:06:45 137

原创 springboot中的controller层增加事务控制

大多数编程者习惯会在service层加事务控制,当一个controller层调用了多个service的update或者insert方法时,第一个成功了,第二个失败了。那么就会有第一个的事务会回退吗的困惑。其实通过在方法上@Transactional注解就可以控制。但在controller中不要使用try catch被捕捉了就不会回退事务。反正自己动手试试就知道。controller //可行 @PostMapping("/updateCustTel") @Transactional

2021-11-27 16:44:17 6026

原创 设计模式:装饰器模式

装饰器模式4点:(1)装饰对象和真实对象有相同的接口。这样客户端对象就可以以和真实对象相同的方式和装饰对象交互。(2)装饰对象包含一个真实对象的引用。这样做的目的其实对外来说是调用装饰器的方法,其实调用的是具体真实对象的方法。(3)装饰对象接受所有的来自客户端的请求,它把这些请求转发给真实的对象。(4)装饰对象可以在转发这些请求以前或以后增加一些附加功能。这样就确保了在运行时,不用修改给定对象的结构就可以在外部增加附加的功能。举例子:现在建成了一栋楼房,但是啥都没有。这时候就需要进行装修

2021-11-15 20:51:25 260

原创 设计模式:过滤器模式

过滤器模式思想就是不同的业务规则对同一个数据进行过滤后得到最终数据。一般适用于对象属性过滤。比如现在做人信息调查,有根据姓名和年龄去过滤信息。那这里就是两个过滤器AgeFilter,Nlter。面向的一个数据就是人的信息Person。但在jdk1.8通过steam新特性可快速实现过滤器模式。只需要理解下过滤器的思想即可。Person类public class Person { private Integer id; private String name; private

2021-11-05 14:56:54 120

原创 设计模式:桥接模式

桥接模式是类的功能层次结构和实现层次结构相分离,使二者能够独立地变化,并在两者之间搭建桥梁,实现桥接。但业务上来说一定是有关联性的。比如人的一天有工作和饮食,肯定就是先吃完饭再工作。吃饭里面又有很多种吃法,吃炸串,吃米粉。工作也有很多种,写笔记,敲代码。那么工作和饮食就可以分开作为公共的抽象类或者接口。如果这两个东西要交叉用,就需要一座桥连接起来。生活的接口:public interface PersonLife { void drink(); void eat();}...

2021-11-02 17:21:59 75

原创 设计模式:适配器模式

适配器模式本质就是通过一个适配器类集成两个或多个不同类的方法,达到通用目的。如A类已经有一个sendSms()方法发送短信,B类也有个sendEmail方法发送邮件。B类实现了T接口,所以T接口有sendEmail方法。然后现在想通过T接口new出来的实例化对象去调用A类的sendSms方法。这时候就可以用到适配器类。邮箱类public class Email { public void send(){ System.out.println("这是邮箱发送服务");

2021-11-01 17:28:20 101

原创 设计模式:原型模式

所谓原型模式就是当一个对象在运行时创建后,所有后续的对象都在此对象上通过clone来实现,而不去自己new,set属性的过程。可以简化复杂对象的创建过程。组成的话基本就三个大类:1.原型的抽象类 2.原型的具体实现类 3.具体原型的创建类原型的抽象类:这个定义了原型的大部分属性及方法,具体类只需要继承该类。这个类需实现Cloneable接口,这样才能调到object.clone()public abstract class PrototypeProduct implements Cloneab

2021-10-29 19:25:15 66

原创 设计模式:单例模式(反射破坏,枚举不能被破坏的原因)

除了枚举单例,其余都能被反射破坏。双重检查+懒汉式+私有构造判断(这已经是比较安全的写法,网上说不能破坏):package com.yuanping.sjms_demo.singleton;/** * 单例模式标准,私有静态成员变量,私有构造方法,公共静态获取实例的方法 */public class DoubleCheck { private static volatile DoubleCheck doubleCheck = null; //volitile防止指令重排序

2021-10-21 17:41:51 878

原创 设计模式:简单工厂,工厂方法,抽象工厂区别图解

简单工厂:简单工厂(也叫静态工厂) 一个具体工厂类里面通过一个静态方法去获取某个抽象产品的子产品。比如你在自助贩卖机去买矿泉水:有怡宝,娃哈哈,百岁山。他们的价格为2块,1块,3块。这时候你就需要确定你想喝哪款,需要传递一个水标识的信息给贩卖机,贩卖机就返一个对应的支付码,支付完成后送对应的水。代码://工厂类:利用反射是为了减少if/elsepublic class WaterFactory { public static Water getInstants(Strin..

2021-10-20 17:14:24 183 1

原创 springboot启动临时文件目录位置及修改

Windows:C:\Users\登录用户~1\AppData\Local\Temp\Linux:/tmp一般在虚拟机上会出现权限问题,就需要自己指定有操作权限的目录。如 :nohup java -jar A.jar 这样会自动找/tmp去创建临时目录。如果没权限会报错org.springframework.boot.web.server.WebServerException: Unable to create tempDir. java.io.tmpdir is set to /tm...

2021-10-11 15:55:20 4038

rabbitMQ安装资源包

rabbitMQ安装资源包

2021-06-25

java调用webservice接口.zip

介绍了java代用webservice的实现方法,采用axis依赖的方式。对于任意webservie都可以实现简单条用,用最少的依赖和最少的代码实现调用

2020-04-29

jsch版本50-53.rar

jsch包下载,里面包含了jsch50到jsch53的jar包。此包用作sftp协议时,与主机openSSH和jdk版本公用,达到通信的木的

2019-12-29

eclipse导入项目后的常见问题(环境配置,访问404).docx

一些常见eclipse导入后的问题。此问题的原因是由于jar包,或者系统jre缺失的一些问题。右击项目---点击properties。以下界面,点击Java Build Path-----&gt;Libraries.如图,我们发现很多jar缺失了,那我们把缺失jar全部移除掉,选中jar,点击右侧的remove。

2019-08-21

空空如也

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

TA关注的人

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