自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

StackOverflow的博客

In me the tiger sniff the rose.

  • 博客(141)
  • 收藏
  • 关注

原创 Redis的学习

NoSqlNoSql入门和概述入门概述1 互联网时代背景下大机遇,为什么用nosql1单机MySQL的美好年代在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。上述架构下,我们来看看数据存储的瓶颈是什么?1.数据量的总大小 一个机器放不下时2.数据的索引(B+ Tree)一个机器的内存放不下时3.访问量(读写混合)一个实例不能承受如果满足了上述1 or 3个,进化…2 Memcached(缓存)

2020-12-06 11:18:24 275

原创 互联网面试题高频问点

互联网面试题高频问点1.前提知识+要求2.Java基础3.JUC多线程及并发包1.谈谈你对volatile的理解1.volatile是Java虚拟机提供的轻量级的同步机制1.1保证可见性1.2不保证原子性1.3禁止指令重排2.JMM你谈谈JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念 并不真实存在,它描述的是一组规则或规范通过规范定制了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式.JMM关于同步规定:1.

2020-12-06 11:09:46 218

原创 JUC

JUCJUC是什么?java.util.concurrent在并发编程中使用的工具类进程、线程回顾进程、线程是什么?进程、线程例子线程状态?wait、sleep的区别wait放开资源睡,sleep抓着资源睡wait需要唤醒,sleep自动醒来什么是并发?什么是并行?秒杀并行计算Lock接口复习Synchronized多线程编程模板上线程 操作 资源类高内聚低耦合实现步骤例子:卖票程序Lock是什么?sync

2020-12-06 11:06:46 212

原创 常用SQL语句及MySQL规约

常用SQL语句及MySQL规约数据库显示数据库列表show databases;建库create database 库名查看字符集show variables like ‘charactor%’;查看数据库字符集show create database 数据库名修改字符集修改数据库的字符集alter database 库名 character set ‘utf8’修改表的字符集alter table 表名 convert to charac

2020-12-06 11:03:39 152

原创 MySQL调优

MySQL调优查询性能优化Explain:用来分析SELECT查询语句,查看sql 语句的执行过程。id:SELECT查询的序列号table:正在访问的表名type:访问的类型。ALL全表扫描、Index全索引扫描key:使用的索引,NULL表示没有索引rows:扫描的物理行数Extra:额外的信息。using index、using filesort手工排序,没有利用索引。查询优化重构查询切分大查询一个大查询如果一次性执行的话,可能会锁住

2020-12-06 11:01:29 91

原创 MySQL梗概

MySQL梗概MySQL逻辑架构连接器用户连接、用户验证分析器词法分析、语法分析优化器优化sql语句基于CBO成本/RBO规则优化重写查询,优化表的执行顺序、选择最优索引重写查询:移除不必要的括号、移除没有用的条件、化简表达式的条件解析查询之前,先查询缓存(MySQL8.0移除缓存)注意:优化器只有在不改变结果的前提下才进行优化执行器sql语句的执行组件。MyISAM和InnoDBMySQL锁读写锁共享锁。多个事务对于同一数据可以

2020-12-06 10:48:28 114 1

原创 深入理解Java虚拟机 (1.8HotSpot)

深入理解Java虚拟机 (1.8HotSpot)JVM内存模型程序计数器当前线程执行字节码的行为指示器,记录的是当前虚拟机执行字节码的指令地址。作用:1、字节码解释器通过改变程序计数器的值来选择下一条要执行的指令地址;比如:分支、跳转、异常、线程恢复等都需要这个程序计数器。2、多线程情况下,程序计数器保存当前线程的执行地址,以便线程恢复后能从正确的位置开始执行。如果执行的是Native方法,程序计数器的值为0虚拟机栈Java虚拟机栈是描述Java方法运行过程的内

2020-12-06 10:45:30 444

原创 抽象工厂模式

抽象工厂模式 是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无需指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。  当需要创建的产品有多个产品线(产品族)时使用抽象工厂模式是比较好的选择。抽象工厂模式是工厂方法模式的进一步延伸,具备可扩展性。形容词用接口,名词用抽象类。Spring IOC 就是一个大工厂。抽象工厂(Abstract Factory)提供了...

2020-02-19 16:26:49 84

原创 工厂方法模式

工厂方法模式,对简单工厂模式进行了升级。我们将水果园比作一个工厂,在简单工厂模式下,水果园是一个具体的工厂,直接用来生产各种各样的水果。  那么在工厂方法模式下,水果园是一个抽象工厂,那么苹果树,香蕉树等就相当于是具体工厂,生产苹果、香蕉等水果。每有一种新的水果要生产,则需要种植生产这种水果植物,即创建生产具体水果的工厂。产品维度进行扩展(生成一种产品)。这里苹果和香蕉都实现水果接口...

