自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 厚积薄发打卡Day114:Debug设计模式:设计原则(二)<接口隔离原则、迪米特法则>

Debug设计模式:设计原则(二)

2023-01-26 01:07:08 1083 1

原创 厚积薄发打卡Day115:Debug设计模式<简单工厂、工厂方法、抽象工厂>

Debug设计模式

2023-01-26 01:03:41 1029

原创 【无标题】

设计原则(二)

2023-01-26 00:58:14 830

原创 厚积薄发打卡Day113:Debug设计模式:设计原则(一)<开闭原则、依赖倒置、单一职责>

Debug设计模式:设计原则(一)

2023-01-08 23:20:48 322

原创 厚积薄发打卡Day112:堆栈实践(二)<汉诺塔问题:树形分析>

汉诺塔问题图解+树形分析

2023-01-05 16:55:39 597

原创 厚积薄发打卡Day111:堆栈实践(一)<数组模拟堆栈、链表模拟堆栈、洗牌与发牌的过程>

堆栈实践(一)

2023-01-01 23:30:36 268

原创 厚积薄发打卡Day110:链表(九)排序的循环链表

厚积薄发打卡Day110:链表(九)<排序的循环链表>排序的循环链表问题:在一个循环链表中节点的值递增排序,请设计一个算法在该循环链表中插入节点,并保证插入节点之后的循环链表仍然是排序的。例如,图4.15(a)所示是一个排序的循环链表,插入一个值为4的节点之后的链表如图4.15(b)所示。实现/** * 排序的循环链表 */public class SortedCycleNodeList { public static ListNode insert(ListNod

2021-12-31 23:48:08 294

原创 厚积薄发打卡Day109:链表(七)回文链表

厚积薄发打卡Day109:链表(七)<回文链表>回文链表问题:如何判断一个链表是不是回文?要求解法的时间复杂度是O(m),并且不得使用超过 O(1)的辅助空间。如果一个链表是回文,那么链表的节点序列从前往后看和从后往前看是相同的。例如,链表A的节点序列从前往后看和从后往前看都是 1、2、3、3、2、1,因此这是一个回文链表。链表A:1->2->3->3->2->1思路对半分反转比较实现/** * 回文链表 */public class

2021-12-31 23:38:03 178

原创 厚积薄发打卡Day108:链表(六)重排链表

厚积薄发打卡Day108:链表(六)<重排链表>重排链表问题;给定一个链表,链表中节点的顺序是L0–>L1–>L2–>…->Ln,请问如何重排链表使节点的顺序变成 L0–>Ln–>L1–>Ln-1–>L2–>Ln-2… 例如,输入链表(a),重排之后得到链表(b):输入:1->2->3->4->5->6输出:1->6->2->5->3->4思路对半分反转后半部分

2021-12-31 23:32:53 223

原创 厚积薄发打卡Day107:链表(五)链表中的数字相加

厚积薄发打卡Day107:链表(五)<链表中的数字相加>链表中的数字相加题目:给定两个表示非负整数的单向链表,请问如何实现这两个整数的相加并且把它们的和仍然用单向链表表示?链表中的每个节点表示整数十进制的一位,并且头节点对应整数的最高位数而尾节点对应整数的个位数。例如,在链表(a)和链表(b)中,两个链表分别表示整数123和 531,它们的和为654,对应的链表(c)所示。a: 1->2->3b: 5->3->1c: 6->5->4思

2021-12-31 23:22:42 251

原创 厚积薄发打卡Day106:链表(四)反转链表

厚积薄发打卡Day106:链表(四)<反转链表>反转链表反转一个单链表。输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL实现非递归:public class ReverseNodeList { public static ListNode reverseNodeList(ListNode head) { ListNode prev = null

2021-12-31 23:08:47 225

原创 厚积薄发打卡Day105:链表(三)两个链表的第1个重合节点

厚积薄发打卡Day105:链表(三)<两个链表的第1个重合节点>两个链表的第1个重合节点输入两个单向链表,请问如何找出它们的第1个重合节点。例如,图中的两个链表的第1个重合节点的值是4。思路整体思路,从两个链表的相对同一位置出发遍历,得到首个相同的节点即为重合节点上图输入了:链表1:1->2->3->4->5->6链表2:7->8->4->5->6因为存在输入的两个链表长度不一致的情况,所以需要一定的校验:将

2021-12-31 22:53:34 528

原创 厚积薄发打卡Day104:链表(二)<链表中的环的入口节点>

链表中的环的入口节点如果一个链表中包含换,那么应该如何找出环的入口节点?LeetCode题目:给定一个链表,若其中包含环,请找出该链表的环的入口节点,否则,输出null。如上图,环的入口节点为3思路野路子:如果想要实现循环链表,那么必定在单链表的最后重新添加一个原有的节点,那么可以借助set结构对节点进行遍历去重,得到重复的节点就是为环的入口节点真是平平无奇小天才正式解题:借助上题思路(厚积薄发打卡Day103:链表(一)<删除倒数第k个节点>)可以借助快慢双指针的方法来解

2021-12-06 10:31:16 93

原创 厚积薄发打卡Day103:链表(一)<删除倒数第k个节点>

删除节点题目:如果给定一个链表,请问如何删除链表中的倒数第K个节点?假设链表中的节点总数为N,那么1≤K≤N。要求只能遍历链表一次举例:输入如下链表a,删除倒数第2个节点之后得到链表b链表a: 1-->2-->3-->4-->5-->6链表b: 1-->2-->3-->4-->6思路如果可以遍历两次,那么这个问题就会变得简单不少:第一次遍历获取链表总结点数n(题目为例:n = 6)第二次遍历直接找出链表的第n-k个节

2021-11-30 14:14:00 580

原创 厚积薄发打卡Day102:哈希表(七)<最小时间差>

最小时间差给定一组范围在00:00至23:59的时间,求任意两个时间之间的最小时间差。例如,输入时间数组[“23:50”,“23:59”,“00:00”],"23:59"和"00:00"之间只有1分钟的间隔,是最小的时间差。思路题目中要求求分钟的最小时间差,计算得出一天有24*60 = 1440min,因此可以创建一个长度为1440的数组容器当作映射表,并把字符串时间存入数组中:数组下标:一天的分钟数数组的值:是否出现了这个时间接下来只要遍历容器,比较数组值为true的下标,求最小值

2021-11-14 23:06:21 230

原创 厚积薄发打卡Day101:哈希表(六)<外星语言是否排序>

外星语言是否排序有一门外星语言,它的字母表刚好包含所有的英文小写字母,只是字母表的顺序不同。给定一组单词和字母表顺序,请判断这些单词是否按照字母表的顺序排序。例如,输入一组单词[“offer”,“is”,“coming”],以及字母表顺序"zyxwvutsrqponmlkjihgfedcba",由于字母’o’在字母表中位于’i’的前面,因此单词"offer"排在"is"的前面;同样,由于字母’i’在字母表中位于’c’的前面,因此单词"is"排在"coming"的前面。因此,这一组单词是按照字母表顺

2021-11-14 22:38:03 100

原创 厚积薄发打卡Day100:哈希表(五)<变位词组>

变位词组给定一组单词,请将它们按照变位词分组。例如,输入一组单词[“eat”,“tea”,“tan”,“ate”,“nat”,“bat”],这组单词可以分成3组,分别是[“eat”,“tea”,“ate”]、[“tan”,“nat”]和[“bat”]。假设单词中只包含英文小写字母。思路1:数字映射题目中假设单词中只包含英文小写字母,因此可以创建数组来保存每个词组的单词:用质数映射到对应的26个单词用乘法运算保证每个词组拥有单词成分的唯一性最后用词组内的每个单词的映射质数乘积当key,v

2021-11-14 00:34:34 591

原创 厚积薄发打卡Day99:哈希表(四)<有效的变位词>

有效的变位词给定两个字符串s和t,请判断它们是不是一组变位词:在一组变位词中,它们中的字符及每个字符出现的次数都相同,但字符的顺序不能相同。例如,"anagram"和"nagaram"就是一组变位词。思路针对变位词的解析可以移步上一小节:关于变位词的解析:厚积薄发打卡Day98:哈希表(三)<字符串变位词>由于变位词与字符出现的次数相关,因此可以用一个哈希表来储存字符出现的次数:哈希表<字符,字符出现的次数>实现数组如果只考虑小写英文字母,则可以用数组模拟哈希表小写

2021-11-12 00:57:19 619

原创 厚积薄发打卡Day98:哈希表(三)<字符串变位词>

变位词变位词是与字符串相关算法题经常出现的概念,所谓变位词是指组成各个单词的字母及每个字母出现的次数完全相同,只是字母排列顺序不同。例如:“pots”,“stop”,“tops” 就是一组变位词.字符中的变位词输入字符串s1和s2,如何判断字符串s2中是否包含字符串s1的某个变位词?如果字符串s2中包含字符串s1的某个变位词,则字符串s1至少有一个变位词是字符串s2的子字符串。假设两个字符串中只包含英文小写字母。例如,字符串s1为"ac",字符串s2为 “decaf”,由于字符串s2中包含字符串

2021-11-11 00:39:08 431

原创 厚积薄发打卡Day97:哈希表(二)< 实现LRU缓存 >

题目二:请设计实现一个最近最少使用( Least Recently Used,LRU)缓存,要求如下两个操作的时间复杂度都是O(1):get(key):如果缓存中存在键key,则返回它对应的值;否则返回-1put( key, value):如果缓存中之前包含键key,则它的值设为 value;否则添加键key及对应的值 value。在添加一个键时,如果缓存容量已经满了,则在添加新键之前删除最近最少使用的键(缓存中最长时间没有被使用过的元素)。思路:先来翻译翻译题目的意思:假设这里

2021-11-08 00:55:48 250

原创 厚积薄发打卡Day96:哈希表(一)< 实现查删插为O(1)的容器 >

哈希表:哈希表是一种常见的数据结构,其最大有点是高效,在哈希表的插入、删除或查找元素的时候只需要O(1)的时间,因此哈希表常被用来优化时间效率。在Java中,哈希表有两个对应的类型,即HashSet和HashMap:HashMap:映射关系结构:数组+链表+红黑树(1.8+)key为set结构:不可重复value为collection结构:可重复HashSet:集合结构:HashMap的key题目一:设计一个数据结构,使得如下三个操作的时间复杂

2021-11-07 23:14:48 108

原创 厚积薄发打卡Day95: 排序算法之映射排序<桶排序>

厚积薄发打卡Day93: 排序算法之循环不变式<插入、选择、冒泡>厚积薄发打卡Day94: 排序算法之分治策略<归并、快排>桶排序概念:参考:桶排序桶排序(Bucket Sort)的原理很简单,它是将数组分到有限数量的桶子里。桶的结构:List<LinkedList<Integer>>,也就是Hash结构,是一种映射Hashmap的储存也是用到了桶结构:在将数据放到桶中之后,再通过一定的算法,将桶中的数据提出来,并转换成有序数组。就得到我们.

2021-10-31 23:21:01 347

原创 厚积薄发打卡Day94: 排序算法之分治策略<归并、快排>

厚积薄发打卡Day93: 排序算法之循环不变式<插入、选择、冒泡>分治策略分而治之(Divide And Conquer):将一个大问题化解成无数个相同的小问题进行求解,也就是递归的运用。排序的分治策略:将集合A不断拆分成相同的小集合,最后逐一返回合并得解[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5xWKr1Uh-1635693287652)(重温经典的排序算法.assets/image-20211031204640261.png)]重点:必须强调终止条.

2021-10-31 23:17:42 103

原创 厚积薄发打卡Day93: 排序算法之循环不变式<插入、选择、冒泡>

前置:为了后续测试方便,定义了IMutableSorter和IImutableSorter两种接口IMutableSorter :不改变原来集合IImutableSorter:返回一个新的集合测试类,可通过反射测试对应的排序public class MySortTest { public void sortTest(Class clazz, int N) { try { Constructor constructor = clazz.ge

2021-10-31 23:13:00 326

原创 厚积薄发打卡Day92: MongoDB + RabbitMQ 构建消息推送功能(下)<RabbitMQ简易入门与整合>

产品选用消息队列产品有很多,比如说常见的有Kafka、RocketMQ、RabbitMQ和ActiveMQ:其中了解后Kafka的性能是最好的,并发量比较大,而且消息收发的速度也非常快。但是消息收发的可靠性上,Kafka不如RabbitMQ,而且技术选型的时候执行速度并不是唯一标准,开发效率、易用性也是需要考虑的。RabbitMQ具有支持消息异步收发,又支持同步收发的特点,虽然现在大部分的场景对应的是消息异步收发,但是有的场合要支持消息的同步收发,这时候RabbitMQ能适应各种业务场景的优点就显现

2021-10-08 00:31:10 414

原创 厚积薄发打卡Day91: MongoDB + RabbitMQ 构建消息推送功能(中)<MongoDB消息对象>

MongoDB集合:Message消息对象集合有什么字段,取决于保存在其中的数据。下面这张表格是Message集合中JSON数据的结构要求:字段类型备注_idUUID自动生成的主键值uuidUUIDUUID值,并且设置有唯一性索引,防止消息被重复消费senderIdInteger发送者ID,就是用户ID。如果是系统自动发出,这个ID值是0senderPhotoString发送者的头像URL。在消息页面要显示发送人的头像senderNa

2021-10-08 00:28:05 208

原创 厚积薄发打卡Day90: MongoDB + RabbitMQ 构建消息推送功能(上)<环境搭建及MongoDB入门>

业务背景消息系统需求实现:需要记录消息本身,以及消息发送对象消息发送后,需要在客户端显示消息的已读、未读的提示。思路:假如只是单纯消息发送,不管有无看到(类似 UDP连接),则直接创建消息表存消息即可。但需要记录用过户已读、未读消息则需要多建用户消息记录表,同时向n个用户发送m条消息则需要在数据表中记录m*n条数据,发送消息的瞬间将有大量的性能损耗在数据库读写上,此时传统的关系型数据库则会严重影响整个系统的运行。因为消息模块的要存储的数据量太大,普通MySQL读写消耗开销过大映像性能,所

2021-10-08 00:26:25 540

原创 厚积薄发打卡Day89: Springboot整合JavaMailSender实例

背景:在某个业务执行签到时,会根据疫情风险等级判断是否发送告警邮件:如果员工的签到地点为中高风险地区则需要发送邮件给对应人事进行告警。在签到过程中的业务逻辑相对耗时,且需要保存数据同步执行;如果发送邮件再做成同步执行的,势必导致签到执行时间过长,影响用户体验。而发送邮件跟保存签到数据没有直接关联,所以使用异步执行能提高用户体验。参考:spring-boot @Async 的使用、自定义Executor的配置方法 SpringBoot整合JavaMailSender实现邮件发送整合:

2021-10-06 22:32:06 223

原创 厚积薄发打卡Day88: 利用Swagger2搭建REST-API前后端调试

官网链接:https://swagger.io/solutions/api-design/使用指南:使用Swagger2自动生成API接口文档背景:对于前后端分离的项目,前后端的工程师协同开发,在这种开发模式下,维持一份及时更新且完整的 Rest API 文档将会极大的提高我们的工作效率。传统意义上的文档都是后端开发人员手动编写的,相信大家也都知道这种方式很难保证文档的及时性,这种文档久而久之也就会失去其参考意义,反而还会加大我们的沟通成本。而Swagger 给我们提供了一个全新的维护 API .

2021-10-06 17:16:33 138

原创 厚积薄发打卡Day87: 利用Jsoup解析地区疫情风险等级

背景:在某个业务需求中,需要针对用户对应的位置信息获取对应的疫情风险等级,目前市面上找不到对应的接口,不过在本地宝中可以通过H5的GET接口可以查询到对应具体某地的疫情风险信息,如图:http://m.bendibao.com/news/yqdengji/?qu=%E9%BE%99%E5%B2%97%E5%8C%BA可通过页面元素找到对应元素获取对应的位置信息:同时观察对应的get接口,可以看到URL地址要传入两个参数:城市编码和区县,(深圳例外:直接bendibao),如查询广州珠海的疫情

2021-10-06 17:13:26 667

原创 厚积薄发打卡Day86: Shiro+JWT+Redis实现微信小程序实现单点登录(下)<整合Shiro>

生成了Token后,这个Token是需要返回给客户端的,用于登录。接下来要把JWT和Shiro框架整合起来,这样Shiro框架就会拦截所有的Http请求,然后验证请求提交的Token是否有效:整合步骤:配置文件:ShiroConfig:把设置应用到Shiro框架AuthenticatingFilter:拦截HTTP请求,验证TokenAuthorizingRealm:自定义认证与授权的实现方法AuthenticationToken:把 Token封装成认证对象自底向上实现封装Token

2021-10-06 17:10:51 605

原创 厚积薄发打卡Day85: Shiro+JWT+Redis实现微信小程序实现单点登录(上)<前置>

什么是单点登录?定义:单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。简单来说就是多个服务器的“REMEMBER ME”功能。扩展阅读:什么是单点登录(SSO)使用技术JWTJWT(Json web token ):由于HTTP是无状态的协议,这意味着服务器无法确认用户的信息,因此我们则需要JWT来代替Session,告知服务器并亮明身份。Shiro

2021-10-06 17:08:26 793

原创 厚积薄发打卡Day84:从登录认证到Shrio简单入门<Saas-HRM实战Day05>

SpringMVC拦截器自定义拦截器:HandlerInterceptorAdapter使用:需要继承HandlerInterceptorAdapter类,并可以根据业务重写其中不同的方法:preHandle 进入到控制器方法之前执行的内容返回boolean:true:可以继续执行控制器方法false:拦截posthandle:执行控制器方法之后执行的内容afterCompletion:响应结束之前执行的内容代码示例:@Componentp

2021-10-06 17:04:53 110

原创 厚积薄发打卡Day83:【MSUP】Java语言特性与设计模式(下)<Java语言基础>

厚积薄发打卡Day76 :【MSUP】Java语言特性与设计模式(下)<Java语言基础>前言在看狂神频道的时候偶然发现下图,感触颇深。特别在当今【程序 = 业务 + 框架】思想盛行的开发者中,夯实基础基础显得格外重要,因此开此专栏总结记录。Java语言基础这个题目能够考察到数据结构Java 基础实现以及对并发问题的处理思路的掌握程度HashMap与 CurrentHashMapJava 的不同版本新技术特性map 的实现集合类:常用集合类实现与 Java 并

2021-07-31 23:32:06 198 1

原创 厚积薄发打卡Day82 :【MSUP】MySQL调优与最佳实践(上)<先行概念>

厚积薄发打卡Day82 :【MSUP】MySql调优与最佳实践(上)前言在看狂神频道的时候偶然发现下图,感触颇深。特别在当今【程序 = 业务 + 框架】思想盛行的开发者中,夯实基础基础显得格外重要,因此开此专栏总结记录。MySql调优与最佳实践MySql是互联网行业中使用最为广泛的关系型数据库:MySql 的第一个知识点是要能手写常用的SQL语句,这块没有什么特殊的技巧,根据所列举的语句进行对应练习即可:条件查询关联查询排序查询分组查询逻辑关键字函数知道MySql 都

2021-07-31 21:18:09 137

原创 厚积薄发打卡Day81 :【MSUP】必会技术框架Spring(下)<从Spring初始化流程到SpringBoot>

前言在看狂神频道的时候偶然发现下图,感触颇深。特别在当今【程序 = 业务 + 框架】思想盛行的开发者中,夯实基础基础显得格外重要,因此开此专栏总结记录。对于Spring框架的知识,已经在学习设计模式的时候练习过一轮,接下来不断温故而知新哈哈,学习记录回顾:厚积薄发打卡Day47: [itcast] GoF23设计模式之<自定义SpringIOC>(上)厚积薄发打卡Day48: [itcast] GoF23设计模式之<自定义SpringIOC>(下)SpringContext初始化流程:(

2021-07-29 20:48:30 164

原创 厚积薄发打卡Day80 :【MSUP】必会技术框架Spring(上)<从Spring组件到Spring机制实现>

前言在看狂神频道的时候偶然发现下图,感触颇深。特别在当今【程序 = 业务 + 框架】思想盛行的开发者中,夯实基础基础显得格外重要,因此开此专栏总结记录。对于Spring框架的知识,已经在学习设计模式的时候练习过一轮,接下来不断温故而知新哈哈,学习记录回顾:厚积薄发打卡Day47: [itcast] GoF23设计模式之<自定义SpringIOC>(上)厚积薄发打卡Day48: [itcast] GoF23设计模式之<自定义SpringIOC>(下)必会框架Spring知识点汇总:另外

2021-07-29 20:44:21 260

原创 厚积薄发打卡Day79 :【MSUP】并发与多线程(下)<从线程池到JUC>

前言在看狂神频道的时候偶然发现下图,感触颇深。特别在当今【程序 = 业务 + 框架】思想盛行的开发者中,夯实基础基础显得格外重要,因此开此专栏总结记录。对于多线程与并发的知识已经学习过一轮,接下来不断温故而知新哈哈,学习记录回顾:厚积薄发打卡Day25 :狂神说Java之多线程详解<全网最全(代码+笔记)>厚积薄发打卡Day26:狂神说Java之JUC并发编程<代码+笔记>(上)厚积薄发打卡Day27:狂神说Java之JUC并发编程<从JMM到volatile>(中)厚积薄发打卡Day4

2021-07-28 14:18:03 234

原创 厚积薄发打卡Day78 :【MSUP】并发与多线程(上)<从生产/消费者问题到线程状态的转换>

前言在看狂神频道的时候偶然发现下图,感触颇深。特别在当今【程序 = 业务 + 框架】思想盛行的开发者中,夯实基础基础显得格外重要,因此开此专栏总结记录。对于多线程与并发的知识已经学习过一轮,接下来不断温故而知新哈哈,学习记录回顾:厚积薄发打卡Day25 :狂神说Java之多线程详解<全网最全(代码+笔记)>厚积薄发打卡Day26:狂神说Java之JUC并发编程<代码+笔记>(上)厚积薄发打卡Day27:狂神说Java之JUC并发编程<从JMM到volatile>(中)厚积薄发打卡Day4

2021-07-28 13:25:27 138

原创 厚积薄发打卡Day77 :【MSUP】深入浅出JVM(下)<常用GC算法及考察点>

前言在看狂神频道的时候偶然发现下图,感触颇深。特别在当今【程序 = 业务 + 框架】思想盛行的开发者中,夯实基础基础显得格外重要,因此开此专栏总结记录。对于对于JVM的学习,由于在工作中的业务场景几乎使用不到,所以总是学了忘忘了学,争取早日理解哈哈,学习博客:厚积薄发打卡Day62 :【狂神】狂神JVM快速入门(上)<从JVM体系到native方法>厚积薄发打卡Day63 :【bugstack & 狂神】狂神JVM快速入门(中)<从‘程序计数器’到‘Dump内存快照’>厚积薄发打卡

2021-07-27 19:40:14 119 1

空空如也

空空如也

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

TA关注的人

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