自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构之稀疏矩阵的三元组顺序表储存以及转置

今天学习了矩阵的压缩存储,主要是特殊矩阵和稀疏矩阵的压缩储存,特殊矩阵包括对称、对角、上下三角矩阵,实现起来比较方便,这里我主要实现了一遍稀疏矩阵的三元组顺序表存储实现以及两种矩阵转置方法。稀疏矩阵稀疏矩阵一直没有一个明确的定义,大概的解释就是矩阵中的非零元分布不是规律的,矩阵中非零元的个数占整个矩阵元个数的比例,该比例成为稀疏因子,只要稀疏因子小于等于0.05,则该矩阵就可叫做稀疏矩阵三元...

2020-05-02 21:45:37 7258 3

原创 golang 文件上传处理

golang文件上传处理

2022-12-16 18:54:39 2690

原创 Ubuntu 20.10 桥模式和NAT模式的网络配置

由于虚拟机网络配置老是出现问题,所以这里好好地对虚拟机Ubuntu系统网络配置进行了一个步骤记录。需要说明的是,我在配置过程中参考了其他的文章,所以可能有些文段和一些作者的文章重合,如果涉及到侵权,请联系我进行删除。我的虚拟机的Ubuntu系统版本如下:在虚拟机上,总共有三种网络模式:桥模式、NAT(网络地址转换模式)、主机模式。其中主机模式只能用于和主机间的通信,所以本文中不对其进行记录,主要记录了自己在以上版本上配置桥模式和NAT模式的步骤。在安装了虚拟机后,我的window下网络设置中会出现两个

2021-05-25 20:26:27 767

原创 char 类型 127 + 1 = -128问题

最近准备面试,发现应届生考的比较多的就是基础,我面向c/c++,则做到的笔试题也有很多相关的题,其中就有charl类型变量a = 127 ,a+1 = ?的问题,这里记录一下自己的理解我们知道char类型存储的值的范围是-128~127,127为正数的最大,再进行加一就会产生溢出操作:计算机内部计算都是使用的二进制的补码进行计算:127的二进制补码: 01111111127+1后的二进制补码:10000000可以看出127 + 1 后的二进制码正好是规定的-128的二进制补码,所以打印结果就是-1

2021-01-22 12:02:12 3577 3

原创 使用命令行生成第一个控制台的QT程序

今天开始学习QT,学会了使用命令行创建一个简单的执行程序,特意记录,具体步骤如下:1.0 自己书写一个简单的.cpp#include <QApplication>#include <QLabel>int main(int argc, char ** argv){ // init graphics environment QApplication app(argc,argv); QLabel * label = new QLabel; label->setT

2020-11-28 00:07:29 243

原创 使用splice函数实现0拷贝的回显服务器

在平时的收发数据总是会调用系统调用recv和send等函数,这些函数都会进入内核进行数据的拷贝,所以说还是比较耗费资源的,所以就有了实现0拷贝的函数,这里就使用其中的splice函数实现一个回显服务器,用于将客户端发送的消息原样发送给客户端,并且不使用recv、send函数首先介绍一下splice:splice函数用于在两个文件描述符之间移动数据,也是零拷贝操作,定义如下:#include <fcntl.h>ssize_t splice(int fd_in, loff_t * off_i

2020-11-27 13:46:04 339 1

原创 简单使用cJSON进行json格式的转换

今天看了json格式,也了解了使用C语言进行json格式的转换,下面写了一个简单的测试记录一下Ubuntu 下使用cJSON进行格式转换,首先需要下载安装cJson进行编译安装:github 地址: https://github.com/DaveGamble/cJSON下载git clone https://github.com/DaveGamble/cJSON.git参考 Readme 进行编译下载后的文件里面有两个主要的文件,cJSON.c和cJSON.h,使用的时候把这两个文件包含在源文件

2020-11-26 23:33:45 888

原创 使用c++实现简单的reactor模式

reactor是一种高效的服务端模式,实质是使用io多路复用,比如select、epoll、poll等,关于epoll和reactor的详细介绍往上也有很多的博文,这里贴出reactor的一篇博客:reactor模型reactor模型的几种角色:handle 即文件描述符Synchronous Event Demultiplexer 即IO多路复用Event Handler 即处理事件的回调函数Concrete Event Handler 即具体的实现逻辑处理的函数Ini

2020-11-22 00:48:52 3237 1

原创 堆排序(c++)

堆排序是选择排序的一种堆排序只需要一个记录大小的辅助空间,每个待排序的记录只需要一个空间大小即可堆的定义如下: n个元素的序列{k1,k2,…,kn}当且仅当满足以下关系时,称之为堆:用一维数组来存储元素,可以将对应的一维数组看成是一个完全二叉树,则堆的含义证明:完全二叉树中的所有非终端结点的值均不小于(或不大于)其左右孩子结点的值也就是,若序列{k1,k2,…,kn}是堆,则堆顶元素必为序列中的n个元素的最大(最小)值,如下:{96,83,27,38,11,9}图上对应的红标代表用于存储的

2020-11-14 23:20:54 351

