
java
许老许
http://laoxshare.com/
展开
-
自定义ResultSet映射对象bean (数据库下划线转驼峰)
private <T> List<T> resultSetToBean(ResultSet resultSet, Class<T> beanClass) { // 获取Bean对象内的所有属性 try { Field[] fields = beanClass.getDeclaredFields(); List<T> beanList = new ArrayList<>原创 2022-02-17 18:24:40 · 456 阅读 · 0 评论 -
使用GenericTokenParser模仿mybatis进行sql的占位符的替换
public static class SqlTokenParser { static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static String handleSql(String sql, Map<String,Object> tableKeys, Map<String,Object> paramKey.原创 2022-02-17 18:22:25 · 668 阅读 · 0 评论 -
如何在springboot中监控tomcat线程池状态
前言之前线上突然出现了异常的服务之间的调用被决绝,排查问题发现是因为,请求链路中有一个服务请求器restteamplate 并发没有加上,默认是4(两个节点),导致restteamplate 线程池很块被占满,最终导致tocmat线程池也没有可用资源,后续的请求直接被拒绝。所以改了之后想要查看tomcat 的线程池的情况。springboot 1.x@AutowiredServletWebServerApplicationContext applicationContext; TomcatSer原创 2021-11-09 11:12:23 · 4113 阅读 · 3 评论 -
关于基于redis和kafka实现类似银行叫号
先说今天分享一个之前写的基于redis和kafka实现类似银行叫号前言之前作过某风控系统,系统内会设计调用大量的三方数据,导致每一笔风控审核的时候会出现某一笔的消费延迟导致上游的消费速度显著下降,从而出现严重的卡单(kafka)。确定方案之前通过kafka消费主要是,并发消费,其类比的生活模式是早期银行排队,也就是kafka队列类似银行的多个窗口。假设银行规定,排队之后不能更换窗口,一个数据类似是来银行排队处理的人,比如如果某一个人出现处理速度过慢,那么有可能出现某一些窗口空闲而其他窗口排队很长的原创 2021-10-03 10:28:50 · 721 阅读 · 0 评论 -
kafka拦截器实现队列插队效果
前言突然出现一个任务需要对kafka处理的数据进行插队操作(内心小崩溃。。。),研究了一下,还是可以使用拦截器进行实现这样的效果的。拦截器(Interceptor)是早在Kafka 0.10.0.0中就已经引入的一个功能,Kafka一共有两种拦截器:生产者拦截器和消费者拦截器。ProducerInterceptor先看代码@Slf4j@Servicepublic class MyProducerInterceptor implements ProducerInterceptor {原创 2020-10-22 10:20:31 · 508 阅读 · 0 评论 -
分布式的id生成算法(时间分表)
先上代码@Component@Slf4jpublic class GenerateIdUtil {private static String port;@Value("${server.port}")public void setPort(String input){ port = String.valueOf(Integer.valueOf(input)%100);}private static AtomicInteger atomicInteger = new AtomicIn原创 2020-09-29 09:29:17 · 450 阅读 · 0 评论 -
mysql日期字段datetime和java中Date误差
前言之前用aop做日志记录的时候,对请求的时间差做了处理,用压测之后竟然发现了时间差出现了负数。。。。问题分析aop的使用逻辑 static Map<String, Object> log_aop_containter = Collections.synchronizedMap(new HashMap());@Before("pointCut()")public void doBefore(JoinPoint joinPoint){//存储一条数据,并且将当前数据id和当原创 2020-09-17 10:18:45 · 1119 阅读 · 0 评论 -
SringAOP @AfterThrowing异常数据库事务未提交
前言今天使用 aop 完成日志记录的时候,before,after,afterreturing都是正常执行完成的。对异常也要进行记录,但是数据存不进去,百度了下是因为数据库的事务也是基于aop,在代码中之前开启事务,代码之后提交事务,但是因为日志的aop在事务的事务之后执行,所以需要设置日志的aop的顺序顺序实现使用Order接口@Overridepublic int value() { return 1;}使用注解的方式@Order(1)数值越小,优先级越高spring实现a原创 2020-09-13 23:33:36 · 695 阅读 · 1 评论 -
kafka踩坑记录
持续更新前言工作需要学习kafka,说实话之前有使用过各种的mq,对于入门来说都是简简单单,很块就能上手。但是这次的kafka入门真的是太心累了,使用window安装还有看启动先使用springboot测试,结果就是抛出一堆问题,就想着用java简单写下cs通信,依然失败,比如broken始终无法创建成功(结果是自己zookeeper问题),然后找各种解决问题的相关博客,结果都是改端口,但是没有一个对上点,都是无效方案,什么改listen,port,奇怪的是有些博客都不写明自己的版本,然后就对问题给出.原创 2020-09-08 11:46:51 · 386 阅读 · 0 评论 -
fork/join其实很简单
1 前言还记的很久之前一位很时尚的面试官问过,“知道什么是fork/join吗”,“我不会”,“回去等通知吧”。面试就是这么残酷,一个不懂就gg,所以平时还是要多多学习,注重基础的积累,框架在牛也是从基础类库开始构造出来的。那么什么是fork/join框架2 fork/join框架fork/join框架是jdk7提出的一个复杂任务处理方案,它提供了一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。可以通过下面的这张图进行抽象理解其实从f原创 2020-09-06 14:47:06 · 724 阅读 · 0 评论 -
maven的命令-deploy
maven deploy命令的含义maven deploy命令是将你负责的模块发布到你配置的仓库位置。多模块开发中使用deploy命令配置仓库位置,一般公司都会搭建自己的公司私服,用于加速获取jar以及管理公司的一些技术沉淀工具包之类的<distributionManagement> <repository> <!--稳定版本不会频繁修改的jar的存储位置--> <id>maven-release</id&原创 2020-09-04 13:36:37 · 37654 阅读 · 4 评论 -
springboot-mybatisplus-druid主从多数据源配置
主从架构我们一般在应对高负载的情况,会将数据库设计为主从架构,主(master)负责完成负载比较小的数据修改,从(salve)负责完成负责比较大的数据查询。springboot mybatis-plus配置主从mybatis-plus优势是可以实现像jpa一样完全的零xml开发dao层,并且这个框架只做增强,不影响mybatis原有的任何特性以及功能。springboot yml文件配置spring: datasource: slave: url: jdbc:mysql原创 2020-09-03 13:27:47 · 3606 阅读 · 1 评论 -
线程中的中断
前言其实应该很多人都对线程中断很模糊,java其实并没有给出自带的安全立即退出线程的方法,但是它提供了一个帮助实现安全退出的机制。java中的中断机制java给出了中断机制,但是可能并不是像大多数人那样想,调用如interrupt线程会进行立刻的中断,实际上java的中断机制是提供一个线程控制的帮助,提供中断机制可以判断出线程是不是应改被中断,而实际的中断处理应该在我们的run中进行实现。关于几个中断的方法interrupt isInterrupted interrupted(jdk中没有被废除的原创 2020-08-29 10:49:23 · 272 阅读 · 0 评论 -
数据库事务
数据库事务的特性基本的四大特性:ACID原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。持久性(Durability):一个事务一旦提交,他对数据库的修改应该永久保存在数据库中。事务隔离级别数据库中出现的一些原创 2020-08-20 21:23:53 · 156 阅读 · 0 评论 -
java实现排序九大算法
直接插入排序public class AAddB { public static void main(String[] args) { // int a[]={1,2,34,5,6,74,3,2,4523,42,24,4,555,534}; for (int i=1;i<a.length;i++){ //排序 if(a[i]<a[i-1]){//a[i]被插入数据 ,0~i-1默认是已经排好原创 2020-08-20 14:35:33 · 373 阅读 · 0 评论