自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

翻译 去中心Redis-Cluster规范(五)-配置处理,传播,故障转移

去中心Redis-Cluster规范(五)本文翻译自官方文档配置处理,传播,故障转移集群当前时代(epoch)Redis-Cluser使用一个概念类似Raft算法中的”term”,在Redis-Cluster中被称为时代(epoch),用来标记事件的递增版本.当多个节点提供了冲突的信息时,其他节点可以懂得哪个状态才是最新的.currentEpoch是个64位的无符号数....

2018-08-13 18:11:11 6974

翻译 去中心Redis-Cluster规范(四)-故障容忍

去中心Redis-Cluster规范(四)本文翻译自官方文档 这篇翻译的精确度可能不足,建议读者参考原文进行阅读.故障容忍心跳和流言消息Redis-Cluster节点间持续交换ping和pong数据包.这两种数据包具有相同的结构,并且都携带了重要的配置信息.只有消息类型字段是唯一的不同点.接下来我们会将ping和pong数据包统称为心跳(heartbeat)数据包...

2018-08-10 15:52:06 6853

翻译 去中心Redis-Cluster规范(三)-重定向和重哈希

去中心Redis-Cluster规范(三)本文翻译自官方文档重定向和重哈希MOVED重定向Redis客户端可以自由想集群内的任何节点(包括从节点)发送查询指令.收到指令的节点会分析查询指令,如果指令可接受(查询指令中只有一个key,或者多个属于相同hash slot的key)会查找指令中的key隶属的hash slot由哪个节点负责.如果hash slot由当前节点服务...

2018-08-09 22:50:18 8503

翻译 去中心Redis-Cluster规范(二)-主要组件概述

