MySQL游标和异常处理
MySQL存储过程的declare声明变量必须放在最前面复杂异常处理drop user; TABLE `bigint(20) NULL '0', `balance` DEFAULT varchar(32) NULL, KEY (`userid`) ) ENGINE=I...
MySQL存储过程
通过队列实现批量处理
经常有这样一种需求批量异步写数据库.比如满50个对象,批量写入数据库.或者每5秒,写一次.防止业务低峰由于数量不够,导致不能及时入库的问题.原来做的比较呆板.生产者每5秒,会向队列中put一种特殊类型的对象.(假如这种对象叫做 pBlock,普通对象叫做oBlock)消费者从队列中获取信息,满50个oBlock写入.如果收到的是pBlock...
常见的排序算法
- Xiao__Tian__的博客 - 博客频道 - CSDN.pdf转载:http://blog.csdn.net/xiao__tian__/article/details/51600610
最终一致性落地实践--获取接收方的帐号余额
接前文http://blog.itpub.net/29254281/viewspace-2113781/作为直播类型的应用.采用最终一致性处理用户发送礼物和接收礼物.发送礼物是同步的,接收礼物是异步的.那么如何得知主播(收礼者)的真实帐号金额呢因为总有一部分主播的银子,尚在处理之中,没有增加到主播的帐号里面.其实用Redis也可以解决这个问题.发送方事...
同步写两个数据库--多线程
接前文http://blog.itpub.net/29254281/viewspace-2119080/两个数据库假设在不同的服务器,不同的实例drop database db1; drop database db2; create database db1; use db1; create table ...
同步写两个数据库
两个数据库假设在不同的服务器,不同的实例.drop database db1; drop database db2; create database db1; use db1; create table t(translog int primary key,ts timest...
参加Gdevops总结
乐视他们的全局ID生成采用Snowflake,并且附加了分库分表信息.也就是说,根据全局ID,就可以知道该信息具体存在哪个数据库中.比如 userid mod 8 然后拼接在 Snow ID之前这样通过 GID的前几位,就可以知道分库信息.但是一旦数据库扩容,ID就会很麻烦.所以他们 一般mod很大的数字比如 userid mod 128 拼接 Snow ID...
Snowflake
Snowflake算法核心把时间戳,工作机器id,序列号组合在一起。除了最高位bit标记为不可用以外,其余三组bit占位均可浮动,看具体的业务需求而定。默认情况下41bit的时间戳可以支持该算法使用到2082年,10bit的工作机器id可以支持1023台机器,序列号支持1毫秒产生4095个自增序列id。public class ...
最终一致性落地实践
http://blog.itpub.net/29254281/viewspace-1819422/单位最近赶工,要做一款直播APP本来关于后端,我建议了很多设计包括1.应用Redis键空间/事件通知功能,做两级缓存(Redis,JVM)2.Redis读写分离.(这个很好做,但是单位大部分项目,还是没有这么用.主要是访问量还是低)3.单线程处理并发控制4.最终一致性分库设计.5.系统...
敏感帐号防DBA篡改设计
帐号余额表,里面一般都有明文的帐号余额.如果应用程序没有针对性设计,则DBA可以随意篡改.模拟帐号表.create table user( userid bigint, balance int, checksum varchar(32));模拟JAVA程序,这个加密的过程,是JAVA程序中处理的.创建帐号,...
MySQL异常处理
针对存储过程 、触发器或函数内部语句可能发生的错误或警告信息,需要进行相关异常或称 例外的捕捉,然后作出相应的处理,异常处理的方式如下:DECLARE {CONTINUE | EXIT} HANDLER FOR {SQLSTATE sqlstate_code| MySQL error code| condition_name} handler_actions说明:· Handler type (CON...
不要在存储过程中控制事务
MySQL技术内幕 InnoDB存储引擎 344页.原来看过这段,总而言之,就是MySQL不要在存储过程中控制事务.当时没有仔细看细节,只是记住了一个结论.毕竟都21世纪了.还有用存储过程的?但是..#(×&%¥×&@……&……#@&以如下过程为例.drop table nums; drop procedure pCreateNum...
Linux下用Java获取本机IP地址
转载自:http://blog.sina.com.cn/s/blog_956a67ae010101tr.html开始我在Linux下用InetAddress.getLocalHost()方法获取本机IP地址,得到的结果总是:127.0.1.1。原来这个是etc/hosts文件中的配置,并非网卡的IP地址。后来多方寻访,终于得下以下代码,运行后在控制台输出IP与MAC地址。import java.net.*;...
Slf4j和Log4j 2
SLF4j 是一个门面模式.它是在编译时绑定的,只需要把slf4j-api和slf4j-log4j放到classpath上,即实现绑定slf4j-api中会去调用StaticLoggerBinder这个类获取绑定的工厂类而每个日志实现会在自己的jar中提供这样一个类,这样slf4j-api就实现了编译时绑定实现slf4j-api引用的StaticLoggerBinder类,会在打包时删除.集成Log...
极招尽展
此时此刻似乎可以体会到张灵甫上孟良崮的心情.一页书准备上孟良崮拼一把劣势:人单力孤工作量巨大,时间还紧至少两年没有写过JAVA程序了,估计框架搭建,熟悉都需要时间..优势:熟悉IT基础设施有编程基础领导对我的品性,能力还是认可的一页书背水一战的必胜决心拼中心开花的极端之处就是,要么大获全胜,要么一败涂...
ZooKeeper服务发现客户端
单位想把那套ZooKeeper集群用起来.作为配置中心,一旦出现问题,所有服务都是中断的.尤其又涉及ACL想来想去,我觉得这个客户端还是自己封装,安全系数大些.好长时间也没有写过代码了,确实感觉很生疏.写的逻辑稍微有点乱.别到时候上线了,因为自己的客户端引发问题.那就尴尬了.要求:1.在客户端实现负载均衡2.客户端ACL密...
Redis键空间通知
转载自:http://redisdoc.com/topic/notification.html事件的类型对于每个修改数据库的操作,键空间通知都会发送两种不同类型的事件。比如说,对 0 号数据库的键 mykey 执行 DEL 命令时, 系统将分发两条消息, 相当于执行以下两个 PUBLISH 命令:PUB...
Redis过期删除策略
转载自:http://blueswind8306.iteye.com/blog/2240088最近线上遇到Redis内存达到maxmemory限制后,数据淘汰过慢导致拖慢应用请求的问题。后来仔细看了一下Redis的各种数据淘汰策略,总结一下。 首先,Redis有三种删除key的时机,它们对应不同的淘汰策略: 当读/写一个已经过期的key时,会触发惰性删...
Redis主从复制网络闪断处理
先记录几个有意思的用法1.重复执行-r 选项重复执行一个命令指定的次数。-i 设置命令执行的间隔。比如查看redis每秒执行的commands(qps)./redis-cli -r 100 -i 1 info stats | grep instantaneous_ops_per_secinstantaneous_ops_per_sec:334instantaneous_ops_per_sec:306instantaneous_ops_per_sec:294instantane...