mongodb和redis设计原理简析】的更多相关文章

转自:http://blog.csdn.net/yangbutao/article/details/8309539 redis:   1.NIO通信     因都在内存操作,所以逻辑的操作非常快,减少了CPU的切换开销,所以为单线程的模式(逻辑处理线程和主线程是一个).     reactor模式,实现自己的多路复用NIO机制(epoll,select,kqueue等)    单线程处理多任务   2.数据结构    hash+bucket结构,当链表的长度过长时,会采取迁移的措施(扩展原来两倍…
在集群系统中,经常会需要将Session进行共享.不然会出现这样一个问题:用户在系统A上登陆以后,假如后续的一些操作被负载均衡到系统B上面,系统B发现本机上没有这个用户的Session,会强制让用户重新登陆.此时用户会很疑惑,自己明明登陆过了,为什么还要自己重新登陆. 什么是Session 这边再普及下Session的概念:Session是服务器端的一个key-value的数据结构,经常被用户和cookie配合,保持用户的登陆回话.客户端在第一次访问服务端的时候,服务端会响应一个sessionI…
PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示例 Override Annotation   Java   1 2 3 @Override public void onCreate(Bundle savedInstanceState);   Retrofit Annotation   Java   1 2 3 @GET("/users/{use…
转载自http://shift-alt-ctrl.iteye.com/blog/1987416 Apache Thrift是一个跨语言的服务框架,本质上为RPC,同时具有序列化.发序列化机制:当我们开发的service需要开放出去的时候,就会遇到跨语言调用的问题,JAVA语言开发了一个UserService用来提供获取用户信息的服务,如果服务消费端有PHP/Python/C++等,我们不可能为所有的语言都适配出相应的调用方式,有时候我们会很无奈的使用Http来作为访问协议;但是如果服务消费端不能…
不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义.解析,并对几个 Android 开源库 Annotation 原理进行简析.PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 完整版原文见:Java Android 注解(Ann…
原理简析 摘录php.ini文件的默认配置(php5.4): ; Common Values: ; E_ALL (Show all errors, warnings and notices including coding standards.) ; E_ALL & ~E_NOTICE (Show all errors, except for notices) ; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for…
(六)Redis设计原理及相关问题   通过前面关于Redis五种数据类型.相关高级特性以及一些简单示例的使用,对Redis的使用和主要的用途应该有所掌握,但是还有一些原理性的问题我们在本部分做一个探讨.   本部分参考了一些其他博客,在文后的参考链接中注明,特此说明. 1.Redis与mysql的区别   Redis是一种Key-value型的存储数据库,我们自然有一个疑惑,我们早已会用类似于mysql这样的关系型数据库了,那么他们之间有什么区别,为什么还要用Redis.   (1)数据库类型…
写着前面 IdentityServer4的学习断断续续,兜兜转转,走了不少弯路,也花了不少时间.可能是因为没有阅读源码,也没有特别系统的学习资料,相关文章很多园子里的大佬都有涉及,有系列文章,比如: 晓晨大佬的:https://www.cnblogs.com/stulzq/p/8119928.html 蟋蟀 大佬的: https://www.cnblogs.com/xishuai/tag/[34]%E5%B0%8F%E8%8F%9C%E5%AD%A6%E4%B9%A0%E7%BC%96%E7%A…
SIFT(Scale-Invariant Feature Transform)是一种具有尺度不变性和光照不变性的特征描述子,也同时是一套特征提取的理论,首次由D. G. Lowe于2004年以<Distinctive Image Features from Scale-Invariant Keypoints[J]>发表于IJCV中.开源算法库OpenCV中进行了实现.扩展和使用. 本文主要依据原始论文和网络上相关专业分析,对SIFT特征提取的算法流程进行简单分析.由于涉及到的知识概念较多,本人…
学完MySQL InnoDB之后,又开始学习和研究Redis. 首先介绍下书:<Redis设计与实现>第二版 黄健宏著,机械工业出版社,388页,基于redis3.0版本.版本有点低,这个影响不大,基本面变化不大,而变化的部分网上查资料可以弥补. 一.概述 Redis服务器是一个键值对(key-value pair)类型数据库服务器,属于NoSQL.Redis源码使用ANSI C语言编写而成. 它最大的特点数据全部放缓存,主要用于读写操作频繁的,如秒杀系统.我联想的是我们监控系统中的秒级回放,…
https://github.com/HappyTomas/another-tutorial-about-java-web/blob/master/00-08.md 在00-02.理解HTTP中给出了一个简单的服务器代码,Tomcat的设计思路也是类似的. Tomcat是一个servlet容器. http://www.kaifajie.cn/tomcat6/7454.html中的内容值得参考: 先不去关技术细节,对一个servlet容器,我觉得它首先要做以下事情: 1:实现Servlet api…
0x1  简介 网络欺骗攻击作为一种非常专业化的攻击手段,给网络安全管理者,带来严峻的考验.网络安全的战场已经从互联网蔓延到用户内部的网络, 特别是局域网.目前利用ARP欺骗的木马病毒在局域网中广泛传播,导致网络随机掉线甚至整体瘫痪,通讯被窃听,信息被篡改等严重后果. 0x2  ARP协议概述 ARP协议(address resolution protocol)地址解析协议 一台主机和另一台主机通信,要知道目标的IP地址,但是在局域网中传输数据的网卡却不能直接识别IP地址,所以用ARP解析协议将…
一. 扯淡 转眼间毕业快一年了,这期间混了两份工作,从游戏开发到算法.感觉自己还是喜欢算法,可能是大学混了几年算法吧!所以不想浪费基础... 我是个懒得写博客的人,混了几年coding,写的博客不超过10篇.现在参加工作,必须得改掉懒的坏习惯,以后多尝试写写,好总结总结,也方便以后复习用. 二.算法 1. 前言 1.1 EM会涉及一些数学知识,比如最大似然估计和Jensen不等式等知识,这些知识最烦了,动不动就一堆推导公式,看着就觉得蛋疼,经过它讲的原理比较简单,多以在此略过. 1.2 本文的侧…
动态代理: 1.动态编译 JavaCompiler.CompilationTask 动态编译想理解自己查API文档 2.反射被代理类 主要使用Method.invoke(Object o,Object... args);对带有指定参数的指定对象调用由此 Method 对象表示的底层方法. 3.类的加载 URLClassLoader可以加载硬盘任意位置的.java文件.class.getClassLoader只能加载classPath目录下的类. 动态代理可以理解为 动态生成发射代理的类.这其中可…
要了解cgroup实现原理,必须先了解下vfs(虚拟文件系统).因为cgroup通过vfs向用户层提供接口,用户层通过挂载,创建目录,读写文件的方式与cgroup交互.因为是介绍cgroup的文章,因此只阐述cgroup文件系统是如何集成进vfs的,过多的vfs实现可参考其他资料. 1.[root@VM_109_95_centos /cgroup]#mount -t cgroup -ocpu cpu /cgroup/cpu/ 2.[root@VM_109_95_centos /cgroup]#c…
上篇文章<Android无线开发的几种常用技术>我们介绍了几种android移动应用开发中的常用技术,其中的热补丁正在被越来越多的开发团队所使用,它涉及到dalvik虚拟机和android的一些核心技术,现在就来介绍下它的一些原理. 本篇先介绍dexposed方案:https://github.com/alibaba/dexposed,它是手机淘宝团队使用的热补丁方案,后来开源到github上,取的名字dexposed表明了自己是基于大名鼎鼎的xposed hook方案,有饮水思源.回馈开源项…
引言 DHCP是网络体系结构中应用层的一个重要协议,它可以帮助我们对要连接到互联网的计算机进行IP地址等信息的配置.本文从DHCP的原理出发,就DHCP的工作过程 进行详细的探讨. 主要报文 发现报文 DHCPDISCOVER 提供报文 DHCPOFFER 请求报文 DHCPREQUEST 确认报文 DHCPACK 否认报文 DHCPNAK 释放报文 DHCPRELEASE 工作过程 DHCP使用客户服务器方式.根据客户与服务器之间的报文交互情况,我们可以把整个DHCP协议工作过程简单地分成以下…
1. 解决共享资源冲突 对于并发工作,需要某种方式来防止两个任务同时访问相同的资源,至少在关键阶段不能出现这种冲突情况. 方法之一就是当资源被一个任务使用时,在其上加锁.第一个访问某项资源的任务必须锁定这项资源,使其他任务在其被解锁之前,就无法访问它了,而在其被解锁之时,另一个任务就可以锁定并使用它,以此类推.Java中的synchronized.ReentrantLock就属于这种方式,关于这部分,前面有专门撰文详述: synchronized学习.synchronized底层实现学习 Ree…
HashMap底层就是一个数组结构,数组中的每一项又是一个链表. jdk源码: transient Node<K,V>[] table; static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next; Node(int hash, K key, V value, Node<K,V> next) { th…
原文:http://www.cnblogs.com/xie-zhan/p/6020954.html JavaScript实现继承的时候,需要进行对象的拷贝:而为了不影响拷贝后的数据对原数据造成影响,也就是存在共享关系的时候,我们就需要进行深拷贝: 这里就做一个简单的分析其实现原理 先上代码: var obj1 = { name : 'Awen', song : { auther : '小明', title : '广州' }, hobby: ['吃','吃吃','吃吃吃'] }; var obj2…
[转]http://www.cnblogs.com/carsonzhu/p/5225778.html HTTPS的工作原理 HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息.TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法.握手过程的简单描述如下:1.浏览器将自己支持的一套加密规则发送给网站.2.网站从中选出一组加密算法与HASH算…
使用jsp.php.asp或者后来的struts等等的朋友,不一定知道什么是模版,但一定很清楚这样的开发方式: <div class="m-carousel"> <div class="m-carousel-wrap" id="bannerContainer"> </div> </div> <ul class="catelist onepx" onepxset="…
本文由嵌入式企鹅圈原创团队成员.阿里资深工程师Hao分享. 上篇文章<Android无线开发的几种常用技术>我们介绍了几种android移动应用开发中的常用技术,其中的热补丁正在被越来越多的开发团队所使用,它涉及到dalvik虚拟机和android的一些核心技术,现在就来介绍下它的一些原理. 本篇先介绍dexposed方案:https://github.com/alibaba/dexposed,它是手机淘宝团队使用的热补丁方案,后来开源到github上,取的名字dexposed表明了自己是基于…
1.简介 Redis中的每个Key-Value在内存中都会被划分成DictEntry.RedisObject以及具体对象,其中DictEntry又分别包含指向Key和Value的指针(以RedisObject的形式)以及指向下一个DictEntry的指针. Key固定是字符串,因此使用字符串对象来进行表示,Value可以是字符串.列表.哈希.集合.有序集合对象中的任意一种. Redis提供了五种对象,每种对象都需要使用RedisObject进行表示. Redis使用redisObject结构来表…
redisReply 定义如下: /* This is the reply object returned by redisCommand() */ typedef struct redisReply { int type; /* 返回值类型 */ long long integer; /* 当返回类型为 REDIS_REPLY_INTEGER 时 */ size_t len; /* 返回的字符串长度 */ char *str; /* 当返回值类型为 REDIS_REPLY_ERROR 和 RE…
因为最近在群里被问到如何理解 .NET Core 3.0 可卸载程序集,所以就写了这篇简单的分析. 因为时间实在很少,这篇文章只简单的罗列了相关的代码,请配合官方说明文档理解. 另外,书籍<.NET Core 底层原理>预计 11 月出版,出版社比较拖 :O. 链接 可卸载程序集的官方说明文档如下: https://github.com/dotnet/coreclr/blob/release/3.0/Documentation/design-docs/unloadability.md 程序集中…
1.      环境配置 a)        配置系统环境变量HADOOP_HOME b)        把hadoop.dll文件放到c:/windows/System32目录下 c)        hadoop-2.6.0\share\hadoop\common\sources目录下hadoop-common-2.6.0-sources.jar文件中找到org\apache\hadoop\io\nativeio下NativeIO.java文件,复制到对应的Eclipse的project, N…
Spring AOP使用简介 Spring的两大核心功能是IOC和AOP.当我们使用Spring的AOP功能时是很方便的.只需要进行下面的配置即可. @Component @Aspect public class MyAspect { //PointCut匹配的方法必须是Spring中bean的方法 //Pointcut可以有下列方式来定义或者通过&& || 和!的方式进行组合. //下面定义的这些切入点就可以通过&& ||组合 private static Logger…
Spring的事务管理功能能让我们非常简单地进行事务管理.只需要进行简单的两步配置即可: step1:开启事务管理功能 @Configuration //@EnableTransactionManagement注解有以下几个属性 //proxyTargetClass属相:指定事务的AOP是通过JDK动态代理实现,还是CGLIB动态代理实现.true的话是CGLIB,false的话是JDK动态代理 // 需要注意的是这个属性只有在AdviceMode设置成AdviceMode.PROXY的情况下才…
一.TCMalloc TCMalloc简介 为啥要介绍 TCMalloc? 因为golang的内存分配算法绝大部分都是来自 TCMalloc,golang只改动了其中的一小部分.所以要理解golang内存分配算法,就要先了解下TCMalloc,为后面分析golang内存做一做功课. tcmalloc 是google开发的内存分配算法库,最开始它是作为google的一个性能工具库 perftools 的一部分.TCMalloc是用来替代传统的malloc内存分配函数.它有减少内存碎片,适用于多核,…