- 博客(43)
- 收藏
- 关注
原创 《葵花宝典》计算机网络篇幅
七层网络模型和五层网络模型, 以及各自都有哪些常见协议?物理层链路层网络层:ARP, IP, ICMP传输层:TCP UDP会话层 |表示层 | --- HTTP SMTP POP SSL FTP应用层 |TCP、UDP对比,使用选择a. TCP是面向连接的可靠数据传输服务,UDP则提供无连接的不可靠数据传输服务b. TCP只支持点到点的数据传输服务, UDP支持一对一、一对多、多对一、多对多交互通信c. TCP有拥塞控制、流量控制; UDP没有拥塞控制d. TC
2022-04-11 21:55:50
830
原创 20220323华为笔试
1#include <vector>#include <queue>#include <iostream>using namespace std;int help(vector<int>& num){ vector<bool> is_used(num.size(), false); queue<int> q; q.push(0); is_used[0] = true; int
2022-03-23 21:03:22
640
原创 acwing笔记
文章目录基础知识快速排序归并排序二分查找基础数据结构数组模拟单链表trie字符串统计并查集堆模板搜索和图论邻接表数组实现dfsbfskmp最短路最小生成树二分图数学知识动态规划dp背包问题贪心基础知识快速排序/** * @brief: 快速排序: 递归,分治 * @time cpl: O(nlog n) * @space cpl: O(1) * @trouble: **/template <typename type>void quick_sort_helper(type
2022-03-19 15:45:06
1718
原创 c++手写堆
#include <iostream>#include <vector>template<typename type, typename cmp>class ToyHeap{public: ToyHeap(std::vector<type>& vec):num(vec){ init(); } void init(){ for(int i=num.size()/2; i>=0;
2022-03-17 20:13:58
1184
原创 20220303蔚来笔试
1#include <iostream>#include <algorithm>#include <cstring>#include <string>using namespace std;const int N = 110;int num[N];int v;int main(){ int t; int idx = 0; int mx = -1; while(cin >> t){
2022-03-12 21:04:41
1001
原创 20220305网易笔试
1#include <vector>const int N = 200010;int p[N];int find(int x){ if (p[x] != x) p[x] = find(p[x]); return p[x];}class Solution {public: bool validPath(int n, vector<vector<int> >& sides, int start, int end) {
2022-03-12 21:04:05
190
原创 20220305美团笔试
1#include <iostream>#include <set>#include <vector>#include <algorithm>using namespace std;const int N = 200010;bool num[N];int main(){ int n; scanf("%d", &n); for(int i=0; i<n; i++){ int t; scanf(
2022-03-12 21:03:32
384
原创 20220307shopee笔试
1乘积最大子数组详细描述给你一个整数数组 nums ,请在时间复杂度为O(n) 下找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积其他时间限制: 1000ms内存限制:256.0MB输入输出示例示例1输入复制[2,3,-2,4,-1]输出复制48class Solution {public: /** * Note: 类名、方法名、参数名已经指定,请勿修改 * * * 找到数组
2022-03-12 21:02:39
457
1
原创 20220312完美世界笔试
1// 可以引入的库和版本相关请参考 “环境说明”#include <iostream>#include <unordered_map>#include <string>using namespace std;string solution(string str) { string res = ""; if(str.empty()) return res; unordered_map<string, int> fmp;
2022-03-12 21:01:21
445
原创 CPP服务器08--http请求响应实现
http服务设计对于静态页面服务器来说,其工作流程如下:- 接收客户端消息- 解析出http请求报文- 业务逻辑,拼装响应报文- 发送给客户端结果http连接类设计目标:将客户端唯一文件描述符封装,表示成一个连接实体.从socket读报文–>buffer存储给socket写报文–>buffer存储解析逻辑-->进一步划分給子类去做 requests类响应逻辑-->进一步划分給子类去做 response类头文件#ifndef HTTP_CONN_H#
2021-10-01 15:15:52
420
原创 CPP服务器07--服务器层次分析及其设计
IO复用EPOLL服务器设计软件层次设计 WebServer :服务器逻辑框架: epoller监听+线程池读写 | | Epoller Timer :epoll操作封装, 定时器给连接计时 | | ---------- |
2021-10-01 14:00:12
196
原创 CPP服务器06--线程池实现(2)
线程池封装说明:上篇文章中的线程池,功能相对完整,有管理调度线程.但接口定义通用性差,需要修改,奈何目前水平不够,只能先找一个能用的替换,以后再改吧.阅读建议:// std::thread :https://subingwen.cn/cpp/thread/// std::function :https://blog.youkuaiyun.com/jinzhu1911/article/details/101307637// template<typename F,typename…
2021-10-01 09:49:42
186
原创 CPP服务器05--线程池实现(1)
线程池封装 1实现思路:组件:pthread_t *workers; //工作线程数组pthread_t manager; //管理者线程TaskQueue *task_queue; //任务队列思路:多个工作线程,外部线程添加任务,结合阻塞任务队列实现生产消费者模型;管理者线程负责工作线程的调度策略比如说,存活数小于设定最大线程数且存在未执行任务,则创建线程当忙碌线程小于当前存活线程数且,则进行线程销毁.实现: 任务和任务队列#i
2021-09-30 22:36:56
255
原创 CPP服务器04--Epoll反应器封装
Epoller反应器封装实现思路:容器:std::vector events_;操作:对epoll创建,关闭,添加,修改,删除,等待进行封装头文件#ifndef EPOLLER_H#define EPOLLER_H#include <sys/epoll.h> //epoll_ctl()#include <fcntl.h> // fcntl()#include <unistd.h> // close()#include <assert.h&
2021-09-29 12:07:08
177
原创 CPP服务器03--日志类实现
日志类实现功能需求:- 允许多个线程同时写,但刷入磁盘必须保持相对顺序实现思路:组件:阻塞队列 std::unique_ptr<BlockQueuestd::string> queue_;刷盘线程 std::unique_ptrstd::thread writeThread_;日志容器 Buffer buff_;互斥锁 std::mutex mtx_;思路:单例模式实现一个日志类;外界调用不断添加日志进阻塞队列queue_;写线程不断从阻塞队列取日志刷盘
2021-09-29 11:21:50
145
原创 CPP服务器02--字符读写缓冲区封装
字符读写缓冲区封装功能需求:对一个文件描述符进行读写操作,需要可自动调整大小的缓冲区实现思路:容器:std::vector buff操作:维护读写两个指针记录当前读写位置,扩容:若写指针达到当前buff尾,且数据未读完缩减:每次操作完成,重置缓冲区头文件#ifndef BUFFER_H#define BUFFER_H#include <cstring> //perror#include <iostream>#include <unis
2021-09-28 22:07:01
220
原创 CPP服务器01--阻塞队列的实现
阻塞队列1. 实现原理:1. 容器:std::queue<T> 2. 逻辑:使用一把互斥锁控制队列这个临界资源的访问; 使用条件变量控制入队出队操作(队满则入队阻塞,队空则出队阻塞);#include "../log/blockqueue.hpp"#include "pthread.h"#include <cstdlib>#include <ctime>#include <unistd.h>std::unique_ptr<Bloc
2021-09-27 22:00:36
211
原创 腾讯音乐笔试
一、 树自上往下每层循环右移k位#include <vector>#include <iostream>#include <deque>using namespace std;struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(nullptr), right(nullpt
2021-09-16 21:40:31
454
原创 单例模式-
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、懒汉式--单线程正确二、双重检查锁懒汉式总结一、懒汉式--单线程正确代码如下(示例):class Singleton{ private: Singleton(){}; static Singleton *pInstance; public: static Singleton *getInstance() { if(
2021-09-14 12:21:06
92
原创 Linux epoll服务器demo
1. server.c#include <stdio.h>#include <ctype.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <string.h>#include <arpa/inet.h>#include <sys/socket.h>
2021-09-08 19:54:47
194
原创 十种排序算法C++实现
#include <iostream>#include <vector>#include <algorithm>#include <cmath>template <typename type>void swap(type *a, type *b){ type temp = *a; *a = *b; *b = temp;}/** * @brief: 冒泡排序;添加标志位isSort来判断是否已经有序以
2021-07-20 10:53:36
83
原创 白盒测试笔记
白盒测基本特点优点:代码覆盖率高缺点:覆盖所有代码路径难度大业务功能覆盖可能不全测试开销大白盒测试设计方法静态设计方法桌面检查,也就是交叉检查代码审查代码走查代码扫描工具动态设计方法逻辑覆盖法语句覆盖判断覆盖条件覆盖判定条件覆盖条件组合覆盖路径覆盖基本路径测试法逻辑覆盖法定义:对程序逻辑结构遍历实现逻辑覆盖覆概率:是用来度量测试完整性的一个手段(被执行数/item总数)测试案例语..
2021-07-09 16:47:39
183
原创 北京化工大学内卷辅助脚本
北京化工大学内卷辅助脚本教务网辅助选课脚本**背景:**每逢选课,教务网被挤宕机,配置差的电脑而又孤僻不喜欢求助别人的人,第一时间基本是选不到课了;如果仅是如此,也就认了吧,偏偏还有私下交易的,如约定某个点,同时上线,A退课,B选课。许多不上课却选课的大有人在。**目标:**自立更生,抢吧,也恶心一下他们。**方案:**写个小程序驱动游览器不断刷新页面并自动选择符合条件的课程**技术选型:**selenuim教务网报告提醒脚本**背景:**研究生阶段,学院以GPA
2021-05-26 15:51:07
491
原创 快乐的linux命令行
chapter 21. 鼠标左键高亮部分文本,鼠标中键粘贴。2. 日期:date 3. 月历:cal4. 磁盘剩余空间:df5. 空闲内存 :free6. exit7. 幕后控制台:ctrl+alt+F1....F6 ; F7退出chapter 31. 当前目录:pwd2. 切换:cd3. 列举:ls4. 绝对路径,以‘/’开始:cd /usr/bin 5. 相对路径,'.' 表示当前工作目录,'..'表示上一级,;'./'是默认隐含的 cd ./bin 等价于 cd b
2021-05-26 15:42:50
315
原创 C和指针:第十七章:经典抽象数据类型
第十七章:经典抽象数据类型堆栈实现/*接口声明 stack.h*/#define STACK_TYPE intvoid push(STACK_TYPE value);void pop( void );STACK_TYPE top(void );STACK_TYPE top( void );int is_empty( void );int is_full( void );/*静态数组实现 stack.c*/#include "stack.h"#include <asse
2021-05-24 12:05:39
115
原创 C和指针:第十一章:动态内存分配
第十一章:动态内存分配void *malloc(size_t size)void calloc(szie_t num_elements, size_t element_size)void realloc(void *ptr,size_t new_size)void free(void *ptr)常见错误:忘记检查是否分配成功 ;操作内存超出分配内存的边界定义如下不易发生错误的内存分配器,分别在文件alloc.h alloc.c test.c#ifndef CPOINTER_ALLOC_H
2021-05-23 21:10:17
126
原创 C和指针: 第九~十章:字符串和字节、结构和联合
第九章:字符串和字节strlen()返回结果为无符号数,常见错误有if((strlen(x) - strlen(y))>0)复制字符串:char *strcpy(char *dst, char const *src)连接字符串:char *strcat(char *dst, char const *src)strcat and strcpy 均返回第一个参数的一份拷贝,(指针)比较字符串:int strcmp(char const *s1, char const *s2)
2021-05-23 20:30:59
91
原创 C和指针: 第八章:数组
数组和指针不可替换情形:sizeof 和 &2[array]等价于*(2+(array))等价于*(2+array),该表达式是合法的下标操作效率永远不大于指针操作下标 [ ] 优先级高于 *一维数组数组名是指向数组第一个元素的指针多维数组数组名也是指向数组第1个元素的指针,但此时的第1个元素表示次级数组。例如,int matrix[3][10],matrix指向第1行,matrix+1指向第2行,*(matrix+1)是指向第2行第1个元素的指针,*(matrix+1)+5是指向第2行.
2021-05-23 17:41:20
146
原创 联想笔记本G50-80 bios白名单修改
联想笔记本G50-80 bios白名单修改。缘由:更换网卡为AX200,遇到bios白名单的限制,需要修改bios程序。bios型号:B0CNA0WW软件工具:UEFITOOL、 UltraEdit硬件工具:土豪金CH341A + Sop8烧录夹子步骤简述:断开笔记本电源,拆掉笔记本电池,拆掉主板电池,找到主板上编号为UC3的芯片,型号为25B64FVSIG(25064FVSIG). 用sop8夹子夹住芯片,用CH341A编程器读取备份原bios文件 用UEFITOOL通过搜索.
2021-05-23 16:32:27
8414
7
原创 C和指针: 第七章:函数
第七章:函数函数调用之前若编译器没看到函数原型,则默认返回整形#include <stdio.h>/*值的1的位数的奇偶校验*/int even_vailidity(int value, int n_bits ){ int parity = 0; while( n_bits > 0) { parity += value & 1; value >> 1; n_bits -= 1;
2021-05-23 15:29:52
120
原创 C和指针: 第六章:指针
第六章:指针1字节=8位,1字=16/32/64位对指针解引用之前,需要检查确认其并未NULL指针*(int * ) 100 = 25; 把内存为100的地方赋值为25前缀++a:先自增后返回值; 后缀a++:先返回值后自增*,++这两个操作符都是从右向左结合,且后者优先级更高//假定如下条件char ch = 'a';char *cp = &ch;*(cp + 1) = 'f';//则根据从右向左规则有*++cp: 'f' 且cp指向‘f'*cp++: 'a' 且cp
2021-05-23 14:21:27
173
原创 C和指针学习笔记:第二~五章:基本概念 、数据、语句、操作符和表达式
第二章:基本概念翻译过程:编译(预处理、解析、优化)和链接函数局部变量存储于堆栈(动态分配内存),静态变量则存储在静态内存三字母词,e.g., ??( 表示 [注释不能嵌套第三章:数据四种基本数据类型:整型、浮点型、指针、聚合类型整形字面值后缀:L/l 表示long, U/u表示unsigned整形字面值前缀:0开头表8位数,0x开头表16位数, L表宽字符常量枚举类型:提高程序的可读性和可维护性#include <stdio.h>enum Months{Jan=
2021-05-22 22:35:11
118
原创 C和指针学习笔记: 第一章:快速上手
第一章:快速上手程序描述://我们所要分析的这个程序从标准输入读取文本并对其进行修改,然后把它写到标准输出。程序1.1首先读取一串列标号。这些列标号成对出现,表示输入行的列范围。这串列标号以一个负值结尾,作为结束标志。剩余的输入行被程序读入并打印,然后输入行中被选中范围的字符串被提取出来并打印。注意,每行第1列的列标号为零。//每个输入行的后面一行是该行内容的一部分.//出输入的第1行是一串列标号,串的最后以一个负数结尾.//这些列标号成对出现,说明需要打印的输入行的列的范围.//例如,0 3
2021-05-21 22:22:05
123
原创 王道考研 操作系统学习笔记:
王道考研 操作系统学习笔记(复习用):课程链接:https://www.bilibili.com/video/BV1YE411D7nH1.1.1:介绍操作系统的定义,可理解为软硬件中间层,管理处理机、存储器、文件、设备四大资源。1.1.2:操作系统(os)的特征:并发、共享、虚拟、异步;前两点是后两点的基础1.1.3:回顾os发展并给出分类:手工、批处理、分时、实时、网络、分布式、个人计算机1.1.4:os运行机制和体系结构:指令特权与否,cpu核心态用户态,程序内外之分;时钟,中断,原语
2021-05-21 11:32:53
1571
原创 卡尔曼滤波---公式推导和一些疑问
该笔记是在学习up主DR_CAN的关于卡尔曼滤波视频后做的笔记整理。up主主页:https://space.bilibili.com/230105574该笔记采用latex生成,文章源码有需要的可以留言,当然,源码不免费,得给一顿饭钱。...
2020-11-20 16:50:17
4413
14
原创 两个ROS-master间的通信
事情是这样的,有一套定位系统,运行在主机A上,启动了第一个ros-master。又有一辆小车,上面载着树莓派(称为主机B),运行着第二个ros-master,它有着自己的SLAM。但是现在要用精准的定位系统来给小车定位并做控制,用主机A上的matlab给小车做控制程序设计。通过matlab的ros模块可以很容易获取小车的位置姿态信息,但如何把matlab的控制指令发给小车是一个问题。...
2019-09-13 22:29:27
1793
原创 大众点评美食评论爬虫
大家都知道的,大众点评用了css反爬,脑壳疼。评论文字使用SVG替换。然后还需要登录才能查看全部评论,也就是要带cookie了,此外时不时跳验证码,验证码还有几种,这帮人是真的过分了,搬砖的何苦为难搬砖的呢。'''function:从数据库取店铺id取解析店铺下的评论'''# -*- coding:utf-8 -*-# Author : pengfrom getter import...
2019-08-21 12:40:49
2242
原创 多智能体系统编队算法仿真--python3实现
初始条件:智能体位置随机生成 所有智能体位置全局可知 目标多边形位置给定 所有个体运行相同算法,根据环境来决定自己动作。目标:形成均匀多边形分布,所谓的 ‘均匀’ 效果如下图:即是多边形上间距相等问题拆分:抵达均匀多边形 均匀化分布1 .抵达均匀多边形:'''code = 'utf-8''''''author = peng'''imp...
2019-05-05 20:56:08
13603
24
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人