自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP中time_wait解释及解决方法

首先是四次挥手断开连接的状态变化图总的来说,主动关闭连接的一方才会进入TIME_WAIT状态。客户端主动关闭连接时,会发送最后一个ack后,然后会进入TIME_WAIT状态,再停留2个MSL时间,进入CLOSED状态MSL时间MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间IP数据包将在网络中消失 。MSL在RFC 1122上建议是2分钟,而源自berkeley的TCP实现传统上使用30秒。一个s

2021-07-28 14:35:54 4

原创 C++智能指针

转载https://www.cnblogs.com/WindSun/p/11444429.html

2021-07-25 23:50:48 4 1

转载 Java注解

转载https://zhuanlan.zhihu.com/p/37701743

2021-07-20 14:52:26 3

原创 MYSQL中创建foreign key碰到的一个问题,待日后解决

创建一张表CREATE TABLE tmp(person int,id, int);

2021-07-08 17:31:08 3

原创 2021-06-23

HBase学习笔记全称Hadoop Database,是google Bigtable的开源实现1. HBase-组件构成Master:通常运行在NameNode上Master是集群的主节点,本质是一个进程负责管理元数据,如定期更新hbase::meta表分配与移动region保证集群的负载管理RegionServer,出现问题时进行故障转移region server负载region的合并与拆分负载数据的增删改查将MemStore中数据写到StoreFiles中检

2021-06-23 15:41:30 11

原创 各类型数据库基本概念

数据库基本概念结构化数据、非结构化数据、半结构化数据结构化数据是由二维表结构来逻辑表达和实现的数据,严格遵循数据格式和长度规范,也称为行数据特点:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的非结构化数据是指数据结构不规则或者不完整,没有任何预定义的数据模型,不方便用二维逻辑表来表现得数据(word文档、图片、视频音频等)半结构化数据介于结构化数据与非结构化数据的一种,虽然没有严格意义上的数据模型结构,但是包含相关标记,可以用来对记录和字段进行分层,常见

2021-06-23 11:27:29 19 1

原创 通过虚函数表调用虚函数与通过虚函数表

转载自https://blog.csdn.net/iicy266/article/details/11906807同时转载这样带来的安全性问题:https://blog.csdn.net/haoel/article/details/19480511、通过父类型的指针访问子类自己的虚函数2、访问non-public的虚函数

2021-05-13 22:29:41 12

原创 C++类内存分布,包含虚指针

