阿里VS腾讯 转自:谁是中国互联网行业的第一巨头? 对于理性的金融精英来说,量化的财报数据是最好的论据和答案,因为阿里和腾讯都是上市公司,这个问题的解决就变的更加容易了。 在阿里系,最重要的两大板块,一个是上市公司阿里巴巴集团,一个是未上市的蚂蚁金服,而腾讯系则主要集中在上市公司手里。 现在就让我们来纵向和横向对比下,到底18岁的腾讯,和17岁的阿里是如何胜负翻腾的。其中横向业绩对比,...
【温故】HTTP返回值 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码。 100(继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。 2xx (成功) 表示成功处理了请求的状态码。 200(成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页...
【温故】Java中的ReentrantLock和synchronized两种锁定机制的对比 多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 volatile 。在简化与平台无关的并发类的开发的同时,它决没有使并发类的编写工作变得更繁琐,只是...
【2015工作总结】排序算法 排序算法汇总: 时间复杂度空间复杂度稳定排序 气泡排序最差、平均都是O(n²),最好是O(n)1鸡尾酒排序最差、平均都是O(n²),最好是O(n)1插入排序最差、平均都是O(n²),最好是O(n)1归并排序最差、平均、最好都是O(nlog n)O(n)桶排序O(n)O(...
【2015工作总结】JVM监控总结 一。讲解JVM结构 其中,新生代是Heap,包括Eden(伊甸园)+S0(幸存0)+S1(幸存1):新建对象都存储在这里。配置参数是Xms。老生代是Old,存放从新生代迁移过来的生命周期较久的对象。新生代和老生代共同组成了堆内存。配置参数是Xmx减去Xmn。永久代是Perm,是非堆内存的组成部分。存放加载的Class类级对象如class本身,method,field等。 ...
【2016面试】单例模式优缺点 主要优点:1、提供了对唯一实例的受控访问。2、由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。3、允许可变数目的实例。 主要缺点:1、由于单利模式中没有抽象层,因此单例类的扩展有很大的困难。2、单例类的职责过重,在一定程度上违背了“单一职责原则”。3、滥用单例将带来一些负面问题,如为了节省资源...
【2016面试】java深复制和浅复制 我们在编码过程经常会碰到将一个对象传递给另一个对象,java中对于基本型变量采用的是值传递,而对于对象比如bean传递时采用的引用传递也就是地址传递,而很多时候对于对象传递我们也希望能够象值传递一样,使得传递之前和之后有不同的内存地址,在这种情况下我们一般采用以下两种情况。浅复制与深复制概念浅复制(浅克隆) :被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然...
【2016面试】js深拷贝和浅拷贝 一、数组的深浅拷贝在使用JavaScript对数组进行操作的时候,我们经常需要将数组进行备份,事实证明如果只是简单的将它赋予其他变量,那么我们只要更改其中的任何一个,然后其他的也会跟着改变,这就导致了问题的发生。var arr = ["One","Two","Three"];var arrto = arr;arrto[1] = "test";document.wri...
【温故】 java序列化和反序列化 1.java对象序列化 在保存磁盘文件,网络上传输数据,都是使用二进制的,而java对象不能执行操作读写文件和网络传输,但是java对象序列化后,就得到了其二进制数据。 2.serialVersionUID用来保证java对象的完整性。当对象实现Serializable接口,如果没有属性serialVersionUID,网络发送发进行序列化,网络接收方改变对象(增删改属性),则反...
【2015工作总结】- 编码生成规则 首先,给大家普及知识: UUID是一个由4个连字号(-)将32个字节长的字符串分隔后生成的字符串,总共36个字节长。比如:550e8400-e29b-41d4-a716-446655440000http://www.baike.com/wiki/UUID GUID 是微软对UUID这个标准的实现。UUID是由开放软件基金会(OSF)定义的。UUID还有其它各种实现,不止GU...
【温故】 LRU算法和LFU算法 LRU和LFU是不同的!LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!比如,第二种方法的时期T为10分钟,如果每分钟进行一次调页,主存块为3,若所需页面走向为2 1 2 1 2 3 4注意,当...
【温故】 LRU算法的代码实现 [java] import java.util.LinkedHashMap; import java.util.Collection; import java.util.Map; import java.util.ArrayList; /** * An LRU cache, based on <code>LinkedHash...
【温故】 LRU算法原理和分析 1. LRU1.1. 原理LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。1.2. 实现最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:1. 新数据插入到链表头部;2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3. 当...
【2015工作总结】- 服务架构模式 【2015工作总结】- 服务架构模式 主要是关于双活的概念,就是每一个机房能够处理用户的一套完整的操作,不需要跨越机房,这样可以减少带宽访问量,从而提升性能。 ...
多线程中的long和double 在看一些代码的时候,会发现在定义long型和double型的变量时,会在前面加上volatile关键字,当然也会看到在其它原子类型的变量前加上这个关键字,但这里要说的还是有区别的。 在java中,java的内存模型要求,变量的读取操作和写入操作都必须是原子操作的,但是对于非volatile类型的long和double有些不同,因为这两个变量是64位存储,JVM允许将64位的读操作或写操作...
Java中的Integer.toHexString(int i) 在Java中,如果想要把一个十进制整数转换为十六进制,可以使用Integer.toHexString(int i)方法,该方法的源代码如下: public static String toHexString(int i) { return toUnsignedString(i, 4); } /** * Convert t...
Jedis的Sharded源代码 概述Jedis是Redis官方推荐的Java客户端,更多Redis的客户端可以参考Redis官网客户端列表。当业务的数据量非常庞大时,需要考虑将数据存储到多个缓存节点上,如何定位数据应该存储的节点,一般用的是一致性哈希算法。Jedis在客户端角度实现了一致性哈希算法,对数据进行分片,存储到对应的不同的redis实例中。Jedis对Sharded的实现主要是在ShardedJedis.jav...
JedisSentinelPool源代码 概述Jedis是Redis官方推荐的Java客户端,更多Redis的客户端可以参考Redis官网客户端列表。Redis-Sentinel作为官方推荐的HA解决方案,Jedis也在客户端角度实现了对Sentinel的支持,主要实现在JedisSentinelPool.java这个类中,下文会分析这个类的实现。属性JedisSentinelPool类里有以下的属性: //基于...
JedisPool源代码 1,JedisPool的使用//WHEN_EXHAUSTED_FAIL = 0; 直接抛出异常throw new NoSuchElementException("Pool exhausted");//WHEN_EXHAUSTED_BLOCK = 1;borrowObject()将会阻塞,直到有可用新的或者空闲的object为止,或者如果配置了maxWait,//如果请求阻塞超时,将抛出No...