- 博客(126)
- 资源 (35)
- 收藏
- 关注
原创 【lua学习】Lua中pairs和ipairs区别
【lua学习】Lua中pairs和ipairs区别ipairs 和pairs在lua中都是遍历tbale的函数可是两者有差别。pairs遍历table中的全部的key-value,而ipairs会依据key的数值从1开始加1递增遍历相应的table[i]值。 pairs能够遍历表中全部的key,而且除了迭代器本身以及遍历表本身还能够返回nil;可是ipairs则不能返回nil,仅仅能返回...
2018-07-03 00:18:44
916
原创 【lua学习】Lua 协同程序(coroutine)
【lua学习】Lua 协同程序(coroutine)什么是协同(coroutine)?Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。协同是非常强大的功能,但是用起来也很复杂。线程和协同程序区别线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,...
2018-07-01 20:56:52
503
原创 【lua学习】Lua 面向对象
【lua学习】Lua 面向对象面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构。以下几种编程语言都支持面向对象编程:C++JavaObjective-CSmalltalkC#Ruby面向对象特征1) 封装:指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性。 2) 继承:继承的方法允许在不改动原...
2018-06-30 00:55:49
386
原创 【lua学习】Lua中调用C函数
【lua学习】Lua中调用C函数 Lua利用一个虚拟的堆栈来给C传递值或从C获取值。每当Lua调用C函数,都会获得一个新的堆栈,该堆栈初始包含所有的调用C函数所需要的参数值(Lua传给C函数的调用实参),并且C函数执行完毕后,会把返回值压入这个栈(Lua从中拿到C函数调用结果)。 于此相关的C API有几个比较重要的定义如下:(1)typedef struct lua_State ...
2018-06-28 00:15:57
1030
原创 【lua学习】lua迭代器和泛型for浅析
【lua学习】lua迭代器和泛型for浅析1. 迭代器与Closure:在Lua中,迭代器通常为函数,每调用一次函数,即返回集合中的“下一个”元素。每个迭代器都需要在每次成功调用之间保持一些状态,这样才能知道它所在的位置和下一次遍历时的位置。从这一点看,Lua中closure机制为此问题提供了语言上的保障,见如下示例:function values(t) local i = 0...
2018-06-24 19:13:16
501
原创 【Go学习】GO语言并发编程之读写锁
【Go学习】GO语言并发编程之读写锁读写锁是针对于读写操作的互斥锁。基本遵循两大原则:1、可以随便读。多个goroutin同时读。2、写的时候,啥都不能干。不能读,也不能写。 解释:在32位的操作系统中,针对int64类型值的读操作和写操作不可能只由一个CPU指令完成。如果一个写的操作刚执行完了第一个指令,时间片换给另一个读的协程,这就会读到一个错误的数据。RWMutex...
2018-06-12 14:25:17
550
原创 【Go学习】GO语言并发编程之互斥锁
【Go学习】GO语言并发编程之互斥锁互斥锁是传统的并发程序对共享资源进行访问控制的主要手段。它由标准库代码包sync中的Mutex结构体类型代表。sync.Mutex类型(确切地说,是*sync.Mutex类型)只有两个公开方法——Lock和Unlock。顾名思义,前者被用于锁定当前的互斥量,而后者则被用来对当前的互斥量进行解锁。类型sync.Mutex的零值表示了未被锁定的互斥量。也就是...
2018-06-12 11:36:08
787
1
转载 最快最简单的排序算法:桶排序
最快最简单的排序算法:桶排序转载至:http://blog.jobbole.com/100361/#article-comment在我们生活的这个世界中到处都是被排序过的。站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东西都需要排序,可以说排序是无处不在。现在我们举个具体的例子来介绍一下排序算法。 首先出场...
2018-04-08 22:23:47
285
原创 Linux驱动中completion接口浅析
Linux驱动中completion接口浅析内核编程中常见的一种模式是,在当前线程之外初始化某个活动,然后等待该活动的结束。这个活动可能是,创建一个新的内核线程或者新的用户空间进程、对一个已有进程的某个请求,或者某种类型的硬件动作,等等。在这种情况下,我们可以使用信号量来同步这两个任务。然而,内核中提供了另外一种机制——completion接口。Completion是一种轻量级的机制,他允许一...
2018-03-26 14:53:49
529
转载 区块链入门教程
区块链入门教程转载至:http://www.runoob.com/w3cnote/blockchain-intro.html什么是区块链?从字面上看:区块链是由一个个记录着各种信息的小区块链接起来组成的一个链条,类似于我们将一块块砖头叠起来,而且叠起来后是没办法拆掉的,每个砖头上面还写着各种信息,包括:谁叠的,什么时候叠的,砖头用了什么材质等等,这些信息你也没办法修改。 从计算机...
2018-02-28 11:35:00
2030
转载 linux内核中打印栈回溯信息 - dump_stack()函数分析
linux内核中打印栈回溯信息 - dump_stack()函数分析转载至: http://blog.youkuaiyun.com/jasonchen_gbd/article/details/45585133简介当内核出现比较严重的错误时,例如发生Oops错误或者内核认为系统运行状态异常,内核就会打印出当前进程的栈回溯信息,其中包含当前执行代码的位置以及相邻的指令、产生错误的原因、关键寄存器的值以
2018-02-02 10:16:46
2245
转载 I2C总线的仲裁机制
I2C总线的仲裁机制在多主的通信系统中。总线上有多个节点,它们都有自己的寻址地址,可以作为从节点被别的节点访问,同时它们都可以作为主节点向其他的节点发送控制字节和传送数据。但是如果有两个或两个以上的节点都向总线上发送启动信号并开始传送数据,这样就形成了冲突。要解决这种冲突,就要进行仲裁的判决,这就是I 2C总线上的仲裁。 I2C总线上的仲裁分两部分:SCL线的同步和SDA线的仲裁。1
2018-01-22 23:36:43
631
原创 Centos7 VS code golang 开发环境搭建
Centos7 VS code golang 开发环境搭建在上一篇文章—-centos7下配置golang1.9.2环境,之后就一直用Sublime text,还处在初级阶段,代码量也不大,最近下了docker的源码,想学习下,磨刀不误砍柴工,在这里先折腾一下VS code,大家有什么好的IDE可以推荐一下。废话不多说太多,直接进入主题,这里把自己搭建环境的过程记录一下,以便自己以后查看。安装 VS
2017-12-25 23:51:33
3317
原创 Qt + Opencv 实现的一个简单文字识别的demo
Qt + Opencv 实现的一个简单文字识别的demo很久没用Qt了,这两天结合Opencv整了一个简单文字识别的demo,太久没用了,很多东西都忘记了,中间碰到了几个不大不小的坑,最后都解决了,留一片文章记录一下,废话不多说,直接看效果图吧,很简单!中间的过程就不多说了,也很简单,感兴趣的大家可以把源码下下来看看!
2017-12-25 12:46:35
7364
11
原创 在GPRS模块(GA6)和STM32F103C8T6单片机上移植MQTT协议
在GPRS模块(GA6)和STM32F103C8T6单片机上移植MQTT协议最近几天折腾了一下,在GPRS模块(GA6)和STM32F103C8T6单片机上移植MQTT协议,网上找了一些资料,不是很全面,下面结合自己的移植过程记录一下。下载MQTT的库我移植MQTT的库:Paho,这个库支持非常多的平台,当然也包括了嵌入式平台:GitHub – paho.mqtt.embedded-c。 将该
2017-12-24 23:59:52
14814
19
转载 How to upgrade gcc on CentOS6.5
How to upgrade gcc on CentOS6.5Question: The default gcc version on CentOS6.5 is too old to build a particular application. How can I upgrade the version of gcc installed on CentOS6.5?As of CentOS 6.5,
2017-12-20 18:11:16
1145
原创 虚拟机与Docker的不同浅析
虚拟机与Docker的不同浅析2014年,当我第一次接触Docker的时候,我把它比做一种轻量级的虚拟机。这样做无可厚非,因为Docker最初的成功秘诀,正是它比虚拟机更节省内存,启动更快。Docker不停地给大家宣传,”虚拟机需要数分钟启动,而Docker容器只需要50毫秒”。然而,Docker容器并非虚拟机,我们不妨来比较一下它们。理解虚拟机使用虚拟机运行多个相互隔离的应用时,如下图: 从下到
2017-12-19 18:28:59
437
转载 吃货告诉你,PAAS、IAAS和SAAS之间的区别
吃货告诉你,PAAS、IAAS和SAAS之间的区别转载自:http://submail.cn/chs/blog/view/45 云计算的发展这几年大家也看到了,非常火热。各种新概念层出不穷,如果你不是专业人士,这些新概念让你一脸茫然是很正常的。 所以最近比较多的小伙伴向我咨询一个问题,那就是PAAS、IAAS和SAAS之间的区别?正好今天小编比较闲,就在这为大家解释一下。当然首先请允许小编从专业
2017-12-19 17:31:23
1029
原创 MQTT学习——Centos7上安装Mosquitto和使用
MQTT学习——Centos7上安装Mosquitto和使用前言MQTT是IBM开发的一个即时通讯协议。MQTT是面向M2M和物联网的连接协议,采用轻量级发布和订阅消息传输机制。Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用。 若初次接触MQTT协议,可先理解以下概念:【MQTT协议特
2017-12-18 13:53:06
10574
3
原创 【Go学习】 逐行读写文件
简单的翻看了一下Go的io/ioutil居然没又逐行读取的接口,在网上找到一份代码,发现其还比较使用,打算撸个例子试试看,网上的逐行读取的接口如下:func ReadLine(fileName string, handler func(string)) error { f, err := os.Open(fileName) if err != nil {
2017-12-16 16:39:35
4632
转载 优快云-markdown编辑器语法——字体、字号与颜色,背景色
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式。但是它本身是不支持修改背景色功能的!
2017-12-16 15:51:26
632
转载 【Go学习】浅析Go语言Interface类型的语法行为及用法
【Go学习】浅析Go语言Interface类型的语法行为及用法转载至:https://studygolang.com/articles/2652Go不是一种典型的OO语言,它在语法上不支持类和继承的概念。 没有继承是否就无法拥有多态行为了呢?答案是否定的,Go语言引入了一种新类型—Interface,它在效果上实现了类似于C++的“多态”概念,虽然与C++的多态在语法上并非完全对等,但至少在最终实
2017-12-15 17:34:53
841
原创 EXPORT_SYMBOL的内核实现
EXPORT_SYMBOL的内核实现看过Linux内核源码的人应该知道,源码中充斥着像EXPORT_SYMBOL这样的宏,在我们整机的设备驱动程序中野经常会发现它的身影。大部分时间里,我们只是知道它用来像外界导出一个符号,仅此而已。我们对这些宏是如此习惯,以至于常常忽略其存在的意义,更不用说去仔细探究其背后的实现原理了,今天咱们就来研究一下EXPORT_SYMBOL在内核具体怎样实现?
2017-12-14 23:37:38
1072
3
原创 【Go学习】GO语言异常处理机制panic和recover分析
【Go学习】GO语言异常处理机制panic和recover分析Golang 有2个内置的函数 panic() 和 recover(),用以报告和捕获运行时发生的程序错误,与 error 不同,panic-recover 一般用在函数内部。一定要注意不要滥用 panic-recover,可能会导致性能问题,我一般只在未知输入和不可靠请求时使用。golang 的错误处理流程:当一个函数在执行过程中出现了
2017-12-13 16:18:05
1213
原创 【Go学习】理解Go语言中的函数闭包
【Go学习】理解Go语言中的函数闭包闭包是什么? 它是怎么产生的及用来解决什么问题呢。给出字面的定义先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境)。这个从字面上很难理解,至少我在刚接触这个概念的时候是没弄懂的,本文将结合实例代码进行解释。 函数是什么? 可能大家都知道:函数只是一段可执行代码,编译后就“固化”了,每个函数在内存中只有一份实例,得到函数的入口点便可以
2017-12-13 12:26:46
2121
1
原创 【GO学习】为类型添加方法
【GO学习】为类型添加方法刚开始学Go语言,看到如下代码很是不解,直接贴出来分析下,代码如下:package mainimport "fmt"type Rank int const ( Rank001 Rank = iota Rank002 Rank003 Rank004)var rewards = [...]string{
2017-12-12 18:36:28
2283
原创 【Go学习】slice切片的本质及操作——切片的追加、删除、插入等
【Go学习】slice切片的本质及操作——切片的追加、删除、插入等一、一般操作1,声明变量,go自动初始化为nil,长度:0,地址:0,nilpackage mainimport ( "fmt")func main(){ var ss []string; fmt.Printf("length:%v \taddr:%p \tisnil:%v",len(ss),ss, ss==
2017-12-12 15:58:03
5275
原创 【Go学习】Go的函数
Go的函数函数是基本的代码块,用于执行一个任务,是构成代码执行的逻辑结构。 在Go语言中,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句。函数定义函数其实在之前已经见过了,第一次执行hello world程序的main()其实就是一个函数,而且是一个比较特殊的函数。每个go程序都是从名为main的package包的main()函数开始执行包的概念不是这里的重点,以后
2017-12-12 11:52:57
384
GPRS模块(GA6)和STM32F103C8T6单片机上移植MQTT协议
2017-12-25
深入理解linux内核(第三版中文)
2017-06-07
C 数据结构 大中小三种轮渡计算过河时间问题实现
2017-01-10
c 语言实现快速排序算法
2012-12-26
xmpp协议中文翻译版
2011-06-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人