- 博客(212)
- 资源 (7)
- 收藏
- 关注
原创 简单的Charles抓包教程
点击add,host里不写东西,在port里填写443,这个数字不能错。一般我们在抓取手机端内容时需要将Proxy菜单栏下的Windows Proxy取消勾选,禁止charles抓取本机上的请求信息。打开浏览器,请求地址:chls.pro/ssl,下载证书命名,去CA证书目录信任此证书。注:首先要确认浏览器有访问物理存储的权限,下载时会弹出提示框,点击确认按钮。注:开启电脑端抓包后,会为电脑添加局域网代理,会导致正常上网时无法浏览。同时有些手机对于证书直接下载是不受信的,需要从已下载中安装证书。
2024-03-17 14:44:29
425
原创 Mysql并发插入死锁问题
比如有1和5两条记录,两个事务分别插入2和3,插入之前都会使用插入意向锁锁定1-5的间隙,但是因为是不同的行,所以不需要互相等待。间隙锁:间隙锁是在索引记录之间的间隙上的锁,或者是第一条记录之前或最后一条记录后的间隙上的锁。for update的用处,第一是对记录加X锁,第二是可以当前读,也就是在可重复读隔离级别下,可以读到其他事务已提交的数据。for update 不存在数据的时候,加的锁是间隙锁吗?结果:同一个事务的间隙锁和插入意向锁不会互斥,两个事务之间的间隙锁和插入意向锁会互斥。
2023-05-16 19:25:38
2188
1
原创 公司分布式锁加锁错误原因
公司自研分布式锁问题,setIfabsent问题,LuttuceConfig配置问题,Netty的IdleStateHandler配置
2023-04-12 10:41:45
863
原创 Java异步线程池中 复制参数 MDC
最近在查询日志的时候,发现异步线程池里面执行的任务 没有打印公司自定义的 日志id排查发现日志id是存在MDC中,创建新的线程的时候并未传递给子线程查询文章发现spring可以使用线程装饰器解决,如下
2022-12-04 20:07:46
1927
原创 阿里云使用redisson RRateLimiter 出现Lua脚本错误的解决
默认阿里云Redis会对lua脚本做一定限制,目的是为了保证脚本里面的所有操作都在相同slot进行,如果用户能够在代码确保所有操作都在相同slot而又想打破Redis集群的lua限制的话可以通过控制台修改script_check_enable参数为0,则后端不会对脚本进行校验。
2022-08-23 16:22:22
2216
原创 记公司项目对Spring的 ClassPathBeanDefinitionScanner 的运用
前言公司有一个老项目, 使用MongoDb数据库, 没有现在Spring Boot的 mongodb template 可以用. 但是之前员工对mongo链接做了封装, 我们只需要继承一个公共类,标注上实体类,就可以用, 类似 monggodb template的方式, 我非常感兴趣, 所以在这里记录下来我的研究,与君共勉.事情是这样的我们想使用monggo 直接这样定义一下Dao类, 项目中可以直接引用public class UserDao extends BaseDataLayer<Us
2022-02-16 17:36:31
760
2
原创 使用Spring的AbstractRoutingDataSource实现动态数据源
前言笔者公司目前数据库进行了分库操作,分成了几个库,存放用户相关信息的user库,存放资产信息的asset库,存放直播相关信息的live库。在平时开发过程中涉及多库操作的地方,需要通过rpc调用对应服务。这样的开发模型大体上没问题,因为既然拆分库了,应用跟随数据库进行拆分,也能防止以后开发代码混乱。但是这样缺少了灵活性,所以我这里为我们项目增添多数据源功能。调研调研了两种spring+mybatis数据源方案。1 多份配置在项目中,为每个库分别设置一套数据源配置。DataSource,SqlSe
2021-11-21 18:01:51
1552
原创 JMeter压力测试工具
1 简介JMeter是开源软件Apache基金会下的一个性能测试工具,用来测试部署在服务器端的应用程序的性能。2 下载安装和启动JMeter可以在JMeter的官方网站下载(https://jmeter.apache.org/)官网找到Download 下载zip压缩包后, 解压到本地就行进入/bin目录, 运行 ApacheJMeter.jar 文件就启动了 但是首先确保 你安装了JDK环境3 简单的设置恭喜你现在你已经启动了JmeterJmeter可以设置为中文, 按照如下顺序进行配置
2021-11-19 18:01:34
9931
3
原创 mongo 删除重复 文档
db.table.aggregate([ { -- 根据重复字段分组 $group: { _id: {'name': '$name','age': '$age'}, -- 计数 count: {$sum: 1}, -- 将id放到ids数组 ids: {$addToSet: '$_id'}} }, { -- 查询数据条数大于1的 $match: {count: {$gt
2020-07-13 13:11:17
352
原创 mongodb 修改主键类型
公司不知道出于什么原因使用Mongodb存储业务数据,而且是比较老得版本,造成了后面一系列问题。没有事务导致后台繁忙时数据不一致。主键默认ObjectId导致查询失败,需要手动设置,并且为字符串,防止自动转换为ObjectId。自带一套查询语句,导致有学习成本。今天遇到的问题就是因为主键为ObjectId导致后台查询出错。原因为写代码忘记设置_id,mongo自动插入id并且是ObjectId。既然线上已经出错了,我就要解决了。查询mongodb语法,得到如下语句。db.table.find(
2020-07-13 13:05:39
2037
原创 手写Redis分布式锁
通过调研Redis、Lua和Redisson框架,整理思路自写Redis分布式锁,保证不会死锁,并实现了Watchdog功能
2020-06-30 13:07:24
740
3
原创 算法 - 二叉搜索树的第k个结点
题目给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。解题思路使用栈存储数据,循环比较数据和栈里面数据大小,大于就出栈,一直找到当前数据应该呆的位置,然后再将出栈的数据放回来。编码 private static TreeNode KthNode(TreeNode pRoot, int k) { if (k == 0) { return null; }
2020-06-11 13:53:01
309
原创 算法 - 序列化二叉树
题目请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。例如,我们可以把一个只有根节点为1的二叉树序列化为"1,",然后通过自己的函
2020-06-10 19:04:32
519
原创 InteliJ IDEA社区版 两款插件变身旗舰版
今年Idea对盗版软件打击力度加大,朋友们会发现,旗舰版自己激活使用,过几天就会失效,需要重新激活,有的小伙伴就会选择去淘宝花钱买个教育邮箱注册,这个方法我使用过,过了两三个月就不能用了,着实让人头疼。如何解决呢?我想到了Idea社区版本,下载一个使用,将我的Spring boot项目导入,启动下试试,不错所料,报错了。我这里不绕弯子了,想使用社区版Idea。安装Spring Assistant插件...
2020-05-19 10:20:03
9982
12
原创 intelliJ idea自定义代码折叠
在intelliJ idea中不仅可以对类、方法等结构的代码进行折叠(ctrl±)还可以自定义折叠代码。intelliJ支持两种风格的自定义代码折叠,如下:visual studio style// <editor-fold desc="Description"> Your code goes here... // </editor-fold> 快捷...
2020-05-07 13:52:46
663
2
原创 spring 特定环境下不启用配置
今天老曹找我说他们公司因为在正式服启用了Swagger,导致接口暴露,被对手公司爬了数据。我说这有何难,我正好有两个方法可以帮到你!一 配置文件自定义启用我们项目一般会分环境切分为三个配置文件:application-dev.properties、application-test.properties 和 application-prod.properties三个配置文件加入配置:swa...
2020-03-06 16:29:28
504
原创 simplejavamail : Batch module not found, make sure it is on the classpath
org.simplejavamail.internal.modules.ModuleLoaderException: Batch module not found, make sure it is on the classpath (https://github.com/bbottema/simple-java-mail/tree/develop/modules/batch-module)今天使...
2020-03-03 16:27:59
1207
原创 IntelliJIdea配置文件位置
window 配置文件位置C:\Users\XXX.IntelliJIdeaxxx\configfileTemplates 是自定义的文件模版templates 是自定义的代码模版plugins是插件文件夹同步的时候同步这几个就够了。keymaps是自定义的快捷键,如果有很多自定义快捷键的话,可以同步此文件夹mac配置文件地址位置~/Library/Preferences/Inte......
2020-01-16 18:06:00
5172
原创 lombok插件生成set方法问题
lombok插件很好用,但是我今天就遇到个有意思的bug,代码如下spring mvc这样接受一个这样的dtovoid saveCardSendConf(@RequestBody CardSendConfDto cardSendConfDto);dto如下@Datapublic class CardSendConfDto implements Serializable { pr...
2020-01-15 17:05:04
1103
1
原创 Spirng I18n 国际化
最近公司做了个购票项目,业务扩展到了泰国,所以网站要支持泰语、英语和中文,因此有了下文。配置文件准备:根目录或者i18n目录放置需要的翻译,每个配置文件对应不同的翻译messages是默认展示的翻译 我这里为英文messages_th_TH:email_format_error=รูปแบบอีเมลไม่ถูกต้องmessages_en_US:email_format_err...
2020-01-10 23:52:55
239
原创 将UTC时间转换为本地时间
Instant instant = Instant.now();ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("GMT+08:00"));System.out.println(zonedDateTime.getHour());System.out.println(zonedDateTime.getMinute());Zon...
2020-01-10 18:42:39
669
原创 mysql8 WITH AS(公用表表达式)
公用表表达式(CTE)是一个命名的临时结果集,它存在于单个语句的范围内,以后可以在该语句中引用,可能多次。以下讨论描述了如何编写使用CTE的语句。常用表表达式要指定公用表表达式,请使用 WITH具有一个或多个逗号分隔子句的子句。每个子句都提供一个子查询,该子查询产生一个结果集,并将一个名称与该子查询相关联。下面的示例定义名为的CTE cte1和cte2中 WITH子句,并且是指在它们的顶层SE...
2020-01-07 10:29:50
3973
原创 Spring boot 文件上传大小限制
spring:servlet:# 文件上传大小限制multipart:max-file-size: 2MBmax-request-size: 2MB
2020-01-02 17:38:54
256
原创 java.lang.NoClassDefFoundError: org/apache/commons/fileupload/disk/DiskFileItemFactory
commons-fileupload commons-fileupload 1.2.2 commons-io commons-io 1.3.2
2020-01-02 17:16:51
2545
3
原创 连续子数组的最大和
问题HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和...
2019-12-30 17:06:00
117
原创 @Scheduled(cron = "* * * * * *")
1 cron表达式格式:{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}“”字符代表所有可能的值。“”在{月份}里表示每个月的含义。“/”字符用来指定数值的增量。在{分钟} 里的“0/15”表示从第0分钟开始,每15分钟。在{分钟}里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样。“L” 字符仅被用于{日期}和{星期},它...
2019-12-30 11:08:47
2756
2
原创 BigDecimal加减乘除计算
java.math.BigDecimal 不可变的、任意精度的有符号十进制数。在银行、帐户、计费等领域,BigDecimal提供了精确的数值计算。Bigdecimal进行加减乘除的类方法。加法:add()函数减法:subtract()函数乘法:multiply()函数除法:divide()函数绝对值:abs()函数...
2019-12-30 10:29:24
223
原创 mongo 分组 aggregation
公司私用mongodb做后台存储,可能是图它的无结构,速度快,不过在我实际使用中,速度和mysql相比确实会快点不过需要分组聚合等查询的时候稍显麻烦,相比mysql而言,最近要做这方面的操作,就调研了下。sql和mongo聚合查询关键字对应sql 关键字mongo aggregation关键字where$matchgroup by$grouphaving...
2019-12-26 14:28:41
538
原创 Redisson分布式锁原理
分布式锁产生的场景分布式锁在需要分布式同步的场景下使用,也就是在分布式系统下才能发挥作用,传统的单台系统使用java提供的锁,分布式场景多实例项目需要多个项目之间同步。都有哪些实现方式1 数据库锁:通过在数据库中创建一条记录,根据创建结果来判断是否上锁成功。实现简单但是数据库效率低。2 redis实现:通过redis缓存中间件实现,比较繁琐,效率高。2 zookeeper实现:通过临时节...
2019-12-22 23:21:07
287
原创 Virtual server server already has a web module live-mix-1.0.2-t230 loaded at / therefore web module
公司用了一个很老的web容器,现在都没人知道我也是第一次用,使用报错,写这个错误答案应该也没有人用,抱着也许有同病相怜的人呢,就写下吧,凑个数。这个错,要把项目domain空间的application清理掉,因为已经有了上个版本的空间了,所以没法创建了,如下。我的项目叫mix,空间在/Users/admin/software/glassfish4/glassfish/domains/dom...
2019-12-20 10:17:21
446
2
原创 二进制中 1 的个数
/** * 本来想着java自带的有方法,尝试了下,并不能实现 * 只能自己想法了 * 既然是 1 的个数,那就要从二进制运算符入手 * 首先判断最后一位是1、0 * 然后将数据右移一位 * 以此循环 * 值得一提的是 >>> 无符号右移 >> 有符号右移 */private static int NumberOf1(int n) { int...
2019-12-19 14:10:06
108
原创 替换空格
使用stringbuffer自带函数解 字符串替换int index = 0;while (index < str.length()) { index = str.indexOf(" ", index); if (index != -1) { str.replace(index, ++index, "%20"); } else {...
2019-12-19 13:57:33
101
原创 从尾到头打印链表
问题牛客上面有这样一个题,输入如下链表public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}// 完成下面方法ArrayList<Integer> printListFromTailToHead(L...
2019-12-19 13:55:39
106
原创 包含min函数的栈(不算巧妙 从数据结构下手)
我刚开始是想使用LinkedList实现,牛客不让用java的集合,就没用了想着不让用LinkedList,我就只能自定义一个List了本着不麻烦够用就行的原则,写了个单链表。算法上没有有点 单纯的判断。后来看题解,牛客可以用Stack集合,我晕,给个提示啊,能用什么不能用什么,让我大费周折!private static class MyStack { private No...
2019-12-19 13:24:40
166
原创 docker安装mysql
装软件这样的事情,当然是要去官网最好,然而我就遇到个不靠谱的事情。docker安装mysql,我照样去官网找镜像,然后自然的去看官网的启动教程,在下载过后镜像,输入命令启动后$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag这个时候使用连接工具连接如下错误怀疑没启动 查看正常...
2019-12-14 22:55:09
128
统一管理系统
2018-08-04
mariadb-10.3.7.tar.gz
2018-06-21
wls1213_dev_update3.zip
2018-03-10
MySQL-server-5.1.72-1.glibc23.i386.rpm
2017-09-04
apache-tomcat-7.0.79.tar.gz
2017-09-04
MySQL-client-5.1.72-1.glibc23.i386.rpm
2009-12-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人