自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring框架简介:一文了解spring应用场景及关键特性

Spring 框架基于 Java 语言和面向对象的编程思想,将多个技术和框架整合到一个框架中,提供了一套简单易用的开发模型,能够提高开发效率、降低维护成本,并且能够提高应用程序的可测试性和可扩展性。spring security: 安全框架,提供了认证和授权的功能。spring core:提供依赖注入和控制反转的功能,可以让开发者将对象间的依赖关系交于容器来管理,从而实现松耦合,可测试,可维护的代码。spring data:数据访问框架,提供了对多种数据库的支持,包括关系型数据库,nosql,图数据库等。

2023-04-13 18:53:16 440 1

原创 并行流的使用偶现ConcurrentModificationException 异常

问题描述今天排查线上偶现的问题,查日志是并发修改集合的异常:问题代码:Map<String, Object> context = ContextUtil.getAll();req.getLines().parallelStream().forEach(lineNo -> { ContextUtil.putAll(context); baseWave.occupyLine(warehouseCode, lineNo, req.getPlanDate());});

2021-01-14 14:58:11 1066 8

原创 数据持久层框架调研(jpa vs mybatis)

背景1.Mybatis generator为mybatis生成了大量并没有实际使用的代码,实际发现只有 selectByExample,insertSelective 两个方法使用较多,而且为每个实体类生成一个 *Example 类。 *Example 这个类是大量相似的代码,完全可以抽象统一起来2.还有生成不同风格的 DynamicSql 风格的mapper 层代码,混乱可读性差。框架选型jpajpa只需要简单生成entity,mapper 层继承 org.springframework.dat

2020-10-22 19:28:40 1135

原创 对java8 StreamAPI的扩展

java8的流(Stream API)已经提供了很强大的api接口了,满足日常开发的绝大部分需要,但是还是有些欠缺比如 java9才增加的两个api takeWhile dropWhiletakeWhile() 方法使用一个断言作为参数,返回给定 Stream 的子集直到断言语句第一次返回 false。**dropWhile()**与takeWhile相反,使用一个断言作为参数,直到断言语句第一次返回 true 才返回给定 Stream 的子集。还有不爽的地方是同一个流只能执行一次流水线操作,完成后这

2020-07-09 15:33:34 508

原创 java8 Stream流水线实现分析

