探讨 MySQL 事务隔离原理

数据库的事务一共有四个特性:

  1. 原子性:代表事务是一个动作,要么同时成功,要么同时失败
  2. 一致性:事务开始和结束数据完整性没有发生破坏
  3. 隔离性:两个事务动作相互独立,不受干扰
  4. 持久性:事务完成后,能够保存到数据库。

那 MySQL 是如何保证这个四个特性的呢?

为了弄明白这几个特性,我们需要先看下事务的隔离级别。

阅读更多

202期比赛题目解法

5489. 两球之间的磁力

在代号为 C-137 的地球上,Rick 发现如果他将两个球放在他新发明的篮子里,它们之间会形成特殊形式的磁力。Rick 有 n 个空的篮子,第 i 个篮子的位置在 position[i] ,Morty 想把 m 个球放到这些篮子里,使得任意两球间 最小磁力 最大。

已知两个球如果分别位于 xy ,那么它们之间的磁力为 |x - y|

给你一个整数数组 position 和一个整数 m ,请你返回最大化的最小磁力。

阅读更多

博客升级

为什么又要折腾?

  1. 原来的博客用的是 Jekyll 搭建的,jekyll 是基于 ruby 开发的。现在的 ruby 维护太少了,我碰到的问题,一直没有很好的解决方案

  2. 老版本不支持 golang 语言的高亮,即使换了 highlightjs 的版本也不行,后续很多博客都无法更新

  3. 觊觎 next 主题有一段时间了,也想换成 netx 主题。

  4. 耗费了半天时间,踩了不少坑。还有很多优化,没有时间弄,后续再不上

以后博客这东西 还是少折腾。

字节码判断方法参数的个数

Jvm 如何确定方法的参数的个数

找到 Method 的 DescriptionIndex 的属性,找到对应的描述,例如:

1
2
3
4
5
6
7
8
9
10
11
public class AddMain {
public static void main(String[] args) {

int c = add(100,200);
System.out.println(c);
}

private static int add(int a, int b) {
return a + b;
}
}

这个例子中的 java 代码,add 方法对应的代码是 (II)I,最后一个 I 代表返回值,这个代表两个整型的参数.

1
2
3
private static int add(int a, int b,String c,boolean d) {
return a + b;
}

​ 同样,(IILjava/lang/String;Z)I 代表有4个参数,字符串的表示是:Ljava/lang/String;,解析比较特殊。

手写一个简单的JVM--01. 解析Class文件

java的运行过程

在运行一段 java 代码的时候需要经过编译,验证,加载运行,具体如下图:

运行过程

对于 Java 源码变成字节码的编译过程,我们暂且跳过不讨论。

想弄清楚 java 代码的运行原理,其实本质就是 java 字节码如何被 jvm 执行。

阅读更多

JVM指令的速记

在学习的JVM的时候,最重要的是认识JVM的指令,JVM指令很多,为了方便记忆,可以根据前缀和功能进行分类:

例如:nop指令代表是一个空指令,JVM收到指令后,什么都不用做,等待下一个指令。

阅读更多

设计模式---05.访问者模式

访问者模式

访问者模式是一种对象和对象的访问者分开的一种设计模式,在一个对象稳定的情况下,使用访问者模式可以更好的扩展对数据的访问。 相当于是我们在对象里面安插了一个“眼”,这个眼能够被外面实现,然后能拿到当前对象的各个属性。

阅读更多

一个秒杀系统的设计

一直想写一个秒杀系统的设计,网上有烂大街的教程,虽然有的写得很不错,但是还是自己设计的来的清楚,基本思路就是拦截+负载+缓存+异步,流程如下(文字改天补上):

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×