自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不忘初心的专栏

分享学习的点点滴滴,欢迎交流。

  • 博客(64)
  • 资源 (23)
  • 收藏
  • 关注

原创 Linux C的select函数的使用

1、select函数简介int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval*timeout); 当服务器响应多个客户端连接的时候,需要定义一个线程函数,在每一个线程函数里面处理该连接,进行数据的读写,且connect、accept、recv或recvfrom这样的函数都是阻塞的。

2015-08-31 22:57:14 13015 1

原创 哲学家吃饭问题 代码实现如何 避免线程死锁

问题描述:     假设有5个哲学家,他们花费一生中的时光思考和吃饭。这些哲学家共用一个圆桌,每个哲学家都有一把椅子。在桌子中央是一碗通心面,在桌子上放着5只筷子。当一个哲学家思考时,他与其他同事不交互。时而,哲学家会感到饥饿,并试图拿起与他相近的两只筷子(他与邻近左、右之间的筷子)。一只筷子一次只能被一个哲学家拿起。显然,他不能从其他哲学家手里拿走筷子。当一个饥饿的哲学家同时有两只筷子时,他就可

2015-08-31 21:29:23 2256

原创 Linux C打印所有的环境变量

1、在终端显示环境变量执行env命令nii@mmch:~/code$ envLC_PAPER=zh_CN.UTF-8LC_ADDRESS=zh_CN.UTF-8XDG_SESSION_ID=4LC_MONETARY=zh_CN.UTF-8TERM=xtermSHELL=/bin/bashSSH_CLIENT=192.168.217.1 34476 22LC_NUMERIC=zh_CN

2015-08-31 14:18:18 5170

原创 Linux系统文件描述符理解

1、查看系统文件描述符个数。以下是查看Linux文件描述符的三种方式:[root@localhost ~]# sysctl -a | grep -i file-max --colorfs.file-max = 392036[root@localhost ~]# cat /proc/sys/fs/file-max392036[root@localhost ~]# ulimit -n1024

2015-08-31 11:01:08 2373

原创 Linux进程通信---信号量 代码实现

1、信号量使用流程(1)获得keyVal值值要一样。keyVal = ftok(PATH_SHM,PRI_SHM_ID);(2)创建信号量或打开信号量的键值nSemid = semget(keyVal,1,IPC_CREAT);(3)设置信号量 semctl(nSemid,0,SETVAL,1)(4)判断现在该资源是否被加锁,如果加锁则阻塞,如果不枷锁,则该进程把这块资源加锁,现在由这个进程使用。在

2015-08-30 23:57:19 1288

原创 Linux进程通信---消息队列 代码实现

1、消息队列函数的使用“消息队列”是在消息的传输过程中保存消息的容器。当消息从队列内取出后,相应的消息就从队列中删除了。(1)ftok获得唯一的key值key_t ftok(const char *pathname, int proj_id);pathname就是你指定的文件名(已经存在的文件名),一般使用当前目录proj_id就是你指定的id值(2)msgget用于创建一个新的或打开一个已经存

2015-08-30 23:29:17 773

原创 Linux进程通信---共享内存 代码实现

1、什么是共享内存      共享内存可以从字面上去理解,就把一片逻辑内存共享出来,让不同的进程去访问它,修改它。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入

2015-08-30 23:05:45 2350

原创 Linux进程间通信---有名管道 代码实现

