自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 C/C++字符或字符串的输入

c中: 1、scanf(“%c”,a);//输入一个字符,a代表的是一个字符 2、scanf(“%s”,a);//输入一个字符串,a代表的是一个字符数组的名字,不接受空格的 3、getchar();//输入一个字符 4、gets(a);//输入一个字符串,a代表的是字符串的名字,可以接搜空格的! c++中: 1、cin>> 输入数字:以空格或回车结束 输入字

2017-08-22 00:27:47 635

转载 大整数乘法

“` //大整数乘法u=x*10^m+y; v=w*10^m+z;uv=xw*10^2m+(xz+wy)*10^m+yz;大整数乘法1: large_integer Prod(large_integer u,large_integer v) { large_integer x,y,w,z; int n,m; n=maximum(u的位数,v的位数); if(u==0||v

2017-07-29 19:55:17 676

转载 堆排序

堆排序的过程就是将无序的序列,放到准完全二叉树中,然后再调整键的大小,使得满足堆性质; 将根节点删除,将最底部最右侧的结点放到根节点上,调整满足堆性质;依次递推下去,最终得到删除的结点顺序是有序的; 伪代码表示:struct heap{ keytype S[1...n];//S的索引范围为1至n int heapsize; //取0...n}void Siftdown(hea

2017-07-26 15:07:17 184

转载 选择排序

和冒泡一样,也是找排序好的部分与未排序的部分之间关系伪代码: SelectionSort(int*A,int n)   for i from 0 to N-1     minj=i

2017-07-25 21:52:19 178

转载 排序之冒泡排序

冒泡排序主要思想是,依次比较分别获得每趟中未排序的最大值或最小值伪代码: BubbleSort(int *A,int n) flag=1; while flag //每次遍历时,若存在逆序对,必须重新排序,直至全部有序为止 flag=0 for i from N-1 to 1

2017-07-25 16:22:46 221 1

原创 排序

排序算法要注意: 1.复杂度和稳定性; 2.额外的内存空间; 3.输入数据特征是否会对复杂度造成影响;排序稳定性是指在一个序列中存在2个或以上键值相等的元素时,排序后相对位置关系不变; 通俗的说:排序前在前面的,排序后依旧在前面;1.1插入排序 实例:打扑克牌时抓牌时(正常人的做法); 从左到右,从小到大(也可反过来)遍历,将合适的数据插入伪代码: insertSort(in

2017-07-25 15:51:56 169

原创 拟训练自己编程能力

深感自己编程能力较差,先从基本的数据结构开始,提高自己编程能力; 虽然临近毕业,项目压力大,还是希望自己能够努力做到每天AC一道题;并把相关的东西,总结归纳(很重要);先做个引子,希望后面再回来看时,一切都很值得;

2017-07-25 11:15:27 303

转载 C# AutoResetEvent

该类主要是用来从一个线程向另一个线程发送通知的; 构造函数中使用布尔参数,指示是否将初始状态设置为终止状态的类; 常用的方法: Reset():将事件状态设置为终止,从而导致线程受阻; Set():将事件设置为有信号,从而允许一个或多个等待线程继续执行; WaitOne():阻止当前线程,直到当前WaitHandle收到信号; WaitOne(Int32,Boolean):阻止当前的线程

2017-03-23 11:27:16 279

转载 C# SemophoreSlim

它是Semaphore的轻量级版本,主要是针对本地资源的访问; 信号量有两种类型:本地信号量和已经命名的系统信号量,前者是针对本地的应用程序,后者显示在整个操作系统也使用于进程间的同步; SemaphoreSlim轻量级取代Semaphore,而不使用windows内核信号量的类,它不支持已命名的系统命名信号量;故而其作为单个应用程序中进行同步的建议信号量; 其用法和Semapho

2017-03-23 10:31:27 393

转载 C# lock

在MSDN上对该关键的使用说明的很清楚 lock关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句然后释放该锁; Object thisLock = new Object(); lock (thisLock) { // Critical code section } lock确保当一个线程位于代码的临界区时,另一个线程不进入临界区,如果其他线程试图进入锁定的代码,

2017-03-22 17:47:15 360

转载 C# var

这个比较简单,即你不用显示的声明某个变量的类型,其会在编译时自动确定其类型; 但有以下需要确定; 1.必须在定义时初始化 2.一旦初始化,不可再给其赋值不同类型的值; 3.var要求是局部变量; 4.var在效率上和使用强类型方式定义变量一样;

2017-03-22 16:29:19 308

转载 初识readonly关键字

首先查看MSDN中提供的说明: readonly关键字是可以在字段上使用的修饰符,当字段声明包括readonly,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中;我个人觉得上面一句话就是限定了你用readonly修饰的字段的赋值操作的范围; 就以其给出的样例分析:代码如下: class Age { private readonl

2017-03-22 16:21:22 1595

转载 信号量

信号量和互斥量相同,不过互斥量每次只允许一个线程访问共享资源,而信号变量则是允许一个或多个线程同时存取共享资源。线程需要同步的原因:1.线程之间竞争共享的资源; 2.为完成某个任务而需要协作; 通过互斥可完成线程之间的公共资源竞争,事件完成协调;而信号量则将互斥和事件结合起来,同时解决了竞争和协作问题。 信号量两大核心操作是提高计数值和降低计数值。DOWN操作是检查信号量的计数值大于0,则线程

2016-12-04 15:24:12 225

转载 事件

1.定义:简单地说,事件是主要在线程之间传递信号,通过事件来控制一个线程是处于执行状态还是处于挂起状态;事件和互斥量还是有所区别的: 1.事件主要是用于协调两个或多个线程之间的动作,如:一个线程等待某个事件的发生,另一个事件则在某个事件发生后产生一个信号,通知正在等待的线程。而互斥量主要是保证在任一时刻只有一个线程在使用共享的资源,什么时刻运行哪个线程是随机的,是由操作系统决定的,用户没有决定权,

2016-12-04 12:44:14 502

转载 临界段

临界段只能用于一个进程中不同线程的通信; 与互斥量的不同体现在两点上: 1.互斥量是内核变量,所以可以跨进程使用,当必须在进程间使用时,需要用互斥量;临界段不是互斥变量,他是属于进程内部的,对于进程间的通信无力; 2.临界段用于进程间不同线程的通信效率更高,首选临界段; IntializeCriticalSection():创建一个临界段; DeleteCriticalSection(

2016-12-04 10:09:42 1238

转载 多进程间的互斥对象通信

代码程序进程1:#include<iostream>#include <Windows.h>#include <process.h>//使用进程using namespace std;HANDLE hMutex;//定义一个句柄给互斥对象使用DWORD WINAPI Mythread(LPVOID lp1){ char ct1; WaitForSingleObject(hMut

2016-12-03 20:57:14 358

转载 互斥及其应用

互斥量和临界段的区别在于:临界段只能用于单个进程中的多个线程的同步,互斥量则可用于多个进程中线程的同步;一个有效的同步算法满足如下: 1.不存在两个线程同时访问临界区的情况; 2.同步方法对CPU速度和处理器数目没有任何假设; 3.运行于临界区外的线程不能阻塞其他线程; 4.不能有因要进入临界区而无限等待的线程;.互斥的同步机制:当一个线程获得互斥量后,其他所有要获取同一互斥量的线程都处于阻

2016-12-03 20:05:04 409

转载 线程间通信

1.线程间的通信主要涉及4个问题: 1)线程间如何传递信息; 2)线程之间如何同步,以使一个线程的活动不会破坏另一个线程的活动,以保证计算结果的正确性; 3)当线程之间存在依赖关系,如何调度线程的处理顺序; 4)如何避免死锁;四种方法主要为: 1.全局变量法; 2.参数传递法; 3.消息传递法; 4.线程同步法;全局变量法: 线程函数既可以是全局函数也可以是类中静态函数;参数传递法

2016-12-02 22:53:19 175

转载 _beginthread和_beginthreadex()

对应的还有:endthread()和endthreadex()都是用来创建线程的创建和结束的;区别在于 1.形式上看,_beginthreadex()更像CreateThread()._beginthreadex()比_beginthread()多了3个参数; 2.创建线程函数不同:_beginthreadex()的线程函数必须使用——Stdcall调用方式,而且必须返回一个unsigned i

2016-12-02 17:55:16 991

转载 ExitThread

ExitThread调用后就会释放系统分配的堆栈,结束线程,如果线程是进程中最后一个,则会终止进程; 终止一个线程并不意味着从操作系统删除线程对象,操作系统只是在关闭与此线程关联的句柄将线程对象引用计数减一,当线程对象的引用计数为0才删除线程对象; SetThreadPriority():设置线程的优先级,有两个参数,第一个是线程的句柄,第二个是想要设置的优先级数; GetThreadPrio

2016-12-02 17:44:53 3260

转载 CloseHandle

1.为啥要在创建Handle后立马关闭; 首先我们都是在创建线程赋给一个句柄,然后立马结束句柄; 这是为啥?1.线程和线程句柄不是一个东西,线程是在CPU上运行的,线程句柄是一个内核对象。我们可以通过句柄来操作线程;但是其生命周期不同。线程生命周期是从线程函数开始执行到return,而线程句柄的生命周期是从CreateThread到CloseHandle(); 2.内核对象都是系统资源,用了要

2016-12-02 17:14:34 204

转载 多线程学习1

因为项目需要学习多线程,从最基本的概念学起: 进程:就是正在运行的应用程序;抽象的讲,进程是一些所有权的集合,拥有自己的内存、CPU运行时间等一系列资源,为线程运行提供必要环境。每个进程都有自己的地址空间和动态分配的内存以及文件、线程和其他一些模块。进程是正在运行程序的抽象。一个进程的状态有如下几种: 1.运行 2.就绪(当前能够运行但由于系统正在运行其他进程而需要等待) 3.堵塞(由于得不

2016-12-01 16:15:22 227

转载 #define与typedef的区别

1.typedef就是类型定义,比如你给一个已经存在的类型(基本类型或者组合类型?)一个别名, 作用:1)简化复杂类型的声明,在常用的地方带上一大串类型名,显得太冗余,为了图方便,用个简单的名称代替: typedef bool (*FuncPointer)(int ,double);2)定义与平台无关的类型 对于以前的代码可能在不同的平台上运行,会存在一些差异,为了有更好的可操作性,在不同的平

2016-11-30 22:59:23 211

翻译 卡特兰序列

在学习到数据结构-栈的时候,遇到栈的栈混洗情况,对于栈中n个元素,存在的情况为Catalan数在组合数学中发现卡特兰数是怎么来的: 首先看一个题目: 对于n个-1和n个+1组成的2n个序列,a1,a2,….,a2n; 满足其部分和: a1+a2+a3+…ak>=0(k=1,2,….,2n) 满足这样的序列的个数就等于第n个Catalan数 Cn=(2nn)n+1\

2016-11-26 21:25:10 976

翻译 C# 插入排序

原理: 一排序列,选择第一个作为基底,选取第二张,若比第一张小,则交换,否则顺序排放;取第三个,与第一张和第二张比较,排放;。。。以此类推; C#代码为: class Program { static void Main(string[] args) { int[] arr = new int[] { 9, 1

2016-09-26 20:56:51 205

原创 C# 选择排序

1.原理: 下一个要讨论的排序算法是选择排序。这种排序是从数组的起始处开始,把第一个元素与数组中其他元素进行比较。然后,将最小的元素放置在第 0 个位置上,接着再从第 1 个位置开始再次进行排序操作。这种操作会一直到除最后一个元素外的每一个元素都作为新循环的起始点操作过后才终止: 具体代码可实现为: class Program { static void Main(

2016-09-26 19:55:19 264

转载 PCI 预取和非预取内存映射

博主在学习PCI 手册时遇到这两概念,查阅http://blog.csdn.net/ykqnjust/article/details/6236389该博文时,学习了下。自己的总结如下: 1)PCI设置PCIBARx[3]来配置该模式的选择,而该数值又取决于在引导时间的本地配置寄存器的设定; 2)可预取指的是CPU 可缓存它的内容并且对它做所有类型的优化;可预取性内存是指存储器空间的可预取能力。例

2016-05-31 20:45:09 3214

统计学习方法

李航 经典的大数据处理书籍,书中介绍典型的一些机器学习算法和介绍,可供广大机器学习人员参考和学习

2018-10-03

BH1750应用手册

BH1750芯片的datasheet

2016-05-31

空空如也

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

TA关注的人

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