2020-02-19 16:21:51 109

原创 策略模式

策略模式 也叫 政策模式(Policy Pattern)。指的是对象具备某个行为,但是在不同的场景中,该行为有不同的实现算法。做一件事情时候的不同执行方式。使用的就是面向对象的继承和多态机制,从而实现同一行为在不同场景下具备不同实现。  打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是一个策略。策略模式 本质:分离...

2020-02-19 16:18:58 81

原创 单例模式

单例模式整个程序保证仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建。类构造器私有持有自己类型的属性对外提供获取实例的静态方法饿汉式private static final Mgr01 INSTANCE = new Mgr01();或static { INSTANCE = new Mgr02();}类加载到内存后,就实例化一个单例,JVM保证线程...

2020-02-19 16:16:00 143

原创 40亿个非负整数中找到出现两次的数和所有数的中位数

32位无符号整数的范围是0 ~ 4 294 967 295 现在有40亿个无符号整数,可以使用最多1GB的内存,找出所有出现了两次的数。补充问题: 可以使用最多10MB的内存,怎么找到40亿个整数的中位数?原问题: 可以用 bit map 来表示数出现的情况。申请一个长度为 4 294 967 295 × 2 的bit类型的数组bitArr,1B占用8个bit,所以长度为 4 294 9...

2020-02-19 16:00:30 440

原创 找到100亿个URL中重复的URL及搜索词汇的TopK问题

有一个包含100亿个URL的大文件,假设每个URL占用64B,请找出其中所有重复的URL。补充问题: 某搜索公司一天的用户搜索词汇是海量的(百亿数据量),请设计一种求出每天热门Top100的可行办法。解题前首先要明确,资源上的限制,包括内存、计算时间等要求。原问题:① 将100亿的大文件通过哈希函数分配到100台机器上,哈希函数的性质决定了同一条URL不可能分给不同的机器;② 然后每...

2020-02-19 15:59:33 596

原创 40亿个非负整数中找到未出现的数

32位无符号整数的范围是0 ~ 4 294 967 295,现在有一个正好包含40亿个无符号整数的文件,所以在整个范围中必然有未出现过的数。怎么找到所有未出现过的数?要求: 可以使用最多1GB的内存。进阶: 内存限制10MB,但是只用找到一个没出现过的数即可。常规方法:假设用哈希表来保存出现过的数,那么如果40亿个数都不同,则哈希表的记录数为40亿条,存一个32位整数需要4B,所以最差情况下...

2020-02-19 15:55:54 365

原创 只用2GB内存在20亿个整数中找到出现次数最多的数

有一个包含20亿个全是32位整数的大文件,在其中找到出现次数最多的数。要求:内存限制2GB。初级进阶: 40亿个整数。高级进阶: 80亿个整数。常规思路:在很多整数中找到出现次数最多的数,通常的做法是使用哈希表对出现的每一个数做词频统计。如果一个数字出现20亿次,哈希表的一条记录需要8B。如果20亿个数都不同,那么哈希表的20亿条记录需要16GB。解决思路:记录大概 2 亿多条不同的...

2020-02-19 15:53:42 1111

原创 认识布隆过滤器

什么是布隆过滤器?一个布隆过滤器精准地代表一个集合,并可以精准判断一个元素是否在集合中。基本原理判断一个元素是不是在一个集合里,一般是将所有元素保存起来,然后通过比较确定。但随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。不过还有一种叫作散列表(又叫哈希表,Hash table)的数据结构。它可以通过一个Hash函数将一个元素映射成一个位阵列...

2019-12-14 18:30:51 128

原创 68_getLowestCommonParentBST

package pers.lyt.java;//题目// 输入两个树结点,求它们的最低公共祖先。//思路// 该题首先要和面试官确定是否为二叉树,得到肯定答复后,还要确定是否为二叉搜索树,是否//有父指针,或者仅仅是普通二叉树。// 1.树为二叉搜索树时,最低公共祖先结点的大小在两个树结点大小的中间。// 2.树为普通树时,使用遍历将子结点的信息往上传递。在左右子树中进行查找是否存...

2019-12-14 11:16:21 74

原创 67_StringToInt

