05 2018 档案

摘要:第2章 对象及变量的并发访问 2.1 synchronized同步方法 方法内的变量为线程安全: 方法内部的变量是线程私有的 方法中有一个变量num,后面对它赋值 两个线程同时调用这个方法,对其赋不同的值,不会出现非线程安全的问题 实例变量非线程安全: 多个线程共同访问一个对象中的实例变量,则会出现 阅读全文
posted @ 2018-05-27 17:01 __Meng 阅读(244) 评论(0) 推荐(0) 编辑
摘要:OR: 查询条件包含or时,可能会导致索引失效 只有当or左右查询字段均为索引时,才会生效 组合索引: 组合索引,不是使用第一列索引,索引失效 下面是一些例子,假设索引是(col1, col2, col3),那么: 不能继续使用索引中范围条件(bettween、<、>、in等)右边的列 like 以 阅读全文
posted @ 2018-05-24 15:17 __Meng 阅读(579) 评论(0) 推荐(0) 编辑
摘要:乐观锁和悲观锁是属于一种思想,不是具体的锁。 悲观锁(Pessimistic Lock): 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。 传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁 阅读全文
posted @ 2018-05-22 19:26 __Meng 阅读(240) 评论(0) 推荐(0) 编辑
摘要:第1章 MySQL体系结构和存储引擎 1.3 MySQL存储引擎 数据库和文件系统最大的区别在于:数据库是支持事务的 InnoDB存储引擎: MySQL5.5.8之后默认的存储引擎,主要面向OLTP(联机事务处理,面向基本的、日常的事务处理) 支持事务,支持外键、支持行锁(有的情况下也会锁住整个表) 阅读全文
posted @ 2018-05-19 16:45 __Meng 阅读(2394) 评论(1) 推荐(0) 编辑
摘要:BST存在的问题: BST存在的主要问题是,数在插入的时候会导致树倾斜,不同的插入顺序会导致树的高度不一样,而树的高度直接的影响了树的查找效率。 理想的高度是logN,最坏的情况是所有的节点都在一条斜线上,这样的树的高度为N。 平衡二叉查找树: 平衡树在插入和删除的时候,会通过旋转操作将高度保持在l 阅读全文
posted @ 2018-05-19 13:19 __Meng 阅读(194) 评论(0) 推荐(0) 编辑
摘要:B树 一、基本原理 B树是一种查找树,它最初启发于二叉查找树。 二叉查找树的特点是每个非叶节点都只有两个孩子节点。然而这种做法会导致当数据量非常大时,二叉查找树的深度过深,搜索算法自根节点向下搜索时,需要访问的节点也就变的相当多。 如果这些节点存储在外存储器中,每访问一个节点,相当于就是进行了一次I 阅读全文
posted @ 2018-05-18 20:19 __Meng 阅读(2437) 评论(0) 推荐(0) 编辑
摘要:概述: 汉语字典的正文本身就是一个聚集索引。 比如要查z开头的,我们会自然翻到字典的后半部分,而不是从前往后一页一页翻,避免了全表扫描。 而当我们翻到那一页,就能得到内容,而不需要再去查其他目录来找到需要找的内容。 字典正文内容本身就是一种按照一定规则排列的索引,索引中的叶子节点保存的就是要查找的数 阅读全文
posted @ 2018-05-18 16:44 __Meng 阅读(1159) 评论(0) 推荐(0) 编辑
摘要:第1章 MySQL架构与历史 1.2 并发控制 MySQL在两个层面实现并发控制:服务器层与存储引擎层。 读锁和写锁: 在处理并发读或写时,可以通过实现一个由两种锁组成的系统来解决问题。 这两种锁通常被称为共享锁和排他锁,或者称为读锁和写锁。 读锁:是共享的,或者说是相互不阻塞的,多个客户可以在同时 阅读全文
posted @ 2018-05-15 22:52 __Meng 阅读(474) 评论(0) 推荐(0) 编辑
摘要:为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。 目前,主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。满足最低要求的叫第一范式 阅读全文
posted @ 2018-05-14 10:41 __Meng 阅读(310) 评论(0) 推荐(0) 编辑
摘要:1 搭建环境所使用的资源 VMware Workstation 9 ubuntu-14.04.2-desktop-amd64.iso jdk-7u80-linux-x64.tar.gz hadoop-2.5.0.tar.gz zookeeper-3.4.5-cdh5.1.0.tar.gz hbase 阅读全文
posted @ 2018-05-12 16:44 __Meng 阅读(480) 评论(0) 推荐(0) 编辑
摘要:第2章 简单动态字符串(SDS) redis的字符串不是直接用c语言的字符串,而是用了一种称为简单动态字符串(SDS)的抽象类型,并将其作为默认字符串。 redis中包含字符串值的键值对在底层都是由SDS实现的。 2.1 SDS定义 SDS遵循C字符串以空字符结尾的惯例,但是那1个字节不计算在len 阅读全文
posted @ 2018-05-11 15:56 __Meng 阅读(6056) 评论(0) 推荐(0) 编辑
摘要:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 如果数组中只有一个不同的数,全都异或,有2个的话,想办法把这个数组分成2个子数组例如 4 0100 6 0110 异或后为0010,将第二位是1的数分在一个子数组里,其他数分在另一个子数组里,两个子数组 组 阅读全文
posted @ 2018-05-10 19:42 __Meng 阅读(214) 评论(0) 推荐(0) 编辑
摘要:输入一棵二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树 每个结点的左右子树的深度相差不超过1 解法一:采用后序遍历的方式遍历整棵二叉树 只用遍历一次结点 C++: 阅读全文
posted @ 2018-05-10 18:54 __Meng 阅读(326) 评论(0) 推荐(0) 编辑
摘要:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 C++: 阅读全文
posted @ 2018-05-10 18:37 __Meng 阅读(144) 评论(0) 推荐(0) 编辑
摘要:统计一个数字在排序数组中出现的次数。 解法一:顺序遍历 O(n) 解法二:用二分的思想 找出第一个k 和最后一个k O(logn) C++: 阅读全文
posted @ 2018-05-10 18:15 __Meng 阅读(205) 评论(0) 推荐(0) 编辑
摘要:输入两个链表,找出它们的第一个公共结点。 C++: 遍历得到两个链表的长度,求出他们之差,用的长的链表先走若干步,接着在同时在两个链表 上遍历,找到的第一个相同的结点就是他们的共同的结点 C++: 阅读全文
posted @ 2018-05-10 16:41 __Meng 阅读(180) 评论(0) 推荐(0) 编辑
摘要:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 O(nlogn) 归并排序的思想 比如 5 7 4 6 5>4 那么比5大的数也会大于4所以 c 阅读全文
posted @ 2018-05-10 16:23 __Meng 阅读(136) 评论(0) 推荐(0) 编辑
摘要:在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置 C++: 字符出现0次,状态为00 字符出现1次,状态为10 字符出现2次及2次以上,状态为11 java: 阅读全文
posted @ 2018-05-10 15:35 __Meng 阅读(153) 评论(0) 推荐(0) 编辑
摘要:把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7 。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数 Java: 阅读全文
posted @ 2018-05-08 16:02 __Meng 阅读(134) 评论(0) 推荐(0) 编辑
摘要:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 C++: java: 阅读全文
posted @ 2018-05-08 15:31 __Meng 阅读(134) 评论(0) 推荐(0) 编辑
摘要:Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n. For example:Given n = 13,Return 阅读全文
posted @ 2018-05-07 18:20 __Meng 阅读(159) 评论(0) 推荐(0) 编辑
摘要:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。 主要思路:设定整数点(如1、10、100等等)作为位置点i(对应n的各位、十位、百位等等),分别对每个数位上有多少包含1的点进行分析 //根据设定的整数位置,对n进行分割,分为两部分,高位n/i,低位n%i //当i表示百位,且百位对 阅读全文
posted @ 2018-05-07 18:14 __Meng 阅读(201) 评论(0) 推荐(0) 编辑
摘要:输入一个整型数组,数组里有正数也有负数,求所有子数组的和的最大值,要求时间复杂度为O(n) C++: 阅读全文
posted @ 2018-05-07 16:42 __Meng 阅读(132) 评论(0) 推荐(0) 编辑
摘要:第一章: 大型网站的演化 1.1 大型网站软件系统的特点 高并发, 大流量:PV量巨大 高可用:7*24小时不间断服务 海量数据:PB级 用户分布广泛, 网络情况复杂 安全环境恶劣:大型网站几乎每天都被攻击 需求快速变更, 发布频繁:大型网站每周都有新版本上线 渐进式发展:大型网站都从小网站发展而来 阅读全文
posted @ 2018-05-06 22:34 __Meng 阅读(342) 评论(0) 推荐(0) 编辑
摘要:输入n个整数,找出其最小的k个数,例如输入4,5,1,6,2,7,3,8,最小的4个数为1,2,3,4 解法一:快排思想,会改变原数组 O(n) 注意是vector<int>& C++: 解法二:维护一个大小为k的容器,每次将容器中最大的数字用小数字替换掉O(nlogk)如果有海量数据,没法一次放入 阅读全文
posted @ 2018-05-06 15:11 __Meng 阅读(206) 评论(0) 推荐(0) 编辑
摘要:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 C++: 阅读全文
posted @ 2018-05-04 19:57 __Meng 阅读(115) 评论(0) 推荐(0) 编辑
摘要:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 C++: 阅读全文
posted @ 2018-05-04 17:29 __Meng 阅读(155) 评论(0) 推荐(0) 编辑
摘要:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 C++: 阅读全文
posted @ 2018-05-04 16:37 __Meng 阅读(196) 评论(0) 推荐(0) 编辑
摘要:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的 head。 C++: 阅读全文
posted @ 2018-05-04 16:06 __Meng 阅读(185) 评论(0) 推荐(0) 编辑
摘要:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 C++: 阅读全文
posted @ 2018-05-02 21:55 __Meng 阅读(164) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示