码到功成

技术人生

常用负载均衡策略分析

背景 一般生产环境单机所能承受的QPS压力为2w左右,过大的压力会导致服务器爆炸。即便是单机能够撑住2w QPS,一般也不会这么做,生产环境一般会预留50%的冗余能力,防止QPS因为某个热门的活动而爆炸。当QPS超过单机所能承受的压力时,自然而然会想到引入分布式集群。那么,某一个请求会被哪台服务...

2018-05-06 16:39:10

阅读数 512

评论数 0

Java并发执行任务的几种方式

背景 在编写业务代码时经常遇到并发执行多个任务的需求,因为串行执行太慢,会影响业务代码性能。特别对于直接面向普通用户的业务来说用户体验至关重要,保证用户体验重要的一点是要“快”。业务代码中经常需要调用其它业务接口或者同时从多个数据源取数据再处理等,这种情况下势必要走网络请求,网络消耗必不可少,最...

2018-05-06 08:33:59

阅读数 2057

评论数 0

elasticsearch节点角色

在生产环境下,如果不修改elasticsearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题。 默认情况下,elasticsearch集群中每个节点都有成为主节点的资格,也都存储数据,即双重角色。 由两个属性控制:node.master和node.data,默认情况下这两...

2018-05-08 23:38:43

阅读数 566

评论数 0

ElasticSearch核心概念

核心概念 Cluster,服务节点集合,集群名称必须唯一,默认为”elasticsearch”。 Node, 单服务节点,通过名称标识,默认为UUID,节点通过集群名加入集群中。 Index,把一个或多个分片的分组在一起的逻辑空间,默认分为5个主分片和一个replica分片,全部小写。 Typ...

2018-05-08 23:34:10

阅读数 40

评论数 0

JAVA类加载器原理

ClassLoader用于在运行时加载class文件。可以从文件系统、网络及其他源加载 Java有三个默认的ClassLoader,分别是:Bootstrap、Extension、System or Application类加载器。每一种类加载器都有预定义的加载路径,见下图。Java的类加载器遵循...

2017-10-11 19:20:51

阅读数 185

评论数 0

solr集群搭建

solrcloud介绍 SolrCloud(solr 云)是Solr提供的分布式搜索方案,支持大规模、容错、支持分布式索引和检索。它是基于solr和zookeeper的分布式搜索方案,使用zookeeper作为配置管理中心。 版本说明 本文根据业务场景,并没有使用最的版本,相关版本:solr-4...

2017-08-12 15:54:05

阅读数 256

评论数 0

Tinyhttpd源码解析

简介 Tinyhttpd是一轻量级的web服务器,它由美国学生J. David Blackstone于1999年在学习网络课程时编写。源码不到500行,非常适合学习Web编程和Linux/Unix编程接口。 分析 Tinyhttpd执行流程如下图: 主线程完成socket的创建、绑定、端口监...

2015-11-28 21:06:59

阅读数 452

评论数 0

nginx自定义字符串

