摘要:
一、前言 在日常业务开发中经常有这样一个场景,首先创建一条记录,然后插入到数据库,如果数据库已经存在同一主键的记录,执行update操作;否则,执行insert操作。这个操作可以在业务层做,也可以在数据库层面做。业务层一般做法是先查询,如果不存在就插入,如果存在就更新;但是查询和插入不是原子性操作, 阅读全文
摘要:
本文介绍Java中,有状态和无状态对象的区别。 阅读全文
摘要:
如何优雅地删除Redis set集合中前缀相同的key? Redis中有删除单条数据的命令DEL,却没有批量删除特定前缀key的指令,但我们经常遇到需要根据前缀来删除的业务场景,那么究竟该怎么做呢?可能你一通搜索后会得到下边的答案: redis-cli --raw keys "prefix-*" | 阅读全文
摘要:
关于java的for循环想必大家非常熟悉,它是java常用的语句之一。for循环是最灵活也是最常用的循环结构,表达式一般如下: for(表达式1;表达式2;表达式4){ 表达式3; } 执行顺序: 1)首次循环,即参数初始化循环 首先,执行表达式1,一般为定义并且初始化一个循环变量; 然后,执行表达 阅读全文
摘要:
在做数据初始化的时候,由于需要修改满足条件的全部订单的状态,因此,想使用group_concat函数提取满足条件的所有订单id,以方便写回滚脚本。测试数据取自表test1,表结构和相关 insert 脚本见《常用SQL之日期格式化和查询重复数据》。 使用方法 select t.`name`,grou 阅读全文
摘要:
在MySQL, 取分组后每组的最新记录。 阅读全文
摘要:
下面以查询每门课程分数最高的学生以及成绩为例,演示如何查询 top N记录。下图是测试数据,表结构和相关 insert 脚本见《常用SQL之日期格式化和查询重复数据》。 使用自连接【推荐】 select a.name,a.course,a.score from test1 a, (select co 阅读全文
摘要:
本文介绍常用日期格式化和查询重复数据的SQL。 阅读全文
摘要:
概述 ThreadLocal是一个本地线程副本变量工具类,很多地方称作线程本地变量,也有些地方称作线程本地存储。其原理就是为每个线程都提供一个副本变量,使得这些变量是线程级别的、私有的变量。所以对于不同的线程,每次获取副本值时,别的线程并不能获取到当前线程的副本值,形成了对副本的隔离,使得各个线程之 阅读全文