首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
陈泽胜746724926
获赞
29
粉丝
2
关注
2
看过 TA
4
男
南昌大学
2020
C++
IP属地:未知
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑陈泽胜746724926吗?
发布(47)
刷题
陈泽胜746724926
2020-05-10 09:58
C++
基于RSA和AES加密算法实现的socket加密传输模型
本文中的模型思路来自于这篇博客:https://www.cnblogs.com/sheng1255blog/p/5121536.html 基本思路:采用安全的RSA加密算法来对生成AES密钥对的种子进行加密传输。通信双方得到种子Seed之后分别生成AES加密密钥和AES解密密钥,此后就可以用AES对socket传输的数据进行加密传输了。 这样做的理由:RSA加密算法安全性高,但是加密效率低,加密速度慢,一般只用来加密短小的数据,不会直接加密大量的数据。AES加密速度快,加密效率高,但是由于是对称密钥密码体制,安全性没有RSA好,详情可见我之前的博客。所以采用RSA+AES的方法,利用了两者的优...
0
点赞
评论
收藏
转发
陈泽胜746724926
2020-04-23 20:40
C++
简易的CGI服务器
CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。 CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。 《Linux高性能服务器编程》(游双)一书中使用了dup系统调用实现了一个简易的CGI服务器。 #include <iostream> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/sock...
0
点赞
评论
收藏
转发
陈泽胜746724926
2020-04-17 20:21
C++
记录一个gcc编译时候的常见错误
很久没有写一些小项目了,多文件编译的时候又忘记了,导致浪费了不少时间找bug,这里记录一下 这里编译报错一些函数没有定义,原因是编译器在链接这些函数实现文件的时候没有找到这些函数的实现。下面有一篇博客写的很好,贴一下链接:https://segmentfault.com/a/1190000006049907?utm_source=tuicool&utm_medium=referral 原因是编译的时候没有把对应的.cpp文件加进去,一定记住多文件编译的时候要把所有.cpp文件加入就可以了。像这样:
0
点赞
评论
收藏
转发
陈泽胜746724926
2020-03-17 19:55
C++
select poll select的特点及区别
他们都是I/O多路复用机制I/O多路复用通过一种机制,可以监视多个描述符(网络编程里监视socket函数返回的fd),一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。 IO多路复用适用如下场合: 当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 一个T...
0
点赞
评论
收藏
转发
陈泽胜746724926
2019-12-16 21:27
C++
嵌入式SQL
我们知道,标准SQL是非过程化的查询语言,具有操作统一,面向集合,功能丰富,使用简单等多项优点。但和程序设计语言相比,高度非过程化的优点也造就了它的一个缺点:缺少流程控制能力,难以实现应用业务中的逻辑控制。 ------摘自《数据库系统概论》(王珊,萨师煊 编著) 将SQL语句嵌入到高级语言中混合编程,SQL语句负责操纵数据库,高级语言语句负责控制逻辑流程。 1.两种语言之间的通信。a.SQL通信区:向宿主语言(这里是C语言)传递SQL语句的执行状态信息。SQLCODE变量 执行成功为SUCCESS,否则为错误代码b....
0
点赞
评论
收藏
转发
陈泽胜746724926
2019-12-16 17:39
已编辑
C++
Linux下使用MySQL
想要在Linux下使用MySQL,首先当然是需要安装一下啦!关于安装和配置我在网上找了个博客,这里附上链接:https://blog.csdn.net/weixx3/article/details/80782479 安装好之后呢,我们来了解下基本使用。1.几个需要了解的重要目录:首先在Linux下安装完MySQL之后并不像Windows中一样(基本的东西都在一个目录里面),它是分散在好几个目录下面的。a.数据库目录/var/lib/mysql/ b.配置文件/usr/share/mysql(mysql.server命令及配置文件) c.相关命令/usr/bin(mysqladmin m...
0
点赞
评论
收藏
转发
陈泽胜746724926
2019-12-16 15:07
C++
记录一个gcc编译时的小知识点
今天在使用gcc编译程序的时候,源码中使用到了pow函数,也包含了头文件math.h,但是仍然报下面这个错:然后再网上找了下答案,说在编译的时候要加上-lm选项,也就是把数学函数的那个库加进去,这样才能编译成功。类似的有使用线程相关函数的时候也要加上-lpthread选项,使用到了C++11的特性的时候要加上-std=c++11或-std=gnu++11选项,表示使用C++11的特性去编译。
0
点赞
评论
收藏
转发
陈泽胜746724926
2019-12-14 11:41
C++
TCP粘包问题
TCP粘包问题又叫做数据的无边界性,在上一节中我们介绍了在创建套接字的时候,是会同时创建socket输入、输出缓冲区的。也就是说,write函数只要将要写的数据全部写入了输出缓冲区,函数就会返回,至于将数据发出去就是TCP协议的事了,而如果客户端在读取的时候,也是从输入缓冲区中读,并且是尽可能多的读取,那么如果服务器分几次发给客户端的数据,客户端可能就一次性全给读过来了,比如服务器分三次分别发了1,2,3三个数据,但是客户端一次性从缓冲区读,就读到了123。这显然是不正确的。 一些通用的做法:1.发送固定长度的数据,不够的用0填充,这样和客户端约定好,每次我的包长度就是固定那么长,那么客户端解...
0
点赞
评论
收藏
转发
陈泽胜746724926
2019-12-13 11:58
C++
socket缓冲区
每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。如下图所示: 在上一节的例子中,我们通过write函数给客户端的套接字写了一些数据,但是呢,写的这些数据并不是立即发送到客户端的,而是先写入一个输出缓冲区,如上图所示,然后函数就返回了。那么又是由谁来把这些数据发送到远程主机的呢?当然是我们的TCP协议啦。所以我们之前那个测试程序有时候客户端会读不到服务端发过来的消息,正是由于服务端写的数据还在输出缓冲区当中,并没有被发送到客户端的输入缓冲区,所以客户端这个时候去读数据是读不到滴,会被阻塞。 缓冲区特性:a.I/O缓冲区在每个TCP套接字中单独存在;b.I/O缓冲区在创...
0
点赞
评论
收藏
转发
陈泽胜746724926
2019-12-13 10:30
已编辑
C++
通过一个最简单的例子来看服务端编程的流程
在了解服务端编程的流程之前,我们需要先了解几个函数:1.创建套接字的函数(关于套接字的介绍在上一节中有了简单的描述,其实就是一个文件描述符,也就是一个整数) 首先我们可以在Linux终端输入:man 7 socket来查看系统对这个函数的描述文档。从以上描述我们可以看到,你要使用这个函数,首先要包含sys/socket.h头文件。然后可以看到,这个函数有三个参数:a.第一个socket_family表示地址族,这个我们一般用的就是AF_INET,表示ipv4地址族。b.第二个参数socket_type,从名字我们就可以看出来,是套接字的类型,上节也提到了套接字主要有两种类型,一种是流格式的套接...
0
点赞
评论
收藏
转发
陈泽胜746724926
2019-12-12 15:40
C++
网络编程入门(Socket)
1.UNIX/Linux 中的 socket 是什么?在Linux中有一个哲学叫做:一切皆为文件所以在 UNIX/Linux 系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。 同样对于一个网络连接,Linux也把它作为一个文件来处理。 文件描述符:为了区分打开的文件和没有打开的文件,Linux会给每个打开的文件分配一个文件描述符,这个文件描述符就是一个整数。通常0表示标准输入,对应的就是键盘,1表示标准输出,对应的就是显示器。还有一个2对应标准错误。 可以通过socket()函数来创建一个网络连接,或者说打开一个网络...
0
点赞
评论
收藏
转发
陈泽胜746724926
2019-12-11 17:37
C++
Makefile的规则
1.make如何确定目标文件过期?对比目标文件和目标文件的依赖,如果目标文件的修改时间戳要比依赖文件的时间戳老,则过期,需要重新生成,否则不需要执行命令重新生成。 2.在编译.c或者.cpp/.cc文件的时候,我们不需要把头文件加入命令中,因为一般.c文件里面就包含了头文件。而在编写目标的依赖的时候,我们还是要把头文件加入到依赖里面的。 可以看看下面这个例子(这个例子摘自《GNU make中文版》 徐海兵译著): foo.o : foo.c defs.h # module for twiddling the frobs cc -c -g foo.c可以看到头文件被加入目标的依赖中去了。其中#是...
0
点赞
评论
收藏
转发
陈泽胜746724926
2019-12-11 11:17
C++
Makefile中包含其他Makefile文件
语法形式:include FILENAMES... include告诉make暂停读取当前的Makefile规则,前去读取其他Makefile文件(一个或者多个)中的规则,执行完成后再回来读取当前Makefile文件中的规则 注:include所在行不能以[tab]开头,否则,make将会认为这是一条命令,交由系统shell去判决执行这条命令。 通常指示符“include”用在以下场合: 有多个不同的程序,由不同目录下的几个独立的Makefile来描述其重建规则。它们需要使用一组通用的变量定义或者模式规则。通用的做法是将这些共同使用的变量或者模式规则定义在一个文件中(没有具体的文件命名限制)...
0
点赞
评论
收藏
转发
陈泽胜746724926
2019-12-11 10:16
C++
Makefile中clean伪目标的一些注意点
首先来看一个例子: .PHONY : clean clean : -rm edit $(objects)这个例子和之前几节的例子不同的地方在于:1.开头多了一个.PHONY:clean,这条语句的含义是显示的把clean声明为一个伪目标,防止目录中存在一个名为clean的文件时对这条规则下的命令的执行造成干扰。2.rm命令前多了一个“-”, 即“-rm”,意思是忽略rm命令的执行错误,即使有些文件删除出错,能删的还是要删。 注:伪目标不能作为终极目标(第一个目标),因为Makefile的本质是要编译,链接生成可执行文件,而不是仅仅执行删除命令。
0
点赞
评论
收藏
转发
陈泽胜746724926
2019-12-11 10:07
已编辑
C++
在Makefile中指定变量
还是上节中的那个例子,edit目标的依赖比较多,有时候会出现这样一种情况,就是我们edit目标中可能需要再加一些目标文件,加完之后可能我们就忘记在命令行中添加刚加入的目标文件了,或者忘记在最后的clean伪目标(或者其他目标中)中加入新目标文件了。为了防止出现这样的情况,和减少修改Makefile文件多处的麻烦。我们可以引入变量: objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o edit : $(objects) cc -o edit $(objects) …… …… clean : ...
0
点赞
评论
收藏
转发
1
2
3
4
工具箱
TA的圈子
暂未加入圈子
TA的圈子
TA的笔记
暂无笔记
TA的笔记
登录
0
天
已登录
0
天
连续登录
0
人
今日访客
牛客网
牛客企业服务