04 2018 档案
摘要:1.round robin(默认) 轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式。 适用于后台机器性能一致的情况。 挂掉的机器可以自动从服务列表中剔除。 2.weight 根据权重来分发请求到不同的机器中,指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
阅读全文
摘要:如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。具体配置过程如下: 1. 在http节点下,添加upstream节点。 upstream linuxidc { server 10.0.6.108:708
阅读全文
摘要:1. 两数之和 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: LeetCode:https://leetcode-cn.com/problems/two-sum/description/ 思路: 两层for循环时
阅读全文
摘要:问:epoll 或者 kqueue 的原理是什么?为什么 epoll 和 kqueue 可以用基于事件的方式,单线程的实现并发?我没看过 linux 内核,对这方面一直有疑问…… 必须从很多基础的概念开始构建这个答案,并且可能引申到很多别的问题。 首先我们来定义流的概念,一个流可以是文件,socke
阅读全文
摘要:前几天在一个群里看到有人讨论hashmap中的加载因子为什么是默认0.75。 HashMap源码中的加载因子 static final float DEFAULT_LOAD_FACTOR = 0.75f; 当时想到的是应该是“哈希冲突”和“空间利用率”矛盾的一个折衷。 跟数据结构要么查询快要么插入快
阅读全文
摘要:单调栈是一种理解起来很容易,但是运用起来并不那么简单的数据结构。一句话解释单调栈,就是一个栈,里面的元素的大小按照他们所在栈内的位置,满足一定的单调性。 题目是这样的,给一个数组,返回一个大小相同的数组。返回的数组的第i个位置的值应当是,对于原数组中的第i个元素,至少往右走多少步,才能遇到一个比自己
阅读全文
摘要:1. 36进制大整数相加 两个36进制的大整数以字符串的形式给出,求出两个大整数的和,并以字符串方式输出。(头条面试题) 比如:12346 + GSFTYHS = GSGW1LY 2. 两个单链表求和 镜像:http://www.cnblogs.com/DarrenChan/p/5724502.ht
阅读全文
摘要:设计并实现最不经常使用(LFU)缓存的数据结构。它应该支持以下操作:get 和 put。 get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1。put(key, value) - 如果键不存在,请设置或插入值。当缓存达到其容量时,它应该在插入新项目之前,使最不经常使用的
阅读全文
摘要:这三个排序的时间复杂度都是O(nlogn),所以这里放到一起说。 1. 快速排序 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法
阅读全文
摘要:1. 二叉树前序中序后序遍历(递归和非递归) 构造二叉树: 递归版前序遍历: 递归版中序遍历: 递归版后序遍历: 非递归版前序遍历: 非递归版中序遍历: 非递归版后序遍历: 这里用了两个栈,其实一个栈也能实现,这里这样做是因为可以和前序遍历对比着记,比较容易。 2. 二叉树层次遍历 给定一个二叉树,
阅读全文
摘要:MySQL专题 1. 主键 超键 候选键 外键 主 键: 数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。 超 键: 在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在
阅读全文
摘要:1. 10亿个数中找出最大的1000个数 这种题目就是分治+堆排序。 为啥分治?因为数太多了,全部加载进内存不够用,所以分配到多台机器中,或者多个文件中,但具体分成多少份,视情况而定,只要保证满足内存限制即可。什么,如何分?Hash(num)% numOfFiles。 为啥堆排序?首先堆排序是一种选
阅读全文
摘要:在大型web应用中,缓存可算是当今的一个标准开发配置了。在大规模的缓存应用中,应运而生了分布式缓存系统。分布式缓存系统的基本原理,大家也有所耳闻。key-value如何均匀的分散到集群中?说到此,最常规的方式莫过于hash取模的方式。比如集群中可用机器适量为N,那么key值为K的的数据请求很简单的应
阅读全文
摘要:算法 翻转二叉树 最大连续子串和 给一棵边权树树找到最大路径,要找到两个端点怎么办 给一个字符串和单词列表,判断字符串能不能由这些单词组成 给定一组股票的价格,最多买卖0一次,问最大收益 !!!二叉树任意两个节点之间路径的最大长度 二叉树的深度 lfu 一个链表 奇数位升序偶数位降序 让链表变成升序
阅读全文
摘要:本文的主要内容来源于MongoDB官方博客,由NoSQLFan补充说明,本文对传统的分布式Cache系统进行了分析,指出了其在缓存重建中会对数据库产生巨大压力的问题。并分析了MongoDB的mmap方案是如何规避这一问题的。 如下图的架构,在数据库前端加上分布式的Cache(比如我们常用的Memca
阅读全文
摘要:我们知道,对象Hash的前提是实现equals()和hashCode()两个方法,那么HashCode()的作用就是保证对象返回唯一hash值,但当两个对象计算值一样时,这就发生了碰撞冲突。如下将介绍如何处理冲突,当然其前提是一致性hash。 1. 开放地址法 开放地执法有一个公式:Hi=(H(ke
阅读全文
摘要:描述: 给出一个非负整数 num,反复的将所有位上的数字相加,直到得到一个一位的整数。 给出 num = 38。 相加的过程如下:3 + 8 = 11,1 + 1 = 2。因为 2 只剩下一个数字,所以返回 2。 分析: 这道题并不难,只能说用好递归吧。 方法一: 方法二:
阅读全文
摘要:题目描述:一个链表,奇数位升序偶数位降序,让链表变成升序的。 比如:1 8 3 6 5 4 7 2 9,最后输出1 2 3 4 5 6 7 8 9。 分析: 这道题可以分成三步: 首先根据奇数位和偶数位拆分成两个链表。 然后对偶数链表进行反转。 最后将两个有序链表进行合并。 合并两个单链表,还可以采
阅读全文
摘要:1. 循环打印矩阵 比方提供以下矩阵: 按照如下顺序打印出来: 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 这道题直接写也没问题,就是特别容易出错,稍不留意就写错,而且这类题型我想要一种普适性的解法。 我想到的一种方法就是一圈一圈打印,从外到内,我们确定一个矩形,通
阅读全文
摘要:设计和实现一个 LRU(最近最少使用)缓存 数据结构,使它应该支持以下操作: get 和 put 。 get(key) - 如果密钥存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。put(key, value) - 如果密钥不存在,请设置或插入值。当缓存达到其容量时,它应该在插入新项目之前
阅读全文
摘要:最近在忙着找实习,因而做了大量的笔试算法题,阿里,网易,腾讯,华为,发现各大厂商都喜欢出递归和动态规划题,而且出的特别多,这种题以前一直没有搞懂,总是半懂状态,现在感觉有必要好好整理一下。 1. 斐波那契数列 谈到递归问题,我们不妨先从斐波那契数列开始,这个大家应该都不陌生吧,1,1,2,3,5,8
阅读全文
摘要:1. Storm程序的并发机制 1.1 概念 Workers (JVMs): 在一个物理节点上可以运行一个或多个独立的JVM 进程。一个Topology可以包含一个或多个worker(并行的跑在不同的物理机上), 所以worker process就是执行一个topology的子集, 并且worker
阅读全文