并发技术future类
Future使用搭配async启动一个异步任务,返回一个future对象 1234std::future<int> res = std::async(std::launch::async, []{ std::this_thread::sleep_for(std::chrono::seconds(5)); return 1;}); int i =...
C++线程与源码学习
C++线程std::thread创建thread封装线程操作,通过std::tread(func)传入函数指针,创建一个对象并初始化即开启一个线程执行 注意: 这里可以传入成员函数,但必须加& 这里也可以传入仿函数,但是编译器会认为t1是一个函数指针的类型,可以使用{}统一初始化来指出这是一个thread对象 12345678910111213class func {public: void operator()() { std::cout << "这是一个仿函数" << std::endl; }};int main(){ std::thread t1(func()); std::thread t2{func()}; t2.join(); std::cout << typeid(t1).name() << std::endl; std::cout << typeid(t2).name()...
cs144-tcp/ip实现
Lab0:wamup手动联网:通过telnet获取 1234567891011121314151617181920telnet cs144.keithw.org 80 Trying 104.196.238.229...Connected to cs144.keithw.org.Escape character is '^]'.GET /hello HTTP/1.1Host: cs144.keithw.orgConnection: closeHTTP/1.1 200 OKDate: Tue, 12 Nov 2024 05:17:24 GMTServer: ApacheLast-Modified: Thu, 13 Dec 2018 15:45:29 GMTETag: "e-57ce93446cb64"Accept-Ranges: bytesContent-Length: 14Connection: closeContent-Type: text/plainHello, CS144!Connection closed by foreign...
排序
快速排序通过分而治之实现nlog(n)的排序算法 c++实现 12345678910111213141516template<typename T>void quick_sort(vector<T> arr, int start, int end){ if(start >= end) return; T mid = arr[start]; int left = start, right = end; while(left < right) { while(arr[right] >= mid && left < right) --right; while(arr[left] <= mid && left < right) ++left; std::swap(arr[left], arr[right]); } std::swap(arr[left], arr[start]); quick_sort(arr, start,...
动态规划
dp0-1背包 至多装capacity,求方案数/最大价值和 恰好装capacity,求方案数/最大/最小价值和 至少装capacity,求方案数/最小价值和 可以获得状态转移方程: 12dfs(i,c) = max(dfs(i-1,c), dfs(i-1,c-w[i]) + v[i])dfs(i,c) = dfs(i-1,c)+dfs(i-1,c-w[i]) 目标和 通过转换就可以得到0-1背包的一种,即求恰好时的方案数 记忆化搜索可以1:1地翻译成递推 123f[i][c] = f[i-1][c] + f[i-1][c-w[i]]// 为了避免负数f[i+1][c] = f[i][c] + f[i][c-w[i]] 倘若空间优化成一个数组 1234f[c] = f[c] + f[c-w[i]]/*这里从左→右计算,考虑到 f[c-w[j]]可能已经覆盖成f[i+1][c-w[i]],而不是一开始的f[i][c-w[i]],因此从右→左计算* 完全背包(可以重复选) 1234f[i+1][c] =...
git使用
git基础特点 分布式版本控制系统,直接记录快照(blob对象),而不是保存差异累计 存储项目随时间改变的快照 可靠性和本地执行,本地拥有完整的历史记录 轻量级分支 完整性:存储文件前通过SHA-1计算校验和,确保 几乎只增加数据而不丢失或修改,快照流 状态: 已修改:在工作区修改了文件 已暂存:添加到暂存区 已提交:保存到git仓库 git配置 /etc/gitconfig 文件:包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。 ~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 可以传递 --global 选项让 Git 读写此文件。 当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。 每一个级别覆盖上一级别的配置 命令: 1234git config --global user.name "Js"git config --global...
网络编程
基础APIsocket地址API字节序CPU的累加器一次至少装在4字节,字节在内存排序即字节序问题 大多PC采用小端:高高低低;大端相反 123456789101112// which endian#include <stdio.h>void byteorder(){ union{ short value; char union_bytes[sizeof(short)]; }test; test.value = 0x0102; if((test.union_bytes[0] == 1) && (test.union_bytes[2]) == 2) printf("big endian\n"); else if((test.union_bytes[0] == 2) && (test.union_bytes[2]) == 1) printf("little endian\n"); else...
操作系统
阻塞与非阻塞,同步与异步 一个进程的五个状态: new running waiting ready terminated 阻塞是指进程发起一个系统调用,由于该系统调用操作不能立即完成,而被内核挂起为等待状态
mysql
Mysql基础Linux安装mysql8.0下载安装包https://downloads.mysql.com/archives/community/ 从官网下载.tar.gz或.rpm包,上传到服务器解压缩 1tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar 安装rpm包这里是跟着黑马下载的rpm包使用rpm来安装发现rpm包缺少公钥并且明明安装openssl库却显示缺少库libcrypto.so和libssl.so,于是自己下载8.0.26的仓库进行yum安装 12345yum install openssl-devel # 先安装依赖sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm # 我换了阿里云的centos8源#base CentOS-8.5.2111 - Base -...
redis
redis安装和配置12345yum search all redis|grep redis # 列举相关redis包进行安装yum install redis hiredis hiredis-devel redis-doc.noarch# 通过man手册查看文档systemctl start redissystemctl status redisps -ef|grep redis redis上手redis首先是一个强大的缓存服务器,比memcache强大很多,不仅仅支持多种数据结构(不像memcache 只能存储字符串)如字符串、list列表、set集合、map映射表等结构,还可以支持数据的持久化存储 (memcache只支持内存存储),经常被应用到高并发的服务器环境设计之中。 数据缓存功能1redis-cli 字符串操作123456SET key value [EX seconds] [PX milliseconds] [NX|XX]# NX不存在则创建,XX不存在则返回nilget key# 不存在返回nil,get只能用于字符串值INCR key#...