自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络通信 基础知识

【1】组播     单播方式只能发给一个接收方。     广播方式发给所有的主机。过多的广播会大量占用网络带宽,造成广播风暴,影响正常的通信。     组播(又称为多播)是一种折中的方式。只有加入某个多播组的主机才能收到数据。     多播方式既可以发给多个主机,又能避免象广播那样带来过多的负载(每台主机要到传输层才能判断广播包是否要处理)【2】网络地址     A类地址...

2018-10-16 14:22:58 281 1

原创 OpenCV(for Python)视频分析 Meanshift 和 Camshift

目标• 本节我们要学习使用 Meanshift 和 Camshift 算法在视频中找到并跟踪目标对象Meanshift 算法Meanshift 算法的基本原理是和很简单的。假设我们有一堆点,和一个小的圆形窗口,Meanshift 算法就是不断移动小圆形窗口,直到找到圆形区域内最大灰度密度处为止。# -*- coding: utf-8 -*-"""Create

2018-01-04 14:07:17 1716

原创 STM32F1xx 固件库 下载地址

STM32F1xx 固件库 下载地址http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries.html?querycriteria=productId

2017-07-31 11:08:18 19825 2

转载 PC端windows与虚拟机linux之间文件的传输方式总结

PS:转载地址http://www.cnblogs.com/wxjnew/archive/2013/06/05/3118808.html当然,windows与linux之间文件的传输的两种方式有很多,这里就仅仅列出工作中遇到的,作为笔记;方法一:安装SSH Secure Shell Client客户端安装即可登录直接拖拉到linux,如果从linux下导出文件则需要如此操作文件

2017-07-17 22:35:29 3396

原创 链表翻转/逆序

// 链表翻转// 整个过程即:对开始为第一个的元素(固定,地址不变)之后的元素 断链、头插的过程;void list_reversal1(linknode *H)    // 从第二个元素(第三个节点)开始,依次头插     {linknode *p = H->next,*q = NULL;   // p-开始时第一个元素的地址 , q- p下一个元素的地址whi

2017-03-17 13:45:21 316

转载 container_of函数

