自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ThreadLoacl

ThreadLoacl的理解:官方的讲:ThreadLocal是一个本地线程副本变量工具类,主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰通俗的讲:ThreadLocal也叫做线程本地变量,ThreadLoacl为变量在每个线程中的都创建了副本,每个线程可以访问自己内部的副本变量,线程之间互不影响threadlocal使用方法很简单static final ThreadLocal<T> sThreadLocal = new ThreadLocal&lt

2021-02-20 11:21:57 100

原创

ReentrantLock是独占锁,同一时刻只有一个线程能获取到锁,所以在lock.lock()和lock.unlock()之间可能有一次释放锁的操作(同样也必然还有一次获取锁的操作)。ReentrantLock和synchronized相同点ReentrantLock和synchronized都是独占锁,只允许线程互斥的访问临界区。但是实现上两者不同:synchronized加锁解锁的过程是隐式的,用户不用手动操作,优点是操作简单,但显得不够灵活。一般并发场景使用synchronized的就够了;

2021-02-20 11:04:07 90

原创 mybatis-plus中like的使用说明

like的四种用法:like(boolean condition, String column, String value)like(String column, String value)like(boolean condition, String column, String value, SqlLike type)like(String column, String value, SqlLike type) condition 是一些条件,符合才可加上你的sqlcolumn 为 数据库属

2021-02-19 09:05:51 2946

原创 lombok

