- 博客(152)
- 收藏
- 关注

原创 设计模式系列(一)之建造者模式
文章目录一、如何理解建造者?二、深入分析建造者(一)为什么会有建造者模式(二)优缺点分析1、优点2、缺点(三)建造者模式 VS 工厂模式三、从JDK+MyBatis角度分析建造者模式(一)StringBuilder 建造者模式的运用(二)MyBatis 建造者模式的运用四、建造者模式的不同实现方式(一)通过Client、Director、Builder和TargetObject形成的建造者模式框架结构(二)通过静态内部类的方式(三)以QueueBuilder为例的目标类与Builder分离的原则一、如何理
2020-08-08 10:49:51
1340
1

原创 Spring Boot Java8 LocalDateTime日期序列化与反序列化 解决方案
网上绝大多数都是没有用的!LocalDateTime 反序列化器不需要另外引入什么jsr310依赖,spring-boot-starter-web里面就包含有<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-dat...
2019-12-01 07:45:34
5836
3

翻译 什么是 OAuth 2.0 授权码模式?
原文章 作者:Aaron Parecki译者:MoCha前言授权码模式大概是我们所最常见的OAuth 2.0 授权模式。当用户授权给app时,授权码模式就会在网页应用和原生apps中使用到。本文章是本系列文章中的第一部分,我们将探讨常用的OAuth 2.0 授权模式。如果你想在我们深入之前了解更多有关OAuth 2.0的知识,请查看What the Heck is OAuth?,这篇文章同...
2019-05-30 21:32:32
1982
1

