自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 20200108局部锁、全局锁

0 线程相关操作std::this_thread::yield();//让该线程休息一下,让出资源 std::this_thread::sleep_for(std::chrono::seconds(1)); //每隔1秒进行一次1 全局锁//测试全局锁std::mutex globalmutex;void myprint1(int n,char c){ std...

2020-01-08 09:24:38 462

原创 20200108自动锁、模拟转账

1 自动锁创建一个类,将锁封装起来,类的构造函数自动将锁锁住,类的析构函数自动将锁释放。template <typename T>class MyLock{private: T& m_mutex;public: MyLock(T& v_mutex):m_mutex(v_mutex){ m_mutex.lock(); } ~MyLock(){...

2020-01-08 09:14:08 179

原创 20200102

1 前++问题int i = 1;(++i)+(++i)=?和编译器有关无固定答案,可能为6,可能为3等。2 多线程g++编译多线程g++ main.cpp -o main -std=c++11 -lpthreadclass A{public: int m_count; // std::atomic<int> m_count; ...

2020-01-03 09:03:15 211

原创 日志20191206(6)

#include <iostream>using namespace std;class A {private: int m_data;public: A(int _data = 5) : m_data(_data){ //... } virtual void f() { cout << "f()" << endl; } virt...

2019-12-07 08:20:23 209

原创 手撕虚函数,虚函数调用虚函数

1 虚函数一个类的内存分布,虚函数表指针,普通成员变量,sizeof(A) = 为一个虚表指针(32位是4字节)+ 普通成员变量(静态什么的都不是)。虚函数本身也是函数,相当于一个指针,虚函数表里面含有虚函数,相当于一个二级指针,虚函数表指针指向虚函数表,相当于一个三级指针,所有可以通过一个三级指针直接访问某个虚函数。见代码:#include <iostream>using...

2019-12-06 11:23:46 285

原创 日志20191205(5)

#include <iostream>#include <vector>using namespace std;class Rval {public: Rval() : m_val(new int(5)) { cout << "Rval()" << endl; } Rval(const Rval& rhs) : m_v...

2019-12-05 22:27:31 95

原创 日志20191204(4)

//编译式依赖 类的前置声明 void test2() { int a = 1; int b = 2; //assert(sizeof(double) == sizeof(int)); //static_assert(a == b, "error"); //用法错误,编译时期无法确定 static_assert(sizeof(double) == sizeof(int), "erro...

2019-12-04 22:14:22 85

原创 日志20191203(3)

#include <iostream>using namespace std;/*命令行 vimtutor vim参考文档 vim .vimrc :set number vim以后编辑时候自动带行数vimEsc 0 跳到行首 $ 跳到行尾 shift v 选择一整行 jk上下移动 =自动对齐 J 把下一行移动到当前行 : vs 自动分屏, ctrl ...

2019-12-03 22:03:22 90

原创 日志20191202(2)

#include <iostream>#include <vector>using namespace std;#if 0命令行模式下ctrl + l 清屏ctrl + h 删除字符printenv | grep PATHtest=goodcpp =两边没有空格echo $testexport test 将环境变量加入当前范围中uns...

2019-12-02 22:23:52 96

原创 日志20191201(1)

#include <iostream>using namespace std;#if 1/*sudo apt-get *** 允许安装的那个用户有root权限sudo apt-get update 获取更新资源信息,没有更新sudo apt-get upgrade 真正的更新who 有谁登录当前机器pwd 当前路径初始化rootsudo pass...

2019-12-01 20:25:49 87

原创 tcp/ip简单模型

#define _CRT_SECURE_NO_WARNINGS#define _WINSOCK_DEPRECATED_NO_WARNINGS #include <WinSock2.h>#pragma comment(lib,"ws2_32.lib")#include <iostream>#include <string>using namespac...

2019-11-07 15:42:29 101

原创 cesium卫星轨道模拟

html<!DOCTYPE html><html lang="en"><head> <!-- Use correct character set. --> <meta charset="utf-8"> <!-- Tell IE to use the latest, best version. --...

2019-11-04 21:09:30 8626 13

原创 深入理解计算机系统(1)

//深入理解计算机系统主要参考了《深入理解计算机系统(第3版)》,所做的笔记。1.2 编译的过程编译过程主要分为四个阶段:预处理,编译,汇编,链接。(图来自《深入理解计算机系统(第3版)》,下同)。预处理:扫描以#打头的命令,比如#include <xxx.h>直接将.h文件粘贴到当前文件, gcc -E hello.c -o hello.i 生成.i文件,此...

2019-09-19 21:34:37 101 1

原创 基本数据结构

1 链式栈//linkstack.h代码 //模板只能在.h中,模板的实例化在.cpp中,原因以后说#include <iostream>#include <list>using namespace std;//链式栈//链式栈节点template <typename T>struct stacknode { T data; ...

2019-09-12 09:50:29 210

原创 C++设计模式

(本文主要参考了《大话设计模式》,李建忠设计模式视频)1 概述将稳定部分和变化部分进行分离,稳定部分封装到一块,变化部分通过传参来实现(变化部分通过一个基类,具体的情况继承这个基类)。2 创建型模式2.1 建造者模式(Builder)2.1.1 概念建造者模式(Builder),将一个复杂的对象的构建与它的表示相分离,使得同样的构建过程可以创建不同的表示。如果使用了建造...

2019-09-11 11:05:07 448

原创 排列之一个排列转换成另一个排列 求逆序数(23)

1 问题有一个排列A(元素无重复),经过一定步数的转换,转为排列B。交换A中第i个元素和第j个元素的代价为|i-j|。输入:n //元素个数n个整数 //排列An个整数 //排列B输出:一个整数 //需要的代价2 分析求两个元素的逆序数,(如果大数在小数前面,则是一个逆序,4231逆序数为3+1+1=5),逆序数表示经过逆序数次转换可以转为有序...

2019-09-10 16:51:55 1341

原创 组合之分苹果问题(22)

1 问题将n个苹果分给m个人,苹果都一样,人都一样。如果把4个苹果分给3个人,121 112 211是一种可能。问一共有多少种方法。2 分析1 当苹果比人数少时,就等同于将等数量的苹果分给等数量的人,因为人数较多,空的人都一样,所以做等效处理。比如2个苹果分给3个人和2个苹果分给2个人结果是一样的。2 当苹果数<=人数时,等效于:有人没有苹果和所有人都分到苹果两种可能,然...

2019-09-09 10:58:47 2002 1

原创 可重复选元素的组合问题(21)

1 问题从n个元素中挑选m个元素,有多少组组合,可以重复选择。输入:3 3输出:10解析:从三个元素中选取三个元素,可以重复选,共有多少组组合。111 112 113 122 123 133 222 223 233 333 一共十组组合,注:121 112 211是同一种组合,不能重复计算。2 分析如果采用递归,必然包含大量的重复计算,运算复杂度呈指数级别增长,肯定超时。...

2019-09-09 10:08:02 2049 1

原创 快速找到和为零的四个数(20)

1 问题描述给定四个数组,A,B,C,D,从每个数组找出取出一个元素,使得a+b+c+d=0。问满足条件的一共有多少组。输入样例 第一行//每组元素的个数 剩下n行 //每组数组的元素6 -45 22 42 -16 -41 -27 56 30-36 53 -37 77-36 30 -75 -4626 -38...

2019-09-07 10:42:39 410

原创 二分问题(19)

1 二分查找二分查找先将数组进行排序,然后进行查找,因为考虑左闭右开或者左闭右闭问题,所以全部转为左闭右闭。#include <iostream>#include <algorithm>using namespace std;int binsearch(int* arr,int size,int p){ //考虑到左闭右开,或者左闭右闭 /...

2019-09-06 16:04:26 98

原创 能被3整除的数(18)

1 问题(此题来自牛客网)小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。并且小Q对于能否被3整除这个性质很感兴趣。小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。2 样例输入 2 5输出 3说明:1 12 123 1234 12345中第2个到第5个为12 123...

2019-09-05 09:38:28 763

原创 排序(17)

1 堆排序#include <iostream>using namespace std;//堆排序//交换两个数void myswap(int& a, int& b) { a ^= b; b ^= a; a ^= b;}void maxheap(int* arr, int start, int end) { //根节点是从0开始 int d...

2019-09-03 10:56:49 71

原创 字符串匹配(16)

1 一般方法#inlucde <iostream>using namespace std;int match(char* P,char* T){ int n = strlen(T),i = 0; //文本串 int m = strlen(P),j = 0; //模式串 if(n < m) return -1; ...

2019-09-03 09:41:20 117

原创 排列与组合(15)

1 排列问题1.1递归算法例如有三个数{1,2,3},可以看成1+{2,3}的排列,2+{1,3}的排列,3+{1,2}的排列。1+{2,3}的排列有1,2,3和1,3,2。//这种方法规避不了含有相同元素的排列问题#include <iostream>#include <algorithm>using namespace std;void my...

2019-09-02 09:38:14 233

原创 计算机网络第四章网络层(4)

(主要参考谢希仁《计算机网络》第七版)4.1 网络层提供的两种服务网络层应该怎样向运输层提供服务(“面向连接”,“无连接”),实质是可靠交付应当由谁来负责?是网络还是端系统。1 面向连接思想当两个端系统进行通信时,先建立连接(但在分组交换中建立一条虚电路),预留双方通信所需要的一切网络资源,然后就沿着虚电路发送分组,分组的首部不需要填写完整的目的主机地址,只需要填写虚电路编号,减少...

2019-08-30 16:38:22 336

原创 计算机网络第五章运输层(5)

(主要参考谢希仁《计算机网络》第七版)5.1 运输层概述1 运输层向它的上层应用层提供通信服务。两台主机的通信就是两台主机中的应用进程互相通信。2 运输层的复用和分用:复用是指发送方不同的应用进程都可以使用同一个运输层协议发送数据,分用是指接收方的运输层在剥去报文的首部后能够把这些数据正确的交付给目的的应用进程。3 硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议...

2019-08-29 11:04:22 424

原创 计算机网络第二章物理层(2)

(主要参考谢希仁《计算机网络》第七版)2.1 物理层基本概念物理层考虑怎样在连接各种计算机的传输媒体上传输数据比特流,而传输媒体种类繁多,物理层的作用就是屏蔽掉这些媒体和通信手段的差异,使物理层上面的数据链路层感觉不到这些差异,这样就可以使数据链路层只考虑本层的协议和服务(其他层的原理亦是如此)。物理层任务为确定与传输媒体的接口有关的一些特征:机械特征,电器特征,功能特征,过程特征。...

2019-08-28 11:00:20 497

原创 计算机网络第一章概述(1)

(主要参考谢希仁《计算机网络》第七版)1.3 互联网组成边缘部分:互联网上的主机组成,由用户直接使用的。核心部分:由网络和链接网络的路由器组成,为边缘部分提供服务。1.3.1 边缘部分计算机之间的通信:实质是主机A的一个进程和主机B的一个进程之间进行通信。客户-服务器方式:客户是服务请求方,服务器是服务提供方。对等链接方式:本质仍然是客户-服务器模式,网络中的主机既是客...

2019-08-28 09:08:47 170

原创 混战世界(14)

1 问题(牛客网百度2019秋招笔试题)1.1 题目描述一共有n个小兵(3的倍数),第i个小兵的物理攻击为Ai,魔法攻击为Bi,将这些小兵平均分为三个队,一队参加物理伤害抗战(伤害之和W1为该队所有小兵的物伤之和),二队参加魔法抗战(伤害之和W2为该队所有小兵的法伤之和),三队参加混合战(伤害之和W3为该队所有小兵的物伤和法伤之和除以2),问怎样分配,使得W1+W2+W3之和最大。...

2019-08-07 21:09:08 139

原创 消除重复数字(13)

1 题目(题来源牛客网华为2019秋招笔试题)1.1 问题描述给定一个正整数,给出消除重复数字以后最大的整数。1.2 输入示例4232341.3 输出示例4322 问题分析这道题想了很久,没有想出来,采用牛客上提供的方法。此题相当于一个字符串查重调整问题,需要两重循环,(相当于冒泡排序需要两层循环)。用两指针i,j开始指向字符串的首地址,然后开始遍历,j...

2019-08-07 16:35:21 1042 2

原创 整数反转求和(12)

1 题目(题来源牛客网华为2019秋招笔试题)1.1 问题描述输入两个正整数a和b,然后分别将它们的数字按照高位在右边的方式反转求和。例如:reverseAdd(123,456) == 321 + 654 = = 975;1.2 输入示例123 4561.3 输出示例2 问题分析可以先用string将两个数记录下来,然后从右到左遍历每一个string,相当于遍历...

2019-08-07 15:45:07 883

原创 最长公共子序列(11)未完成

1 问题2 问题分析3 代码编写#include <iostream>#include <algorith>#include <string>using namespace std;void test(){ char str1[1000]; char str2[1000]; while(cin>>str...

2019-08-02 23:50:35 73

原创 滑雪(10)

1 问题(郭炜《算法基础与在线实践》7.6)1.1 问题描述小黑喜欢滑雪,为了能滑动,必须由高位置向低位置滑动,小黑想尽可能滑雪距离长。有一个二维数组,代表每个地点的高程。1.2 输入数据第一行代表区域的行数R和列数C(1 <= R,C <= 100)。下面有R行,每行有C个整数,代表高度h,0 <= h <= 10000。输出要求,输出最长滑行...

2019-08-02 23:25:34 151 1

原创 最长上升子序列(9)

1 问题(郭炜《算法基础于在线实践》)1.1 问题描述给定一个序列(a1,a2,a3,...,an),从中任意提取一个子序列(bk1,bk2,bk3,...,bkm),若满足bk1 < bk2 < ... <bkm,则b是a的一个上升子序列。求a的最长上升子序列的长度。1.2 输入数据第一行N是序列的长度,第二行有N个整数,是序列的各个元素。1.3 输入样...

2019-08-02 11:43:26 119

原创 合唱(8)

1 题目(此题来源牛客网网易2018秋招笔试真题)1.1 题目描述小Q和牛博士合唱一首歌曲,这首歌曲由n个音调组成,每个音调由一个正整数表示。对于每个音调要么由小Q演唱要么由牛博士演唱,对于一系列音调演唱的难度等于所有相邻音调变化幅度之和, 例如一个音调序列是8, 8, 13, 12, 那么它的难度等于|8 - 8| + |13 - 8| + |12 - 13| = 6(其中||表...

2019-08-02 10:04:14 148

原创 重排数列(7)

1 题目(此题来源牛客网网易2018秋招笔试真题)1.1 题目描述有一个长度为N的正整数数列A = {A[1],A[2],A[3]...,A[n]}。对该数列进行重新排列,使数列A满足所有的A[i]*A[i+1](1 <= i <= N-1)都是4的倍数。判断某一数列重新排列之后是否满足以上要求。1.2 输入描述输入第一行为需要判断的数列个数t(1 <...

2019-08-01 23:28:22 356 1

原创 字符串碎片(6)

1 题目(此题来源牛客网网易2018秋招笔试真题)1.1 题目描述一个小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac”由下面碎片组成,aaa,bb,c。求其平均长度(保留两位小数)。1.2 输入描述输入包括一个字符串s,字符串长度length(1<=length<=50),s只含小写字母。aaabbaaac1.3 输出描...

2019-08-01 22:23:45 262

原创 安排机器(5)

1 题目(此题来源于牛客网腾讯2018秋招笔试真题)1.1 问题描述有m个任务, 第i个任务需要xi的时间去完成,难度等级为yi。有n台机器,每台机器的最长工作时间为zi,机器等级为wi。对于一个任务,只能交给一台机器完成,机器的工作时间需>=任务所需时间且机器等级需>=任务难度等级,才可以用这台机器完成这个任务。完成这个任务将获得200*xi+3*yi的收益。...

2019-07-31 15:54:04 173

原创 多重背包问题(4)

1 问题(此题在csdn上查找了大量资料)多重背包问题是01背包问题和完全背包问题的改版,背包的容量为M(不超过背包时全部初始化为0,刚好装满第0容量初始化为0,其他初始化为-1,见后面代码),有n种物品,每种物品的价值为di,重量为wi,最多可以取ci件。问背包所放价值最大是多少。通俗来讲,小黑推着购物车去超市,购物车容量一定,有n种物品,啤酒饮料矿泉水,瓜子花生八宝粥等,每种物品最...

2019-07-31 00:24:38 348

原创 完全背包问题(3)

1 问题(此题来源于郭炜《算法基础与在线实践》,结合教材和自己体会所写)1.2 问题描述有N种物品,背包容积为M。每种物品都有对应的体积和价值,分别为w和d。每个物品可以取多次,其他参见01背包问题,01背包问题每种物品至多可以取1次,其他和完全背包问题一样。通俗来讲,假设小黑去超市购物,购物车大小一定,每个商品的价值和大小都不一样,问怎样装购物车装满的情况下物品总价值最大。01背...

2019-07-30 00:40:09 217

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除