package pers.lyt.java;//题目// 请你写一个函数StrToInt,实现把字符串转换成整数这个功能。当然,不能使用atoi或者其他//类似的库函数。//思路// 题目很简单,主要就是实现对每个字符转化为数字,并进行累加即可。但是有很多特殊情况都//需要考虑进去,例如null、空字符串、带有正负号、字符不是数字、溢出等等。// 对于非法的特殊输入,返回值为0,还...

2019-12-14 11:15:40 99

原创 66_ConstuctArray

package pers.lyt.java;//题目// 给定一个数组A[0, 1, …, n-1],请构建一个数组B[0, 1, …, n-1],其中B中的元素//B[i] =A[0]×A[1]×… ×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。//思路// 无法使用除法,正常连乘的话时间复杂度为O(n^2),效率非常低。// 考虑到计算每个B[i]时都会有重复,思考...

2019-12-14 11:15:04 150

原创 65_AddTwoNumbers

package pers.lyt.java;//题目// 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷四则运算符号。//思路// 对数字做运算,除了四则运算外,只剩下位运算了。根据一般情况下的加法步骤,设计如下:// 1)不考虑进位对每一位相加:1加0,0加1都等于1,而0加0,1加1等于0,所以使用异或^操作;// 2)计算进位:只有1加1产生进位,所以采用位与...

2019-12-14 11:14:37 92

原创 64_Accumulate

package pers.lyt.java;//题目// 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件//判断语句(A?B:C)。//思路// 不能使用乘除法,不能使用循环语句、判断语句。可以考虑的有 单目运算符:++和--,//双目运算符:+,-,移位运算符<<和>>,关系运算符>,...

2019-12-14 11:14:06 120

原创 63_MaximalProfit

package pers.lyt.java;//题目// 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖交易该股票可能获得的利润是多少?//例如一只股票在某些时间节点的价格为{9, 11, 8, 5,7, 12, 16, 14}。如果我们能在价格为5的//时候买入并在价格为16时卖出,则能收获最大的利润11。//思路// 股票交易的利润来自股票买入和卖出价格的差价。只能在买...

2019-12-10 22:42:43 69

原创 62_LastNumberInCircle

package pers.lyt.java;import java.util.LinkedList;//题目// 0, 1, …, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。//求出这个圆圈里剩下的最后一个数字。//思路// 方法一:采用链表来存放数据,每次对长度取余来实现循环// 将所有数字放入LinkedList链表中(LinkedList比A...

2019-12-10 22:42:02 72

原创 61_ContinousCards

package pers.lyt.java;import java.util.Arrays;//题目// 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,//A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。//思路// 输入为大小等于5的数组(大小王记为0),输出为布尔值。具体步骤如下://1)进行对5张牌进行排序;//...

2019-12-10 22:41:19 65

原创 60_DicesProbability

package pers.lyt.java;import java.text.NumberFormat;//题目// 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率//思路// 对于n个骰子,要计算出每种点数和的概率,我们知道投掷n个骰子的总情况一共有6^n种,//因此只需要计算出某点数和的情况一共有几种,即可求出该点数之和的概率。/...

2019-12-10 22:40:42 149

原创 59_QueueWithMax

package pers.lyt.java;import java.util.ArrayDeque;import java.util.Deque;//题目// 请定义一个队列并实现函数max得到队列里的最大值,要求函数max、push_back和pop_front的//时间复杂度都是O(1)。//思路// 与滑动窗口的最大值一题相似,利用双端队列来存储当前队列里的最大值以及之后可...

2019-12-10 22:39:46 130

原创 58_ReverseWordsInSentence

package pers.lyt.java;//题目// 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号//和普通字母一样处理。例如输入字符串"I am a student.",则输出"student. a am I"。//思路// 首先实现翻转整个句子:只需要在首尾两端各放置一个指针,交换指针所指的数字,两端指针//往中间移动即可。之后根据空格...

2019-12-09 16:57:24 88

原创 58_LeftRotateString

package pers.lyt.java;//题目// 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现//字符串左旋转操作的功能。比如输入字符串"abcdefg"和数字2,该函数将返回左旋转2位得到的//结果"cdefgab"。//思路// 本题思路和上一道题翻转单词顺序的原理一模一样,只是上一道题有空格,这道题没空格,//先分别翻转前半部分字...

2019-12-09 16:56:35 94

原创 57_TwoNumbersWithSum

package pers.lyt.java;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;//题目// 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有//多对数字的和等于s,输出任意一对即可。//思路// 从头开始遍历数字,确定一个数字后,对...

2019-12-09 16:56:04 80

原创 57_ContinuousSquenceWithSum

package pers.lyt.java;import java.util.ArrayList;import java.util.List;//题目// 输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。例如输入15,//由于1+2+3+4+5=4+5+6=7+8=15,所以结果打印出3个连续序列1~5、4~6和7~8。//思路:指针法// 类似(57-1) 和...

