- 博客(55)
- 收藏
- 关注
转载 Mysql数据库之Binlog日志使用总结(必看篇)
binlog二进制日志对于mysql数据库的重要性有多大,在此就不多说了。下面根据本人的日常操作经历,并结合网上参考资料,对binlog日志使用做一梳理:一、binlog日志介绍1)什么是binlogbinlog日志用于记录所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。2)binlog作用因为有了...
2018-07-31 08:30:58
21511
4
转载 linux下文件读取性能比较(fread、read、mmap)
在进行大规模数据处理时,读文件很有可能成为速度瓶颈。不管你的CPU有4个核还是8个核,主频有2G还是3G,硬盘IO速度总是有个上限的。在本人最近的一次经历中,对一个11G的文本进行数据处理,一共耗时34.8秒,其中竟然有30.2秒用在访问IO上,占了所有时间的87%左右。 虽然说硬盘IO是有上限的,那么C++为我们提供的各函数,是否都能让我们达到这个上限呢?为了求得真相,我对这个1...
2018-07-30 16:36:35
6829
转载 linux c++字符串拼接速度比较(+=,append,stringstream,sprintf)
原文:http://blog.sina.com.cn/s/blog_858820890101cmo5.html转自: http://www.cnblogs.com/james6176/p/3222671.html最近写的程序用到大量拼接字符串,为了提高拼接效率,比较了一下+=、append、stringstream、sprintf四种拼接字符串的方法。测试方法 比较方法是...
2018-07-30 09:44:22
3234
1
转载 linux下sed命令讲解
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反...
2018-07-28 10:47:50
249
转载 C++ vector多字段排序
C++当中vector的数据类型是基本类型时,我们利用std::sort很容易排序,当我们的类型是自定义的结构体,并且我们还要实现按多字段排序,我有两种方法:1.我们通过重载operator方法来实现:本例子实现了struct中多个字段排序:[cpp] view plaincopy#include #include #in
2017-09-30 15:50:05
1458
原创 第二十六课 从Lua调用C
扩展Lua的一项基本含义就是,应用程序将新的C函数注册到Lua中。Lua能调用C函数,但并不意味着Lua可以调用任意C函数。在上一章中,当C语言调用Lua函数时,它必须 遵循一个简单的协议,以此来向Lua传递参数,并从Lua获取结果。同样,对于一个能被Lua调用的C函数,它也必须遵循一个获取参数和返回结果的协议。此外,还必须注册C函数,以便用某种适当的方式将函数地址告诉Lua。当Lua调用
2017-05-04 15:54:57
424
原创 第二十五课 扩展应用程序
基础第一个任务是一个简单的配置应用。假设C程序有一个窗口,并希望用户指定窗口的初始大小。显然,对于这种简单的任务,有多种比Lua 更简单的做法,例如使用环境变量或者使用记录了名值对的文件。不过就算使用一个简单的文本文件,也需要进行分析。因此使用Lua来作为配置文件。下面是这种文件最简单的形式,它可以包含如下内容:--定义窗口大小width = 200height = 300此时
2017-05-04 10:43:08
416
转载 PowerDesigner使用教程
转自:http://www.cnblogs.com/langtianya/archive/2013/03/08/2949118.htmlPowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一。Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesigner则与其正好相反,它是以数据库建模起家,后
2017-03-16 17:08:55
457
原创 第二十四课 C API概述
Lua是一种嵌入式语言,即Lua不是一个单独运行的程序,而是一个可以链接到其他程序的库。通过链接就可以将Lua的功能合并入这些程序。如果Lua不是一个独立运行的程序,那么之前我们使用的Lua程序是怎么来的呢?这个问题的答案是Lua解释器,即可执行程序“lua”。这个解释器是一个简单的应用程序,它依靠Lua库来实现主要功能。这个程序会处理 与用户的交互,它将用户的文件或字符串输入Lua库,由Lu
2017-02-07 15:49:51
588
原创 第二十三课 调试库
调试库并没有提供一个Lua的调试器,而是提供了一个编写调试器所必须具有的原语。考虑到性能因素,这些原语的标准接口是通过C API给出的。而Lua中的调试库则提供了一条在Lua代码 中直接访问这些接口的途径。调试库与其他库不同,必须慎重使用。因为,首先它的一些功能性能不高。其次,它会打破语言的一些固有原则,例如用户无法在一个函数之外访问这个函数内部创建的局部变量。通常,用户不会希望在产品的最
2017-01-19 09:36:13
437
原创 第二十二课 操作系统库
操作系统库定义在table os中,其中包含了文件操作函数、获取当前日期和时间 的函数,以及其他一些与操作系统相关的功能。Lua只使用了 ANSI标准中定义的函数,而像目录操作和套接字这类操作系统功能并不是ANSI标准的一部分,因此操作系统库也就不包含它们了。posix库为Lua提供了POSIX.1标准的功能luasocket库提供了网络支持对于文件操作而言,库只提供了两个函数,一个是
2017-01-17 14:30:01
302
原创 第二十一课 I/O库
I/O库为文件操作提供了两种不同的模型,简单模型和完整模型。简单模型假设有一个当前输入文件和一个当前输出文件,它的I/O操作均作用于这些文件。完整模型则使用 显式的文件句柄。它采用了面向对象的风格,并将所有的操作定义为文件句柄上的方法。简单I/O模型简单模型的所有操作都作用于两个当前文件。I/O库将当前输入文件初始化为进程标准输入,将当前输出文件初始化为进程标准输出。在执行io
2017-01-06 16:34:15
394
原创 第二十课 字符串库
原始的Lua解释器操作字符串的能力是很有限的。一个程序只能创建字符串常量、连接字符串以及获取字符串的长度。它无法提取子串或者检索字符串的内容。在Lua中真正的字符串操作能力来源于字符串库。字符串库中的所有函数都 导出在模块string中。在Lua5.1中,它还将这些函数导出作为string类型的方法。所以有两种方法调用字符串库中的函数,string.upper(s)或者s:upper()。
2017-01-05 13:53:51
321
原创 第十九课 table库
table库是由一些辅助函数构成的,这些函数将table作为数组来操作。插入和删除函数table.insert用于将一个元素插入到一个数组的指定位置,它会移动后续元素以空出空间。如果在调用insert时没有指定位置参数,则会将元素添加到数组末尾。t = {10, 20, 30}table.insert(t, 1, 15) --t = {15, 10, 20, 30}下面
2017-01-04 11:24:51
506
原创 第十八课 数学库
math库由一组标准的数学函数构成,包括:三角函数:(都是用弧度单位)sincostanasinacosdeg(弧度转角度)rad(角度转弧度)等指数和对数函数:exploglog10取整函数:floor(向下取整)ceil(向上取整)max和min伪随机数函数:randomrandomseed变量:pih
2017-01-04 10:32:30
484
原创 第十七课 弱引用table
Lua采用了自动内存管理,一个程序只需要创建对象,不需要删除对象。Lua的垃圾收集器没有 环形引用的问题。当用到环形数据结构时,无须作出任何特殊的处理,它们也可以像其他数据一样被正常的回收。垃圾收集器 只能回收那些它认为是垃圾的东西,它不会回收那些用户认为是垃圾的东西。一个典型的例子就是栈。栈通常由一个数组和一个表示顶部的索引来实现。这个数组的有效部分总是向顶部扩展的,但Lua却不知道。如
2017-01-04 09:46:53
405
原创 第十六课 面向对象编程
Lua中的table就是一种对象,这句话从3个方面来证实:1、table与对象一样可以拥有状态。2、table也与对象一样拥有一个独立于其值的 标识(一个self)。例如,两个具有相同值的对象(table)是两个不同的对象。3、table与对象一样具有独立于创建者和创建地的生命周期。table也有和对象一样的操作:Account = {balance = 0}functio
2016-12-30 15:22:04
346
原创 第十五课 模块与包
从用户观点来看,一个模块就是一个程序库,可以通过require来加载。然后便得到了一个全局变量,表示一个table。这个table就像是一个名称空间,其内容就是模块中导出的所有东西,如函数和常量。一个规范的模块还应使require返回这个table。一个用于要调用一个模块中的 函数,最简单的方式是:require "mod"mod.foo()如果希望使用较短的名称,则可以为模块设置
2016-12-29 13:40:32
313
原创 第十四课 环境
Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境”。Lua将环境table自身保存在一个全局变量_G中。for n in pairs(_G) do print(n) end --打印当前环境中所有全局变量的名称具有动态名字的全局变量对于访问和设置全局变量,通常赋值操作就可以了。不过有时也会用到一些元编程的形式。例如,当操作一个全局变量时,而它的名称
2016-12-27 17:08:44
245
原创 第十三课 元表(metatable)与元方法(metamethod)
通常,Lua中的每个值都有一套预定义的操作集合。例如,可以将数字相加,可以连接字符串,还可以在table中插入一对key-value等。但是我们无法将两个table相加,无法对函数作比较,也无法调用一个字符串。可以通过元表来修改一个值的行为,使其可以在面对一个非预定义的操作时执行一个指定的操作。例如,假设a和b是两个table,通过元表可以定义如何计算表达式a+b。当Lua试图将两个table
2016-12-22 13:46:16
1428
原创 第十二课 数据文件与持久性
数据文件可以借由table构造式来定义一种文件格式。只需要在写数据时做一点额外的工作,读取数据就会变得相当容易。这项技术也就是将数据作为Lua代码 输出,当运行这些代码时,程序也就读取了数据。而table的构造式可以使这些输出代码看上去更像是一个普通的数据文件。如果数据文件是一种预定义的格式,例如CSV(逗号分割值)或XML,那么可以选择的做法就很少。不过,如果是为了应用而创建的数据文件的
2016-12-19 15:24:37
299
原创 第十一课 Lua实现相关数据结构
Lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础。其他语言提供的数据结构,如数组、记录、线性表、队列、集合等,在Lua中都可以通过table来表示。数组使用整数来索引table即可在Lua中实现数组。 因此,数组没有一个固定的大小,可以根据需要增长。长度操作符 #计算数组的大小可以使用0、1或其他任意值来作为数组的起始索引。在Lua中习惯一般以1
2016-12-16 11:06:47
1265
原创 第十课 完整的Lua代码示例
马尔可夫链算法根据原始文本中n个单词的序列来确定后面的单词,从而生成随机的文本。程序先读取原始文本,并创建一个table。table的创建过程为:以每两个单词 为一个前缀,在table中创建一个列表,该列表记录了原始文件中所有位于该前缀之后的单词。当构建好这个table后,程序就利用它来生成随机文本。结果中的每个单词都来自于它在原始文本中的前缀,而具有相同前缀的单词出现在结果中的概率也与原
2016-12-15 14:47:10
1559
原创 第九课 协同程序
协同程序与线程差不多,也就是一条执行序列,拥有自己独立的栈、局部变量和指令指针,同时又与其他协同程序共享全局变量和其他大部分东西。从概念上讲线程与协同程序的只要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作地运行。就是说,一个具有多个协同程序的程序在任意时刻只能运行一个协同程序,并且正在运行的协同程序只会在其显示地要求挂起时,它的执行才会暂停。协同程序基
2016-12-14 17:31:43
582
原创 第八课 编译、执行与错误
尽管Lua称为是一种解释型的语言,但Lua确实允许在运行源代码前,先将源代码预编译为一种中间形式。其实,区别解释型语言的主要特征并不在于是否能编译他们,而是在于编译器是否是语言运行时库的一部分,即是否有能力执行动态生成的代码。可以说正是因为存在了诸如dofile这样的函数,才可以将Lua称为一种解释型语言。编译dofile函数,是一种内置的操作,用于运行Lua代码块。但实际上dof
2016-12-13 14:39:23
557
原创 第七课 迭代器与泛型for
迭代器就是一种可以遍历一种集合中所有元素的机制。在Lua中,通常将迭代器表示为函数。每调用一次函数,即返回集合中的“下一个”元素。每个迭代器都需要在每次成功调用之间保持一些状态,这样才能知道它所在的位置及如何步进到下个位置。closure对于这类任务提供了极佳的支持,一个closure就是一种可以访问其外部嵌套环境中的局部变量的函数。为了创建一个新的closure,还必须要创建它的这些
2016-12-12 17:07:03
533
原创 第六课 深入函数
在Lua中,函数是一种“第一类值”(和数字、字符串等一样,具有相同的权利),它们具有特定的词法域(一个函数可以嵌套在另一个函数中,内部函数可以访问外部函数中的变量)。函数式语言,函数式编程。在Lua中有一个容易混淆的概念是,函数与其他所有值一样 都是匿名的,即它们都没有名称。当讨论一个函数名时(例如print),实际上是在讨论一个持有某函数的变量。这与其他变量持有各种值是一样的道理。可以以多种
2016-12-09 16:31:39
847
原创 第五章 函数
在Lua中,函数是对语句和表达式进行抽象的主要机制。即使调用函数时没有参数,也必须要写出一对空括号。一种特殊的例外情况:一个函数若只有一个参数,且此参数是一个字面字符串或table构造式,那么圆括号别是可有可无的。print "Hello World"dofile 'test.lua'print [[ a multi-linemessage]]f {x = 0, y =
2016-12-09 13:31:33
358
原创 第四课 语句
赋值、控制和过程调用赋值Lua允许“多重赋值”,也就是一下子将多个值赋予多个变量。每个值或每个变量之间以逗号隔开。a, b = 10, 2 * x在多重赋值中,Lua先对等号右边的所有元素求值,然后才执行赋值。这样便可以用一句多重赋值来交换两个变量了。x, y = y, x --交换x与ya[i], a[j] = a[j], a[i] --交换a[i]与a[j]
2016-12-09 09:49:22
196
原创 第三课 表达式
Lua中的表达式中可以包含数字常量、字面字符串、变量、一元和二元操作符及函数调用。还可以包括函数定义和table 构造式。算术操作符二元:+、-、*、/、^(指数)、%(取模,Lua5.1新增)一元:-(负号)如:x^0.5 --x的平方根x^(-1/3) --x立方根的倒数取模操作是根据以下规则定义的:a % b == a - floor(a / b) * b
2016-12-09 09:46:52
251
原创 第二课 类型和值
Lua是一种动态类型语言。没有类型定义的语法。每个值都携带了它自身的类型信息。8种基础类型:nil(空) boolean(布尔) number(数字)string(字符串) userdata(自定义类型) function(函数)thread(线程) table(表)函数type可 根据一个值返回其类型名称。print(type("hello world")) -->strin
2016-12-09 09:45:37
235
原创 第一课 简介Lua 开始
几条连续的Lua语句之间并不需要分隔符,但可以使用分隔符分号(;)隔开在Lua语法中,代码中的换行不起任何作用。a=1 b=a*2 --有点难看,但是是合法的Lua交互式模式,使用lua命令进入,退出使用end-of-file控制字符,或者调用操作系统库函数exit,输入os.exit()应该避免使用_+大写字母的标识符,Lua将这类标识符保留用作特殊用途保留标
2016-12-09 09:44:01
394
转载 公钥和私钥
本文转自http://blog.csdn.net/tanyujing/article/details/17348321公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。用电子邮件的方式说明一下原理。 使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的: 1. 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。
2015-12-03 19:08:45
323
转载 Kafka剖析(一):Kafka背景及架构介绍
本文转自: http://www.infoq.com/cn/articles/kafka-analysis-part-1Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。InfoQ一直在紧密关注Ka
2015-11-26 14:18:55
296
转载 Kafka深度解析
本文转载自:背景介绍Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partiti
2015-11-26 11:34:34
791
转载 Linux GDB命令
本文转载 自http://blog.chinaunix.net/uid-1877180-id-303199.htmlGDB(GNU Debugger)是GCC的调试工具。其功能强大,现描述如下:GDB主要帮忙你完成下面四个方面的功能:1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2.可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式
2015-11-26 11:26:41
498
转载 发布&订阅的消息系统 Kafka的深度解析
本文转自:http://www.xker.com/page/e2015/01/158138.html背景介绍Kafka简介Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息
2015-11-13 17:19:08
1935
转载 Kafka的Log存储解析
文章转载自http://blog.csdn.net/jewes/article/details/42970799Kafka的Log存储解析标签(空格分隔): kafka引言Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创
2015-11-12 16:53:01
714
转载 epoll和select区别
转自 http://blog.csdn.net/ysu108/article/details/7570571> 先说下本文框架,先是问题引出,然后概括两个机制的区别和联系,最后介绍每个接口的用法一、问题引出联系区别问题的引出,当需要读两个以上的I/O的时候,如果使用阻塞式的I/O,那么可能长时间的阻塞在一个描述符上面,另外的描述符虽然有数据但是不能读出来,这样实时性不
2015-11-09 16:33:06
385
原创 Redis命令总结
KEYS pattern获得符合规则的健名列表 EXISTS key判断一个键是否存在 DEL key [key …]删除键(不支持通配符) TYPE key获得键值的数据类型。返回值可能是string(字符串类型)、hash(散列类型)、list(列
2015-11-09 16:30:00
518
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人