自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yuanchangliang的博客

学而优则广播之

  • 博客(166)
  • 资源 (1)
  • 收藏
  • 关注

原创 Spring使用三级缓存解决循环依赖?终于完全弄明白了

面试向,看完这篇文章,就再也不怕面试时回答三级缓存的问题支支吾吾了。巧妙结合了源码进行讲述,阅读门槛低,可以更加形象的理解整个Spring利用三级缓存解决循环依赖的过程和原理

2023-02-08 15:11:59 4448 4

原创 IDEA中output乱码的有效解决方法

idea中output中文乱码的有效解决方法

2023-02-07 11:03:17 731

原创 5种全局ID生成方式、优缺点及改进方案

5种全局ID生成方式、优缺点及改进方案

2022-11-30 23:37:42 1108

原创 navicat中的密码忘记了,解密navicat导出的密码

navicat的密码如果没有保存,过一段时间就记不住了,只要电脑没有格式化,navicat没有卸载,就可以直接解密获得密码

2022-10-31 19:33:49 5002 7

原创 通过IP获取准确地址,精确到县/区

通过IP获取准确地址,精确到县/区,不需要其他任何步骤,代码复制即用,一分钟可实现,方便快捷,比百度地图API都准确

2022-10-31 09:09:13 2961 5

原创 Java实现---动态修改定时任务的执行时间

针对产品经理提出的,可以在页面配置定时任务的执行时间,有了解决方案,虽然不算完美

2022-09-30 17:12:01 3962 6

原创 Java程序员毕业N年系列----毕业二年

毕业两年了,作为一个Java开发工程师,做个小总结吧

2022-08-31 16:32:45 2644 2

原创 如何拉取钉钉的外出、出差审批单

拉取钉钉审批单手把手教学

2022-08-24 17:45:51 1278

原创 最新Java微服务项目该选择什么技术架构

还在为微服务架构选型纠结?还在用Spring Cloud Netflix那一套?到底该用Dubbo,还是使用Spring Cloud?这里给出最详细的解答

2022-07-06 15:37:49 873

原创 openfeign异常--NoSuchBeanDefinitionException: No qualifying bean of type

NoSuchBeanDefinitionException异常

2022-06-29 17:11:18 1628

原创 CI/CD---使用新版云效流水线自动部署前端Vue项目

前端项目也可以使用流水线了,听说我们公司的运维居然不知道怎么弄前端流水线?要不要我来教教他,嘿嘿

2022-06-22 15:51:51 4676 6

原创 CentOS7下载安装nacos,及启动过程中出现的问题及注意事项

No DataSource set问题解决Nacos 启动报错[db-load-error]load jdbc.properties error问题解决这些问题都遇过,都解决了

2022-06-22 15:04:03 1555

原创 CI/CD---使用新版云效流水线自动部署Java微服务项目

使用云效流水线部署个人项目,太妙了,不需要安装或者购买任何软件,直接在线一键部署。只需要第一次部署成功,后续都只要提交代码后,点击运行流水线就可以

2022-06-17 15:46:08 1974

原创 Java项目启动后,服务不显示端口号的问题

微服务项目启动不显示端口号,居然是由于依赖问题,太神奇了,想不到

2022-06-15 16:19:50 3154 1

原创 CI/CD---使用新版云效流水线自动部署Java项目

持续集成,持续部署,再见了Jenkins,拥抱企业级 云效流水线 ,保姆式使用教学,妈妈再也不用担心我不会CI/CD了。

2022-06-08 16:21:02 3338 8

原创 Spring boot实现Excel导出文件

Spring boot实现Excel导出文件1、增加依赖ps:版本太高有概率发生slf4j的依赖冲突,版本改为4.1.2后冲突自动消失。<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version></dependency>&l

2022-05-07 17:03:41 1677

原创 Spring源码之Spring的大体框架

Spring源码(一)----了解Spring的大体框架Spring的源码数量特别多,在我下载了Spring FrameWork源码后,发现有些无从学起,那么就一步一步来,先不管其他,先了解一下Spring的大体框架:Spring源码框架如下:首先我们要知道,Spring框架的核心是什么,虽然AOP和IOC是Spring框架最出名的地方,但是对框架来说,Spring最核心的还是:Beans、Core、Context、Expression四大模块,如Spring-aop、Spring-web之类的,

2022-04-24 10:58:42 913 1

原创 Spring boot启动源码之run方法