2019-12-09 16:55:34 69

原创 56_NumbersAppearOnce

package pers.lyt.java;//题目// 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次//的数字。要求时间复杂度是O(n),空间复杂度是O(1)。//思路// 两个相同的数字异或等于0.// 如果数组中只有一个数字只出现一次,其他的数字出现两次,我们从头到尾异或每个数字,那么//最终的结果刚好是那个只出现一次的数字。而本题里数...

2019-12-09 16:55:02 93

原创 56_NumberAppearingOnce

package pers.lyt.java;//题目// 在一个数组中除了一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的//数字。//思路// 这道题中数字出现了三次,无法像数组中只出现一次的两个数字一样通过利用异或位运算进行//消除相同个数字。但是仍然可以沿用位运算的思路。// 将所有数字的二进制表示的对应位都加起来,如果某一位能被三整除,那么只出现一次的数...

2019-12-09 16:54:26 69

原创 55_TreeDepth

package pers.lyt.java;//题目// 输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的/结点(含根、叶结点)//形成树的一条路径,最长路径的长度为树的深度。//思路// 简洁理解:树的深度 = max(左子树深度,右子树深度) + 1。采用递归实现。public class Offer55_TreeDepth { public class Tre...

2019-12-09 16:53:59 139

原创 55_BalancedBinaryTree

package pers.lyt.java;//题目// 输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树//的深度相差不超过1,那么它就是一棵平衡二叉树。//思路// 计算树的深度,树的深度=max(左子树深度,右子树深度)+1。//在遍历过程中,判断左右子树深度相差是否超过1,如果不平衡,则令flag为false,用来表示树//不平衡。pub...

2019-12-09 16:53:26 61

原创 54_KthNodeInBST

package pers.lyt.java;import java.util.Stack;//题目// 给定一棵二叉搜索树,请找出其中的第k小的结点。//思路// 设置全局变量index=0,对BST进行中序遍历,每遍历一个结点,index+1,当index=k时,//该结点即为所求结点。public class Offer54_KthNodeInBST { public cl...

2019-12-09 16:52:52 57

原创 53_MissingNumber

package pers.lyt.java;//题目// 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0到n-1之内。//在范围0到n-1的n个数字中有且只有一个数字不在该数组中,请找出这个数字。//思路// 如果从头到尾依次比较值与小标是否相等,时间复杂度为O(n),效率低。//由于是排序数组,我们继续考虑使用二分查找算法,找出数组中第一个值和下标不相...

2019-12-08 15:58:43 84

原创 53_IntegerIdenticalToIndex

package pers.lyt.java;//题目// 假设一个单调递增的数组里的每个元素都是整数并且是唯一的。请编程实现一个函数找出数组中//任意一个数值等于其下标的元素。例如,在数组{-3, -1,1, 3, 5}中,数字3和它的下标相等。//思路// 同53-1和53-2一样,不再从头到尾遍历,由于是排序数组,我们继续考虑使用二分查找算法://1)当中间数字等于其下标时,中间...

2019-12-08 15:58:16 89

原创 52_FirstCommonNodesInLists

package pers.lyt.java;//题目// 输入两个链表,找出它们的第一个公共结点。//思路// 蛮力法:遍历第一个链表的结点,每到一个结点,就在第二个链表上遍历每个结点,判断是否相等。//时间复杂度为O(m*n),效率低;// 使用栈:由于公共结点出现在尾部,所以用两个栈分别放入两个链表中的结点,从尾结点开始出栈//比较。时间复杂度O(m+n),空间复杂度O(m+n...

2019-12-08 15:57:46 69

原创 51_InversePairs

package pers.lyt.java;//题目 // 在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。//输入一个数组,求出这个数组中的逆序对的总数。//思路// 如果遍历数组,对每个数字都和后面的数字比较大小,时间复杂度为O(n^2),效率太低。//利用归并排序的思想,先将数组分解成为n个长度为1的子数组,然后进行两两合并同时排好顺序。//在对...

2019-12-08 15:57:12 78

原创 50_FirstNotRepeatingChar

package pers.lyt.java;//题目 // 在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出'b'。//思路// 创建哈希表,键值key为字符,值value为出现次数。第一遍扫描:对每个扫描到的字符的次数加一;//第二遍扫描:对每个扫描到的字符通过哈希表查询次数,第一个次数为1的字符即为符合要求的输出。//由于字符(char)是长度为8的数据...

2019-12-08 15:56:43 206

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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