摘要:
一、基础算法 快速排序算法模板 #include <iostream> #include <algorithm> using namespace std; const int N = 100010; int n; int q[N]; void quick_sort(int q[], int l, i 阅读全文
摘要:
单一职责原则(SRP) 如何理解单一职责原则 单一职责原则:Single Responsibility Principle, 缩写SRP。 意思:一个类或模块只负责完成一个职责(或者功能)。 单一职责原则是为了实现代码高内聚、低耦合,提高代码的复用性、可读性、可维护性。 如何判断一个类的职责是否足够 阅读全文
摘要:
题目: 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键 阅读全文
摘要:
排序算法 排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 排序方式 稳定性 冒泡排序 O(n^2) O(n) O(n^2) O(1) In-place 稳定 选择排序 O(n^2) O(n^2) O(n^2) O(1) In-place 不稳定 插入排序 O(n^2) O(n) O(n^2 阅读全文
摘要:
一、单例模式 1、饿汉式 饿汉式的实现方式比较简单。在类加载的时候,instance 静态实例就已经创建并初始化好了,所以,instance 实例的创建过程是线程安全的。不过,这样的实现方式不支持延迟加载(在真正用到 IdGenerator 的时候,再创建实例) 如果初始化耗时长,那我们最好不要等到 阅读全文
摘要:
前置芝士 在讲解 TCP 三次握手和四次挥手之前,我们先来简单的讲解 TPC 的基础知识,这样更有助于我们后面的理解。 首先我们得知道什么是 TCP ? TCP 是面向连接的、可靠的、基于字节流的传输层通信协议,中文叫传输控制协议。下面简单的解释一下: 面向连接:一定是一对一才能连接,不能像 UDP 阅读全文
摘要:
前置芝士 在讲解 TCP 可靠传输之前,我们先搞清楚什么是 TCP 可靠传输? TCP 可靠传输就是保证接收方收到的字节流和发送方发出的字节流是完全一样的。 那为什么需要 TCP 的可靠传输呢? 由于网络层是没有可靠传输机制的,尽自己最大的努力进行交付。而传输层使用 TCP 实现可靠传输,TCP 保 阅读全文
摘要:
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该 阅读全文
摘要:
DNS 协议详解 我们知道,当我们访问一个服务器上的资源时,是需要 IP 地址的,但是在我们平常使用浏览器的时候,却并没有输入那一长串的 IP 地址,而是在地址栏输入了一串网址,那为啥输入网址就能请求到服务器上的资源了呢?这就离不开域名解析协议(DNS)的功劳了,今天我就带你看看 DNS 是怎么工作 阅读全文
摘要:
HTTPS 看这篇就够了 我们之前讲解过了 HTTP,如果面看过的建议先去看看 HTTP(传送门),我们知道 HTTP 有三大缺点:通信使用明文、不验证通信方的身份、无法证明报文的完整性。今天,我就来带你看看 HTTPS 相比 HTTP 有哪些优点,是如何解决这些问题的,话不多说,直接开干。 不安全 阅读全文
摘要:
IP 协议的基本认知 IP(Internet Protocol)协议,中文叫网际协议 ,是位于网络层的一个协议。它用于屏蔽下层物理网络的差异,为上层提供统一的 IP 数据报。就像下面这样: IP 协议的特点:IP 协议提供无连接的、不可靠的、尽力的数据报投递服务: 无连接的投递服务:发送端可于任何时 阅读全文
摘要:
HTTP 协议的前世今生 1、HTTP 的基本概念 HTTP 是超文本传输协议(HyperText Transfer Protocol),下面具体解释一下: 协议:HTTP 是一个用在计算机世界里的协议,它使用计算机能够理解的语言确立了一种计算机之间交流通信的方式(两个及以上的参与者),以及相关的各 阅读全文
摘要:
前面我们学习了各种协议,应用层的 HTTP、DNS 协议,传输层的 TCP 协议,网络层的 IP 协议等等,今天我就带你看看一道常见的面试题:当在浏览器输入一个网址后会发生什么?探究一个数据包在网络的心路历程。 解析 URL 当我们在浏览器输入一个 URL 后,第一步就是对 URL 进行解析,得到里 阅读全文
摘要:
XSS 攻击 跨站脚本攻击(Cross Site Scripting),就是攻击者在web页面插入恶意的script代码(这个代码可以是JS脚本、CSS样式或者其他意料之外的代码),当用户浏览该页面之时,嵌入其中的script代码会被执行,从而达到恶意攻击用户的目的。比如读取cookie,sessi 阅读全文
摘要:
开始聊分布式事务之前,我们先来回顾一下事务相关的概念。 事务 我们设想一个场景,这个场景中我们需要插入多条相关联的数据到数据库,不幸的是,这个过程可能会遇到下面这些问题: 数据库中途突然因为某些原因挂掉了。 客户端突然因为网络原因连接不上数据库了。 并发访问数据库时,多个线程同时写入数据库,覆盖了彼 阅读全文
摘要:
一、随机法(Random) 完全随机:通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数增多,其实际效果越来越接近于平均分配调用量到后端的每一台服务器,也就是轮询的结果。 代码实现: public class Serv 阅读全文
摘要:
为什么需要分布式锁 我们为什么需要分布式锁呢? 与分布式锁相对应的是「单机锁」,我们在写多线程程序时,避免同时操作一个共享变量产生数据问题,通常会使用一把锁来「互斥」,以保证共享变量的正确性,其使用范围是在「同一个进程」中。 如果换做是多个进程,需要同时操作一个共享资源,如何互斥呢? 例如,现在的业 阅读全文
摘要:
一.分布式理论 1.分布式架构系统回顾 1)分布式系统概念 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调 的系统。 俗的理解,所谓分布式系统,就是一个业务拆分成多个子业务,分布在不同的服务器节点,共同构成的系统称为分 布式系统,同一个分布式系统中的服 阅读全文
摘要:
一、分布式ID 1、何为 ID? 日常开发中,我们需要对系统中的各种数据使用 ID 唯一表示,比如用户 ID 对应且仅对应一个人,商品 ID 对应且仅对应一件商品,订单 ID 对应且仅对应一个订单。 我们现实生活中也有各种 ID,比如身份证 ID 对应且仅对应一个人、地址 ID 对应且仅对应 简单来 阅读全文
摘要:
缓存和数据库一致性问题,看这篇就够了 如何保证缓存和数据库一致性,相信大家一定被这个搞的头疼过吧,今天,我就来治治你的头痛,带你一步一步,由浅入深地剖析缓存一致性问题,保证华强都能听懂。 为什么要引入缓存 我们都知道,引入缓存是为了提高性能,我们先从最简单的场景开始讲起。 如果你的业务处于起步阶段, 阅读全文