自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 丢掉丑陋的 try-catch 代码块,试试统一异常处理吧!

对于我们日常写代码来说,异常常用的处理方式是通过 try-catch 代码块来处理,但是对于生产环境来说,各种 try-catch 代码块不仅使代码变得十分丑陋难以阅读,且如果忘记处理异常可能会导致各种问题,spring 为我们提供了全局异常处理的实现方式!这是 spring mvc 中提供的注解,从名称含义上来讲,即:,在 spring boot 中一样可以使用这两个注解被 spring 用来对 controller 和 restController 来进行增强一般主要用于以下 3 个方面:RespMo

2022-06-23 08:48:10 515 1

原创 什么?你还不会统一结果封装?

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。我们知道,C语言 是一门面向过程的编程语言,面向过程是十分简单的,但是代码之间的耦合度很高,且无法对现实世界很好的建模

2022-06-15 06:49:52 440

原创 寻找两个正序数组的中位数

给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。复杂度分析时间复杂度:O(N)O(N)O(N),主要为合并两个有序数组的时间,两个数组均会遍历一遍空间复杂度:O(N)O(N)O(N),主要为存储原数组和合并后的数组的空间执行耗时:1 ms,击败了100.00% 的Java用户内存消耗:42 MB,击败了85.82% 的Java用户上述实现中我们合并了数组,但是由于两个数组都是

2022-06-14 06:53:11 407

原创 Linux/MacOS下脚本登录远程服务器

最近在折腾Ubuntu系统,有时候需要连接远程服务器,使用 ssh 命令连接较为复杂,需要记住每台机器的 ip 和 密码,当然 Ubuntu(linux) 下也有类似于 xshell 一样的管理工具,例如:finalShell,但是在命令行下没有方便管理的工具,因此打算自己实现一个简单的,此方案同样适用于MacOS自动交互:Linux环境下有 expect 命令允许通过自动接收命令输出并根据不同输出自动输入对应内容,满足我们自动输入密码、yes等命令的需要操作交互:shell操作json较为复杂,如果使用

2022-06-09 08:06:33 342

原创 Java实现微信公众号自动回复

最近准备搭建自己的博客系统,有些软件或资料的下载链接放在网盘中,为了方便下载,同时可以将用户导流到公众号上,因此准备用Java实现微信公众号自动回复的功能首先当然是需要注册一个微信公众号,具体步骤就不在这里赘述了,注册地址:微信公众平台注册完毕后需要完成认证操作依赖引入,主要为xml相关依赖, 因为微信公众号采用的xml消息格式进行交互自动回复内容一共需要两个接口(两个接口路由完全一致,一个为GET请求,一个为POST请求)消息接收接口消息回复service文本回复service文本消息m

2022-06-08 06:51:26 5850 2

原创 Java实现掘金自动签到、免费抽奖

hello,大家好啊,最近我正在将文章同步到各大平台,在使用掘金的过程中发现掘金是可以每天签到领矿石的,并且每天可以免费抽奖一次,领取的矿石可以用来兑换掘金的一些周边礼品。作为一个程序员,那必须安排上每天自动签到、抽奖的功能啊,说干就干,下面开始讲解实际操作步骤签到和抽奖的原理都很简单,就是模拟浏览器发送接口请求来达到效果创建数据库表数据库配置签到、抽奖代码运行效果...

2022-06-07 06:34:57 1850 5

原创 Java调用CMD(Shell)命令

最近正在做一个视频转换平台,采用的方式是使用 Java 调用 ffmpeg 来实现视频的各种操作,因为 ffmpeg 都是使用 shell 命令来调用的,因此,我在代码中使用 Java 调用 shell 命令行具体ffmpeg安装可以参考这篇文章:ffmpeg安装Java中调用 shell 或者 cmd 命令一共有两种方式:Runtime此方式历史最为悠久,使用也最广,使应用程序能够与其运行的环境相连接,但是在读取上还存在一些不便性,正常的输出流与错误流得分开读取。其他功能基本相同。在jdk8中 Runt

2022-06-06 07:19:07 898

原创 力扣-无重复字符的最长字串

hello,大家好,我是腿短快跑,今天的主题是算法,这是我昨天刷的一道算法题。欢迎大家一起沟通有没有更好的实现方法给定一个字符串 ,请你找出其中的长度。输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是

2022-06-01 07:20:28 73

原创 面试官问你LinkedList?把这篇文章甩给他

本文内容基于 jdk1.8 环境本文最先发布于我的个人博客,CSDN为同步发布,如有需要,请访问 腿短快跑的个人博客 获取更多内容源码获取jdk 源码在我们 jdk 的安装目录下即可找到:jdk1.8在 jdk1.8 及之前的版本中,jdk的源码均可在安装目录的根目录下找到 src.zip,此包即为 jdk 源码jdk11从 jdk11 开始,jdk的源码包放在 jdk 安装目录下的 lib 目录下,在 lib 目录下找到 src.zip 即为源码实现接口LinkedL.

2022-05-31 07:09:03 130

原创 SpringBoot集成Freemarker并使用layout模板

大家早上好鸭,今天又是周一了,大家的周一综合症有没有犯呢,一起来摸鱼吧(手动狗头)本文章最先发布于我的个人博客,CSDN为同步发布,如有需要,可以访问腿短快跑的个人博客获取更多内容Freemarker简介FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。Freemarker和Thymeleaf对比Freema

