MySQL事务隔离小记

大家都知道事务系统有四大特征:原子性、一致性、隔离性、持久性。隔离性是其中重要的一环,什么是隔离呢,顾名思义就是事务之间啥时候可见啥时候不可见,这就是MySQL的四个隔离级别:

  • 未提交读(read uncommited)
  • 提交读(read commited)
  • 可重复读(repeatable read)
  • 串行读(serializable)

万锁之母AbstractQueuedSynchronizer

翻看Java“锁”记中提到的各种“锁”,其内部同步实现大多数都和一个类AbstractQueuedSynchronizer相关,这个类称得上“万锁之母”,所以今天就来扒一扒这个类。

Java“锁”记

内置锁和显示锁

内置锁其实是相对显示锁来说的,说白了内置锁就是synchronized所代表Java原生锁机制,Jdk5.0之后又引入了Lock及其子类ReentrantLock这样一种新的锁机制。从加锁和内存语义上二者一样,只不过后者添加了一些其他功能,可以实现诸如轮询锁、超时锁和中断锁的功能。

在DJ的日子

时光荏苒,转眼到DJ已快三个年头,自认为这是我收获最多的一家公司,特此记之。

工作氛围

DJ整体工作节奏还是比较轻松的,基本上不加班,小团队,组织结构简单,没有多少办公室政治。

从产品定位上,由于早年定位于社交招聘导致使用DJ的大部分是学生应届生,这一定位导致DJ社招相对薄弱,最终让雇主对DJ的社招可能缺乏一些认同,再加上一些垂直招聘网站lg,boss等后起之秀,DJ的处境确实不是那么乐观。

在技术架构上,除早期遗留项目,Web主框架已经全面迁移到SpringMvc。服务层采用的是基于Dubbo的微服务架构,消息组件为RocketMq,配合Worker和定时任务进行异步任务的处理。存储这一块主要是主从Mysql集群配合Redis集群作缓存,Orm为业界流行的轻量级框架ibatis,去年已经升级为Mybatis。早年基于配置文件对项目进行管理,升级维护异常麻烦,后来由基于ZK的配置管理中心接管,持续集成为Jenkins和Maven包。这就是DJ后端的技术栈,希望能给有志于来DJ的人一些参考。

强烈推荐Andrew Ng的机器学习课程

从12.30到1.17修完了Coursera上的Andrew Ng的机器学习课程,计划上又可以划掉一件事了。

课程的主要内容大致如下:

  • 监督学习:线性回归、逻辑回归、神经网络、支持向量机
  • 非监督学习:K均值、主成分分析、异常检测
  • 案例:垃圾邮件
  • 特殊领域:推荐系统(协同过滤)、大规模机器学习(map-reduce)
  • 方法论:偏差/方差问题、正则化、学习曲线、误差分析、如何收集样本数据、机器学习流水线、上限分析等等

2018年终总结

18年5月份的时候写了个中期计划,当时主要写了四件事:

  1. Coursera上Algorithms课程,现在已进行到上半部分第二周。
  2. 啃完计算机程序与构造,做一部分习题。
  3. 至少每隔一天跑一次步,身体革命本钱。
  4. 每周一篇博客,不限制长度。

终于修完Algorithm了

磕磕绊绊,终于把Coursera上的Algorithm课修完了,中间有段时间中断了,因为工作太累,下班或者周末实在不愿意面对电脑了。Algorithm这门课整体难度不大,但是课时较长,所以需要能坚持下来。老师在理论和应用上做了比较好的平衡,不会太枯燥,不少习题也都是为了解决现实中的实际问题设计的,这点我非常喜欢,技术最终是为实际应用服务的,纯理论的东西确实提不起兴趣。

DrRacket使用技巧总结

引用其他文件的函数

假设test.scm想引用max-two.scm中的一个函数max-two,可以这样,

test.scm

1
2
3
4
5
6
#lang sicp

(#%require rackunit)
(#%require "max-two.scm")

(max-two 2 3 4)

Jsonp到底是个什么东西

这个世界上有好多事对你来说是模棱两可,可能是这样或者那样的原因你没有动力去了解它,以至于它久久萦绕在你的心头,Jsonp就是这么一件事。今天终于有动力想了解一番,经过一番热火朝天的谷歌百度后,发现Jsonp这东西说起来简单的很啊,我自己用一句话总结就是:使用script标签进行跨域访问。由于跨域请求返回的数据和JSON相关,故而得名Jsonp。

装机清单

  • idea设置导出
  • sqlyog连接导出
  • xshell会话导出
  • rime配置和字库
  • 邮件和聊天记录备份
  • 桌面文件确认
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×