@Accessors用法Accessor的中文含义是存取器,@Accessors用于配置getter和setter方法的生成结果,下面介绍三个属性1、fluentfluent的中文含义是流畅的,设置为true,则getter和setter方法的方法名都是基础属性名,且setter方法返回当前对象。如下@Data@Accessors(fluent = true)public class User { private Long id; private String name;

2021-02-18 16:11:45 78

原创 @Component 和 @Bean 的区别

Spring帮助我们管理Bean分为两个部分,一个是注册Bean,一个装配Bean。完成这两个动作有三种方式,一种是使用自动配置的方式、一种是使用JavaConfig的方式,一种就是使用XML配置的方式。@Compent 作用就相当于 XML配置@Componentpublic class Student { private String name = "lkm"; public String getName() { return name; }

2021-02-18 15:55:47 56

原创 SpringBoot过滤器的使用

只需要建立一个过滤器就搞定了。@WebFilter(urlPatterns = "/*")public class CustomFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequ

2021-01-26 17:14:58 46

原创 SpringBoot拦截器的使用

一、首先建立拦截器,继承HandlerInterceptorpublic class CustomInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { Ms

2021-01-26 16:35:12 57

原创 简单的代码生成器

简单的代码生成器public class Generator { public void generator() throws Exception { List<String> warnings = new ArrayList<String>(); boolean overwrite = true; /** 指向逆向工程配置文件 */ File configFile = new File("meng-admin

2021-01-22 16:31:00 52

原创 QueryHelp

QueryHelppackage me.yexinkai.utils;import cn.hutool.core.bean.BeanUtil;import cn.hutool.core.collection.CollUtil;import cn.hutool.core.util.ObjectUtil;import cn.hutool.core.util.StrUtil;import me.yexinkai.annotation.Condition;import java.lang.refl

2021-01-22 16:10:40 334

原创 自定义Query类

Query类详解Query类,Query是一个查询参数类,封装了查询条件,分页,排序等功能。参数介绍Query里面封装了一系列查询参数,主要分为以下几类:分页参数:设置分页排序参数:设置排序字段条件参数:设置查询条件Query类/** * @auther twh * @description 查询条件封装类 * @date 2019/11/19 */@SuppressWarnings("serial")public class Query implements Serializa

2021-01-22 15:57:19 375 1

原创 Base基类抽取

文章目录1、对dao层进行基类抽取2、对model层进行基类抽取3、对service层进行基类抽取总结1、对dao层进行基类抽取/** * @param <T> * @description Dao层基类 */public interface BaseDao<T> extends BaseMapper<T>, ExampleMapper<T>, ConditionMapper<T>, IdsMapper<

2021-01-22 14:53:50 287

原创 通用mapper的学习与使用

一、通用mapper的注解使用(1)@Table建立实体类与数据库表之间的映射关系@Data@NoArgsConstructor@AllArgsConstructor@Table(name = "table_emp")public class Employee { private Integer empId; private String empName; private Double empSalary; private Integer empAge;}

2021-01-22 13:52:26 745

原创 Spring 捕捉校验参数异常并统一处理

使用 @Validated ,@Valid ,@NotBlank 之类的,请自行百度,本文着重与捕捉校验失败信息并封装返回出去参考:https://mp.weixin.qq.com/s/EaZxYKyC4L_EofWdtyBCpwhttps://www.jianshu.com/p/bcc5a3c86480捕捉校验失败异常信息@ControllerAdvicepublic class WebExceptionHandler {//处理Get请求中 使用@Valid 验证路径中请求实体校验失败后抛

2021-01-22 11:44:24 360

原创 SpringBoot整合tkMybatis

添加项目依赖在pom.xml中添加相关依赖。 <!-- Spring-Mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.

2021-01-22 11:41:51 91

原创 @Validated和@Valid的区别 及使用

概述:@Valid是使用Hibernate validation的时候使用@Validated是只用Spring Validator校验机制使用说明:java的JSR303声明了@Valid这类接口,而Hibernate-validator对其进行了实现@Validation对@Valid进行了二次封装,在使用上并没有区别,但在分组、注解位置、嵌套验证等功能上有所不同,这里主要就这几种情况进行说明。注解位置:@Validated:用在类型、方法和方法参数上。但不能用于成员属性(field)@V

2020-12-16 11:15:24 332 1

原创 2020-08-07

2020-08-05如果没有必要不会往这个类的属性添加东西,添加得越多,你这个类的结构越复杂,一个属性的作用域是整个类,如果你不用这个属性只是给一个方法传一个参数,那它的作用域也只是方法体里,一般来讲你能用传参数就用传参数,缺点是每次传参数都需要new对象,如果你用传参数的方式,请把参数做成单例fire(FreStrategy s) ->每次调用,都离要new,因此,应该把DefaultsSrategy - Singleton感员空倒...

2020-08-07 09:36:44 112

原创 1.项目搭建

Eden项目搭建使用IDEA初始化一个SpringBoot项目创建统一的父工程:eden,用来管理依赖及其版本,注意是创建project,而不是moudle填写项目信息:注意:父工程不需要代码,只是管理依赖,因此我们不选择任何SpringCloud的依赖跳过依赖选择。填写保存的位置信息:添加项目依赖在pom.xml中添加相关依赖。<properties> <project.build.sourceEncoding>UTF-8</proje

2020-07-31 17:43:08 83

原创 递归-八皇后问题

public class Main3 { public static void main(String[] args) { Queen queen = new Queen(); queen.putQueen(0); System.out.println(queen.getCount()); }}class Queen { private int max = 8; // 生命a数组,数组里记录每一行皇后的位置,范围:.

2020-07-29 11:15:26 102

原创 递归-迷宫回溯

public class Main2 { public static void main(String[] args) { int map[][] = new int[8][8]; // 生成障碍物 for (int i = 0; i < 8; i++) { map[0][i] = 1; map[7][i] = 1; map[i][0] = 1; m.

2020-07-29 10:09:27 84

原创 递归

递归程序调用自身的编程技巧称为递归(recursion)。递归,就是在运行的过程中调用自己。构成递归需具备的条件:1,子问题须与原始问题为同样的事,且更为简单;2,不能无限制地调用本身,须有个出口,化简为非递归状况处理。(递归必须有结束条件)。...

2020-07-28 11:30:19 54

原创 设计模式总结

想起典型的用法能画出类图面向对象六大原则指导思想可维护性Maintainability修改功能,需要改动的地方越少,可维护性就越好可复用性Reusability代码可以被以后重复使用写出自己总结的类库 可扩展性Extensibility/Scalability添加功能无需修改原来代码灵活性fexibility / mobility / adaptability代码接口可以灵活调用单一职责原则Single Responsibility Princip.

2020-07-24 17:47:57 60

原创 State状态模式(根据状态决定行为)-总结

如果一个类有很多个operation(动作)都需要不同的State(状态)去实现的话,这个时候不如把State抽象出来,然后在State里实现这个operationoperation不再进行扩展的时候可以用这种模式线程的状态迁移有限状态机它的状态是有限的,状态和状态之间的迁移和变化是通过不同的动作action来的,状态和状态之间是可以互相move的newReady(就绪)Running(正在运行)Teminated(结束)(阻塞)TimedWaitingWaitingBlocke

2020-07-24 16:50:46 167

原创 TemplateMethod模板方法(钩子函数)

class Main { public static void main(String[] args) { F f = new C1(); f.m(); }}abstract class F { void m() { this.op1(); this.op2(); } abstract void op1(); abstract void op2();}class C1 exten

2020-07-24 15:19:20 99

原创 Memento备忘录(记录状态 便于回滚)

解析记录快照 (瞬时状态)存盘例:画图撤销记录对象的某个瞬间类似照片对象的序列化对象的持久化序列化需要实现Serializable标记型接口transient 序列化的时候不要管这个属性(透明了)

2020-07-24 15:04:23 41

原创 Prototype原型模式

java中的原型模式自带实现原型模式需要实现标记型接口Cloneable一般会重写clone()方法如果只是重写clone()方法,而没实现接口,调用时会报异常一般用于一个对象的属性已经确定,需要产生很多相同对象的时候需要区分深克隆与浅克隆一个类型支持克隆,需要做到两步实现Cloneable接口(无具体的方法,标记型接口)重写clone方法(Object的clone方法为protected,需要改为public)浅克隆克隆只克隆了基础数据类型,引用数据类型指向的地址不变

2020-07-24 14:49:08 51

原创 Command 封装命令

解析别名: Action /Transaction宏命令command与?模式多次undocommand与?模式trasaction回滚command与?模式将命令的请求者(Controler)和命令的执行者(Device)进行解耦中间的就是命令(Command)public class Main { public static void main(String[] args) { System.out.println("===客户端用【可编程

2020-07-24 13:33:23 125

原创 Bridge 双维度扩展

解析分离抽象与具体用聚合方式(桥)连接抽象与具体如果礼物(Gift)分为温柔的礼物和狂野的礼物WarmGift WildGift此时FLower应该分WaraFlower WildFlowerWarmBook WildBook如果再有别的礼物,比如抽象类型: ToughGift ColdGift或者具体的某种实现: Ring Car就会产生类的爆炸WarmCar ColdRing WildCar WildFlower…用继承的话类成倍的增长使用桥接模式:分离抽象与具体实现,

2020-07-24 10:03:56 83

原创 Adapter(Wrapper)

接口转换器一个类不能访问另一个类,中间加个转换例:电压转换器 中国220V-欧美110Vpublic class Main { public static void main(String[] args) throws Exception { FileInputStream fileInputStream = new FileInputStream("C:\\Users\\Administrator\\Desktop\\README.txt"); Inpu

2020-07-24 09:40:09 125

原创 迭代器模式Interator

逻辑结构物理结构 数组(Array) 链条(LinkList)

2020-07-23 17:28:58 51

原创 代理Proxy

代理Proxy静态代理动态代理Spring AOP问题:我想它录坦克的移动时间最简单的办法:修设代码,它录时间问题2:如果无法改变方法源码呢?用继承?(慎用继承,耦合度太高)用代理(聚合)代理有各种类型问题: 如何实理代理的各种组合?继承?Decorator?在move方法外面包一层记录日志,在日志方法外面包一层记录时间矛盾:日志只能代理Tank,不能代理时间代理的对象改成Movable型越来越像decoratorv08:如果有stop方法需要代理…如果想LogProx

2020-07-23 14:45:59 78

原创 享元Flyweight

一个池子 500个子弹(有状态 活/死) 想要自己拿所有的字符串都放再一个常量池里面,如果没有直接new 一个,有直接指向它package com.yexinkai.whitenight.api.test.flyweight;import java.util.ArrayList;import java.util.List;import java.util.UUID;class Bullet { public UUID id = UUID.randomUUID(); bool.

2020-07-22 18:06:27 89

原创 Composite模式(树状结构)

Node 节点递归函数

2020-07-22 17:05:51 133

原创 Chain Of Responsibility 责任链

问题:在论坛中发表文章后台要经过信息处理才可以发表或者进入数据库(敏感词,黑客代码)消息处理,过滤这个动作还不太确定,将来还有可能加各种各样的过滤动作,特别乱不容易扩展增加新功能的时候对原来的修改得越少,说明扩展得越好过滤器封装变化定义接口Filter方法doFilter将多个Filter串在一起 list添加Filter(还没有成为链条)msg—>f1—>f2—>DB责任链模式FilterChain有add(Filter ) doFilteraddFilter

2020-07-22 14:28:42 92

原创 观察者Observer

Child Cry加入观察者 Dad多个观察者DadMonDog写死的方式,肯定不好,扩展新不好(加入新的观察者费劲),耦合程度高(观察者做出的反应不一定耦合到某一个特定的被观察者身上)观察者 观察某一件事情(小孩哭) 做响应的处理(不确定)Dad 喂Mon 抱Dog 汪观察者列表遍历通知观察者有前后顺序,往后传递责任链是可以关闭的 观察者不行具体情况 具体处理哭的强烈程度哭的时间哭的地点专门抽象出一个类,事件本身被观察者发出一个事件 观察者消费这个事件(生产者 消费

2020-07-22 11:25:15 110

原创 门面与调停者

有一大堆复杂关系内外关系封装一下提供一个统一的接口调停者,专门调节互相关系的人(居委会大妈)消息中间件解耦合碰撞检测(墙和坦克,子弹和坦克,子弹和子弹…)SpringiocFacadea.门面Mediatora.调停者Decoratora.装饰器责任链开头用聚合代替继承...

2020-07-21 16:34:04 122

原创 工厂模式

定义任何可以产生对象的方法或类,都可以称之为工厂单例也是一种工厂 (静态工厂)不可咬文嚼字,死扣概念为什么有了new之后,还要有工厂?灵活控制生产过程权限、修饰、日志…举例任意定制交通工具继承Moveable任意定制生产过程Moveable XXXFactory.create()任意定制产品一族简单工厂可扩展性不好针对每一种产品做一种工厂产品族现代人 车 AK47 面包魔法师 扫帚 魔法棒 魔法药火星人 UFO 激光枪 虫子

2020-07-21 14:20:41 54

原创 策略模式-3

策略模式:做一件事情的时候不同的执行方式怎么用到工程里坦克开火策略1:默认一个子弹策略2:四个方向同时打出子弹策略3:打核弹大部分的设计模式说到底都是多态多态是面向对象的核心,理解多态,才能进一步理解设计模式,才能进一步理解面向对象的优势之所在...

2020-07-21 11:07:13 83

原创 策略模式-2

排序的方法灵活指定开闭原则:对修改关闭(尽量不去修改原来的代码),对扩展开发排序(Sorter)传递数组传递比较器(Comparator)自定义比较器public interface Comparator<T> { int compare(T o1,T o2 );}比较器的自定义实现public class CatComparator implements Comparator<Cat> { @Override public int c

2020-07-21 10:53:08 55

原创 策略模式-1

策略模式对int[]进行排序int[] a= [1,2,3,4,5];Sorter sorter = new Sorter();sorter.sort(a)对猫Cat进行排序排序方式 重量 身高增加Compareto方法进行排序要使用Sorter 对不起,参数麻烦使用实现Comparable接口的数据类型,复写Compareto方法...

2020-07-20 18:05:57 67

原创 Spring Security 认证笔记

Authentication(Spring Security 认证笔记)认证过程:1.用户使用username和password登录2.系统验证这个password对于该username是正确的3.假设第二步验证成功,获取该用户的上下文信息(如他的角色列表)4.围绕该用户建立安全上下文(security context)5.用户可能继续进行的一些操作被一个验证控制机制潜在的管理,这个验证机制会根据当前用户的安全上下文来验证权限。...

2020-06-19 09:38:04 70

空空如也

空空如也

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

TA关注的人

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