自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 收藏
  • 关注

原创 《Arduino与LabVIEW开发实战》推荐序一

推荐序一 和金鑫认识这么久了,但这本书还是给我带来了惊喜。 对于喜爱机器人技术并且热衷于科技创业的人而言,当下这个时代无疑是充满竞争而饱含激情的。它所充斥的梦想、理念,使得很多年轻人跃跃欲试。与他们的父辈不同,西风东渐,现在的社会环境蓬勃发展,逐渐成熟,经济转型带来的政策鼓励,使他们能更轻松地实现梦想。这些便利的条件帮助了无数涉世未深的年轻人选择非按部就班的道路,同时,他们所需要的、更加强大而...

2021-07-07 16:44:05 355

原创 《Arduino与LabVIEW开发实战》推荐序二

推荐序二 Arduino从未停止过开源创新的步伐,自其问世以来为无数创客提供了大大小小的开源控制器硬件,因其程序语法简单易懂,开发资料丰富,短短几年时间迅速蹿红创客界风靡全球。最新推出的Arduino Yun更是得到了众多创客们的追捧,因其整合了Arduino易用的架构和Linux系统的强大功能,可以轻松连接到复杂的Web服务,并融合多种功能,俨然成为即将改变我们家庭生活的又一大利器。 硬件平...

2021-07-07 16:44:03 325

原创 《Arduino与LabVIEW开发实战》前言

前言 Arduino是开源硬件的典型代表。Arduino控制器板卡、简单易用的Arduino IDE,以及Arduino简单易懂的语言,淡化了单片机底层硬件的知识,极大地简化了单片机的软硬件设计,让很多不懂单片机等底层硬件的科技爱好者也可以进行电子制作。同时社区论坛中很多爱好者制作的参考示例可供参考使用,而且社区论坛和参考示例也在不断地增加。 LabVIEW是图形化编程软件的代表,采用图形化编...

2021-07-07 16:44:00 611

原创 《Arduino与LabVIEW开发实战》第1章 Arduino基础

第1章 Arduino基础 1.1 Arduino是什么 Arduino是什么? 根据维基百科,Arduino的定义如下:一种开源的单片机控制器,它使用Atmel AVR单片机,采用基于开放源代码的软硬件平台,构建开放源代码simple I/O接口板,并且具有使用类似Java,C语言的Processing/Wiring开发环境。 从维基百科对Arduino的定义中,我们可以知道Arduin...

2021-07-07 16:43:57 4690

原创 《Arduino与LabVIEW开发实战》第2章 LabVIEW基础

第2章 LabVIEW基础 2.1 LabVIEW与虚拟仪器 2.1.1 什么是虚拟仪器 仪器仪表发展方向有很多,其中一个重要方向是将计算机和仪器结合起来。具体来说有两种方式,一种是将微处理器或微控制器嵌入到仪器中,构建智能化的内含嵌入式系统的仪器仪表,这是嵌入式仪器;另一种是将仪器装入计算机中,以通用计算机硬件及操作系统为载体,外配数据采集卡等外部设备,通过编制不同功能的程序,以实现多种仪...

2021-07-07 16:43:34 318

原创 《Arduino与LabVIEW开发实战》第3章 如何连接Arduino与LabVIEW

第3章 如何连接Arduino与LabVIEW 前两章分别讲解了Arduino和LabVIEW的基础知识,但是如何将Arduino控制器与LabVIEW软件连接起来,并做出一系列有趣的应用呢? 下面本章将详细地介绍Arduino与LabVIEW的连接方式,主要包括LabVIEW Interface for Arduino方式、串口控制方式、无线串口方式和Ethernet方式,并给出详细的实验示...

2021-07-07 16:42:53 2438

原创 《Arduino与LabVIEW开发实战》第4章 基础实验篇

第4章 基础实验篇 在本书第3章中,我们讲解了Arduino与LabVIEW连接的方式,其中之一就是使用NI公司的LabVIEW Interface for Arduino Toolkit,并重点介绍了LIFA的常用函数节点的功能与使用方法。由于3.1节的篇幅有限,难以容纳较多的示例,然而通过实际示例可以帮助读者更好地理解与使用LabVIEW Interface for Arduino函数库,也...

2021-07-07 16:42:33 426

原创 《Arduino与LabVIEW开发实战》第5章 应用进阶篇

