- 博客(25)
- 收藏
- 关注
原创 数据库转译
在做历史数据迁移的时候发现了数据库会自动转译的问题页面显示原数据:数据库中:代码中:1\n2\n3\n4将老数据读取后重新拼装入库 数据库会多加一个\,页面就变成了最后执行下sql替换update table set content_major = replace(content_major, ‘\n’, ‘\n’)where id >0;.........
2022-07-05 10:49:56
928
原创 sequence解决oracle数据库主键不自增
工作这么多年。总算遇到一家数据库用oracle的企业了,由于oracle与mysql的不同,mysql设置了主键(id),那他就会实现自增,插入数据时,无需指定i的值,但是oracle却无法实现主键自增,解决方法:sequence(序列)使用序列完成自增(1)创建序列create sequence **MYBATIS** minvalue 1 --最小值 nomaxvalue --不设置最大值 start with 1 --从1开始计数 increment by 1 --每次加1个
2022-05-17 15:25:30
1063
转载 什么是数据字典
数据字典数据字典是一种通用的程序设计方法。可以认为,不论什么程序,都是为了处理一定的主体,这里的主体可能是人员、商品(超子)、网页、接口、数据库表、甚至需求分析等等。当主体有很多的属性,每种属性有很多的取值,而且属性的数量和属性取值的数量是不断变化的,特别是当这些数量的变化很快时,就应该考虑引入数据字典的设计方法。数据字典有两种形式一、把主体的属性代码化放入独立的表中,不是和主体放在一起,主体中只保留属性的代码。这里属性的数量是不变的,而属性取值的数量可以是变化的。二、用一个表来放结构相同的所有属性
2022-05-12 10:21:23
17351
2
原创 什么时候事务会不生效
1、确认是否数据库引擎设置不对,比如常用的MySQL的MyISAM是不支持事务操作的2、入口方法必须是public3、Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException及其子类)进行回滚4、启用注解事务管理@EnableTransactionManagement(新建的Spring Boot项目中,一般都会引用spring-boot-starter或者spring-boot-starter-web,这两个起步依赖中都已经包含了对于spring-boot-
2022-05-10 10:25:41
278
原创 乐观锁、悲观锁
悲观锁认为一定会发生线程安全问题,每次拿数据的时候都认为别人会修改,所以每次拿数据是都会上锁。传统的关系型数据库使用这种锁机制,比如行锁、表锁、读锁、写锁等,都是在操作之前先上锁。再比如Java 里面的同步 synchronized 关键字的实现也是悲观锁。悲观锁主要分为共享锁和排他锁:共享锁又称为读锁,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。排他锁又称为写锁,排他锁就是不能与其他锁并存,如果一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他
2022-04-08 16:30:00
76
原创 Mybatis一级、二级缓存
mybatis一级缓存:一级缓存是默认开启的,他是用来保存用户对数据库的操作和数据库返回的数据,结果会存入到 SqlSession为我们提供的一块区域中。该区域的结构是一个Map。如果下一次用户再执行相同的请求,那么直接从内存中读数数据而不是从数据库读取。这里要注意一个点,因为一级缓存是依赖于SqlSession对象的,当SqlSession对象消失时,Mybaits的一级缓存也就消失了。当Mybaits与Spring整合的时候,不带Spring事务的方法内,每次请求数据库,都会新建一个SqlSes
2022-04-06 20:04:43
2012
原创 索引总结1
执行计划explain列含义b+树分块读取->分而治之尽可能提高IO效率(1、减少IO量 2、减少IO次数)操作系统1、局部性原理时间:之前被访问过的数据很有可能再次被访问。空间:数据和程序都有聚集成群的倾向。2、磁盘预读 内存根磁盘在进行交互的时候有一个最小的逻辑单位,这个单位称之为页,或者datapage,一般是4k或者8k(分块读取),由操作系统决定,我们在进行数据读取的时候,一般会读取页得整数倍,也就是4k,8k,16k,innodb存储引擎在进行数据加载的时候读取
2022-03-21 15:27:04
426
原创 ThreadLocal内存泄露
什么是ThreadLocal## 标题ThreadLocal的作用主要是做数据隔离,填充的数据只属于当前线程,变量的数据对别的线程而言是相对隔离的,在多线程环境下,防止自己的变量被其它线程篡改。PS:spring的事务底层就是使用ThreadLocal进行的数据隔离,MySQL动态数据源切换也是使用的ThreadLocal…例如:小明去上班要先做公交车在做地铁,如果每次坐车都要排队买票(加锁🔐),那么时间效率很差。于是小明办理了一张通用的公交卡,公交车和地铁都可以刷。而小蓝小红也有这样的公交卡,它们的公
2022-03-11 11:24:06
571
原创 淘宝分布式 key/value 存储引擎Tair的使用
@Value("${cellar.area}") private short tairArea; private final TairClient.TairOption getOpt = new TairClient.TairOption(2000, (short) 0); private static final String LOCK_PREFIX = "lock";加锁 /** * tryLock 立刻返回 * * @param
2022-03-07 17:31:03
439
原创 Preconditions.checkArgument遇到的问题
我们在开发的时候谷歌的checkArgument方法,抛出异常信息 checkArgument(Objects.nonNull(dept), "获取部门信息异常!");底层代码: public static void checkArgument(boolean expression, @Nullable Object errorMessage) { if (!expression) { throw new IllegalArgumentExceptio
2022-01-21 11:03:09
1320
原创 不使用实体类注解的方式,给表头及正文单元格设置样式
由于最新的2.0.0-beta5版本将原来的Sheet类删除了,它的设置单元格格式方法setTableStyle及setColumnWidthMap方法也不能用,所以整理了一下方法。/** * 创建默认表头及内容格式 * @return HorizontalCellStyleStrategy */ private HorizontalCellStyleStrategy createDefaultStyle() { // 头的策略 Wr
2022-01-13 18:47:38
957
原创 EasyExcel 冻结固定表头 和搜索
添加一个类import com.alibaba.excel.write.handler.SheetWriteHandler;import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;import org.apache.poi.ss.usermodel.Sheet;import org.apache
2021-12-09 15:22:11
2185
原创 使用Guava retryer优雅的实现接口重调机制
private T executeWithRetry(Callable callable) throws ExecutionException, RetryException {return RetryerBuilder.newBuilder().retryIfExceptionOfType(TException.class)//遇到TException.retryIfRuntimeException()//遇到RuntimeException.retryIfResult(Collection
2021-11-05 16:01:18
262
原创 mysql in or in 一堆不走索引 优化
在查询时in一堆不走索引,且数据查询及慢SELECT * FROM table where (acceptor_id in(1,2, 3,4,5,)or propesstor_id in (1,2, 3,4,5,))in or in 300条数据查询耗时6s,改造SELECT *FROM (SELECT “1” cid UNION ALLSELECT “2” UNION ALLSELECT “3” UNION ALLSELECT “4” UNION ALLSELECT “5” UNIO
2021-10-22 19:21:26
812
原创 insert into、insert ignore into、insert into … on duplicate key update
insert into当插入数据时,如果唯一性校验出现重复问题,则报错;如果没有重复性问题,则执行插入操作。简单总结:重复则报错,不重复则插入。insert ignore into当插入数据时,如果唯一性校验出现重复问题,则忽略错误,只以警告形式返回,不执行此SQL语句;如果没有重复性问题,则执行插入操作。简单总结:重复则忽略,不重复则插入。insert into … on duplicate key update当插入数据时,如果唯一性校验出现重复问题,则在原有记录基础上,更新指定字段内
2021-09-14 11:02:23
179
1
原创 MultiKey唯一键的使用
public MultiKey multiKey(Po po){return new MultiKey<>(po.getId(),po.getName(),po.getRole());}根据id name role生产唯一键
2021-06-10 11:28:14
801
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人