Jenkins的邮件配置
摘要:虽然两三年前配过一次,细节已经没啥印象了,今天又重新配置了一次,只感觉这个配置好多坑。也是因为自己对这一套的原理理解不到位吧,但是不得不说,还是坑,设计和提示地不人性化。 1.细节很多,但是具体的说明不显眼; 2.执行job,你以为成功了,但是收件箱就是没有收到,此时job的console outp
阅读全文
posted @
2021-09-30 23:25
长江同学
阅读(670)
推荐(0) 编辑
Linux cron crontab jenkins java 定时作业
摘要:今天配置了一下Jenkins作为简单的定时作业配置,辅助线上的一些手动处理作业。配置到Build Perodemically的时候,觉得这种cron配置好像很多地方都见过。所以这里总结一下,方便系统地认识理解和使用这个工具与规则。 【cron与crontab】 在Unix与类Unix系统(Linux
阅读全文
posted @
2021-09-30 20:47
长江同学
阅读(268)
推荐(0) 编辑
业务系统数据库设计经验总结(八)-关于startTime和endTime
摘要:之前在设计一些查询语句的时候,总是会纠结,到底开始时间是设置成00:00:00还是00:00:01,不确定前者是否是合法的时间设置。于是: public static void main(String[] args) throws ParseException { SimpleDateFormat
阅读全文
posted @
2021-09-30 13:33
长江同学
阅读(509)
推荐(0) 编辑
CSV格式转Excel数字自动转为科学计数表示的解决
摘要:在之前的博客中,提到了一种CSV文本生成下载方法(链接)。但在实际使用过程中,发现了一个问题,无论后台生成的变量是字符串还是数值类型,只要是超过了一定的范围,下载的CSV文件内容用Excel打开时就会转用科学计数法;另外,日期的表示也是很奇怪: 但实际上,用户希望打开就直接是文本内容: 【解决】 E
阅读全文
posted @
2021-09-24 22:36
长江同学
阅读(1143)
推荐(0) 编辑
插入排序的基本实现
摘要:插入排序是非常好理解的。看图: 注意,这里比较是从最后一个元素往前比较,如果当前的元素比上一个大,那么比较和交换的工作就此停止。如果是每次都从第一位开始比较的话,那么无论是否已经排好顺序,总是会比较n-1个元素,次数上是会比这种方法多的。 代码如下: public class InsertionSo
阅读全文
posted @
2021-09-22 22:02
长江同学
阅读(83)
推荐(0) 编辑
双轴快排的基本实现
摘要:在之前的博客里说了快排的基本原理,并配图和代码说明了执行流程(https://www.cnblogs.com/bruceChan0018/p/15209130.html)。在快排的优化手段里,也提到了JDK1.8中的Arrays.sort用到了双轴快排。这里就主要说明双轴快排的流程,原理和代码实现。
阅读全文
posted @
2021-09-19 23:33
长江同学
阅读(240)
推荐(0) 编辑
快速排序的优化
摘要:基本的快速排序流程和代码在之前的博客中已经展示。这里主要说明一些快排的问题以及优化手段。 1.快排是递归处理,所以当集合的数字很多时,我们要注意调用栈的深度。如果调用栈超过了限制,就会造成堆栈的溢出。这个时候我们需要对栈最大深度进行设置,一旦达到了这个深度,不能继续递归,而改为其它的排序方法。 2.
阅读全文
posted @
2021-09-18 23:28
长江同学
阅读(611)
推荐(0) 编辑
冒泡排序的优化
摘要:冒泡排序的优化主要是三个点:1.使用异或运算,使元素交换时不用临时变量: array[j] ^= array[j + 1]; array[j + 1] ^= array[j]; array[j] ^= array[j + 1]; 2.在外部循环时,设置一个标记,如果整轮比较之后,内部元素交换都没有交
阅读全文
posted @
2021-09-17 21:46
长江同学
阅读(311)
推荐(0) 编辑
冒泡排序与快速排序的复杂度分析
摘要:在之前的两篇blog中,已经简要的说明了冒泡排序和快排的原理、过程图示以及代码实现。这里主要讨论的是两种排序的复杂度以及一些常见的优化手段。 冒泡排序 【时间复杂度】 在整个序列完全是有序的状态下,只需要执行第一次的内层循环。只要做好标记,我们就不用再进行后续的内层循环。此时时间复杂度为O(n);
阅读全文
posted @
2021-09-17 00:13
长江同学
阅读(1633)
推荐(0) 编辑
求对称质数-一道算法题的思考优化过程
摘要:在孤尽大佬的开课吧公开课视频(地址:https://www.kaikeba.com/open/item?c=681&channelCode=gjsh6ytvxy)中,有一道很有意思的题目: 首先,我们需要写出如何判断对称数和质数两个函数。 对于质数的判断,我们不难想到,如果可以整除,那么能被整除的因
阅读全文
posted @
2021-09-15 20:49
长江同学
阅读(197)
推荐(0) 编辑
关于树结构中”度“来源的思考
摘要:上一篇blog主要简述了树、二叉树相关的定义和类型。 其中一个很重要、很基础的概念就是节点的度。大家有没有想过,为什么要用“度”作为子节点个数的量化单位呢?按理说,如果是子节点个数,用“子”或者“孩”岂不是更好理解? 那这里要想到,计算机整个体系实际上是一种舶来品,我们需要参照原体系中的定义来进行翻
阅读全文
posted @
2021-09-14 16:02
长江同学
阅读(277)
推荐(0) 编辑
树,二叉树,完全二叉树的概念
摘要:树的概念本身是比较简单的,绝大部分情况下,我们都不会讨论树这个大类,而是具体的某种类型的树,比如各种类型的二叉树。在具体的树的类型中,各种不同的应用会根据他们的场景特点选择特定类型的树来处理元素的操作。比如,红黑树,平衡二叉树,AVL平衡二叉树,二叉堆......在此之前,我们需要对一些重要的概念进
阅读全文
posted @
2021-09-13 22:34
长江同学
阅读(631)
推荐(0) 编辑
冒泡排序的基本实现
摘要:基本流程: N个数字,进行a[0]和a[1]比较,如果前者比后者大,就交换位置;a[1]和a[2]比较,如果前者比后者大,就交换位置...直到最后一个数字,此时可以保证最后一个数字整组最大; 剩余N-1个数字,进行a[0]和a[1]比较,如果前者比后者大,就交换位置;...,此时可以保证最后两个数字
阅读全文
posted @
2021-09-13 20:27
长江同学
阅读(40)
推荐(0) 编辑
快速排序的基本实现
摘要:基本流程: a.选取第一个元素作为pivotb0.先处理R处的元素b1.R处的元素与pivot比较,如果比pivot元素大,元素覆盖R位置,R左移,直到与L重合b2.R处的元素与pivot比较,如果比pivot元素小,元素覆盖L位置,L右移,直到与L重合b3.如果处理L和R处的元素没有变化时,继续前
阅读全文
posted @
2021-09-12 22:54
长江同学
阅读(55)
推荐(0) 编辑
2021/06--09学习情况一些总结和反思
摘要:从六月份开始,断断续续写了80篇左右的blog,基本上是比较符合预期的。但是在这个过程中,逐渐感觉到会有一些力不从心的方面。这里小结一下,好的地方继续保持和发扬,后期如果状态不佳,可以查看帮助快速恢复状态;不好的地方,继续寻找有效的办法,在实践中进行不断地反馈和迭代,最终的目的是形成一套正向的循环。
阅读全文
posted @
2021-09-10 23:36
长江同学
阅读(38)
推荐(0) 编辑
IntegerCache的一些联想
摘要:【简述】 Jdk1.5中引入了Integer对象的cache机制。最初是因为一道面试题踩了坑,后来仔细看了Integer类才知道这个IntegerCache。 这段代码并不难理解,其它的包装类也同时引入了缓存机制,最触动我的地方在于,优秀的框架和源码都在不断地从实践中追求性能和极致,我们应该用怎样的
阅读全文
posted @
2021-09-09 22:03
长江同学
阅读(38)
推荐(0) 编辑
Hibernate, Jpa, Spring Data Jpa的关系与区别
摘要:JPA是一套标准与规范,是Java Persistence API的简称,定义了一种对象、关系映射工具,用于管理应用中的关系数据。将开发者从JDBC和SQL的样板代码中解放出来。这套标准可以是Hibernate实现,也可以是OpenJpa, EclipseLink......所以可以理解为,JPA是
阅读全文
posted @
2021-09-08 09:25
长江同学
阅读(333)
推荐(0) 编辑
Springboot+Hibernate+Transactional中save提交引发的db异常无法捕获
摘要:【问题】 这段代码在调试过程中遇到一个出乎意料的问题:在数据存储过程中,出了data too long的问题,但是try/catch中却没有捕获到。代码如下: 进行debug的时候发现,代码会顺利地将try中的代码执行完,而后return。之后在TransactionAspectSupport的co
阅读全文
posted @
2021-09-07 21:58
长江同学
阅读(371)
推荐(0) 编辑
一个涉及多系统多步骤的业务需求设计与思考
摘要:【需求】 在开发过程中遇到了一个提现的需求,大概的流程如下:1.先去第三方的交易系统中申请转账,将钱转入平台的资金账户中2.第1步成功之后,再将转入平台的资金提取到对应的商户银行卡里 拿到需求的第一时间想的是一个接口逻辑直接搞定,因为需求这边的设计是转账提现一步到位。所以直接第一步用http请求第一
阅读全文
posted @
2021-09-06 21:53
长江同学
阅读(186)
推荐(0) 编辑
远程访问协议ssh,rlogin,telnet
摘要:在之前的linux服务器远程复制文件/目录,远程上传文件/目录以及ssh远程连接中,主要说明了操作步骤和一些基本的原理。这里主要介绍一下几个常见的远程访问协议:telnet,rlogin,ssh。 一般来说,不管什么协议,大体上的访问步骤基本是确定的:1.两台机器上安装对应协议的server和cli
阅读全文
posted @
2021-09-04 17:00
长江同学
阅读(1316)
推荐(0) 编辑