- 博客(54)
- 收藏
- 关注
原创 共享内存
共享内存是被多个进程共享的一部分物理内存.共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容. 共享内存实现分为两个步骤: 1、创建共享、打开共享内存,使用shmget函数 2、映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数 3. 分离共享内存 4. 控制、删除共享
2016-10-29 00:56:25 259
原创 消息队列2
消息队列就是一个消息的链表.可以把消息看作一个记录,具有特定的格式.进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。创建打开消息队列msgget()读数据从队列msgrcv()写数据到队列msgsnd()控制消息队列msgctl()目前主要有两种类型的消息队列: POSIX消息队列以及系统V消息队列,系统V消息队列目前被大量使用系统V消息
2016-10-28 16:20:02 284
原创 消息队列
消息队列就是一个消息的链表.可以把消息看作一个记录,具有特定的格式.进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。创建打开消息队列msgget()读数据从队列msgrcv()写数据到队列msgsnd()控制消息队列msgctl()目前主要有两种类型的消息队列: POSIX消息队列以及系统V消息队列,系统V消息队列目前被大量使用系统V消息
2016-10-27 00:14:59 315
原创 共享内存实现
共享内存是被多个进程共享的一部分物理内存.共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容. 共享内存实现分为两个步骤: 1、创建共享、打开共享内存,使用shmget函数 2、映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数 3. 分离共享内存 4. 控制、删除共享
2016-10-25 23:10:50 494
原创 管道2
1.数据传输 一个进程需要将它的数据发送给另一个进程2.资源共享 多个进程之间共享同样的资源3.通知事件 一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件4.进程控制 有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变管道是单向的、先进先出的,它
2016-10-24 22:22:00 315
转载 进程
创建打开消息队列msgget()读数据从队列msgrcv()写数据到队列msgsnd()控制消息队列msgctl()目前主要有两种类型的消息队列: POSIX消息队列以及系统V消息队列,系统V消息队列目前被大量使用系统V消息队列是随内核持续的,只有在内核重起或者人工删除时,该消息队列才会被删除#include #include key_t
2016-10-23 22:50:05 244
原创 管道
1.数据传输 一个进程需要将它的数据发送给另一个进程2.资源共享 多个进程之间共享同样的资源3.通知事件 一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件4.进程控制 有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变管道是单向的、先进先出的,它
2016-10-22 22:29:42 323
原创 堆和栈
堆和栈的通俗解释:我们先从大家比较熟悉的栈说起吧,它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。而堆就不同了,堆是一种经过排序的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个
2016-10-21 21:46:55 232
原创 单片机科创
#include "main.h"//****************************************IO¶Ë¿Ú¶¨Òå***************************************sbit SCK =P0^1;sbit CE =P0^0;sbit MISO =P0^2;sbit CSN =P0^3;
2016-10-20 22:29:06 683
原创 nrf
#include #include #define uchar unsigned char /***************************************************/#define TX_ADR_WIDTH 5 // 5字节宽度的发送/接收地址#define TX_PLOAD_WIDTH 4 // 数据通道有效数据宽度#de
2016-10-19 23:18:30 532
原创 读书笔记
第一章1.概述了µC/OS-II如何安装,目录的存放。2.µC/OS-II中的数据类型均为浮点型。3.OS_ENTER_CRITICAL() 和 OS_EXIT_CRITICAL():关中断和开中断是为了保护临界段代码。这些代码与处理器有关。关于宏的定义可以在OS_CPU.H中找到。以及进入正确宏的代码。4.全局宏的定义方式:#ifdef xxx_GLO
2016-10-18 20:46:51 229
原创 ds18b20
#include #include #include #include "./delay/delay.h"#include "./lcd/lcd.h"#include "./led/led.h"#include "./uart/uart.h"sbit ds = P2^0;sbit BEEP = P2^2;sbit LED = P2^3;bit
2016-10-17 20:39:57 453
原创 文件
1.creat 函数的作用: 创建一个文件; 函数的原型: int creat(const char *pathname, mode_t mode); 文件头: #include #include #include 返回值:成功:新的文件描述符; 出错: -1 创建几个函数:file_
2016-10-16 19:19:29 290
转载 c++
#include #include #include #include #include #include usingnamespace std; usingnamespace std::tr1; #define PRINT_RES
2016-10-16 00:31:46 309
转载 React Native
最近在学React Native,了解了一个原本iOS中非常重要的导航控件的使用方法。不过在React Nativa中,这个导航控件是不会自带顶部的导航栏的,也不会自动生成返回按钮之类的,只是提供了类似的导航功能,且原理也是出栈入栈的方式,也就是说同样是有着push和pop方法的。这里不讲React Native的基础了,直接讲一讲Navigator这个组件的基本使用方法。对于一个导航组件
2016-10-14 21:56:00 292
转载 java
一 java微信开发应具备的前提条件1 掌握xml解析工具Dom4j、Jdom中的任意一种微信所有的消息处理都是xml,因此xml的解析就显得尤为重要,这集中体现在文本消息、图文消息这两个部分2 掌握JSON开发工具类如json-libjson数据的处理在微信开发集中体现在自定义菜单接口、获取Access_Token、Oauth2.0网页授权等常用接口,此外第
2016-10-13 22:24:25 286
转载 整理框架
以下这些技巧分为三个不同那个的级别---基础,中级,高级。 基础 这些技巧你要总是想着实现在你开发的App中。 1. 用ARC去管理内存(Use ARC to Manage Memory) 2.适当的地方使用reuseIdentifier(Use a reuseIdentifier Where Appropriate) 3.尽可能设置视图为不
2016-10-12 23:11:15 616
转载 单片机spi总线
1、初步介绍 SPI 是一种高速的、全双工、同步通信总线,标准的 SPI 也仅仅使用 4 个引脚,常用于单片机和 EEPROM、FLASH、实时时钟、数字信号处理器等器件的通信。 SPI 通信原理比 I2C要简单,它主要是主从方式通信,这种模式通常只有一个主机和一个或者多个从机,标准的 SPI 是 4 根线,分别是 SSEL( 片选,也写作 SCS)、 SCLK( 时钟,也
2016-10-11 22:17:58 839
转载 c小知识
1.static关键字的作用和使用场景? 。static的作用——隐藏,变量所有未加static前缀的全局变量和函数都具有全局可见性,假设有两个文件,其中一个文件中定义全局变量a,int a = 10;如果在另一个文件中声明extern int a;则a = 10,在这个文件中可以对其进行使用。但是如果定义的全局变量前加上static,即就是:static int a = 10;
2016-10-10 21:56:39 209
转载 c++
一、rand() 函数名: rand 功 能: 随机数发生器 用 法: int rand(void); 所在头文件: stdlib.h 函数说明 : rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定 的范围里可看成
2016-10-09 15:46:50 245
原创 单片机
单片机 一.绘图,画板 2G,3G,4G均指信道载波的频率。 手工PCB和工业PCB的区别1.多了一层铺油。2.多了一层丝印。 一面有,一面没有,叫作单层版。电阻:R开头电容:C开头 绘图软件1.民用:①protel,protel99se,protel DXP,Altium2.军用,公司用:①Cadende spd,Mento
2016-10-08 22:52:00 412
原创 单片机
104 为10*10的4次方= 10^5PF = 100NF 焊盘:内径30mil 外径60mil 两层板过孔一般是内径12mil 外径24mil ctrl+m是量距离英文状态下按q ,单位就转化了 每个器件都有一个中心点中心点作用之一:可以看两个器件之间的距离 Edit ->Set Reference->设置中心点 ①走线
2016-10-07 18:05:59 269
原创 字符串
二:获取字符串的两种方法。以及malloc,calloc,ralloc的使用注意点获取字符串两种方法1.char ptr[100]; 1#include 2 #include 3 #define MAX_SIZE 1024 4 int main() 5 { 6 char *ptr=(char *)malloc(MAX_SIZE*sizeof(ch
2016-10-06 19:03:09 238
转载 golang
1.2与其他并发模型的对比 Python等解释性语言采用的是多进程并发模型,进程的上下文是最大的,所以切换耗费巨大,同时由于多进程通信只能用socket通讯,或者专门设置共享内存,给编程带来了极大的困扰与不便; C++等语言通常会采用多线程并发模型,相比进程,线程的上下文要小很多,而且多个线程之间本来就是共享内存的,所以编程相比要轻松很多。但是线程的启动和销毁,切换
2016-10-05 20:10:15 468
转载 算法
0. 学习模型评价标准 1)学习速度 2)推广能力/泛化能力/Generalize1. 反向传播算法计算全过程 目标:计算出权重和偏差的梯度(通过反向传播误差的方式)。 下例中,其激活函数为Sigmoid函数: 2. 随机梯度下降法计算全过程 目标:更新权重和偏差。
2016-10-04 20:29:30 914
转载 c语言
1、分布式表示(distributed representations)的需要在Yoshua Bengio开始的讲座上,他说“这是我重点讲述的幻灯片”。下图就是这张幻灯片:假设你有一个分类器,需要分类人们是男性还是女性,佩戴眼镜还是不佩戴眼镜,高还是矮。如果采用非分布式表示,你就在处理2*2*2=8类人。为训练精准度高的分类器,你需要为这8类收集足够的训练数据。但是,如
2016-10-03 17:26:06 247
原创 单片机
2G,3G,4G均指信道载波的频率。 手工PCB和工业PCB的区别1.多了一层铺油。2.多了一层丝印。 一面有,一面没有,叫作单层版。电阻:R开头电容:C开头 绘图软件1.民用:①protel,protel99se,protel DXP,Altium2.军用,公司用:①Cadende spd,MentorGraphics 过孔(via
2016-09-28 22:21:12 344
原创 指针
一:野指针:char *ptr;定一个指针,没有赋值,用NULL。char *ptr = NULL 即表示指向空,不能再做赋值,不能对0地址操作访问。 //#define NULL (void *)o如果出现段错误,看看对NULL有没有赋值。 如何避免野指针而不是杜绝:1.如果没有对指针进行赋值,可把指针指向空,可避免野指针2.如果出现段错误,可查看有没有对
2016-09-27 23:56:39 206
转载 编译
首先我们先来说一下静态库的建立静态库的创建:创建规则: gcc –c 源文件.c ar rcs 静态库名 目标文件1 目标文件2 rc:静态库不存在,就创建该库文件 s:更新库文件首先我们先建立一个cla.c的文件,以下是代码。这个小程序是实现加减乘除运算的。int main(){int a,b; int sum;scanf("%d%
2016-09-26 22:16:10 182
原创 c语言
char *ptr;定一个指针,没有赋值,用NULL。char *ptr = NULL 即表示指向空,不能再做赋值,不能对0地址操作访问。 //#define NULL (void *)o如果出现段错误,看看对NULL有没有赋值。 如何避免野指针而不是杜绝:1.如果没有对指针进行赋值,可把指针指向空,可避免野指针2.如果出现段错误,可查看有没有对NULL进行赋值
2016-09-25 22:22:04 340
原创 c
1.提高代码的复用性。2.提高代码的维护性。3.迭代开发,可扩展开发。 ①函数名:(自助解释性,即可读性)举例:delete_ch_count_min最多不能超过5个动词+名词get_user,insert_user函数名也是一个指针常量,保存的是函数存放的地址(函数的入口地址) ②函数调用1.通过函数名找到函数的入口地址2.给形参分配内存空间3
2016-09-24 18:21:54 207
原创 c
①封装数据 name是数组名,stu.name是一个指针常量,不能赋值。 结构体变量.成员名(*p).成员名p->成员名这三个是等价的,通常为了清晰,都用最后一个。 1#include 2 struct student 3 { 4 int id; 5 char name[20]; 6 int age;
2016-09-23 23:27:45 221
原创 c语言
左右法则:首先从从未定义的标识符开始阅读,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。举例:int a;整型变量 int *a;整型指针变量 int **a;整型指针的指针变量 int a[10];整型数组 int *a[10];整型指针数组
2016-09-22 23:13:30 226
原创 scanf,gets
1.scanf:一条语句可输入多个数据。默认以空格来跳到下一个输入变量,若完成了本次调用时用户本次规定的输入量,可以缓冲起来,继续输入下一次调用该函数时的数据,发出执行指令后做一起处理。该函数不接收空格,多个空格等同一个空格。可以在一次规定的变量之间加上其他的符号来自定义跳转指令。若完成了本次规定的输入量,回车表示执行本次要的操作;若未完成本次规定的输入量,则作用同于空格,是跳到下一个输入
2016-09-21 17:54:42 237
原创 封装以及注释
封装: 所谓封装,通俗地说,就是一个姑娘化了妆,只给你看她想让你看的那一面,至于里面是否刮了骨、垫了东西,不给你看。说到封装就得说隐藏,这是对兄弟概念;其实我理解隐藏是更深的封装,完全不给你看见,而封装可能是犹抱琵琶半遮面。封装在 C++ 语言中有 protected、 private关键字在语言层面上支持,而 C语言中没有这些。 C有结构体( struct),其实可以实现
2016-09-20 18:41:30 641
原创 指针
1.C语言具有出色的可移植性,能够在多种不同体系结构的软/硬件平台上运 行。2.c语言有简洁紧凑,使用灵活的语法机制,可以直接访问硬件。3.c语言具有很高的运行效率。①移植性:从一个平台切换到另一个平台,修改的地方越少,移植性越好。②汇编与c语言差别:汇编可以直接访问硬件,c语言要编译过后,才能访问硬件。对硬件的初始化,通常用汇编。汇编语言是低
2016-09-18 22:04:01 226
原创 c指针
char *ptr;定一个指针,没有赋值,用NULL。char *ptr = NULL 即表示指向空,不能再做赋值,不能对0地址操作访问。 //#define NULL (void *)o如果出现段错误,看看对NULL有没有赋值。 如何避免野指针而不是杜绝:1.如果没有对指针进行赋值,可把指针指向空,可避免野指针2.如果出现段错误,可查看有没有对NULL进行赋值
2016-09-17 23:03:18 194
原创 c字符
&&:如果第一个不成立,后面不判断。||:如果第一个成立后面一个不判断。位与& 位或| 取反~ 位异或^ 左移> 常量都是有符号的unsigned int mask = 0x80000000;//掩码 与运算:1.清0特定位(mask中特定位置为0,其他位为1,s=s&mask)。2.取某数中指定位(mask中特定位置为1,其他位为0,s=s&mask)。
2016-09-16 22:33:26 241
原创 c语言
1.如何把“123”输出123,“1234567”输出1234567. 提示:“123” ’1’-’0’=1 ‘2’-’0’=2 1*100+2*10+3*1=123#include#include#define MAX_SIZE 1024int main(){ int result=0; int i=0; int len=0;
2016-09-15 22:25:02 489 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人