第5章 应用进阶篇 5.1 多路数据采集 5.1.1 概述 数据采集,是指从传感器和其他待测设备的模拟和数字被测单元中自动采集信息的过程。能够实现数据采集功能的系统叫作数据采集系统。 数据采集系统的任务,就是将传感器输出的信号转换成计算机能识别的信号并送入计算机进行处理,然后将处理得到的数据进行显示或打印,以便实现对某些物理量的监测,其中一些参数还会被计算机控制系统用于计算输出的控制量,以...

2021-07-07 16:42:21 262

原创 《Arduino与LabVIEW开发实战》第6章 实战项目篇

第6章 实战项目篇 6.1 无线遥控智能小车 6.1.1 概述 智能小车是以轮子作为移动机构,并且能够实现自主行驶的机器人,又被称为轮式机器人。由于具有智能化的特点,可以应用于不适合人类工作的环境中,例如灾难救援、户外探险等。智能小车有别于遥控小车,因为后者需要操作人员来控制其转向、启停和前进后退,以及控制其速度,常见的模型小车,都属于这类遥控车。智能小车,则可以通过计算机编程来实现其对行驶...

2021-07-07 16:41:55 448

原创 《Arduino与LabVIEW开发实战》参考文献

参考文献 [1]陈吕洲.Arduino程序设计基础[M].北京:北京航空航天大学出版社,2014. [2]程晨.Arduino开发实战指南:AVR篇[M].北京:机械工业出版社,2012. [3]Dale Wheat.Arduino技术内幕[M].翁恺译.北京:人民邮电出版社,2013. [4]Jon Titus.ZigBee Wireless Networking[M].Amsterda...

2021-07-07 16:41:39 2861

原创 《Redis设计与实现》前言

前言 时间回到2011年4月,当时我正在编写一个用户关系模块,这个模块需要实现一个“共同关注”功能,用于计算出两个用户关注了哪些相同的用户。 举个例子,假设huangz关注了peter、tom、jack三个用户,而john关注了peter、tom、bob、david四个用户,那么当huangz访问john的页面时,共同关注功能就会计算并打印出类似“你跟john都关注了peter和tom”这样的...

2021-07-07 16:41:37 100

原创 《Redis设计与实现》致谢

致谢 我要感谢hoterran和iammutex这两位良师益友,他们对我的帮助和支持贯穿整本书从概念萌芽到正式出版的整个阶段,也感谢他们抽出宝贵的时间为本书审稿。 我要感谢吴怡编辑鼓励我创作并出版这本新版《Redis设计与实现》,以及她在写作过程中对我的悉心指导。 我要感谢TimYang在百忙之中抽空为本书审稿,并耐心地给出了详细的意见。 我要感谢Redis之父Salvatore Sanf...

2021-07-07 16:41:35 95

原创 《Redis设计与实现》第1章 引言

第1章 引言 本书对Redis的大多数单机功能以及所有多机功能的实现原理进行了介绍,力图展示这些功能的核心数据结构以及关键的算法思想。 通过阅读本书,读者可以快速、有效地了解Redis的内部构造以及运作机制,这些知识可以帮助读者更好地、也更高效地使用Redis。 为了让本书的内容保持简单并且容易读懂,本书会尽量以高层次的角度来对Redis的实现原理进行描述,如果读者只是对Redis的实现原理...

2021-07-07 16:41:33 95

原创 《Redis设计与实现》第一部分 数据结构与对象

第一部分 数据结构与对象 第2章 简单动态字符串 第3章 链表 第4章 字典 第5章 跳跃表 第6章 整数集合 第7章 压缩列表 第8章 对象

2021-07-07 16:41:26 90

原创 《Redis设计与实现》第2章 简单动态字符串

第2章 简单动态字符串 Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。 在Redis里面,C字符串只会作为字符串字面量(string literal)用在一些无须对字符串值进行修改的地方,比如打印日志: ...

2021-07-07 16:41:25 78

原创 《Redis设计与实现》第3章 链表

第3章 链表 链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。 作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为Redis使用的C语言并没有内置这种数据结构,所以Redis构建了自己的链表实现。 链表在Redis中的应用非常广泛,比如列表键的底层实现之一就是链表。当一个列表键包含了数量比较多的元素,又或者列表中包含的元素都是比较...

2021-07-07 16:41:17 80

原创 《Redis设计与实现》第4章 字典

