- 博客(366)
- 资源 (1)
- 收藏
- 关注

原创 【基础组件设计实践】项目中实现延时任务的不同姿势
延时任务,一个非常常用和常见的技术组件:如订单下单后五分钟发邮件提醒用户过来查看,又或者定时任务失败后3分钟延时任务自动重试。延时任务的概念很简单,但是实现起来方法很多,下面来介绍一下项目常用的两种。一、 通过Redis的方式实现延时任务实现二、使用云调度平台方式实现延时任务
2021-11-26 10:39:45
955

原创 计算机网络基础(TCP如何 可靠传输 | 流量控制 | 避免网络拥塞)(传输层【下】)
目录前言TCP如何实现可靠传输停止等待协议1. 出现差错或丢失情况2. 确认丢失和确认迟到情况优缺点流水线传输实现可靠传输(连续ARQ协议)以字节为单位的滑动窗口技术正常不丢包的情况包丢失的情况选择确认情况TCP协议如何实现流量控制TCP协议如何避免网络拥塞慢开始算法快重传和快恢复机制发送窗口的实际上限值前言本文是接着上一篇:...
2019-08-11 19:22:44
915
3

原创 计算机网络基础(HTTP和HTTPS的那点事)
目录HTTP简介HTTP特点HTTP请求结构HTTP响应结构请求响应的步骤状态码普及GET和POST的区别Cookie和SessionHTTPS(超文本传输安全协议)SSL(Security Socket Layer)安全套接层HTTPS数据传输过程在数据交换前会进行一次握手确定信息HTTP与HTTPS的区别HTTPS基础上的更安全方案H...
2019-08-02 02:04:36
2716
9

