自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Zxn、Sirius荣耀之路

做技术的、请走上坡路!

  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 手把手教你写_“华为”_的标准注释与文档,以及代码规范

注释为什么要写注释呢?为什么要写文档呢? 也许有人会这样问。但是我只想说如果你还在这样问,那么你不仅不是一个优秀的程序员,应该说你是不是程序员都应该受到质疑。先说一下注释的重要性: 在公司的开发中,我们要明白程序不是写给自己看的,也不是所有的代码都是自己写的,我们不仅需要看别人的代码而且还要把自己的代码交给别人看,团队看。也许还会在你离职以后交给你的接班人看。而且,就算是你写的程序

2016-04-13 01:39:58 4771

原创 循环队列的综合操作(出入队、获取队长度)C语言实现

线性表有顺序存储和链式存储,栈是线性表,所以也有两种存储方式。同样,队列作为一种特殊的线性表,也同样存在两种存储方式。 那就是顺序队列、链式队列两种 这里主要介绍顺序队列,链式队列我在上一篇博客中详细介绍了(因为用的比较多)。想看链式队列的话大家可以参考 http://blog.csdn.net/zxnsirius/article/details/51211953 与

2016-04-21 21:04:39 14119 1

原创 链队列的综合操作(详解、演示)C语言实现

队列的简介 和栈相反,队列(queue)是一种先进先出(简称FIFO)的线性表。它只允许在表的一端进行插入,而在另一端删除元素。 举个我们生活中最最常见的例子:银行排队(不管什么排队),当我们去银行办理业务的时候,我们要按照先来后到的规矩,先来的人先处理后面的人候着,先来的人处理完了之后先走….. 根据上面的例子大家应该可以很清楚的理解队列是什么了,再来看个示意图 和线性表类似

2016-04-21 18:56:20 4836

原创 链式栈的综合操作(创建、出入栈、取栈顶、判栈空)C++实现

对于栈的概念、图示以及顺序栈的实现我在上一篇博客进行了讲解和代码共享。如果大家需要看顺序栈的综合操作可以看我的上一篇博客。 http://blog.csdn.net/zxnsirius/article/details/51206766这里主要给大家讲一下链式栈的操作: 首先说一下链式栈与顺序栈的区别 顺序栈与链式栈的相同点。都是只能存栈顶获取或者插入元素。且二者的时间复杂度都是相同的O(

2016-04-21 13:05:37 3748

原创 顺序栈的(创建、出入栈、取栈顶、判断栈空)C语言实现

栈(stack)是限定仅在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾端有其特殊含义,称为栈顶(top),相应的,表头端称为栈底(bottom)。不含元素的空表称为空栈。 假设栈S=(a1, a2, ….,a3),则称a1为栈底元素,an为栈顶元素,栈中元素按a1,a2,…,an的次序进栈,退栈的第一个元素应该为栈顶元素。换句话说,栈的修改是按照先进后出的原则进行的,因此,栈又称为

2016-04-21 10:42:27 15730 3

原创 双向循环链表的头插、中插、尾插、删除、逆序顺序显示(C++实现)

我们在单链表中,有了next指针,这就使得我们要查找下一个结点的时间复杂度为O(1),可是如果我们要查找的是上一个结点的话,那么最坏的时间复杂度为O(n)。因为我们每次都要从头开始遍历。为了克服单向性这一缺点,双向链表就横空出示。双向链表是在单链表的每一个结点中再设置一个指向前驱结点的指针域。所以在双向链表中的所有结点都有两个指针域,一个指向直接后继,另一个指向其直接前驱。下面分享一下我写的双向链表

2016-04-19 20:39:43 1971

原创 循环链表的创建、插入、删除、逆序、显示(C++实现)

对于单链表,由于每个结点只存储了向后的指针。到了尾标志就停止了向后链的操作,这样,当中某一结点就无法找到它的前驱结点了。 对于单链表的操作大家可以看我的这篇博客http://blog.csdn.net/zxnsirius/article/details/51183055我们将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成了一个环,这种头尾相接的单链表称为单循环链表,简称循环链表

2016-04-19 16:21:09 1994 2

原创 单链表的头插、中插、尾插、删除、逆序、显示(C语言实现)