原创 一名非典型二流大学生的自述 | 我是如何从菜鸟进化到辣鸡的
人们总是一边不相信鸡汤,一边又奢望鸡汤在关键时刻能够拉自己一把。 事先说明,这是一碗有毒的鸡汤,请谨慎阅读,嘻嘻嘻…… 有很多大佬都在讲述成功的故事,却很少提到在成功之前,他们所经历的苦难和迷茫,他们似乎在营造一种假象——成功是容易的。嗨,我是“积极废人”Hi,我是摩卡先生,现在是一所二流学院的大二学生。 刚进入大学时,我对于未来,自己想要走哪条路,真的没有考...
2018-05-27 23:21:56
2637
原创 oh my zsh 主题篇
安装字体ttf-meslo-nerd-font-powerlevel10k 字体官网将字体应用到iterm2中Preferences -> Profiles -> Text -> Font -> 选择 MesloLGS NF"配置oh my
2021-11-07 21:51:20
670
原创 设计思想 - 第三篇 为什么要用Wrappers来创建QueryWrapper?
设计思想 - 第三篇 为什么要用Wrappers来创建QueryWrapper?文章目录设计思想 - 第三篇 为什么要用Wrappers来创建QueryWrapper?使用案例Wrappers核心原理缺点使用案例LambdaQueryWrapper<Demo> lambdaQueryWrapper = Wrappers.lambdaQuery();lambdaQueryWrapper.eq(Demo::getName, name);Wrapperspublic final clas
2021-10-23 20:40:56
1319
1
原创 设计思想-第二篇
设计思想 - 第二篇文章目录设计思想 - 第二篇1)、设计思想之获取泛型T的真实类型2)、设计思想之通过String,StringBuffer实现字符串反转3)、设计思想之MVC表现层框架的核心思想4)、设计思想之使用fastjson获取用户open_id5)、设计思想之BigDecimal去掉多余的位数6)、forEach新用法1)、设计思想之获取泛型T的真实类型private Class<T> targetClass; // 得到泛型T的真实类型public GenericDAO
2021-10-23 20:35:11
277
原创 设计思想-第一篇-初出茅庐
MoCha 设计思想 - 第一篇文章内容是初学Java时,记录的内容,现在回头看感觉很有意思。文章目录MoCha 设计思想 - 第一篇1)、设计思想之限制接口调用的参数范围2)、设计思想之利用Properties类读取配置文件3)、设计思想之关于多线程中线程安全问题4)、设计思想之生产者与消费者问题5)、设计思想之关于文件复制和删除问题6)、设计思想之在GUI中,如何善用API?(查找我们不了解的方法或类)7)、设计思想之如何将JFrame窗体的坐标位置居中?8)、设计思想之IO版用户登录注册9)、
2021-10-23 20:10:17
1016
原创 解决Maven无法下载依赖问题
背景当尝试下载较新版本的Spring Boot时,会出现以下问题:解决方案-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true// -e表示详细异常,-U表示强制更新mvn clean install -e -U
2021-10-23 20:05:10
224
原创 Mac 安装 MySQL 8.0
一、从官网上下载MySQL安装包选择“MySQL Community Server”MySQL macOS安装包下载地址下载完毕后,一路安装即可!二、如何在Mac中查看MySQL安装情况我们可以在“系统偏好设置”里面看到MySQL图标这里面,我们可以对MySQL进行启动与停止,以及是否要设置开机启动三、设置终端访问MySQL1、首先创建一个环境变量文件vim ~/.bash_profile2、暴露MySQL的可执行路径export PATH="$PATH":/usr/loc
2021-04-17 12:15:29
386
原创 解决IDEA中MyBatis xml映射文件的黄色背景色
解决IDEA中MyBatis xml映射文件的黄色背景色去除 No data sources configure 警告File ⇒ Settings ⇒ Editor ⇒ Inspections ⇒ SQL ⇒ No data sources configured取消勾选,屏蔽该检查去除 SQL dialect is not configured 警告File ⇒ Settings ⇒ Editor ⇒ Inspections ⇒ SQL ⇒ SQL dialect detect
2021-01-26 14:38:36
615
原创 Java基础进阶系列-08之结合JLS深度解读三目运算符
文章目录一、三目运算符的类型务必一致案例分析二、代码案例分析三、解读JLS规范规范说明操作数表达式分类布尔条件表达式数字型表达式引用条件表达式二元数字提升拓宽简单类型转换四、解读阿里巴巴Java规范三目运算符,从代码逻辑上看,其实就是if-else条件判断语句的简化版。一、三目运算符的类型务必一致观察以下代码案例,看看两者是否相等答案是:falsepublic static void main(String[] args) { int i = 100; String s
2020-11-07 23:02:44
851
2
原创 Java基础进阶系列-07之数组基础进阶开发小指南
文章目录一、深入思考(一)避开基本类型数组转换集合陷阱(二)不可忽略的默认初始化(三)数组转换为List集合com.google.common.primitives.Intsjava.util.Arrays#asList(T... a)Apache org.apache.commons.lang3.ArrayUtils.toObjectArrays.stream().boxed().collect()(四)数组转换为Set集合将基本数据类型数组转换为Set集合将引用类型数组转换为Set集合(五)List集合
2020-11-07 22:58:45
450
原创 Java基础进阶系列-06之数组基础语法
Java基础进阶-数组基础语法文章目录Java基础进阶-数组基础语法一、数组基础语法(一)数组声明(二)数组初始化(三)数组默认元素的初始值二、注意事项输出数组内容一、数组基础语法(一)数组声明type代表数组的数据类型,arrayName代表数组名称。想要声明几维数组就在type或arrayName后面加几个[]。type[]...[] arrayName;或type arrayName[][];(二)数组初始化int[] intArray = new int[4];intAr
2020-11-07 22:53:23
375
原创 Java基础进阶系列-05之从for-each循环深入解读ArrayList与LinkedList不同遍历方式带来的影响,深度好文!
文章目录关于for-each循环一、深入思考(一)将局部变量的作用域最小化(二)for-each循环Collection对象的陷阱场景引入遍历Collection对象时尝试删除元素,出现ConcurrentModificationException异常解决方案一:遍历时将待删除元素存放到临时集合,再调用removeAll来实现解决方案二:通过迭代器遍历时,进行删除操作解决方案三:Java8 Collection提供的removeIf(三)嵌套循环中使用迭代器的陷阱(四)Collection对象为何能与for
2020-10-24 20:42:19
653
原创 Java基础进阶系列-04之循环结构基础讲解
文章目录一、循环结构基础语法for循环for-each循环while循环do-while循环二、深入思考for循环与while循环之间的转换do-while循环为什么在开发中不常见do-while使用场景联想抢票场景进制转换CAS自旋操作while(true)与for(;;)的区别三、最佳实践与注意事项一、循环结构基础语法for循环// JLS(Java Language Specification)for ([FotInit]; [Expression]; [ForUpdate]) Stateme
2020-10-24 20:34:51
835
原创 Java基础进阶系列-03之JMH分析if条件判断语句与switch性能差异
文章目录背景说明JMH 微基准测试 验证性能效率引入依赖场景代入测试代码重构一,try{}catch()重构二,使用guava重构三,静态Map索引解决问题的本质就是回归源码和阅读说明文档背景说明我们知道switch-case结构,当case值是“密集”时,底层指令会优化为tableswitch结构,执行效率上要比“稀疏”时的lookupswitch好。Java 虚拟机规范 基于JDK8->3.10 编译switch章节编译器会使用tableswitch和lookupswitch指令来生成
2020-10-11 10:17:19
999
1
原创 JMH报错:ERROR: Unable to find the resource: /META-INF/BenchmarkList
文章目录问题原因背景说明:最近在尝试用JMH做性能测试时,出现Exception in thread “main” java.lang.RuntimeException: ERROR: Unable to find the resource: /META-INF/BenchmarkList问题<!-- JMH基准测试框架依赖 --><!-- The jmh is a Java harness for building, running,and analysing nano/m
2020-10-10 08:54:37
1976
3
原创 IDEA系列 主题配置篇
文章目录主题对应字体设置项目栏背景设置最终效果主题插件:roboticket-light-theme主题对应字体设置项目栏背景设置界面左侧的项目栏区域与代码界面区域的颜色保持一致,这样会更美观最终效果...
2020-09-27 14:24:15
398
原创 Java基础进阶系列-02之if与switch的斗法
文章目录一、if条件语句基础语法二、switch-case语句基础语法三、深入思考四、最佳实践与注意事项关于if条件语句关于Switch结构归纳总结扩展内容lookupswitch 和 tableswitch指令一、if条件语句基础语法if (布尔表达式1) { // 如果布尔表达式1的值为true时执行代码} else if (布尔表达式2) { // 如果布尔表达式2的值为true时执行代码} else if (布尔表达式3) { // 如果布尔表达式3的值为true时执
2020-09-26 09:40:47
700
原创 Java基础进阶系列-01之常量
Java基础之常量一、怎样才算是常量二、定义常量的几种方式三、关于常量的几个深度思考四、定义常量的最佳实践一、怎样才算是常量即需要具备怎样的特点,就可以称之为常量由final关键字修饰常量的特性只能被赋值一次,赋值后值不再改变对基本类型使用final关键字不能改变的是其数值对于对象引用,不能改变的是其引用,而对象本身是可以修改的关于静态常量通过final关键字来声明常量,配合static关键字进行修饰,该常量则为静态常量,语法格式如下:权限修饰符 static
2020-09-26 09:34:46
1100
8
原创 编写bat脚本跳转到特定目录执行指定命令
cmd /k "cd /d F:\Java 技术分享\Java-Thinking-GitBook && gitbook serve如果我们想进去特定目录,并执行命令的话,通过&&进行连接bat脚本文件的编码为ANSI编码格式
2020-09-26 09:27:04
6645
原创 GitBook 实用插件
以下插件配置均在book.json中进行配置GitBook推荐插件的命名方式为:我们可以通过命名规则来从GitHub中获取gitbook-plugin-X: 插件gitbook-plugin-theme-X: 主题flexible-alerts 警告引用块flexible-alerts GitHub地址在book.json中添加以下配置即可"plugins": [ "flexible-alerts"]// 可选配置,具体配置参考GitHub文档说明"pluginsConfi.
2020-09-26 09:23:27
973
原创 安装GitBook
安装GitBook通过NPM进行安装npm install gitbook-cli -g创建一本书GitBook通过以下命令在当前目录创建一本书:gitbook init预览图书gitbook serve目录结构.├── book.json├── README.md├── SUMMARY.md├── chapter-1/| ├── README.md| └── something.md└── chapter-2/ ├── README.md └
2020-09-26 09:19:57
240
原创 Spring Boot集成Redis Caused by: java.lang.ClassNotFoundException: redis.clients.jedis.util.SafeEncoder
Caused by: java.lang.ClassNotFoundException: redis.clients.jedis.util.SafeEncoder背景:尝试将Spring Boot由2.1.x版本升级到2.2.x时,集成redis.clients时,出现以下问题:Caused by: java.lang.ClassNotFoundException: redis.clients.jedis.util.SafeEncoder解决方案在升级Spring Boot版本的同时,将re
2020-09-05 13:44:05
1523
原创 IDEA CamelCase 驼峰格式切换插件
在项目开发过程中,我们经常需要进行下划线与大小驼峰格式的切换,IDEA就提供了这样的插件可以帮我们实现这个需求。首先在IDEA插件市场中找到CamelCase插件以下是CamelCase插件个性化设置,可根据自己实际需求进行勾选...
2020-08-30 14:17:52
993
原创 如何在IDEA单元测试中使用Scanner获取输入内容
实际案例@Testpublic void contextLoads() { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("测试1"); System.out.println("测试2"); System.out.println("测试3"); System.out.println("测试4"); in
2020-07-22 17:28:33
5220
5
原创 带你认识 Maven dependencies与dependencyManagement之间的区别
面向对象的思想同样适用于Maven使用dependencyManagement优势统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,才能保证测试的和发布的是相同的成果,因此,在顶层pom中定义共同的依赖关系。同时可以避免在每个使用的子项目中都声明一个版本号,这样想升级或者切换到另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个版本号时,只需要在dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承父类版本号。两者
2020-07-20 21:47:54
277
原创 Maven 构建Spring Boot 多模块项目 心得
参考文章Spring-Cloud笔记02:IDEA中构建多模块的Maven项目心得总结1、更多是将common模块作为依赖引入,不是直接继承(而是通过继承父pom)2、对于spring-boot-dependencies里面存在的依赖,父pom不需要处理。当子项目继承父项目后,直接使用<groupId>,<artifactId>即可从spring-boot-dependencies引入。因为spring-boot-dependencies里面就是使用<depe
2020-07-20 21:44:37
469
2
原创 关于包装类的误区
包装类才有缓存池技术,而且不是所有包装类才有。Byte,Short,Integer,Long。范围为[128, 127)Character的范围为[0, 127)Boolean的范围为true,falseDouble和Float没有。
2020-07-07 16:26:18
230
原创 Spring 源码分析之@ComponentScan 深入解读
文章目录解读@ComponentScan解读FilterType/* * @since 3.1 */@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Repeatable(ComponentScans.class)public @interface ComponentScan { /** * Alias for {@link #basePackages}. * <p>Allow
2020-06-27 10:16:23
385
原创 Spring 源码分析之@Bean 深入解读
文章目录@Bean带参方法/** * Indicates that a method produces a bean to be managed by the Spring container. * <p> * 说明: * 1. 被@Bean注解标识的方法能够生成一个Bean,并且该Bean由Spring容器进行管理 * 2. 返回类型即为Bean类型 * 3. 方法名即为Bean的Id * 4. 我们可以通过@Bean(name = "")的方式来指定Bean的Id,name的
2020-06-27 10:13:48
454
原创 Spring 源码分析之@Autowired 深入解读
文章目录@Autowired 源码分析多个同类型的Bean,直接使用@Autowired时@Primary与@Bean,@Autowired搭配使用总结@Autowired 源码分析/* * @since 2.5 * @see AutowiredAnnotationBeanPostProcessor * @see Qualifier * @see Value */@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType
2020-06-27 10:09:26
505
原创 Spring Boot Loader源码分析
分析Spring Boot Loader源码其实就是在搞懂为何Spring Boot打成jar包可以直接运行起来。一)、探索从解压jar包开始解压项目打包成的jar包,我们可以得到三个文件夹BOOT-INF,内部还有两个文件夹classes(存放项目相关字节码文件)和lib(存放项目所依赖第三方jar包)META-INF,关于项目的一些元数据Manifest-Version: 1.0Implementation-Title: spring_boot_dissectImplement
2020-06-13 13:10:49
868
原创 IDEA 远程调试 Spring Boot 源码
一)、查看关于-agentlib命令在终端命令行中输入"java"就能看到"-agentlib"命令二)、关于-agentlib的详细使用说明根据上边提示的文字,我们可以输入以下命令来查看关于-agentlib的详细使用java -agentlib:jdwp=help我们一般会使用到前面列举的四个选项,transport的值为dt_socket。如果是本地环境,address可以不用加ip地址运行以下命令,就可以让jar以远程调试的形式启动,会监听调试器的连接java -agent
2020-06-13 10:38:46
844
原创 Spring Boot 2.1.9 整合 RabbitMQ 实现延时队列处理超时未支付订单
前置条件RabbitMQ服务端需要安装rabbitmq_delayed_message_exchange插件CentOS7 为RabbitMQ安装延时队列插件一)、引入依赖<!-- 引入RabbitMQ 消息中间件依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</ar
2020-06-06 20:09:56
777
原创 Spring Boot 2.2.6 整合 Redisson分布式锁
官方参考文档redisson-spring-boot-starter 官方文档通过YAML文件配置单节点模式一)、引入Redisson整合Spring Boot依赖<!-- Spring Boot 相关依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactI
2020-06-06 20:05:25
1377
3
原创 IDEA 搭建JDK源码阅读环境
一)、找到JDK源码包,并解压src.zipJDK1.8版本,直接在安装目录下可找到src.zip压缩包JDK11版本,则是在安装目录的lib文件夹下找到src.zip压缩包二)、删除不需要的文件夹三)、设置IDEA的Debugger找到IDEA的Settings->Build, Execution, Deployment->Debugger->Stepping...
2020-06-06 20:02:12
409
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人