自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (2)
  • 收藏
  • 关注

原创 嵌入式编程

嵌入式编程面试题汇总C语言测试是招聘嵌入式系统程序员必须且有效的方法。嵌入式编程平时系统接触得较少,但像const、volatile、static等关键字其实是经常碰到的,趁此机会在这里总结一番(另外浮点数的表示方式很值得一探究竟,类型转换等均与内存的分配有很大的关联···)。

2017-10-11 19:47:24 717

原创 操作系统面试题目选汇(小的知识点)

操作系统面试题目选汇操作系统面试例题主要包括:进程、线程、内存管理、垃圾回收和缓存等诸多方面进程Q1:解释操作系统原理中的作业、进程、线程、管程各自的定义。 A:作业:用户在一次解题或一个事务处理过程中要求计算机系统所工作的集合,包括-用户程序、所需要的数据及控制命令等。作业是由一系列有序的步骤组成的。进程:一个程序在一个数据集合上的一次运行过程。所以一个程序在不同数据集合上运

2017-10-10 17:11:23 586

原创 伪代码编程过程

伪代码编程过程     从微观上关注编程过程--关注创建单独的类及其子程序的特定步骤,讲述伪代码编程过程(ppp,Pseudocode Programming Process),有助于减少设计和编写文档所需的工作量,同时提高这两项工作的质量。v 创建类和子程序的步骤概述迭代的过程:a. 先对类做一个总体设计,列出这个类内部的特定子程序b. 创建这些子程序c. 从整体上复查这

2017-09-23 17:10:43 1618

原创 不常见的数据类型

不常见的数据类型² 结构体² 指针² 全局数据 结构体:使用结构体的理由:v 用结构体来明确数据关系v 用结构体简化对数据块的操作v 用结构体来简化参数列表v 用结构体来减少维护 指针:  指针的使用是现代编程中最容易出错的领域之一。对指针的运用具有其固有的复杂性,很多常见的安全问题,特别是缓冲区溢出,其产生都可以追溯到错误运用指针上去。

2017-09-22 14:36:24 618

原创 调试