首先类的内存空间大小,只与类中非静态的成员变量(int, char*)和虚函数指针个数有关,其中函数被存放到text区域,静态成员变量存放到.rodata区域,其实也就是数据区上面的只读存储区顺便提一下,类的所有实例化对象共享类的虚函数吧,虚函数表中存放的是虚函数的指针(也就是存放函数的地址),因此虚函数的每一项都是sizeof(pointer)的大小当一个类中有虚函数时,类的内存中首先会存放虚函数表的指针,其次才会存放类中的非静态成员变量class Aarrt{ int a = 1;

2021-05-13 22:25:27 326 10

原创 HTTPS连接过程以及数字证书的理解

HTTPS比HTTP协议多了加密的过程,因为HTTP在网络上传输是明文传输,明文数据会经过中间代理服务器、路由器等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了,因此需要HTTPS协议进行加密。加密算法总体来说可以分为对称加密和非对称加密对称加密对称加密意思就是 客户端与服务器段拥有相同的密钥K,客户端发送时用K加密,服务器端用K解密。如果由服务器生成一个密钥并传输给浏览器,那在这个传输过程中密钥被别人劫持到手了,之后他就能用密钥解开双方传输的任何内容了。因此对称加密不行。

2021-05-08 12:36:02 164 2

转载 操作系统内存管理

每个进程创建的内存地址都是虚拟地址,操作系统使用了虚拟化技术,让进程觉得它拥有了大块可支配的内存的假象,操作系统拿到这个地址后会将它转变为真实的内存地址,从而拿到对应的信息。比如下面这段代码:#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]){ printf("location of code : %p\n", (void *)main); printf("lo

2021-04-30 11:03:19 6

原创 C++ 内存对齐

内存对齐的规则:1、第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部"最宽基本类型成员"的整数倍地址开始存储.(struct a里存有struct b,b里有char,int ,double等元素,那b应该从8的整数倍开始存储.)。3、在数据成员完成各自对齐之后,类(结构或联合)本身也要进行对齐,对齐将按照#pragma pa

2021-04-30 09:47:15 24

原创 C++ new申请空间失败的判断

C++ new默认申请空间失败是抛出异常的,而malloc申请失败默认是返回空指针方法1、try catch捕获异常try { int *p = new int[10000000000]; } catch (bad_alloc &e) { cout << e.what() << endl; }方法2强制new不抛出异常,这时候会返回空指针int *p = new (std::n

2021-04-29 14:48:50 106

原创 给定一个包含 100 亿个无符号整数的大型文件,使用最多 1G 内存,对此文件进行排序

一个无符号数大小4B100亿个数大小为4*10^10B,一个G差不多是10^9B,因此差不多需要40G的内存,肯定无法同时加载进内存进行排序因此思路是将40G划分为的1000个文件,每个文件大小为40M,对每个文件内进行排序,之后建立一个全局的小根堆(维护capacity为1000)之后每次取小根堆顶i,写入总的文件,并取i对应文件的下一个数加入小根堆,重复以上过程http://www.javashuo.com/article/p-muxyfppx-g.html...

2021-04-23 20:17:31 51

原创 C++ 记住proirity_queue, sort函数中cmp的理解

自定义的sort, stable_sort,map,set,priority_queue等都需要传入自定义的比较函数不同的是,sort,statble_sort可以需要传入比较函数或仿函数map,set,priority_queue需要传入仿函数在定义自己的比较时,常常容易搞混对于比较函数,一句话 为true的放在前面对于priority_queue,大于为小根堆,小于为大根堆1、sort中比较函数此外sort中也可以穿仿函数,比方有个仿函数叫 struct cmp {};.

2021-04-19 10:58:39 50

原创 将ip地址存放到一个unsigned int中

描述:输入一个ip地址的字符串,将其存放到一个 unsigned int输入“12.5.34.90”做法:先将4个整数提取出来,从最右边也就是90,不断的压入到int的头部注意一定是先int右移,后将当前的位数置为头部代码如下:#include <iostream>#include <functional>#include <unordered_set>#include <string>#include <cstr.

2021-04-12 18:55:51 49

原创 对极几何 单应性矩阵好文汇总

https://stackoverflow.com/questions/35942095/opencv-strange-rotation-and-translation-matrices-from-decomposehomographymatstackoverflow上使用findHomography 以及decomposeHomographyMat使用的例子https://www.jianshu.com/p/b10d5bb7f58chttps://www.jianshu.com/p/fb.

2021-04-08 13:06:20 38

原创 1000瓶药水,一瓶有毒,用10只老鼠来判断到底是哪一瓶

1、方法1,二分搜索500 250 125 63 32 16 8 4 2 1假设毒性在一个小时才会发作,这样可以用10只老鼠来判断,但是在灌入250瓶的时候,必须等灌入500瓶的结果,来确定是哪250瓶,因此一共需要10只老鼠,需要10个小时2、方法2 位数法将瓶子编号,老鼠也编号那么n只老鼠,最大可以判断2^n瓶药水有没有毒比方 第7瓶药水编号是 0000000111,那么编号为0,1,2的老鼠喝这瓶这样每个老鼠喝多瓶药水,只需要1个小时就可以判断哪瓶药水有毒参考分析:比方

2021-04-04 16:45:15 216

原创 打家劫舍问题汇总

打家劫舍问题总的来说就是相邻的数不能同时取问题1leetcode198这个问题就是从头到尾遍历一个数组,数组相邻的数不能同时取,求最后的最大值dp[i][0] = max(dp[i-1][0], dp[i-1][1])dp[i][1] = dp[i-1][0] + prices[i]问题2leetcode213这个问题描述的是数组的头尾也算是相邻,因此只要我们不同时取头尾就好,按照问题1的思路找prices(0, size()-1),和prices(1, size()).

2021-03-29 16:48:41 33

原创 从n个数中选择k个数

这是组合问题,组合问题有几种写法,且时间复杂度位O(n^2)1、暴力循环,适用于固定的k比方从7个数中找两个数int main(){ vector<int> nums{1, 2, 1, 1, 4, 6, 8}; sort(nums.begin(), nums.end()); int count = 0; for (int i = 0; i < nums.size(); ++i) { if (i > 0 &

2021-03-17 16:39:41 113

原创 Hot100

115 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。 s = "rabbbit", t = "rabbit" 思路:dp[i][j]表示s[0~i] 与 t[0~j]有几种匹配结果 dp[i][j] = dp[i-1][j] //无论什么时候都可以将第i位删掉,去查看s[0/i-1]与t[0/j]的匹配 此外当第i位与第j位匹配的时候,还可以加入s[0/i-1] 和 t[0/j-1]的匹配情况 因此 dp[i][j] = dp[i-1]

2021-03-17 15:10:31 68

原创 placement new 和 allocator的一些理解

首先我们有一个概念,new操作会执行两部:申请内存和构造函数,也就是说new操作的申请空间和执行构造函数是绑定的,placement new操作(new(p)int)是在给定的p内存上执行构造函数。我理解的给定内存是 甭管你怎么搞到的这块内存,只要这块内存比要new的对象占用的内存大,就可以进行placement new那么给定内存p有几种方式呢静态存储区 栈空间 堆空间1、静态存储区上placement newclass A{public: A() : x(1) {

2021-03-14 11:33:54 30

原创 并查集判环

C风格的数组,你是无法知道它的大小的,只能自己去维护在栈上分配的数组可以通过sizeof来知道数组大小,而堆上分配的数组就没办法了int name[5];cout << sizeof(name) / sizeof(int) << endl; //sizeof(name)是整个数组的大小int *p = name;cout << sizeof(p) << endl;int *name2 = new int[5];cout <<.

2021-03-08 11:24:23 64

原创 字面常量字符串的一些思考

今天看Cherno的视频,发现const char* name = "www";char name[] = "qw";含义是不同的,第一行的意思是,我们只返回了一个指向字面值字符串内存的指针,这块内存是只读的,所以当我们即使将该指针转为char* 的,我们对内存种的内容进行更改,那也不一定会成功,因为这是一种未定义的行为(意思是C++标准也没说遇到这种情况该怎么做,完全取决于不同的编译器)像我现在使用的是minGW64编译器进行如下操作后const char *name = "123"

2021-03-08 09:42:25 16

原创 placement new 理解

两篇好文章博客园和CSDN基本上就是说placement new是指在指定内存上进行对象的构造,这个指定的内存可以堆,栈,静态存储区等等,用完之后要主动调用对象的析构函数,只是清除了这块内存种的内容,并没有释放空间。...

2021-03-07 21:22:29 16

原创 为什么说C++引入的强制类型转换比C风格的强制类型转换更安全?

我目前只体会到两种转换更安全,static_cast和dynamic_cast首先static_cast,static_cast只能在有 相互联系的类型 中进行相互转换,这个相互联系就很微妙(我也没去深究)第一种情况,double的指针和int的指针你觉的有关系嘛,虽然说double可以转为int,但是一个指向double的指针去指向int,是不是不太合理,static_cast也觉得不合理hhh可以看到static_cast阻止了这种转换,而C风格的强制转换并没有第二种,是类指针.

2021-03-07 17:06:02 46

原创 C++中stringsteam中的str(), clear(), eof(), rdbuf->in_avail()的用法,以及多次使用stringsteam的注意事项

今儿使用stringsteam可是遇到了一个大坑了先把坑贴上来int main(){ stringstream ss; int tmp = 0; ss << "1"; ss >> tmp; cout << tmp << endl; ss << "2"; ss >> tmp; cout << tmp << endl;};大家觉得这两次

2021-03-05 22:11:38 125

原创 剑指offfer 43 (leetcode 233)整数中出现1的个数

这个题从想思路到实现再到debug,前后差不多用了1个小时时间,不过是因为昨晚十二点多做的,在碰到一种情况时脑子有点不清醒耽误了点时间。这题作为hard来说 我觉得有点不太够,自认为hard的题应该是那种算法设计的特别巧妙的题,我做这题更像是找规律,不过也可能是别的大神有严谨的数学推导,还是自己太菜了。找规律范围 1的个数 计算方法 0-9 1 只有1 10 - 19 11 十位上的1出现了10次 0-9个位上出现了1次

2021-02-04 11:12:16 21

原创 C++unordered_set 基本操作

遍历set#include <string>#include <iostream>#include <unordered_set>using namespace std;int main(){ unordered_set<string> set; set.insert("1"); set.insert("2"); set.insert("3"); set.insert("4"); unorde

2021-02-03 21:45:25 652

原创 C++ string按照逗号分隔

除了普通的判断,之外使用stringstream代码string s1("1,2,3");stringstream ss(str);string s2("");while(getline(ss, s2, ',')) { cout << s2 << endl;}

2021-02-03 21:41:11 712

原创 C++中stringstream如何判断流中是否为空

学习自 StackOverflow方法1:ss.rdbuf() -> in_avail()code:#include <sstream>#include <iostream>using namespace std;int main () { stringstream ss; ss << "12"; if (ss.rdbuf() -> in_avail() != 0) { cout <.

2021-02-03 19:20:50 664

原创 GMM与EM算法的好文

CSDN:https://blog.csdn.net/jinping_shi/article/details/59613054/博客园:https://www.cnblogs.com/zhangchaoyang/articles/2624882.html知乎:https://zhuanlan.zhihu.com/p/30483076

2020-12-27 20:11:23 20

原创 胶囊网络理解 好文转载

先读这篇简单粗略的介绍简书再读这篇详细的介绍搜狐

2020-12-24 16:09:31 29 1

原创 残差网络的好文

转载微信转自知乎

2020-12-22 17:30:44 48

原创 pytorch中的DataParallel

转载自知乎https://zhuanlan.zhihu.com/p/102697821

2020-12-22 14:00:58 168

原创 pytorch中的permute和view

总的来说,就是transpose只能用于二维矩阵的转置(可以是高维矩阵中的二维),permute可以看作是多次进行transpose,其本质是维度互换然而view必须操作在一个contiguous 的tensor上,原因是因为其操作先把tensor展成一个一维的向量,之后再reshape成一个想要的维度。因此view和permute的操作含义不一样,但是具体使用中怎么正确的使用我还没搞的特别清楚,日后填坑转载好文章https://zhuanlan.zhihu.com/p/76583143...

2020-12-22 10:22:17 56

原创 C++中类静态数据成员的理解

类静态数据成员是属于类的,不属于某一个对象,因此静态数据并不通过类的构造函数进行初始化。类中静态成员的初始化方式有两种一、类外初始化上代码#include <iostream>using namespace std;class Foo {public: static int a;};int Foo::a = 10;void print(int &v) { cout << v << endl;}int mai

2020-12-18 17:07:40 235 1

原创 pytorch中tensor.topk

torch.topk(input, k, dim=None, largest=True, sorted=True, out=None) -> (Tensor, LongTensor)topk的原型如上:其中k是保留的k个值,largest=True意味着选取最大的,sorted=True是指将返回结果排序topk返回的是一个tensor,第一个元素指返回的具体值,第二个元素指返回值的index直接贴代码import torchx = torch.rand(2, 3, 3).

2020-12-15 22:56:50 445 1

原创 pytorch中BatchNorm1d、BatchNorm2d、BatchNorm3d

转载pytorch中BatchNorm1d、BatchNorm2d、BatchNorm3d - 简书 (jianshu.com)

2020-12-15 21:47:13 39

原创 最优传输OT问题

转载知乎对蒙日问题-->Kantorovich松弛--> 熵正则化--> Sinkhorn算法交替求解。计算最优传输(Computational Optimal Transport) - 知乎 (zhihu.com)转自CSDN对Sinkhorn算法的解释(11条消息) 最优传输-Sinkhorn算法(第九篇)_Grant Tour of Algorithms-CSDN博客...

2020-12-15 16:07:08 369

原创 C++ 含有可变形参的函数

为了编写能处理可变形参的函数,C++主要有两种方法1、使用可变参数模板2、今天学习的是initializer_list 标准库,适用于参数类型相同,但是参数个数不定的情况直接上代码#include <iostream>#include <string>#include <initializer_list>using namespace std;void print(initializer_list<string> li){

2020-12-08 22:08:48 73

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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