- 博客(385)
- 资源 (48)
- 收藏
- 关注
转载 数据库分库分表(sharding)系列(四) 多数据源的事务处理
系统经sharding改造之后,原来单一的数据库会演变成多个数据库,如何确保多数据源同时操作的原子性和一致性是不得不考虑的一个问题。总体上看,目前对于一个分布式系统的事务处理有三种方式:分布式事务、基于Best Efforts 1PC模式的事务以及事务补偿机制。我们下面对这三种处理方式一一进行分析。本文原文链接:http://blog.csdn.net/bluishglc/article/deta
2015-04-16 14:41:16 520
转载 数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量
当团队对系统业务和数据库进行了细致的梳理,确定了切分方案后,接下来的问题就是如何去实现切分方案了,目前在sharding方面有不少的开源框架和产品可供参考,同时很多团队也会选择自主开发实现,而不管是选择框架还是自主开发,都会面临一个在哪一层上实现sharding逻辑的问题,本文会对这一系列的问题逐一进行分析和考量。本文原文连接: http://blog.csdn.net/bluishglc/art
2015-04-16 14:36:23 485
转载 数据库分库分表(sharding)系列(二) 全局主键生成策略
第一部分:一些常见的主键生成策略一旦数据库被切分到多个物理结点上,我们将不能再依赖数据库自身的主键生成机制。一方面,某个分区数据库自生成的ID无法保证在全局上是唯一的;另一方面,应用程序在插入数据之前需要先获得ID,以便进行SQL路由。目前几种可行的主键生成策略有:1. UUID:使用UUID作主键是最简单的方案,但是缺点也是非常明显的。由于UUID非常的长,除占用大量存储
2015-04-16 14:28:39 507
转载 数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示
第一部分:实施策略图1.数据库分库分表(sharding)实施策略图解(点击查看大图)1.准备阶段对数据库进行分库分表(Sharding化)前,需要开发人员充分了解系统业务逻辑和数据库schema.一个好的建议是绘制一张数据库ER图或领域模型图,以这类图为基础划分shard,直观易行,可以确保开发人员始终保持清醒思路。对于是选择数据库
2015-04-16 14:09:33 532
转载 一致性哈希算法与Java实现
一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。 因此,引入了一致性哈希算法:
2015-04-16 11:32:06 517
转载 分布式哈希表
我们从浅入深一步一步介绍什么是分布式哈希表。 1、哈希函数 哈希函数是一种计算方法,它可以把一个值A映射到一个特定的范围[begin, end]之内。对于一个值的集合{k1, k2, … , kN},哈希函数把他们均匀的映射到某个范围之中。这样,通过这些值就可以很快的找到与之对应的映射地址{index1, index2, … , indexN}。对于同一个值,哈希函
2015-04-16 11:27:19 627
转载 protobuf java
团队中的Java工程师,毕竟我们项目的前端部分是基于Android开发的,而且我们研发团队中目前主要使用的开发语言就是C++、Java和Python,其中Python主要用于编写各种工具程序。然而为了保证该篇Blog的完整性和独立性,我仍然会将上一篇Blog中已经出现的内容再一次赘述,同时对于Java中特有的部分也会着重介绍。 一、生成目标语言代码。 下面的
2015-04-09 10:53:16 458
转载 Protocol Buffer技术详解(语言规范)
该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo。这样做的目的主要在于不仅可以保持Google文档的良好风格和系统性,同时再结合一些比较实用和通用的用例,这样就更加便于公司内部的培训,以及和广大网友的技术交流。需要说明的是,Blog的内容并非line by line的翻译,其中包含一些经验性总结,与此同时,对于一
2015-04-09 10:03:58 364
转载 p2p
编者按:2013年以来,互联网金融呼啸而至,对中国经济社会产生了翻天覆地的影响。可以预见,未来中国经济金融发展将与互联网金融息息相关,电商、P2P、在线金融等热词将成为全社会持续重点关注的对象。2014年,借互联网金融企业逐步产生分化之际,搜狐互联网金融综合大量报道和内部资料,特别评选出互联网金融16强新兴企业,并在此附上公司调研报告,以期为投资者和创业者提供指导。 -----------
2015-03-20 15:23:42 1355
原创 Lucene的使用
如果你想快速查询你磁盘上文件,或查询邮件、Web页面,甚至查询存于数据库的数据,你都可以借助于Lucene来完成。但是要完成查询就必须先建立索引。首先从Lucene API说起:1、 Lucene API(核心操作类) IndexWriter创建和维护索引(向原索引中添加新Document,设置合并策略、优化等)FSDirectory最主要用
2015-03-02 10:31:30 441
转载 Ehcache 整合Spring 使用页面、对象缓存
一、准备工作如果你的系统中已经成功加入Spring、Hibernate;那么你就可以进入下面Ehcache的准备工作。1、 下载jar包Ehcache 对象、数据缓存:http://ehcache.org/downloads/destination?name=ehcache-core-2.5.2-distribution.tar.gz&bucket=tcdistributi
2015-02-28 10:44:12 489
原创 利用AbstractRoutingDataSource实现动态数据源切换 (一、Spring+Hibernate)
一、开篇这里整合分别采用了Hibernate和MyBatis两大持久层框架,Hibernate主要完成增删改功能和一些单一的对象查询功能,MyBatis主要负责查询功能。所以在出来数据库方言的时候基本上没有什么问题,但唯一可能出现问题的就是在hibernate做添加操作生成主键策略的时候。因为我们都知道hibernate的数据库本地方言会针对不同的数据库采用不同的主键生成策略。所以针对
2015-02-28 10:40:08 2820
原创 利用Spring的AbstractRoutingDataSource解决多数据源的问题
多数据源问题很常见,例如读写分离数据库配置。原来的项目出现了新需求,局方要求新增某服务器用以提供某代码,涉及到多数据源的问题。研究成果如下:1、首先配置多个datasource[html] view plaincopybean id="dataSource" class="org.apache.commons.dbcp
2015-02-28 10:38:34 688
转载 Spring实现AOP的4种方式
先了解AOP的相关术语:1.通知(Advice):通知定义了切面是什么以及何时使用。描述了切面要完成的工作和何时需要执行这个工作。2.连接点(Joinpoint):程序能够应用通知的一个“时机”,这些“时机”就是连接点,例如方法被调用时、异常被抛出时等等。3.切入点(Pointcut)通知定义了切面要发生的“故事”和时间,那么切入点就定义了“故事”发生的地点,例如某个类或方
2015-02-28 10:31:40 456
原创 JAVA发送HTTP请求经典收藏
JDK 中提供了一些对无状态协议请求(HTTP )的支持,下面我就将我所写的一个小例子(组件)进行描述: 首先让我们先构建一个请求类(HttpRequester )。该类封装了 JAVA 实现简单请求的代码,如下:[java] view plaincopyimport java.io.BufferedReader; im
2015-02-13 15:00:48 422
原创 Top 20 Sql
top 20 效率最差的sql SELECT * from ( SELECT EXECUTIONS ,ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio, ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run, SQL_TEXT FROM V$SQLARE
2015-02-13 10:00:53 570
原创 Linux--常用命令--last
inux last 命令介绍 功能说明:列出目前与过去登入系统的用户相关信息。 语 法:last [-adRx][-f ][-n ][帐号名称...][终端机编号...] 补充说明:单独执行last指令,它会读取位于/var/log目录下,名称为wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。 参 数: -a
2015-02-12 16:03:56 443
原创 pgbouncer使用快速入门
pgbouncer是PostgreSQL的一个轻量的连接池软件。任何应用程序都可以把 pgbouncer 当作一个 PostgreSQL 服务器来连接,然后 pgbouncer 会处理与服务器连接,或者是重用已存在的连接。 使用 pgbouncer 主要目的标是降低因为新建到 PostgreSQL 的连接而导致的性能损失。我们知道,对于每个新的连接,PostgreSQL都会建启动
2015-02-12 15:52:38 1550 1
原创 PGBouncer介绍及使用方式
1. 什么是pgbouncer PGBouncer是一个轻量级的针对PostgreSQL的数据库连接池工具,能够给客户端提供一个统一的链接视图。1.下载pgbouncer的安装包http://pgfoundry.org/frs/?group_id=1000258&release_id=1952,本次下载的安装包是pgbouncer-1.5.2.tar.gz2.下载
2015-02-12 15:34:15 654
原创 Oracle sql语法中decode函数的用法
decode(条件,值1,结果1,值2,结果2,值3,结果3,... 值n,结果n,缺省值)改函数的解释:IF 条件=值1 THEN RETURN(结果1)ELSIF 条件=值2 THEN RETURN(结果2) ......ELSIF 条件=值n THEN RETURN(结果n)ELSE RETURN(缺省值)
2015-02-11 15:42:32 7938
原创 SQL语句优化经验
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为摘录、并汇总的部分资料: (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询
2015-02-11 15:02:43 549
原创 分析SQL语句使用资源情况
V$SQLAREA 本视图持续跟踪所有shared pool中的共享cursor,在shared pool中的每一条SQL语句都对应一列。本视图在分析SQL语句资源使用方面非常重要。V$SQLAREA中的信息列HASH_VALUE:SQL语句的Hash值。ADDRESS:SQL语句在SGA中的地址。这两列被用于鉴别SQL语句,有时,两条不同的语句可能hash值相同。这时候,必
2015-02-11 14:37:09 549
原创 Oracle SQL性能优化
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表
2015-02-11 14:33:05 437
转载 oracle物化视图
一、创建物化视图主要语法creatematerialized view[view_name] {TABLESPACE (表空间名)}--保存表空间 {BUILD [DEFERRED|IMMEDIATE(默认值)]} --延迟刷新还是立即刷新refresh [fast|complete|force
2015-02-10 17:55:20 493
原创 Oracle AWR报告生成与查看
可以通过dba_hist_wr_control查看当前的配置情况,当前awr为每1小时做一次数据快照,保留时间为7天。SYS@PENG SQL> select * from dba_hist_wr_control; DBID SNAP_INTERVAL RETENTION TOPNSQL-
2015-02-10 16:45:33 753
转载 (1)-V$SESSION_WAIT
这是一个寻找性能瓶颈的关键视图。它提供了任何情况下session在数据库中当前正在等待什么(如果session当前什么也没在做,则显示它最后的等待事件)。当系统存在性能问题时,本视图可以做为一个起点指明探寻问题的方向。 V$SESSION_WAIT中,每一个连接到实例的session都对应一条记录。V$SESSION_WAIT中的常用列 l SID
2015-02-10 16:17:28 455
转载 oracle 监控sql
1、监控事例的等待select event,sum(decode(wait_Time,0,0,1)) "Prev", sum(decode(wait_Time,0,1,0)) "Curr",count(*) "Tot" from v$session_Wait group by event order by 4; 2、回滚段的争用情况se
2015-02-10 16:08:09 516
转载 如何查询Oracle性能监控
1、监控等待事件select event,sum(decode(wait_time,0,0,1)) prev, sum(decode(wait_time,0,1,0)) curr,count(*)from v$session_wait group by event order by 4;Lock wait occur when a session attempts to acq
2015-02-10 16:05:06 686
转载 oracle 查询慢的原因总结
查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也
2015-02-10 15:52:42 1074
原创 PostgreSQL学习手册(角色和权限)
PostgreSQL是通过角色来管理数据库访问权限的,我们可以将一个角色看成是一个数据库用户,或者一组数据库用户。角色可以拥有数据库对象,如表、索引,也可以把这些对象上的权限赋予其它角色,以控制哪些用户对哪些对象拥有哪些权限。 一、数据库角色: 1. 创建角色: CREATE ROLE role_name; 2. 删除角色: D
2015-02-10 11:10:32 502
原创 PostgreSQL备份与恢复示例
PostgreSQL备份与恢复文档控制一、 简介二、 SQL转储(一)pg_dump(二)pg_dumpall;(三)备份压缩与分割三、 文件系统级别备份(冷备份)四、 在线热备份(归档)(一)备份(二)恢复 一、 简介Postgresql的备份分为三种:l
2015-02-10 10:46:51 472
原创 获取sql语句的执行情况近来我的oracle数据库(9201)运行慢
SQL trace 跟踪其他session的执行情况步骤:1、查询session:sid和#serialselect sid,serial#,username from v$session where username is not null;2、将查询结果(有选择性的)输入到exec dbms_system.set_sql_trace_in_session(:sid,:seria
2015-02-10 09:29:16 801
原创 对Java泛型的简单理解,并对Hibernate Dao重构
泛型的定义主要有以下两种:在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义)在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(现在人们大多把这称作模板) 泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。泛型只不过是java中的类型而已,继承自Typ
2015-02-09 12:01:15 655
原创 泛型DAO接口定义
Java代码 import java.io.Serializable; import java.util.List; /** * GenericDao DAO层泛型接口,定义基本的DAO功能 * @author wl * @since 0.1 * @param 实体类 * @param 主键类,必须实现Serializable接口
2015-02-09 11:53:59 654
原创 SSH2的泛型DAO
1、首先定义泛型DAO的接口。 Java代码 package com.ys.common.dao; import java.io.Serializable; import java.util.List; public interface IBaseDaoextends Serializable> { /*
2015-02-09 11:27:00 545
原创 配置 WebLogic 域的安全
以下部分描述如何设置 WebLogic 域的安全配置选项: 启用 WebLogic Server 域之间的信任 使用连接筛选器 使用 Java 容器授权合同 查看 MBean 特性 WebLogic Server 中的密码保护方式 保护用户帐户注意:上述部分适用于使用此版本的 WebLogic Server 中的安全功能的 WebLo
2015-02-07 12:55:31 6925 1
原创 私钥、数字证书和可信证书颁发机构
私钥、数字证书和可信证书颁发机构可建立和验证服务器标识和信任。SSL 使用公钥加密技术进行身份验证。使用公钥加密时,将为一台服务器生成一个公钥和一个私钥。对于用公钥加密的数据,只能用相应的私钥解密;对于用私钥加密的数据,只能用相应的公钥解密。私钥受到妥善的保护,确保只有私钥的所有者才能解密用公钥加密的消息。公钥嵌入一个数字证书中,同时嵌入的还有描述公钥所有者的其他信息,如姓名、街道
2015-02-07 12:54:12 5632
原创 Java加密技术(十二)——*.PFX(*.p12)&个人信息交换文件
今天来点实际工作中的硬通货! 与计费系统打交道,少不了用到加密/解密实现。为了安全起见,通过非对称加密交换对称加密密钥更是不可或缺。那么需要通过什么载体传递非对称算法公钥/私钥信息?数字证书是公钥的载体,而密钥库可以包含公钥、私钥信息。 JKS和PKCS#12都是比较常用的两种密钥库格式/标准。对于前者,搞Java开发,尤其是接触过HTTPS平台的朋友,并不陌生。JKS文件(通常为*.jk
2015-02-07 11:48:15 502
原创 Java加密技术(十一)——双向认证
对于双向认证,做一个简单的描述。 服务器端下发证书,客户端接受证书。证书带有公钥信息,用于验证服务器端、对数据加密/解密,起到OSI五类服务的认证(鉴别)服务和保密性服务。 这只是单向认证,为什么?因为客户端可以验证服务器端,但服务器端不能验证客户端! 如果客户端也有这样一个证书,服务器端也就能够验证客户端,这就是双向认证了! 换言之,当你用银行的“U盾”之类的U盘与银行账
2015-02-07 11:47:06 27829
Axure7 汉化版
2015-01-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人