聊聊MyBatis缓存机制

前言MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在的隐患。个人在业务开发中也处理过一些由于MyBatis缓存引发的开发问题,带着个人的兴趣,希望从应用及源码的角度为读者梳理MyBatis缓存机制。本次分析中涉及到的代码和数据库表均放在GitHub上,地址: mybatis-cache-demo 。目录本文按照以下顺序展开。一级缓存介绍及相关配置。一级...阅读全文

美团技术团队 2018-01-19 00:00 美团技术团队

mybatis-自定义缓存-redis二级缓存 - 寻找风口的猪

在mybatis一级缓存二级缓存中已经介绍过了二级缓存的大致原理。下面我们用redis来实现一下二级缓存。环境是springmvc+mybatis+redis 步骤一、引入redis相关的maven依赖 <!-- spring-redis实现 --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.6.2.RELEASE</...阅读全文

博客园 2017-11-11 09:48 博客园

淘宝分布式NOSQL框架:Tair - 如果的事

Tair 分布式K-V存储方案   tair 是淘宝的一个开源项目,它是一个分布式的key/value结构数据的解决方案。 作为一个分布式系统,Tair由一个中心控制节点(config server)和一系列的服务节点(data server)组成, config server 负责管理所有的data server,并维护data server的状态信息;为了保证高可用(High Available),config server可通过hearbeat 以一主一备形式提供服务; data serv...阅读全文

博客园 2015-10-14 11:37 博客园

Python一键转Jar包,Java调用Python新姿势! - 轩辕之风

粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我_),今天这篇文章换换口味,正经的来写写技术文。言归正传,咱们开始吧! 本文结构: - 需求背景 - 进击的 Python - Java 和 Python - 给 Python 加速 - 寻找方向 - Jython? - Python->Native 代码 - 整体思路 - 实际动手 - 自动化 - 关键问题 - import 的问题 - Python GIL 问题 - 测试效果 - 总结 需求背景 进击的 Python 随着人工智能...阅读全文

博客园 2020-03-10 09:39 博客园

进程同步 进程互斥 软件和硬件实现方式 信号量机制 信号量机制实现进程同步,进程互斥,前驱关系

参考:https://www.bilibili.com/video/av31584226/?p=9 进程具有异步性的特征,异步性是指,各并发执行的进程以各自独立的,不可预知的速度向前推进。回忆我们之前学习进程通信的时候的管道通信方式,如下图:当时的一个特点就是:写进程必须把管道写满之后,读进程才能从管道中读取数据。读进程和写进程并发地运行,由于并发必然导致异步性,因此“写数据”和“读数据”两个操作执行的先后顺序是不确定的。而实际应用中,又必须按照“写数据”->“读数据”的顺序来执行。如何解决这种...阅读全文

Linux 中软链接和硬链接的区别 | Linux 中国

链接(Link)是一种快捷访问机制,它通过一个文件指向原始文件或目录的方式实现快捷访问,同时还记录了原始文件或目录的一些信息。来源:https://linux.cn/article-12270-1.html作者:Magesh Maruthamuthu译者:Hank Chow链接(Link)是一种快捷访问机制,它通过一个文件指向原始文件或目录的方式实现快捷访问,同时还记录了原始文件或目录的一些信息。链接允许多个不同文件对同一个文件进行引用。什么是软链接符号链接(Symbolic Link)(sym...阅读全文

mybatis中用tinyint保存Boolean类型_xue317378914的专栏

一、boolean类型 MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyint(1), MySQL里有四个常量:true,false,TRUE,FALSE,它们分别代表1,0,1,0, mysql> select true,false,TRUE,FALSE; +------+-------+------+-------+ | TRUE | FALSE | TRUE | FALSE | +------+-------+------+-...阅读全文

CSDN博客 2019-08-27 11:26 CSDN博客

一口气说出 6种 @Transactional 注解失效场景_HollisChuang's Blog

引言 昨天公众号粉丝咨询了一个问题,说自己之前面试被问@Transactional注解哪些场景下会失效,一时语塞致使面试失败。所以今天简单的和大家分享一下@Transactional相关的知识。 @Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功、要么同时失败。使用@Transactional注解时需要注意许多的细节,不然你会发现@Transactional总是莫名其妙的就失效了。 一、事务 事务管理在系统开发中是不可缺少的一...阅读全文

CSDN博客 2020-04-14 08:36 CSDN博客

spring中的@Transactional注解使用注意点_徐靖峰的专栏

