2010 年加入阿里中间件,专注于 TDDL/DRDS 产品研发。负责过多个大型项目的分布式数据库设计, 对分布式场景的事务处理及复杂查询优化具有丰富经验。
本来以为这是一个已解决的问题,但是发现有同学不知道,所以写一下。 经常使用 MySQL 的同学可能知道,默认情况下 MySQL JDBC 驱动是不支持 BATCH 的: ```Java try (Connection conn = dataSource.getConnection(); Statement stmt = conn.createStatement()) {
在上一篇文章里忽略了一点。 CAP 定理有一个缺陷,这个缺陷可以帮助我们“部分”摆脱 分布式困境。 总的来说,CAP 定理本身是完备的,但它并没有描述一个分布式系统何时产生分区,以及分区会持续多长时间。
上一篇介绍了 单机数据库 的 ACID 事务。下面将进入真正的难点: “分布式环境” 分布式与单机最大的区别在于:单机是一个整体。组成这台机器的零件要么(看上去)都在正常状态,要么都不在状态,很少有例外。
最近看了一点资料,准备写一个大话题。 事务,是所有数据库讲义中最核心的话题。它本质上是一系列连续的,逻辑相关的数据库操作的组合。随便翻开一本书,都会告诉你,事务必须满足下面四个属性: ACID(Atomic,Consistency,Isolation,Durability) 按照属性即实体的观点:数据库事务就是 ACID,符合 ACID 的就是数据库事务。
Java 的 SoftReference 有很多年都没有被人惦记了。在 Javadoc 里, 它的描述是这样: ”虚拟机在抛出 OutOfMemoryError 之前会保证所有的软引用对象已被清除。
最近业务中需要用 Python 写一些脚本。尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息。 很快,我就遇到了异常: UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 为了解决问题,我花时间去研究了一下 Python 的字符编码处理。
这是 Trisha Gee 发表的 Disruptor 全解析系列博客的后续补充,原文链接是:http://mechanitis.blogspot.com/2011/08/disruptor-20-all-change-please.html Martin 最近公布了 Disruptor 的 2.0 版本 —— 基本上,2.0 版自我们第一次开源以来有了如此多的改变,是需要把这些改变正式标记出来的时候了。
原文地址:http://mechanitis.blogspot.com/2011/08/dissecting-disruptor-why-its-so-fast.html, 作者是 Trisha Gee, LMAX 公司的一位女工程师。
这是 MySQL 5.6 全局事务 ID(GTID) 系列的第三篇博客。 在之前的两篇博客中,第一篇 介绍了全局事务 ID 的定义与数据结构。第二篇 介绍了 MySQL 5.6 新增的全局事务状态(Gtid_state)。
前文 MySQL 5.6 全局事务 ID(GTID)实现原理(一) 介绍了 MySQL 5.6 全局事务 ID 的定义和相关的数据结构 Gtid_set 与 Sid_map。接下来,这一篇的主要目标是深入了解文章最后提到的全局事务状态 Gtid_state。
MySQL 5.6 的新特性之一,是加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力。但是,有关 GTID 的作用和原理,在 MySQL 官方网站 的文档库中却很少被提到。
原文地址:http://mechanitis.blogspot.com/2011/07/dissecting-disruptor-why-its-so-fast_22.html, 作者是 Trisha Gee, LMAX 公司的一位女工程师。
原文地址: http://mechanitis.blogspot.com/2011/07/dissecting-disruptor-why-its-so-fast.html,作者是 Trisha Gee, LMAX 公司的一位女工程师。
原文地址:http://mechanitis.blogspot.com/2011/07/dissecting-disruptor-wiring-up.html 作者是 Trisha Gee, LMAX 公司的一位女工程师。
原文地址:http://mechanitis.blogspot.com/2011/06/dissecting-disruptor-how-do-i-read-from.html 作者是 Trisha Gee, LMAX 公司的一位女工程师。
原文地址:http://mechanitis.blogspot.com/2011/07/dissecting-disruptor-writing-to-ring.html 作者是 Trisha Gee, LMAX 公司的一位女工程师。
原文地址: http://mechanitis.blogspot.com/2011/06/dissecting-disruptor-whats-so-special.html 作者是 Trisha Gee, LMAX 公司的一位女工程师。
前几天在调试一段程序, 奇怪的发现: 程序性能和缓存大小是负相关的——缓存开越大,程序越慢,最快和最慢之间差 2 个数量级。开 jprofiler 查了下,发现了 JDK6 里有这样一段代码 (版本 build 1.
Beanstalkd 是最近出现的一个轻量级消息中间件,他的最大特点是将自己定位为基于管道 (tube) 和任务 (job) 的工作队列 (work-queue): “(Beanstalkd) is a simple, fast workqueue service.
前几个月试图将 Sun 为 GlassFish 平台定制的 Web 2.0 微博 Slynkr 部署到 Tomcat6 上,结果完全彻底败给 Sun 了, 下面是全纪录: 1) 自信满满的从 Sun 网站下载了 slynkr.
取得 WinNT/2000 下的用户名 // 取得当前用户的 Token HANDLE hToken = NULL; OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken); // 获取 Token Info...
实现 Rundll.exe 的功能,代码很简单: #include "stdafx.h" #include #include #include int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { ...
利用 AttachThreadInput 和 WM_INPUTLANGCHANGEREQUEST 消息改变其它进程的输入状态 众所周知,通过 ActivateKeyboardLayout 函数可以改变当前线程的输入法状态,不过最近发现通过 AttachThreadInput 和 W...
Squid 2.6 STABLE 6 配置与管理指南 [Squid 是什么] Squid 是 Unix/Linux 服务器上最常用的代理服务器,它也有 Windows 的版本。可以用 Squid 简单的配置一个代理服务器,以实现: 1) 匿名或需要认证的 Internet 代理服务器。
比较简单, 下面直接贴代码了: // IDirect3DDevice8* pDevice; // RECT rcScreen; // = {0, 0, 1024, 768}; // HDC hdc; // HBITMAP hbitmap; // 忽略返回值检查,应该按需要...
Shell 的 ITaskbarList 接口在 VC6.0 中没有定义,下面给出它的定义: #include #include DECLARE_INTERFACE_(ITaskbarList, IUnknown) { STDMETHOD(QueryInter...
信号量是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的PV原语操作。 实际上 Windows 系统提供了 Semaphore 内核对象实现信号量及 PV 操作, 其 P 操作相当于 WaitForSingleObject(hSemaphore, I...
在 Virtual C++ 6.0 创建的 Win32 Application 和 Win32 Console Application 中使用 MFC 是可能的,主要的困难在于绕过 MFC 提供的 WinMain 函数。
刚刚从 Microsoft 网站下栽了 Speech SDK 5.1 和中日文发声补丁,参考 Speech SDK 文档写了几个小程序,尽管我也是刚刚接触 Speech 若干小时的初学者,还是拿出来共享吧: ...
续: 浅谈 MFC 的子类化机制和该机制的一个应用( 1 ) BOOL CDumpMsgBox::OnDumpOut(LPSTR pszDumpBuffer, UINT nBuf...
浅谈 MFC 的子类化机制和该机制的一个应用 众所周知: afx_msg int CWnd::OnCreate( LPCREATESTRUCT lpCreateStruct ); 是一个经常被重载的 MFC 窗体函数,他负责处理窗体的 WM_CREATE 消息,这个消息的发送时机在窗体刚刚创建以后, CreateWindow(Ex) 返回之前。