- 博客(146)
- 资源 (7)
- 问答 (2)
- 收藏
- 关注
原创 记录一次Golang逃逸分析
今天偶然看到Golang关于内存的文章,其中涉及了一点逃逸分析,由于去年之前都是专研C++,Golang也是去年11月才开始学习的,学完就马上进入项目了,没有深究底层,准备这段时间边改论文边开始仔细学一下Golang。
2022-08-24 13:50:36
491
1
原创 Apue-- 进程终止
有八种方法可以让进程终止(termination),前五种为正常终止:从main返回 调用exit 调用_Exit 或者_exit 最后一个线程从其启动例程返回 最后一个线程调用pthread_exit返回异常终止有三种:调用abort 结合搜到一个信号 最后一个线程对取消请求做出响应启动例程:由于main函数是被启动例程调用的,所以从main函数return时仍返回到启动例程中, main函数的返回值被启动例程得到,如果将启动例程表示成等价的C代码(实际上启动例程一般是直接用汇编写
2022-05-04 14:55:57
722
1
原创 JWT : Json Web Token
目录0、WHAT IS JWT1、When should you use JSON Web Tokens?2、JWT Structure2.1 Header2.2 Payload2.3 Signature2.4 Putting all together3、How do JSON Web Tokens work4、Why should we use JSON Web Tokens?0、WHAT IS JWTJWT(Json Web Token)...
2021-12-31 14:23:08
2305
2
原创 const 和non-const成员函数转化
翻译:GAN下的深度学习模型:协作深度学习中的信息泄漏链接:https://arxiv.org/abs/1702.07464.ABSTRACT深度学习最近因其能够解决端到端学习系统而在机器学习中非常流行,在该系统中,特征和分类器同时学习,在高结构化和大型数据库的存在下显著提高了分类精度。它的成功是由于最近的算法突破、越来越强大的计算机和对大量数据的访问。研究人员还考虑了深度学习的隐私影响。模型通常以集中的方式训练,所有的数据都由相同的训练算法处理。如果这些数.
2021-10-29 17:23:49
1107
1
原创 数据库的四种隔离机制
事务事务是应用程序中一系列严密的操作,所有操作都必须成功完成,否则在每个操作中所作的所有更改都会被撤消。事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。事务的ACID性质事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。原子性。事务是数据库的逻辑工作单..
2021-10-13 15:33:23
1715
原创 TCP、UDP一些事
现在绝大多数CS网络应用都是用TCP或UDP,这些传输协议都转而使用网络层协议IP,UDP是一个简单、不可靠的数据报协议,而TCP是一个复杂、可靠的字节流协议。一、用户数据报协议UDPUDP:应用进程将消息写入到套接字中,然后该消息被封装到一个UDP数据报中 ,然后又被封装到一个IP数据报,然后发送到目的地中。UDP不会保证先后顺序保持不变,也不保证数据报会到达目的地,也不会保证只到达一次缺乏可靠性:需要应用程序实现端对端的确认、超时重传 UDP数据报都有一个长度,数据报的长度会随着...
2021-10-13 15:24:40
116
原创 Linux下的read() write()
read是将内核空间读缓冲区的内容读到用户空间;write是将用户空间的内容写到内核空间的写缓冲区剩下的操作比如将缓冲区的内容发送到对端是由协议栈完成,协议栈还完成校验和的计算和判断消息的到达read 、recv:如果读缓冲区没数据非阻塞IO read=-1 且 errno=EWOULDBLOCK 阻塞IO read阻塞直到IO有数据消息发送完毕write、send 只是将数据写到写缓冲区,假如缓冲区满了非阻塞IO write=-1 且errno=...
2021-10-13 15:13:30
172
转载 为什么 IO 多路复用要搭配非阻塞 IO?
链接:https://www.zhihu.com/question/37271342A:1、当有数据到达时,select会返回有可读事件,假设到达的数据不能一次性读完(分三次),如果使用非阻塞IO,使用while循环,我们可以通过是否抛出EWOULDBLOCK异常来判断是否读完所有数据;由于IO复用不会告诉我们来了多少数据,只告诉可读,如果使用阻塞IO,当使用while循环的时候,前三次读完所有数据,第四次将阻塞在read上;当然也可以不使用while循环,而是只读一次,第二次再用select返回可
2021-10-13 15:09:04
267
原创 僵尸进程以及如何处理
出现原因:一般来说,父进程需要追踪子进程的退出状态,因此当子进程结束运行后,内核不会立即释放该进程的进程表表项,以满足父进程后续对子进程退出信息的查询两种情况:1、在子进程退出之后,父进程读取其退出状态前,子进程处于僵尸进程2、当父进程异常终止或者结束时,子进程仍在继续运行,这时候子进程的PPID为1,即init进程,子进程处于僵尸状态造成影响:占据内核资源解决方案:wait() 以及 waitpid()//记住kill()是发送信号两者区别:wait只有阻塞性...
2021-10-13 15:03:36
1494
转载 EAGAIN和EWOULDBLOCK的处理办法
????:https://www.dyxmq.cn/program/code/c-cpp/how-to-handle-eagin-and-ewouldblock-error-in-linux-c.htmlEAGAIN和EWOULDBLOCK是linux环境下的两个错误码,在非阻塞IO中经常会碰到,对新手而言,如何处理这两个值非常头疼。如果处理不当,很容易导致程序异常。EAGAIN的官方定义:“Resource temporarily unavailable.” The call might
2021-10-13 15:00:38
1981
原创 IP转换函数
人们通常使用可读性比较好的字符串来表示IP地址,比如IPV4的点分十进制,或者IPV6的十六进制,但在编程中我们需要将其转化为二进制(即网络字节序,大端字节序)#include <stdio.h>#include <arpa/inet.h>int main(){ //将点分十进制转化为整型(1),失败时返回INADDR_NONE,即广播地址,因此广播地址不能抓换 in_addr_t s1 = inet_addr("127.0.0.2232"); p
2021-07-12 10:56:59
106
原创 CPP-ch04 复合类型
4.1 数组数组声明时必须指明:其类型、数组名以及元素数量,且元素数量不能是变量,必须是整型常数。 编译器不会检查使用的下标是否有效,编译器不会指出错误,但是运行后,可能会引发问题。 数组定义时的初始化可以用花括号括起来,之后就不能使用初四话了:int yam[3] {1,2,3}; //等号可以省略,方括号里面的3也可以省略,C++编译器将计算元素个数 如果只对数组的一部分进行初始化,则编译器将把其他元素设置为0; 针对第三点的定义初始化时省略方括号里的数字,为获取数组的大小:可以...
2021-06-23 09:25:43
118
原创 Linux C/C++ 进程管理
在UNIX/LINUX系统中,用户创建一个新进程的唯一方法就是调用系统调用fork(),调用该函数的进程被称作为父进程,而新创建的进程被称作为子进程,调用语法为下:x_val = fork()调用这个函数之后,之后的代码被子进程和父进程各执行一次,因为子进程拷贝了父进程的上下文逻辑副本,唯一的区别是x_val不一样,子的x_val是0,父的x_val是子进程的进程号,详细操作如下:为新的进程分配一个新的PCB 结构 为子进程赋一个唯一的进程标识符PID 做一个父进程的上下文逻辑副本,(代码段
2021-04-12 15:53:26
548
原创 网安基地IP配置(Ubuntu)
sudo sucd /etc/netplan/ip address 看网卡gedit 01-network-manager-all.yamlnetwork: version: 2 renderer: NetworkManager ethernets: enp2s0: dhcp4: no dhcp6: no addresses: [10.12.189.XXX/24] gateway4: 10.12.189.254
2021-03-21 10:13:09
97
原创 即计算 x 的 n 次幂函数
50. Pow(x, n)难度中等608实现pow(x,n),即计算 x 的 n 次幂函数(即,xn)。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25提示:-100.0 <x< 100.0-231<=...
2021-03-17 09:39:19
1277
1
原创 栈的压入、弹出序列
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3)
2021-03-11 14:00:56
68
原创 二叉树的层次排序
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]解题:使用队列可以解决/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;...
2021-03-11 10:13:48
719
原创 c++-ch04 复合类型
4.1 数组数组声明时必须指明:其类型、数组名以及元素数量,且元素数量不能是变量,必须是整型常数。 编译器不会检查使用的下标是否有效,编译器不会指出错误,但是运行后,可能会引发问题。 数组定义时的初始化可以用花括号括起来,之后就不能使用初四话了:int yam[3] {1,2,3}; //等号可以省略,方括号里面的3也可以省略,C++编译器将计算元素个数 如果只对数组的一部分进行初始化,则编译器将把其他元素设置为0; 针对第三点的定义初始化时省略方括号里的数字,为获取数组的大小:可以...
2021-03-08 09:22:42
239
原创 df节省内存函数
通过改变每一条数据的数据类型来节省内存结果:-- Mem. usage decreased to 5.56 Mb (50.0% reduction),time spend:0.00 min-- Mem. usage decreased to 174.98 Mb (74.9% reduction),time spend:1.30 min可以看出,优化还是挺棒的代码:import pandas as pdimport numpy as npimport time# 节约内存..
2020-12-24 15:17:25
571
原创 Python 下载文件+进度条
1、从response的headers中获取文件大小,同时注意:get请求中#stream=True参数的作用是仅让响应头被下载,连接保持打开状态 .2、以wb模式打开文件 3、使用注意调用iter_content,一块一块的遍历要下载的内容,搭配stream=True,此时才开始真正的下载import requestsfrom tqdm import tqdmimport osimport warningswarnings.filterwarnings('ignore')def .
2020-12-24 15:06:39
651
2
原创 new optimization
new optimizer for deep learning1、SGD2、SGD with momentum前一步的累积会移动到下一步当中,就算达到鞍点和局部最低点,带有动量的SGD还是会继续前行,下一步的movement等于: -u*梯度+v*动量3、Adagrad即在梯度方向乘了一个数,如果过去的梯度很大,就要降低学习率,因为梯度很大,说明在一个很崎岖的路上寻找全局最低,比如上面图的绿色方向,梯度比较大,所以需要用一个比较小的学习率4、RMSProp原理和Adagr
2020-12-06 10:39:17
223
原创 梯度下降3tips
最简单的原则:学习率会随着迭代次数的增多而减小;因为在开始的时候,我们离目的地太远,所以需要使用比较大的学习率,经过好几次的参数更新之后,离目标已经很近了比如常见的例子经过t次之后,另外不同的参数需要不同的学习率Adagrad:每一个参数的学习率都除上之前迭代次数中所计算的该参数的导数的均方根,所以每个参数的学习率都不一样(1) (2) (3)i从0开始,所以是t+1经过上(1-2-3-)式(4)上面(4)有个矛盾的地方,越大,代表其梯度越大,参数更新越快,但...
2020-11-24 14:00:22
112
原创 bias + variance
Bias:偏差Variance:方差Loss=bias+variance模型越复杂,方差越大,偏差越小模型越简单,方差越小,偏差越大怎么判断是过拟合还是欠拟合?是方差大还是偏差大?假如在训练集上拟合的不好就是欠拟合(偏差大)假如在训练集上表现不错,但是在测试集表现不咋样,那就是过拟合(方差大)假如是欠拟合,可以选择增加一些特征或者选择更复杂的模型假如是过拟合,可以选择 使用更多的数据(数据增强),regularization,剪枝等等所以需要平衡这两个误差..
2020-11-23 22:13:45
151
原创 pyenv+git
pyenv是一个简单的python版本管理,让你不断地在多种python版本上切换,遵循UNIX系统地单用途传统。命令;版本查看:pyenv versions #前面带*的是当前版本版本下载:pyenv install 3.6.8版本卸载pyenv uninstall 3.6.8切换版本pyenv global 3.6.8Git命令回顾:git initgit add --all [file]git rm --cache [file]git c..
2020-11-23 20:17:33
110
原创 电话号码的字母组合--递归
坑!Python 列表注意append和+的区别1、list与字符串相加:list+=“abc” 结果是list==['a','b','c']而如果用append的话,就是list.append("abc"),结果是["abc"]2、list与list相加:list+list的结果是直接拼接list.append()的结果是将参数作为一个整体加到list中:!!注意append() sort() reverse()都是直接作用在变量上,没有返回值>>>..
2020-11-23 12:55:25
315
原创 最接近的三数之和--双指针
纪念2020第一次完美的A!坑:1、Python的sort是直接作用在列表上,没有返回值题目:给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。提示:3 <= nums.le...
2020-11-22 23:39:17
93
原创 RNN梯度爆炸与梯度消失
矩阵层之间的梯度对应的n*n矩阵又被称为雅克比矩阵。当雅可比矩阵的最大特征值大于1时,随着离输出越来越远,每层的梯度大小呈指数增长,导致梯度爆炸;反之当最大特征值小于1时,梯度大小会指数减小,即梯度消失。梯度消失意味着无法通过增加网络层次来提升预测效果,只有靠近输出的那几层才起到真正学习的作用,因此RNN很难学习到输入序列的长距离依赖。梯度爆炸可以用梯度裁剪来缓解,当大于某个阈值的时候,对梯度进行等比缩放。而梯度消失需要通过对模型进行调整,前馈神经网络可以通过残差网络来解决,而RNN只能 通过改.
2020-11-19 02:48:07
581
原创 Bert
介绍了Transformer,下一个就是Bert,一个巨大成功的预训练模型,上图Bert全名为Bidirectional Encoder Representations from Transformers,E1...En是单个字或者词,大部分都是字为单位,Trm是一个transformer,T1...Tn是最终计算的隐藏层。因为再注意力矩阵中每个词都能学习到句子中其他词的相关程度,所以是双向。没有用到decoderBert有两个训练目标:第一个任务:MaskedLM随机15%遮盖并...
2020-11-06 21:38:00
441
原创 Transformer
Transformer是一种Seq2Seq模型,Bert就是从Transformer衍生出来的一种模型,在一些NLP任务上已经超过了人类表现。应用方式主要是:第一先训练出预训练模型,第二步是把预训练模型应用到下游任务中和LSTM区别:LSTM的训练是一种迭代方法,必须要等到上一个字过完LSTM单元才可以处理下一个单元的内容,但是Transformer是可以进行并行化的处理的,所有的字全部一起进行训练,大大加快了训练的效率;通过位置嵌入positional encoding 来理解语言的顺序学习到
2020-11-06 19:17:15
372
原创 现代计算机网络-Lab1
vi撤销:命令模式+uu复制:命令模式yy粘贴:命令模式+p删除整行:命令模式+cc看三个主机网卡是否正确:eth0,eth1,eth2,假如不是rm /etc/udev/rules.d/70-persistent-net.rules再重启reboot假如网卡没有启动:ip link set eth1 up给网卡配置ipPC1:ip address add 192.168.1.1/24 dev eth1ip address add 192.16..
2020-11-06 13:07:32
333
1
原创 随机森林 Word2Vec 文本分类
数据集是来自kaggle semantic classification任务的1、加载文件import pandas as pdtrain = pd.read_csv(r"labeledTrainData\labeledTrainData.tsv", header=0, delimiter="\t", quoting=3)unlabeled=pd.read_csv(r"unlabeledTrainData\unlabeledTrainData.tsv", header=0, delimiter
2020-10-29 12:20:26
2200
原创 Word2vec tutorial
API doc:https://radimrehurek.com/gensim/models/word2vec.html其他API:Doc2vec:https://radimrehurek.com/gensim/models/doc2vec.html#gensim.models.doc2vec.Doc2VecFastText:https://radimrehurek.com/gensim/models/fasttext.html#gensim.models.fasttext.FastText
2020-10-29 10:46:49
148
原创 Pytorch 学习2
1、torch.range(num1,num2)莫名其妙,pytorch这个range函数和python内嵌的不一样,是[ start , end ]第一,必须有两个参数第二,包括第二个参数2、tensor.unsqueeze(dim )在第dim维外增加一个维度,比如原来是(2,3),假如dim是0,输出是[1,2,3],假如dim是1,输出是[2,1,3],假如是2,输出是[2,3,1]3、tensor.squeeze(dim)可以减掉维度,但是只有维度为1时才.
2020-10-24 00:03:04
113
原创 Stemming词干提取 和 Lemmatization 词形还原
词干提取:基于规则、相对原始的操作,使用一些基本规则,可以有效地将任何token进行削减,得到其主干;比如eat具有不同地变体,e.g.eating eaten eats。在大部分时候,在这些变体之间做区分没有意义。因此需要stemming将单词归结到单词的根。对于一些复杂的NLP任务,有必要使用词形还原lemmatization代替stemming,词形还原更健壮,结合语法变体,得到单词的根词形还原:使用一种更有条理的方式,根据给每个单词的词性,应用不同的标准化规则,得到词根单元(词元).
2020-10-22 13:19:11
733
原创 Pytorch 学习1
1、torch.manual_seed(int):在神经网络中,参数默认是进行随机初始化的。如果不设置的话每次训练时的初始化都是随机的,导致结果不确定。如果设置初始化,则每次初始化都是固定的。def manual_seed(seed): r"""Sets the seed for generating random numbers. Returns a `torch.Generator` object. Args: seed (int): The ...
2020-10-16 11:31:41
257
原创 UNILM 统一预训练模型 v1.0
这篇paper是研究生读的第一篇,过了蛮久了,因为准备重新写博客,所以拿出来回顾一下之前还给这篇做了PPT,paper名字是Unified Language Model Pre-training for Natural Language Understanding and Generation ,可以翻译成用作NLU和NLG的统一预训练模型,这篇论文是2019年发表的在NLP领域有些成就的一篇文章。0、Abstract本文介绍了一种可同时被NLU和NLG任务微调的预训练模型,使用了三种不用的语言
2020-10-15 15:29:44
939
1
原创 Pytorch tutorial pytorch 入门
今天看了pytorch官方的tutorial,好美的教程哦,按规定是60min分钟的闪电战,结果运行完代码,花了一整天,是我不配,网站官方地址是:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html这篇tutorial主要分为四个部分:1、什么是Tensor,和Tensorflow介绍差不多2、自动求梯度(微分)3、神经网络架构4、以一个图像分类作为example实战1、WHAT IS PYT.
2020-10-15 12:43:06
2005
1
转载 IID独立同分布假设
1.独立同分布independent and identically distributed (i.i.d.)在概率统计理论中,如果变量序列或者其他随机变量有相同的概率分布,并且互相独立,那么这些随机变量是独立同分布。在西瓜书中解释是:输入空间中的所有样本服从一个隐含未知的分布,训练数据所有样本都是独立地从这个分布上采样而得。2.简单解释独立、同分布、独立同分布(...
2020-04-01 21:11:30
3393
原创 元数据
元数据(Metadata):描述其它数据的数据(data about other data)1、主要是描述数据属性(property)的信息;2、描述数据的数据;3、关于数据的结构化数据;4、描述数据的内容、覆盖范围、质量、管理方式、数据的所有者、数据的提供方式等信息,是数据和数据用户之间的桥梁。任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来...
2020-02-25 20:43:43
359
原创 电梯模拟 数据结构课设
一、课程设计题目与要求1、题目内容模拟某校九层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。电梯一共有七个状态,即正在开门(Opening)、已开门(Opened)、正在关门(Closing)、已关门(Closed)、等待(Waiting)、移动(Moving)、减速(Decelerate)。...
2020-02-21 19:11:15
6041
7
电梯模拟_数据结构报告
2021-06-04
电梯模拟代码 数据结构课设
2021-06-04
推荐系统实战.pdf
2018-05-20
数据挖掘导论 Pang-Ning
2017-12-28
协程和线程的区别 之 是否需要锁
2022-04-01
关于golang的map如何进行扩容
2021-11-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人