自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

此博客已停用,博文会逐渐转移到新地址,http://blog.csdn.net/liupeifeng3514

此博客已停用,博文会逐渐转移到新地址,http://blog.csdn.net/liupeifeng3514

  • 博客(27)
  • 资源 (5)
  • 收藏
  • 关注

转载 webim如何保证消息的可靠投递

消息的可靠性,即消息的不丢失和不重复,是im系统中的一个难点。当初qq在技术上(当时叫oicq)因为以下两点原因才打败了icq:1)qq的消息投递可靠(消息不丢失,不重复)2)qq的垃圾消息少(它antispam做得好,这也是一个难点,但不是本文重点讨论的内容)今天,本文将用十分通俗的语言,来讲述webim系统中消息可靠性的问题。一、报文类型im的客户端与服务器通过发送

2017-08-31 17:50:39 437 1

转载 http如何像tcp一样实时的收消息?

一、webim如何实现消息推送webim通常有三种方式实现推送通道:WebSocketFlashSockethttp轮询其中 1 和 2 是用Tcp长连接实现的,其消息的实时性可以通过tcp保证。方案3 才算是webim实现消息推送的“正统”方案,用http短连接轮询的方式实现“伪长连接”,既然是轮询,有朋友就对消息的实时性产生了质疑。本文要解答,webim使用http长轮询如何保证消息的绝

2017-08-31 15:24:54 311

转载 HTTP长连接和短连接以及推送技术原理

HTTP长连接和短连接1. HTTP协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。2. 如何理解HTTP协议是无状

2017-08-31 15:03:59 488

转载 系统间通信—信息格式