单链表的定义:单链表是一种顺序存储的结构。 有一个头结点,没有值域,只有连域,专门存放第一个结点的地址。 有一个尾结点,有值域,也有链域,链域值始终为NULL。 所以,在单链表中为找第i个结点或数据元素,必须先找到第i - 1 结点或数据元素,而且必须知道头结点,否者整个链表无法访问。单链表的综合操作:#include <stdio.h>#include <stdlib.h>/* 创建

2016-04-18 21:39:19 1735 1

原创 线性表的 顺序存储 与 链式存储 的区别与特点

那么线性表的顺序存储结构和线性表的链式存储结构的区别是什么呢?线性表的顺序存储结构的特点数组就是一个很典型的例子:它的特点是逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中的任意一个元素,它的存储位置可用一个简单、直观的公式来表示。然而,从另一方面,这个特点也铸成了这种存储结构的弱点:在插入和删除操作时,需要移动大量的元素。比如:我们要在数组中插入或者删除一个元素,这个位置后面的元素

2016-04-18 16:34:58 7771

原创 编译系统(预处理、编译、汇编、链接)-详解

让我们来用最简单的程序理解一下我们的编译系统#include <hello.c>int main(){ printf("hello world\n"); return 0;}hello程序的生命周期是从一个高级语言C语言程序开始,因为这种形式能够人读懂。然而,为了在系统上运行hello.c程序,每条C语句都必须被其他程序转化为一系列的低级机器语言指令。然后这些指令按照一种称为可执

2016-04-17 22:43:15 1345

原创 S3C2451_lcd屏显示操作详解代码_ARM

这是本人基于三星的S3C2451的miniARM开发板写的有关lcd的一下代码,包括了lcd初始化、lcd显示字符、描点、清屏等功能函数。提供给大家参考。/*LCD*/#define VIDCON0 (*(volatile unsigned *)0x4c800000) #define VIDCON1 (*(volatile unsigned *)0x4c8000

2016-04-16 00:38:06 1179 1

原创 S3C2451_nand flash_ARM操作读写源码

这是本人基于三星的S3C2451的miniARM开发板写的有关nand flash的一下代码,包括了初始化、忙判断、读取ID、读取状态、清除块、对页的读写、以及一个测试函数。提供给大家参考。/*typedef.h*/#ifndef _TYPEDEF_H_#define _TYPEDEF_H_#define U32 unsigned int#define U16 unsigned short#

2016-04-16 00:02:28 901

原创 S3C2451_GPIO初始化、置位、读取源码

以下是博主自己写的基于三星的S3C2451mini开发板的GPIO编程代码。 供大家参考学习/*GPIO宏定义*/#define GPACON (*(volatile unsigned long *)0x56000000)#define GPADAT (*(volatile unsigned long *)0x56000004)#define GPBC

2016-04-15 23:32:46 1452

原创 malloc、ralloc、calloc的用法,作用,区别,及实现原理

先来看一下三个函数的声明:void * malloc(usigned size);void * realloc(void *ptr, unsigned newsize);void * calloc(size_t numElements, size_t sizeofElement);它们都包含在#include <stdlib.h>头文件中,他们的返回值都是请求分配的地址,如果请求失败就返回NUL

2016-04-15 11:43:02 4518

原创 sizeof与strlen的区别:面试回答

示例:char *ptr = "hello world";char str[100] = "hello world";sizeof(ptr) = 4Bsizeof(str) = 100Bstrlen(ptr) = 11Bstrlen(ptr) = 11B面试回答总结:我认为sizeof()与strlen()有以下几个区别。strlen是一个函数,它测量的是字符串中除去’\0’以外的字符数;而

2016-04-15 09:56:09 452

原创 ANSIC标准定义的C语言预处理指令总结

另外ANSI标准C还定义了如下几个宏:__LINE__ 表示正在编译的文件的行号__FILE__ 表示正在编译的文件的名字__DATE__ 表示编译时刻的日期字符串 如:“23 dec 2015”__TIME__ 表示编译时刻的时间字符串 如: ”12:30:45“__STDC__ 判断该文件是不是宏定义成标准C程序如果编译器不是标准的,则可能不支持以上宏部分,或者根本

2016-04-15 09:27:49 1105

原创 C/C++什么是页抖动?

