- 博客(77)
- 收藏
- 关注
原创 解决google浏览器无法登录及同步
使用谷歌插件:Chrome-Sync-Helper(百度云资源在文末)1、解压压缩文件。2、点击拓展程序,让google绑定该插件。3、然后登录下google账号,就可以使用同步功能了。4、从下面链接提取google插件【Chrome-Sync-Helper】.........
2021-01-01 22:57:11 26479 44
原创 ObjectUtils.nullSafeEquals你真的用对了吗?
在写代码时,我们通常喜欢使用`org.springframework.util.ObjectUtils#nullSafeEquals`来比较两个对象是否相等,从而避免使用`equals`方法在对象为空时导致空指针异常。最近在写代码时,我试图使用stream流的filter,配合使用`ObjectUtils.nullSafeEquals`过滤出租户id不为0的数据。于是写了类似如下的代码。在具体讲述问题之前,我们先看下代码,大家判断下代码会输出什么?
2024-08-17 16:57:53 590
原创 异步任务中传递用户信息的一种优雅写法
在异步任务中,我们通常会遇到子任务获取当前用户的场景。我们可能会采取来存储主线程传递的用户信息。然后在业务开始时set,业务结束时remove,来保证不会出现OOM的场景。
2024-07-11 18:43:45 370
原创 基于swagger插件的方式推送接口文档至torna
Torna作为一款企业级文档管理系统,支持了很多种接口文档的推送方式。官方比较推荐的一种方式,就是使用smart-doc插件推送,该插件需要完善接口代码中的javadoc,相对来说,代码规范性要求较高。使用方式如下:接口文档管理解决方案调研及Torna+Smart-doc的使用这里,由于某些老项目,javadoc并不规范,而且某些接口连swagger注解都没有。所以,在这里提供了一种基于swagger插件的方式,利用main方法推送文档至torna的方式。这里空间可以配置为某个具体的环境
2024-07-10 09:54:08 815 1
原创 记录一次Java中使用P12证书访问https,nginx返回403的问题
成功返回,说明p12证书和密钥是没问题的。java代码就能正常返回了。
2024-04-12 15:32:24 907
原创 windows跳板机配置(端口转发)
跳板机一般用于异构网络间的中转站,比如对方在防火墙上只给你开放了一台服务器的权限,你无法访问对方局域网的其它主机,但你能访问的这台服务器则有权限访问其它主机。那么这台服务器就可以作为对方网络的跳板机,有时又被称为前置机。Windows 系统自带的 IP Helper 服务具有端口转发的功能,这个功能可以用来作为跳板,通过跳板机来访问其它主机的服务。
2024-03-19 18:03:18 2325
原创 微信聊天记录生成词云
UIN是微信的用户信息号,你可以在模拟器中的RE根据以下路径找到:/data/data/com.tencent.mm/shared_prefs,然后直接用RE打开其中的system_config_prefs.xml,找到其中name为default_uin的标签所对应的value的值,就是UIN。至此,我们已经拿到了IMEI和UIN的信息,打开这个网站MD5散列计算器然后把你的IMEI和UIN输入进去(UIN我乱输的,你们就输入你们的UIN就好) ,如果你的UIN前面有“-”或者“+”一定要输进去!
2024-01-24 10:50:01 1340
原创 从0到1的软著申请流程
本着能淘宝300块搞定的事情,绝不费事。没想到啊,,,申请失败了,材料和代码,说明书不匹配被驳回。。。既然如此,靠人不如靠自己,撸起袖子就是干!开搞!!!一定要去中国版权保护中心官网优先实名认证,这里有一定审核周期的,优先处理。在申请软著前,想个好听的软著名称,加点某某某的前缀,保证独一无二。名称最好以xxx小程序、xxxAPP、xxx系统等结尾,明确使用场景。最好申请你平时涉及到的系统,不然操作手册你都没办法去编。
2024-01-15 18:42:40 1091
原创 接口文档管理解决方案调研及Torna+Smart-doc的使用
swagger 是一个 api 文档维护组织,后来成为了 Open API 标准的主要定义者,现在最新的版本为17年发布的 Swagger3(Open Api3)。同时Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务,并于2015年重命名为OpenApi。Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。
2023-08-24 15:26:57 1843 1
原创 Windows修改mysql服务的root密码
跳过密码验证登录,前面的终端那不要关再打开一个新的管理员终端输入。回车就能进去了,因为密码已经置空所以不需要密码。下面的是以管理员方式打开的另一个窗口。启动的管理员终端了。正常重启mysql服务。输入两段命令使密码置空。停止MySQL服务,
2023-07-19 13:04:43 802
原创 IDEA 启动报错 Internal error. Please refer to https://jb.gg/ide/critical-startup-errors 问题修复
在IDEA安装一个插件后,重启IDEA时报错,打不开IDEA。(如下图)
2023-05-31 19:29:44 837
原创 延迟消息解决方案总结(含源码)
这里的延迟队列并不是指传统意义上的"队列"这种数据结构,而是以时间为权重的一种有序堆结构,这里是指的一种广义上的概念。所以延迟队列的实现,我们首先提取出一个关键词:“有序”。我们只要考虑某种实现方案,满足有序的条件,就可以实现延迟队列。
2023-05-12 23:11:50 602 1
原创 Windows下的RabbitMq安装(图文教学)
RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang ( https://www.erlang.org/downloads )。同时,在安装RabbitMQ 时需要注意RabbitMQ 与Erlang的对应版本,防止安装过程中出错。一般情况下,版本均选择新版本不会有太大问题,但还是需要注意下。可以参考RabbitMQ 的社区,里面有介绍版本号及推荐的Erlang版本。
2023-05-05 10:34:35 6105 1
原创 Java异常处理传递规范总结
catch的作用是捕获异常,throw的作用将异常传递给合适的处理程序。阿里巴巴Java开发规范中有15条异常处理的规约,其中下面两条使用的时候是比较困惑的,因为并没有告诉我们应该如何定义异常,如何抛出异常,如何处理异常:。7、不要同时记录和抛出异常,因为异常会打印多次,正确的处理方式要么抛出异常要么记录异常,如果抛出异常,不要原封不动的抛出,可以自定义异常抛出。10、尽可能晚的捕获异常,如非必要,建议所有的异常都不要在下层捕获,而应该由最上层捕获并统一处理这些异常。9、自定义异常尽量不要使用检查异常。
2023-05-04 16:14:04 803
原创 解决Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources......
解决:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on project ***: Input length = 1 -> [Help 1]
2023-02-28 21:47:21 1427 2
原创 Arthas的学习与使用
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。官方学习文档:https://arthas.aliyun.com/doc/
2023-02-03 15:06:42 553
转载 Maven依赖中<option>与<scope> provided的区别
maven在管理依赖时,对于引入包的传递性处理.一般有和两种处理. 但是这两个的区别是什么需要简单梳理下.
2022-11-22 13:57:53 1739
原创 在 MP框架中优雅实现 MySQL Sequence 主键策略
在项目中,我们通常会利用Mysql的自增主键来确保表数据的唯一性。但是随着数据量的增多,需要对数据做水平分表,这种利用自增主键的方式就存在不足之处了。现在比较好的分布式id策略有雪花算法、Redis生成ID,以及利用数据库生成相同业务的Sequence主键。我这里给大家分享一种,基于sql函数生成Sequence主键的写法,并且可以很方便的集成到MybatisPlus框架中。
2022-11-16 18:53:15 374
原创 简单使用FRP实现本地mysql的内网穿透
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。ps: 压缩包包括服务端和客户端,如果服务端是linux,客户端是windows则都需要下载。windows 使用cmd或者powershell进入当前frp目录启动客户端,执行。我这里客户端是windows,下载解压就行。服务端主要是frps开头的文件,配置需要在frps.ini中编辑。可以访问服务端的控制台。
2022-11-16 11:18:39 3838
原创 记录一次使用@TransactionalEventListener
我们一般在使用spring的监听器,会使用来实现同步监听事件。但是这种存在一个问题,当前事务是没有提交的。如果需要在执行事件之前将事务提交,可以使用来实现监听方式。
2022-10-27 16:24:05 2129
原创 Java之设计模式:(四)观察者模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。
2022-10-24 11:12:36 407
原创 关于git提交代码时,commit的注释规范
docs: 仅仅修改了文档,比如README、CHANGELOG、CONTRIBUTE等。style: 仅仅修改了空格、格式缩进、逗号等,不改变代码逻辑。refactor: 代码重构,没有加新功能或者修复bug。chore: 改变构建流程,或者增加依赖库、工具等。test: 测试用例,包括单元测试、集成测试等。perf: 优化相关,比如提升性能、体验。revert: 回滚到上一个版本。feat: 新增feature。flx: 修复bug。
2022-10-12 09:30:52 345
原创 Java在Hotspot下Thread.sleep(0) 和 Thread.yield() 的区别
1.sleep()方法给其他线程运行机会的时候,不考虑线程的优先级,因此当高优先级线程sleep()后,低优先级任务有机会运行;但是yield()只会给同优先级或更高优先级线程运行的机会,甚至可能是自己继续运行。Thread.sleep(0) 和 Thread.yield() 主要取决于JVM的实现。这两种方式都可以让出cpu时间片,以允许其他线程获取运行的机会。2.线程调用sleep()后,转入阻塞状态,而调用yield()后转入了就绪状态。根据Hotspot源码可以看出,效果是等价的。
2022-09-09 11:37:35 758
原创 使用selenium的xpath方式抓取元素
[]代表需要匹配的标签@id= 代表属性的精确匹配contains 代表属性的模糊匹配@ 代表标签属性div[3] 代表当下级有重复元素时,取第三个。在测试xpath是否可用时,可以通过chrome来验证xpath:在console中输入:$x(‘xpath表达式’)...
2022-07-05 18:00:00 1510
原创 Java之设计模式:(三)模板模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。/** * @Description: 模板模式 **/public class Template { abstract static class TemplatePattern { abstract String getToken(String code);
2022-05-24 10:57:22 123
原创 Java之设计模式:(二)策略模式
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。/** * @Description: 策略模式 **/public class Strategy { interface StrategyPattern{ String generateAuthUrl();
2022-05-24 10:56:06 126
原创 Linux查看文件的几种命令比较:vi、vim、cat、less
vi与vimVi 编辑器是 Unix 系统最初的编辑器,Vim 是由 Vi 发展演变过程的文本编辑器。常用命令指令含义i插入[Ctrl] + [f]屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)[Ctrl] + [b]屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)0 或功能键[Home]这是数字『 0 』:移动到这一行的最前面字符处 (常用)$ 或功能键[End]移动到这一行的最后面字符处(常用)G移动
2022-05-13 15:46:05 3655 1
原创 Java常用集合-HashMap源码分析
目录HashMap源码分析一、简介二、主要类成员变量常量成员变量三、内部类1、Node2、TreeNode四、构造方法1、HashMap()2、HashMap(int , float)3、HashMap(int)4、HashMap(Map<? extends K, ? extends V> m)五、主要方法* hash1、put2、get3、remove4、clear5、putAllHashMap源码分析public class HashMap<K,V> extends Abst
2022-04-21 10:20:17 157
原创 Typora 常用快捷键
一、菜单栏文件:alt+F编辑:alt+E段落:alt+P格式:alt+O视图:alt+V主题:alt+T帮助:alt+H二、文件新建:Ctrl+N新建窗口:Ctrl+Shift+N打开:Ctrl+O快速打开:Ctrl+P保存:Ctrl+S另存为:Ctrl+Shift+S偏好:Ctrl+,关闭:Ctrl+W三、编辑撤销:Ctrl+Z重做:Ctrl+Y剪切:Ctrl+X复制:Ctrl+
2022-03-11 11:03:48 1877
原创 JVM学习笔记(一)
目录一、 Java从编译到执行1、编译到执行2、 JDK,JRE,JVM的关系二、运行时数据区1、运行时数据区概念2、Java方法和虚拟机栈(1)Java方法的运行(2)问题排查与调优3、Java方法的运行与栈帧(1)栈帧的组成(2)方法运行(对应一个栈帧)4、JVM的运行与对象的创建(1)创建对象的几种方式(2)对象的回收三、JVM运行流程一、 Java从编译到执行1、编译到执行编译类加载执行2、 JDK,JRE,JVM的关系JDK:java开发工具包JRE:ja
2022-03-08 11:17:51 497
原创 MarkDown编辑器MarkText的常用快捷键
文件新窗口Ctrl+N保存Ctrl+S粘贴纯文本Ctrl+Shift+V查找Ctrl+F关闭窗口Ctrl+W关闭选项卡Ctrl+Shift+W源代码模式Alt+Ctrl+S打字机模式Alt+Ctrl+T聚焦模式Ctrl+Shift+J侧边栏Ctrl+J显示标签栏Alt+Ctrl+B文本标题Ctrl+[1-6]表格Ctrl+Shift+T列表-有序列表1.切换列表类型Alt+Ctrl+U列表紧凑模式Alt+Ctrl+L引用>代码块Alt+Ctrl+C分割线***图像Ctrl+Shift+I超链接Ctrl
2022-03-04 16:20:14 1891
原创 解决: C:\Program Files\WindowsApps\.....函数不正确
目录1、问题:C:\Program Files\WindowsApps\E0469640.LenovoUtility_....\utility.exe 函数不正确。2、问题:C:\Program Files\WindowsApps\....\launcherrsxruntime.exe 函数不正确。1、问题:C:\Program Files\WindowsApps\E0469640.LenovoUtility_…\utility.exe 函数不正确。解决:找到 Lenovo HotKeys 打开,然
2022-03-03 15:07:15 41026 6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人