ngx_str_t是nginx自定义的字符串格式,其定义在ngx_string.h中,如下:typedef struct { size_t len; //字符串长度,不含'\0' u_char *data; //真正字符串 } ngx_str_t;它本质上就是一个...

2015-11-14 19:27:33

阅读数 1322

评论数 0

线程安全单例模式几种优雅的实现

线程安全的单例模式实现有几种思路,个人认为第2种方案最优雅: 1. 饿汉式 2. 列表内容 3. 借助内部类 4. 普通加锁解决 5. 双重检测,但要注意写法如果单体模式继续扩展为N元单体模式,那就是对象池模式了 饿汉式单例public class Singleton { ...

2015-10-11 23:32:55

阅读数 435

评论数 0

行编辑器

题目你知道行编辑器吗?不知道也没关系,现在我会告诉你: 1.如果你收到一个’#’,那么你应该删掉一个你已经收到的字符,不包括’#’; 2.如果你收到一个’@’,那么你应该把你收到的一整行都删掉。 (‘#’和‘@’都为不可见字符。) 你明白了吗?现在轮到你去解决这个问题啦! 输入 第一行...

2015-10-01 11:45:38

阅读数 515

评论数 0

最长回文串

题目回文串是指给定一个字符串,字符串的第一个字符等于最后一个字符,第n个字符等于倒数第n个字符,比如”a”, “aa”, “aba”, “abba”都是回文串。现在给定一个字符串,返回其中最长的回文子串,如果有多个一样长的子字符串,则返回第一个。 测试样例1:输入是”a”, 程序输出”a”; ...

2015-10-01 10:28:08

阅读数 2673

评论数 0

二叉树的两个节点之间最远的距离

题目:求二叉树的两个节点之间最远的距离。package java_exam;/** * 题目:求二叉树的两个节点之间最远的距离。 * @author ShaoCheng * @version 1.0 2015-9-28 */ /* * 计算一个二叉树的最大距离有两个情况: * 情况A...

2015-09-28 17:07:15

阅读数 1180

评论数 0

最长连续子数组和为0

题目找出最长的连续子数组,其和为0。分析穷举法:两次扫描数组把所有的和为0的子数组长度均找出,然后再选择最大的。时间复杂O(n2)O(n^2)。改进:给定一个数组如,1, 2, 3, 4, -1, -2, -4, -3, 1, 1,1,1,1,求出其累加和数组1,3,6,10,9,7,3,0,1,...

2015-09-26 16:23:51

阅读数 883

评论数 0

完全二叉树插入

题目:给一颗完全二叉树,要求插入一个节点后,依然是完全二叉树。 分析:利用完全二叉树的性质,找到要插入的位置,先判断左子树的最右结点与右子树的最右结点高度,如果相等,只需要插入到左子树即可,否则插入右子树。实现:/**题目:给完全二叉树插入一个节点,插完后保证还是完全二叉树 * @author...

2015-09-26 00:03:14

阅读数 5070

评论数 0

正整数分解质因子

输入正整数n,分解正整数n的质因子,并输出。 分析: 对n进行分解质因数,应先找到一个最小的质数k,是一个逐步分解的过程。因为我们知道任何n=2k1∗3k2∗5k3∗7k4...n=2^{k_1}*3^{k_2}*5^{k_3}*7^{k_4}...都可以分解成如下形式。 代码如下: 递归实...

2015-09-22 23:40:50

阅读数 642

评论数 0

硬币组合问题

题目假设我们有8种不同面值的硬币{1,2,5,10,20,50,100,200},用这些硬币组合够成一个给定的数值n。例如n=200,那么一种可能的组合方式为 200 = 3 * 1 + 1*2 + 1*5 + 2*20 + 1 * 50 + 1 * 100. 问总过有多少种可能的组合方式?原题 ...

2015-09-19 16:57:28

阅读数 709

评论数 0

猴子分桃子问题

题目题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

2015-09-19 12:12:45

阅读数 436

评论数 3

【转】Google如何管理20亿行代码

《Wired》今天一篇文章谈到Google的代码量已达到20亿行,并简单介绍了Google是如何管理这些代码的。这20亿行代码,涉及搜索、Gmail、文档、地图、YouTube、Google+等绝大多数Google提供的服务,存储在“一个”代码仓库中,两万五千名Google工程师都可以访问——这可...

2015-09-19 11:55:42

阅读数 378

评论数 0

计数排序

原理通过统计各个元素出现次数,以决定元素的位置。应用场景适合元素值不大,且重复较多的情况。计数排序的精髓在于通过统计次数进行排序,相比于比较排序算法,性能更佳。当适用场景有限,比如对公司员工按年龄排序等。性能时间复杂度仅O(n),空间复杂度O(n)。代码 /* 非常巧妙的实现 */ ...

2015-09-17 23:47:59

阅读数 325

评论数 0

统计字符串权重

题目:假设,字母’a’代表值为1(即value(a)==1), ‘b’为2,…,’z’为26;如果出现连续相同字符,如aaaa…(连续k个a),这k个a的总权值会变成k*k*value(),如BB和bbbb的权值都是4*4*2=32;分析:顺序扫描一次就可以统计出来,时间复杂度O(n), 额外空间...

2015-04-19 21:59:47

阅读数 865

评论数 0

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