调试摘自:《代码大全2》第23章 调试 Debugging概念:调试是确定错误根本原因并纠正错误的过程。科学的调试方法:1. 通过可重复的试验收集数据2. 通过相关数据的统计构造一个假说3. 设计一个实验来证明或反证这个假说4. 证明或反证假说5. 根据需要重复进行上面的步骤找出缺陷的有效方法:1) 将错误状态稳定下来2) 确定错误的来源(即那个

2017-09-21 14:01:56 249

原创 命名规则

C的命名规则:Ø c和ch是字符变量;Ø i和j是整数下标Ø n表示某物的数量Ø p是指针Ø s是字符串Ø 预处理宏全部大写(ALL_CAPS)。通常也包括typedef。Ø 变量名和子程序名全部小写(all_lowercase)。Ø 下划线(_)用做分隔符:letters_in_lowercase C++的命名规则:Ø i和j是整数下标Ø p是指针

2017-09-10 20:41:13 480

原创 变量名的力量

第11章 变量名的力量①选择好变量名的注意事项②为特定类型的数据命名③命名规则的力量④非正式命名规则⑤标准前缀⑥创建具备可读性的短名字⑦应该避免的名字 v 选择好变量名的注意事项该名字要完全、准确地描述出该变量所代表的事物。通常 对变量的描述就是最佳的变量名。Ø 以问题为导向:一个好记的名字反映的通常都是问题,而不是解决方案。表达what,而不是how。

2017-09-07 10:17:49 287

原创 实习时光缩影

2017.7.3-2017.9.5,为期2个月的实习时光过去了,在这里进行一下简单的总结···前期--找实习阶段     还记得开年3月份来找实习,那种忙忙碌碌各种投的情景仍然历历在目,投了较多的公司 有互联网的:阿里、腾讯等;也有通信设备商:华为、思科;还有半导体的新思科技等,其他的还有很多很多,在这就不一一列举了···海投接下来的就是一大波的笔试、面试,其中挂了很多,很受打击,当然也有

2017-09-06 15:38:30 878 2

原创 如何实现双向链表的插入、删除操作

如何实现双向链表的插入、删除操作  循环单链表的出现,虽然能够实现从任一结点出发沿着链能找到其前驱结点,但是时间复杂度为O(N)。如果希望能从链表中快速确定某一个结点的前驱,另一个解决方法就是在单链表的每一个结点再增加一个指向其前驱的指针ptr。这样形成的链表中就有两条方向不同的链,被称为双向链表(Double Link List),简称双链表。它是由头指针head唯一确定的。带头结点的双

2017-08-20 11:07:44 7399

原创 《机器学习实战》学习笔记(三)之K-近邻算法

《机器学习实战》学习笔记(三)之K-近邻算法本文内容:K-近邻分类算法从文本文件中解析和导入数据使用Matplotlib创建扩散图归一化数值概述:简单的说,k-近邻算法采用不同特征值之间的距离方法进行分类。优点:精度高、对异常值不灵敏、无数据输入假定缺点:计算复杂度高、空间复杂度高适用数据范围:数值型和标称型工作原理:存在一个样本数据集合,也称作训练样本集,并且

2017-08-13 16:59:17 300

原创 《机器学习实战》学习笔记(二)

《机器学习实战》学习笔记(二)简单定义:将无序的数据转换成有用的信息主要任务:将实例数据划分到合适的分类中;回归,用于预测数值型数据。关键术语 : 监督学习-知道预测什么。如:分类和回归非监督学习-数据没有类别信息,也不会给出目标值。如:聚类--将数据集合分成由类似的对象组成的多个类的过程;密度估计--将寻找描述数据统计值的过程监督学习的用途

2017-08-12 18:17:25 231

原创 《机器学习实战》学习笔记(一)

《机器学习实战》学习笔记“数据挖掘十大算法”(2007.12-Journal of Knowledge and Information System)1. C4.5决策树2. K-mean(k-均值)3. 支持向量机(SVM)4. Apriori5. 最大期望算法(EM)6. PageRank算法7. AdaBoost算法8. K-近邻算法(kNN)9.

2017-08-12 16:38:10 396

原创 Volatile 在程序设计中的作用

编译器优化的时候可能会出现问题,如当遇到多线程编程时,变量的值可能因为别的线程而改变了,而该寄存器的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致。例如,在本次线程内,当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;当以后再取变量值时,就直接从寄存器中取值;当变量值在本线程里改变时,会同时把变量的新值复制到该寄存器中,以便保持一致。

2017-07-12 21:41:17 399

原创 如何在O(N)的时间复杂度内找出数组中出现次数超过了一半的数

题目:如何在O(N)的时间复杂度内找出数组中出现次数超过了一半的数例:在数组{1,3,3,3,4}中,3即为所求。方法1:建立hash表,key为数组不同的元素,value为出现的次数,找出value大于len/2的值即可,时间复杂度为O(n)。

2017-04-27 22:29:16 786

原创 如何找出数组中重复次数的元素

题目:如何找出数组中重复次数最多的数例:数组{0,2,2,2,2,2,2,3,3,3,4,5,6,7,8}中,出现次数最多的元素为2。方法1:以空间换时间,采用hash表的思想。C实现:#include #define MAX 1024void CountMax(int a[],int len, int b[]){ int count[MAX]={0}; int i, m

2017-04-26 23:10:01 805 1

原创 在有序数组中,统计某一元素出现的次数

题目:在排序数组中,找出给定元素出现的次数。例如:有序数组[1,2,3, 4, 5, 5, 5, 5,6,7,8]中,5出现的次数为4次。C程序实现:1.直接比较统计,O(N)的时间复杂度。int findCount(int a[],int len ,int key){ int i,count = 0; for(i=0;i<len;i++) { if(key==a[i]

2017-04-25 21:28:15 5612

原创 分别用递归和非递归实现二分查找算法

题目:分别用递归和非递归实现有序数组的二分查找算法 1.递归 C代码实现:#include int binarySort(int a[],int start ,int end, int key){ if(a==NULL || end <0) //切记,对于数组,操作之前的第一步一定是判断该数组是否存在 return -1; if(start > end) ret

2017-04-21 22:14:40 763

原创 如何用递归算法判断一个数组是否递增

题  目 :如何用递归算法判断一个数组是否递增C实现:#include bool isIncrease(int a[], int len){ int n = len - 1; if(n==0) return 1; else { if(a[n]>=a[n-1]) isIncrease(a,len-1); else return 0; } }

2017-04-20 20:46:42 1033

原创 用递归实现数组求和

题目:给定一个len长度的数组,用递归的方法求数组和C代码实现:#include #include int getSum(int a[],int len) { if(len == 0) //要考虑空数组的情况 { return 0; } else { int n = len-1; if(n==0) { return a[n

2017-04-19 20:36:11 8307 1

原创 常用5种设计模式介绍

1单例模式在某些情况下,有些对象只需要一个就可以了,即每个类只需要一个实例。例如,一台计算机上的可以连接多台打印机,但是该计算机上的打印程序只能有一个,这里就可以通过单例模式来避免两个打印作业同时输出到打印机中,即在整个的打印过程中只有一个打印程序的实例。单例模式(单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在)。单例模式确保某

2017-04-15 20:22:58 3083

原创 设计模式

设计模式1.概念:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编写的、代码设计经验的总结。 2.目的:使用设计模式的目的是为了代码重用,避免程序大量修改,同时使代码更容易被他人理解,并且保证代码的可靠性。设计模式使得代码编制真正的工程化,设计模式可以说是软件工程的基石。 3.分类:GoF(Gang of Four)23种经典设计模式。

2017-04-15 20:16:18 217

转载 大数的阶层(N!)

对于大数来说,一个数的阶乘是非常大的,同样,一个int类型的整数,他的阶乘就有可能会很大。就拿50来说,他的阶乘位数是65位,就已经远远超过了long long int类型的最大值。这时候,我们要通过字符串的方法,来进行阶乘的运算。当然,需要注意的是:我们所求一个数的阶乘,这个数是在int范围内的,5000的阶乘位数是16326位。其方法是:首先,我们是可以

2017-03-21 23:09:48 655

转载 sizeof()详解

一、sizeof的概念    sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等,它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。 操作数可以是一个表达式或括在括号内的类型名。 操作数的存储大小由操作数的类型决定。    二、sizeof的使用方法  1、用于数据类型      sizeof使用形式: sizeof(type)

2017-03-14 10:38:59 1568

转载 x&(x-1)

x&(x-1)的学问:求下面函数的返回值int func(x) {     int countx = 0;     while(x)     {           countx ++;           x = x&(x-1);      }     return countx; } 假定x = 9999。 答案:8思路:将x转化为2进制,看

2017-03-08 20:55:02 419

转载 再谈虚函数

对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。 在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了 这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一

2017-03-08 14:28:44 201

转载 C++中的虚函数

多态是指使用相同的函数名来访问函数不同的实现方法,即“一种接口,多种方法”,用相同的形式访问一组通用的运算,每个运算可能对应的行为不同。C++支持编译时多态和运行时多态,运算符重载和函数重载就是编译时多态,而派生类和虚函数实现运行时多态。运行时多态的基础是基类指针,基类指针可以指向任何派生类对象。虚函数与基类指针在一起时会有奇妙的现象...1.虚函数是为了实现多

2017-03-08 13:20:48 206

原创 OSI七层模型

本文简单地介绍了OSI七层模型概念以及每层相应的功能···

2017-02-27 20:44:45 236

原创 进程间通信(IPC)的几种方式

本文简单介绍了8种进程间的通信方式

2017-02-26 14:41:57 1002

转载 多线程同步的4种机制

现在流行的进程线程同步互斥的控制机制,其实是由最原始最基本的4种方法实现的:  1临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。   2互斥量:为协调共同对一个共享资源的单独访问而设计的。   3信号量:为控制一个具有有限数量用户资源而设计。   4事件:用来通知线程有一些事件已发生,从而启动后继任务的开始。

2017-02-26 13:57:55 2510

原创 进程/线程->多线程

1.基本概念:进程:具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。 例如,用户运行             自己的程序,系统就创建一个进程,并为它分配资源(包括各种表格、内存空间、磁盘空间、I/O设备等),然后该进程就被放             入到进程的就绪队列,进程调度程序选中它,为它分配CPU及其他相关资源,该进程就被运行起来。

2017-02-25 20:38:53 249

转载 程序到进程

计算机如何执行进程呢?这是计算机运行的核心问题。即使已经编写好程序,但程序是死的。只有活的进程才能产出。我们已经从Linux进程基础中了解了进程。现在我们看一下从程序到进程的漫漫征程。

2017-02-24 14:26:06 244

转载 文件操作

名词解释文件:数据就是0和1的序列。这样的一个序列可以存储在内存中,但内存中的数据会随着关机而消失。为了将数据长久保存,我们把数据存储在光盘或者硬盘中。根据我们的需要,我们通常会将数据分开保存到文件这样一个个的小单位中(所谓的小,是相对于所有的数据而言)。文件系统(file system):文件在逻辑上组织形式,它以一种更加清晰的方式来存放各个文件,通常为树形(Tree)结构。

2017-02-21 19:53:09 324

转载 Linux开机启动(bootstrap)流程

计算机开机是一个神秘的过程。我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面。然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一个命令行或者错误信息。了解计算机开机过程有助于我们修复开机可能出现的问题。最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序。

2017-02-20 20:01:36 1251

原创 排序--归并排序

基本原理:利用递归和分治的思想。原理见下图: 利用归并排序,对数组[10 4 6 3 8 2 5 7]进行排序(升序)。 复杂度分析:分割的次数为logN,共有N个数,时间复杂度为(N*logN)。代码实现-C语言。

2017-02-17 22:53:48 258

原创 排序--(单向)冒泡排序

基本原理(升序):对于给定的N个数据,从第一个数据开始依次对相邻的两个数据进行比较,数据大于后面时,交据位置,进行一轮比较和位置交换后,最大的数将位于第N 位;再对前(N-1)个数据进行比较和位置交换;重复该过程直至比较的数据只剩下最后一个。复杂度:平均时间复杂度为O(N^2)代码实现(C语言)void BubbleSort(int *a, int n){ int i , j; i

2017-02-16 20:38:08 287

原创 排序——插入排序

插入排序(升序):基本原理:对于给定的一组数据,假定第一个数据自成一个有序序列,其余的均为无序序列。从第二个数据开始,按照数据的大小依次将当前数据插入到之前的有序序列中,直至到最后一个数据插入完成。算法复杂度:在最坏情况下,数组完全逆序,插入第2个元素时要考察前1个元素,插入第3个元素时,要考虑前2个元素,……,插入第N个元素,要考虑前 N - 1 个元素。因此,最坏情况下的比较次

2017-02-15 20:51:19 203

原创 常用排序算法的复杂度总结

常用排序算法的复杂度归纳:

2017-02-15 20:48:15 267

原创 排序——选择排序

选择排序--基本原理:(升序)对数据进行遍历,找出最小的数与第一个数进行位置交换;接着从第二个数开始进行遍历,从中再找出最小的数与第二个数进行位置交换;重复该过程,直至只剩下一个数为止。算法分析:交换移动数据次数少,每趟的比较次数相同,第i趟的排序的次数为(n-i)次;   交换次数为0~n-1(有序~逆序)。最终的排序时间是比较与交换的次数,算法的时间复杂度为O(n*n)。

2017-02-14 14:51:25 266

原创 动态规划(DP)之最长上升子序列问题

C++实现动态规划(DP)之最长上升子序列问题   问: 输入n个正整数,求其最大上升子序列的数值#include #include #include using namespace stdint main(){        intn;        cin >> n;

2017-02-13 22:27:38 323

莫烦大大的增强学习的代码实例

莫烦大大的增强学习的代码实例````

2017-08-06

空空如也

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

TA关注的人

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