首先,我定义了一个字符设备结构体struct    globalmem_dev{    struct cdev   my_cdev;            //字符设备之基础结构体     unsigned char mem[GLOBALMEM_SIZE];        struct semaphore sem;/};接下来我实例化了一个该设备的指针对象struc

2016-12-14 18:12:34 428

原创 Python语言编程(一)

Python的特色简单易学,功能强大。注重的是如何解决问题,而不是编程语言的语法和结构自由、开放:Python是自由开放软件/源码之一可移植性:在不同的系统不需要更改就可以适应系统环境解释性:Python语言写的程序不需要编译成二进制代码,你可以直接执行源代码Python既支持面向过程的编程,也支持面向过程的编程。可嵌入性:你可以把Python嵌入到C/C++程序,从而向你

2016-12-10 23:48:12 337

转载 文件IO - O_DIRECT和O_SYNC详解

O_DIRECT和O_SYNC是系统调用open的flag参数。通过指定open的flag参数,以特定的文件描述符打开某一文件。这两个flag会对写盘的性能有很大的影响,因此对这两个flag做一些详细的了解。先看一个open函数的使用例子.123456/* Open new or

2016-12-09 10:41:29 8337

转载 为什么用函数指针

一般的时候用不到,主要还是一个简化结构和程序通用性的问题,也是实现面向对象编程的一种途径。简单的总结为:1.       实现面向对象编程中的多态性2.       回调函数举两个例子:1. 你现在要实现一个文件系统,但是文件的介质有硬盘和软盘,那么它们各自的读写函数实现肯定是不一样的。好比  int a_write(char *data_stream, int LBA

2016-12-09 10:19:22 998

原创 查询字符串中字母和数字的个数

***************判断ASCII的方式,查询字符串中字母、数字的个数*****************int i,zm=0,sz=0;char s[200];gets(s);for(i=0;s[i];i++){ if(s[i]>='A'&&s[i]='a'&&s[i]='z') zm++; else if(s[i]>='0'&&s[i]='9

2016-12-07 22:15:13 1143 1

原创 TCP/IP协议传输中的三次握手和四次挥手

*******************TCP/IP协议中的三次握手和四次挥手**********************1、建立连接协议(三次握手)  (1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。  (2)服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志S

2016-12-07 21:53:05 300

原创 epoll脚本

epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符集合来传递结果而不用每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合。

2016-12-07 21:19:30 201

原创 Tcp、udp区别 基于包,基于流 ?

1:用户数据报协议(UDP),UDP协议是面向无连接的不可靠服务,在传输数据之前不需要先建立连接。远地主机的运输层收到UDP报文后,不需要给出任何确认,传输数据快,不能广播。2:传输数据报协议(TCP),TCP 则提供面向连接的可靠服务。在传输数据前必须先建立连接,数据传输完毕后要释放连接,传输数据慢,能广播。

2016-12-07 21:18:06 4078

原创 数组和链表区别

数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。但是增加和删除一个元素对于链表数据结构就只要修改元素中的指针就可以了。如果应用需要经常插入和删除元素你就需要用链表数据结构了。

2016-12-07 21:16:34 253

原创 进程、线程的区别

面试题常常会出现的一道题:    一个程序至少有一个进程,一个进程至少有一个线程;    进程在执行过程中拥有独立的内存单元,而多个线程共享内存;    进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位,线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。进程和线程的主要差别在

2016-12-07 21:08:59 184

原创 strcat的实现

#include "stdio.h"    char *strcat(char *str1, char *str2)  {      assert((str1==NULL)||(str2==NULL)) ;    char *pt = str1;      while(*str1!='\0') str1++;      while(*str2!='\0') *str1+

2016-12-07 20:24:23 322

原创 strcpy的实现

char * mystrcpy(char *dst,char *src){char * p = dst;while(*src != '\0'){*dst = *src;src++;dst++;}*dst = '\0';return p;}

2016-12-07 19:56:13 219

原创 strcmp的实现

int mystrcmp(char *s1,char *s2){while(*s1 == *s2 && *s1 != '\0' && *s2 != '\0'){s1++;s2++;}if(*s1 return -1;else if(*s1 > *s2)return 1;elsereturn 0;}

2016-12-07 19:46:31 268

原创 C语言——字符串翻转

一、指针的方式实现char* strrev2(const char* str){       char* tmp = new char[strlen(str) + 1];        strcpy(tmp,str);       char* ret = tmp;       char* p = tmp + strlen(str) - 1;       while

2016-12-07 18:20:06 292

原创 assert();宏的使用

这是个定义在 中的宏, 用来测试断言。一个断言本质上是写下程序员的假设, 如果假设被违反, 那表明有个严重的程序错误。例如, 一个假设只接受非空指针的函数, 可以写: assert(p != NULL);一个失败的断言会中断程序。断言不应该用来捕捉意料中的错误, 例如 malloc() 或 fopen() 的失败。

2016-12-07 17:10:03 258

原创 函数memset的实现

原型: void *memset(void *buffer, int c, int count);功能:把buffer所指内存区域的前count个字节设置成字符c。void *memset(void *src, intc, size_t count){ assert(src!=NULL); char *tmpsrc=(char*)src; while(count--

2016-12-07 17:01:01 742

原创 哈希表原理

根据关键码值直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中某一个位置来访问记录,以加快查找的速度;这个映射函数叫做散列函数,存放记录的数组叫做散列表。哈希表是一个以空间换取时间的数据结构,理想情况下的时间复杂度为O(1)。 散列函数的构造方法:(1)直接定址法     取关键字或关键字的某个线性函数值为散列地址;即H(key)=key或H(key) = a•key

2016-12-07 16:59:14 287

原创 什么是大端什么是小端字节序?网络字节序是大端还是小端的?

小端:低地址存放低字节,高地址存放高字节; 大端:高地址存放低字节,低地址存放高字节;网络字节序是:大端。

2016-12-07 16:57:26 7400

原创 什么是死锁,产生的原因,如何避免死锁

死锁是指多个进程因竞争资源而造成的一种僵局,若无外力作用这些进程将永远不可能向前推进。原因:竞争资源,进程推进顺序非法。必要条件:互斥条件,请求和保持条件,不剥夺条件,环路等待条件。处理死锁:预防死锁,避免死锁,检测死锁,解除死锁如何避免:如果所有并发事务按同一顺序访问对象,则发生死锁的可能性会降低;避免事务中的用户交互;保持事务简短并在一个批处理中。

2016-12-07 16:56:11 682

转载 Socket与http、tcp客户端与服务器连接的区别!

1、TCP连接 要想明白Socket连接,先要明白TCP连接。手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手”: 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待

2016-12-05 20:04:27 610

转载 关于Linux 内核中五个主要子系统的介绍

1.进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。2.内存管理(MM):允许多个进程安全的共享主内存区域。Linux的内存管理支持虚拟内存,即在计算机中运行的程序,

2016-12-05 18:24:05 3056

原创 Linux设备驱动之模块

【1】linux内核模块   可在运行的时候添加到内核中的代码称为模块【2】模块和应用程序的区别                            应用程序               模块1. 运行空间          用户空间               内核空间2. 入口函数          main                     加载函数3.

2016-12-01 22:35:30 217

原创 sqlite数据库

*****************sqlite数据库指令*********************     安装数据库     sudo  dpkg -i *.deb     系统命令, 以‘.’开头     .help  帮助     .exit  退出     .quit  退出     .schema  查看表的结构     .table  查看表的信息

2016-11-28 22:57:38 192

原创 网络知识 及 TCP、UDP编程实现过程

***************网络预备知识*********************Socket        是一个编程接口        是一种特殊的文件描述符 (everything in Unix is a file)        并不仅限于TCP/IP协议        面向连接 (Transmission Control Protocol - TCP/IP)

2016-11-28 21:04:03 320

原创 Linux进程的5个数据区域---》bss段、数据段、代码段、堆、栈

其实在程序运行时,由于内存的管理方式是以页为单位的,而且程序使用的地址都是虚拟地址,当程序要使用内存时,操作系统再把虚拟地址映射到真实的物理内存的地址上。所以在程序中,以虚拟地址来看,数据或代码是一块块地存在于内存中的,通常我们称其为一个段。而且代码和数据是分开存放的,即不储存于同于一个段中,而且各种数据也是分开存放在不同的段中的。5个段进程(执行的程序)会占用一定数量的内

2016-11-28 16:22:11 3600

原创 make管理工具和Makefile

【1】Make管理工具执行make命令,make管理工具会找Makefile文件,并把Makefile文件中的第一个目标作为最终的目标,当我们的Makefile中有多个目标的时候,我们可以自己指定要生成的目标。Make将只编译改动的代码文件,而不用完全编译举例:  在命令行执行  make  targetname【2】Makefile通常makefi

2016-11-28 16:14:00 259

原创 shell 脚本

【1】Shell脚本的本质   Shell命令的有序集合1、建立脚本文件  vi  filename.sh2、修改脚本文件的权限 chmod  777 filename.sh3、执行指定目录下的脚本文件./filename.sh打开脚本文件之后,第一行写入#!/bin/bash其中  # 是注释【2】Bourne Shell有如下四种变量:

2016-11-28 16:04:28 245

转载 busybox 根文件系统制作

busybox是构造文件系统最常用的软件工具包,它被非常形象地称为嵌入式Linux系统中的“瑞士军刀”,因为它将许多常用的Linux命令和工具结合到了一个单独的可执行程序(busybox)中。  虽然与相应的GNU工具比较起来,busybox所提供的功能和参数略少,但在比较小的系统(例如启动盘)或者嵌入式系统中已经足够了。  busybox在设计上就充分考虑

2016-11-28 11:14:47 990

转载 volatile关键字的使用

volatile的本意是“易变的” 由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化,但有可能会读脏数据。当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。精确地说就是,优化器在用到这个变量时必须每次都小心地重新从内存里读取这个变量的值,而不是使用保

2016-11-27 22:33:33 159

转载 const关键字的作用

我只要一听到被面试者说:"const意味着常数"(不是常数,可以是变量,只是你不能修改它),我就知道我正在和一个业余者打交道。只要能说出const意味着"只读"就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下Saks的文章吧。)如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的声明都是什么意思?

2016-11-27 22:17:35 1413

原创 static关键字的作用

**********static关键字作用总结**************一.最重要的一个作用:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。static修饰的全局变量和函数只能在本文件内使用,外部文件不可调用二.第二个作用:保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也

2016-11-27 21:47:43 293

原创 Linux内核源码目录结构

在对Linux内核学习的同时,我们首先应该对Linux内核源码的目录有一定的了解,下面是内核源码目录的大概结构说明,根据内核版本的不同略有差异,不过不影响学习。以2.6.28.6内核源码为例:arch目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录,还有arm、powerpc、

2016-11-27 20:41:13 414

原创 Linux操作系统的组件

Linux内核、Shell、文件系统、应用程序

2016-11-27 20:22:59 1260

原创 ASCII码

ASCII码        字符数据主要指数字、字母、通用符号、控制符号等等,在机器内都被变换成计算机能够识别的二进制编码形式。        国际上被普遍采用的一种编码是美国国家信息交换标准代码,简称为ASCIIa. 第一部分有00H到1FH共32个,一般用来通讯或作为控制之用,有些字符可显示于屏幕,有些则无法显示在屏幕上。      b. 第二部分是由20H到7FH共9

2016-11-27 19:33:19 327

原创 计算机语言基础知识

/******************************计算机语言基础知识******************************/【18】计算机基本结构(1) 冯·诺依曼模型a. 计算机硬件由5部分构成(输入设备、输出设备、存储器、运算器、控制器)b. 存储程序的思想:系统的运行过程就是按照一定的顺序不断执行存储器中的程序指令的过程(2) 存储器的分类   

2016-11-27 19:30:45 1817

空空如也

空空如也

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

TA关注的人

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