摘要:
1 HTTP 1.1 HTTP & HTTPS HTTP超文本传输协议是用来在Internet上传送文本的传送协议,采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险。HTTPS是使用SSL协议加密的HTTP协议,相对于HTTP更加安全。 由于HTTP使用明文传输,不提供任何方式的数据加密,如 阅读全文
摘要:
一、基本概念 对于有些问题可能没有特定的算法去解决,或者说需要我们仔细分析才能发现规律,但往往这种耗费精力多且收益差,这时最佳的姿势是通过将问题的手动解法变为自动化的形式。 二、问题分析 问题一:元素筛选 问题描述:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛 阅读全文
摘要:
一、已知中序和前序重建二叉树 分析:首先,由中序遍历特定可知,第一个节点是根节点,其次,由前序遍历特定可知,根节点左边是左子树,右边是右子树。因此,对于当前根,能确定其左子树的前序序列、中序序列,也能确定其右子树的前序序列、中序序列。 实现:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 阅读全文
摘要:
一. 冒泡排序 基本思想:从第一个数开始逐个往后比较,保证最小的数在最前面 复杂度:O(N*N) 实现: /** * 排序方法:冒泡排序 * 复杂度:O(N*N) * 特点:挨个往后冒,不符合规则则交换 * */ public static void maoPao(ArrayList<Integer 阅读全文
摘要:
一、基本概念 双指针滑动算法通常用于求解连续的序列和的问题。 二、窗口设计与移动技巧 起点:设置两个起点left和right构成索引闭区间 [left, right],最初长度取决于题目要求,一般要求为1 限制条件:left<right,以符合索引闭区间的要求 区间索引移动要求:只能右移不能左移,基 阅读全文
摘要:
一、基本概念 回溯算法,又称穷举算法,实际上是一个枚举的搜索尝试过程,主要在搜索尝试过程中寻求问题的解,当发现满足求解条件时,则将路径存储,否则回溯返回,尝试别的路径。 二、设计思想 回溯思想:穷举搜索 回溯设计:(1)域:设置一个数组arr用于存放可达路径,设置一个数组List<arr>用于存放所 阅读全文
摘要:
1 基本概念 链表:插入数据的时间复杂度为O(1),查找元素的时间复杂度为O(N); 栈:栈是限制插入和删除元素操作只能在栈顶上进行的表,因而称为先入后出表,提供push、pop和top操作,其中,对空栈执行pop和top视为一个错误; 队列:队列与栈不同,插入在一端进行,删除在另一端进行,因而称为 阅读全文
摘要:
1 简介 作用:Lambda表达式就是属于简化代码,用于简化匿名实现类,提供一种更加简洁的写法。 语法: (type1 param1, type2 param2...) -> { // 代码逻辑 }; 需要注意的是: (1)参数类型可以省略; (2)当参数个数只有一个时可以省略掉小括号; (3)花括 阅读全文
摘要:
一、基本概念 分治即分而治之,特征在于将一个复杂的问题分成两个或更多个相同的子问题,再把子问题分成更小的问题,直到问题不可拆分可以直接求解,则原问题的解即子问题的解的合并,而这个技巧是很多高效算法的基础,如排序算法,傅立叶变换等。 二、设计思想 分治思想:将一个难以求解的大问题分割成一个规模较小的相 阅读全文
摘要:
1 Redis使用中的常见问题和解决办法 1.1 缓存穿透 定义:缓存系统都是按照key去缓存查询,如果不存在对应的value,就应该去DB查找。一些恶意的请求会故意查询不存在的key,请求量很大,就会对DB造成很大的压力,甚至压垮数据库。 解决方案:对查询结果为空的情况也进行缓存,TTL设置短一点 阅读全文