数据库相关概念的学习 不可重复读 不能重复读是指在事务开始之后, 第一次读取的结果集和第二次读取的结果集不一致。 TRANSACTION1 TRANSACTIONS2 select * from p where id < 5 insert into p values (2) commit select * from p where id < 5 以上是作为一个正确的事务执行顺序, 如果TRANSACTION1两次执行了相同的SQL语句, 但是却获取了TRANSACTION2插入的结果。 这种主要是事务级…

18 4 月, 2021 0条评论 147点热度 0人点赞 专注着 阅读全文

Mysql难以优化引用可空列表查询, 它会使索引, 索引统计和值更加复杂。可空列需要更多的存储空间。还需要mysql内部进行特殊处理。可空列被索引后,每条记录都需要一个额外的字节,还能导致MyISAM中固定大小的索引编程可变大小的索引.

17 4 月, 2021 0条评论 138点热度 0人点赞 专注着 阅读全文

主要是总结线程间的通信方式有哪些. 通信方式 通过synchronized进行通信 public class MyObject {    synchronized public void methodA() {        //do something....   }    synchronized public void methodB() {        //do some other thing   } } ​ public class ThreadA extends Thread {    privat…

16 4 月, 2021 0条评论 212点热度 0人点赞 专注着 阅读全文

为什么String被设计为不可变类 保证String对象的安全性。假设String对象时可变的,那么String对象将可能被恶意修改 保证hash属性值不会频繁变更,确保了唯一性,使得类似HashMap容器才能实现响应的key-value缓存功能 可以实现字符串常量池。在Java中,通常两个创建字符串对象的方式, 通过字符串常量的方式创建String str = "abc" 字符串变量通过new形式的创建String str = new String("abc") new String("abc")方式创建Stri…

15 4 月, 2021 0条评论 150点热度 0人点赞 专注着 阅读全文

Switch查找case的方式 tableswitch: a table with keys and labels lookupswitch: uses a table with labels only(采用二分查找法) tableswitch 当使用tableswitch时,从stack中获取int值,并直接通过index获取需要跳转的label, 并且立即执行跳转操作。在整个lookup + jump进程中,时间复杂度为O(1) public static void testSwitch(String type…

15 4 月, 2021 0条评论 171点热度 0人点赞 专注着 阅读全文

GC Roots包含哪些(哪些可以作为gc roots) 所谓的GC roots 是垃圾搜集器特有的对象, 垃圾搜集器搜集哪些非GC root的对象并且无法通过GC roots引用直接访问的对象。 一个对象可以属于多个roots, GC roots有一下几种: Class 由系统类加载器加载的类, 永远不能回收这样的类(自定义的类加载器不是root, 除非响应的实例恰好是其他java.lang.Class的类型的root) Thread - 存活的线程 Stack Local - Java方法局部变量或者参数 JN…

15 4 月, 2021 0条评论 130点热度 0人点赞 专注着 阅读全文

Redis提供了SETBIT,GETBIT,BITCOUNT,BITOP四个命令用于处理二进制位数组. 其中, SETBIT命令用于为位数组指定偏移量上的二进制设置值, 位数组的偏移量从0开始计数, 而二进制位的值则可以是0或者1。 GETBIT命令则用于获取位数组指定偏移量上的二进制位的值. BIGCOUNT命令用于统计维数组里面, 值为1的二进制位的数量. BITOP命令既可以对多个位数组进行按位与(and),按位或(or),按位异或(xor),取反操作(not)运算 位数组的表示 Redis使用字符串对象来表…

14 4 月, 2021 0条评论 198点热度 0人点赞 专注着 阅读全文

发布与订阅 Redis的发布与订阅命令由PUBLISH,SUBSCRIBE,PSUBSCRIBE等命令组成。 通过执行SUBSCRIBE命令, 客户端可以订阅一个或多个频道, 从而成为这些频道的订阅者: 每当有其他客户端向被订阅的频道发送消息时, 频道的所有订阅者都会收到这条消息。 除了订阅频道之外, 客户端还可以通过执行PSUBSCRIBE命令订阅一个或多个模式, 从而成为这些模式的订阅者: 每当有其他客户端向某个频道发送消息时, 消息不仅会被发送给这个频道的所有订阅者, 它还会被发送给所有与这个频道相匹配的模式…

13 4 月, 2021 0条评论 157点热度 0人点赞 专注着 阅读全文

Redis慢查询日志功能用于记录执行时间超过给定时长的命令请求, 用户可以通过这个功能产生的日志来监视和优化查询速度。 相关配置参数 slowlog-log-slower-than选项指定执行时间超过多少微秒(1秒等于1000000微秒)的请求会被记录到日志上面 slowlog-max-len选项指定服务器最多保存多少条慢查询日志 保存日志方式 服务器使用先进先出的方式保存多条慢查询日志, 当服务器存储的慢查询日志数量等于slowlog-max-len选项的值时, 服务器在添加一条新的慢查询日志之前, 会先将最旧的…

12 4 月, 2021 0条评论 178点热度 0人点赞 专注着 阅读全文

数据库锁 什么是锁? 数据库锁是用于对公共资源的并发访问。是为了保证数据的并发性和一致性 锁类型 共享锁(S Lock): 允许事务读取一行数据 排它锁(X Lock): 允许事务更新或者删除一条数据 意向排它锁(IS Lock): 事务想要获取一个表中某几行的排它锁 意向共享锁(XS Lock): 事务想要获取一个表中某几行的共享锁 锁兼容 如果一个事务获得了行R的共享锁, 那么另外一个事务可以立即获得行R的共享锁。 锁不兼容 如果事务想获取行R的排他锁,则必须等待事务释放行R上的共享锁。 排它锁和共享锁的兼容性…

11 4 月, 2021 0条评论 215点热度 0人点赞 专注着 阅读全文