- 博客(84)
- 收藏
- 关注
原创 多人同时导出 Excel 干崩服务器?大佬给出的解决方案太优雅了!
刚开始拿到这个需求,第一时间想到就是需要维护一个FIFO先进先出的队列,给定队列一个固定size,在队列里面的人进行排队进行数据导出,导出完成后立马出队列,下一个排队的人进行操作;还考虑到异步,可能还需要建个文件导出表,主要记录文件的导出情况,文件的存放地址,用户根据文件列表情况下载导出文件。业务诉求:考虑到数据库数据日渐增多,导出会有全量数据的导出,多人同时导出可以会对服务性能造成影响,导出涉及到mysql查询的io操作,还涉及文件输入、输出流的io操作,所以对服务器的性能会影响的比较大;
2025-03-03 17:25:27
710
原创 京东一面:什么是消息轨迹?
RocketMQ的消息轨迹是一种用于追踪消息生产、存储、消费全链路状态的功能。它记录了消息从生产者发送到 Broker,再到消费者消费的完整生命周期信息,帮助开发者在分布式系统中快速定位消息问题(如消息丢失、重复消费、延迟等),并监控消息流转状态。消息轨迹数据关键属性Producer端Consumer端Broker端生产实例信息消费实例信息消息的Topic发送消息时间投递时间,投递轮次消息存储位置消息是否发送成功消息是否消费成功消息的Key值发送耗时消费耗时消息的Tag值。
2025-03-03 17:22:39
1028
原创 Oracle 迁移到 PostgreSQL
数据类型对比项OraclePostgreSQL大文本clobtext数字NUMBERNUMERIC可变长字符VARCHAR2VARCHAR函数对比项OraclePostgreSQL行号rownum取一行rownum = 1limit 1 【注意排序】null时赋值nvl()coalesce()转换为时间类型to_date()字符串分隔split()子字符串所在位置查询【从1开始】三元表达式decode()树形查询存储过程对比项Oracle。
2025-02-19 11:22:08
727
原创 Datax json的writer中的jdbcUrl 不能使用[]扩起来
【代码】Datax json的writer中的jdbcUrl 不能使用[]扩起来。
2025-02-19 11:21:35
76
原创 Linux命令
如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。 (3)给 file 的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限。 **作用:**用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。 **作用:**用于备份文件(tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件) **语法:**locate [-d ][–help][–version][范本样式…
2025-01-22 11:26:53
775
原创 find命令
目录收起find命令:查找文件1 name : 按照名字去匹配2 type : 按照文件的类型匹配3 perm : 按照文件的权限来查询4 user : 按照文件的属主来查询5 group : 按照文件的属组来查询6 mtime : 按照修改文件的时间来查询7 ctime : 按照文件的创建时间来查询8 atime : 按照访问时间来查询文件9 size : 按照文件的大小来查询10 exec 和 xargs :练习:要求将所有3天内创建的普通文件加上.bak后缀。
2025-01-22 11:25:50
646
原创 使用find命令备份文件(带目录结构)
命令非常强大,可以用来查找符合特定条件的文件和目录,然后你可以对这些文件执行各种操作。下创建与源目录相同的目录结构,并将找到的文件复制到相应的位置。选项表示以归档模式进行,保持所有权限等,并使用压缩传输数据。命令结合其他命令可以非常有效地帮助你备份特定的文件。是一个非常强大的工具,用于备份和同步文件。如果你想在备份时保持原始的目录结构,可以使用。如果你只想备份最近修改过的文件,可以使用。例如,备份过去7天内修改过的。表示查找在过去7天内修改过的文件。文件到一个备份目录中。命令进行文件备份的常见用法。
2025-01-22 11:24:48
279
原创 /bin/rm Argument list too long – Linux 删除海量文件报错的解决方法
居多文件的情况下发生,也是因为删除的命令参数超过了shell参数的个数导致的,可以通过。可以通过find和xargs命令配合的方式,比如删除当前目录所有的png文件,来确认,解决方法好几种。切记,需要再三确认。
2024-12-27 11:37:44
508
原创 基于Oauth2的SSO单点登录---后端
处理 SSO 回调请求,使用授权码完成登录过程。如果处理过程中出现异常,返回 500 错误。如果 URL 无效,返回 400 错误。如果出现异常,返回 500 错误。2、处理从SSO系统回调的请求,包括获取访问令牌、用户信息和生成JWT令牌。,用于处理 SSO 登录、回调和登出请求。:处理登出请求并重定向到指定 URL。与业务逻辑交互,确保处理登录、回调和登出的逻辑。:构建 SSO 登录 URL 并重定向到。,将用户重定向到该 URL。3、根据访问令牌获取用户信息。1、构建SSO登录URL。
2024-12-27 10:48:29
1136
原创 基于Oauth2的SSO单点登录---前端
Vue-element-admin 是一个基于和 Element UI 的后台管理系统框架,提供了丰富的组件和功能,可以帮助开发者快速搭建现代化的后台管理系统。
2024-12-27 10:45:21
1248
原创 关于Spring @Transactional事务传播机制详解
举个栗子,方法A是一个事务的方法,方法A执行过程中调用了方法B,那么方法B有无事务以及方法B对事务的要求不同都会对方法A的事务具体执行造成影响,同时方法A的事务对方法B的事务执行也有影响,这种影响具体是什么就由两个方法所定义的事务传播类型所决定。简单说就是,我们方法调用通常是,一个方法调用另外一个,而不同方法可以有不同的事务,所以传播机制就是指在多个方法,事务要如何传播。一共有七种传播类型本文从案例结合解释一下不同传播类型下多个@方法会发生什么?在遇到异常情况下,不同传播机制会产生什么影响。
2024-11-29 14:31:20
991
原创 redisTemplate.opsForValue().get(KEY)从Redis中取出的值为null 的解决方法
最近,博主在整理毕设时就遇到一个问题:我往Redis中存手机验证码,我把手机号当做key ,验证码当做value 存储到 Redis 中,但是在我在需要在登录操作中取验证码时遇到一个问题:困惑:我Redis 中明明存的有,但是就是取不到,显示为null。我调试了好久,最后在一篇文章中找到了解决方法:其实问题表象很诡异,但问题的原因很简单,就是Redis中存数据和取数据时采用了不同的RedisTemplate导致的。我之前的redisTemplate 的注入方法一个写的是:解决方法:
2024-11-29 14:30:47
553
原创 CountDownLatch和CyclicBarrier
CountDownLatch可以设置一个计数器,通过countDown()方法进行减1操作,使用await()方法等待计数器不大于0,再继续执行await()方法之后的语句。并行执行的方案中,while 循环里面每次都会创建新的线程,而创建线程可是个耗时的操作。所以最好是创建出来的线程能够循环利用,所以可以使用线程池就能解决这个问题。创建一个固定大小为 2 的线程池,之后在 while 循环里重复利用。主线程如何知道 getPOrders() 和 getDOrders() 这两个操作什么时候执行完。
2024-11-11 11:26:29
929
原创 【Redis】利用逻辑过期解决缓存击穿问题
顾名思义,逻辑过期不是真正的过期,它要求我们在存储数据到redis的时候,额外的要添加一个过期时间的字段,这个key本身是不用去设置ttl的,所以它的过期时间不是由redis控制的,而是由我们自己去判断它是否过期,这样我们的业务上就会复杂很多,因此我们先来看一下整个业务流程上有什么变化。此时我们就封装好了存储店铺逻辑过期时间的函数了,需要注意的是,我们在向redis中set数据的时候,并没有设置ttl的过期时间,这样的话这个key就可以认为是永久有效了,它真正的过期时间就是由我们控制的逻辑过期时间了。
2024-10-18 19:54:08
1172
原创 盘点慢查询原因及优化方法
在日常开发中,我们往往会给表加各种索引,来提高 MySQL 的检索效率。但我们有时会遇到明明给字段加了索引,并没有走索引的Case。进而导致 MySQL 产生慢查询。严重场景下,甚至出现主从延迟、数据库拖垮的极端事故当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。一般有更新SQL才可能会导致脏页,我们回忆一下:一条更新语句是如何执行的。
2024-10-18 11:40:09
959
转载 浏览器F12开发者工具--«你真的会用»系列-优快云博客
小编在工作中,经常要用到浏览器,可以说是对它又熟悉又陌生。今天就索性抽时间把摸排一遍,做个笔记。分享给大家,希望大家可以多多支持一下呀。小编这里所用的微软的浏览器。
2024-09-27 14:39:16
989
原创 element ui中当el-dialog需要做全屏时,.fullscreen样式修改问题
我在使用过程中,发现弹窗行间样式不是我想要的,但是通过定义classname,然后在进行样式的更改不起作用,由于权重的问题,在样式后面添加!important 无穷权重也是不可以。
2024-09-26 17:46:47
732
转载 Python 爬虫项目实战(一):爬取某云热歌榜歌曲
网络爬虫(Web Crawler),也称为网页蜘蛛(Web Spider)或网页机器人(Web Bot),是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索引、内容抓取等。爬虫的基本原理种子 URL:爬虫从一个或多个种子 URL 开始,这些 URL 是起点。发送请求:爬虫向这些种子 URL 发送 HTTP 请求,通常是 GET 请求。获取响应:服务器返回网页的 HTML 内容作为响应。解析内容:爬虫解析 HTML 内容,提取所需的数据(如文本、链接、图片等)。
2024-08-28 17:17:25
572
原创 pymysql cursor使用教程
ret_row = cursor.executemany(sql,[[‘a’,‘123’],[‘b’,‘234’],[‘c’,‘456’]]) # 在args中传入一个可迭代对象。在python3.x中,可以使用pymysql来MySQL数据库的连接,并实现数据库的各种操作,本次博客主要介绍了pymysql的安装和使用方法。cursor.execute(sql, {‘a’:‘abc’,‘b’:‘123’}) # 这里的’a’和’b’要和上面VALUES中对应。
2024-08-28 11:22:06
1238
转载 Python基础问题
不要在声明变量时使用0或者空字符串作为初始值,这样使用自增操作符的一句spam += 1等于spam = spam + 1,这意味着spam需要指定一个有效的初始值。在函数中使用局部变来那个而同时又存在同名全局变量时是很复杂的,使用规则是:如果在函数中定义了任何东西,如果它只是在函数中使用那它就是局部的,反之就是全局变量。这意味着你不能在定义它之前把它当全局变量在函数中使用。
2024-08-28 11:17:09
219
转载 Python基础问题
不要在声明变量时使用0或者空字符串作为初始值,这样使用自增操作符的一句spam += 1等于spam = spam + 1,这意味着spam需要指定一个有效的初始值。在函数中使用局部变来那个而同时又存在同名全局变量时是很复杂的,使用规则是:如果在函数中定义了任何东西,如果它只是在函数中使用那它就是局部的,反之就是全局变量。这意味着你不能在定义它之前把它当全局变量在函数中使用。
2024-08-19 15:06:05
39
原创 PostgreSQL 支持的字段类型
以上这些都是 PostgreSQL 中常见的字段类型,您可以根据需要选择适当的类型来存储数据。请注意,不同的PostgreSQL 版本可能会有所差异,建议查阅。来获取最新的字段类型信息。,如有侵权,请联系删除。
2024-07-31 14:49:38
987
原创 HBase常用命令
本节我们将向您展示如何使用shell CLI 在 HBase 中创建表、在表中插入行、对表执行放置和扫描操作、启用或禁用表以及启动和停止 HBase。主要讲述了HBase的CRUD等基本DDL和DML操作。**注意:**HBase Shell 中的删除键没用,要用【Ctrl+Backspace】,每个命令之后不需要分号(;)结束。
2024-07-19 09:50:25
734
转载 Netty知识点
NIO 基本概念阻塞(Block)与非阻塞(Non-Block)阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式,当数据没有准备的时候。阻塞:往往需要等待缓冲区中的数据准备好过后才处理其他的事情,否则一直等待在那里。非阻塞:当我们的进程访问我们的数据缓冲区的时候,如果数据没有准备好则直接返回,不会等待。如果数据已经准备好,也直接返回。阻塞 IO :非阻塞 IO :同步(Synchronous)与异步(Asynchronous)同步和异步都是基于应用程序和操作系统处理 I
2024-07-10 17:45:28
74
转载 21个快捷键,教你玩转IDEA,告别快捷键搜索的日子
ps:win11 与微软自带的输入法冲突了,可以选择idea改掉快捷键或者用win10的输入法,怎么修改都很简单,自行百度即可。13、以uml图的方式查看类的结构关系 ctrl+alt+u。
2024-07-04 17:34:40
179
原创 从BeanFactory源码看Bean的生命周期
回到这个图上从BeanDefinition创建实例化Bean实例化之前如果有,调用before实例化方法如果并没有一个实例化BeanPostProcessor接管Bean创建,那么进入正常实例化阶段实例化Bean调用的after实例化方法对pvs进行设置调用的postProcessProperties方法对pvs进行修改实际的Bean属性设置调用Aware方法调用BeanPostProcessor的before初始化。
2024-07-02 10:15:26
690
原创 Mysql回表和覆盖索引
explain分析:此时字段drinker_id和drinker_feature是组合索引idx_drinker_id_drinker_feature,查询的字段id、drinker_id和drinker_feature的值刚刚都在索引树上,只需扫描一次组合索引B+树即可,这就是实现了索引覆盖,此时的Extra字段为Using index表示使用了索引覆盖。为了实现索引覆盖,需要建组合索引 idx_drinker_id_drinker_feature(drinker_id,drinker_feature)
2024-06-26 14:55:10
1442
转载 【Java】面向对象的三大特征:封装、继承、多态-优快云博客
这时我们就需要引入父类 , 基类 或 超类和子类, 派生类,和现实中的儿子继承父亲的财产类似, 子类也会继承父类的字段和方法, 以达到代码重用的效果,从而降低代码的冗余性。封装的本质就是让类的调用者不必太多的了解类的实现者是如何实现类的, 只要知道如何使用类就行了,这样就降低了类使用者的学习和使用成本, 从而 降低了复杂程度。有了面的向上转型, 动态绑定, 方法重写之后, 我们就可以使用 多态的形式来设计程序了.我们可以写一些只关注父类的代码, 就能够同时兼容各种子类的情况。可以使用super 关键字。
2024-06-25 10:18:40
657
原创 自定义注解实现关键字段脱敏
使用方式: Dao层需脱敏方法上加注解 @NeedDecrypt(param = “channelName”) 《channelName为需脱敏字段》EncryptAop AOP代理环绕通知。NeedDecrypt 自定义注解。
2024-06-24 09:49:32
283
原创 jstat命令查看jvm堆行为统计
jstat(JVM statistics Monitoring)命令主要是 对java应用程序的资源和性能进行实时的命令行监控,包括了对 heap size和 垃圾回收状况的监控。jstat参数说明option操作参数,我们经常使用的选项有gc、gccapacity、gcnew、gcnewcapacity、gcold、gcoldcapacity、gcmetacapacity、gcutil等。vmidjava进程IDinterval间隔时间,单位为毫秒。count打印次数。参数说明class。
2024-06-20 14:56:38
388
转载 SpringBoot整合MyBatis和Druid实现多数据源
以上方案虽然实现了多数据,但每多一个数据源就需要新增配置文件,还需要分别新建mapper文件,spring-jdbc提供了AbstractRoutingDataSource抽象类,可以实现动态访问数据库。有需要了解这方面知识的小伙伴可以参阅。新建两个数据库dynamic-master和dynamic-slave,在master库中新建customer表,slave库中新建orders表。新建两个配置文件,分别配置master和slave数据库。,如有侵权,请联系删除。
2024-06-18 16:36:27
171
原创 ACID脏读、幻读、不可重复读的各种情况分析
接着会话B插入一条name=温州市的数据(隐式事务,因为此时的autocommit为1,每条SQL语句执行完自动提交),这时会话A的事务再以刚才的查询条件(id>0)再一次查询,此时会出现两条记录(name为武汉市和温州市的记录),这种现象就是幻读。(即不能读到相同的数据内容)会话B开启一个事务,把id=1的name为武汉市修改成温州市,此时另外一个会话A也开启一个事务,读取id=1的name,此时的查询结果为温州市,会话B的事务最后回滚了刚才修改的记录,这样会话A读到的数据是不存在的,这个现象就是脏读。
2024-06-13 16:29:59
372
原创 Mybatis之foreach注意事项
要做foreach的对象,作为入参时,List对象默认用"list"代替作为键,数组对象有"array"代替作为键,Map对象没有默认的键。(4)separator:元素之间的分隔符,例如在in()的时候,separator=”,“会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。(3)open:foreach代码的开始符号,一般是(和close=")“合用。(2)index:在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。
2024-05-28 15:46:30
382
原创 解析txt文件,并以字段名为key,解析后数据为value,动态参数入库
根据上述方法解析出 inComeEntityMaps对象。根据对应的Dao和xml方法,代入即可实现动态参数入库。
2024-05-28 15:29:34
358
原创 spring boot @Configuration和@Componment的区别
2. 通过@Configuration注解的类默认会被CGLIB动态代理,所有被 @Bean 注解标记的方法将来都是通过代理方法进行调用,在该类中使用@Bean时为单列;时driver.setCar(car())不会被Spring代理,会直接调用car()方法获取一个全新的Car对象实例,所以全局会有多个Car对象的实例。在上面的第二段代码中,driver.setCar(car())只是纯JAVA方式的调用,多次调用该方法返回的是不同的对象实例。所以全局只有一个Car对象的实例。
2024-05-28 14:25:07
575
原创 linux直接修改jar包中的xml文件
3.查看目录下没有没有你提取的文件。5.替换原jar包中文件即可。1.查看jar包的文件列表。2.提取想要修改的文件。4.使用vim修改文件。
2024-05-08 18:43:58
738
1
原创 postgresql 批量添加数据,存在则更新,不存在则插入
DO UPDATE SET column_1 = value_1, …WHERE condition:当记录存在时,更新表中的一些字段。DO NOTHING:当记录存在时,什么都不做。
2024-03-14 10:33:36
1335
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人