
java
文章平均质量分 64
yujunyi_
这个作者很懒,什么都没留下…
展开
-
Redis 多数据源配置
背景由于项目需求或者性能需求,一个项目可能需要使用多个 redis 数据源,具体使用如下。配置文件spring: redis: #默认数据源 expireSeconds: 120 commandTimeout: 10000 #redis操作的超时时间 pool: maxActive: 5000 #最大连接数 maxIdle: 30 #最大空闲连接数 minIdle: 5 #最小空闲连接数 maxWait: 3000原创 2021-03-09 18:11:31 · 1784 阅读 · 0 评论 -
Redis 用 scan 替代 keys
背景先看一下 keys 命令的定义。KEYS pattern查找所有符合给定模式 pattern 的 key 。KEYS * 匹配数据库中所有 key 。KEYS h?llo 匹配 hello , hallo 和 hxllo 等。KEYS h*llo 匹配 hllo 和 heeeeello 等。KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo。但是,当 keys 命令被用于处理一个大的数据库时,它可能会阻塞服务器达数秒之久,从而导致其他 redis 的原创 2021-03-04 13:18:40 · 1394 阅读 · 1 评论 -
spring mvc + redis 实现分布式锁(注解实现可自动重试)
分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于 Redis 的分布式锁;3. 基于 ZooKeeper 的分布式锁。本文介绍基于 Redis 实现分布式锁原创 2019-10-22 16:53:12 · 2121 阅读 · 1 评论 -
解决 Wildfly 启动超时(concurrent timeout)
在做项目的过程中,由于项目比较庞大,并且使用了 VPN 导致网络较差。在启动时经常报启动超时的错误,错误详情如下:```16:38:04,388 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0348: Timeout after [300] seconds waiting for service container stability. Operation will roll原创 2019-07-10 10:08:43 · 5377 阅读 · 0 评论 -
利用 JEXL 动态计算表达式
Java Expression Language (JEXL) 是一个表达式语言引擎,可以用来校验数据。背景项目中,需要配置一些规则,然后根据动态的数据去验证规则。比如配置如下的规则:人数大于5,并且名称包含 “test” 才能验证通过。按照传统的思路,一般就是写死代码,如...原创 2019-03-06 19:52:45 · 11628 阅读 · 0 评论 -
Hibernate 中对象 set 属性时自动保存入库的问题
在某个项目中,通过 Heibernate 查出某个对象后,对属性进行了 set 操作,并没有进行 update 操作,但是在数据中自动保存了。显然这并不是我想要的,我只是想 set 一下属性,在前端显示,并不想入库,但是 Heibernate 自动保存了。// ...原创 2018-10-22 17:08:38 · 6963 阅读 · 2 评论 -
单例模式的破坏与改进
单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。单例的特点单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其...原创 2018-08-21 10:50:05 · 208 阅读 · 0 评论 -
spring mvc 统一异常处理
简介框架的强大之处就在于把很多需要码农多次重复编写的代码剥离出来,形成核心的处理方式。 在异常的处理这块,你不需要再有过多的 try-catch 语句,只需要把异常抛给框架就行了,框架帮你处理! 在 spring mvc 中的统一异常处理有3种,本文拿最简单的一种来演示 。自定义异常为了更精确的定位异常,区分异常种类,我们会用到自定义异常。考虑下如下场景:系统需要提供一...原创 2018-08-15 10:01:01 · 211 阅读 · 0 评论 -
代理解决跨域问题
之前讲到了解决跨域的两种方式:JSONP 和 CORS ,都是需要在被调用方来修改代码解决的。我们还可以通过代理方式,在调用方来解决跨域问题。代理解决跨域问题代理解决跨域问题的思路是:让发送出去的请求代理成是本域的 。举个例子:19...原创 2018-08-03 11:10:05 · 8639 阅读 · 0 评论 -
CORS 解决跨域问题
在上一篇 文章 中,讲到了利用 JSONP 来解决跨域问题。由于 JSONP 只支持 GET 请求 ,并且前后端代码都需要改动,因此推荐利用 CORS 来解决跨域问题。CORS 简介CORS 是一个 W3C 标准,全称是“跨域资源共享”(Cross...原创 2018-08-03 11:09:09 · 230 阅读 · 0 评论 -
JSONP 解决跨域问题
协议、域名、端口都相同才算同域,否则就是跨域。浏览器为了安全考虑(同源策略),不允许 axaj 跨域获取数据。浏览器会报错 xxx has been blocked by CORS policy: No 'Access-Control-Allow-...原创 2018-08-03 11:08:18 · 332 阅读 · 0 评论 -
Lombok
Lombok 是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。官方地址:https://projectlombok.org,github地址:htt...原创 2018-08-03 11:06:46 · 202 阅读 · 0 评论 -
spring mvc 多数据源配置 利用AOP手动切换
spring mvc 多数据源还有一种实现方式,利用 AOP 进行手动切换。基本原理是,我们自己定义一个 DataSource 类 DynamicDataSource ,来继承 AbstractRoutingDataSource ,然后在配置文件中...原创 2018-08-03 11:05:50 · 1063 阅读 · 0 评论 -
spring mvc 多数据源配置 根据package配置不同的数据源
有时候项目中可以需要连接两个数据库。因此就需要用到多数据源配置。原理就是配置两个dataSource,两个entityManagerFactory分别使用不同的dataSource,并设置不同的package扫描路径。配置文件a...原创 2018-08-03 11:04:05 · 865 阅读 · 0 评论 -
spring mvc 异步调用 @Async
“异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。同步调用通过一个例子,来看下同步调用。 写了...原创 2018-08-03 10:35:01 · 8229 阅读 · 3 评论 -
热部署工具 JRebel IntelliJ IDEA 篇
上一篇文章讲到了在 MyEclipse 下安装 JRebel ,从而实现热部署。具体原理及安装方式可以移步至 热部署工具 JRebel —— MyEclipse 篇 进行查看。本文介绍在 IntelliJ IDEA 下安装 JRebel 。1. JRebel 插件...原创 2018-08-03 10:32:50 · 1344 阅读 · 0 评论 -
热部署工具 JRebel MyEclipse 篇
热部署(Hotswap)和 JRebel热部署是在不重启 Java 虚拟机的前提下,能自动侦测到 class 文件的变化,更新运行时 class 的行为。目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。对于...原创 2018-08-03 10:25:37 · 1358 阅读 · 0 评论