自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (13)
  • 收藏
  • 关注

原创 使用Navicat for mysql接连Ubuntu16的心路历程

为什么会记录这个心路历程呢, 因为中间遇到了很多问题, 查找网上的办法每一个可行的, 是因为自己掉进了自己挖的坑里面去了,所以这里记录下, 给大家,也给自己以后可以用来参考的记录.1. 安装mysql#一定要先更新,不然就不知道会安装的那个版本, 坑的自己重新卸载掉再来一次sudo apt-get updatesudo apt-get install mysql-server mysql-...

2019-11-02 12:50:56 235

原创 xshell连接Ubuntu记录

xshell连接Ubuntu记录TOC1. 安装xshellXshell下载地址:https://www.netsarang.com/products/xsh_overview.html 下载后按照提示进行安装即可注意: 使用家庭/学生版.免费2. 连接去Ubuntu上ifconfig查看ipv4 填在ip新建会话名称—自己定义即可其他不用动, 点击确定连接这里...

2019-11-02 12:26:21 215

原创 基于http的在线版日期计算器+云笔记

1、HTTP概念超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。1、http的请求报文格式2、http的响应报文格式3、http服务器基于传输层的TCP协议编写 TCP协议保证了http可靠性4、代码思路:5、部分代码: 1、监听套接字的创建int startup(const ch

2017-09-10 14:46:55 2847 2

原创 Linux—TCP_server端编写多路转接之EPOLL

1、前言之前我有写过 利用多路转接的select的TCP_server,但当时我们提到了很多关于select的缺点: 1、select可监听的文件描述符有上限制; 2、因为select参数是输入输出型的,所以每次重新设置select时,都需遍历式设置,对性能有一定的影响 3、用户增多时,多次重复遍历和频繁内核与进程数据拷贝(多次的返回) 4、需要自己维护一个数组/链表,对文

2017-09-01 12:54:40 1045

原创 二叉搜索树之—AVL

搜索树:搜索树:又叫二叉排序树,他是一颗空树,或者具有以下几个特性:1、若它的左子树不为空,则左子树上所有节点的值都小于根节点的值2、若它的右子树不为空,则右子树上所有节点的值都大于根节点的值3、它的左右子树也分别为二叉搜索树索搜结构之AVL树:AVL树:一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树:1、它的左右子树都是AVL树2、左子树和右子树高度之差(

2017-09-01 10:25:03 291

原创 守护进程

1、什么是守护进程守护进程:又称精灵进程(daemon)是指在UNIX或其他多任务操作系统中在后台执行的电脑程序,并不会接受电脑用户的直接操控。此类程序会被以进程的形式初始化。守护进程程序的名称通常以字母“d”结尾:Linux系统的大多数服务器就是通过守护进程实现,例如,syslogd就是指管理系统日志的守护进程。2、守护进程的特性 孤儿进程、守护进程都是孤儿进程 自成会话、不受终端注销影

2017-08-03 13:37:01 343

原创 shell脚本的8种字符串截取方法

shell脚本的截取有8种,今天我们以https://www.baidu.com/123.htm 为例:1、# 删除左边字符,保留右边字符val="https://baidu.com/123.htm"echo ${val#*//}结果:www.baidu.com/123.htm2、## 删除左边字符,保留右边字符val="https://baidu.com/123.htm"echo ${val#

2017-08-03 07:43:44 1185 2

原创 linux—TCP_server端编写之利用select()函数编写可多用户同时访问

1. 回顾多进程、多线程编写的server之前我们编写了多进程、多线程的tcp_server,但我们发现虽然多线程和多进程的编写简单,但太占资源了,当客户端连接稍微多一点,服务器就有可能奔溃。所以我们今天要利用一种io模式:i/o复用(多路转接)2. 什么是多路转接我们在IO数据时,通常时间是在等,我们普通read()函数,write()函数等一次只能等一个文件描述符,这样的效率太低了。所以我们就有

2017-07-31 14:13:17 712

原创 子进程异步等待方式

1. 原理 1、子进程在退出时,会给父进程发送17号信号 SIGCHLD 2、可以对信号SIGCHLD进行自定义动作,执行handler 3、handler是系统回调函数,在收到该信号后,在进程又内核返回用户态前,处理自定义函数handler。2、异步等待子进程void handler(int sig){ pid_t ret = waitpid(-1,NULL,WNOHA

2017-07-28 15:24:05 289

原创 C++三大特性——多态

1、什么是多态?多态:从名字上看就是多种状态,形态, 举个简单的例子: 一个操作符 :&当&放在一个变量前面,就是区地址操作符;放在类型后面,一般就是引用了。多态分为两种: 静态多态:在程序编译期间就确定了形态,例如:函数重载,模板 动态多态:在函数执行时才能知道怎么执行 2、多态的实现条件多态实现的条件有两个: 1、重写:基类一定是虚函数,函数一个在基类,一个在派生类,

2017-07-27 15:50:56 261

原创 C++的三大特性——继承

1、三种继承方式 1、public 共有继承,继承下的成员,与基类成员权限相同 2、protected 保护继承 派生类可以访问,不能在类外访问,权限缩小 3、private 私有继承 派生类不能访问基类ps: class的默认继承权限为private,struct的默认继承权限为public;2、继承的三种模型 单继承:一对一的继承 多继承:一个派生类继承了多

2017-07-26 12:53:12 319

原创 LINUX--TCP_server端的编写

1. 解释套接字套接字:socket = 主机IP + 主机上的进程(端口号) 标识网络中的唯一一个进程 Socket:非常类似于电话插座。以一个国家级电话网为例,电话的通话双方相当于相互通信的2个进程,区号是它的网络地址;区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于Socket号。任何用户在通话之前,首先要占有一部电话机,相当于申请一个Socket;同时要知道对方的号

2017-07-24 12:28:00 7310 1

原创 类的封装性 -- 双向链表

双向链表的节点struct Node { Node(const DataType& data) : _pNext(NULL) , _pPre(NULL) , _data(data) {} Node* _pNext; //指向下一个节点 Node* _pPre; //指向上一个节点 DataType

2017-07-21 07:49:37 339

原创 路由常见算法

1. 路由算法路由算法,又名选路算法,可以根据多个特性来加以区分。算法的目的是找到一条从源路由器到目的路由器的“好”路径(即具有最低费用的路径)。算法设计者的特定目标影响了该路由协议的操作;具体来说存在着多种路由算法,每种算法对网络和路由器资源的影响都不同;由于路由算法使用多种度量标准(metric),从而影响到最佳路径的计算。在linux中使用 route 显示路由表 这他主机的网络接口接到1

2017-07-18 09:39:35 4289

原创 拷贝构造的优化问题

优化方式C++中对于拷贝构造的优化,当两个拷贝构造在连续时系统会优化为一次拷贝构造。 简单的讲就是:一次拷贝构造之后把构造的对象没有放置,而是直接用做下一个拷贝构造的参数,则这两次的拷贝构造被优化为一次,但得注意:优化时,前一个必须是形参或者临时创建的对象。实例演示class AA{ private: int a;}AA f (AA a) { return a ;

2017-07-10 21:35:07 277

原创 信号的产生于处理

1. 信号在产生后的三种情况:1. 阻塞 (blok),进程可以选择阻塞(blok)某个信号,被阻塞的信号,在产生后将保持未决状态,直到阻塞被解除,才有可能抵达该信号。2. 未决(pending)信号从产生到递达之间的状态,就是未决状态,3. 处理 (信号的递达delivery):信号的处理三种方式: 1. 执行该信号的默认处理方式(如2号信号默认退出程序) 2.忽略此信号(不

2017-07-10 20:08:22 282

原创 写时拷贝的两种方案

1. 什么是写时拷贝写时拷贝故名思意:是在写的时候(即改变字符串的时候)才会真正的开辟空间拷贝(深拷贝),如果只是对数据的读时,只会对数据进行浅拷贝。写时拷贝:引用计数器的浅拷贝,又称延时拷贝:写时拷贝技术是通过"引用计数"实现的,在分配空间的时候多分配4个字节,用来记录有多少个指针指向块空间,当有新的指针指向这块空间时,引用计数加一,当要释放这块空间时,引用计数减一(假装释放),直到引用计数减

2017-07-09 18:07:00 3877

原创 线程安全与可重入函数的对比

1. 什么是线程安全, 如何避免线程不安全线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据四类不安全函数:1、不保护共享变量的函数;2、函数状态随着调用改变的函数;3、返回指向静态变

2017-07-08 22:39:15 230

原创 利用函数alarm和pause模拟sleep

1. 简单介绍sig alarm(unsigned int alam)当在调用alarm()前已经设置了一个闹钟,那么我们可以调用alarm(0)来取消此闹钟,并返回剩余时间2. int pause(void)pause函数使调用进程挂起, 直到捕捉到一个信号(出错返回)所以我们需要对信号进行自定义捕捉3. 普通sleepvoid myhandler(int sig)//{ //pri

2017-07-06 23:44:21 462

原创 C++入门基础知识

1. 命名空间作用: 实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。访问方法:用 作用域解析符:: 来访问,AA : : x,AA表示空间域,x表示成员(名字)。 namespace AA1//AA1域(空间) { int a = 1;//成员 }

2017-06-19 17:49:30 334

原创 链表面试题之复杂链表的复制

复杂链表的复制:一个链表的每个节点,有一个指向next指针指向下一个节点,还有一个RandNext指针指向这个链表中的一个随机节点或者NULL,现在要求实现复制这个链表,返回复制后的新链表。 //ps: 复杂链表的结构 struct ComplexNode { int data ; // 数据 struct ComplexNode * next; // 指向下一个节点的指针 st

2017-06-15 21:45:48 379 1

原创 C语言实现单链表面试题--进阶

1. 判断单链表是否带环?若带环,求环的长度?求环的入口点?1.先判断链表是否带环,用快慢指针的方式,快指针pFast,慢指针pSlow;pFast快指针每次向后遍历两次,慢指针pSlow每次向后遍历一次,如果pFast会为NULL,说明链表不带环,否则说明带环同时会有:pFast==pSlow,因为在pSlow进入环后,pFast距pSlow的距离就会每次减一,直至相遇//判断是否带环,若带环

2017-06-13 20:57:45 268

原创 基于环形队列的生产者消费者模型编写。

1. 环形队列在队列为空时,生产者必须先运行,消费者不能越过生产者在队列为满时,消费者先运行,生产者不能超过消费者一圈,不能同时访问同一位置:2. 信号量 sem_t sem;//POSIX的线程标准下的 信号量机制通过信号量的值控制可用资源的数量。线程访问共享资源前,需要申请获取一个信号量,如果信号量为0,说明当前无可用的资源,线程无法获取信号量,则该线程会等待其他资源释放信号

2017-06-12 21:44:35 363

原创 线程的生产者消费者模型

1. 基于单链表的生产者与消费者模型生产者—消费者模型的321原则: 3种关系: 生产者-生产者 ***互斥*** 消费者-消费者 ***互斥*** 生产者-消费者 ***互斥,同步***2种角色: 消费者 生产者1个交易场所:临界资源实现321的方法:1个交易场所:创建一个带头节点的链表:typedef struct _head

2017-06-12 18:24:41 211

原创 C语言实现单链表面试题——基础篇(下)

9.查找单链表的中间节点,要求只能遍历一次链表思想:这个问题,我们需要先创建一个数组,但我们需要知道链表大致的范围,我在这里假定链表节点数小于1000个,然后我们每遍历一个节点,就把节点放入数组(数组从零逐个递增,用 i 表示存放的个数 ),最后数组pavi[i/2]存放的就是中间节点 代码:ListNode* ListFindMid(ListNode *pList)//找出链表中间节点,只遍历一

2017-06-09 22:35:22 239

原创 C语言实现单链表面试题——基础篇(中)

6.逆值/翻转单链表思想同从头打印链表一样,但应注意在反向连接链表时的指向问题 void ListTranspose(ListNode **ppList,ListNode *pList)//转置单链表 { assert(ppList); if((*ppList == NULL)||((*ppList)->next == NULL)) return;

2017-06-09 13:42:38 321

原创 C语言实现单链表面试题——基础篇(上)

1.比较顺序表和链表的优缺点,说说它们分别在什么场景下使用?顺序表的特点是逻辑上相邻的数据元素,物理存储位置也相邻,并且,顺序表的存储空间需要预分配。 它的优点 : (1)方法简单,各种高级语言中都有数组,容易实现 (2)不用为表示节点间的逻辑关系而增加额外的存储开销。 (3) 顺序表具有按元素序号随机访问的特点 它的缺点: (1)插入

2017-06-08 20:08:40 376

原创 C语言实现单链表。

因为顺序表的不足而产生了链表,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作简单。#include "ListNode.h"void Compatibo(

2017-06-08 15:53:26 251

原创 线程死锁

1. 什么是死锁 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象。2. 死锁要产生必须具备四个必要条件:1. 互斥条件 2. 请求和保持条件 3. 不可剥夺条件 4. 环路等待条件。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。3. 如何避免死锁,常

2017-06-07 15:41:45 222

原创 进程间通信之“内存共享”的简单实现

1. 共享内存的有效特点:是所有进程间通信最快的不提供任何的同步,互斥机制,(用户可通过设置信号量来保证同步,互斥机制)生命周期随内核2. 创建共享内存int shmget(key_t key, size_t size, int shmflg) key : 可通过函数 key_t ftok( );申请到 size: 申请的大小,申请多少系统给多少,但系统内会以页的倍数批准

2017-06-05 20:31:50 605

原创 线程简单理解

线程的概念有些情况需要一个进程同时执行多个控制流程,这时候线程就派上用场了,比如实现一个图形界面的下载软件,一方面需要和用户交互,等待,和处理用户鼠标键盘的事件,另一方面又需要同时下载多个文件,等待和处理从多个网路主机发来的数据,这些任务都需要一个“等待-处理”的循环,可以用多线程实现。由于同一进程的多线程共享同一地址空间,因此Text segment Data segment都是共享的,如果定义

2017-06-05 12:23:58 285

原创 用C语言实现通讯录文件存储的版本

要实现文件存储,首先需要了解几个函数fopen :FILE *fopen( const char *filename, const char *mode ); 作用:fopen函数打开指定的文件文件名。;参数filename字符串表示打开文件的文件名。参数mode字符串表示打开方式; 今天我们用到了两个打开方式: “r+”和“w” “r+”:打开对阅读和写作。该文件必须存在。(这里也可以用”

2017-05-20 11:39:35 1779 1

原创 指针

大家都认为,c语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是c语言的灵魂,一点都不为过。所以指针的学习也尤为重要。指针数组:int *a[10] = {0};//[]优先级大于*所以首先a是一个数组,其次是存放int *型char *arr[10] = {0}; //字符指针数组数组指针: int (*p)[10] = NULL; //p 的类型为 int

2017-05-09 21:51:27 177

原创 atexit()函数

atexit()函数:atexit(设置程序正常结束前调用的函数)头文件  #include定义函数  int atexit (void(*function)(void));函数说明 atexit()用来设置一个程序正常结束前调用的函数。当程序通过调用exit()或从main中返回时,参数function所指定的函数会先被调用,然后才真正由exit()结束程序。

2017-04-27 20:31:35 214

原创 浅谈“函数调用”在VS中怎样实现

浅谈“函数调用”在VS中怎样实现:首先我们应该了解main()函数也是被调用的:mainCRCStartup()  调用    __tmainCRCStartup())  调用  main()函数接下来我们用一个程序来简单实现一下:#define _CRT_SECURE_NO_WARNINGS 1#includeint Add(int x, int y){ int

2017-04-19 21:49:01 2177

原创 扫雷小游戏

还记得上初中的时候,我们上微机课,我就喜欢玩小游戏:扫雷今天我们用VS设计一个简单 9 x 9 扫雷游戏:设计要求:1.  9x9的数组地雷区.                    2.  每次随机产生10的地雷点                    3.  玩家每次可选择一个 点 ,若为雷点则直接结束游戏,否则,在该点显示出:该点一圈的雷点数

2017-04-07 21:03:58 607 4

原创 三子棋

我们都玩的三子棋:程序原理:程序共有4个子程序组成:1.  void start(char arr[ROWS][COLS], int row, int col) //程序开始显示游戏界面:             2.  void display(char arr[ROWS][COLS], int row, int col);   //玩家下棋:

2017-04-04 16:24:54 711

原创 有关数组的运算:sizeof()和strlen()

有关数组的运算:首先我们分析一下sizeof()和strlen();sizeof()功能:计算数据空间的字节数                     当数组名单独放进sizeof()里表示整个数组。strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。1.一位数组的计算#define _CRT_SECURE_NO_WARNINGS 1

2017-04-03 09:33:07 336

原创 冒泡法排序

用冒泡法排序:例如:              9 8 7 6 5 3 2 1 0依次排序:第二次: 7 6 5 4 3 2 1 0 8 9                  第三次: 6 5 4 3 2 1 0 7 8 9                  第四次: 5 4 3 2 1 0 6 7 8 9                  第五次: 4 3 2 1 0

2017-04-02 20:53:32 493

原创 谁是凶手:

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在根据这些信息,写一个程序来确定到底谁是凶手。首先我们分析一下:4个人 1个说谎。当我们判断出谁在说谎,然后4个条件综合肯定能指向一个人,这个人就是凶手(也是说谎的那个人)我们

2017-04-01 12:51:07 872 1

RTD2270程序和烧写工具

乐华2270烧写全套,程序和烧写工具都在里面。

2019-01-16

(原创)最全51单片机函数库 IO DAC Timer PWM PCA捕获 串口等

最全的51单片机函数库,实现STC12C5A系列大部分硬件的操作函数接口,方便快速应用到自己的项目中。包括Timer定时器、串口、DAC、PWM、delay软硬件延时,串口打印的printf函数等。绝对原创

2019-01-03

sqlserver2008数据库实例练习

可以用来学习操作数据库的例子,里面包含几张表,大概是学生成绩管理系统。你可以用来自学查询、更新、插入、删除等等。这是用2008做的数据库,如果需要用2005或更低版本打开,请百度转换方法。

2018-12-24

Android 蓝牙串口调试助手源码(保证正确)

买别人的代码,这里分享。已经编译生成apk。可以改源码供自己需要。亲测可用, 谢谢支持。

2018-12-18

博客文章《完成端口详解》配套代码

这份代码是我博客里的文章《完成端口详解 - 手把手教你玩转网络编程系列之三》的配套代码 里面的代码包括VC++2008/VC++2010编写的完成端口服务器端的代码,还包括一个对服务器端进行压力测试的客户端,都是经过我精心调试过,并且带有非常详尽的代码注释的。当然,作为教学代码,为了能够使得代码结构清晰明了,我还是对代码有所简化,如果想要用于产品开发,最好还是需要自己再完善一下 详情请参见我的博客 http://blog.csdn.net/piggyxp

2018-12-17

大连光洋GNC09数控系统使用说明书

大连光洋GNC09数控系统使用说明书,大连光洋数控系统使用手册,编程及操作亲测可用, 谢谢支持。

2018-11-20

TwinCAT start时蓝屏\死机补丁

在xp下start TwinCAT服务会导致电脑蓝屏或死机,该补丁可以解决问题,将该补丁复制到Drives文件夹下,覆盖原文件即可

2018-11-20

OCR 文字 和字母识别matlab程序

OCR 文字 和字母识别matlab程序,总共有三个,其中之一可以直接使用,另外两个能运行,但是不知道怎么弄,都是从别的网站上花积分下载下来的,希望可以满足一些人的需要吧。

2018-11-16

MATLAB在时间序列建模预测及程序代码

时间序列是按时间顺序排列的、随时间变化且相互关联的数据序列。分析时间序列的方法构成数据分析的一个重要领域,即时间序列分析。代码

2018-11-16

SPEA2 MATLAB程序 多目标进化算法SPEA2 MATLAB程序

里面有个英文手册,我自己测试过,可以使用。 翻译手册里的步骤如下: 1.解压缩后,文件夹MOEA_SPEA2_MATLAB里面会有个source文件夹,再把source里的文件都拷贝到根目录。 2.将MOEA_SPEA2_MATLAB放在MATLAB的toolbox文件夹下,打开MATLAB,然后set path,之后将current directory定位到:D:\MATLAB7\toolbox\MOEA_SPEA2_MATLAB(这是我的存放地点) 3.首先运行build_spea2.m产生spea2.dll,这样就可以使用SPEA2算法啦 4.打开demo_moea.m,运行一下Demo看看,成功的话就说明可以放心使用这个算法了。 5.实验自己的用例:demo_funct.m里的函数更改成自己的就可以。

2018-10-16

合成孔径雷达的点目标回波仿真程序

合成孔径雷达的点目标仿真程序,MATLAB编写亲测可用, 谢谢支持。

2018-10-16

TwinCat蓝屏补丁

在xp下start TwinCAT服务会导致电脑蓝屏或死机,该补丁可以解决问题,将该补丁复制到Drives文件夹下,覆盖原文件即可

2018-09-26

Java语言编程规范--华为技术有限公司

Java语言编程规范,来自——华为技术有限公司企业技术规范

2018-09-26

空空如也

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

TA关注的人

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