自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 问答 (2)
  • 收藏
  • 关注

原创 springboot配置拦截器,自定义调用

涉及计到的关键类:@interfaceHandlerInterceptorAdapterWebMvcConfigurer1 开发starter`第一步:在hello-spring-boot-starter的pom.xml文件中追加如下maven坐标<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web&l

2021-09-27 10:19:53 213

原创 自定义线程池和ComplatableFuture异步编排在springboot项目中的应用

(一)编写线程池的配置文件@Configurationpublic class MyThreadpool { @Bean public ThreadPoolExecutor threadPoolExecutor(ThreadPoolConfigProperties pool){ return new ThreadPoolExecutor(pool.getCoreSize(),pool.getMaxSize(),pool.getKeepAliveTime(), TimeU

2021-08-24 22:48:36 533

原创 j2cache多级缓存架构

j2cache是OSChina目前正在使用的两级缓存框架。j2cache的两级缓存结构:L1: 进程内缓存 caffeine/ehcacheL2: 集中式缓存 Redis/Memcachedj2cache其实并不是在重复造轮子,而是作资源整合,即将Ehcache、Caffeine、redis、Spring Cache等进行整合。由于大量的缓存读取会导致L2的网络成为整个系统的瓶颈,因此L1的目标是降低对L2的读取次数。该缓存框架主要用于集群环境中。单机也可使用,用于避免应用重启导致的ehcac

2021-08-10 15:33:08 492

原创 jwt使用详解

认证机制介绍1.1HTTP Basic AuthHTTP Basic Auth 是一种简单的登录认证方式,Web浏览器或其他客户端程序在请求时提供用户名和密码,通常用户名和密码会通过HTTP头传递。简单点说就是每次请求时都提供用户的username和password这种方式是先把用户名、冒号、密码拼接起来,并将得出的结果字符串用Base64算法编码。例如,提供的用户名是 bill 、口令是 123456 ,则拼接后的结果就是 bill:123456 ,然后再将其用Base64编码,得到 YmlsbD

2021-08-10 11:05:39 1753 1

原创 企业级日志的开发

tools-log开发步骤为:1、定义日志操作事件类SysLogEvent2、定义@SysLog注解,用于在Controller的方法上标注当前方法需要进行操作日志的保存处理3、定义切面类SysLogAspect4、在切面类SysLogAspect中定义切点,拦截Controller中添加@SysLog注解的方法5、在切面类SysLogAspect中定义前置通知,在前置通知方法recordLog中收集操作日志相关信息封装为OptLogDTO对象并保存到ThreadLocal中6、在切面类SysL

2021-08-10 10:29:22 132

原创 Spring Event

Spring Event是Spring的事件通知机制,可以将相互耦合的代码解耦,从而方便功能的修改与添加。Spring Event是监听者模式的一个具体实现。监听者模式包含了监听者Listener、事件Event、事件发布者EventPublish,过程就是EventPublish发布一个事件,被监听者捕获到,然后执行事件相应的方法。Spring Event的相关API在spring-context包中。Spring Event入门案例第一步:创建maven工程springevent_demo并配置

2021-08-10 10:20:51 103

原创 企业极日志模块的编写

提供的日志功能主要有两个方面:1、通过logback框架可以在控制台或者日志文件记录日志信息2、拦截用户请求,将操作日志保存到数据库涉及到的技术点:1、切面Aspect、切点PointCut、通知Advice2、Spring Event 异步监听事件3、logback日志组件4、函数式接口5、ThreadLocallogback介绍Logback继承自log4j。Logback的架构非常的通用,适用于不同的使用场景。通过上图可以看到logback和Log4j都是slf4j规范的具体实

2021-08-10 10:09:18 179

原创 xss解决方案

XSS介绍跨站脚本攻击(Cross Site Scripting),为不和 CSS混淆,故将跨站脚本攻击缩写为XSS。XSS是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。有点类似于sql注入。XSS攻击原理:HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,与之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符时,

2021-08-10 08:54:58 1121

原创 hibernate-validator的使用

总的来说:前端校验:主要是提高用户体验后端校验:主要是保证数据安全可靠校验参数基本上是一个体力活,而且冗余代码繁多,也影响代码的可读性,我们需要一个比较优雅的方式来解决这个问题。Hibernate Validator 框架刚好解决了这个问题,可以以很优雅的方式实现参数的校验,让业务代码和校验逻辑分开,不再编写重复的校验逻辑。hibernate-validator优势:验证逻辑与业务逻辑之间进行了分离,降低了程序耦合度统一且规范的验证方式,无需你再次编写重复的验证代码你将更专注于你的业务,将这些

2021-08-10 08:24:26 1963

原创 dozer的用法

dozer简介Dozer是Java Bean到Java Bean映射器,它以递归方式将数据从一个对象复制到另一个对象。 dozer是用来对两个对象之间属性转换的工具,有了这个工具之后,我们将一个对象的所有属性值转给另一个对象时,就不需要再去写重复的调用set和get方法了。dozer其实是对我们熟知的beanutils的封装。<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/PO

2021-08-08 12:57:58 468 1

原创 knife4j接口文档工具

knife4j介绍knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,其底层是对Springfox的封装,使用方式也和Springfox一致,只是对接口文档UI进行了优化核心功能:文档说明:根据Swagger的规范说明,详细列出接口文档的说明,包括接口地址、类型、请求示例、请求参数、响应示例、响应参数、响应码等信息,对该接口的使用情况一目了然。在线调试:提供在线接口联调的强大功能,自动解析当前接口参数,同时包含表单验证,调用参数可返回接口响应内容、heade

2021-08-08 12:45:15 610

原创 swagger接口文档工具

(1)导入依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version></dependency><dependency> <groupId>io.springfox</gro

2021-08-08 12:31:09 359

原创 分库分表问题汇总---更新中

分布式全局唯一ID往往直接使用数据库自增特性来生成主键ID,而在分库分表的环境中,数据分布在不同的分片上,不能再借助数据库自增长特性直接生成,否则会造成不同分片上的数据表主键会重复。Twitter的Snowflake(又名“雪花算法”)UUID/GUID(一般应用程序和数据库均支持)MongoDB ObjectID(类似UUID的方式)Ticket Server(数据库生存方式,Flickr采用的就是这种方式)常见分片规则和策略分片字段该如何选择一般采用id和时间做分片字

2021-07-04 12:16:47 138

原创 Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.Configurati

最近再练习某谷的maven聚合的微服务商城项目,跟着教程一步一来的,结果在项目启动的时候还是出了问题,现在附上报错代码信息,Error starting ApplicationContext. To display the conditions report re-run your application with ‘debug’ enabled.2020-06-09 07:56:12.402 ERROR 6688 — [ main] o.s.boot.SpringApplicati

2020-06-09 08:13:45 4583 1

原创 hadoop执行分词时报错:System times on machines may be out of sync. Check system time and time zones.

解决办法:1、安装ntpdate工具yum -y install ntp ntpdate2、 设置系统时间与网络时间同步ntpdate cn.pool.ntp.org

2020-03-22 10:33:15 205

原创 获取钉钉花名册接口和枚举类

在做同步丁丁数据的功能,因为通讯录只显示基本信息,想拿到详细信息,可通过花名册来找,比如通讯录没有的身份信息。为避免后来的小伙伴们进行复制粘贴的操作,现给出一份/** *@描述 钉钉花名册枚举 *@创建时间 2020/3/19 17:17 */public enum RosterEnum { EMPLOYEE_NAME("sys00-name","姓名"), ...

2020-03-19 20:14:35 1966 5

原创 mybatis批量操作遇到的坑

先上mapper层代码,用的是mybatis注解 @Insert("<script>" + "insert into attendance_info(id,dingding_user_id,attendance_type,column_id,duration1,duration_unit,add_time,add_user,update_time,dept_i...

2020-03-19 20:14:04 589

原创 本地缓存Caffeine的使用

缓存的用途:用于减小对数据库的访问次数,频繁的访问数据库产生很大的开销,影响程序的执行效率!引入缓存,效率能几何倍递增。缓存的应用思想:初次查询时,添加缓存。修改方法时去除缓存// 最大缓存数量 public static final int MAX_SIZE = 10000; // 自动失效时间(分钟) public static long expireAfter...

2020-01-17 14:25:26 1761

原创 springmvc通过nio实现文件下载

/** * 文件下载 */ @RequestMapping(value="/download") public ResponseEntity downLoad(String filePath,String fileName,HttpServletRequest request, HttpServletResponse response){ tr...

2019-12-26 10:03:36 1191

原创 高性能Nginx—负载均衡篇

负载均衡调度中的状态down 当前的server暂时不参与负载均衡backup 预留的备份服务器max_fail 允许请求失败次数fail_timeout 经过max_fail后,服务暂停的时间max_conns 限制接收的最大连接数update A{server localhost:8080 down; 不提供服务server localhost:8081 backup; ...

2019-11-19 06:17:13 117

空空如也

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

TA关注的人

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