文档章节

一些名词解释

0-1
 0-1
发布于 2014/04/07 18:53
字数 1341
阅读 103
收藏 2

1.   用户线程和内核线程

     用户线程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。

     内核线程(kernel-level treads)指需要内核的参与,由内核完成线程的调度。其依赖于操作系统核心,由内核的内部需求进行创建和撤销。其优点是:较好的并行能力,一个进程内的线程阻塞不会影响该进程内的其他线程;缺点则是线程管理的开销过大,缺乏灵活性。int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)

2.  函数模板和类模板

    模板(template)是一个将数据类型参化的工具,它提供了一种将代码与数据类相脱离的机制,即代码不受具体的数据类型的影响。

    函数模板可以用来创建一个通用功能的函数,以支持多种不同形参,简化重载函数的设计。

    类模板只能显示调用。

3.  泛型编程

    泛型编程就是以独立于任何特定类型的方式编写代码,而模板是泛型编程的基础。

4.  工厂模式

    简单工厂模式(静态工厂方法)、工厂方法模式、抽象工厂模式 。

    通过传入的参数判断决定创建哪一个产品的实例,封装了对象的创建,客户端只管消费,实现了对责任(模块)的分割。

5.  递归和回溯

    递归,递推和回归,不断调用自身函数。代码简洁易明,耗内存。

    回溯,利用递归实现深度优先搜索的一种算法思想。

6.  单例模式

       一种常用的软件设计模式,其核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

7.  搜索算法

    深度优先(depth-first search, DFS):通过栈实现。递归,回溯。

    广度优先(breadth-first search, BFS):通过队列实现。迭代。

8. 同步和异步

     所谓同步执行模式,是指语句在同步执行模式下,将始终保持对程序流的控制,直至 程序结束。如查询操作,客户机上的应用程序在向服务器发出查询操作的指令后,将 一直等待服务器将查询结果返回客户机端,然后才继续进行下一步操作。

     所谓异步执行模式,是指语句在异步执行模式下,各语句执行结束的顺序与语句执行开始的顺序并不一定相同。快,充分利用资源,但是编写和控制较为复杂。        

      同步是阻塞模式,异步是非阻塞模式。

9.  数据段,代码段,

    BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。
 
    数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。 


    代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
 
    堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)
 
    栈(stack):栈又称堆栈,是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。


    一个程序本质上都是由 bss段、data段、text段三个组成的。

+-------------+-----------
|   .bss      | (未初始化的全局变量)
+-------------+-- 数据段
|   .data     | (已初始化的全局变量)
+-------------+-----------
|   .rodata   |
|_____________| 代码段
|   .text     |
+-------------+-----------

© 著作权归作者所有

上一篇: 了解XMPP
下一篇: 大数计算
0-1

0-1

粉丝 93
博文 268
码字总数 145989
作品 0
福州
程序员
私信 提问
每日 30 秒 ⏱ 谁敢与我一战

简介 一天 30 秒 ⏱ 一段代码 ✍️ 一个场景 🖼 在 优雅插入数组 一文中大家最多的评论就是 “能不能加个基准测试”。小二不是不喜欢加基准测试而是现在硬件设备的性能越来越快了,有时候一...

zhangxiangliang
03/24
0
0
shallow size && retained size

所有包含Heap Profling功能的工具(MAT, Yourkit, JProfiler, TPTP等)都会使用到两个名词,一个是Shallow Size,另一个是 Retained Size. 这是两个在平时不太常见的名词,本文会对这两个名词...

eric_zhang
2012/11/13
80
0
TypeScript 中的字面量是什么意思

前言 阅读 TypeScript 文档的时候,字面量 这个词出现的频率还挺高,虽然不理解它的意思也不影响阅读,但看到 字面量 扎堆出现的时候,还是想知道 字面量 到底是什么意思。 TypeScript 文档片...

NingBo
04/12
0
0
对于账务系统开发的一点儿理解

做支付系统建设也有一段时间了,受累于各种事务性工作,一直没有沉下心好好研究和理解下其中较为核心的部分,账务便是一个。对于开发账务系统的人来说,系统的阅读和学习一些会计知识是必须的...

orpheus
2016/03/07
0
0
[译]C语言实现一个简易的Hash table(1)

说明 翻译过来就是,是一种提供了类似于关联数组的数据结构,可以通过执行搜索、插入和删除操作。由一些列组成,而每一个都是由的形式组成。存储时都是以存储的,因为当要定位一个时,需要把...

4fun
01/10
11
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 年迈渔夫遭黑帮袭抢

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享Elvis Presley的单曲《White Christmas》: 《White Christmas》- Elvis Presley 手机党少年们想听歌,请使劲...

小小编辑
今天
1K
16
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
12
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部