- 博客(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
261
1
原创 自定义线程池和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
635
原创 j2cache多级缓存架构
j2cache是OSChina目前正在使用的两级缓存框架。j2cache的两级缓存结构:L1: 进程内缓存 caffeine/ehcacheL2: 集中式缓存 Redis/Memcachedj2cache其实并不是在重复造轮子,而是作资源整合,即将Ehcache、Caffeine、redis、Spring Cache等进行整合。由于大量的缓存读取会导致L2的网络成为整个系统的瓶颈,因此L1的目标是降低对L2的读取次数。该缓存框架主要用于集群环境中。单机也可使用,用于避免应用重启导致的ehcac
2021-08-10 15:33:08
600
原创 jwt使用详解
认证机制介绍1.1HTTP Basic AuthHTTP Basic Auth 是一种简单的登录认证方式,Web浏览器或其他客户端程序在请求时提供用户名和密码,通常用户名和密码会通过HTTP头传递。简单点说就是每次请求时都提供用户的username和password这种方式是先把用户名、冒号、密码拼接起来,并将得出的结果字符串用Base64算法编码。例如,提供的用户名是 bill 、口令是 123456 ,则拼接后的结果就是 bill:123456 ,然后再将其用Base64编码,得到 YmlsbD
2021-08-10 11:05:39
2667
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
168
原创 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
136
原创 企业极日志模块的编写
提供的日志功能主要有两个方面: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
248
原创 xss解决方案
XSS介绍跨站脚本攻击(Cross Site Scripting),为不和 CSS混淆,故将跨站脚本攻击缩写为XSS。XSS是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。有点类似于sql注入。XSS攻击原理:HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,与之间的字符是页面的标题等等。当动态页面中插入的内容含有这些特殊字符时,
2021-08-10 08:54:58
1212
原创 hibernate-validator的使用
总的来说:前端校验:主要是提高用户体验后端校验:主要是保证数据安全可靠校验参数基本上是一个体力活,而且冗余代码繁多,也影响代码的可读性,我们需要一个比较优雅的方式来解决这个问题。Hibernate Validator 框架刚好解决了这个问题,可以以很优雅的方式实现参数的校验,让业务代码和校验逻辑分开,不再编写重复的校验逻辑。hibernate-validator优势:验证逻辑与业务逻辑之间进行了分离,降低了程序耦合度统一且规范的验证方式,无需你再次编写重复的验证代码你将更专注于你的业务,将这些
2021-08-10 08:24:26
2067
原创 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
537
1
原创 knife4j接口文档工具
knife4j介绍knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,其底层是对Springfox的封装,使用方式也和Springfox一致,只是对接口文档UI进行了优化核心功能:文档说明:根据Swagger的规范说明,详细列出接口文档的说明,包括接口地址、类型、请求示例、请求参数、响应示例、响应参数、响应码等信息,对该接口的使用情况一目了然。在线调试:提供在线接口联调的强大功能,自动解析当前接口参数,同时包含表单验证,调用参数可返回接口响应内容、heade
2021-08-08 12:45:15
668
原创 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
512
原创 分库分表问题汇总---更新中
分布式全局唯一ID往往直接使用数据库自增特性来生成主键ID,而在分库分表的环境中,数据分布在不同的分片上,不能再借助数据库自增长特性直接生成,否则会造成不同分片上的数据表主键会重复。Twitter的Snowflake(又名“雪花算法”)UUID/GUID(一般应用程序和数据库均支持)MongoDB ObjectID(类似UUID的方式)Ticket Server(数据库生存方式,Flickr采用的就是这种方式)常见分片规则和策略分片字段该如何选择一般采用id和时间做分片字
2021-07-04 12:16:47
188
原创 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
4808
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
270
原创 获取钉钉花名册接口和枚举类
在做同步丁丁数据的功能,因为通讯录只显示基本信息,想拿到详细信息,可通过花名册来找,比如通讯录没有的身份信息。为避免后来的小伙伴们进行复制粘贴的操作,现给出一份/** *@描述 钉钉花名册枚举 *@创建时间 2020/3/19 17:17 */public enum RosterEnum { EMPLOYEE_NAME("sys00-name","姓名"), ...
2020-03-19 20:14:35
2085
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
648
原创 本地缓存Caffeine的使用
缓存的用途:用于减小对数据库的访问次数,频繁的访问数据库产生很大的开销,影响程序的执行效率!引入缓存,效率能几何倍递增。缓存的应用思想:初次查询时,添加缓存。修改方法时去除缓存// 最大缓存数量 public static final int MAX_SIZE = 10000; // 自动失效时间(分钟) public static long expireAfter...
2020-01-17 14:25:26
1841
原创 springmvc通过nio实现文件下载
/** * 文件下载 */ @RequestMapping(value="/download") public ResponseEntity downLoad(String filePath,String fileName,HttpServletRequest request, HttpServletResponse response){ tr...
2019-12-26 10:03:36
1252
原创 高性能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
156
空空如也
有没有做GIS开发的大佬,相知道LineString的自相交和面的自相交是怎么验证的
2019-11-13
有没有用java操作gis的大佬,如何求两个边界不一致的部分的,请教了!
2019-11-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人