自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

NK_test的博客

大部分人愿意做任何事来逃避真正的思考

  • 博客(16)
  • 资源 (2)
  • 问答 (5)
  • 收藏
  • 关注

原创 C#随机数生成器(支持数字跳变)

今天同学说在准备一个晚会,有进行随机号码抽奖的环节,想让我做一个随机号码生成器,最好是那种开始之后数字进行跳变,按键后暂停。这玩意没啥技术含量,搁在c++里面也就是一个random的事,我总不能给人家一个控制台程序把。于是就用C#写了一个。写的时候遇到一个小问题,就是显示需要稍微的延迟,想用C#里面的Tread.Sleep()函数,但是发现界面程序卡住不动了,会造成线程阻塞。采用如下方

2015-11-30 13:53:50 4673 2

原创 单片机:c语言实现秒表计数(按键开始,结束,重置)

实现秒表计数功能,使用定时器和外部中断实现。8号按键代表计时开始/结束,C号按键代表重置为0,为了演示方便,这里上限定为15秒。代码中有详细的注释:#include sbit WEI=P2^7;sbit DUAN=P2^6;sbit L1=P3^4;unsigned char code dofly_DuanMa[11]={0x3f,0x06,0x5b,0x4f,0x66,0x

2015-11-27 13:20:02 21498 8

原创 单片机:按键(使用中断)控制数码管的数字加减(c语言实现)

本实验的目的:使用中断实现通过编号为8和C的按键控制数码管数字的加减,加至15之后再循环到0,减到0之后保持0不变。代码中有详细的注释:#include sbit WEI=P2^7;sbit DUAN=P2^6;void delay(int t){ while(t--);}unsigned char code dofly_DuanMa[10]={0x3f,0x

2015-11-25 22:31:55 28754 3

原创 Linux进程间通信(IPC)编程实践(八)共享内存的使用-POSIX 共享内存(API)

1、Posix提供了两种在无亲缘关系进程间共享内存区的方法:(1)内存映射文件:先有open函数打开,然后调用mmap函数把得到的描述符映射到当前进程地址空间中的一个文件(上一篇博文所用到的就是)。(2)共享内存区对象:先有shm_open打开一个Posix IPC名字(也可以是文件系统中的一个路径名),然后调用mmap将返回的描述符映射到当前进程的地址空间。这两种方法都需要调用m

2015-11-23 22:03:54 3233

原创 Linux进程间通信(IPC)编程实践(七)共享内存的使用-System V共享内存(API)

上一篇博文提到的系统调用mmap通过映射一个普通文件实现共享内存。那么本文中介绍的System V 共享内存则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件。执行过程是先调用shmget,再调用shmat。对于每个共享的内存区,内核维护如下的信息结构,定义在头文件中。//System V 共享内存基本数据结构

2015-11-22 22:05:19 1822

原创 Linux进程间通信(IPC)编程实践(六)共享内存的使用-mmap

共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据(如图)。共享内存和其他进程间通信方式的比较:用管道或者消息队列传递数据:使用共享内存传递数据:共享内存生成之后,传递数据并不需要再走Linux内核,共享内存允许两个或多个进程共享一个给定

2015-11-21 14:46:21 3295

原创 [leetcode] 162 Find Peak Element(二分)

这题要求我们在一个无序的数组里找到一个peak元素,所谓peak,就是值比两边邻居大就可以了。对于这道题目,最简单的解法就是遍历数组,只要找到第一个符合要求的元素就可以了,时间复杂度为O(n),但是这题要求O(LogN)的时间复杂度,还可以用二分来做。首先我们找到中间节点mid,如果大于两边返回当前的index就可以了,如果左边的节点比mid大,那么我们可以继续在左半区间查找,这里面一

2015-11-19 13:09:46 4504

原创 [leetcode] 134 Sort List (链表 & 归并排序)

首先看到题目中要求时间复杂度 O(n log n),时间复杂度为常数的时候,先将最容易实现的插入排序排除(O(n^2));接着想到快速排序和归并排序,但是快速排序的最坏时间复杂度也为O(n^2),想了一会并且感觉也不是很好实现的样子。最后瞅了一眼discuss的代码,发现用的是归并排序,理论上归并排序的空间复杂度是线性的,也就是O(N),并不是常数,这点就需要结合链表的特性,只需要修改指针之间

2015-11-17 22:55:07 1428