去中心Redis-Cluster规范(二)本文翻译自官方文档Redis-Cluster主要组件概述键分布模型键(key)空间被分割为16384个槽(slot),实际上这限制了Redis-Cluster最大主节点数为16384.(然而,建议的集群最大节点数约为1000)每个主节点处理16384个槽中的一部分.当集群没有在执行任何重配置操作(例如hash slot从一个节点...

2018-08-07 23:04:15 6573

原创 魅族生活服务数据同步优化方案

生活服务数据同步优化方案生活服务数据同步优化方案数据落地方案数据分析程序架构:程序抽象进一步优化数据落地方案数据分析生活服务需要定时拉取保存的数据有“商户,团购,电影”三类. 数据项 数据量 下载文件尺寸 是否有分页 更新频率 团购 400w+ 13G+ 是 高 商户 200W...

2018-08-07 16:12:11 6551

原创 魅族图片服务2.0

魅族图片服务2.0魅族图片服务2.0图片服务1.0现状及问题图片服务2.0功能需求设计说明设计目标图片处理方案元数据结构设计与存储高可用文件存储存储设备方案软件架构部署架构业务接入方式设计图片服务1.0现状及问题使用MFS作为存储,有单点失效问题IO性能差,经常不可用.代码耦合度高,不易拆分功能模块,难以维护和扩展新功能.调用第三方图片...

2018-08-07 15:49:15 2327

原创 通过分拆库存记录提升并发性

通过分拆库存记录提升并发性在许多互联网业务中扣除库存操作往往是瓶颈点,例如电商的秒杀活动,派发优惠券等等.因为数据库单挑记录只能串行操作,所有的并发访问需要加排他锁进行访问.在不向系统中引入其他组件的情况下可以通过将库存记录拆分为多条来提升并发性.基本方案如下.数据库中为每个批次建立多条记录,拆分库存以降低竞争.应用服务器在第一个访问发起时,初始化批次库存记录数组. 0...

2018-08-07 14:59:44 2424

原创 魅族秒杀活动优化

秒杀活动优化点优化缓存设计以减少交互次数例如:使用hmget一次性读取需要的数据;将相关数据打包在一起可以通过单个key访问返回针对秒杀活动指定业务状态枚举来表示正常逻辑错误减少使用异常控制逻辑分支.(找不到子活动,活动没开始,活动结束,用户参与过)这些状态,可以直接用状态枚举返回.某些业务逻辑不相关的操作可以异步处理记录活动监控数据这些,异步处理失败也不会影响正常业务,监控...

2018-08-07 14:44:56 2600

原创 魅族生活服务多机房方案

生活服务多机房方案做多机房部署的目的在于提升业务可用性,结合智能DNS,GSLB使用户可以就近访问提升体验,并避免DNS劫持.生活服务数据情况分析数据使用情况运营配置数据保存在mysql使用redis缓存VirtualType等保存在mysql的枚举数据,本地缓存并使用MetaQ进行广播同步订单回调数据,实时写入mysql,客户端用户重新可以查看数据,要求实时性较高...

2018-08-07 14:24:51 2559

原创 安全问题总结

安全测试问题总结SQL注入问题mybatis的mapper.xml配置中使用了“$”做占位符,该占位符在运行时会使用变量原样替换.如果变量是一个用户输入的值,就可以被SQL注入,所以要慎用该占位符,尽量使用“#”XSS跨域脚本访问对于用户的输入和输出给用户web页面的内容应当进行安全过滤,否则可能会保存恶意用户输入的攻击脚本.用户访问这些内容的时候,会导致用户cookie和se...

2018-08-07 14:16:37 6310

翻译 去中心Redis-Cluster规范(一)-主要特性和设计依据

去中心Redis-Cluster规范(一)本文翻译自官方文档Redis-Cluster目标Redis-Cluster是redis的分布式实现,设计目标如下(按重要程度排序):高性能可以线性扩展到1000个节点.没有代理节点,不需要在执行多个值的合并操作,使用异步复制.可接受的’写’安全性.系统尽最大努力保存连接在大多数节点的客户端的写操作.通常被确认的写操作只有小概率可能丢...

2018-08-07 14:14:08 3125

原创 代码审核清单

代码审核清单设计代码设计是否符合项目整体框架是否符合SOLID原则(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)设计模式是否使用得当代码是否放置在合适的包中是否提取了可重用代码是否过度设计,导致额外的复杂性可读性/可维护性字段,变量,方法,参数明明是否含义明确评审人是否能轻松读懂是否能够读懂测试用例测试用例是否覆盖了关键分支异常消息是否包含必要信...

2018-08-07 14:04:47 5817

原创 Http客户端常规使用说明

Http客户端常规使用说明HttpClient出自Apache基金会,历史非常悠久,经过长足的发展,功能非常丰富,Api也越来越易用.经过大规模应用,表现非常稳定.被定制打包在Android SDK中,可以在Android客户端中非常方便地使用.Http客户端常规使用说明HTTP协议简单说明Apache HttpClient(AHC)基础连接缓存Session&Coo...

2018-08-07 14:01:27 3387

原创 如何理解RESTful API

REST的英文全称Representation State Transfer : 直译为表现层状态转移.是通过HTTP协议来描述Web API的约定风格. 什么是服务?任何业务服务都可以抽象为对象的状态维护,基本操作就増删查改四种.例如: 访问文章的,很明显就是对文章及其列表的增删查改,文章是被做操的对象,通过增删查改修改文章的状态.银行转账,好像是有逻辑行为,但实...

2018-03-26 17:32:55 3993 1

原创 Proxy-Style Redis集群设计

Proxy-Style Redis集群设计概述:为了实现Redis作为内存数据库时的横向扩展和高可用,大致有如下三种方案.1. Proxy-Style2. Redis-Cluster3. Proxy-Style(Twemproxy,Codis)本文对三种方法做简要说明和比较,主要对Proxy-Style做展开描述.

2016-01-26 14:14:42 3040

原创 Jetty 类加载问题处理

本文涉及到的知识点1.Java虚拟机的类加载机制2.JavaServiceProvider 加载机制3.Java 类的初始化过程4.Jetty 服务器的配置方式

2014-10-24 15:41:33 17228 4

原创 Netty4源码分析之内存管理

本文通过一段段源码注释,加上一些说明,简单的描述Netty4跟踪内存泄露的设计方法.Netty使用装饰器模式,为ByteBuf增加内存跟踪记录功能.利用虚引用跟踪资源被VM垃圾回收的情况,加上ByteBuf的引用计数特性,进而判断是否发生内存泄露.

2014-02-16 22:49:48 8724

原创 Java中文编码问题

1.不可避免的编码转换. 计算机只能保存和理解二进制字节,而文字实际上是一种图形,所以要使用一种编码方法将图形转换为对应的二进制字节.在Java中这种编码为Unicode,使用16个二进制位表示一个字符,包含基本所有语言的任何字符. 在中文Windows系统中默认使用GBK,而OSX中默认使用UTF-8.  各种环境中的文字编码可能是不同的,

2013-11-23 12:48:14 3100

原创 Java线程中断

Java是一门原生支持多线程的语言,要开启一个线程很容易,使用如下代码new Thread(new Runnable() { @Override public void run() { //do something }}).start(); 这是我能想到的启动线程的最简单的代码,语义明确.但是要优雅得关闭该线程通常却很难. API

2013-11-23 12:43:56 2822

原创 node.js异步编程

ajax的盛行,使javascript成为前端开发人员的宠儿.现今js已经可以通过nodejs在服务器运行.本文将通过对一段代码的逐渐改进来展示如何让程序员使用javascript快乐得进行非阻塞异步编程.nodejs和mongodb的具体安装和使用方法请参考文章最后的参考文献列表. Hello,Node !        nodejs是编程就绪的,任何功能都要通过编程实现.这和Tom

2013-11-23 12:43:43 3012

原创 负载均衡基础

本文翻译自http://1wt.eu/articles/2006_lb/鉴于本人英语水平翻译的或许令人费解,请有兴趣的读者参照原文阅读.原文似乎写于2006年,最后一部分提到的有关keep-alive的内容或许稍显过时.现今大量越来越多的应用开始使用长连接服务,非阻塞IO和异步处理使维护连接的消耗变的很小了已经.所以还是要根据具体应用,来使用文章最后提供的调试技巧. 起初,WEB应

2013-11-23 12:43:38 1004

原创 Java NIO基本使用

NIO是Java提供的非阻塞I/O API.非阻塞的意义在于可以使用一个线程对大量的数据连接进行处理,非常适用于"短数据长连接"的应用场景,例如即时通讯软件.在一个阻塞C/S系统中,服务器要为每一个客户连接开启一个线程阻塞等待客户端发送的消息.若使用非阻塞技术,服务器可以使用一个线程对连接进行轮询,无须阻塞等待.这大大减少了内存资源的浪费,也避免了服务器在客户线程中不断切换带来的CPU消耗

2013-11-23 12:43:33 627

原创 Spring中Bean继承注意事项

今天在排除项目错误的时候发现,Spring的Bean继承并不是所有的属性都可以继承自parent的.depends on, autowire mode, dependency check, singleton, scope, lazy init.上述这些属性,全部都不从parent继承,而使用child自己的设置,如果不设置将采用默认值,跟parent无关.

2013-11-23 12:43:27 820

原创 有关WEB应用的安全性

常见的攻击方式及基本防护方法1.cookie篡改.可以对cookie进行加密签名.应尽量避免在cookie中保存重要数据.2.跨站脚本攻击.在接受请求或者返回生成的html页面时对内容进行转译.3.SQL注入攻击.在程序代码中写SQL语句时使用占位符绑定的方式添加参数.决不能使用字符串连接方式生成SQL语句执行.4.跨站点请求伪造.对于应用中的所有重要业务请求添加鉴权令牌.例如为页

2013-11-23 12:43:22 718

原创 编写JSP自定义标签

可以使用JSP自定义标签来实现简单的代码模板.自定义标签可以通过传统的继承TagSupport或SimpleTagSupport并实现相关方法,然后声明使用tag描述符进行声明. 这里要说的是一种更加简单的方式,TagFiles.Tag File其实就是一个JSP页面,只是把扩展名由.jsp变成了.tag,并放置在指定的目录下.TagFile中不能使用page指令,作为替代可以

2013-11-23 12:43:17 801

原创 有关代码复用

重用代码的目标是什么?(我们为什么要重用代码)答:避免重复发明轮子,有大量的已经写好的功能可以调用.这也是OO(面向对象的目标)什么样的代码是可以复用的代码? 1.接口良好的.(利于用户阅读和使用)         1).类的接口应该展现一致的抽象层次.         public classEmpolyeeContainer extends LinkedList{

2013-11-23 12:43:12 1167

原创 [转载]eclipse.ini中配置参数 -Xms,-Xmx,-PerSize(JVM内存参数说明)

1.堆(Heap)和非堆(Non-heap)内存按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,

2013-11-23 12:43:07 3701

原创 有关缓存

最近阅读了一些有关缓存的资料,主要是两个ehcache和memcached.由于都没有使用过,所以在此只是对收集的资料进行一些总结.1.性能比较ehcache和memcached的性能都很强.有些资料显示ehcache的性能数百倍于memcached.由于自己没有使用过,所以没有具体感受.不过memcached被很多大型网站使用,可见其性能已经相当强劲.2.持久化memcached

2013-11-23 12:43:02 621

原创 Guava学习笔记

Guava是Google的Java核心库,基于Java5+.Guava由com.google.common.annotations com.google.common.base com.google.common.base.internal com.google.common.collect com.google.common.io com.google.common.

2013-11-23 12:42:56 870

原创 ApacheHttpServer+mod_perl实现防盗链

最近上司部署了个研究防盗链的任务.经过多方搜索找到使用mod_perl实现防盗链的文章,但是整个安装配置过程阻碍甚多.故作此文以为梳理. 首先是依赖模块的安装.1.安装ApacheHttpServer2.2(这是废话)2.安装Perl5.8.*.或Perl5.12.* 3.使用PerlPPM安装mod_perl,命令如下 对于Perl5.8 ppm install 

2013-11-23 12:42:51 822

原创 Hibernate many-to-many,many-to-one,inverse测试

近日工作中发现对Hibernate一些概念模糊.故望此文可以帮助我理顺思路.写了一个简单的Demo做测试.两个实体public class Type { private int id; private String name; private Set books; //省略getter,setter等方法,下同}

2013-11-23 12:42:46 937

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除