- 博客(32)
- 资源 (12)
- 问答 (1)
- 收藏
- 关注
原创 Java NIO 系列教程
出自:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。感谢并发编程网的翻译和投递。 (关注ITeye官微,随时随地查看最新开发资讯、技术文章。) Java NIO提供了与...
2014-08-05 18:22:07
151
原创 如何优化数据库查询
宏观:1.缓存。在持久层或持久层之上做缓存。 从数据库中查询出来的数据先放入缓存中,下次查询时,先访问缓存,如果未命中则查询数据库。2.表分区和拆分.无论是业务逻辑上的拆分还是无业务含义的分区。3.提高磁盘速度.这包括RAID和其他磁盘文件分段的处理。主要的思想是提高磁盘的并发度(多个物理磁盘存放同一个文件)。 微观:表设计方面:1.字段冗余.减少跨库查询和...
2014-08-05 17:22:47
154
原创 提高团队代码质量
最近看到一篇博客,大致的意思就是网管将原本混乱不堪的交换机整理整齐了,起初交换机是图2那样的,由于越来用的人越多,操作的人越来越多,最终成为了图1那个样子。这不禁让我想到了项目中的代码,原先在刚上线的时候谈不上是完美的,但它总归是整齐的,但是由于中间人员流动,bug修改等等原因吧,最终的结果就是代码一团糟。为什么会出现这样的情况呢? 图1 ...
2014-08-05 17:10:47
166
原创 MySQL详解--锁
锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。本章我们着重讨论MySQL锁机制的特点,常见的锁问题,以及解决MySQ...
2014-08-05 16:22:57
134
原创 MySQL explain执行计划解读
本文我们主要介绍了MySQL性能分析以及explain的使用,包括:组合索引、慢查询分析、MYISAM和INNODB的锁定、MYSQL的事务配置项等,希望能够对您有所帮助。1.使用explain语句去查看分析结果 如explain select * from test1 where id=1;会出现:id selecttype table type possible_keys key key...
2014-08-05 15:15:12
123
原创 主题:我的架构经验系列文章索引
下面是一些个人架构上的总结,本来想只在公司内部进行共享的,因此内容写的口语化一点,也没什么图示,所有内容没有查任何资料是脑子里面的东西吐出来的因此可能会不准确不全,希望抛砖引玉,大家互相讨论。要注意,我这些文章是一个总体的架构经验不针对具体的语言和平台,因此也不一定是适用所有的语言和平台的。(内容是前几天写的,现附上索引) 前端架构 http://www.iteye.c...
2014-08-04 23:11:06
115
原创 ajax跨域请求--jsonp实例
ajax请求代码: [javascript] view plaincopy //区域事件选择配送点 function changeDistrict(value){ if(value == 0){ $('#transport_node').empty(); $('#transport_node...
2014-08-04 16:04:34
137
原创 大规模分布式系统架构与设计实战笔记3
千峰老师的《大规模分布式系统架构与设计实战》的第三章讲的是分布式协调的实现,在工头-职介所-工人的模型中,分布式协调实际上就是职介所相关的一些内容,包括领导(职介所)怎么产生的,当前领导宕机了怎么办,领导如何管理各个员工(工人)等等一系列问题。 在fourinone中,选取领导并不像paxos算法一样实行基于抢占的少数服从多数的策略,而是一种谦让的策略,相当领导的人在发出当领导的申请之前先问问别...
2014-08-04 15:44:23
140
原创 防御XSS的七条原则
前言本文将会着重介绍防御XSS攻击的一些原则,需要读者对于XSS有所了解,至少知道XSS漏洞的基本原理,如果您对此不是特别清楚,请参考这两篇文章:《Stored and Reflected XSS Attack》《DOM Based XSS》攻击者可以利用XSS漏洞向用户发送攻击脚本,而用户的浏览器因为没有办法知道这段脚本是不可信的,所以依然会执行它。对于浏览器而言,它认为这段脚本是来自...
2014-07-31 18:55:34
307
原创 程序员对索引的误解
1、索引中最常见的就是B树索引,B树索引的实现与二叉查找树相似,但是B的意思不是binary,而是balance(平衡)。 2、B树索引上的每个结点都是一个块,有叶子块和分支块之分。块中的数据包括各个索引以及一个rowid。走索引查询时,会按照树的分支将需要查询数据路径上的相应的分支块和叶子块读到内存。 3、B树索引不存在非唯一性条目,在一个非唯一性索引中,Oracle会把rowid作为一个额...
2014-07-31 11:59:32
145
原创 五个Redis使用者需要注意的地方
下面内容来源于Quora上的一个提问,问题是使用Redis需要避免的五个问题。而回答中超出了五个问题的范畴,描述了五个使用Redis的注意事项。如果你在使用或者考虑使用Redis,可能你可以学习一下下面的一些建议,避免一下提到的问题。1.使用key值前缀来作命名空间虽然说Redis支持多个数据库(默认32个,可以配置更多),但是除了默认的0号库以外,其它的都需要通过一个额外请求才能使用。...
2014-07-31 11:36:52
107
原创 TDDL和Diamond的使用(一):基本介绍
一,说明因项目需求要调研一下TDDL,在调研中发现相关的资料较少,因此记之。本文描述Diamond和TDDL中间件的部署和使用。Diamond(http://code.taobao.org/p/diamond/wiki/index/)是淘宝开源的配置管理系统(config server),以简单可用的方式提供分布式系统的配置管理功能。TDDL(http://code.taobao.org...
2014-07-30 15:12:37
479
原创 配置管理系统浅析
我们的程序常常有一些配置信息,例如连接的数据库配置、缓存大小、线程数等等。这些配置信息的管理一般有两种方式: a. 配置信息放到文件中,程序启动时导入,或者在程序运行过程中监控文件的修改重新导入配置文件 b. 公司或者部门范围内构建统一的配置管理系统,应用通过API获取配置服务。通过配置文件管理配置信息的方式存在一些问题,主要有: 1.部署和更新成本高 当前一个互联网服务常常部署在多台机器上...
2014-07-30 11:51:53
310
原创 淘宝分布式数据层:TDDL
淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ©_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。TDDL所处的位置(tddl通用数据访问层,部署在客户端的jar包,用于将用户的SQL路由到指定的...
2014-07-29 21:35:49
411
原创 ZooKeeper示例 分布式锁
[转载请注明作者和原文链接, 如有谬误, 欢迎在评论中指正. ] 场景描述在分布式应用, 往往存在多个进程提供同一服务. 这些进程有可能在相同的机器上, 也有可能分布在不同的机器上. 如果这些进程共享了一些资源, 可能就需要分布式锁来锁定对这些资源的访问.本文将介绍如何利用zookeeper实现分布式锁.思路进程需要访问共享数据时, 就在"/locks"节点下创建一个s...
2014-07-29 21:21:55
92
原创 大数据高并发数据库设计注意要点
在一个项目实施初始,数据库的设计非常重要,很多时候,我们只关心和考虑到眼前的功能,而忽略了后续的可维护性和可拓展性,以及还有一个在大数据时代会遇到的高并发问题。 在设计表结构时要注意以下几个要点: 1.数据行的长度不要超过8020字节,如果超过这个长度的话在物理页中这条数据会占用两行从而造成存储碎片,降低查询效率。 2.能够用数字类型的字段尽量选择数字类型而不用字符串类型的(...
2014-07-28 23:38:35
172
原创 ActiveMQ消息的可靠性机制
1.JMS消息确认机制JMS消息只有在被确认之后,才认为已经被成功地消费了。消息的成功消费通常包含三个阶段:客户接收消息、客户处理消息和消息被确认。在事务性会话中,当一个事务被提交的时候,确认自动发生。在非事务性会话中,消息何时被确认取决于创建会话时的应答模式(acknowledgement mode)。该参数有以下三个可选值:Session.AUTO_ACKNOWLEDGE。当客户成功...
2014-07-25 11:04:26
374
原创 用ActiveMQ遇到的消息确认问题
问题:我的ActiveMQ接收消息用的是topic模式,持久化订阅,问题是我用了JMS接收消息的代码每次重新启动总是会收到最后一次的消息,但这些消息是已经接收过了的,而且启动一次就收到一次,难道ActiveMQ不会清除缓存的吗? Java代码 //创建JMS连接和会话 ActiveMQConnectionFactory factory = new ActiveMQ...
2014-07-25 10:55:21
227
原创 CAP原理(CAP THEOREM)
在足球比赛里,一个球员在一场比赛中进三个球,称之为帽子戏法(HAT-TRICK)。在分布式数据系统中,也有一个帽子原理(CAP THEOREM),不过此帽子非彼帽子。CAP原理中,有三个要素:一致性(CONSISTENCY)可用性(AVAILABILITY)分区容忍性(PARTITION TOLERANCE)CAP原理指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。因此在进行分布式架...
2014-07-25 10:06:58
137
原创 基于NIO的长连接的实现已开放到github
长连接需要注意的事项长连接最大的问题是对于连接池中连接的维护,连接池中的连接保持一定大小,当少于阀值时,则在获取连接时,自动创建新的连接,并添加到连接池中;连接池中的连接采用RR算法获取。维护连接池需要应对IO类的异常(SocketTimeoutException、IOException)的情况,确保获取的连接是正常的连接;异常情况主要有:在建立连接时出现异常,需要采取重试策略,超过重试...
2014-07-24 19:04:48
144
原创 MySQL的btree索引和hash索引的区别
hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。可 能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么大家不都用 Hash 索引而还要使用 B-Tree 索引呢?任何事物都是有两面性的,Hash 索引...
2014-07-23 20:59:10
60
原创 前百度员工离职总结:如何做个好员工?
2014年7月4日,我从百度离职了。 这是第一次,我不是因为和老板闹翻而离职; 这是第一次,我带着晋升的喜悦而离职; 这是第一次,我带着满满的收获而离职。 我曾经认为,我永远不会成为一个好员工,因为我太独、太挑剔、不喜欢听话的好孩子、而且讨厌一切想要改变我的人。但是三年过去,我改变了不少,我必须承认,所谓“进步”的过程,就是被认可的过程,也是被“驯化”的过程...
2014-07-21 22:29:50
144
原创 数据库进程间通信解决方案
1. 背景你是否有这样的需求:你需要监控访问网站的IP,当同一个IP地址访问次数过多需要做出处理,例如拉黑,直接丢进iptables 防火墙规则连中。你的做法只能每个一段时间查询一次数据库,并且判断是否满足拉黑需求?你是否需要监控某些数据发生变化,并通知其他程序作出处理。例如新闻内容修改后,需要立即做新页面静态化处理,生成新的静态页面你使用数据库做队列,例如发送邮件...
2014-07-09 23:16:38
225
原创 让 ZeroMQ 为 MySQL 提供远程分布式任务处理
昨天写了一篇博文 身份证校验,检查身份证号码输入是否正确http://netkiller-github-com.iteye.com/blog/1997402 很多人担心性能问题,我后来想用C写一个扩展,还会有人说影响性能,一不做二不休,干脆mq到远程,通过负载均衡解决。 这里只是提供了一个 mysql 与 ZeroMQ 通信的插件,我并没有将身份证校验程序写出来。不过...
2014-07-09 23:15:40
236
原创 MySQL 大数据操作注意事项
1. 关于 deletedelete from mytable 必死无疑,你需要分批删除,尽量缩小每个批次删除的记录数,delete 是可以并行执行的,你可以同时运行多个删除操作 mysql> show processlist;+--------+-----------------+---------------------+-----------+---------+-----...
2014-07-09 23:04:43
169
原创 使用httpclient必须知道的参数设置及代码写法、存在的风险
结论:如果使用httpclient 3.1并发量比较大的项目,最好升级到httpclient4.2.3上,保证并发量大时能抗住。httpclient 4.3.3,目前还有一些bug;还是用4.2.x稳定版本吧。 以库存项目为例:httpclient一天并发量在1500w左右,峰值一秒7万。 在之前使用过程中,一直存在大量的 org.apache.http.conn....
2014-07-09 22:35:13
224
原创 数据库储存不确定实体
相信在项目开发当中都曾经遇到过,有某些要储蓄到数据库当中的实体字段是不确定的,可能会动态变化,或者多个类型的字段同时存在或同时不存在,那创建数据库字段时,因为实体的字段不能确定,数据库的字段也就不能确定. 例子: 笔者参与开发的一个招生系统当中,每个课程都有各自的入学要求,而入学要求需要被保存到数据库当中被课程引用,但入学要求的实体是不确定的,入学要求可能是面试分数大于某个...
2014-07-08 22:32:34
204
原创 active MQ
createSession(paramA,paramB);paramA是设置事务的,paramB设置acknowledgment modeparamA设置为false时:paramB的值可为Session.AUTO_ACKNOWLEDGE,Session.CLIENT_ACKNOWLEDGE,DUPS_OK_ACKNOWLEDGE其中一个。paramA设置为true时:paramB的值...
2014-07-07 22:45:45
84
原创 八 redis学习笔记之主从复制
redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。下面是关于redis主从复制的一些特点1.master可以有多个slave2.除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构3.主从复制不会阻塞master。也就是说当一个或多个slave与master...
2014-07-06 22:10:46
61
原创 七 redis学习笔记之持久化
redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另一种是Append-only file(缩写aof)的方式。下面分别介绍Snapshotting 快照是默认的持久化方式。这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的...
2014-07-06 22:02:28
67
原创 二.redis 数据类型
本文介绍下redis支持的各种数据类型包括string,list ,set ,sorted set 和hashTechnorati 标签: redis cache list 存储1. keysredis本质上一个key-value db,所以我们首先来看看他的key.首先key也是字符串类型,但是key中不能包括边界字符由于key不是binary safe的字符串,所以像"my...
2014-07-06 19:11:06
65
原创 一.redis 环境搭建
1.简介 redis是一个开源的key-value数据库。它又经常被认为是一个数据结构服务器。因为它的value不仅包括基本的string类型还有 list,set ,sorted set和hash类型。当然这些类型的元素也都是string类型。也就是说list,set这些集合类型也只能包含string 类型。你可以在这些类型上做很多原子性的操作。比如对一个字符value追加字...
2014-07-06 16:52:01
82
java如何判断图片是CMYK模式的
2015-01-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人