Loading

摘要: 【声明】 本文转载自 Union-Find算法详解 - GitHub Union-Find 算法,也就是常说的并查集算法,主要是解决图论中「动态连通性」问题的。 问题描述 简单说,动态连通性其实可以抽象成给一幅有 N 个结点的图连线,其中结点按 0~N 编号。 Union-Find 算法主要需要实现 阅读全文
posted @ 2021-01-25 14:55 JakeLin 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 冒泡排序 顾名思义,就像一堆气泡,大的气泡往上冒,一次遍历完的结果是待排序的气泡中最大的气泡冒出到有序序列。 【步骤】 从第一个元素 阅读全文
posted @ 2021-01-25 14:52 JakeLin 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 买卖股票的最佳时机(动态规划) 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票。 来源:力扣(LeetCode)https://leetcode-c 阅读全文
posted @ 2021-01-25 14:50 JakeLin 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 丑数的定义 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 丑数的判断 依次循环除以2、3、5直到不能整除,最后值为1则为丑数。 bool isUgly(int num) { if(nu 阅读全文
posted @ 2021-01-25 14:48 JakeLin 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 并发模式是指I/O处理单元和多个逻辑单元之间的协调完成任务的方法。 并发模式中,**“同步”指的是程序完全按照代码序列的顺序执行;“异步”**指的是程序的执行需要由系统事件来驱动。 领导者/追随者模式 领导者/追随者模式是多个工作线程轮流获得事件源集合,轮流监听、分发并处理事件的一种模式。 领导者线 阅读全文
posted @ 2021-01-25 14:45 JakeLin 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 并发模式中,“同步”指的是程序完全按照代码序列的顺序执行;“异步”指的是程序的执行需要由系统事件来驱动。 阅读全文
posted @ 2021-01-25 14:44 JakeLin 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 同步I/O模型通常用于实现Reactor模式,异步I/O模型则用于实现Proactor模式。 Proactor模式 与 Reactor 模式不同,Proactor 模式将所有 I/O 操作都交给主线程和内核来处理, 工作线程仅仅负责业务逻辑。 主线程:负责监听已连接文件描述符上是否有事件发生。 内核 阅读全文
posted @ 2021-01-25 14:40 JakeLin 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 主线程只负责监听事件发生,其余工作(接受连接、读写数据、处理客户请求)均由工作线程完成。 阅读全文
posted @ 2021-01-25 14:38 JakeLin 阅读(114) 评论(0) 推荐(0) 编辑
摘要: I/O模型中,同步和异步关注的是消息通信机制。阻塞和非阻塞关注的是程序在等待调用结果时的状态。 阅读全文
posted @ 2021-01-25 14:37 JakeLin 阅读(90) 评论(0) 推荐(0) 编辑
摘要: TCP连接的建立过程——"三次握手"。TCP连接的释放——"四次挥手"。 阅读全文
posted @ 2021-01-25 14:36 JakeLin 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 物理层 频分复用:所有用户在同样的时间占用不同的带宽资源 时分复用:所有用户是在不同的时间占用相同的频带宽度 波分复用:光的频分复用 集线器:工作在物理层,简单的转发比特,不进行碰撞检测。不同鹏颛臾使用不同的速率则不能使用集线器互连。 数据链路层 主要信道:点对点信道 、广播信道 三个基本问题:封装 阅读全文
posted @ 2021-01-25 14:35 JakeLin 阅读(326) 评论(0) 推荐(0) 编辑
摘要: Linux网络编程中,基本TCP套接字操作:socket、bind、listen、accept、connect、close 阅读全文
posted @ 2021-01-25 14:34 JakeLin 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 编译器驱动程序 大多数编译系统提供编译器驱动程序(compiler driver),它代表用户在需要时调用语言预处理器、编译器、汇编器、和链接器。 我们所常说的 “编译生成可执行文件” 实际包括以下过程: 预处理器 (某些编译系统,预处理器被集成到 编译器 中) cpp [other argumen 阅读全文
posted @ 2021-01-25 14:33 JakeLin 阅读(1624) 评论(2) 推荐(0) 编辑
摘要: dynamic_cast:有虚函数的类,指针或引用,类层次结构中进行转换(主要是向上转换); const_cast:去掉 const 或 volatile 属性; static_cast:编译期间转换,没有运行时类型检查来保证转换的安全性; reinterpret_cast:仅仅重新解释类型,没有对 阅读全文
posted @ 2021-01-25 14:26 JakeLin 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 程序使用 new 从堆(自由存储区)分配内存,在不需要时,应使用 delete 将其释放。这个内存管理过程由程序员控制,内存泄露是困扰C/C程序员的一大难题。,C11中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放)、二次释放、程序发生异常时内存泄露等问题等,使用智 阅读全文
posted @ 2021-01-25 14:17 JakeLin 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 概念 现代计算机中内存空间都是按照**字节(byte)**划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 如果一个变量的内存地址 阅读全文
posted @ 2021-01-25 14:15 JakeLin 阅读(524) 评论(0) 推荐(0) 编辑
摘要: 今天听了听侯捷的 C++面向对象高级编程 原本觉得貌似很基础的知识,但是其中还是有所收获,该笔记对此进行记录。 阅读全文
posted @ 2021-01-25 14:13 JakeLin 阅读(604) 评论(0) 推荐(0) 编辑
摘要: 红黑树本质是一个二叉搜索树,每个节点非黑即红,再加上一些特性,变成平衡二叉搜索树(平衡性比AVL-tree弱一些)。红黑树的插入、删除、查找操作的时间复杂度是 O(logN)。 阅读全文
posted @ 2021-01-25 14:12 JakeLin 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 进程间通信方式中管道是最基础的一种方式。管道(pipe和FIFO)是一种伪文件。管道数据只能单向流动,并且只能一次性读取。管道是借助内核实现的。 阅读全文
posted @ 2021-01-25 14:10 JakeLin 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 环境: Linux CentOS 7 3.10.0-1062.9.1.el7.x86_64 强调:server 包含在http内部,每一个server都是一个虚拟主机(站点)!!! Nginx服务器安装配置 安装依赖 yum install pcre* -y yum install openssl* 阅读全文
posted @ 2021-01-25 14:06 JakeLin 阅读(187) 评论(0) 推荐(0) 编辑