在计算机领域为了保证信息能够被处理,信息也会被做成特定的格式,而且要确保目标能够明白这种格式。常用的信息格式包括:1、XML可扩展标记语言,这个语言由W3C(万维网联盟)进行发布和维护。XML语言应用之广泛,扩展之丰富。适合做网络通信的信息描述格式(一般是“应用层”协议了)。例如Google 定义的XMPP通信协议就是使用XML进行描述的;不过XML的更广泛使用场景是对系统环境进行描述(因为它会造成

2017-08-30 18:21:10 483

转载 session一致性架构设计实践

一、缘起什么是session?服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。 Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建session,提供数据存储功能。最常见的,会把用户的登录信息、用户信息存储在session中,以保持登录状态。 什么是session一致性问题?只要用户不重启浏览器,每次ht

2017-08-26 00:40:58 299

转载 基于微服务的软件架构模式

微服务(micro services)这个概念不是新概念,很多公司已经在实践了,例如亚马逊、Google、FaceBook,Alibaba。微服务架构模式(Microservices Architecture Pattern)的目的是将大型的、复杂的、长期运行的应用程序构建为一组相互配合的服务,每个服务都可以很容易得局部改良。 Micro这个词意味着每个服务都应该足够小,但是,这里的小不能用代码量

2017-08-26 00:14:03 619

转载 防雪崩利器:熔断器 Hystrix 的原理与使用

前言分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应. 为了应对服务雪崩, 一种常见的做法是手动服务降级. 而Hystrix的出现,给我们提供了另一种选择.服务雪崩效应的定义服务雪崩效应是一种因 服务提供者 的不可用导致 服务调用者 的不可用,并将不可用 逐渐放大 的过程.如果所示:上图中, A为服务提供者, B为A的服务调用者, C和D是B的服务调用者

2017-08-25 23:57:08 503

转载 AngularJS—关于 video 路径赋值的问题

首先,先介绍一下 angular.js 的一个小功能 ng-src ,这个是比较常见的方法,用于给图片动态添加路径。例如:<img ng-src="http://www.gravatar.com/avatar/{{hash}}" />或者<img ng-src="{{hash}}" />现在进入正题:当你把上面的方法用在视频标签上的时候,那就会产生一个坑,一个不深不浅的坑。要么报错,要么无法获取路

2017-08-23 11:18:07 2859 1

转载 Redis系列—Redis事件订阅

Redis从2.X版本开始,就支持一种基于非持久化消息的、使用发布/订阅模式实现的事件通知机制。所谓基于非连接保持,是因为一旦消息订阅者由于各种异常情况而被迫断开连接,在其重新连接后,其离线期间的事件是无法被重新通知的(一些redis资料中也称为即发即弃)。而其使用的发布/订阅模式,意味着其机制并不是由订阅者周期性的从Redis服务拉取事件通知,而是由Redis服务主动推送事件通知到符合条件的若干订

2017-08-17 09:07:57 10031 1

转载 Redis系列—redis.conf文件详解

Redis 3.2版本中,最重要的配置文件就是存在于安装目录中的名叫 redis.conf 的文件。其中的范本格式清楚说明了 Redis 3.2 版本中可以配置的主要信息和含义。主要包括几个方面:网络配置项、一般配置项、快照配置项、复制(高可用)配置项、集群配置项、安全配置项、资源限制配置项、LUA脚本配置、慢日志配置、监控配置、事件通知配置、数据结构高级配置等。网络配置项和一般配置项  bind

2017-08-17 07:57:09 914

原创 eclipse导入项目后HTML文件都是乱码的解决办法

解决方式: windows->perferences->General->Content Types->Text->HTML,然后将Default encoding设置为utf-8即可。

2017-08-16 18:55:51 2349

转载 MySQL系列—慢查询优化案例

查询优化神器 – explain命令关于explain命令相信大家并不陌生,具体用法和字段含义可以参考官网,这里需要强调rows是核心指标,绝大部分rows小的语句执行一定很快(有例外,下面会讲到)。所以优化语句基本上都是在优化rows。慢查询优化基本步骤先运行看看是否真的很慢,注意设置SQL_NO_CACHE;where条件单表查,锁定最小返回记录表。这句话的意思是把查询语句的where都应用

2017-08-15 17:57:13 473

转载 MySQL系列—EXPLAIN 介绍

EXPLAIN 介绍为了帮助开发人员根据数据表中现有索引情况,了解自己编写的SQL的执行过程、优化SQL结构,mysql提供了一套分析功能叫做SQL执行计划(explain)。下面我们就为大家介绍一下执行计划功能的使用。讲解过程中使用的数据表的结构:# 我们所示例的数据表和SQL语句均是工作在InnoDB数据库引擎下# myuser数据表一共有4个字段,3个索引。# user_name字段上创建

2017-08-13 23:34:00 560 1

原创 MySQL系列—特定类型查询优化

优化COUNT()查询  COUNT()可能是被大家误解最多的函数了,它有两种不同的作用,其一是统计某个列值的数量,其二是统计行数。统计列值时,要求列值是非空的,它不会统计NULL。如果确认括号中的表达式不可能为空时,实际上就是在统计行数。最简单的就是当使用COUNT(*)时,并不是我们所想象的那样扩展成所有的列,实际上,它会忽略所有的列而直接统计所有的行数。  我们最常见的误解也就在这儿,在括号内

2017-08-13 16:56:51 603

原创 MySQL系列—Scheme设计与数据类型优化

选择数据类型只要遵循小而简单的原则就好,越小的数据类型通常会更快,占用更少的磁盘、内存,处理时需要的CPU周期也更少。越简单的数据类型在计算时需要更少的CPU周期,比如,整型就比字符操作代价低,因而会使用整型来存储ip地址,使用DATETIME来存储时间,而不是使用字符串。这里总结几个可能容易理解错误的技巧:1、通常来说把可为NULL的列改为NOT NULL不会对性能提升有多少帮助,只是如果计划在列

2017-08-13 16:39:15 1432

原创 MySQL系列—建索引的几大原则和使用索引优化查询

建索引的几大原则1、最左前缀匹配原则,非常重要的原则mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配。比如a = 1 and b = 2 and c > 3 and d = 4,如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。2、=和in可以乱序比如a = 1 and b = 2

2017-08-13 10:31:24 4796

原创 MySQL系列—详解B+Tree

配合上一篇文章理解:MySQL系列—索引相关的数据结构和算法(B+Tree)如上图,是一颗b+树,关于b+树的定义可以参见B+树,这里只说一些重点,浅蓝色的块我们称之为一个磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄色所示),如磁盘块1包含数据项17和35,包含指针P1、P2、P3,P1表示小于17的磁盘块,P2表示在17和35之间的磁盘块,P3表示大于35的磁盘块。真实的数据存

2017-08-13 10:00:48 639

转载 MySQL系列—聚集索引和非聚集索引

SQL SERVER 提供了两种索引聚集索引:聚集索引表示表中存储的数据按照索引的顺序存储,检索效率比非聚集索引高,但对数据更新影响较大;非聚集索引:非聚集索引表示数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置,非聚集索引检索效率比聚集索引低,但对数据更新影响较小。聚集索引  该索引中键值的逻辑顺序决定了表中相应行的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。

2017-08-12 11:19:29 3626

原创 MySQL系列—索引相关的数据结构和算法(B+Tree)

