计算机基础
本专栏针对计算机基础,包括计算机网络,操作系统,计算机组成原理,语言学习,函数用法解释等。
本杰明玩编程
做过后端开发,Android Framework,App开发,Ai infra模型推理。
熟悉编程语言C++,Java/Kotlin,python。
现在主要做语音相关的研发工作,主要包括kws,asr,nlu,dm,tts和Ai infra大模型推理。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
pcie总线协议入门基础知识
1. PCIe基础知识PCI-Express是一种高速串行计算机扩展总线标准,它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。与大多数总线一样,PCIe总线也包括电气属性和协议组成两部分。完整地了解PCIe是相对复杂的,所以从应用角度来讲,我先从基本的协议入手,对PCIe有个初步的认识。拓展学习可以参考官方协议规范文档《PCI Express Base Specification》。PCIe 规范对于设备的设计采用分层的结构,有事务层、数据链路原创 2020-07-22 17:09:22 · 6713 阅读 · 0 评论 -
简单概述PCIe总线协议
初步认识pcie协议PCI总线在PC界已然一统江湖多年,应用已然广泛,PCI的总线已蔚然成风。科技日益发展,需求不断膨胀,经过计算机技术10年的发展,包括摩尔定律的不断验证,PCI总线已渐渐感觉力不从心,成为PC系统发展的瓶颈了,在显卡和图形处理方面尤为明显。更高速度的技术的出现势在必行。这种时候的到来是必然的,早在PCI取代ISA的时候就应该想得到的。对科技生产力的阻碍已经掩盖了您的辉煌。新一代的高速总线技术相继出现了。大多数是基于高速串行构架产生的传输标准。包括HyperTransport, Inf转载 2020-07-23 11:46:04 · 3087 阅读 · 0 评论 -
系统调用recvfrom和recv区别
应用程序调用库函数recv和recvfrom接收数据ssize recvfrom(int) //套接字 //接受数据缓冲区 //接受数据长度 //标志 ssize recvfrom(int sockfd, void *buf, size_t len, int flag, //数据发送者地址,函数调用后垓地址结构被回收 //地址长度指针struct sockaddr *addr, socklen_t *addrlen)返回值:以字节计数的消息长度,若无可用消息或对原创 2021-07-13 21:05:41 · 1540 阅读 · 0 评论 -
搜索www.baidu.com会用到计算机网络的什么层?每层是干什么的
浏览器中输入URL1.浏览器会将输入的URL通过DNS协议解析为IP地址,首先主机会查询DNS的缓存,如果没有就给本地的DNS发送查询请求。2.DNS查询方式由此两种:递归查询和迭代查询。如果是迭代查询,本地的DNS服务器向根域名服务器发送查询请求,根域名服务器告知该域名的一级域名服务器,然后本地服务器给一级域名服务器发送查询请求,然后依次类推直到查询到该域名下的IP地址,3.DNS服务的基于UDP的,因此会用到UDP协议。4.得到IP地址后,浏览器要与服务器建立一个http连接。因此要用到http原创 2020-08-15 10:10:11 · 614 阅读 · 0 评论 -
HTTP,HTTPS,TCP,UDP,Socket那些事
TCP HTTP UDP三者的关系如下:TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有HTTP,FTP、TELNET、SMTP、DNS等协议。HTTP全称是HyperText Transfer Protocal,即:超文本传输协议,HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到转载 2020-08-10 15:16:36 · 211 阅读 · 0 评论 -
面试中常见的HTTP和HTTPS
HTTP和HTTPS协议区别:1.HTTP协议是以明文的形式进行传输的,而HTTPS协议传输的数据是进行TLS加密后的,HTTPS具有更高的安全性。2.HTTPS在进行三次握手后,还要进行SSL的handshake,协商加密使用对称的加密密钥。3.HTTPS需要服务端申请证书,浏览器端安装对应的根证书。4.HTTP的协议端口是80,HTTPS的端口是443。HTTPS的作用:1.内容加密,建立一个安全信息通道,来保证数据安全。2.身份认证,确认网站的真实性。3.数据完整性,防止内容被第三方冒原创 2020-08-15 09:30:47 · 361 阅读 · 0 评论 -
substring()函数用法
**substring(int start,int end)**用法substring(int strat,int end)中第一个参数是开始位置,第二个参数是结束位置,String s=“abcdefg”;cout(s.substring(1,4));结果:bcde如果只给一个参数,是从参数位置开始,一直到结束String s=“abcdefg”;cout(s.substring(4));结果:efg注意:下标从零开始,包括前面的,不包括后面的,也可以看成是下标从一开始,不包括开始,包括原创 2020-07-13 00:42:44 · 3779 阅读 · 0 评论 -
C/C++中字符串和数字互转(总结 一)
C/C++中字符串和数字互转(总结 一)目录1.调用C的库函数数值转化为字符串示例代码:2.调用C的库函数字符串转化为数值示例代码:3.不调用库函数实现字符串与数值的转换3.1 字符串转换为整型int、浮点数double3.2 整型int转换为字符串1.调用C的库函数数值转化为字符串包含头文件#include<stdlib.h> /1.1 itoa() 、_itoa_s() 将整数转化为字符串(非标准函数) char * itoa ( int v转载 2020-07-14 15:22:03 · 1583 阅读 · 0 评论 -
unsigned int用法
注意使用unsigned int(无符号常数)正如我们所知道的,编程语句都有很多的基本数据类型,如char,inf,float等等,而在C和C++中还有一个特殊的类型就是无符号数,它由unsigned修饰,如unsigned int等。大家有没想过,就是因为这些不同的类型,而使大家编写的看似非常正确的程序出现了预想不到的错误呢?一、迷惑人的有符号下无符号数的比较操作废话不多说,马上来看一下例子,让你先来体验一下这个奇妙的旅程,源代码文件名为unsigned.c,源代码如下:#include <转载 2020-07-08 23:13:39 · 73954 阅读 · 3 评论 -
数字与字符串的转换(C++)
*数字与字符串的转换(C++)首先推荐用用C++的stringstream。主要原因是操作简单。数字转字符串,int float类型 同理#include #include int main(){double a = 123.32;string res;stringstream ss;ss << a;ss >> res;//或者 res = ss.str();return 0;}1234567891011字符串转数字,int flo转载 2020-07-14 15:20:15 · 319 阅读 · 0 评论 -
string大小写转换
#include #include #include #include using namespace std;int main(){string s = “Hello World”;cout << s << endl;transform(s.begin(),s.end(),s.begin(),::toupper);//小写转大写cout << s << endl;transform(s.begin(),s.end(),s.begin()转载 2020-08-31 12:52:12 · 3762 阅读 · 0 评论 -
一篇文章让你理解虚函数
前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家一个清晰的剖析。当然转载 2020-08-10 15:34:15 · 343 阅读 · 0 评论 -
printf()在有重入和性能上有大问题
printf()重入上的用法这个概念在嵌入式操作系统中比较重要,由于存在任务的调度,它实时系统,可剥夺型内核中是危险的,如同一个安静的水雷。可能会被触发,也可能安然无恙。由于它运行结果的不可预期性,会使系统带来隐患。printf()经常有重入解释不可重入函数不可以在它还没有返回就再次被调用。例如printf,malloc,free等都是不可重入函数。因为中断可能在任何时候发生,例如在printf执行过程中,因此不能在中断处理函数里调用printf,否则printf将会被重入。函数不可重入大多数是因为转载 2020-07-08 23:23:10 · 679 阅读 · 0 评论 -
谈谈substr()函数
**substr( i, len )加粗样式substr(i,len)是截取字符串中从索引 i 开始的长度为len的一段字符串。例如:s=“abcdefg”;str = s.substr(1,5); //输出为bcdef, 从下标为1开始截取长度为5位;str = s.substr(4);//输出为defg,输出从索引为4开始直到末尾的一段字符串;...原创 2020-07-13 00:34:07 · 568 阅读 · 0 评论 -
Python rfind()方法
Python 字符串描述Python rfind() 返回字符串最后一次出现的位置(从右向左查询),如果没有匹配项则返回-1。语法rfind()方法语法:str.rfind(str, beg=0 end=len(string))参数str – 查找的字符串beg – 开始查找的位置,默认为 0end – 结束查找位置,默认为字符串的长度。返回值返回字符串最后一次出现的位置,如果没有匹配项则返回-1。实例以下实例展示了rfind()函数的使用方法:#!/usr/bin/python转载 2020-08-12 23:38:11 · 721 阅读 · 1 评论 -
C++ push方法与push_back方法的使用与区别
【摘要】push与push_back是STL中常见的方法,都是向数据结构中添加元素。初识STL,对于添加元素的方法以产生混淆,这里暂对两种方法作出比较分析。此外,本文还将简述push对应的stack与queue系列,常见方法的介绍,以及与push_back相对应的vector系列常见方法介绍。详见下文。list 也是使用 push_back .【正文】push_back 方法介绍vector::void push_back (const value_type& val);vector::转载 2020-08-15 11:07:34 · 6228 阅读 · 1 评论 -
C语言-find()函数
find函数用于查找数组中的某一个指定元素的位置。比如:有一个数组[0, 0, 5, 4, 4];问:元素5的在什么位置,find函数 返回值 为 2;find (数组名 + 起始查找元素的位置, 数组名 + 结束查找的元素位置, 想要查找的元素)直接上代码:#include <iostream>#include <vector>#include <algorithm>//注意要包含该头文件using namespace std;int main(){转载 2020-08-12 23:35:43 · 7594 阅读 · 2 评论 -
初步理解多线程与多进程
最近开始学习与FPGA板子建立pcie通信协议,因此需要使用PCIE协议。项目要求完成一个pcie板卡,最终可以通过电脑进行通信,完成电脑发送的指令。这当中需要完成硬件部分,使用FPGA板实现,同时需要编写Windows下的驱动编写。因为各种的PCIE设备的设计与使用都是依据PCIE协议的。第一,我们需要对PCIE协议有一个大致的了解,了解的深度即不要太大(因为相关协议的文档长达数千也,而且有些你可能就不会用),也不能太浅,不然当你阅读Xilinx的PCIE的集成核时会一头雾水,因为你会不了解其中的一些转载 2020-07-23 11:37:43 · 277 阅读 · 0 评论 -
父进程fork子进程
#include <stdio.h>#include <sys/types.h>#include <unistd.h> int main(){ printf("本程序的进程编号是:%d\n",getpid()); int ppid=fork(); sleep(1); // sleep等待进程的生成。 printf("pid=%d\n",ppid); if (ppid!=0) printf("父进原创 2021-03-20 21:39:54 · 279 阅读 · 1 评论
分享