原创 使用c++11 thread库实现简单的TCP多线程服务器

其实就是简单的TCP连接,使用了thread库实现多线程,包括使用了类成员函数作为线程函数,传递参数,使用detach将子线程作为后台线程运行,主线程持续接收新的连接服务端代码:#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <assert.h>#include <unistd.h>#include <errno.h>

2020-11-06 17:06:46 1323

原创 使用快慢指针判断链表是否有环

有时候在面试中可能会遇到叫我们判断链表中是否有环的问题,这个问题的解决方法也很多,这里我记录一下比较简单的使用快慢指针的方法:使用快慢指针是指: 设置两个指针,一快一慢,快指的是每次移动两步,慢指针每次只移动一步,如果在这个过程中没有环,则快慢指针永远不会相等,快指针会移动到末尾null;相反,如果有环,则快指针一定是先进入环中,这时候慢指针也会进入环,由于快指针移动步长大于慢指针,所以两者一定会在某个时间点相遇,slow == fast。具体算法如下://采用快慢指针的方法判断链表是否有环//定义

2020-11-06 10:08:08 638

原创 双向链表

一般我们使用的是单链表,亦即只有一个指针域next指向下一个结点,但是有时候我们需要找一个结点的上一个结点,这时候就需要遍历整个链表,时间复杂度较大,所以就有了双向链表:双向链表只是比单链表多了一个前向指针域prior,指向上一个结点:typedef struct doublelist { struct doublelist * prior; int data; struct doublelist * next;}dobleline, *dPtr;对双链表的插入也比较简单,进行头插法,关键是

2020-11-06 09:38:42 124

转载 c++实现的LRU算法

