DB2锁、隔离级别、事务的深入理解

之前总结了一下DB2锁、隔离界别、事务的相关主题,但是,在后续的研发过程中,发现还是没有理解到位,现在对DB2再做个更深入的总结。 之前的文章: http://cloudate.net/?p=2250 查看隔离级别: db2 connect to robert values current isolation 显示空的,说明是默认的,现在默认是Currently Stability。 修改隔离级别: s……

Mac上安装Redis

1. redis官网下载redis源代码,编译。 2. 直接启动即可。 123456789101112131415161718192021222324$ /Users/robert/working/softwares/redis-3.0.5/src/redis-server 21913:C 24 Dec 16:58:20.717 # Warning: no config file specified, using the default config. In order to specify a config file use /Users/rober……

Mac上安装mysql

1. 下载mysql镜像。 mysql-5.6.26-osx10.9-x86_64.dmg 2. 直接点击命令行安装。 3. 系统偏好设置里面可以打开mysql管理面板。 4. 也可以用mac应用搜索打开mysql管理面板。 host:localhost port:3307 user:root 可以使用mysql终端和mysql workbench连接。

Mac上安装DB2

1. 官网下载mac版本db2。 db2_v101_macos_expc.tar 2. 解压后按照下文一步一步安装。 https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014927797 请注意第一步必须重启才能让配置的参数生效。 重启后,使用sysctl -a可以看见配置的参数。 安装完成以后,需要初始化终端环……

ngnix代理tomcat SSL协议的问题

背景:nginx反向代理到tomcat,nginx配置了SSL,tomcat使用http协议,nginx做了强制http重定向到https的配置。 问题: 1. 先来了一个https请求,代码中使用response.sendRedirect(“/path”),结果容器对path补齐后产生http://ip/path的url,协议是http的,然后,客户端请求http协议url,又被重定向到一个https……

为什么扩展字段不是个好的设计模式

这一年以来,评审了很多设计方案,每次评审总能看到类似扩展字段、备注、ext1、ext2、ext3的设计,更有甚者在扩展字段中使用了json字符串,看似真是一个很灵活、高扩展的方案。 典型的案例有: 案例1 对外输出的接口预留了3个字段,ext1、ext2、ext3,开发者的目的是以后与外部系统的交互因为业务需求增加了某个字段,可……

数据库中的页和块

DB2中的页,也称为块,默认是4k,可更改为8k,16k,32K等。一个页的大小限制了记录的大小,一个页可以装这么多记录: (pagesize – 100byte)/maxrowsize 100byte是元数据使用,maxrowsize是所有字段的最大长度加在一起。 一个块能包含一个或者多个记录,在数据删除的时候、数据的varchar2字段变得更大原地无法保存的……

DB2和Oracle、Mysql的锁方式的对比

想必大家都知道Oracle的隔离级别,Oracle和Mysql使用的隔离级别很相似,也和数据库理论中标准的隔离级别实现一致。 隔离级别如下: READ UNCOMMITTED: 幻想读、不可重复读和脏读都允许。 READ COMMITTED: 允许幻想读、不可重复读,不允许脏读 REPEATABLE READ: 允许幻想读,不允许不可重复读和脏读 SERIALIZABLE: 幻想读……

奇葩的打包脚本&公共jar包的版本化

公司的上线打包脚本,虽然使用了好多年,可是在我看来堪称打包脚本中的奇葩,已经惹过好几次事儿了,今天忍不住在这里总结一下,作为反面教材,希望以后大家不要这样实现脚本,会给后人留下很多填不完的坑。 事故1 某个服务化中间件修改了埋日志的格式,在开发的过程中,还没有经过QA验证,不小心就上到生产环境,幸亏对……

增加一行日志导致的问题

线上运行好好的一个服务,在一次上线过程中,随手增加了一行日志,噩梦就来了,这个服务的数据库连接池的连接开始出现用光的情况。 现在大家来看看这个过失犯罪的现场: 1234private void doSomething(....., Map param) {     log.debug("....." + param);     ...……

摘要签名算法

md5 16位、md5 32位 – 一共就这两种 SHA1、SHA256、SHA384、SHA512 – 位数更多,更难碰撞,256位就够了 hmac – hash(源串+密码) = 密文1, hash(密文1+密码), 两次hash 一.关于MD5被”破解” 1.MD5是不可逆的,所以,MD5是不可能被破解的。 2.所谓破解,只是MD5碰撞。 3.可以适当处理,MD5的安全……

ThreadLocal的实现

ThreadLocal实际上是一个Map,Map的key是线程对象,而值是一个自定义的需要存储的对象。 另外一方面,ThreadLocal使用的Map是WeakHashMap,WeakHashMap能够在key被GC回收的时候,收到一个消息,随后将对应的Value从Map中删除,以防Map里面的数据内存泄露。 大家都知道对象引用分为强引用、弱引用、软引用、幻影引用。软引……

乐观锁是否能够防重

今天又一次与同事讨论了乐观锁是否能够防重的问题,每次讨论都是把问题费劲脑汁的想了一遍,那过程真的很费脑细胞,于是做个总结,便于下次不用回忆就能把整个问题想清楚和说清楚。 我们假设有一个场景,我们正在开发一个支付模块,支付模块通过两步骤完成支付请求,第一步骤是支付初始化,第二步骤是支付确认,在支付初……

压测 – 并发数与QPS

今天,一个同事与我探讨一个关于压测的问题,他在一个业务项目压测的过程中,发现并发数最多只能达到30,这个并发数无论如何都没法再增加,他很诧异,凭经验,一个业务项目QPS能达到几百到几千是非常常见的。 首先,我们探讨了一下什么是并发数,什么是QPS? 并发数:并发数指在压测过程中,同时可以向待测试服务发送请求……

synchronized和volatile不具有互斥语义

背景 synchronized: 保证内存可见性和互斥性 volatile: 保证内存可见性 问题 synchronized与volatile是否具有互斥性?对于一份数据,写使用了synchronized做同步,读通过volatile修饰,是否能保证数据安全? 答案 不能,但是取决于具体实现 测试1 123456789101112131415161718192021222324252627282930313233343536373839……

HBASE相关知识点

最近一直听人说hbase的列簇无法遍历列,仔细查看了一下文档,其实这个是可以的。 打开下面的页面: http://hbase.apache.org/book.html#_cells 搜索: ColumnPrefixFilter 还有想使用一个封装好的hbase客户端,spring-data里面的spring hadoop是包含hbase相关的api的。