草庐IT

MySQL事务还没提交,Canal就能读到消息了?

##【问题描述】开发有天碰到一个很奇怪的问题,他的场景是这样子的:通过Canal来订阅MySQL的binlog,当捕获到有数据变化时,回到数据库,反查该数据的明细,然后做进一步处理。有一次,他碰到一个诡异的现象:1.Canal收到消息,有一条主键id=31019319的数据插入2.1

MySQL事务还没提交,Canal就能读到消息了?

##【问题描述】开发有天碰到一个很奇怪的问题,他的场景是这样子的:通过Canal来订阅MySQL的binlog,当捕获到有数据变化时,回到数据库,反查该数据的明细,然后做进一步处理。有一次,他碰到一个诡异的现象:1.Canal收到消息,有一条主键id=31019319的数据插入2.1

读SQL进阶教程笔记01_CASE表达式

1. 概述1.1. SQL-92标准里加入的最有用的特性1.2. 写法1.2.1. 简单CASE表达式CASEsexWHEN'1'THEN’男’WHEN'2'THEN’女’ELSE’其他’END1.2.1.1. 写法简单,但能实现的事情比较有限1.2.2.搜索C

读SQL进阶教程笔记01_CASE表达式

1. 概述1.1. SQL-92标准里加入的最有用的特性1.2. 写法1.2.1. 简单CASE表达式CASEsexWHEN'1'THEN’男’WHEN'2'THEN’女’ELSE’其他’END1.2.1.1. 写法简单,但能实现的事情比较有限1.2.2.搜索C

读Java性能权威指南(第2版)笔记29_线程和同步性能下

1. JVM线程优化1.1. 当空间不足时,可以调整线程使用的内存1.2. 每个线程都有一个原生栈,操作系统会在这里存储线程的调用栈信息1.3. 原生栈的大小是1MB1.3.1. 32位的WindowsJVM原生栈大小是320KB1.3.2. 在64位的JVM中,通常不会修改这个值1.3.2.1. 除非机器的物理内存相当紧张1.3.3. 较小的栈大小可以防止应用程序用完原生内存1.3.3.1. 许多程序可以在栈大小为256KB时运行1.3.3.2. 很少有程序需要用到完整的1MB1.4. -Xss=N标志1.4.1. 改变线程的栈大小2. 原生内存溢出2.1. 在32位的JVM中,进程使用的内

读Java性能权威指南(第2版)笔记29_线程和同步性能下

1. JVM线程优化1.1. 当空间不足时,可以调整线程使用的内存1.2. 每个线程都有一个原生栈,操作系统会在这里存储线程的调用栈信息1.3. 原生栈的大小是1MB1.3.1. 32位的WindowsJVM原生栈大小是320KB1.3.2. 在64位的JVM中,通常不会修改这个值1.3.2.1. 除非机器的物理内存相当紧张1.3.3. 较小的栈大小可以防止应用程序用完原生内存1.3.3.1. 许多程序可以在栈大小为256KB时运行1.3.3.2. 很少有程序需要用到完整的1MB1.4. -Xss=N标志1.4.1. 改变线程的栈大小2. 原生内存溢出2.1. 在32位的JVM中,进程使用的内

读Java性能权威指南(第2版)笔记29_线程和同步性能下

1. JVM线程优化1.1. 当空间不足时,可以调整线程使用的内存1.2. 每个线程都有一个原生栈,操作系统会在这里存储线程的调用栈信息1.3. 原生栈的大小是1MB1.3.1. 32位的WindowsJVM原生栈大小是320KB1.3.2. 在64位的JVM中,通常不会修改这个值1.3.2.1. 除非机器的物理内存相当紧张1.3.3. 较小的栈大小可以防止应用程序用完原生内存1.3.3.1. 许多程序可以在栈大小为256KB时运行1.3.3.2. 很少有程序需要用到完整的1MB1.4. -Xss=N标志1.4.1. 改变线程的栈大小2. 原生内存溢出2.1. 在32位的JVM中,进程使用的内

读Java性能权威指南(第2版)笔记29_线程和同步性能下

1. JVM线程优化1.1. 当空间不足时,可以调整线程使用的内存1.2. 每个线程都有一个原生栈,操作系统会在这里存储线程的调用栈信息1.3. 原生栈的大小是1MB1.3.1. 32位的WindowsJVM原生栈大小是320KB1.3.2. 在64位的JVM中,通常不会修改这个值1.3.2.1. 除非机器的物理内存相当紧张1.3.3. 较小的栈大小可以防止应用程序用完原生内存1.3.3.1. 许多程序可以在栈大小为256KB时运行1.3.3.2. 很少有程序需要用到完整的1MB1.4. -Xss=N标志1.4.1. 改变线程的栈大小2. 原生内存溢出2.1. 在32位的JVM中,进程使用的内

读Java性能权威指南(第2版)笔记30_Java服务器

1. 响应式编程1.1. 使用基于事件的范式处理异步数据流1.2. 和异步编程提供了相同的性能优势1.3. 能够扩展程序(特别是扩展I/O)以处理很多连接和数据源2. 非阻塞I/O2.1. 有效扩展服务器的基础2.2. 允许服务器用相对较少的线程处理相对较多的连接2.2.1. 传统的服务器利用这一点来处理基本的客户端连接2.2.2. 新的服务器可以将非阻塞特性扩展到其他应用程序3. 优化服务器线程池3.1. 选择器线程3.1.1. 在I/O可用时通知系统调用的线程3.2. 选择器通知有客户端I/O待处理之后,另一个包含工作线程的线程池会处理实际的请求和响应3.3. 要足够多的工作线程来处理服务

读Java性能权威指南(第2版)笔记30_Java服务器

1. 响应式编程1.1. 使用基于事件的范式处理异步数据流1.2. 和异步编程提供了相同的性能优势1.3. 能够扩展程序(特别是扩展I/O)以处理很多连接和数据源2. 非阻塞I/O2.1. 有效扩展服务器的基础2.2. 允许服务器用相对较少的线程处理相对较多的连接2.2.1. 传统的服务器利用这一点来处理基本的客户端连接2.2.2. 新的服务器可以将非阻塞特性扩展到其他应用程序3. 优化服务器线程池3.1. 选择器线程3.1.1. 在I/O可用时通知系统调用的线程3.2. 选择器通知有客户端I/O待处理之后,另一个包含工作线程的线程池会处理实际的请求和响应3.3. 要足够多的工作线程来处理服务