@Transactional可以说是spring中最常用的注解之一了,通常情况下我们在需要对一个service方法添加事务时,加上这个注解,如果发生unchecked exception,就会发生rollback,最典型的例子如下。 @Service public class StudentService { @Autowired StudentDao studentDao; @Transactional public void innerSave(int i) { Student studen...阅读全文

CSDN博客 2017-02-14 16:51 CSDN博客

页 页表 页表项_WaneGi没有故事

五一假期前落下了几节操作系统的课,现在艰难的恶补中。。 以下是分页存储管理相关的一些知识点梳理。   首先我们应该知道的概念: 逻辑地址:是程序编译后,生成的目标模块进行编址时都是从0号开始编址,称之为目标模块的相对地址,即逻辑地址。 虚拟地址:计算机处理器的地址有32位和64位的两种,对应的虚拟地址的空间大小分别是2^32字节和2^64字节,字节用B表示。 页:分页存储管理将进程的逻辑地址空间划分为若干页(面),并且对其编号,号数从0开始,每个页(面)的大小称为页面大小,且大小应为2的幂。 物...阅读全文

CSDN博客 2018-05-12 15:06 CSDN博客

在(分区…在mysql 5.7中)转换rank() | 码农俱乐部 - Golang中国

首先,请注意一些有关原始查询的注意事项: it is not valid SQL; you have an aggregate function in the select clause (max(t.hour)), but no group by clause the order by clause of rank() is not optimized: it starts with columns that are part of the partition by clause, which...阅读全文

Go语言中文社区 2020-04-19 05:35 Go语言中文社区

计算机浮点运算精度问题的一些探讨_薛梦冉

本篇博客要点如下: 浮点运算常见的一些精度问题 浮点运算精度问题产生的原因 浮点运算精度问题的几点疑问进制的相互转换 十进制和二进制整数转换十进制和二进制小数转换 浮点数据的存储 IEEE 754标准浮点数表示举例误差分析 浮点精度丢失问题的几种解决方案 转换成整型进行计算使用四舍五入计算使用Decimal函数计算 参考资料 浮点运算常见的一些精度问题 相信各位在进行浮点型数据运算的时候,出现过一些不符合常规认知,或者是我们不愿出现的结果, 比如下面这些示例(以MongoDB,Java,Pyth...阅读全文

CSDN博客 2020-03-16 17:04 CSDN博客

Java的BigDecimal如何解决浮点数精度问题_Just for Fun LA

如题,今天我们来看下java.math.BigDecimal是如何解决浮点数的精度问题的,在那之前当然得先了解下浮点数精度问题是什么问题了。下面我们先从IEEE 754说起。 IEEE 754 IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number)),一些特殊数值(无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它...阅读全文

CSDN博客 2015-02-16 00:30 CSDN博客

15. 浮点数算法:争议和限制 — Python tutorial 3.6.3 documentation

15. 浮点数算法:争议和限制¶ 浮点数在计算机中表达为二进制(binary)小数。例如:十进制小数: 0.125 是 1/10 + 2/100 + 5/1000 的值,同样二进制小数: 0.001 是 0/2 + 0/4 + 1/8。这两个数值相同。唯一的实质区别是第一个写为十进制小数记法,第二个是二进制。 不幸的是,大多数十进制小数不能完全用二进制小数表示。结果是,一般情况下,你输入的十进制浮点数仅由实际存储在计算机中的近似的二进制浮点数表示。 这个问题更早的时候首先在十进制中发现。考虑小数...阅读全文

www.pythondoc.com 2020-09-29 11:14 www.pythondoc.c 等

十进制的0.1 为什么不能用二进制很好的表示?_月夜归醉

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。 补码计算法定义:非负数的补码是其原码本身;负数的补码是其绝对值的原码最高位符号位不变,其它位取反,再加1。     正整数转二进制:  正整数转成二进制。要点一定...阅读全文

CSDN博客 2018-08-25 11:23 CSDN博客

为什么0.1无法被二进制小数精确表示? - 诺贝尔

这个问题困扰了我不少时间,最近有个比较清晰的认识,和大家分享。 这个问题首先要从数位表示法说起。今天我们看到的123这样的十进制数,是自然而然的理解其意义,但是有没有深究其内在的数学原理呢? 所谓十进制是0~9十个基本符号为基础的一种数字表示法,数位表示法是将一串基本符号从左到右连续排列的一种方法。为什么12时表示一十二,而不是二十一,或者是一加二的意思呢?因为数字所处的位置是有特别意义的,最右边第一个数字符号,代表基本的数0~9,而第二位的意义并不是0~9,而是0*10~9*10。推而广之,百...阅读全文

博客园 2013-04-08 23:27 博客园

EOF是什么?

我学习C语言的时候,遇到的一个问题就是EOF。 它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。 比如,下面这段代码就表示,如果不是文件结尾,就把文件的内容复制到屏幕上。   int c;   while ((c = fgetc(fp)) != EOF) {     putchar (c);   } 很自然地,我就以为,每个文件的结尾处,有一个叫做EOF的特殊字符,读取到这个字符,操作系统就认为文件...阅读全文

阮一峰的网络日志 2011-11-12 00:00 阮一峰的网络日志