java8的Stream流水线,用起来很爽,但是他是怎么做到的呢。Stream流水线记录用户的每一步操作步骤(map,filter等),当用户调用结束操作(Collect,reduce 等)时将用户之前记录的操作一并执行调。这里就有几个问题要解决了如何记录用户操作如何将用户操作串联起来如何触发整个任务获取结果记录串联用户操作首先查看类图查看源码我们可以看到 list.stream().map(x->x+“123”).filter(x->x.startsWith(“test”)

2020-07-03 16:54:54 2107

原创 SpringBootTest整合PowerMock

依赖<dependency><groupId>org.powermock</groupId><artifactId>powermock-module-junit4</artifactId><version>2.0.0-beta5</version><scope>test</scope></dependency><dependency> <groupI

2020-06-28 15:13:16 1516 1

原创 java IO模型

阻塞 与 非阻塞阻塞请求收到后,请求被一直阻塞,直到条件满足(可读,可写等)非阻塞请求收到后,立即返回一个标志信息,而不会一直阻塞等待。一个通过 Selector选择器遍历channel获取满足条件的channel来处理。同步 与 异步同步每个请求必须逐个地被处理,一个请求的处理会导致整个流程的暂时等待,这些事件无法并发地执行。用户线程发起I/O请求后需要等待或者轮询内核I/O操作完成后才能继续执行。nio是业务线程在io操作准备好得到通知,接着由该线程进行io操作,但是io本身还是同步的。

2020-06-17 16:08:58 156

原创 mysql并发replace into死锁问题

问题描述表A有(id,b,c)3个字段,id为自增主键,b字段上有唯一索引。多线程并发replace into 这个表会发生死锁抛出异常om.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock问题分析replace into 语法是如果唯一索引有冲突是先delete然后再insert死锁就发生在 delete和insert 的过程中replace

2020-05-10 14:31:39 2572 1

原创 在踩坑中深入理解ThreadLocal

简介ThreadLocal 是一创建线程局部变量的类,就是说这个类创建的变量值能被当前线程访问,其他线程无法访问和修改。特点Global:在当前线程中,任何位置能获取到ThreadLocal的值Local:该线程的ThreadLocal只能被该线程访问,一般情况下其他线程访问不到(使用InheritableThreadLocal可以将某个线程的ThreadLocal值在其子线程创建时传递过...

2020-04-01 13:45:53 530

原创 java中枚举的定义及使用

枚举的定义当类的对象时有限且固定的,如季节类,它只有春夏秋冬4个对象这种实例有限且固定的类,在 Java 中被称为枚举类;定义:public enum ElementType { NODE, EDGE}这是java中的语法糖实际上会被编译成这样:public class ElementType extends Enum<ElementType>{}所有的枚举...

2020-03-02 14:38:37 925

原创 异步编排CompletableFuture

特点在传统future上,只能异步调用get方法,获取计算结果,能做的事情十分有限,比如想要异步执行完任务之后再去执行另一个任务。传统future做这个事情就显得力不从心了。这就是CompletebleFuture解决的问题。CompletebleFuture提供了丰富的接口用来添加异步任务的回调函数。简单使用创建异步任务创建异步任务主要有以下三种CompletableFuture.su...

2019-11-26 17:27:26 1473

原创 mysql死锁问题记录

记录一下工作中遇到的mysql死锁问题,防止后面再踩坑。#多索引多线程更新发生死锁问题描述数据库索引是这样的多线程执行的sql 是这样的 update indicator set result='1' where fk_indicator_id=? and fk_indicator_report_id =?然后就发生了死锁分析通过一番搜索读大佬们的博客发现update时,如果whe...

2019-10-31 14:01:37 179

原创 Java程序优雅的退出

背景最近收到一个新需求,需要充kafka队列中那消息解析写到es中。要求不能漏写数据,或者重复写数据。‘##问题如果程序中途需要手动停止,就需要把已经从kafka中拿到的数据,写进了es 才能停止程序。否则就会漏写数据或者重复写入数据解决钩子函数ShutdownHook只是一个已初始化但为启动的线程。当JVM开始执行关闭序列时,它才开始已某种随机程序注册和并行执行shutdown ho...

2019-10-11 17:19:15 489

原创 使用shiro来管理权限

前言最近公司我负责的一个服务(spring-boot spring-could)需要在接口级别做权限控制,本来想着是在controller层加上注解,再通过切面(aop)来实现。后来发现网上有现成的框架spring shrio 以及spring security。某位大佬曾经说过:不要重复造轮子。本着这个原则去了解了这两个框架。选型简单看了一下两个框架最后选择了spring shrio。这里...

2019-10-08 10:15:28 227

原创 spring事务

title: spring事务date: 2019-04-12 10:09:30tags: [‘spring’,‘事务’]categories: 后台spring事物传播机制类型描述REQUIRED支持当前事务,如果当前没有事务,就新建一个事物。这是最常见,默认的选择。SUPPORTS支持当前事务,如果当前没有事务,就以非事物方式执行。MANDATO...

2019-09-27 11:24:01 79

原创 java多线程之ThreadPoolExecutor

title: “java多线程之ThreadPoolExecutor”date: 2019-03-06tags: [“java”,“多线程”,“ThreadPool”]categories: 后台构造函数 public ThreadPoolExecutor(int corePoolSize, int maximumPo...

2019-09-27 11:22:14 139

原创 权限管理设计思路

title: “权限管理设计思路”date: 2019-02-28tags: [“模块设计”]categories: 后台最近公司的运营管理系统开发完毕,有时间来写点东西,就先来总结一下我再权限系统的设计思路吧,希望能有点用。权限管理分为 功能权限以及数据权限。功能权限功能权限是指某个用户使用某个功能的权限 ,简单的说就是调用某个接口的权限。功能权限比较简单,主要要有三个实体:...

2019-09-27 11:21:34 1057

原创 JanusGraph学习笔记

title: JanusGraph学习笔记date: 2019-07-15 10:09:30tags: [‘JanusGraph’,‘学习笔记’,‘图数据库’]categories: 后台jansusgraph是一款分布式开源图数据库。JanusGraph Server使用默认的数据库及搜索引擎配置:bin/janusgraph.sh start自定义存储及搜索引擎:bin/gre...

2019-09-27 11:20:33 1878 1

原创 java类加载器

title: “java classLoader”date: 2019-01-04tags: java在 Java 中,类的实例化流程分为两个部分:类的加载和类的实例化。类的加载又分为显式加载和隐式加载。大家使用 new 关键字创建类实例时,其实就隐式地包含了类的加载过程。对于类的显式加载来说,比较常用的是 Class.forName。其实,它们都是通过调用 ClassLoader ...

2019-09-27 11:19:05 93

原创 spring事务

title: spring事务date: 2019-04-12 10:09:30tags: [‘spring’,‘事务’]categories: 后台spring事物传播机制类型描述REQUIRED支持当前事务,如果当前没有事务,就新建一个事物。这是最常见,默认的选择。SUPPORTS支持当前事务,如果当前没有事务,就以非事物方式执行。MANDATO...

2019-09-27 11:18:21 60

原创 java多线程基础

title: “java多线程基础”date: 2019-01-15tags: [“java”,“多线程”]categories: 后台等待池假设一个线程a 调用了某个对象的wait方法,线程a就会释放该锁,进入到该对象的等待池中。等待池中的线程不会参与锁的竞争。锁池假设线程a已经拥有了某个对象的锁,而其他线程想要执行这个对象的某个同步代码块(syschronized)的代...

2019-09-27 11:16:01 140

原创 es学习笔记-基础篇

title: es学习笔记-基础篇date: 2019-07-31 10:09:30tags: [‘es’,‘学习笔记’]categories: 后台索引–保存相关数据的地方,实际上是指向一个或者多个物理分片的逻辑明名空间。集群内的原理es支持垂直扩容,水平扩容,但是垂直扩容是有极限的,真正的扩容能力来自于水平扩容(为集群添加更多的节点,并将负载及稳定性型分散到这些节点中)一个运行...

2019-09-27 11:15:11 207

原创 spring Bean创建流程及扩展点

title: “spring Bean创建流程及扩展点”date: 2019-09-26tags: [“spring”]categories: 后台springBean创建流程扩展点ImportBeanDefinitionRegistrar 与ImportSelector实现接口可以添加自定义的beanDefinition,例:@Componentpublic cla...

2019-09-27 11:14:15 579

原创 Celery - 分布式任务队列

title: “Celery-分布式任务队列”date: 2019-03-28tags: [“python”,“celery”,“分布式”,“任务队列”]categories: 后台Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。它是一个专注于实时处理的任务队列,同时也支持任务调度。原理在celery 中主要有4个角色,prod...

2019-09-27 11:13:31 191 1

原创 netty学习笔记

title: “netty学习笔记”date: 2019-04-03tags: [“netty”]categories: 后台Channel底层网络传输 API 必须提供给应用 I/O操作的接口,如读,写,连接,绑定等等。ChannelHandler业务逻辑主要存活于此,主要子接口分别有ChannelInboundHandler,ChannelOutboundHandler...

2019-09-27 11:12:36 212

原创 记一次mysql分页问题

title: “记一次mysql分页问题”date: 2019-09-15tags: [“mysql”]categories: 后台前言都知道mysql分页使用limit这个关键字来进行的,但今天使用这个关键之进行分页点时候出现了点问题,有些记录没有查到,有些记录在上一页出现之后,翻下一页又出现了。问题分析单独使用limit这个关键字是没有问题的,加上order by 这个...

2019-09-27 11:11:25 115

空空如也

空空如也

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

TA关注的人

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