原创 Linux进程间通信(IPC)编程实践(五)消息队列实现回射客户/服务器

在我的上一篇博文中,讲解了关于消息队列的msgsnd和msgrcv函数的使用,这里我们试着来实现一个回射客户/服务器。基本框架如下:对于客户端: 用进程的PID进行区分类型,发往服务器的类型(mtype)总是1,包含自己的PID,还有一行消息。对于回射服务器端: 创建一个消息队列,指定键值是1234,服务器不停地接受类型是1的消息,解析出数据部分的pid(mtext的前四个

2015-11-16 15:55:24 2396

原创 Linux下具有基本功能的shell的具体代码实现(详细)

在前几个月对Linux的学习过程中,一直在与shell进行交互,感觉shell充满了神秘感。偶然看到一篇文章讲解了shell的实现,感觉也不是很难的样子,于是自己也开始开发自己的minishell,顺便也巩固了前一段时间学习的linux系统编程的知识。先来展示一下我的这个minishell实现的功能:1. 支持ls,touch,wc 等外部命令2. 支持输入输出重定向符3.

2015-11-15 22:24:32 13799 2

原创 教你快速在c#中调用C++代码(函数)

之前写过一段C++的代码,想给他用C#写个界面,也就是想让这段代码在C#中可以运行。看了百度的很多方法,都说是封装成dll调用,但是按照步骤来总会出现各种错误,像以下的这种:并且迟迟不能解决,今天竟然有人跟我说直接把dll提取到C#工程的bin文件下就可以了,三观都毁了....尝试了一下,真的成功了,在这里把具体步骤和大家说一下,避免在这种问题上浪费大量的时间。首先,我们随便建立一

2015-11-11 19:30:38 14547 2

原创 Linux进程间通信(IPC)编程实践(四) 详解System V消息队列(2)(msgsnd & msgrcv)

本文主要介绍消息队列发送/接收消息的API:msgsnd函数[cpp] view plaincopyint msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);   参数   msgid: 由msgget函数返回的消息队列标识码, 

2015-11-11 18:39:02 2111

原创 Linux进程间通信(IPC)编程实践(三) 详解System V消息队列(1)

消息队列简介消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法(本机);每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值。消息队列也有管道一样的不足: (1)每个消息的最长字节数的上限(MSGMAX); (2)系统中消息队列的总条数也有一个上限(MSGMNI); (3)每个消息队列所能够保存的总字节数是有上限的(MSGMNB) . 

2015-11-10 13:04:16 2572

原创 [leetcode] 219 Contains Duplicate II(map)

思路一:使用map映射 记录出现过的nums[i],并记录对应的位置i ;当出现冲突时,比较两者位置关系,如果之差小于等于k,则返回true,否则更改为新位置;如果没有冲突,则说明不含有重复元素。class Solution{public: bool containsNearbyDuplicate(vector &nums, int k) { map mp;

2015-11-08 21:35:22 1158

原创 [leetcode] 16 3Sum Closest(数组)

暴力循环的时间复杂度是O(N^3),肯定是不可取的。我们要充分利用题目中的条件进行分析,如何才能相对高效的比较数组中指定个数元素的和  和target的大小呢?我们可以先对数组进行排序,如果是计算两个元素的和的话,我们会分别设置头和尾两个指针,向中间靠拢,那么三个的话,我们只需要先对第一个数进行循环取值下标i,剩下的两个指针分别指向i+1和数组的最后一个元素,这样的复杂度是 排序O(nlogn

2015-11-08 20:25:24 2389

原创 [leetcode] 43 Multiply Strings(模拟大数乘法)

很简单的题目,模拟大数乘法。思路: 第一个字符串的第i位乘以第二个字符串的第j位一定是结果的第i+j位,如果i+j已经有值,直接加上去就OK,并用temp保存进位,最后记得将结果反转,去掉前置0。这样的算法的复杂度是O(n2).利用FFT可以将算法优化到O(nlogn),关于FFT的实现在此不再赘述,可以参考算法导论或者网上其他资料。另外,我的博客中实现

2015-11-03 22:24:30 4793

gdb多线程调试小文件

基于Linux64位的多线程小程序,答案就在某个线程的堆栈中,请使用gdb命令查看哈

2016-03-03

随机数生成器

随机数生成器,自定义范围,支持跳变,适用于各个活动的抽奖

2015-11-30

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

TA关注的人

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