1. partial block operations are inefficient. The operating system has to “fix up” your I/O by ensuring that everything occurs on block-aligned boundaries and rounding up to the next largest block   用户级程序可能在某一时刻仅仅读写一个字节,这是极大的浪费.Each of those one-byte…
1. 内核提供三种不同的方式来记录时间 Wall time (or real time):actual time and date in the real world Process time:the time that a process spends executing on a processor 包括用户时间user time 和 系统时间system time Monotonic time:use the system's uptime (time since boot) for th…
1. Scatter/Gather I/O a single system call  to  read or write data between single data stream and multiple buffers This type of I/O is so named because the data is scattered into or gathered from the given vector of buffers Scatter/Gather I/O 相比于 C标准…
1.每个Linux进程都有一个最大打开文件数,默认情况下,最大值是1024 文件描述符不仅可以引用普通文件,也可以引用套接字socket,目录,管道(everything is a file) 默认情况下,子进程会获得其父进程文件表的完整拷贝   2.打开文件 open系统调用必须包含 O_RDONLY,O_WRONLY,O_RDWR 三种存取模式之一 注意 O_NONBLOCK模式 ) ) 3.读文件 read系统调用会有以下结果: (1)返回值与请求数len相同,所有len字节都存储在buf…
1. 信号是软中断,提供处理异步事件的机制 异步事件可以是来源于系统外部(例如用户输入Ctrl-C)也可以来源于系统内(例如除0)   内核使用以下三种方法之一来处理信号: (1) 忽略该信号.SIGKILL和SIGSTOP不能被忽略. (2) 捕捉并且处理该信号.The kernel will suspend execution of the process’s current code path and jump to a previously registered function. SI…
1. 进程地址空间 Linux中,进程并不是直接操作物理内存地址,而是每个进程关联一个虚拟地址空间 内存页是memory management unit (MMU) 可以管理的最小地址单元 机器的体系结构决定了内存页大小,32位系统通常是 4KB, 64位系统通常是 8KB 内存页分为 valid or invalid: A valid page is associated with an actual page of data,例如RAM或者磁盘上的文件 An invalid page is…
1. Threading is the creation and management of multiple units of execution within a single process 二进制文件是驻留在存储介质上,已被编译成操作系统可以使用,准备执行但没有正运行的休眠程序 进程是操作系统对 正在执行中的二进制文件的抽象:已加载的二进制.虚拟内存.内核资源 线程是进程内的执行单元 processes are running binaries, threads are the smal…
1. 进程调度 the process scheduler is the component of a kernel that selects which process to run next. 进程调度器需要使 处理器使用率最大化,并且提供 使多个进程并发执行的虚拟   Deciding which processes run, when, and for how long is the process scheduler's fundamental responsibility.   时间…
1. Linux系统编程的三大基石:系统调用.C语言库.C编译器 系统调用:内核向用户级程序提供服务的唯一接口.在i386中,用户级程序执行软件中断指令 INT n 之后切换至内核空间 用户程序通过寄存器告知内核执行系统调用的所需参数   2. API 和 ABI API:application programming interface 定义源码级接口,必须确保源码级兼容 ABI:application binary interface 定义二进制接口,必须确保二进制兼容 ABI包括:调用约定…
1. 文件和元数据 每个文件都是通过inode引用,每个inode索引节点都具有文件系统中唯一的inode number 一个inode索引节点是存储在Linux文件系统的磁盘介质上的物理对象,也是LInux内核通过数据结构表示的实体 inode存储相关联文件的元数据   ls -i 命令获取文件的inode number   /* obtaining the metadata of a file */ #include <sys/types.h> #include <sys/stat.…
1. 进程是unix系统中两个最重要的基础抽象之一(另一个是文件) A process is a running program A thread is the unit of activity inside of a process   the virtualization of memory is associated with the process, the threads all share the same memory address space   2. pid The idle…
 Linux防火墙iptables学习笔记(三)iptables命令详解和举例 2008-10-16 23:45:46 转载 网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能有所帮助.网管员的安全意识要比空喊Linux安全重要得多. iptables -Fiptables -Xiptables -F -t mangleiptables -t mangle -Xiptables -F -t natiptables -t nat -X首先,把三个表清空,把自建的规则清空.…
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Programming Second Edition学习笔记(三) 补充 hector_slam 记录一下rplidar传感器在ROS(indigo)配置使用等. Indigo集成的rplidar基本功能驱动等. 参考文档 http://wiki.ros.org/rplidar 需要下载的包和版本号hy…
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Programming Second Edition学习笔记(三) indigo rplidar rviz slam 记录一下rplidar传感器在ROS(indigo)配置使用等. Indigo集成的rplidar基本功能驱动等. ×基本安装× 通过下面命令安装: --sudo apt-get ins…
Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即:将一个字符流的输出对象变成字节流的输出对象. InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变成字符流的输入对象. 一般在操作输入输出内容就需要使用字节或字符流,但是有些时候需要将字符流变成字节流的形式,或者将字节…
回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切法律责任.           2: 本书对应的jdk为 jdk8版本           3:因为内容容量太大,编辑器无法承受于是给拆分了以下版本: <Java 8编程官方参考教程(第9版).pdf>学习笔记(一)--->第一章到六章学习笔记:讲:java的历史和演变.Java概…
物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus 物联网 (IoT) 不只是新技术,还是与旧技术的集成,其关键在于通信.可用的通信方法各不相同,但是,各种不同的协议在将海量“事物”连接到互联网时发挥着重要的作用. 本文介绍了两种物联网补充协议:用于短距离设备连接的本地协议 Modbus 以及支持物联网进行全局通信的可扩展互联网协议“消息队列遥测传输 (MQTT)”. Modbus 是一个串行通信协议,首次出现于 1979 年,是连接行业设备实际使用的标准协议. MQTT 早在 2…
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(Automation Executables) 2.Office加载项(COM or Excel Add-In) 3.Office文档代码或模板(Code Behind an Office Document or Template) 4.Office 智能标签(Smart Tags) 本次我们将学习使…
Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/54894451 本文出自[赵彦军的博客] InputStream |__FilterInputStream |__BufferedInputStream 首先抛出一个问题,有了InputStream为什么还要有BufferedInputStream? Buffere…
目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结构. Timer Timer的容器. TimerQueue私有接口介绍. 更新定时器 时序图 TimerQueue源码 TimerQueue使用示例 muduo网络库学习笔记(三)TimerQueue定时器队列 TimerQueue是EventLoop的组件之一,可以提供定时任务,和周期任务. 本章…
python3.4学习笔记(三) idle 清屏扩展插件python idle 清屏问题的解决,使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?在stackoverflow看到这样两种答案:1.在shell中输入import osos.system('cls')这种方法只能在windows系统中cmd模式下的python shell 才管用(因为cls的命令是针对cmd的),在python idle直接返回了一个0的值. 2.定义一个cls的函数,每次使用输入cls()即…
KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51cto.com/703525/1288795kvm虚拟化学习笔记(二)之linux kvm虚拟机安装 http://koumm.blog.51cto.com/703525/1289627kvm虚拟化学习笔记(三)之windows kvm虚拟机安装http://koumm.blog.51cto.com…
一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- 另外,在 Linux 中对于权限的设置有三组对象,列举如下: 所有者:u,User 所属组:g,Group 其他用户:o,Other (2)查看文件权限 我们可以使用 ls -l 文件名 命令查看一个文件的权限,其中每一行显示内容的第一个字段就是对文件权限的描述 例如: user@ubuntu:~…
Linux进程线程学习笔记:运行新程序                                         周银辉 在上一篇中我们说到,当启动一个新进程以后,新进程会复制父进程的大部份上下文并接着运行父进程中的代码,如果我们使新进程不运行原父进程的代码,转而运行另外一个程序集中的代码,这就相当于启动了一个新程序.这里的代码我们可以理解成一个可执行程序. 所以,要运行一个新程序,需要最基本的两步: 1,创建一个可运行程序的环境,也就是进程. 2,将环境中的内容替换成你所希望的,也就是用…
openresty 学习笔记三:连接redis和进行相关操作 openresty 因其非阻塞的调用,令服务器拥有高性能高并发,当涉及到数据库操作时,更应该选择有高速读写速度的redis进行数据处理.避免其应为读写数据而造成瓶颈. openresty 默认就带了redis的库,这里先梳理下其自带redis连接库的操作流程,再根据存在问题进行二次封装. 自带redis连接库的操作流程 首先是连接redis local redis = require "resty.redis" local…
作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往往是通过心跳检测来判断配置的变更,通过zk的回调机制,我们可以实现比心跳更为快速的配置检测机制,包括配置的新增,修改和删除 流程也比较简单: 环境准备 一个zk集权,ip和端口分别为: 192.168.205.145:2181 192.168.205.146:2181 192.168.205.147…
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  …
Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)…
Linux进程间通信IPC学习笔记之同步二(Posix 信号量)…
Linux进程间通信IPC学习笔记之消息队列(SVR4)…