June 24, 2018 读 MySQL 源码再看 INSERT 加锁流程 在之前的博客中,我写了一系列的文章,比较系统的学习了 MySQL 的事务、隔离级别、加锁流程以及死锁,我自认为对常见 SQL 语句的加锁原理已经掌握的足够了,但看到热心网友在评论中提出的一个问题,我还是彻底被问蒙了。...- 阅读剩余部分 -
May 26, 2018 最简单的一个 Spring Boot 项目 最近在项目中使用 Spring Boot,对它的简单易用印象很深刻。Spring Boot 最大的特点是它大大简化了传统 Spring 项目的配置,使用 Spring Boot 开发 Web 项目,几乎没有任何的 xml 配置。...- 阅读剩余部分 -
April 6, 2018 解决死锁之路(终结篇) - 再见死锁 在前面的几篇博客中,我们学习了事务,隔离级别,各种锁类型,以及各种 SQL 语句的加锁原理,这一系列的知识学习下来,断断续续,竟然已经过去了大半年的时间。随着对数据库原理的学习越来越深入,越发现一发不可收拾,这里面的水实在是太深了。这是这...- 阅读剩余部分 -
March 17, 2018 使用 Python + Selenium 破解滑块验证码 在前面一篇博客《使用 Python + Selenium 打造浏览器爬虫》中,我介绍了 Selenium 的基本用法和爬虫开发过程中经常使用的一些小技巧,利用这些写出一个浏览器爬虫已经完全没有问题了。看了前一篇博客,可能有人会...- 阅读剩余部分 -
February 26, 2018 使用 Python + Selenium 打造浏览器爬虫 Selenium 是一款强大的基于浏览器的开源自动化测试工具,最初由 Jason Huggins 于 2004 年在 ThoughtWorks 发起,它提供了一套简单易用的 API,模拟浏览器的各种操作,方便各种 Web 应用的自动化测试。...- 阅读剩余部分 -
January 14, 2018 记一个 white-space: nowrap 的坑 最近在工作中遇到了一个 white-space 和 float 组合时,CSS 样式在 Firefox 浏览器下不兼容的问题,特此记录一下。需求是做一个国家列表,类似于下面这样:需求很简单,任何一个 CSS 初学者应该都会做,我毫...- 阅读剩余部分 -
December 9, 2017 解决死锁之路 - 常见 SQL 语句的加锁分析 这篇博客将对一些常见的 SQL 语句进行加锁分析,看看我们平时执行的那些 SQL 都会加什么锁。只有对我们所写的 SQL 语句加锁过程了如指掌,才能在遇到死锁问题时倒推出是什么锁导致的问题。在前面的博客中我们已经学习了 MySQL 下不...- 阅读剩余部分 -
November 20, 2017 解决死锁之路 - 了解常见的锁类型 在上一篇博客中,我们学习了事务以及事务并发时可能遇到的问题,并介绍了四种不同的隔离级别来解决这些并发问题,在隔离级别的实现一节中,我们提到了锁的概念,锁是实现事务并发的关键。其实,锁的概念不仅仅出现在数据库中,在大多数的编程语言中也存在,譬...- 阅读剩余部分 -
October 15, 2017 解决死锁之路 - 学习事务与隔离级别 上个月在查看线上错误日志的时候,偶然发现了下面这样的异常,异常发生的次数并不是很多,但是可以看出几乎每天都有那么几次。看异常信息就知道是发生了数据库死锁,由于对这块不是很了解,加上这个异常对系统业务没有啥大的影响,所以就一直拖了一个月的时间...- 阅读剩余部分 -
September 10, 2017 学习 Java 的调试技术 在软件开发的过程中,可以说调试是一项基本技能。调试的英文单词为 debug ,顾名思义,就是去除 bug 的意思。俗话说的好,编程就是制造 bug 的过程,所以 debug 的重要性毋庸置疑,如果能熟练掌握调试技能,也就可以很快的定位出代码中的 bug。要...- 阅读剩余部分 -