2020秋招
文章平均质量分 84
XindaBlack
最菜搬砖工
展开
-
2020秋招_操作系统笔记(一):进程和线程
进程、线程进程(process)和线程(thread)的区别?进程和线程本质上都是CPU的一个工作时间段,进程包括了CPU加载程序上下文、CPU执行、CPU保存程序上下文。线程包含在进程中,一个进程至少有一个线程,也可以有多个线程,进程的不同线程之间共享CPU和程序上下文。进程是操作系统资源分配(包括CPU、内存、磁盘IO等)的最小单元;线程是CPU调度和分配的基本单元,是最小的执行单元。...原创 2020-10-19 14:50:40 · 422 阅读 · 0 评论 -
2020秋招_TCP/IP协议知识(笔记)
TCP三次握手过程,为什么是三次而不是两次或四次?两张动图-彻底明白TCP的三次握手与四次挥手TCP 为什么三次握手而不是两次握手(正解版)四次握手过程:客户端向服务端发送SYN同步请求;服务端向客户端返回ACK确认同步;服务端向客户端发送SYN同步请求;客户端向服务端返回ACK确认同步。显然,四次握手中的第二次和第三次握手都是服务端向客户端发送,因此可以简化成三次握手,提高建...原创 2020-10-19 14:50:24 · 195 阅读 · 1 评论 -
归并排序之多线程实现(C++)
归并排序使用多线程分析归并排序分为两步:不断地对半拆分数组(向下的过程);合并相邻的子数组(向上的过程)。对于拆分成的子数组,它们之间相互独立,资源不共享,因此用多线程是安全的。(在合并前,两个子线程需要运行完毕,即join阻塞当前线程直到两个子线程运行完毕)C++代码#include <iostream>#include <thread>#include <vector>#include <functional>using name原创 2020-06-27 22:42:47 · 1958 阅读 · 0 评论 -
多线程交替打印数组(C++11实现)
#include <thread>#include <iostream>#include <condition_variable>#include <mutex>#include <vector>using namespace std;mutex mtx;condition_variable cond;int counter = 0;int order = 0;// k -> 交替打印数组个数// o ->原创 2020-08-29 11:17:02 · 874 阅读 · 0 评论 -
2020秋招_C++笔记之左值和右值,拷贝构造和移动构造,类型自动推导
目录拷贝构造函数拷贝构造函数和赋值构造函数调用拷贝构造函数的场景拷贝构造函数的参数类型必须是引用深拷贝和浅拷贝左值(lvalue)和右值(rvalue)左值引用和右值引用移动构造和移动赋值移动语义和std::move()通用引用(universal references)完美转发和std::forward()emplace_back减少内存拷贝和移动总结模板类型自动推导理解情形1:ParamTyp...原创 2020-04-29 21:24:56 · 770 阅读 · 1 评论 -
Linux Socket编程(四):Reactor并发模式的理解和实现
#include <iostream>#include <stdio.h>#include <cstring> // void *memset(void *s, int ch, size_t n);#include <sys/types.h> // 数据类型定义#include <sys/socket.h> // 提供socket函数及数据结构sockaddr#include <arpa/inet.h>原创 2020-05-16 15:28:58 · 705 阅读 · 0 评论 -
Linux Socket编程(三):固定线程数的线程池实现
目录实现固定数目的线程池线程池实现主要的私有成员变量线程池实现主要的函数线程池主要的实现原理(基于实现代码-1分析)实现代码-1实现代码-2实现固定数目的线程池线程池实现主要的私有成员变量std::mutex mtx_;std::condition_variable cond_;bool is_shutdown_ = false; // 线程池对象结束标志std::queue<s...原创 2020-05-02 22:37:43 · 797 阅读 · 0 评论 -
Linux Socket编程(二):多线程实现同时响应多个客户端
目录服务端可以同时对多个客户端的请求做出响应吗?服务端多线程实现运行测试服务端可以同时对多个客户端的请求做出响应吗?上一篇文章:Linux Socket编程(一):简单地实现进程间TCP通信在上一篇文章中讲述了Linux下通过socket简单地实现进程间TCP通信。现在做一个简单的测试:打开一个服务端,同时打开两个客户端请求与服务端连接。由第一张图可以看到,服务端只能对先连接上的客户端做出响...原创 2020-04-25 01:08:41 · 3091 阅读 · 1 评论 -
Linux Socket编程(一):简单地实现进程间TCP通信
服务端和客户端通过Socket通信过程参考博客:TCP网络编程中connect()、listen()和accept()三者之间的关系网络套接字编程基本api服务端:socket() :创建套接字,设置套接字IP地址类型、传输协议类型。bind():绑定ip地址和端口号到套接字。listen():将套接字变成被动的连接监听套接字。监听套接字的端口号,随时准备接收客户端发来的连接请求。...原创 2020-04-18 17:38:14 · 1347 阅读 · 0 评论 -
2020秋招_高性能服务器优化与检测
源自《LInux高性能服务器编程》- 游双指令使用psps -ef | grep 命令详解ps 命令的作用是显示进程信息的。如ps -ef | grep Server 显示Server进程的信息。系统检测工具mpstatmpstat(multi-processer statistics),它能实时检测多处理器系统上每个CPU的使用情况。%usr:除了nice值为负的进程,系统上其他进程运行在用户空间的时间占CPU总运行时间的比例。%sys:系统上所有进程运行在内核空间的时间占CPU总运行原创 2020-06-10 22:10:27 · 287 阅读 · 0 评论 -
2020秋招_动态规划之背包问题学习总结
文章目录0-1背包问题0-1背包不超过背包体积下的最大重量0-1背包恰好装满问题完全背包问题多重背包二进制优化方法背包问题九讲0-1背包问题O(V×N)O(V\times N)O(V×N)有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。状态转移方程:dp[i][j]dp[i][j]dp[i][j]表示前 iii 件物品,容量为 jjj 的背包,可获得最大的总价值。dp[i][j]=max(dp[i−1][j],dp[i−1][j原创 2020-09-10 11:10:15 · 248 阅读 · 0 评论 -
2020秋招_leetcode刷题记录
面试题 10.03. 搜索旋转数组 -> 二分查找(两次二分查找过不了特殊例子,一次二分查找理解起来有点麻烦)原创 2020-10-17 21:22:54 · 252 阅读 · 0 评论 -
2020秋招_高性能服务器框架
总览服务器三个主要模块:I/O处理单元逻辑单元存储单元I/O处理单元四种IO模型,两种高效处理模型。四种IO模型两种高效处理模型逻辑单元两种高效并发模式,高效的逻辑处理方式——有限状态机。...原创 2020-10-17 21:18:16 · 648 阅读 · 0 评论 -
2020秋招_数据库(mysql)学习记录
索引索引是对数据库表中一列或者多列的值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息。普通索引和唯一索引唯一索引和普通索引使用的结构都是B-tree,执行时间复杂度都是O(log n)。普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHEREcolumn=)或排序条件(ORDERBYcolumn)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。普通原创 2020-10-17 21:16:56 · 389 阅读 · 0 评论 -
2020秋招_C++基础、数据结构基础面经记录
malloc/free和new/delete的区别深入理解C++ new/delete, new []/delete[]动态内存管理malloc/free是C/C++标准库的函数,new/delete是C++操作符(编译器可以优化操作符,但无法优化库函数)。malloc/free只是动态分配内存空间/释放空间。而new/delete除了分配/释放内存空间还会调用构造函数和析构函数进行初始化与清理(清理成员),即可以实现动态的内存管理。malloc/free管理内存失败会返回NULL(0),new/原创 2020-10-17 21:15:34 · 619 阅读 · 0 评论