最近面试遇到不少自己不会的面试题,为了防止以后再遇到,所以记录下来这次遇到的是LRU算法的实现,LRU是用于内存管理的一种页面置出算法,意为最近最少使用,用于将内存中经常不适用的页面置出内存,放入到外存或者对换区,使得其他可使用的页面进入内存主要的操作是get/put,这篇实现完全照抄于博客:博客所有的代码都没怎么改变,主要是我将自己的理解写在上面并做了一些测试,感兴趣的可以去大佬的博客,我这里主要是做一下记录,不是原创,如果有涉及到侵权请作者联系删除,下面贴代码:class LRUCache {

2020-10-22 09:40:51 361

原创 epoll c和c++的简单例子(纯代码)

这一次贴出epoll的一个简单例子,关于epoll的一些介绍网上很多,我也写了一个简单的介绍:epoll简单介绍下面分别贴出c和c++的同一份实现代码:用于测试多个客户端和一个服务端的连接客服端代码://tcp server 并发服务器 客户端#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <stdlib.h>#include <string.

2020-08-28 23:44:30 3134 2

原创 Epoll的理解

一、epoll介绍epoll是绝大多数网络框架的必备使用之一。epoll是一种IO多路复用技术,在LINUX的网络编程里面,经常用来做事件触发,有特定的事件到来能够检测到,不必阻塞监听。想必不少人知道除了epoll外,经常提及的还有select/poll,相比两者,epoll速度响应更快,因为epoll只是去对活跃的IO进行操作,epoll的数据结构里面有相应的链表,用来存储就绪的IO,每次去内核copy的只是链表上就绪的IO,而不是全部的IO.而且select采用轮询的方式,对socket对的集合的描

2020-08-28 12:14:24 1755

原创 ubuntu上安装netmap

在学习过程中,因为需要在ubuntu上安装netmap,所以在网上找了很多方法,但是在安装过程中也遇到了麻烦,最后总算是成功,这里做一下网上的总结和记录,方便后面配置的时候回顾,如果内容涉及到侵权,请联系我删除,我这里只是总结一下,谢谢。使用的相关的文章:https://blog.csdn.net/jenie/article/details/106923799安装步骤1.修改网卡名称在我的Ubuntu版本上,默认的网卡名称是ens32.这里需要修改为eth类型.sudo vim /etc/def

2020-08-27 18:16:30 919 2

原创 linux下关于mysql基础的操作过程----插入、读取操作

MySQL是一个分布式的数据库。关于mysql的操作,C语言下有对应的API进行相应的插入、删除、建表、查询等操作。下面我就一些简单的操作做一些实际的案例进行一些记录,方便后面的复习。这里使用的是workbench已经建立了一张表,在linux使用c的API进行操作:#include <stdlib.h>#include <stdio.h>#include <string.h>#include <mysql.h>#define CSL_DB_

2020-07-15 17:58:44 150

原创 c++模式设计--工厂模式

在设计模式中,工厂模式(Factory Method)是属于“对象创建”模式。该模式的主要作用是通过“对象创建”来避免对象new的过程中的紧耦合,使其不依赖具体的类,以来抽象以维持稳定,也就是使接口抽象化。在c++的柔软件系统里,会进程面临这不同类型的对象的创建,也就是“变化” ,通过创建一系列的工程来使得对象的创建延迟到子类,解决耦合关系。c++中起到延迟作用的是虚函数,所以可以通过创建工厂虚函数方法来进行对象的延迟建立。下面是我看过网上的视频后,跟着他的伪代码写出来的测试代码,具体的视频在b站就

2020-05-28 17:39:52 151

原创 git从本地库推送至远程库出现权限否定和显示更新被拒绝问题解决方法

今天想把一些代码文件推送到远程的github仓库出现了下面的问题:1.permission Denied…在网上查询了一下,发现这是没有公钥惹的祸,可是我记得配置的时候是设置了公钥添加到了远端仓库的,这里不知道为啥又要设置。按照网上大神的方法,打开git bash 执行公钥和私钥生成命令: ssh-keygen -t rsa然后按三下回车,大神解释的是这里是设置密码,如果设置了,每次使用Git都要用密码,所以这里默认为空,完成之后会有一个id_rsa.pub在.ssh文件中,我直接使用的cat查看内容:

2020-05-12 09:47:31 1407

原创 c++实现简单的计时器

实现c++的计时器,开始是根据自己的思路写,代码中的注释有2 的是参考别人后面修改的,看了网上好多类似的代码,因为我也有从网上借鉴部分代码,避免侵权,请涉及到相似代码的博主私信我,哈哈

2020-02-21 14:17:30 568 1

原创 Linux day02 --查询指令 man、info,关机指令

linux centos的指令帮助的相关操作

2020-02-20 10:17:09 192

原创 Linux day01 --指令的基本操作

指令的下达基本格式:command [-option] parameter1 parameter2…command: 指令 cd;[-optin]: 选项 eg; -h,–helpparameter1,2: 参数注意:各个格式之间需要使用就空格隔开,不论多少个空格,shell都当做1个处理指令太长,可以使用\来跳脱Enter符号Linux中的大小写是不一样的eg: ls -...

2020-02-20 10:13:11 159

原创 Linux学习day1--centos7下中文输入法的解决

解决centos7下中文输入法的问题在虚拟机安装了Cenntos7后不能有中文输入法选项但是快捷键切换不能输出中文,如下图:解决办法:安装中文输入包:命令如下然后,重启系统reboot; 在系统设置的区域和语言里面添加刚刚安装的中文输入法:现在就可以使用快捷键切换中英文了。...

2020-02-17 11:50:12 245

原创 防止头文件包含的两种情况

为什么要防止头文件包含?我们在写代码时,经常在头文件进行防止头文件包含,那么为什么要防止头文件包含,主要是下面两种情况:1.0 在一个源文件中重复包含一个头文件首先一般不会在头文件中定义变量等,所以在这个时候,重复包含头文件只是会让编译器进行重复的一类操作和计算,并不会有实际的错误,这是防止头文件包含就是为了防止重复操作的出现,提高效率;当在头文件定义了变量的话,那么头文件包含的作用就是防...

2019-12-21 15:26:19 302

原创 链表的操作(增、删、改、查、打印)--c++实现

最近复习了一下链表,熟悉了一下各个操作的用法,简便地写了一个学生信息系统的链表,希望大家看看代码里面的错误,还有里面我也有一个问题也提出来了,希望大家帮忙解答,下面贴出代码:#include<iostream>#include <cstring>#include <conio.h>#define SUB_NUM 3using namespace st...

2019-10-16 20:58:40 237

原创 单链表操作之链表插入--C语言实现

今天回顾了一下单链表,写了一个简单的单链表插入程序,使用的是头插法,以前学习的不太好,现在来看又有了收获,说明自己的基础还不行。现在贴出代码,希望大家多看看代码里面的注释,提出不同的看法或者纠正在下的错误。//链表结点typedef struct Node{ int data; struct Node *next;}*PtrToNode;void InsrtNode(PtrToN...

2019-10-15 20:06:41 691 2

原创 数据结构学习随笔---广义表结点的两种方式C语言实现以及广义表的储存实现(笨蛋式)

#广义表简介广义表是线性表的推广,也是一种基础的数据结构。广义表类似于数组,不同的是,广义表里面可以存储广义表,即储存单个元素或者多个元素组成的广义表。其中,单个元素称为原子,广义表中的广义表称为子表,甚至子表的子表还可以是广义表。广义表内部类似于一种递归结构。广义表第一个元素称为表头,表头后面的称为表尾。其中,表头可以使原子或者广义表,表尾一定是广义表,哪怕是空表。#广义表存储链表的两种结...

2019-10-06 21:58:59 1022

原创 Kmp算法C语言简单实现

前言: 菜鸟一枚,最近学习了Kmp算法,其中有很多的不懂,在这里总结一下前两天学习的结果,写出来最简单的C语言代码实现算法,其中有不少借鉴到别处,如有侵权,请联系我,我定反思并道歉。好了,言归正传,在这两天学习kmp算法的过程中,最让我感到头痛的就是构造next数组了,我觉得只要构造好了该数组,就算是成功了一半。在计算next值得时候,最重要的是理解最大前缀后缀,在计算出最大长度值后再计算nex...

2019-06-01 09:54:06 2883 1

空空如也

空空如也

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

TA关注的人

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