MySQL目前提供了以下4种索引。B-Tree 索引:最常见的索引类型,大部分引擎都支持B树索引。HASH 索引:只有Memory引擎支持,使用场景简单。R-Tree 索引(空间索引):空间索引是MyISAM的一种特殊索引类型,主要用于地理空间数据类型。Full-text (全文索引):全文索引也是MyISAM的一种特殊索引类型,主要用于全文索引,InnoDB从MYSQL5.6版本提供对全文

2017-08-12 08:52:39 1194

原创 加密系列——SHA加密算法

import java.security.MessageDigest;/** * 采用SHA加密 * * @author peipei3514 * @datetime 2017-8-11 12:00:34 */public class SHAUtil { /*** * SHA加密 生成40位SHA码 */ public static String s

2017-08-11 18:52:44 428

转载 加密系列——MD5加密算法

import java.security.MessageDigest;/** * 采用MD5加密 * * @author peipei3514 * @datetime 2017-8-11 12:00:34 */public class MD5Util { /*** * MD5加密 生成32位md5码 */ public static String md

2017-08-11 18:43:09 686

原创 加密系列——3DES加密 解密算法

3DES的在Java的实现与DES类似,如下代码为3DES加密算法、CBC模式、PKCS5Padding填充方式的加密解密结果,参考代码如下所示:import java.security.Key;import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import

2017-08-11 18:15:04 1385

原创 加密系列——DES加密 解密算法

对称加密也就是密钥加密。对称加密和解密使用同一个密钥。加密时,我们用这个密钥初始化密码算法,密码算法对经过它的数据进行加密;解密时,密码算法用同一个密钥初始化,密码算法对经过它的数据进行解密。加密的强度依赖于密钥的长度。一般的对称密钥长度在40-128位之间,有些算法可能更长。建议使用128位以上的对称加密算法,如:DESede(TripleDES)、Blowfish、AES。对称加密比不对称

2017-08-11 17:39:01 1313

转载 加密系列—Java中常用的加密方法(JDK)

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。大体上分为双向加密和单向加密 ,而双向加密又分为对称加密和非对称加密 (有些资料将加密直接分为对称加密和非对称加密)。   双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文。而单向加密只是对信息进行了摘要计算,不能通过算法生成明文,单向加密从严格意思上说不能算

2017-08-10 07:57:29 914

转载 扫盲系列—机械硬盘简介

一、机械硬盘结构机械硬盘大体上由以下几部分构成:机械臂(磁头臂);主轴;多个成对的磁头和磁面。在每个磁面上被分成多个磁道、多个扇面和多个扇区,它们的具体存在形式如下:磁面上会有多个磁道,它们在一个磁面上拥有不同的磁道编号。 从磁面最外围离主轴最远的磁道到磁面最内侧离主轴最近的磁道,它们的编号从0开始,分别是0、1、2、3、4…….N(N大于等于10000,依据硬盘制作工艺不同而不同)。磁

2017-08-04 10:49:23 3747

原创 Keepalived系列—配置文件keepalived.conf详解

Keepalived的配置文件可以分为三块:全局定义块:对整个 Keepalive 配置生效的,不管是否使用 LVS;VRRP 实例定义块:是 Keepalived 的核心;虚拟服务器(LVS)定义块:LVS 配置只在使用 Keepalived 来配置和管理 LVS 时才需要使用,如果仅仅使用 Keepalived做 HA,LVS 的配置完全是不需要的。配置文件都是以块(block)形

2017-08-02 22:50:41 12151

原创 MySQL系列—修改多张分表的相同字段

既然是分表,肯定是按一定的规律进行分表的,比如:以下分表是按另一张表 cust_customs 的主键 id 进行分表的。那么,就可以按如下方法进行批量修改:在命令行下执行如下语句:select concat('ALTER TABLE task_sub_',id,' MODIFY two VARCHAR(5000);') from cust_customer输出结果如下:然后把输出的结果放到命令行里

2017-08-01 13:35:12 5279

传递复杂数据的AIDL Service的实现

传递复杂数据的AIDL Service的实现

2017-03-30

使用AIDL完成进程间的简单通信

使用AIDL完成进程间的简单通信

2017-03-30

ListView Item多布局的实现

ListView Item多布局的实现

2017-03-21

可复用的自定义BaseAdapter

2017-03-21

Android源码编译环境配置步骤(详细、有截图)

Android源码编译环境配置步骤(详细、有截图) VirtualBox、Ubuntu下载、安装、配置

2017-01-20

空空如也

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

TA关注的人

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