一、管道通信的注意事项 (1)执行mkfifo file命令来创建一个管道文件。[admin@localhost code]$ mkfifo pipe[admin@localhost code]$ ls -ltotal 0'''p'rw-rw-r-- 1 admin admin 0 8月 30 19:52 pipe //p就代表是管道文件(2)如果只把管道的写打开,管道是不通的,是写不

2015-08-30 20:15:37 2086

原创 Linux进程与线程的区别和联系

1、两者区别:(1)进程是比较大的单位,一个进程可以有多个线程,一个线程只能被一个进程拥有。 (2)进程是资源分配的基本单位,线程是处理机制调度的最小单位,所有的线程共享其所属进程的所有资源与代码。 (3)线程执行过程中容易同步,而进程之间需要通信进行同步。 (4)线程共享进程数据的同时,拥有自己的堆与栈。2、线程的一些优点: (1)由于线程用所属进程的一些资源,线程的划分尺度更小,并发性比

2015-08-30 19:42:49 768

原创 强制使用处于TIME_WAIT的TCP状态的socket地址

在bind函数之前添加上这句话就可以了。int isReuse = 1;setsockopt(nSocketFd,SOL_SOCKET,SO_REUSEADDR,(const char*)&isReuse,sizeof(isReuse));

2015-08-30 18:59:24 478

原创 Linux地址信息函数:获取本端和远端的socket地址

1、在某些情况下想知道一个连接着的socket的本端地址,以及远端的socket地址,可以使用下面的两个函数。获取本端的socket地址:#include <sys/socket.h>int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen);获取远端的socket地址:#include <sys/socket.h>

2015-08-30 17:28:46 2356

原创 Linux C标准IO库函数详解 一

1、open/close open函数可以打开或者创建一个文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);返回值:成功

2015-08-30 14:21:37 1828

原创 Linux文件系统简介

1、文件系统里面的几个概念超级块块组描述符表数据块块位图inode节点inode位图2、概念理解 (1)超级块      在Linux系统中把磁盘分成一个个的数据块来存储数据,超级块存储整个分区的系统信息,包括 块大小,文件系统版本号,上次mount的时间等等 (2)块组描述符表      整个分区有多少个块组,就有多少个块组描述符,每个块组描述符存储该块组的信息。

2015-08-30 00:37:55 514

原创 华为机试:计算两个字符串的最大公共字串的长度,字符不区分大小写

#include <iostream>#include <string>#include <stdlib.h>using namespace std;int getCommonStrLength(char * pFirstStr, char * pSecondStr){ int i = 0, j = 0, k = 0; int count = 0, temp = 0;

2015-08-28 23:10:34 1712

原创 数据结构:C语言实现构建哈夫曼树

哈夫曼树(霍夫曼树)又称为最优树.1、路径和路径长度      在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。2、结点的权及带权路径长度       若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的

2015-08-28 15:08:12 18833 3

转载 数据结构:树、森林和二叉树的转换

1、树转换为二叉树(1)加线。在所有兄弟结点之间加一条连线。(2)去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线。(3)层次调整。以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点的右孩子)2、森林转换为二叉树(1)把每棵

2015-08-28 10:24:51 1910

原创 洗牌算法:随机打乱一个数组

解题思路:      随机的取出一个(0 - n)之间的数据与a[0]交换。      随机的取出一个(1 - n)之间的数据与a[1]交换。      随机的取出一个(2 - n)之间的数据与a[2]交换。      ……………..     随机的取出一个(n-1 - n)之间的数据与a[n-1]交换。代码实现:#include <stdio.h>#include <time.h>#i

2015-08-27 11:18:29 1229 1

原创 C语言结构体的字节对齐

下面直接来看例子吧:测试环境为32位的系统以下结构体分别占多少字节:struct A {char a;char b;char c;};sizeof(A) = 3; //因为a、b、c按照1个字节进行对齐struct B {int a;char b;short c;};sizeof(B) = 8; 按照4个字节对齐:    a占4字节     b占一个字节 c占2个字节 有1

2015-08-26 21:59:50 678

原创 C语言实现二叉排序树

#include <stdio.h>#include <string.h>#include <stdlib.h>/* 定义结构体 */typedef int TypeData;typedef struct stBiTreeNode { TypeData data; struct stBiTreeNode *lchild, *rchild;}BITREENODE;/*

2015-08-25 21:57:46 3033

原创 华为机试题: 字符串逆序

描述 将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 如:输入“I am a student”,输出“tneduts a ma I”。输入参数: inputString:输入的字符串返回值: 输出转换好的逆序字符串知识点 字符串 运行时间限制 10M 内存限制 128输入 输入一个字符串,可以有空格输出 输出逆序的字符串 样例输入 I am

2015-08-25 10:08:39 3241

原创 笔试题:把一串字符串中单词逆序

例如输入: wang zheng jun输出: gnaw gnehz nuj#include <stdio.h>#include <string.h>int main(){ char str[100] = {0}; int len = 0; int count = 0; int index = 0; char ch = 0; int begin

2015-08-25 09:58:23 1509

原创 华为机试题:字符串最后一个单词的长度

描述 计算字符串最后一个单词的长度,单词以空格隔开。 知识点 字符串,循环 运行时间限制 0M 内存限制 0 输入 一行字符串,长度小于128。 输出 整数N,最后一个单词的长度。样例输入 hello world 样例输出 5#include <stdio.h>#include <string.h>int main(){ char szStr[128

2015-08-25 00:30:38 702

原创 华为2016机试题目: 最高分是多少

题目描述:老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据。 每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。 学生ID编号从1编到N。 第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的

2015-08-24 22:14:56 4558 2

原创 Linux命令: find命令的使用方法

1、find的匹配标准        -name file: 对文件名做精确匹配        -iname file: 对文件名匹配的时候,不区分大小写        -user USERNAME : 根据属主查找        -group GROUPNAME :根据属组查找       -iud UID :根据UID查找找        -gid

2015-08-24 15:05:39 568

原创 Linux命令:sort的使用方法

1、sort的字段选择sort file        -n : 数值排序        -r : 逆序排序        -t : 字段分隔符        -k : 以哪个字段为准,来进行比较        -u : 重复的,只显示一次 2、示例该目录下有一个test.c的文件,文件内容如下:nii@mch:~/code$ cat test.c l

2015-08-24 14:09:41 1270

原创 Linux命令: cut命令的使用方法

1、cut用法(文本显示剪切)   -d : 制定字段分隔符,默认是空格    -f :制定要显示的字段     -f1 :显示第一个字段     -f 1,3 显示第一个和第三个     -f 1-3 显示第一个到第三个    -b : 显示字节数    -c : 显示字符2、示例

2015-08-24 10:30:31 6441

原创 Linux多线程如何避免死锁

1、线程死锁产生的必要条件:(1)互斥条件:一个资源每次只能被一个进程使用。 (2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3)不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 (4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。2、如何避免死锁&bnsp;网上对于如何避免死锁方法很多,我在这里列举两个比较常用的方法。(1)设

2015-08-23 23:09:40 2063

原创 Linux命令:head,tail命令使用方法

1、head命令head -n查看文件的前n行2、tail命令tail -n查看文件的后n行 tail -f file:该命令特别有用,可以一直显示追加到文件后面的内容

2015-08-23 22:45:57 879

原创 查看ubuntu系统的版本号和内核版本号

1、查看版本号 cat /etc/issuenii@mch:~$ cat /etc/issueUbuntu 15.04 \n \l2、查看内核版本 uname -anii@mch:~$ uname -aLinux mch 3.19.0-23-generic #24-Ubuntu SMP Tue Jul 7 18:52:29 UTC 2015 i686 i686 i686 GNU/Linux

2015-08-23 22:33:08 4148

原创 Linux命令:ls命令使用方法

ls 直接显示该目录下的文件  -l: 长格式显示  -h: 做单位转换  -a: 显示以.开头的隐藏文件  -d: 显示目录自身属性  -r: 逆序显示  -i: 正序显示,前面可以显示inode号  -R: 递归显示(recursive)

2015-08-23 22:19:08 786

原创 C++的 函数模板和模板函数、类模板和模板类区别

1、函数模板和模板函数函数模板:函数模板的重点是模板。表示的是一个模板,专门用来生产函数。template <typename T> void fun(T a) { } 模板函数:是模板函数的实例化fun(7);//隐式生成fun <int> fun(3.9);//隐式生成fun <double> fun(‘b’);// 隐式生成fun <char> Shape* p

2015-08-23 22:05:42 2042 4

原创 Linux内核有什么功能?

1、进程管理 内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出). 不同进程间通讯(通过信号, 管道, 或者进程间通讯原语)对整个系统功能来说是基本的, 也由内核处理. 另外, 调度器, 控制进程如何共享 CPU, 是进程管理的一部分. 更通常地, 内核的进程管理活动实现了多个进程在一个单个或者几个 CPU 之上的抽象.2、内存管理 计算机的内存是主要的资源, 处理它所用的策略对系统

2015-08-23 00:36:41 8699

原创 PAT 1010 月饼

题目描述 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为18、15、10万吨,总售价分别为75、72、45亿元。如果市场的最大需求量只有20万吨,那么我们最大收益策略应该是卖出全部15万吨第2

2015-08-21 23:10:33 981

原创 PAT 1017 A除以B (大数相除)

题目描述 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。输入描述: 输入在1行中依次给出A和B,中间以1空格分隔。输出描述: 在1行中依次输出Q和R,中间以1空格分隔。输入例子: 123456789050987654321 7输出例子: 17636684150141093474 3#include <io

2015-08-21 19:02:21 1155

原创 PAT 1006部分A+B

题目描述 正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。现给定A、DA、B、DB,请编写程序计算PA + PB。输入描述: 输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。输出描述: 在一行中输出PA + PB的值。输入例子:

2015-08-21 16:28:39 589

原创 数据结构 C语言实现希尔排序

一、希尔排序简介 先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,二、C语言代码实现#include <stdio.h>/* 将两个数据交换 */void swap(int*

2015-08-19 22:25:10 1562 1

原创 数据结构 C语言实现直接插入排序

一、直接插入排序简介 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。二、C语言代码实现#include <stdio.h>/* 将两个数据交换 */void swap(in

2015-08-19 18:03:46 4051

原创 数据结构 C语言实现冒泡排序

一、冒泡排序简介冒泡排序是相邻的两个数进行比较,每次把最大的或最小的放到后面。二、代码实现#include <stdio.h>/* 将两个数据交换 */void swap(int* Ina , int* Inb){ int temp = *Ina; *Ina = *Inb; *Inb = temp;}/** 函数功能:冒泡排序,把数据从小到大排序* 参数解释:In

2015-08-19 15:04:37 5018

原创 数据结构 C语言实现选择排序

一、选择排序简介选择排序是外层进行n-1趟排序,内层进行n-1趟排序,每一趟选出最大或最小的数据放在最前面。二、代码实现#include <stdio.h>/* 将两个数据交换 */void swap(int* Ina , int* Inb){ int temp = *Ina; *Ina = *Inb; *Inb = temp;}/** 函数功能:选择排序,把数据从

2015-08-19 14:59:17 800 1

原创 数据结构 C语言实现快速排序

一、快速排序简介快速排序采用分治的思想,第一趟先将一串数字分为两部分,第一部分的数值都比第二部分要小,然后按照这种方法,依次对两边的数据进行排序。二、代码实现#include <stdio.h>/* 将两个数据交换 */void swap(int* Ina , int* Inb){ int temp = *Ina; *Ina = *Inb; *Inb = temp;}

2015-08-19 14:43:50 1718

基于Lire库搜索相似图片源码

使用Lire来进行图片的搜索示例代码,包括创建索引和搜索。博客链接:https://blog.csdn.net/u010889616/article/details/81155701

2018-07-22

Zookeeper客户端Curator Framework使用代码

Zookeeper客户端Curator Framework示例代码,博客详解链接:https://blog.csdn.net/u010889616/article/details/80209629

2018-05-05

cas单点登录测试配置

使用Tomcat配置cas单点登录Sever和Client,包括生成的证书和已配置好的Tomcat工程,博客介绍链接:https://mp.csdn.net/postedit/80043654

2018-04-29

caspian.css

caspian.css定义了JavaFX的默认样式。

2017-08-20

maven学习笔记

maven学习笔记

2016-09-23

EasyUI资料

EasyUI

2016-08-29

springmvc资料

springmvc资料

2016-08-29

JavaEE实训教程超详细

JavaEE实训教程超详细

2016-08-29

java_ee_api_中英文对照.chm

java_ee_api_中英文对照.chm

2016-08-21

Android的APp作为Socket服务端与pc通过USB通信

Android手机和电脑通USB线连接,手机里面的app作为Socket的服务器端,PC作为Socket的客户端,两者进行通信。

2016-05-14

nanohttpd 2.2版本jar包

这是NanoHttp源码2.2版本的jar包,在java程序开发中直接可以使用。

2016-05-14

nanohttpd-2.2.0.jar

nanohttpd-2.2.0.jar

2016-05-14

Android作为Socket服务端与pc通过USB通信

2016-05-14

Html帮助文档

是一个类似W3schoo的HTML简介文档。

2016-04-02

Linux基本的命令详解

在学习Linux的过程中,整理了一些命令的用法。

2016-03-22

Java Swing的基本用法

用swing做了简单的界面。

2016-03-21

java swing文本编辑器

java swing文本编辑器

2016-03-16

java swing入门教程

2016-03-16

福星阅读器

2016-03-15

java基础知识课件

java的一些课件

2016-03-10

算法导论第三版(带书签)

本书是算法导论第三版,我花了近1个小时,把书签制作了一下,分享给大家。

2015-10-02

局域网QQ聊天项目

该项目是局域网QQ聊天系统,该系统具有注册、登录、传文件、关键词过滤、传图片、聊天加密、单聊、群聊、管理员禁言、管理员删除用户等功能。该博客链接有讲解:http://blog.csdn.net/u010889616/article/details/48413121

2015-09-13

STM32的5110源代码

基于STM32的5110程序代码,代码有注释,各个函数十分清晰。

2014-02-26

空空如也

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

TA关注的人

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