Java
我本半山人
人生昧旅,砥砺前行
展开
-
Fliter配置请求日志埋点
一个用于记录请求路径的拦截器原创 2022-09-06 19:52:58 · 207 阅读 · 0 评论 -
RSA加密-防止自增id被遍历
文章目录非对称加密优点:缺点:RSA 算法demo加密demo入口解密demo非对称加密非对称加密需要两个密钥:公钥 (publickey) 和私钥 (privatekey)。公钥和私钥是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。优点:安全缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密RSA 算法RSA算法是一种典型的非对称加密的算法具体信息安利一篇博客htt原创 2021-12-22 15:00:11 · 1358 阅读 · 0 评论 -
线程池、自定义线程工厂、自定义拒绝策略
线程池在阿里巴巴的开发规约当中,有这么一条为了防止创建销毁线程切换带来的开销,我们需要尽量使用线程池。创建方法在代码当中,有这么些个类![在这里插入图片描述](https://img-blog.csdnimg.cn/349556e6bc2646b2bbcde21c9c379f79.jpg#pic_center使用ThreadPoolExecutor创建线程,ExecutorService service = new ThreadPoolExecutor(‘七个参数’);我们debug进入原创 2021-12-16 18:16:37 · 2008 阅读 · 0 评论 -
按照模板批量导出Excel并压缩下载
自顶而下的编程方法遇到复杂的问题时,先将需求拆分,将我们拆分的需求分成一个一个的模块,也可以作为函数,每一个模块负责自己的功能。这个时候不要纠结于模块内部的实现,我们只需要将模块的名字以及这个模块负责什么内容定好就可以了(简单的说:先搭好一个架子)保证当前逻辑正确后,把刚才假装存在的函数填上。遇到一个需求,需要通过数据库中的数据,按照给定的模板,导出一批 xlsx文件,并且将其压缩下载。这里我尝试着将需求拆分,变成一个个的小问题。这里采用的思路是:将文件导出到某个文件夹中,将文件夹压缩,删除文件夹以原创 2021-02-20 16:53:44 · 460 阅读 · 0 评论 -
Builder模式简单应用与自定义Select的Mapper模板
公司使用的 freemarker自定义代码生成模板,Mapper中在使用 SELECT * ,这无疑对性能造成了极大的影响,造成了很多不必要的IO读写。因此在想着改进一下代码,灵活的在使用中指定哪些字段需要查询,提升性能。Builder模式建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:Separate the construction of a complex object from its representation so that the same constru.原创 2021-02-05 20:36:37 · 286 阅读 · 0 评论 -
@interface 与aop
在业务中有这样的场景:我需要在调某些方法的时候,需要提前拿出它的参数作业务判断,然后判断通过的代码再进行业务操作,此处我们使用自定义注解来解决问题。自定义注解import org.springframework.stereotype.Component;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention..原创 2020-12-01 20:00:19 · 714 阅读 · 0 评论 -
登录认证(二)—— jwt封装token与解析
JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。这几天在学jwt,首先介绍一下关于jwt的定义及其优缺点,有人美玉在前我就直接发链接了。什么是 JWT -- JSON WEB TOKEN——https://www.jianshu.com/p/576dbf44b2ae在项目中加入jwt首先在jar包中加入依赖 <..原创 2020-11-23 21:13:32 · 2473 阅读 · 2 评论 -
registration status: 204
自己搭了一个springCloud项目,配置启动成功,但是client死活启动不了,排查了一圈,少了一个依赖将: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.2.RELEASE</version> &l原创 2020-11-13 14:20:11 · 5436 阅读 · 0 评论 -
java匹配字符串中某个字符
public class PatternMatchUtils { private static final String DASH = "-2"; public static String subStringVals(final String sourceNo){ //寻找第一个破折号出现的位置 final Matcher matcher= Pattern.compile(DASH).matcher(sourceNo); if (!matc.原创 2020-07-30 19:13:15 · 1129 阅读 · 0 评论 -
反射(reflective)
反射(reflective):能够分析类能力的程序先举个例子:我在生产中遇到了一个情况,前端传给我的String字段中,凡事以 Like结尾的字段 ,都是我需要进行模糊查询的字段。现在为了防止特殊符号注入,我需要给诸如 % 这样的符号 加上一些 ("\")转义符。这个情况普遍存在在整个工程当中,那么可不可以将这个操作抽象成一个方法呢?@Slf4jpublic ModifyUtils { /** * 模糊查询以Like结尾 */ private static原创 2020-06-16 19:48:14 · 464 阅读 · 0 评论 -
MyBaits-plus
官方文档:https://mp.baomidou.com/guide/crud-interface.html#selectbatchids插入int insert(T entity)@TableName("表名")@TableId 注释于主键上面用来对应表的主键@TableFileld("name")直接对应表中字段名对表中没有的字段,就不成为表中数据的属性,解决方法 ...原创 2019-10-24 15:08:12 · 1058 阅读 · 0 评论 -
@GetMapping,@PostMapping,@ApiOperation,@ApiParam,@ApiImplicitParams
今天看项目遇到几个注解,记录一下@GetMapping 组合注解,意思是@RequestMapping(method=RequestMethod.GET)@PostMapping 组合注解,意思是@RequestMapping(method=RequestMethod.POST)@GetMapping,@PostMapping 等引进于Spring4.3中@ApiOperation(va...原创 2019-10-18 17:56:57 · 2075 阅读 · 0 评论 -
java Volatile与synchronized
Volatile 与synchronized都是保证线程安全的,各自的作用与区别:Volatile可以保证可见性但是无法保证原子性:可见性:即一个线程在修改一个变量的时候,另一个线程可以读到这个值。我们大致了解一下Volatile的工作机制:如图,下面那一块我们模拟是主存,上面两块我们假设是cpu,因为线程实在处理器当中运行的。将下面那大块方块内的一个小方块比作两个线程目前都需...原创 2019-09-28 15:13:46 · 260 阅读 · 0 评论 -
适配器模式Adapter
适配器,顾名思义,用来连接两个不能直接访问的类的。举个例子,假如我们这的电压是220v,但电器的工作电压不是220v,这时候我们就需要一个适配器来调节这部分的关系。举个例子:package adapter;import java.io.*;//适配器模式//类1无法访问类2,添加一个中间类来适配public class Adapter { public static ...原创 2019-09-24 20:06:41 · 97 阅读 · 0 评论 -
Lambda(三)--环绕执行模式
环绕执行模式(execute around):做资源处理时一个常见的操作模式就是打开一些资源,执行一些代码,然后将这些资源关闭。这些打开资源,关闭资源的操作总是十分的类似并且围绕着那些需要处理的重要代码,这就是环绕执行模式。在《唯品会Java开发手册》当中,方法设计第四条:【推荐】尽量减少重复的代码,抽取方法超过5行以上重复的代码,都可以考虑抽取公用的方法。就直接列举书中的例子...原创 2019-07-24 21:04:36 · 538 阅读 · 0 评论 -
Lambda(四)--常用的函数式接口
predicate:这篇有点搬书java.util.function.Predicate<T>接口定义了一个名叫test的抽象方法,它接受泛型 T对象,并返回一个boolean。我最近实践的过程中发现这个接口在写查找方法的时候效果很好。可以极大的降低代码的冗余。@FunctionalInterface public interface Predicate<T>...原创 2019-07-29 21:05:17 · 128 阅读 · 0 评论 -
lambda(一)
行为参数化:让方法接受函数作为参数,并且在内部进行调用。安利《Java8实战》,我至今才读到行为参数化和lambda表达式,不得不说这本书让人受益匪浅,就算我才看几章,他的设计理念也让人大大的提升了代码的复用性和简洁性。在书中有这么一个图:举个列子,因为在开发的过程中,需求变化总是难以预计的,这时候就需要一个复用性更高的设计模式。假设有个果农,他有一对水果,这天他要筛选出红色的苹果,第...原创 2019-07-21 11:16:08 · 210 阅读 · 0 评论 -
Lambda(五)-方法引用
方法引用:方法引用就是让我们根据已有的方法创建lambda表达式,假如一个lambda表达式只是单纯的调用一下这个方法,那么我们就可以省去描述的步骤,直接用名称进行调用。语法:目标引用 :: 方法名称其中::是分隔符等效方法引用不需要加上括号,因为并没有实际调用这个方法。主要的三类方法引用:1.指向静态方法的方法引用。如integer 的parseint方法,...原创 2019-08-02 20:14:36 · 181 阅读 · 0 评论 -
lambda(二)语法
java8推出了lambda.Lambda :可以传递匿名函数的一种方式,没有名称,但是有参数列表,函数主体,返回类型,可能还有一个可以抛出异常的异常列表。基本语法:(parameters)->expression或者:(parameteres)->{statements;}随便举几个案列:布尔表达式 (List<String...原创 2019-07-22 23:13:41 · 156 阅读 · 0 评论 -
Lambda(六)--复合Lambda
Lambda复合意味着我们可以将多个简单的Lambda表达式组合而成一个新的复杂的表达式。在此函数式接口中虽然用到了不止一个方法,但其余的都是默认方法不是抽象方法,函数式接口定义的抽象方法一定只有一个。本篇总结其中的比较器复合,谓词复合,函数复合一、比较器复合我们之前对苹果按照重量排序时,曾经写过:List<Apple> inventor = Arrays.asLi...原创 2019-08-18 20:27:05 · 317 阅读 · 0 评论 -
作用域,构造器,内存回收与销毁
对象的作用域:在java当中,变量的作用域由所在的{}决定,比如:{ int x = 0 ; //只有x有效 { int y = 1; //x,y都有效 }}*我们需要将作用域的大小最小化。举个例子int a = 10;int b = 20;system.out.println(a);system.out.p...原创 2019-08-18 12:51:54 · 190 阅读 · 0 评论 -
七大设计原则
单一职责: 简单的 来说,就是一个类,一个方法,一个框架只负责的一件事情。单一职责原则(SRP:Single responsibility principle)又称单一功能原则,面向对象五个基本原则(SOLID)之一。它规定一个类应该只有一个发生变化的原因。该原则由罗伯特·C·马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中给出的。马丁表示此原则...原创 2019-09-03 00:00:56 · 136 阅读 · 0 评论 -
java实现两张表的关联查询(非数据库语言)
已知我有两张表:我现在查询时需要同时获取两张表对应的数据。比如我想要获取 stuid,honName,obreson三个对应字段。我在脑子里梳理了一下思路,以我目前的知识储备,只能在数据库写一下两个表join,然后在bean层,要么一个里面封装另外一个对象,要么另外写一个类封装一下。很明显第一个方法有点违反开闭原则,假如这个底层不是我写的那我绝对不能这么干,第二个又有点繁琐,所以我...原创 2019-09-12 14:58:50 · 8804 阅读 · 0 评论 -
单例模式详解
应用场景:只需要一个实例存在的时候package singleton;//单例模式 实际上一定程度上就是将构造方法变成私有的,外面不可以new它//饿汉//弊端:不管用到与否,类加载时就实例化public class Demo01 { private static final Demo01 INSTANCE = new Demo01(); private D...原创 2019-09-18 23:57:07 · 107 阅读 · 0 评论 -
设计模式 (一)
设计模式是诸多的前辈们在不断的实践过程中总结出来的设计方法,不同的设计模式针对不同的方法。现在公认的设计模式有23种,对应着23种不同的场景,每一种设计模式只能用于特定的场景,23种设计模式实际上对应着七大设计原则,即每个设计模式都对应着一个或者多个设计原则。 实际上就是将复杂的功能模块不断拆分的规则与方法。七大原则:1.单一职责原则2.里式替换3.依赖倒置4.开闭...原创 2019-07-23 18:13:03 · 107 阅读 · 0 评论