2022-05-30 08:59:23 636

原创 不看这篇文章,你敢说会vim删除内容?

以下所有环境在Ubuntu20.04环境下此文章最先发表与我的个人博客,CSDN为同步发布,如有需要,可以访问腿短快跑的个人博客获取更多内容vim安装sudo apt-get install -y vim删除单行内容光标移动至需要删除的行按下 ESC 键,退出编辑模式双击 d 键, 即可删除删除所有的行共有三种方式:第一种方式按下 ESC键,退出编辑模式双击 g 键盘,让光标移动至文本首行按下键盘的 d 键, 然后按下键盘的 G 键,内容即可删除**注意: d 键.

2022-05-28 11:22:15 3719

原创 这可能是最详细的ArrayList源码分析

本文内容基于 jdk1.8 环境本文最先在我的个人博客发布,CSDN为同步发布,如有需要,可以访问腿短快跑的个人博客获取更多内容源码获取jdk 源码在我们 jdk 的安装目录下即可找到:jdk1.8在 jdk1.8 及之前的版本中,jdk的源码均可在安装目录的根目录下找到 src.zip,此包即为 jdk 源码jdk11从 jdk11 开始,jdk的源码包放在 jdk 安装目录下的 lib 目录下,在 lib 目录下找到 src.zip 即为源码实现接口ArrayList .

2022-05-27 07:21:01 138

原创 关于锁的四种状态分析

背景在使用多线程场景下,大部分同学都知道使用synchronized关键词来加锁实现多线程下的数据一致性的保证,但是在jdk6以前,synchronized锁是一个十分重量级的锁,之所以说是十分重量级是因为通过synchronized加锁jdk会向操作系统申请锁,锁是操作系统中一种十分核心的资源,可以理解为一个操作系统的锁数量是有限的,当我们每次都去申请操作系统的锁是对锁资源的一种巨大的浪费,另外一方面,大家都知道操作系统分为用户态和内核态,用户态是应用程序所在的一种状态,包括jdk和我们的java程序

2021-03-15 22:17:30 558

原创 springboot+druid+mybatis实现多数据源访问

环境准备创建数据库create database test01;create database test02;创建表use test01;CREATE TABLE `person` ( `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `name` varchar(255) NOT NULL COMMENT '名称', `age` int(3) NOT NULL COMMENT '年龄', PRIMARY K

2021-03-15 14:56:32 189

原创 记一次Spring中@Transactional未生效问题

背景在controller方法上增加了@Transactional注解,实际运行过程中方法出现了Exception导致方法执行失败,但是发现已经执行的insert操作并没有回滚@Transactional可能失效的场景一个有@Transactional的方法被没有@Transactional方法调用时,会导致Transactional作用失效产生原因: Spring AOP代理造成,因为只有当事务方法被当前类以外的代码调用时,才会由Spring生成的代理对象来管理。对非public方法进行

2021-03-15 14:54:30 428

原创 CAS原理解析

什么是CAScas全称为compareAndSwap,可以很清楚的翻译知道意思为“比较和交换”,字面意思其实就已经解释了CAS的实现原理CAS简介从jdk5开始,jdk提供了java.util.concurrent.*,此包下面的类在高并发场景下经常使用,包中的原子类基于CAS实现了区别于syncchrnoized同步锁,CAS是一种乐观锁CAS实现原理解析上图为cas实现的原理图,很好的诠释了CAS的名称“比较和交换”,先读取当前值,计算应该的结果,再读取值和旧值判断是否相同,..

2021-03-15 14:51:24 335

原创 记一次端口未开放导致容器不停重启问题

产生背景公司服务进行k8s容器化迁移,其他服务均正常,但是有两个服务本地运行正常,打成jar包后运行也正常,但是上容器后发现容器不停重启排查过程检查服务日志,发现每次容器shutdown的时候输出连接kafka timeout日志以为是kafka导致,经检查验证kafka正常没问题此时排除了是服务代码导致的问题rancher中查看k8s健康检查采用的方式为通过http请求/actuator/liveness-probe接口检查发现对应的端口提示connection refused,本地运行也

2020-07-31 12:41:13 200

原创 log4j日志使用DailyRollingFileAppender进行滚动写入的时候日志写入到旧日志文件中

产生背景线上排查问题的时候发现日志文件缺失,登录到机器上发现mybatis日志正常输出在当天的日志文件中,但是对应的业务日志没有输出到当天的日志文件中,经检查发现,业务日志输出到了前一天的日志文件中产生原因mybatis和业务日志分别使用了不同的appender,但是两个appender目标日志文件为同一个,在进行文件切换的时候两个appender都有输出日志,产生了冲突导致业务日志没有切换到新的日志文件...

2020-07-31 12:32:53 542

原创 关于Lombok使用@Builder无法build父类属性问题

问题描述实体类使用Lombok的@Builder来实现Builder模式,但是如果使用了extend继承,则子类无法通过Builder来Build父类属性值解决方案父类增加@NoArgsConstructor、@AllArgsConstructor注解来增加无参和全参构造函数【注:父类属性不能设置为private,否则仍然无法访问,父类不允许有@Builder注解,否则会和子类冲突】子类增加@NoArgsConstructor来增加无参构造函数,自定义一个全参构造函数(包含父类属性.

2020-06-15 17:40:05 9621

空空如也

空空如也

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

TA关注的人

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