有些操作系统(如UNIX和增强模式下的Windows)使用虚拟内存,这是一种使机器的作业地址空间大于实际内存的技术,它是通过用磁盘空间模拟RAM(random—access memory)来实现的。在80386和更高级的Intel CPU芯片中,在现有的大多数其它微处理器(如Motorola 68030,sparc和Power PC)中,都有一个被称为内存管理单元(Memory Management

2016-04-15 01:06:33 576

原创 C/C++左值&右值

什么是左值(lvaule)?左值是指可以被赋值的表达式。左值位于赋值语句的左侧,与其相对的右值(rvaule,见 1.11)则位于赋值语句的右侧。每条赋值语句都必须有一个左值和一个右值。左值必须是内存中一个可存储的变量,而不能是一个常量。下面给出了一些左值的例子:int x;int *p_int;x=1;*p_int=5;变量x是一个整数,它对应于内存中的一个可存储位置,因此,在语句“x=1”

2016-04-15 00:46:19 507

原创 C++学习之旅内联函数

C++内联函数      内联函数是C++为提高程序运行速度所做的一项改进,常规函数与内联函数之间的主要区别不在于编写方式,而在于C++编译器如何将它们组合到程序当中。要了解内联函数与常规函数之间的区别。必须深入到程序内部。     编译的最终产品是可执行程序----由一组机器语言指令组成。运行程序时,操作系统将这些指令载入到计算机内存中,因此每条指令都有特定过的内存地

2016-04-14 10:11:07 701

转载 12年程序员职业生涯得到的12个经验教训:转

我已经在 ThoughtWorks 工作了 12 年。是不是有点不可思议?回首我的职业生涯,我想写一写我在这些年中经历的困难,以及总结得到的 12 个非常重要的经验教训。虽然我只选择了 12 个,但其实远远不止这个数字,但是我觉得 12 年 12 个经验教训更有韵味。  1. 工具不能代替思考  在我多年的咨询工作和与许多组织和管理者的共事中,我发现了修复问题的共同套路,那就是管理人员相信工具可以“

2016-04-13 17:11:32 554

原创 C++文本文件的IO

写入到文本文件中对于文本输入,C++使用类似于cout的东西。下面来复习一些有关将cout用于控制台输出的基本事实。 为文件输入做准备:必须包含头文件iostream头文件iostream定义了一个用于处理输出的ostream类头文件iostream声明了一个名为cout的ostream变量(对象)必须指出名称空间std;例如,为引用元素cout和endl;必须使用编译指令using或前缀

2016-04-13 15:46:06 871

原创 C/C++中字符函数库ctype.h

C++从C语言继承了一个与字符相关的、非常方便的函数软件包,它可以简化诸如确定字符是否为大写字母、数字、标点符号等工作,这些函数的原型是在头文件cctype(老式的风格是ctype.h)中定义的函数名称:isalnum() 返回值:如果参数是字母数字,即字母或者数字,该函数返回true函数名称:isalpha() 返回值:如果参数是字母,该函数返回true函数名称:isblank() 返回值:

2016-04-13 09:56:14 918

原创 C/C++条件操作符与错误防范

//开门见山if (num == 5){ ...}//如果手误写成了下面这样if (num = 5){ ...}许多的人可能都曾写出上面的这样代码。编译器看到这样的代码,只会将3赋给num。这时,你的if语句将永远成立,因为num = 5永远都是true。这是if语句中非常非常常见的、而又非常难以发现的错误。一般来说,编写让编译器能够发现错误的代码,比找出导致难以理解错

2016-04-12 21:45:59 411

原创 C++常见字符输入的做法

每次读取一个字符,直到遇到EOF的输入循环的基本设计如下:cin.get(ch);while (cin.fail() == false){ ... cin.get(ch);}可以在上述代码中使用一些简捷方式。!操作符可以将true或者false切换为true。可以使用次操作符将while测试改写为while (!cin.fail())cin.get(char)方法的返回值是一个

2016-04-12 21:08:20 647

原创 C++学习之旅eof()、fail()

eof()EOF 是 End Of File 的缩写。 在C语言中,它是在标准库中定义的一个宏,值为-1。 C语言中常利用下面这种方法,来判断输出文件内容。 例如: while ((c = fgetc(fp)) != EOF) { putchar (c); }那么在C++中,这种方式便得到了简化,因为有一个eof()函数到文件结尾可以返回true,而之前返回的均为false,

2016-04-12 20:47:39 3798

原创 C++学习之旅3种数据管理方式----自动存储、静态存储、动态存储

自动存储、静态存储和动态存储根据分配内存的方法,C++有3中分配内存的方式:自动存储、静态存储和动态存储(有时候也叫做自由存储空间或栈)。在存在的时间长短方面。以这3主公方式分配的数据对象各不相同。下面简要介绍一下每种类型自动存储在函数内部定义的常规变量使用自动存储空间,被称为自动变量(局部变量)。当它们所属的函数被调用时,会自动在栈空间上为它们分配存储空间。在该函数结束时栈空间释放、其生命也会自动

2016-04-11 19:48:15 944

原创 进程与线程大战几百回合?

进程 PK 线程我们先打个比方,多线程是十字路口多线程是平面交通系统,造价低,但是红绿灯多,老堵车,而多进程是则是立交桥,虽然造价高,上下坡多耗油,但是不堵车。这是一个抽象的概念。相信大家看完会有这种感觉。进程和线程是两个相对的概念,通常来说,一个进程可以定义程序的一个实例(Instance)。在Win32中,进程并不执行什么,它只是占据应用程序所使用的地址空间。为了让进程完成一定的工作,进程必须至

2016-04-08 20:57:44 563

原创 嵌入式数据库总结

嵌入式数据库嵌入式数据库是嵌入到应用程序中的轻量级数据库,其操作具有定时限制的特性。它是嵌入式系统的重要组成部分,也成为对越来越多的个性化应用开发和管理而采用的一种必不可少的有效手段。嵌入式数据库用途广泛,如用于消费电子产品、移动计算设备、企业实时管理应用、网络存储与管理以及各种专用设备,这一市场目前正处于高速增长之中。嵌入式数据库的背景嵌入式系统在现代人的生活中随处可见,其中软件的比例越来越大,软

2016-04-08 19:25:58 1723

原创 矩阵键盘扫描原理详解——单片机

矩阵键盘扫描原理详解根据原理图 键盘扫描方法是:行线P10~P13为输出线,列线P14~P17为输入线。一开始单片机将行线(P10~P13)全部输出低电平,此时读入列线数据,若列线全为高电平则没有键按下,当列线有出现低电平时调用延时程序以此来去除按键抖动。延时完成后再判断是否有低电平,如果此时读入列线数据还是有低电平,则说明确实有键按下。最后一步确定键值。现在我们以第二行的S5键为例

2016-04-07 20:12:00 61073 2

原创 单片机按键去抖原理

按键去抖由上图可以看出理想波形与实际波形之间是有区别的,实际波形在按下和释放的瞬间都有抖动的现象,抖动时间的长短和按键的机械特性有关,一般为5~10ms。通常我们手动按键然后释放,这个动作中稳定闭合的时间超过了20ms。因此单片机在检测键盘是否按下时都要加上去抖动操作,有专用的去抖动电路,也有专门的去抖动芯片,但通常我们采用软件延时的方法就可以解决抖动问题。/* 软件去抖 */

2016-04-07 20:02:38 3060

原创 表达式计算器(逆波兰法)栈操作(C语言实现)

可能很多的同学在学数据结构的时候。说到栈,都会有一道很经典的题目,那就是用栈来实现计算器。我们都知道普通的计算写起来是很简单的,但是如果涉及到左右括号以及加减乘除组成的运算式的时候则写起程序时便不那么容易了。 比如:(1+(2*(1+3)/2)+10) 面对上面这个表达式,要想写出这样一个计算器的程序就显得比较困难,有一种先进后出的数据结构———栈就可以很好的解决这个问题。那么是不是我们有了栈之

2016-04-07 19:03:41 10790 8

原创 C/C++程序员桌面壁纸---简尚黑

该壁纸是我自己设计的、可做情侣桌面。喜欢拿去。无水印,想要高清的请留言邮箱简尚黑、酷炫

2016-04-07 10:34:26 10722 16

转载 上帝视角-我是一个线程『转』

第一回 初生牛犊我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里我发现了很多和我一模一样的同伴。我身边的同伴0x6900 待的时间比较长,他带着沧桑的口气对我说:“我们线程的宿命就是处理包裹。把包裹处理完以后还得马上回到这里,否则可能永远回不来了。”我一脸懵懂,“包裹,什么包裹?”“不要着急,马上你就会明白了,我们这里是不养闲人的。”果然,没多久,屋子的门开了,

2016-04-06 18:18:55 862 2

原创 C++学习之旅-{共用体一游}

C++学习之旅-{共用体一游}一开始学C语言的时候(初学),对于共用体的概念和用法都很模糊,因为很少去用也没有细细的研究。之后深入学习才揭开共用体的面纱。(相信很多人也和我有相同的经历)共用体(union)它是一种数据格式,直白的讲它能够存储不同的数据类型,但是只能同时存储其中的一种类型。//结构struct online{ int num; long phone; do

2016-04-06 12:25:43 506

原创 C++学习之旅-结构struct

C++学习之旅-结构struct结构在我们的编程中是非常重要的,比如假设我们要编程来存储 斯蒂芬_库里(我喜欢的篮球明星)的姓名、工资、身高、体重、平均分、三分(他三分简直爆炸)、命中率、助攻次数等等。希望能有一种数据格式可以将这些信息存储在一个单元中。没用过结构体的同学(就像很久以前的我)可能会第一个想到数组。但是我会告诉你数组不能完成这项任务,因为虽然数组可以存储多个元素。但是所有的元素的类型必

2016-04-05 21:34:59 1402

原创 C++学习之旅-string类

C++学习之旅-string类在C语言的学习中对于一些字符串的操作我们可能经常使用的是数组或者指针来存储字符串并执行相应的操作。但是总是会发现操作起来会有一些繁琐(相对与C++来说)在学习了C++之后我发现string类使用起来比数组方便了很多很多。 ISO/ANSI C++标准通过添加string类扩展了C++库,因此现在可以用string类型的变量(准确的应该称它为对象)而不是字符数组来存储

2016-04-05 18:16:37 656

原创 PCB设置参考规范

1、 所有的晶体和晶振下面第二层没有信号线的过孔和走线. 2、走线不可以出现任意角度线,我们以45°和135°为标准 3、同一网络的两根线交叉时,不要交叉成直角和锐角,可以 用45°或135°线过渡 4、pad拉线形式5、所有通孔不得上焊盘,保证通孔距离焊盘2mil或以上,否则会导致焊盘变形或漏锡现象,进而SMT不良。6、相邻PIN是同一网络关系的线不可直连,应将线拉出PIN再

2016-04-05 15:33:40 581

原创 C++学习之旅get、getline的用法

C++学习之旅get、getline的用法面向行的输入:cin.getline()。 该函数读取整行,它使用通过回车键输入的换行符来确定输入结尾。要调用这种方法,可以使用cin.getline().该函数有两个参数。第一个参数是用来存储输入行的数组名称,第二个参数是要读取的字符数。如果这个参数为20,则该函数最多读取19个字符,余下的空间用于存储自动在结尾处添加的空字符’\0’.getline()

2016-04-05 13:25:53 1234 1

原创 vim分屏操作

启动分屏 1.使用大写O参数进行垂直分屏 $ vim -On file1 file2 ...2.使用小写o参数进行水平分屏 $ vim -on file1 file2 ...注: n是数字,表示分屏的数量关闭分屏 1.关闭当前窗口 ctrl+w c2.关闭当前窗口,如果只剩最后一个,则退出vim ctr

2016-04-01 16:32:37 430

原创 C++学习之旅记录hello world

一个很有意思的故事,有一个程序员老了,闲来无事的他开始找自己的兴趣爱好。他发现写毛笔字是一个非常不错的休闲娱乐方式,于是它买来了文房四宝。然后准备好一切就绪工作,大笔一挥写下了一个字符串“hello world!”哈哈,我还是来写我的第一个 C++ hello world 吧从输入输出开始#include <iostream> //头文件、也叫包含文件int main(){ u

2016-04-01 14:04:43 550

Python全套收发邮件处理带附件等处理模块代码直接可用

xxx@FDK24 邮件处理模块 [main] $ tree . ├── ReadMe.txt ├── 发送邮件 │   ├── 发送带附件的邮件 │   │   ├── dailylog.txt │   │   └── sendemailattach.py │   └── 发送普通邮件 │   ├── dailylog.txt │   └── sendemail.py └── 接收邮件 ├── 接收任意标题邮件并检测特定正文内容 │   └── ReceiveEmailtext.py ├── 接收过滤特定标题邮件并下载附件 │   └── ReceiveEmailAttach.py └── 接收过滤特定标题邮件并解析内容 └── ReceiveEmailSPTitletext.py

2022-03-03

空空如也

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

TA关注的人

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