原创 图文理解 JVM GC(Garbage Collection) 垃圾回收
目录前言JVM如何判断一个对象是不是垃圾?引用计数算法可达性分析法(主流判断方法)哪些元素可以为根节点?JVM堆的几种垃圾回收算法:标记清除复制标记整理JVM如何进行垃圾回收?分带垃圾回收算法Young(新生代)采用复制算法Old(老年代)采用标记清除或标记整理的方法JVM堆如何分配对象?垃圾收集器(GC)串行垃圾收集器(...
2019-05-28 19:26:28
3000
4

原创 JVM(Java虚拟机)内存结构
目录JVMJVM内部结构图运行时数据区结构(java内存模型)程序计数器 (PC Register)虚拟机栈 (JVM Stacks)本地方法栈 (Native Method Stacks)堆 (Heap)方法区 (Method Area)线程共享的堆与非堆JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种...
2019-05-23 01:10:31
474
1
原创 一个封装的BeanCopier工具类
工具类BeanCopierUtils1. 支持source对象到target对象的拷贝2. 支持List<S> source到 List<T> target的拷贝
2021-11-08 21:26:11
751
原创 【代码优化】状态机的定义 & 设计与实践
状态机是有限状态自动机的简称,表示有限个状态以及在这些状态之间的转移等行为抽象的数学模型。什么是“状态”( State )。现实事物是有不同状态的,我们拿一个很常见的审批流来举例,一个审批流里,“已通过” 和 “已拒绝” 就是两个不同的状态。状态机的要求需要比较轻量的内存级状态配置,主要负责状态流转计算,如:基本操作,设置初始状态,输入事件,获取目标状态。状态间转换,除了事件触发,需要能够通过配置匹配表达式和传入参数进行扩展,如同一个初始状态和事件,目标状态可能因为传入参数的不同而不同,便于不同业务
2021-11-08 10:40:45
683
原创 IDEA通过正则跨行搜索
idea快捷键:ctrl+F(?is)key1.*?key2 如果想搜索同时包含key1和key2的关键词,同时,允许跨行,则可以这样搜索如果没有加(?is)则是单行搜索
2021-03-25 11:44:32
2061
1
原创 Easyexcel 实现导出Excel到流中并支持excel抬头国际化基础工具类实现
前言talk is cheap, show youthe code.第一步:定义Easyexcel导出的接口类 以及 参数类接口类定义/** * 导出数据源 * * @author https://blog.youkuaiyun.com/qq_36652619/category_9289993.html * @date 12/09/2020 7:13 下午 */@Api("导出参数")@Data@Builderpublic class ExportParam { /** .
2021-01-24 14:18:35
3461
1
原创 java开发笔记:SpringBoot拦截器Interceptor (实现简单的登陆拦截器[白名单,重定向,模拟登陆])
定义拦截器顾名思义是拦截打到控制器的请求然后做一些个性化的定制功能比如说302重定向等等,(Interceptor)拦截器相对于(Filter)过滤器可以拦截细一些的东西比如控制请求的方法和控制器,但是控制不了请求方法中的参数。使用场景最常用的几个场景1. 登陆拦截器:白名单 测试环境表单模拟登陆 登陆状态拦截并302重定向login页面2. 国际化3. 鉴权拦截顺序方法执行顺序preHandle -> Controll...
2020-10-17 17:59:05
1842
原创 MyBatis能查到数据但是返回domain是null
问题背景:mapper查出来的数据是空定位问题:如果select mem_idfrom table就可以查到数据,说明是驼峰命名的问题解决:
2020-09-26 01:03:05
332
原创 springboot配置文件中的属性读出来需要用静态变量接住
迁移一个老项目(SpringMVC)代码到SpringBoot的过程中遇到一个问题:需要将配置文件(application)中的属性读出来赋到一个静态变量上,故使用上图方式
2020-09-24 10:58:14
232
原创 开发笔记:哦豁,BOSS说单元测试覆盖率不达标?(Java)
Mock单元测试什么是单元测试单元测试是指对软件中最小的可测试单元进行检查和验证。通常单元测试只测试一个方法或者一个方法调用。一个单元测试的好处:快速定位bug,提高代码质量,通过单测理解代码放心重构。单元测试代码对于代码的重构非常重要,因为一不小心犯了错,这些小范围的测试能很快作出提醒,这样就可以放心的随时调整代码。单元测试的三部曲given-when-then三部曲Give...
2020-05-06 11:56:00
1720
1
原创 开发笔记:Nginx的故事
什么是Nginx? Nginx是一个高性能的HTTP服务器,它是一个高性能的Web和反向代理服务器由俄罗斯的程序设计师Igor Sysoev开发。Nginx在反向代理、Rewrite规则、稳定性、内存消耗等方面表现出很强的优势,选用Nginx代替传统的Apache服务器会获得很多方面的性能提升。(参考网上资料加以整理)。简而言之,Nginx是一款轻量级高性能且好用的HTTP服...
2020-04-25 17:35:21
1749
原创 程序员慵懒的周末:不想出门还想吃肯德基香辣鸡翅?
1. 食材准备鸡中翼一斤吧,本狗子买的一斤,看家里人战斗力如何 炸粉:这个随便买哪个牌子的都ok,超市里就有,本狗子附近没有很全的超市,就随便买了个杂牌炸粉2. 食材预处理鸡翅洗干净用刀划几刀3. 腌制找一个大碗把鸡翅都放进去,倒入一包炸粉,香油少许,花椒油少许,辣椒粉看个人口味,一个或两个鸡蛋打成蛋液倒入大碗中。(若是咸口的小伙伴可以加少许酱油) 一只手去抓匀食...
2020-03-28 13:49:22
750
转载 log4j:WARN No appenders could be found for logger 解决办法
使用log4j时不起作用,每次执行完出现以下提示:log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).log4j:WARN Please initialize the log4j system properly.log4j:WARN See http://logg...
2020-01-31 21:00:56
2345
原创 idea找不到确实存在的类问题解决
问题背景:本狗子没有改过任何东西,但今天项目里面的实体类在业务层忽然报找不到了,然后去看了一下项目间依赖和包名都没问题,甚至run起springboot可以正常调用接口,那么说明问题在idea身上。解决方法:...
2020-01-19 21:20:29
4798
原创 SpringMVC在本地使用idea跑tomcat报OutOfMemoryError: Java heap space
问题背景:在本地配好Tomcat后启动SpringMVC,idea报错:OutOfMemoryError: Java heap space,很明显是堆内存不足的错误。尝试:看到推内存不足的时候,很习惯性的去修改Tomcat bin下面的catalina调整堆大小,但调整完之后重新在idea点run,还是报错。解决方案:因为run是在IDE编译的,所以我们应当修改id...
2020-01-09 23:15:50
701
原创 程序员慵懒的周末:想吃番茄、豆腐和肉末
周末,本狗子特别想吃番茄和豆腐,于是推出一道番茄肉末炖豆腐步骤1. 番茄切丁,鸡蛋搅匀,本狗子买的是油豆腐里面包着肉末,省了很多事儿,当然大家也可以用豆腐加肉末,如果是普通豆腐的话建议下锅煎一下,肉末用少许酱油腌制一下2. 热锅下少许油,鸡蛋下锅,用锅铲像炒鸡蛋那样将弄散,六分熟盛出3. 热锅下适量油,蒜末爆香,蒜末焦黄下肉末,肉末炒干,下豆腐和番茄,翻炒一阵下鸡蛋...
2020-01-06 00:48:54
592
2
原创 maven 调用私有库
当业务中有需求使用公司的私有库或者哪里的私有库的时候:现在pom.xml中配置:<repositories> <repository> <id>for-test</id> <url>https://test</url> </repository></...
2019-12-29 22:56:32
488
原创 程序员的慵懒周末:想吃钵钵鸡
前言终于到周末了,本狗子总想在周末做些平时没时间做的,比如,想吃钵钵鸡步骤1. 一只鸡、葱段、姜片、香料包下到锅中煮钵钵鸡底料的高汤(小火炖3小时以上):(下图我是直接用昨晚煲好的鸡汤下香料包入味)完了捞出所有的汤渣留下高汤备用。2. 在高汤中放入适量的盐,然后把自己想吃的食材放进去煮,难煮的先放,好煮的后放(拿不拿竹签串起来看各位讲不讲究了),然后把食材捞出沥干...
2019-12-28 11:33:11
338
原创 MacBook 修改环境变量 System.getenv("xxx") 不生效(Java)
问题:修改了环境变量,调用System.getenv("xxx")还是返回null解决:重启idea解决
2019-12-27 10:25:52
3816
2
原创 vue安装vue-devtools插件
google应用商店添加插件:添加完看到浏览器扩展栏有了之后取到项目中:然后直接run起dev server就OK了:
2019-12-20 10:43:34
275
转载 webpack vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin
vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin in your webpack config.
2019-12-12 16:44:26
319
原创 Import declarations are not supported by current JavaScript version
js版本不支持,改一下版本
2019-12-12 16:16:12
296
原创 Spring 之 @EnableAutoConfiguration 注解
目录注解内部代码关于@AutoConfigurationPackage关于@Import(AutoConfigurationImportSelector.class)关于@EnableAutoConfiguration注解内部代码该注解中包含比较重要的两块:@AutoConfigurationPackage和@Import(AutoConfigurationImport...
2019-11-26 11:56:27
297
原创 Spring 之 @Configuration 和 @Bean 注解
目录关于Configuration@Configuration+@Bean注册Bean@Configuration+@Component注册Bean@configuration中引入其它注解配置@configuration嵌套静态Configuration类(须是静态类)关于@Bean@Bean定义生命周期的回调@Bean的自定义命名@Bean多个名字@Be...
2019-11-23 18:50:38
1061
原创 Spring 之 @Scope 注解
@Scope是什么?@Scope定义我们采用什么模式去创建Bean,比如说默认是单例模式,也会有多实例的方式。它定义了我们采用什么样的方式去创建和调用bean。@Scope的五种取值1.singleton单例模式,也就是容器中只存在一个实例,不管怎么获取Bean都是只存在一个实例,singleton类型的bean定义从容器启动到第一次被请求而实例化开始,只要容器不销...
2019-11-23 15:33:19
1711
原创 报错 No active profile set, falling back to default profiles: default 解决
在pom.xml中添加依赖可解决:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>...
2019-11-22 11:17:14
3500
2
转载 IntelliJ IDEA教程之如何clean或者install Maven项目
♦这里我们介绍两种方式,如何调试出窗口 点击菜单栏View->ToolWindows->Maven projects 点击菜单栏Help->Find Action(Ctrl+Shift+A),输入Maven projects♦然后会出现以下界面♦如下图,选中之后。点击绿色三角形就可以clean了至此,我们关于...
2019-11-18 18:19:01
2078
1
原创 进程与线程的区别
目录进程为什么会有进程?进程和程序之间的关系什么是进程?进程包含什么?进程的特点线程为什么会有线程?什么是线程?线程的优缺点线程包含什么?进程和线程的区别进程为什么会有进程?早期操作系统只支持跑一个程序,但随着计算机发展,操作系统中CPU越来越强,内存越来越大,可以在内存里放入更多的可运行程序,但是如果直接用 “程序” 来表示操作系...
2019-11-16 16:55:26
739
原创 研究一下Socket和IO模型
目录SocketSocket通信流程Socket IO模型IOIO交互过程IO模型一、阻塞IO模型二、非阻塞IO模型三、IO复用模型四、信号驱动式IO模型五、异步IO模型五大IO模型的比较关于Socket和WebSocket的区别Socket和IP可以标识一台计算机一样,进程在网络里面通信也是需要被唯一标识,那么如果是在一台计算机里,PI...
2019-11-10 13:32:09
1122
原创 LeetCode 406. Queue Reconstruction by Height (贪心)
题目意思:有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。贪心思路:1、首先确定第一个,首先第一个的 k 必定等于0,可以举反例,k = 1的不可能在第一个(这个很好理解因为k等于1说明前面有一个),所以在 k 等于0找 h 最小的为第一个。2、设立一个标记数组...
2019-11-10 00:47:04
259
原创 LeetCode 402. Remove K Digits (贪心)
题目意思:给定一个以字符串表示的非负整数num,移除这个数中的k位数字,使得剩下的数字最小。贪心思路:对于数字的从高到低位每一位都遍历一次,使得最高位在满足条件的情况下尽可能的取到最小,越高位小则整体小。如 "10200"这个字符串,对于第一位想要取最小,"10200"中第二位0满足条件,如果最高位取这个0,只需删掉一个数1,而删除一个数刚好满足我们的条件,所以,第一位可以取...
2019-11-09 19:36:36
230
原创 LeetCode 392. Is Subsequence (贪心)
题目意思:有两个字符串 s 和 t,t 比较长,要求从 t 删掉点字符能和 s 对等,如果ok的话返回true,不OK返回fasle贪心思路:因为是简单的级别,所以按照简单的思路去想,两个数组同时遍历,如果两个字符都相等,两个下标都后移,如果不等,t 的下标后移,s 的下标不动。最后根据能否遍历完 s 字符串作为判断条件class Solution {public: ...
2019-11-09 18:25:02
196
原创 LeetCode 376. Wiggle Subsequence (贪心)
题目意思:例如,[1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3)是正负交替出现的。相反, [1,4,7,2,5]和[1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最长子序列的长度。 通过从原始序列中删除一些(也可以不删除)元素来获得子序列,返回子序...
2019-11-09 18:08:31
182
原创 LeetCode 321. Create Maximum Number (分治+贪心)
题目意思:给出两个数组,要求在这两个数组中挑出k个数,拼接起来后的数是最大的,并且同个数组的顺序需要维持。解题思路:首先先对其进行分治,我们需要取k个数,那么可以从第一个数组取 i 个贪心思路上拼起来最优的数,再到第二个数组中取 k - i 个拼起来最优的数,然后两个数组在通过贪心策略拼接到一起视为一种情况,遍历所有的 i 的情况,然后最后取最优。贪心的策略在于分别到每个...
2019-11-08 19:58:14
247
原创 LeetCode 7. Reverse Integer (翻转整数)
题目意思就是将整数翻转过来很简单就直接上代码:class Solution {public: long long int reverse(int x) { long long xCopy = x; int a[50]; long long result = 0; int flag; if(x &...
2019-10-30 20:38:51
198
原创 LeetCode 9. Palindrome Number (判断回文)
题目:判断一个数回不回文,看例子负数不算回文思路:把数翻转过来看看是否对等class Solution {public: bool isPalindrome(int x) { if(x == 0) return true; //小于零肯定不是回文 if(x < 0) return false; //装...
2019-10-30 20:32:50
174
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人