- 博客(242)
- 资源 (24)
- 问答 (1)
- 收藏
- 关注
转载 Redis时延问题:高时延操作总结
转载:Redis时延问题分析及应对转载:redis 慢查询日志一、Redis单线程模型Redis的事件循环在一个线程中处理,作为一个单线程程序,重要的是要保证事件处理的时延短,这样,事件循环中的后续任务才不会阻塞; 当redis的数据量达到一定级别后(比如20G),阻塞操作对性能的影响尤为严重; 二、Redis高耗时操作1. keys、sort等命令keys命令用于查找
2017-11-18 14:59:57 4119
转载 Redis集群的方案总结:客户端Sharding/Redis Cluster/Proxy
转载:redis sentinel设计与实现转载:分布式一致性算法(一)一致性哈希算法(consistent hashing)转载:Jedis下的ShardedJedis(分布式)使用方法(一)转载:分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)转载:Codis集群的搭建与使用转载:Twemproxy 介绍与使用一、Redi
2017-11-16 21:03:21 8479 3
转载 Redis实现原理:数据同步机制分析
转载:Redis 数据同步机制分析一、数据全同步机制Redis的主从同步机制可以确保redis的master和slave之间的数据同步。按照同步内容的多少可以分为全同步和部分同步;按照同步的时机可以分为slave刚启动时的初始化同步和正常运行过程中的数据修改同步;本文将对这两种机制的流程进行分析。全备份过程中,在slave启动时,会向其master发送一条SYNC消息,mast
2017-11-16 15:50:54 9657
转载 Redis实现原理:消息循环、阻塞和事务
转载:Redis2.2.2源码学习——aeEvent事件轮询转载:【Redis源码剖析】 - Redis之事务的实现原理转载:redis源码笔记 - serverCron一、Redis的事件Redis是单线程模型(虚拟内存等功能会启动其它线程(进程)),通过事件机制异步地处理所有请求。 Redis的事件模型在不同的操作系统中提供了不同的实现,ae_epoll.h/ae_epoll.
2017-11-16 15:15:27 2587
转载 http协议知识点整理
转载:关于HTTP协议,一篇就够了一、HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面
2017-11-13 00:23:37 649
转载 “精通”的代价--C++后端开发知识点
转载:https://github.com/chankeh/cpp-backend-reference/blob/master/back-end.md后端开发面试知识点大纲:语言类(C++):关键字作用解释:volatile作用Volatile关键词的第一个特性:易变性。所谓的易变性,在汇编层面反映出来,就是两条语句,下一条语句不会直接使用上一条语句对应的volatile变量的寄存器内容,而是重新从
2017-11-12 22:53:34 1302 1
翻译 Java程序性能优化 读书笔记(十六)集合访问优化
转载:Java优化集合代码的一些方法我们平常在开发中都会用到很多的集合类,但是在使用的时候会有很多自己都不怎么注意的小习惯会影响一些效率,这次就介绍一下优化集合代码的一些小方法;一、分离循环中被重复调用的代码假设我们要循环一个数组,最简单的方法如下:for (String value : strings) { // Do something useful here
2017-11-02 22:14:09 443
翻译 Java程序性能优化 读书笔记(十五)String类的优化
转载:一、String对象的内存分布对于如下代码:String str1 = "hello";String str2 = new String("hello");第一种方法:引用str1被存放在栈区,字符串常量"hello"被存放在常量池,引用str1指向了常量池中的"hello"(str1中的存放了常量池中"hello"的地址)。第二种方法:引用str2被存放在栈区,同时在
2017-11-02 00:04:39 453
翻译 Java程序性能优化 读书笔记(十四)并行设计模式:生产者-消费者模式
转载:java线程深度解析(五)——并发模型(生产者-消费者)转载:java 多线程并发系列之 生产者消费者模式的两种实现一、生产者-消费者模式在经典的多线程模式中,生产者-消费者为多线程间协作提供了良好的解决方案。基本原理是两类线程,即若干个生产者和若干个消费者,生产者负责提交用户请求任务(到内存缓冲区),消费者线程负责处理任务(从内存缓冲区中取任务进行处理),两类线程之间通过共享内
2017-11-01 11:06:43 645
翻译 Java程序性能优化 读书笔记(十三)并行设计模式:不变模式
转载:《Java高并发程序设计》学习 --5.2 并行模式之不变模式一、不变模式在并行软件的开发过程中,同步操作似乎是不可避免的,当多线程对同一个对象进行读写操作时,为了保证数据一致性和正确性,有必要对对象进行同步。而同步操作对系统的性能是有相当的损耗的,为了尽可能的取出这些同步操作,提高程序并行能力,可以使用一种不可变对象,依靠对象的不变性,可以确保其在没有同步操作的多线程环境中依然时钟
2017-11-01 10:09:54 569
翻译 Java程序性能优化 读书笔记(十二)并行设计模式:Guarded Suspension模式
转载:一、Guarded Suspension模式Guarded Suspension意为保护暂停,其核心思想是仅当服务进程准备好时,才提供服务。设想一种场景,服务器可能会在很短时间内承受大量的客户端请求,客户端请求的数量可能超过服务器本身的即时处理能力,而服务端程序又不能丢弃任何一个客户请求。此时,最佳的处理方案莫过于让客户端要求进行排队,由服务端程序一个接一个处理。这样,既保证了所有的
2017-10-31 23:04:05 613
翻译 Java程序性能优化 读书笔记(十一)并行设计模式:Master-Worker模式
转载:并发模型(二)——Master-Worker模式一、Master-Worker模式Master-worker常用的并行模式之一,核心思想是由两个进程协作工作,master负责接收和分配任务,worker负责处理任务,并把处理结果返回给Master进程,由Master进行汇总,返回给客户端。它的好处在于能把一个大任务分解成若干个小任务,并行执行,提高系统吞吐量。而对于客户端
2017-10-31 22:42:25 486
翻译 Java程序性能优化 读书笔记(十)并行设计模式:Future模式
转载:Java多线程编程中Future模式的详解参考:葛一鸣,Java程序性能优化.清华大学出版社.随着多核时代的到来,CPU的并行能力有了很大的提升。在这种背景下,传统的串行程序已经无法发挥CPU的最大潜能,造成系统资源的浪费。而并行软件开发技术恰好可以在这方面将CPU性能发挥到极致。Java对多线程的支持为多核计算提供了强有力的保障。首先,Java中提供了Threa
2017-10-31 22:10:51 889
翻译 Java程序性能优化 读书笔记(九)优化组件:池
一、对象池化对象池化,是目前非常常用的一种系统优化技术。它的核心思想是,如果一个类被频繁请求使用,那么不必每次都生成一个实例,可以将这个类的一些实例保存在一个"池"中,待需要使用的时候直接从池中获取。这个"池"就称为对象池。在实现细节上,它可能是一个数组,一个链表或者任何集合类。对象池的使用非常广泛,其中最为大家所熟悉的,就是线程池和数据库连接池。线程池中,保存着可以被重用的线程对象,
2017-10-31 21:49:10 395
翻译 Java程序性能优化 读书笔记(八)优化组件:缓冲和缓存
一、缓冲缓冲区是一块特定的内存区域。开辟缓冲区的目的是通过缓解应用程序上下层之间的性能差异,提高系统的性能。缓冲可以协调上层组件和下层组件的性能差。当上层组件性能优于下层组件时,可以有效减少上层组件对下层组件的等待时间。基于这样的结构,上层应用组件不需要等待下层组件真实地接受全部数据,即可返回操作,加快了上层组件的处理速度,从而提升系统整体性能。缓冲最常用的场景就是提高I/O的速度。为此,
2017-10-31 21:45:30 591
翻译 Java程序性能优化 读书笔记(七)设计模式:ValueObject模式
一、Value Object模式在J2EE软件开发中,通常会对系统模块进行分层。展示层主要负责数据的展示,定义数据库的UI组织模式;业务逻辑层负责具体的业务逻辑处理;持久层通常指数据库以及相关操作。在一个大型系统中,这些层次很有可能被分离,并部署在不同的服务器上。而在两个层次之间,可能通过远程过程调用RMI等方式进行通信。如下图所示,展示层组件作为RMI的客户端,通过中间的业务逻辑层取得一
2017-10-31 00:14:19 545
翻译 Java程序性能优化 读书笔记(六)设计模式:观察者模式
一、观察者模式观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。它将观察者和被观察者的对象分离开。提高了应用程序的可维护性和重用性。观察者模式又称为发布/订阅(Publish/Subscribe)模式。观察者模式的应用场景:1、 对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变。2、 对象仅需要
2017-10-30 23:38:37 572 1
翻译 Java程序性能优化 读书笔记(五)设计模式:装饰者模式
一、装饰者模式在基本的设计原则中,有一条重要的设计准则就是合成/聚合复用原则。根据该原则的思想,代码复用应该尽可能使用委托,而不是使用继承。因为继承是一种紧密耦合,父类的任何改动都会影响其子类,不利于系统维护。而委托是松散耦合,只要接口不变,委托类的改变不会影响其上层对象。装饰者模式就是充分利用这种思想,利用委托,复用系统中的各个组件,在运行时,可以将这些组件进行叠加,构成一个“超级对象”
2017-10-30 23:27:24 327
翻译 Java程序性能优化 读书笔记(四)设计模式:享元模式
一、享元模式享元模式是设计模式中少数几个以调高系统性能为目的的设计模式。它的核心思想是:如果在一个系统中存在多个相同的对象,那么只需共享一份对象的拷贝,而不必为每一次使用都创建新的对象。在享元模式中,由于需要构建和维护这些可以共享的对象,因此,常常会出现一个工厂类,用于维护和创建对象。享元模式对性能提升的主要帮助有两点:1.可以节省重复创建对象的开销,因为被享元模式维护的相
2017-10-30 23:15:01 382
翻译 Java程序性能优化 读书笔记(三)设计模式:代理模式
一、代理模式代理模式也是一种很常见的设计模式。它使用代理对象完成用户请求,屏蔽用户对真实对象的访问。在现实中,使用代理的情况很普遍,而且原因也很多。比如,当事人因为某些隐私不方便出面,或者当事人不具备某些相关的专业技能,而需要一个职业人员来完成一些专业的操作,也可能由于当事人没有时间处理事务,而聘用代理人出面。就如同现实中的代理一样,代理人被授权执行当事人的一些适宜,而无需当事人出面,从第
2017-10-30 22:48:11 366
翻译 Java程序性能优化 读书笔记(一)Java性能调优概述
一、程序性能的主要表现点程序性能的主要表现点执行速度:程序的反映是否迅速,响应时间是否足够短内存分配:内存分配是否合理,是否过多地消耗内存或者存在内存泄漏启动时间:程序从运行到可以正常处理业务需要花费多少时间负载承受能力:当系统压力上升时,系统的执行速度、响应时间的上升曲线是否平缓衡量程序性能的主要指标:执行时间:程序从运行到结束所使用的时间CPU时间:
2017-10-30 22:19:40 514
转载 MySql从一窍不通到入门(十)MySQL数据库的高可用方案
转载:MySQL高可用方案高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能保证整个系统的高可用。对于数据库服务而言,高可用可能更复杂,对用户的服务可用,不仅仅是能访问,还需要有正确性保证,因此讨论数据库的高可用方案时,一般会同时考虑方案中数据
2017-10-25 00:02:34 1040
转载 MySql从一窍不通到入门(九)Sharding的实现和规避
转载:数据库专家:MySQL分片水很深转载:数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量转载:
2017-10-24 01:25:07 2528
转载 MySql从一窍不通到入门(八)复制(replication)和集群(cluster)/读写分离
转载:MySQL Replication 常用架构转载:使用MyCat实现MySQL的分片处理和读写分离转载:keepalived+mysql双主复制高可用方案转载:浅谈mysql主从复制的高可用解决方案
2017-10-24 01:03:47 1216
转载 MySql从一窍不通到入门(七)分区策略:HASH/RANGE/LIST/KEY
转载:数据表分区策略及实现(一)一、分区的原理 表的分区的原理理解起来比较简单,其实就是把一张大数据量的表,根据分区策略进行分区,分区设置完成之后,由数据库自身的储存引擎来实现分发数据到指定的分区中去,正如上图所示,一张数据表被分成了n个分区,并且分区被放入到不同的介子disk中,每个disk中包含自少一个分区,这就实现了数据的均衡以及通过跨分区介子检索提高了整
2017-10-24 00:59:10 2130 1
转载 MySql从一窍不通到入门(六)分表策略:取模/时间/哈希/区域
转载:数据表分割策略和实现一、分表原理 如上图所示,其实单表的分割比较简单,就是将当前的一张大数据表中的数据,按照约定的分割规则,将数据均摊到多张小的数据表,目的只是为日后表的CURD操作IO压力更小所设计的。对于Split-Strategy为分割表的策略,具体介绍在下面第二部分,而表分割的前提条件无疑是必须有一张大数据量的表Table,并将其根据分割算法,划分
2017-10-24 00:55:25 5329 2
转载 MySql从一窍不通到入门(五)Sharding:分表、分库、分片和分区
转载:用sharding技术来扩展你的数据库(一)sharding 介绍转载:MySQL架构方案 - Scale Out & Scale Up.转载:一、ShardingSharding 是把数据库横向扩展(Scale Out)到多个物理节点上的一种有效的方式。Shard这个词的意思是“碎片”。如果将一个数据库当作一块大玻璃,将这块玻璃打碎,那么每一小块都称为数据库的碎片(Da
2017-10-23 23:23:22 52721 4
转载 分布式一致性算法(七)分布式事务的实现方案:TCC
转载:分布式事务之说说TCC事务转载:转载:一、TCC的含义TCC分别对应Try、Confirm和Cancel三种操作,这三种操作的业务含义如下:Try:预留业务资源Confirm:确认执行业务操作Cancel:取消执行业务操作稍稍对照下关系型数据库事务的三种操作:DML、Commit和Rollback,会发现和TCC有异曲同工之妙。在一个跨应用的业
2017-10-21 15:15:06 2599
转载 分布式一致性算法(六)分布式事务的实现方案:消息事务
转载:转载:分布式消息队列RocketMQ–事务消息–解决分布式事务的最佳实践转载:如何用消息系统避免分布式事务?一、拜占庭将军问题拜占庭将军问题(Byzantine failures),是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。因此对一致性的研究一般假设信道是可靠的,或不存在本问题。拜占庭位于
2017-10-21 11:41:08 1527
转载 分布式一致性算法(五)分布式事务的实现方案:2PC之XA/JTS
转载:系统分布式情况下最终一致性方案梳理转载:分布式系统事务一致性解决方案转载:分布式事务的典型处理方式:2PC、TCC、异步确保和最大努力型转载:分布式消息队列RocketMQ–事务消息–解决分布式事务的最佳实践转载:如何用消息系统避免分布式事务?转载:深入理解分布式事务,高并发下分布式事务的解决方案一、XAXA是由X/Open组织提出的分布式事务的规范。XA规范主要
2017-10-20 17:20:55 1140
转载 分布式一致性算法(四)分布式事务概述:ACID-CAP-BASE和1PC-2PC-3PC
转载:Java Jedis操作Redis示例(五)——Redis的事务、管道和脚本转载:分布式一致性算法(二)Paxos算法转载:关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究一、分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简
2017-10-20 15:35:06 2293 1
转载 MySql从一窍不通到入门(四)Innodb/MyISAM和锁机制
转载: MySQL中 InnoDB 和 MyISAM 小结转载:MySQL中的锁(表锁、行锁)转载:MyISAM和InnoDB索引实现对比一、Innodb和MyISAMInnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的
2017-10-19 22:48:19 1128
转载 Java 编程思想(十一)异常
转载:深入理解java异常处理机制1. JAVA异常 异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发
2017-10-17 22:55:13 369
转载 Java设计模式概论
转载:Java开发中的23种设计模式详解(转)一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式
2017-10-09 09:30:46 362
翻译 Java程序性能优化 读书笔记(二)设计模式:单例模式
转载:Spring的单例模式底层实现单例模式也属于创建型模式,所谓单例,顾名思义,所指的就是单个实例,也就是说要保证一个类仅有一个实例。单例模式有以下的特点:① 单例类只能有一个实例② 单例类必须自己创建自己的唯一实例③ 单例类必须给所有其他对象提供这一实例按照单例的实现思路,共有三种方式实现单例1.饿汉模式public class Singleton1{
2017-09-26 21:21:14 392
转载 Java 编程思想(十)枚举
转载:《Java编程思想》学习笔记16——枚举转载:java enum(枚举)使用详解 + 总结一 原始的常量原始的接口定义常量:public interface IConstants { String MON = "Mon"; String TUE = "Tue"; String WED = "Wed"; String THU = "Thu";
2017-09-19 15:45:59 538
转载 Java 编程思想(九)Java 序列化
转载:Java基础学习总结——Java对象的序列化和反序列化转载:深入理解Java对象序列化一、序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。 在很多
2017-09-19 11:54:41 528
转载 Java 编程思想(六)Java I/O
转载:java基础学习总结——流转载:《Java编程思想》学习笔记11——Java I/O转载:1. Java I/O和流Java中使用流来处理程序的输入和输出操作,流是一个抽象的概念,封装了程序数据于输入输出设备交换的底层细节。Java I/O中又将流分为字节流和字符流,字节流主要用于处理诸如图像,音频视频等二进制格式数据,而字符流主要用于处理文本字符等类型的输入输出。2
2017-09-19 10:24:55 696
转载 Java 编程思想(五)Java泛型
1. Java泛型的目的:a. Java语言引入泛型的好处是安全简单。可以将运行时错误提前到编译时错误。在java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现
2017-09-19 09:33:28 821
转载 Java 编程思想(四)动态代理
转载:转载:转载:一 代理模式代理模式是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个真实对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。通过代理层这一中间层,有效的控制对于真实委托类对象的直接访问,同时可以实现自定义的控制策略(如Spring的AOP机制),设计上获得更大的灵活性。
2017-09-15 16:46:33 691
互联网公司技术架构资料-百度_淘宝_腾讯_新浪
2017-11-25
mybatis generator及配置文件
2017-08-16
TDD_C++_Testngpp_VS2010 示例程序
2017-06-20
testngpp VS2008 官方示例(不适用VS2010)
2017-06-19
testngpp1.1 源码 官网下载 已确认可以编译通过
2017-06-19
数据结构与算法分析C语言描述
2015-03-24
程序员求职宝典
2015-03-24
Windows驱动开发技术详解
2015-03-24
100题系列by_July
2015-03-24
Gstreamer Android h264硬解码
2015-07-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人