自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

淡然坊

素处以默,妙机其微。

  • 博客(511)
  • 资源 (7)
  • 收藏
  • 关注

原创 使用MyBatis动态生成sql

问题举例:有一个带占位符的模板sql,语法跟mybatis的XML是类似的,如select period, sum(amount) as sum from abc where type = '${type}' <if test='period != null'> and period = '${period}' </if><if test='debtType != null'> and debt_type = '${debtType}'

2021-08-19 14:38:16 4728 1

原创 如何更加稳妥地做校验

在工作期间,师兄教我一个更为保险的校验顺序:从JDK的AQS官方文档上https://bugs.openjdk.java.net/browse/JDK-6503247可以看到:如果是这样处理异常的话:try { ... } catch (RuntimeException e) { handle(); throw e; }那万一抛出的是throwab...

2019-12-01 13:20:27 2858

原创 如何在Java注解中放一个list

示例如下:public @interface CustomAnnot { String[] author() default "me"; String description() default "";}用这个注解的时候这样用:@CustomAnnot(author={"author1","author2"}, description="test")参考资料:...

2019-11-27 16:42:27 7317

原创 使用Spring Cache Annotation时如何不缓存空值

在插入缓存时,会有<key,value>,我们希望value=null时,不要存入缓存,怎么实现呢?使用 unless="#result == null"注解就可以,代码示例如下:@Cacheable(value="defaultCache", key="#pk", unless="#result == null")public Person findPerson(int ...

2019-11-27 16:36:05 3179

翻译 Spring Cache Annotation 使用的注意点和小技巧

使用spring中的cacheable注解需要注意的点,列举了如下:默认Cache Key的注意点对一个方法增加缓存是很简单的一件事,只需要简单加上@Cacheable注解就OK了。@Cacheable(value = "reservationsCache")public List<Reservation> getReservationsForRestaurant( R...

2019-11-27 16:31:08 3818

转载 详解布隆过滤器的原理、使用场景和Java代码示例

今天碰到个业务,他的 Redis 集群有个大 Value 用途是作为布隆过滤器,自己之前只是听说过这个,但是没深入了解过,趁这个机会补充一下知识。在进入正文之前,之前看到的有句话我觉得说得很好:Data structures are nothing different. They are like the bookshelves of your application where you...

2019-11-21 11:38:44 3702

转载 Spring boot cacheable源码及默认配置

一. Spring boot cache原理第一步. 自动配置类​自动启动类:CacheAutoConfiguration 属性配置:CacheProperties 主启动类添加:@EnableCaching注解cache POM添加:<dependency><groupId>org.springframework.boot</group...

2019-11-20 11:36:35 4182

原创 Spring Boot Cacheable的默认实现

StackOverFlow上有一个问题https://stackoverflow.com/questions/37780249/spring-boot-cachable-cache-size,提问者使用了Spring Boot的@EnableCaching和@Cacheable注解,想自行设置cacheable缓存的默认最大容量。public interface VendorReposito...

2019-11-18 21:07:04 7201 1

转载 Spring之缓存注解@Cacheable

实操项目中引用:value:该缓存的方法名称,cacheName也可以使用value key:缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合 unless:当方法返回空值时,就不会被缓存起来,决定是否要否定方法缓存,可以用来做条件判断 scf_company:结合redis,配置在redis的配置文件里当调用这个方法的时候,...

2019-11-18 16:39:30 11988 1

转载 SpringBoot 自定义参数校验

作者附:可以看JBOSS官方文档:https://docs.jboss.org/hibernate/validator/4.2/reference/zh-CN/html/validator-customconstraints.html#validator-customconstraints简单校验在后端开发的过程中,验证前端参数的合法性是一个必不可少的步骤。但是参数验证会产生大量的样板代码...

2019-11-18 15:36:53 3548

原创 MySQL索引的更新策略

对于数据的每一次更新,MySQL并不会每次都会更新索引(针对非唯一性索引而言),索引的更新策略是这样的:在InnoDB中,增删改都会立刻修改主键or唯一索引,但是不会rebuild全局索引,而是对这些索引增加值(或移除值)。对于非唯一性索引,InnoDB会进行change buffering操作。将更改排入队列,之后再在后台将其合并到索引中。甚至,为了后续物理更新更加高效,会将变更进行合并。...

2019-11-13 19:42:54 10567

原创 Spring注解执行的默认顺序

对于同一个方法,上面加了n个注解,如下所示。@AnnotationOne@AnnotationTwopublic void test() { ………………………………}如果,不加order来强制表示顺序的话,这2个注解执行的默认顺序是什么样子的呢?经查阅Spring官方文档https://docs.spring.io/spring/docs/current/spring-...

2019-11-13 16:05:49 12248 2

转载 MySql数据库-58沈剑 架构师之路

最近在看 “58沈剑 架构师之路”的公众号,写的非常简练,干货很多。但里面也充斥了很多广告和管理类的文章,本文主要是对里面的数据库文章做一个汇总:InnoDB,5项最佳实践,知其所以然?InnoDB行锁,如何锁住一条不存在的记录?InnoDB并发如此高,原因竟然在这?InnoDB,能将数据存储在DVD里?挖坑,InnoDB的七种锁插入InnoDB自增列,居然是表锁?In...

2019-11-11 16:54:33 2813

原创 对含有null的List进行findAny会报Null Pointer错误

做了一个实验:List<String> list = new ArrayList<String>();list.add(null); list.add(null);Optional<String> result = list.stream().findAny();运行上面的代码会报错:因为:findAnyOptional<...

2019-10-29 21:40:33 3542

原创 Java8中findAny和findFirst的区别

试验了一下java stream中的findAny和findFirst,发现都返回了列表中的第一个元素。那么,这两种方法的区别是什么呢?查看了一下Java API document:findFirst:findFirstOptional<T>findFirst()Returns anOptionaldescribing the first element ...

2019-10-29 20:44:38 89122 6

原创 Java的DateTimeFormatter/SimpleDateFormat如何转义特殊字符

对于JAVA中的 DateTimeFormatter,或者主要是为了日期能够格式化地生成字符串,比如可以使用 yyyy-MM-dd HH:mm:ss 来生成 2019-10-16 21:00:16 这种格式的字符串。这里有一个需求,希望生成[2019-10-16 21:00:16] 这种字符串。可以看到它的左右两边多了中括号,而此时,我如果使用public static void ma...

2019-10-21 21:39:14 5434

原创 1元,5元,10元,20元,50元、100元面值人民币组合给定x元的问题

问题描述目前市面上的纸币主要有1元,5元,10元,20元,50元、100元六种,如果要买一件商品x元,有多少种货币组成方式?解答我们先进行如下变量的定义:dp[i][sum] = 用前 i 种硬币构成sum金额的所有组合数。那么题目的问题实际上就是求dp[m][sum],即用前m种硬币(所有硬币)构成sum的所有组合数。V0=1,V1=5,V2=10,V3=20……...

2019-09-20 22:46:51 8973

转载 为什么String的hashCode选择 31 作为乘子

本文转载自田小波的https://www.tianxiaobo.com/2018/01/18/String-hashCode-方法为什么选择数字31作为乘子/某天,我在写代码的时候,无意中点开了 String hashCode 方法。然后大致看了一下 hashCode 的实现,发现并不是很复杂。但是我从源码中发现了一个奇怪的数字,也就是本文的主角31。这个数字居然不是用常量声明的,所以没法从字...

2019-09-20 22:07:47 3275

原创 慎用HashCode作为Unique Key

处理数据的过程中,希望对数据进行groupBy操作。举个例子,data的组成是<month, baseId, amount>。数据A = <"2019-03","195",100>数据B = <"2019-04","185", 200>数据C =<"2019-03","195", 300>数据D=<"2019-04","...

2019-09-03 20:33:11 3850

原创 mysql left join之后的行数有可能与左表的行数不同

首先,谈一下left join时,放在 on 后面的条件与放在 where 后面的条件有什么不同:on是在生成连接表的起作用,where是生成连接表之后对连接表再进行过滤:当使用left join时,无论on的条件是否满足,都会返回左表的所有记录,对于满足的条件的记录,两个表对应的记录会连接起来,对于不满足条件的记录,那右表字段全部是null;当使用right join时,类似,只不...

2019-08-17 18:51:48 12254 3

转载 谈一谈神奇的ShadowDOM

这两天看《webkit技术内幕》发现了一些神奇的东西,其中之一就是ShadowDOM,学web开发也有两年多时间了,居然一直不知道还有一个ShadowDOM……惭愧惭愧言归正传,ShadowDOM到底是个什么鬼呢?引入ShadowDOM主要解决一个文档中可能需要大量交互的多个DOM树建立和维护各自功能边界的问题那么这段话到底是什么意思呢…举一个常见的例子,先看下面一系列图,...

2019-03-29 12:02:23 437

转载 输入流InputStream的reset()和mark()方法

今天写一个读写程序,运用到InputStream的reset方法是发现竟然失败了,然后查了一下JDK源码,发现BufferInputStream重写了父类FilterInputStream的mark和resetf方法,其有支持 mark 和 reset 方法的能力。而FileInputStream则没有重写父类InputStream的这两个方法,其不具有mark和reset方法的能力...

2019-03-25 15:16:03 4568

转载 mybatis报错:Error querying database. Cause: java.lang.NumberFormatException: For input string: xx

这是由于mybatis参数格式化异常导致,例如在动态sql拼接中String类型参数和数字比较。&lt;if test="param.xxx!= '2'"&gt;其中xxx为String类型,加单引号是无法解决的,比如:param.xxx!= 'Y',此时,mybatis认为拿一个字符串(String)和一个字符(char)比较,也会报错。因此,有几种方法可以解决此问题:解决方法...

2019-03-15 20:12:51 9442 2

原创 Java将数组用固定分隔符拼接成字符串

比如有一个数组是 String[] array = [ 'a', 'b', 'c' ],我希望把该数组中每个元素直接用 ' - ' 来拼接,得到 ”a-b-c",那么应该如何实现呢?最传统的办法就是:String result = array.get(0);for(int i = 1; i &lt; array.size(); i++) { result = result + ...

2019-01-12 15:40:36 52498 1

原创 阿里云OSS读取文件时报错:java.lang.ClassNotFoundException: org.jdom.input.JDOMParseException

在使用阿里云OSS读取文件时,报错:java.lang.ClassNotFoundException: org.jdom.input.JDOMParseException原因是 没有引入jdom。工程缺少OSS Java SDK编译或运行必须的包。解决方案:在maven里加上&lt;!-- https://mvnrepository.com/artifact/org.jdom/jdo...

2019-01-03 19:29:28 10708

原创 java无法trim()去除中文全角空白符

 Java对于中文全角空格,即unicode为12288的字符,trim()函数无法去除。 那么如何去除呢?去除方法如下:str = str.replace((char)12288, ' ');str = str.trim();即先将 中文全角空格 全部替换为 普通空格,再进行 trim() 操作。...

2018-12-30 13:26:15 5731

转载 使用Lombok @Builder注解导致默认值无效

@Builder注解导致默认值无效使用Lombok注解可以极高的简化代码量,比较好用的注解除了@Data之外,还有@Builder这个注解,它可以让你很方便的使用builder模式构建对象,但是今天发现@Builder注解会把对象的默认值清掉。像下面这段代码,会导致对象的name属性变为null:public class BuilderTest {    @lombok.Bui...

2018-12-30 13:15:23 5046

原创 MySQL判断字段是否为null

不能用 '!=','=','&lt;&gt;' 来判断,虽然不会报错,但是并不会得到想要的结果。正确方法:使用 is not null 或 is null 此外, null 值和 ' ' 是有区别的。可以看看大神的分析:https://segmentfault.com/a/1190000009540449相信很多用了MySQL很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑...

2018-12-30 13:08:35 34847

转载 smartsvn9破解及license文件

smartsvn9破解及license文件第一步:去官网下载自己系统smartsvn版本文件下载地址:http://www.smartsvn.com/download第二步:破解(1) 将文件解压到系统路径:/opt/smartsvn(2) 打开smartsvn,选中license注册(3)注册时,选中文件smartsvn.license,下一步下一步就ok了 sm...

2018-11-13 15:49:38 2030

原创 MyBatis批量插入几千条数据慎用foreach

    近日,项目中有一个耗时较长的Job存在CPU占用过高的问题,经排查发现,主要时间消耗在往MyBatis中批量插入数据。mapper configuration是用foreach循环做的,差不多是这样。(由于项目保密,以下代码均为自己手写的demo代码)&lt;insert id="batchInsert" parameterType="java.util.List"&gt; ...

2018-10-19 11:35:02 49788 26

原创 MySQL的bug:子查询中使用rand(),上层查询中rand()的值被重算

  在使用mysql的过程中,发现了一个神奇的bug。  mysql语句如下:select random_val from (select floor(rand()*10) as random_val from Test) b where b.random_val &lt;3;  其中,Test表是个无关轻重的表(毕竟并没有从里面取数据,只是得到的结果跟Test内的数据条数有关),...

2018-09-29 17:48:46 1568 3

原创 IOUtils.closeQuietly:在finally中关闭流时不需要再catch一遍IOException

在使用 stream 的时,往往要 try catch IOException。eric教导我要把流的关闭放到 finally 中去写,并且在 close 之前要判断一下是否为 null。但是 stream.close() 也会 throw IOException,这就导致在 finally 中 也需要 try catch 一下,于是代码就很长。如下: byte[] data = new b...

2018-09-07 17:40:23 20064

原创 Java 7新特性:try后面的圆括号能够自动关闭资源

在导师的 previewTemplate 代码中看到,try后面跟了一个圆括号,里面申明了一个 InputStream input,当时并不明白为什么要放在圆括号里,不直接放在 {} 里,直到最近自己开始写 batchDownload,才明白其中的原因。1 自动关闭资源介绍Java 7增强了try语句的功能——它允许在try关键字后跟一对圆括号,圆括号可以声明,初始化一个或多个资源,此处的...

2018-09-07 17:10:59 3116

转载 Java程序员的日常—— IOUtils总结

以前写文件的复制很麻烦,需要各种输入流,然后读取line,输出到输出流...其实apache.commons.io里面提供了输入流输出流的常用工具方法,非常方便。下面就结合源码,看看IOUTils都有什么用处吧! 代码参考https://github.com/xinghalo/JDK-Learning常用的静态变量在IOUtils中还是有很多常用的一些变量的,比如换行符等等pub...

2018-09-07 16:42:11 2027

原创 java写入CSV文件后Excel打开乱码的问题

使用java写入csv文件,并且文件编码也设成了“UTF-8”:File file = new File("a.csv");OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file),"UTF-8");BufferedWriter bw = new BufferedWriter(osw);bw.w...

2018-09-06 19:16:49 7566

转载 使用linux命令删除X天前的文件

转载自: https://www.vionblog.com/linux-delete-files-older-than-x-days/This is a very simple tutorial how to find and delete files older than X days. I needed this for a project where i collected some i...

2018-09-06 12:13:52 2088

转载 ConcurrentHashMap在JDK1.7和1.8中的不同实现

知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。ConcurrentHashMap在多线程环境下,使用HashMap进行put操作时存在丢失数据的情况,为了避免这种bug的隐患,强烈建议使用ConcurrentHashMap代替HashMap,为了对ConcurrentHashMap有更深入的了解,本文将对ConcurrentHashMap1.7和1.8的不同实现进行分析。...

2018-08-19 13:43:19 831

转载 多线程 ForkJoinPool 详解

背景:ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个“小任务”,把多个“小任务”放到多个处理器核心上并行执行;当多个“小任务”执行完成之后,再将这些执行结果合并起来即可。这种思想值得学习。使用Java7 提供了ForkJoinPool来支持将一个任务拆分成多个“小任务”并行计算,再把多个“小任务”的结果合并成总的计算结果。ForkJoi...

2018-08-19 13:36:41 5071 2

转载 MySQL并发时经典常见的死锁原因及解决方法

1.    mysql都有什么锁MySQL有三种锁的级别:页级、表级、行级。表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般算法:next KeyLocks锁,同...

2018-08-19 13:31:18 754

转载 Mysql中update后insert造成死锁的分析

问题描述sql如下:START TRANSACTION;UPDATE table_a SET ... WHERE id = x ;IF(ROW_COUNT() = 0) THEN INSERT INTO table_a id VALUES x;END IF; COMMIT;其中id为主键。平均一天有不到10次的死锁。排查过程首先查看程序日志,发现死锁都只有新...

2018-08-19 11:14:37 5254

FormatDatalibsvm.xls(libSVM的数据格式转换工具)

这个工具能够生成libsvm数据,直观简单,效率高,方便易行。其实只是利用了excel的宏。

2018-01-09

[数学建模方法与分析].(新西兰)Mark.M.Meerschaert.清晰PDF版

本书系统介绍数学建模的理论及应用,作者将数学建模的过程归结为五个步骤(即“五步方法”),并贯穿全书各类问题的分析和讨论中.阐述了如何使用数学模型来解决实际问题.提出了在组建数学模型并且进行分析得到结论之后如何进行模型的灵敏性和稳健性的分析.将数学建模方法与计算机使用密切结合,不仅通过对每个问题的讨论给予很好的示范,而且配备了大量的习题训练。本书适合作为高等院校相关课程的教材和参考书,也可供参加国内外数学建模竞赛的人员参考,以及数学应用相关的专业人员参考。

2017-09-15

mac Sublime Text3官方网站下载(附注册码)

mac Sublime Text3官方网站下载(附注册码)

2016-11-16

有名的combobox下拉框插件压缩后的js版本

combobox下拉框插件,具体的api可见combobox官网,主要特色是很方便地进行级联选择,这里是js压缩后的版本,使用时之间放入html即可,更加轻巧可用。

2016-09-23

select2插件

非常好用的下拉框插件,支持级联选择,加图片等等。。。

2016-09-23

一个非常好用的下拉框插件

一个非常好用的下拉框插件

2016-09-23

好用的combobox下拉框

好用的combobox下拉框

2016-09-22

空空如也

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

TA关注的人

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