Spring boot启动源码之run方法前言我们知道,Spring boot其实功能上,和Spring是一样的,只不过Spring boot更加方便开发,所以Spring boot的启动源码,本质上是和Spring一样的,只不过相比较于Spring的启动关键方法refresh(),只是对refresh()进行了一些封装,以及一些前置处理,后置处理。1、run方法的大致流程概述2、run方法源码public ConfigurableApplicationContext run(Strin.

2022-04-22 16:55:54 2699 1

原创 Spring boot启动源码之SpringApplication构造器

Spring启动源码之SpringApplication构造器Spring boot项目的启动类中的main方法如下:public static void main(String[] args) { SpringApplication.run(SspWebApplication.class, args); }ctrl + 鼠标左键点击查看run方法:public static ConfigurableApplicationContext run(Class<?&g.

2022-04-18 14:56:26 602 1

原创 Spring源码之AbstractApplicationContext解析(refresh)

Spring源码之AbstractApplicationContext解析Spring的IOC核心流程解析,了解Spring生命周期,了解refresh方法

2022-03-25 17:18:58 1459 4

原创 一个算法笨蛋的3月leetCode刷题日记

类似文章一个算法笨蛋的2021年11月leetCode刷题日记一个算法笨蛋的2021年12月leetCode刷题日记一个算法笨蛋的2022年1月leetCode刷题日记一个算法笨蛋的2022年2月leetCode刷题日记一个算法笨蛋的2022年3月leetCode刷题日记...

2022-03-02 14:33:08 351

原创 使用Java刷动态规划问题的经验总结

1、基调动态规划很难,不像排序算法或者查找算法,只需要记住固定的代码,就可以使用在任何需要该算法的地方,动态规划只有套路,或者说框架,可能你做了几百道动态规划的题,思路一时间没转过弯来,leetcode中medium级别的题都做不出来。2、术语解释动态规划有最优子结构、重叠子问题、状态转移方程、dp数组、base case、状态等术语。看起来高深莫测,其实都是一些容易理解的东西,这里我就解释一下我感觉需要了解的术语:状态什么是状态,状态就是变量,与所求的结果密切相关的变量。比如背包问题,要求背

2022-02-16 16:02:26 469 2

原创 一个算法笨蛋的2月leetCode刷题日记

时间情况2022年2月7日【474】一和零(思路:同样是动态规划中的0-1背包问题,我想到要用三维数组,但是想不到状态转移方程,脑子里还想着要给这个三维数组进行初始化,发现不现实,然后就gg了。看题解确实是用三维dp数组,方法同样巧妙,dp[i][j][k]代表的是前面k个字符串,有j个0,k个1,值为子集的长度。在一重循环中获取当前字符串的0的个数zeros和1的个数ones,在三重循环中进行判断选择放入背包或者不放入,不放入就是dp[i][j][k] = dp[i-1][j][k]...

2022-02-07 15:00:32 600

原创 一篇文章解释清楚leetcode经典动态规划问题:72.编辑距离

吐槽题意简单,但是它就是难,让人摸不着头脑,手足无措的难。思考一下由于是求最值,第一反应就是往动态规划方向想,但是就算是套用动态规划的思路框架:1、思考如何使用数组来表达状态,即dp table2、思考如何写出状态转移方程3、思考如何定义初始数据,即base case4、思考如何优化执行效率大部分人就会发现,连第一步都想不出来;增、删、替换这些个操作,如何体现为数组的操作。更不用说写出状态转移方程了。既然直接写出动态规划的写法太难了,那我们就换个思路,先根据下面的思路,层层推导试试:.

2022-01-24 10:36:28 443

原创 一个算法笨蛋的1月leetCode刷题日记

时间情况2022年1月1日元旦,继续补牙2022年1月2日元旦,带绝育后的猫去拆线2022年1月3日元旦,沉迷《金铲铲之战》2022年1月4日2022年1月5日2022年1月6日2022年1月7日2022年1月8日2022年1月9日2022年1月10日2022年1月11日2022年1月12日2022年1月13日2022年1月14日2022年1月15日2022年1月16日...

2022-01-10 16:37:49 759

原创 Java中List和数组转换的使用

关于数组和List的互相转换,大家都是耳熟能详了,毕竟是经典八股文之一。但是这里还是再次强调一些事项吧数组转List经典八股文,脱口而出的答案就是Arrays.asList()。但是我不推荐,两个理由:①对于数组的类型有要求。这也是为什么在网上搜数组转List的示例都是如:String[] strings = {“aa”,“bb”,“cc”}这种了。如果用int这种基本类型的数组呢:答案是不行。必须用Integer[],Double[]这种装箱后的类型,或者说必须引用类型。如果是方法限定

2021-12-14 17:18:11 745 1

原创 一个算法笨蛋的12月leetCode刷题日记

时间情况2021年12月1日2021年12月2日2021年12月3日2021年12月4日2021年12月5日2021年12月6日【606】根据二叉树创建字符串(思路:不错,这题我有一丝悟到的递归的真谛,化简为繁。用语言难以表述,就是看完题目,感觉好复杂,好难啊。然后突然就能够静下心来,观察题目,将条件最简化。以前我也试过静下心来观察题目,但是还是感觉好烦躁,写不出递归。这次我成功了,势如破竹,一下就写出了递归,太强了)2021年12月7日...

2021-12-08 17:11:49 3835

原创 一个算法笨蛋的11月leetCode刷题日记

时间情况2021年10月29日时隔一年,第三次重做反转链表,又没做出来,太废了2021年11月1日时隔两天,第四次重做反转链表,轻松写出2021年11月2日

2021-11-01 14:54:26 296 1

转载 MySQL的52条SQL语句性能优化

MySQL的52条SQL语句性能优化1对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。3应尽量避免在 where 子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某

2021-10-27 13:25:59 253

原创 个人开发者申请微信appKey和appSecret,及响应微信发送的Token验证的Java代码

个人开发者很难很难申请到微信开放平台中的appKey及appSecret。无论是创建移动应用,还是网页应用,或者小程序应用。我曾申请过两次,都审核失败了,必须要提供公司的信息+线下打印表格并填写+公司盖章+应用名字不能乱写。作为个人学习的目的申请创建应用,根本不可能。我曾一度绝望,好在过了几天,突然发现微信还可以申请测试号,虽然性能被限制了一点,但是作为个人学习或者个人项目中使用是完全够了(最狗的是微信开放平台也没看到哪里可以进入申请测试号的网址,我还是百度的时候,别人随口提了一句才看到这个网址)而.

2021-10-26 17:53:18 2286 4

原创 微服务后端部署+前端部署实践

我的微服务项目断断续续也有一年了,还没上过线,之前尝试过很多次,总是遇见各种问题,最后跌跌撞撞还是部署上去了。一、前言与其说这是知识分享,不如说是我的部署掉坑记录,所以很多坑都是独属于我的项目的,可能对其他人的参考性不大,所以这必然不会是一篇普适性强的的教学博客,而是纪录博客。这篇博客的主要作用是为了方便我自己以后参考。我的这个微服务项目本来刚开始架构的时候设计了非常多的模块,但是随着写着写着,发现可以没必要一步到位,先定义最基本的模块就行,其他非必要模块可以后面慢慢加,毕竟作为一个初学者,一步到.

2021-10-11 17:51:41 1812

原创 MySQL实现如果存在就更新,不存在就写入

最近的业务中,有这样一个需求:如果数据存在就更新,不存在就写入,一般情况下是需要先查询,后判断是更新还是写入的,需要进行两次IO操作。所以为了减少同步时间,第一个思路是使用并发,第二种思路就是应该尽量减少请求MySQL的次数,这里将讲讲第二种思路。正常情况下实现:如果存在就更新,不存在就写入的伪代码:// 伪代码user=User.FindById(1)if user == null{ user.Insert()}else{ user.Update()}需要先查询,然后在通过if.

2021-09-30 10:09:38 5376

原创 Jfinal框架写了getter、setter方法后,还是无法获取到自定义属性的问题(已解决)

在Jfianl框架中,前端默认是只能够获取到数据库中的字段的,而我们在实体类中额外添加的的字段,就算是写了getter,setter方法,在后端debug可以看到数据,但是传到前端后,却仍旧只能够看到返回了数据库中定义的字段。这对于习惯了Spring系列框架的开发者来说,是完全无法理解的。这也是这个框架没落的原因之一吧。想要前端能够看到我们自定义的属性,需要在自定义字段所在的实体类中重写_getAttrs方法,如下:@Overrideprotected Map<String, Object&g

2021-08-04 11:47:28 363 2

原创 实际生产中,应该使用什么模式来搭建rocketMQ集群?

在实际生产环境中,如果使用rocketMQ作为消息队列,一般都会搭建集群,只有一台master机器的都是用来学习和测试用的,基本不会用。结论先给出最终结论:在实际生产中,rocketMQ集群的最佳实践是:配置多个master机器+RAID10磁盘阵列,然后为每一个master机器都配备一个slaver机器即可,这样既利用了RAID10磁盘阵列的高效,又保证了消息的安全性,还解决了可能影响订阅的问题。分析下面是分析:首先我们来了解一下rocketMQ的复制和刷盘策略。复制也就是将数据从mas.

2021-08-03 23:01:06 327

原创 Linux中下载、安装、启动rocketMQ

rocketMQ安装启动非常简单,只需要几个小小的步骤。1、下载下载肯定是要在官网下载,网速也非常快,三四秒就下好了(我下的是2021年8月为止最新版的,有更新的可以去官网下):官网:http://rocketmq.apache.org/release_notes/release-notes-4.9.0/下载后,可以通过sftp5之类的windows-linux文件传输软件放到Linux合适的路径下:2、安装然后解压:unzip rocketmq-all-4.9.0-bin-rele.

2021-08-02 22:29:39 1722

原创 centos7下载jdk1.8及设置环境变量

因为最近在学习rocketMQ,下载安装rocketMQ的时候,发现centos虚拟机上的jdk还是linux自带的openjdk,于是卸载重新安装oracle的jdk1.8.1、卸载linux自带的jdk1.1、查看Linux自带的JDK是否已安装java -version1.2、查看JDK信息 rpm -qa | grep javajava-x.x.x-gcj-compat-x.x.x.x-xxjpp.xxxjava-x.x.x-openjdk-x.x.x.x-x.x.bxx.ex.

2021-07-29 23:52:17 375

转载 设计模式系列----备忘录模式

一、什么是备忘录模式备忘录这个词汇大家应该都不陌生,我就经常使用备忘录来记录一些比较重要的或者容易遗忘的信息,与之相关的最常见的应用有许多,比如游戏存档,我们玩游戏的时候肯定有存档功能,旨在下一次登录游戏时可以从上次退出的地方继续游戏,或者对复活点进行存档,如果挂掉了则可以读取复活点的存档信息重新开始。与之相类似的就是数据库的事务回滚,或者重做日志redolog等。备忘录模式(Memento),在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存着这个状态。这样以后就可将该对象恢复到

2021-07-29 14:50:11 1928

原创 Java程序员毕业N年系列----毕业一年

现在已经毕业一整年啦,是时候记录一下这一整年的起起落落了。先给大家看看我去年在知乎的小记吧:以上的四个目标中,我1、3、4都实现了。2021年5月份,终于养了只猫,路上捡的,好小好小,两个月大,现在已经养了快三个月了,感觉还挺好。刚来到我家的时候:现在:手机买了,分期买了个华为荣耀x10,大概2400多块钱。电脑买了,分期买了台联想笔记本电脑,大概5000块。只有第2条,有点出入,因为后来在公司我都是比较闲,直接在公司学下班回家后反而学到更少。至于我在2020年7月到2021.

2021-07-29 00:10:04 4113 15

原创 rocketMQ中,消费者、消费者组、Topic、队列的关系

初学roketMQ的同学可能会比较难以理解这四者之间的关系,这里我来理一下。1、消费者和消费者属于个体与群体的关系,非常容易理解,不赘述2、Topic是相当于一种消息类型,而队列queue则是属于某个Topic下的更细分的一种单元。举个例子。Topic代表老虎,是一种动物类型,而队列就相当于东北虎,是对老虎的更详细描述。3、在同一个消费者组下的消费者,不能同时消费同一个queue。4、一个消费者组下的消费者,可以同时消费同一个Topic下的不同队列的消息。5、不同消费者组下的消费者,可以同时.

2021-07-28 22:55:17 20059 14

原创 rocketMQ的初步认识,topic、nameServer、broker相关概念的解释

针对我学过kafka,然后半年过去了,基本什么概念都没,kafka的任何知识都忘了的学习状况,决定多多记录自己在学习新知识的各种见解,即使几个月以后回首望去,感觉这些知识太基础了也在所不惜。绝对不能重蹈kafka的覆辙。在rocketMQ中,有topic、nameServer、broker三个最基本概念:我眼里的三大最基础概念:1、topic:主题。每一个消息都会且只会属于某一个主题。消息和主题是属于一对一的关系,而主题和消息是属于一对多的关系。如下图,可以看到主题和消息的关系:如上图,生产.

2021-07-28 00:17:20 8061 5

demo-websocket.rar

springboot + themleaf + webSocket的一个超简单小demo,可以实现后端向前端实时通知,前端实时弹出弹框提示,还可以多个客户端通信,后端代码量200行不到。直接运行,什么都不用改,保证效果杠杠的,有问题咨询。

2021-08-05

空空如也

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

TA关注的人

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