第4章 字典 字典,又称为符号表(symbol table)、关联数组(associative array)或映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。 在字典中,一个键(key)可以和一个值(value)进行关联(或者说将键映射为值),这些关联的键和值就称为键值对。 字典中的每个键都是独一无二的,程序可以在字典中根据键查找与之关联的值,或者通过键来...

2021-07-07 16:41:12 91

原创 《Redis设计与实现》第5章 跳跃表

第5章 跳跃表 跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。 在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序都使用跳跃表来代替平衡树。 Redis使用跳跃表作...

2021-07-07 16:41:03 82

原创 《Redis设计与实现》第6章 整数集合

第6章 整数集合 整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。 举个例子,如果我们创建一个只包含五个元素的集合键,并且集合中的所有元素都是整数值,那么这个集合键的底层实现就会是整数集合: redis> SADD numbers 1 3 5 7 9(integer) 5...

2021-07-07 16:40:59 90

原创 《Redis设计与实现》第7章 压缩列表

第7章 压缩列表 压缩列表(ziplist)是列表键和哈希键的底层实现之一。当一个列表键只包含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。 例如,执行以下命令将创建一个压缩列表实现的列表键: redis> RPUSH lst 1 3 5 10086 "hello" "world"(integer)...

2021-07-07 16:40:52 75

原创 《Redis设计与实现》第8章 对象

第8章 对象 在前面的数个章节里,我们陆续介绍了Redis用到的所有主要数据结构,比如简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合等等。 Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,每种对象都用到了至少一种我们前面所介绍的数据结构。 通过这五...

2021-07-07 16:40:46 70

原创 《Redis设计与实现》第9章 数据库

第9章 数据库 本章将对Redis服务器的数据库实现进行详细介绍,说明服务器保存数据库的方法,客户端切换数据库的方法,数据库保存键值对的方法,以及针对数据库的添加、删除、查看、更新操作的实现方法等。除此之外,本章还会说明服务器保存键的过期时间的方法,以及服务器自动删除过期键的方法。最后,本章还会说明Redis 2.8新引入的数据库通知功能的实现方法。...

2021-07-07 16:40:30 74

原创 《Redis设计与实现》第二部分 单机数据库的实现

第二部分 单机数据库的实现 第9章 数据库 第10章 RDB持久化 第11章 AOF持久化 第12章 事件 第13章 客户端 第14章 服务器

2021-07-07 16:40:30 85

原创 《Redis设计与实现》第10章 RDB持久化

第10章 RDB持久化 Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。 举个例子,图10-1展示了一个包含三个非空数据库的Redis服务器,这三个数据库以及数据库中的键值对就是该服务器的数据库状态。 图10-1 数据库状态示例 因为Redi...

2021-07-07 16:40:17 68

原创 《Redis设计与实现》第11章 AOF持久化

第11章 AOF持久化 除了RDB持久化功能之外,Redis还提供了AOF(Append Only File)持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的,如图11-1所示。 图11-1 AOF持久化 举个例子,如果我们对空白的数据库执行以下写命令,那么数据库中将包含三个键值对: ...

2021-07-07 16:40:07 70

原创 《Redis设计与实现》第12章 事件

第12章 事件 Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件: ·文件事件(file event):Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或者其他服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。 ·时间事件(time event):Redi...

2021-07-07 16:40:02 68

原创 《Redis设计与实现》第13章 客户端

第13章 客户端 Redis服务器是典型的一对多服务器程序:一个服务器可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令请求,而服务器则接收并处理客户端发送的命令请求,并向客户端返回命令回复。 通过使用由I/O多路复用技术实现的文件事件处理器,Redis服务器使用单线程单进程的方式来处理命令请求,并与多个客户端进行网络通信。 对于每个与服务器进行连接的客户端,服务器都为这些客户端建...

2021-07-07 16:39:56 77

原创 《Redis设计与实现》第14章 服务器

第14章 服务器 Redis服务器负责与多个客户端建立网络连接,处理客户端发送的命令请求,在数据库中保存客户端执行命令所产生的数据,并通过资源管理来维持服务器自身的运转。 本章的第一节将以服务器执行SET命令的过程作为例子,展示服务器处理命令请求的整个过程,说明在执行命令的过程中,服务器和客户端进行了什么交互,服务器中的各个不同组件又是如何协作的,等等。 本章的第二节将对serverCron...

2021-07-07 16:39:52 62

原创 《Redis设计与实现》第三部分 多机数据库的实现

第三部分 多机数据库的实现 第15章 复制 第16章 Sentinel 第17章 集群

