• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






药剂学徒

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

2018年3月19日

树和二叉树
摘要: 树和二叉树的一些基本术语: 【树的定义】 树(Tree):n(n≥0)个结点构成的有限集合。当n=0时,称为“空树”;对于任一棵“非空树”(n>0),它具备以下性质: 树中有一个称为“根(Root)”的特殊结点,用r表示; 其余结点可分为m(m≥0)个“互不相交”的有限集T1,T2,...,Tm,其 阅读全文
posted @ 2018-03-19 22:41 药剂学徒 阅读(187) 评论(0) 推荐(0)
 
图
摘要: 一、图。 1、图的基本概念:图是由节点集合及节点间关系集合组成的一种数据结构。G = (V,E),其中,V = { x|x(某个数据元素的集合} E = {(x,y)|x,y( V}或者E ={<x,y>|x,y( V并且path(x,y) } 其中,(x,y)表示从x到y的一条双向通路,就是(x, 阅读全文
posted @ 2018-03-19 22:10 药剂学徒 阅读(180) 评论(0) 推荐(0)
 
动态查找表
摘要: 一、二叉排序树: 1、基本概念:(1)若左子树不空,则左子树上的所有节点的关键字值均小于根节点的关键字值;(2)若若右子树不空,则右子树上的所有节点的关键字值均大于等于根节点上的关键字值(3)左右字数也均为二叉排序树。 二叉排序树通常采用二叉链表存储结构。二叉排序树中的节点的结构体定义如下: 二叉排 阅读全文
posted @ 2018-03-19 16:53 药剂学徒 阅读(207) 评论(0) 推荐(0)
 
C++简单实现二叉排序树
摘要: 1 #ifndef _TOU_H_ 2 #define _TOU_H_ 3 #include <iostream> 4 using namespace std; 5 #include <cstdlib> 6 7 typedef 8 struct{ 9 int key; 10 }DataType; 1 阅读全文
posted @ 2018-03-19 16:52 药剂学徒 阅读(241) 评论(0) 推荐(0)
 
C/C++一个简单的哈希表实现
摘要: 1 #ifndef _HASHTABLE_H_ 2 #define _HASHTABLE_H_ 3 #include <iostream> 4 #include <cstdlib> 5 using namespace std; 6 7 typedef 8 enum { 9 Empty, Active 阅读全文
posted @ 2018-03-19 11:19 药剂学徒 阅读(5708) 评论(0) 推荐(0)
 
哈希冲突解决方法
摘要: 1、开放定址法:已发生哈希冲突的哈希地址为自变量,通过某种哈希函数得到一个新的空闲的内存单元的方法。 (1)线性探查法:是指从发生哈希冲突的地址开始,依次探查下一个地址(当地址为m-1的哈希表表尾时候,下一个探查地址是表首地址0,),直到找到一个空闲单元为止(当m>n时候一定能找到一个空闲单元) 他 阅读全文
posted @ 2018-03-19 11:15 药剂学徒 阅读(227) 评论(0) 推荐(0)
 
哈希表
摘要: 静态查找表和动态查找表中,数据元素的存放位置和数据元素的关键字之间没有任何关系,因此他们的查找是一系列的比较过程。 如果我们自己构造一个查找表,使得数据元素的存放位置和数据元素之间存在某种关系,则我们就可以直接通过数据元素的关键字得到该数据元素的存放位置。(这种查找表就是哈希查找表)我们把数据元素的 阅读全文
posted @ 2018-03-19 11:15 药剂学徒 阅读(185) 评论(0) 推荐(0)
 
linux下C线程池的实现
摘要: 什么时候需要创建线程池呐?简单地说,如果一个应用需要平凡的创建和销毁线程,而任务执行的时间有非常的短,这样线程的创建和销毁的带来的开销就非常不容忽视,这时也是线程池该出场的时候了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。 下面是linux系统下使用C语言创建的一个 阅读全文
posted @ 2018-03-19 08:09 药剂学徒 阅读(218) 评论(0) 推荐(0)
 
linux c线程池的原理讲解和代码实现(自行伸缩扩展线程数)
摘要: 什么是线程池?为什么要使用线程池? 阶段一、一个医院,每天面对成千上万的病人,处理方式是:来一个病人找来一个医生处理,处理完了医生也走了。当看病时间较短的时候,医生来去的时间,显得尤为费时了。 阶段二、医院引进了线程池的概念。设置门诊,把医生全派出去坐诊,病人来看病先挂号排队,医生根据病人队列顺序依 阅读全文
posted @ 2018-03-19 08:09 药剂学徒 阅读(345) 评论(0) 推荐(0)
 
linux C语言多线程库pthread中条件变量的正确用法逐步详解
摘要: linux C语言多线程库pthread中条件变量的正确用法: 了解pthread常用多线程API和pthread互斥锁,但是对条件变量完全不知道或者不完全了解的人群。 关于条件变量的典型应用,可以参考非常精简的linux线程池实现(一)--使用互斥锁和条件变量。 但是如果对条件变量不熟悉的请看本文 阅读全文
posted @ 2018-03-19 08:08 药剂学徒 阅读(1654) 评论(0) 推荐(0)
 
使用条件变量(多线程笔记)
摘要: 条件变量属性: 使用条件变量可以以原子方式阻塞线程,知道某个特定条件为真为止。条件变量始终与互斥锁一起使用。 使用条件变量,线程可以以原子方式阻塞,知道满足某个条件为止。对掉件的测试时在互斥锁的保护下进行的。 如果条件为假,县城通常会给予条件变量则阻塞,并于原子方式释放等待条件变化的互斥锁。如果一个 阅读全文
posted @ 2018-03-19 08:08 药剂学徒 阅读(829) 评论(0) 推荐(0)
 
linux C++多线程使用pthread_cond 条件变量
摘要: linux C++ 多线程使用pthread_cond 条件变量 1、多线程中经常使用到锁(pthread_mutex_t )来完成多个线程之间的互斥操作。 但是互斥锁有一个明显的缺点:只有两种状态:锁定合非锁定。 而条件变量则通过允许线程阻塞并等待另一个线程发送唤醒信号的方法弥补了互斥所的不足,他 阅读全文
posted @ 2018-03-19 08:06 药剂学徒 阅读(257) 评论(0) 推荐(0)
 
linux c 多线程编程--互斥锁与条件变量
摘要: 下面给出一个小的测试程序进一步了解互斥,mutex互斥信号量锁住的不是一个变量,而是阻塞住一段程序。如果对一个mutex变量testlock执行了第一次pthread_mutex_lock(testlock)之后,在unlock(testlock)之前的这段时间内,如果有其它线程也执行到了pthre 阅读全文
posted @ 2018-03-19 08:05 药剂学徒 阅读(542) 评论(0) 推荐(0)
 
linux C--多线程基本概念及API函数
摘要: 一、县城和进程之间的关系,与进程相比线程有哪些优点? 1、线程与进程之间的关系: (1)线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。(2) 一个进程由几个线程组成,线程与同属一个进程的其它线程共享进程所拥有的全部资源。(3)进程--资源分配的最小单位, 阅读全文
posted @ 2018-03-19 08:04 药剂学徒 阅读(258) 评论(0) 推荐(0)
 
linux C多线程编程
摘要: 1、进程与线程 进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。 线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对 阅读全文
posted @ 2018-03-19 08:04 药剂学徒 阅读(331) 评论(0) 推荐(0)
 
2.5 linux C 进程与多线程入门--(5)使用互斥量进行同步
摘要: 互斥: 简单的理解就是一个县城进入工作区之后,如果有其他的线程想要进入工作区,他就会进入等待状态,要等待工作区内的线程结束后才可以进入。 基本函数: (1)pthread_mutex_init()函数 原型: int pthread_mutex_init(phread_mutex_t *mutex, 阅读全文
posted @ 2018-03-19 08:03 药剂学徒 阅读(233) 评论(0) 推荐(0)
 
linux C多线程编程入门(基本API及多线程的同步与互斥)
摘要: 介绍:什么是线程,线程的优点是什么? 线程在unix下,被称为轻量级的进程,线程虽然不是进程,但却可以看作是unix进程的表亲,同一进程中的多条线程将共享该进程中的全部资源,如虚拟地址空间,文件描述服,和信号处理等等。但同一进程中的多个线程有各自的调用占(call stack),自己的寄存器环境(r 阅读全文
posted @ 2018-03-19 08:03 药剂学徒 阅读(839) 评论(0) 推荐(0)
 
2.4 linux C 进程与多线程入门--(4)简单多线程程序
摘要: 一、进程与线程: (1)线程是进程的一个实体,是cpu调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。 (2)进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它的进程产生影响,而线程只是一个进程中的不同的执行路径。县城有自己的堆栈和局部变量,单线程之间没有独立的地址空间,一个线 阅读全文
posted @ 2018-03-19 08:02 药剂学徒 阅读(219) 评论(0) 推荐(0)
 
2.3 linux C 进程与多线程入门--(3)信号
摘要: 概念: 信号是系统响应某些状况而产生的事件,进程在接受到信号时会采取相应的行动。信号可以明确的由一个进程产生发送到另外一个进程,用这种办法传递信息或协调操作行为。 进程可以生成信号,捕捉并相应信号或屏蔽信号。信号的名称是在头文件signal.h里定义。下面我列出一部分。 信号名称 说明 SIGALR 阅读全文
posted @ 2018-03-19 08:00 药剂学徒 阅读(184) 评论(0) 推荐(0)
 
2.2 linux C 进程与多线程入门--(2)等待进程
摘要: 问题:在创建进程那一节,我们看到,消息的输出是父子进程交替输出,且父进程在子进程之前结束。如果要安排父进程在子进程结束之后,可以调用wait函数。 函数说明: pid_wait (int stat_loc) 包含的头文件:#include<sys/types.h> #include<sys/wait 阅读全文
posted @ 2018-03-19 07:59 药剂学徒 阅读(196) 评论(0) 推荐(0)