CHuiL

347. Top K Frequent Elements

leetcode

题目 Given a non-empty array of integers, return the k most frequent elements. 题意 给定一个数组,求出出现频率最高的k个元素 例子 Example 1: Input: nums = [1,1,1,2,2,3], k = 2 Output: [1,2] 题解 很容易想到的解法,就是使用map来存储对应元素...

98. Validate Binary Search Tree

leetcode

题目 Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as follows: The left subtree of a node contains only nodes with keys less than the node’s key....

15. 3Sum

leetcode

题目 Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. 大意为:给定一个整型数组,其中存在abc三个整数相加等于0,请找...

Reactor模型(redis使用的模型)

文件事件 Reactor模型底层实现还是基于I/O复用的,只是传统的IO复用虽然在技术上解决了单线程模式下高并发的性能问题,能够做到同时并发几十万连接;但是从软件工程层面来说,却有很多问题;一个连接的处理可能需要多个IO操作A1-An,相邻IO之间又有间隔时间;A每次处理完一个IO操作后又重新复用,这样A的处理就不是连续的,在他完成所有操作前可以被其他连接“插队”;这样就需要在连接存在...

docker多阶段构建

docker学习记录

多个 FROM 指令的意义 多个 FROM 指令并不是为了生成多根的层关系,最后生成的镜像,仍以最后一条 FROM 为准,之前的 FROM 会被抛弃,那么之前的FROM 又有什么意义呢? 每一条 FROM 指令都是一个构建阶段,多条 FROM 就是多阶段构建,虽然最后生成的镜像只能是最后一个阶段的结果,但是,能够将前置阶段中的文件拷贝到后边的阶段中,这就是多阶段构建的最大意义。 FROM ...

理解docker镜像原理

docker学习记录

docker镜像与镜像层 要理解镜像,首先需要知道镜像是由一层一层镜像层堆叠起来的,而我们往往看的镜像(比如通过docker images)一般指的是镜像的顶层 如上图,在Dockerfile文件中,每一个命令都会生成一个新的镜像层,并且这些层是由层级关系的,下一层为上一层的父层,由指针连接起来; FROM ubuntu:14.04 :设置基础镜像,此时会使用基础镜像 ubuntu...

Docker容器原理的基础知识

docker学习记录

Namespace Namespace它可以隔离一系列的系统资源,包括进程数、网络接口、挂载点等。它帮助进程隔离出自己单独的空间。 Linux中的6种不同类型的Namespace | Namespace类型 | 系统调用参数 | | —– | ——- | |Mount Namespace|CLONE_NEWNS| |UTS Namespace|CLONE_NEWUTS| |IPC Nam...

DockerFile命令

docker学习记录

DockerFile 用来快速创建自定义镜像 一般DockerFile分为四部分:基础镜像信息,维护者信息,镜像操作指令和容器启动时执行指令。 FROM命令 ==任何DockerFile第一行都必须是FROM命令==,表示指定所创建的基础镜像,如果本地没有会从Docker Hub上拉取;多个可以多条; MATINTAINER命令 MAINTAINER image_creator@do...

Ssl的握手过程

handshake(握手) 握手的过程如上图所示; 1.客户端发出请求 客户端先向服务器发出加密通信请求,通常被称为ClientHello; 在这个过程中,客户端会发送给服务器的信息包括: 自己支持的协议版本 生成一个随机数,自己保留一份并发生给服务器 支持的加密算法 2.服务器回应 服务器收到ClientHello后,会发出回应,称为ServerHello; 在这个过...

IO多路复用

linux学习记录

阻塞IO和非阻塞IO 在讨论IO复用之前,最好先了解一下阻塞IO和非阻塞IO; 阻塞是指:是否阻塞应用进程;更具体的说,在执行I/O系统调用的时候,若文件描述符没有准备好,内核是阻塞当前进程还是返回错误;若返回错误就是非阻塞; 阻塞IO调用的整个过程包括:发起请求->内核数据准备->准备好后复制到调用者缓冲区->完成;整个过程应用阻塞; 非阻塞IO的过程:(轮询)发起请...