2021-07-07 16:39:47 59

原创 《Redis设计与实现》第15章 复制

第15章 复制 在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave),如图15-1所示。 图15-1 主服务器和从服务器 假设现在有两个Redis服务器,地址分别为127.0.0.1:6379和1...

2021-07-07 16:39:46 60

原创 《Redis设计与实现》第16章 Sentinel

第16章 Sentinel Sentinel(哨岗、哨兵)是Redis的高可用性(high availability)解决方案:由一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替...

2021-07-07 16:39:37 78

原创 《Redis设计与实现》第17章 集群

第17章 集群 Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。 本节将对集群的节点、槽指派、命令执行、重新分片、转向、故障转移、消息等各个方面进行介绍。...

2021-07-07 16:39:27 132

原创 《Redis设计与实现》第18章 发布与订阅

第18章 发布与订阅 Redis的发布与订阅功能由PUBLISH、SUBSCRIBE、PSUBSCRIBE等命令组成。 通过执行SUBSCRIBE命令,客户端可以订阅一个或多个频道,从而成为这些频道的订阅者(subscriber):每当有其他客户端向被订阅的频道发送消息(message)时,频道的所有订阅者都会收到这条消息。 举个例子,假设A、B、C三个客户端都执行了命令: SUBS...

2021-07-07 16:39:18 84

原创 《Redis设计与实现》第四部分 独立功能的实现

第四部分 独立功能的实现 第18章 发布与订阅 第19章 事务 第20章 Lua脚本 第21章 排序 第22章 二进制位数组 第23章 慢查询日志 第24章 监视器...

2021-07-07 16:39:18 61

原创 《Redis设计与实现》第19章 事务

第19章 事务 Redis通过MULTI、EXEC、WATCH等命令来实现事务(transaction)功能。事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求。 以下是一个事务执行的过程,该事务首先以一个MULTI命令为开始,接着将多...

2021-07-07 16:39:13 61

原创 《Redis设计与实现》第20章 Lua脚本

第20章 Lua脚本 Redis从2.6版本开始引入对Lua脚本的支持,通过在服务器中嵌入Lua环境,Redis客户端可以使用Lua脚本,直接在服务器端原子地执行多个Redis命令。 其中,使用EVAL命令可以直接对输入的脚本进行求值: redis> EVAL "return 'hello world'" 0"hello world" 而使用EVALSHA命令则可以根...

2021-07-07 16:39:09 71

原创 《Redis设计与实现》第21章 排序

第21章 排序 Redis的SORT命令可以对列表键、集合键或者有序集合键的值进行排序。 以下代码展示了SORT命令对列表键进行排序的例子: redis> RPUSH numbers 5 3 1 4 2(integer) 5# 按插入顺序排列的列表元素redis> LRANGE numbers 0 -11) "5"2) "3"3) "1"4)...

2021-07-07 16:39:01 72

原创 《Redis设计与实现》第22章 二进制位数组

第22章 二进制位数组 Redis提供了SETBIT、GETBIT、BITCOUNT、BITOP四个命令用于处理二进制位数组(bit array,又称“位数组”)。 其中,SETBIT命令用于为位数组指定偏移量上的二进制位设置值,位数组的偏移量从0开始计数,而二进制位的值则可以是0或者1: redis> SETBIT bit 0 1 # 0000 0001 (integer...

2021-07-07 16:38:54 118

原创 《Redis设计与实现》第23章 慢查询日志

第23章 慢查询日志 Redis的慢查询日志功能用于记录执行时间超过给定时长的命令请求,用户可以通过这个功能产生的日志来监视和优化查询速度。 服务器配置有两个和慢查询日志相关的选项: ·slowlog-log-slower-than选项指定执行时间超过多少微秒(1秒等于1 000 000微秒)的命令请求会被记录到日志上。 举个例子,如果这个选项的值为100,那么执行时间超过100微秒的命令...

2021-07-07 16:38:50 79

原创 《Redis设计与实现》第24章 监视器

第24章 监视器 通过执行MONITOR命令,客户端可以将自己变为一个监视器,实时地接收并打印出服务器当前处理的命令请求的相关信息: redis> MONITOROK1378822099.421623 [0 127.0.0.1:56604] "PING"1378822105.089572 [0 127.0.0.1:56604] "SET" "msg" "hello wo...

2021-07-07 16:38:48 57

空空如也

空空如也

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

TA关注的人

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