我创造了一门新的学科:认知数学。数学是思维的工具,有了这个利器在手中,对我的学习非常有帮助,能让我快速的学习知识。知识分为获取知识,内化成习惯两大步骤。算下来我学习了很多科目,每年学习上千个知识点,经过长年累月的思考和实践,才算对数学影响思维有真正的认识,最终形成了认知数学。如何最高效的去学习技术?我对这个话题研究挺深,看过很多书,我觉得不应是理论介绍...

1 概述Mybatis插件又称拦截器,Mybatis采用责任链模式,通过动态代理组织多个插件(拦截器),通过这些插件可以改变Mybatis的默认行为(诸如SQL重写之类的),MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, f...

MyBatis 注解( annotation)之前文章介绍了MyBatis的基本用法、关联映射、动态SQL和缓存机制等知识,其所有的配置都是使用XML完成,但是大量的XML配置文件的编写是非常繁琐的,因此MyBatis也提供了更加简便的基于注解( annotation)的配置方式。MyBatis 常用注解本文将重点介绍MyBatis的注解配置,MyBa...

一级缓存Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,MyBatis会将其放在缓存中,以后再查询的时候,如果没有声...

Redis 中的字符串是可以修改的字符串,在内存中它是以字节数组的形式存在的。我们知道 C 语言里面的字符串标准形式是以 NULL 作为结束符,但是在 Redis 里面字符串不是这么表示的。因为要获取 NULL 结尾的字符串的长度使用的是 strlen 标准库函数,这个函数的算法复杂度是 O(n),它需要对字节数组进行遍历扫描,作为单线程的 Redis...

说明:本考题来源于群内成员的讨论,有启发意义,特此编写成文发出来,有助于大家加深对数据库底层的理解。问题:Java客户端中的一个Connection是不是在MySQL中就对应一个线程来处理这个链接呢?答案:不是。凡是从线程思考问题的人,一般都是被Java技术的多线程思想所禁锢了,其实在高性能服务器端端开发底层往往靠io复用来处理,这种模式就是:单线程+...

问题:数据库插入百万级数据的时候,还没操作完,但是把服务器重启了,数据库会继续执行吗? 还是直接回滚了?答案:不会自动继续执行,不会自动直接回滚,但是可以人工手动选择继续执行或者直接回滚,依据是事务日志。事务开启时,事务中的操作,都会先写入存储引擎的日志缓冲中,在事务提交之前,这些缓冲的日志都需要提前刷新到磁盘上持久化,这就是人们口中常说的“日志先行”...

Redis 有 5 种基础数据结构,分别为:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合)。熟练掌握这 5 种基本数据结构的使用是 Redis 知识最基础也最重要的部分,它也是在 Redis 面试题中问到最多的内容。本节将带领 Redis 初学者快速通关这 5 种基本数据结构。考虑到 Re...

备注:本文修订于2022年11月19日,其主要思路是将redis当锁来使用。问题:在开发过程中,经常遇到插入重复的现象,这种情况该如何解决呢?答案:插入的过程一般都是分两步的:先判断是否存在记录,没有存在则插入否则不插入。如果存在并发操作,那么同时进行了第一步,然后大家都发现没有记录,最后在第二步的时候都插入了数据从而造成数据的重复。下面场景,假设同时...

Redis 是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母缩写,也就是「远程字典服务」。Redis 以其超高的性能、完美的文档、简洁易懂的源码和丰富的客户端库支持在开源中间件领域广受好评。国内外很多大型互联网公司都在使用 Redis,比如 Twitter、YouPorn、暴雪娱乐、Githu...

题目:我们知道,数据库的访问底层是通过tcp实现的,如果数据库链接中断,那么应用程序是不知道的,是探测不出的,那么程序会卡住,一直在等待,会等待吓人的几十分钟,这种情况会把人郁闷死,真不如及时来个弹框,告诉用户系统暂时无法使用,让用户离开呢。所以,面对数据库连接中断的异常,该怎么设置mybatis呢?答案:要想吃透这个问题,要明白链接中断产生的原因。这...

提示:本文修订于2022年11月19日经常碰到这样的面试题目:#{}和${}的区别是什么?正确的答案是:#{}是预编译处理,${}是字符串替换。备注:${}表示插值,关于“插值”的新认识请移步:http://www.mybatis.cn/archives/653.html(1)mybatis在处理#{}时,会将sql中的#{}替换为?号,调用Prepa...

本文更新日期:2019年10月28日地上一堆苹果,一堆香蕉,怎么把他们隔开呢?有多种方法。例如,可以按“堆”来隔开,这边放一堆苹果,那边放一堆香蕉。还有一种方式是:先放一个苹果,然后放一根香蕉,然后再放一个苹果,然后再放一根香蕉……。还有人可能会这样摆:先放两个苹果,然后放一根香蕉,然后再放两个苹果,然后再放一根香蕉……。如上所述,这就是不同的隔离程度...

本文更新日期:2019年10月28日讲完select,接下来说一下updata。闲言少叙,直接上正文。(1)如果数据库的隔离级别是读已提交(Read Committed),这是很多数据库默认的隔离级别。在这种情况下:如果事务要更新一条记录,而这条记录恰好被另一个运行中但未提交事务更改(被锁定或删除),则当前事务会阻塞,等待直到另一个事务提交或回滚后,再...

本文更新日期:2019年10月28日select语法非常简单,相信接触sql的人没有不知道的吧。但是,将select放在事务中,它的处理规则恐怕很多人都不能完全说清楚吧。本文就给大家说一下在事务处理中使用select应该注意的地方。(1)如果数据库的隔离级别是读已提交(Read Committed),这是很多数据库默认的隔离级别。在这种情况下:于当前事...

1、公开课的历史渊源每年站长都会开一次公开课,公开课的内容来源于【上一年下半年,当年上半年】这一年来的最大研究成果。2、2018年公开课的主要内容线程与并发杂谈3、2018年公开课的形式本次公开课以组群,现场通过语音软件来直播。

近期对网站进行了改版和优化,主要改动如下:(1)网站的链接进行了优化(2)网站的界面进行了优化,突出了重点,比之前更有层次。各位读者,如果你有更好的建议,请及时给我们反馈,谢谢!

1、MyBatis事务配置在MyBatis的配置文件中可以配置事务管理方式如下:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0/...

1、MyBatis事务介绍Mybatis管理事务是分为两种方式:(1)使用JDBC的事务管理机制,就是利用java.sql.Connection对象完成对事务的提交。(2)使用MANAGED的事务管理机制,此时MyBatis自身不会去实现事务管理,而是让程序的容器(JBOSS、WebLogic)来实现对事务的管理2、MyBatis Transactio...

备注:本文修订于2022年6月29日。1、MyBatis trim 标签Mybatis具有实现动态SQL的能力,但是在拼凑SQL语句的时候,稍有不注意则会画蛇添足,此时可以通过 trim 标签来进行修剪。trim 是“修剪”的意思,其基本格式如下:<trim prefix="" suffix="" suff...