极速Lua教程
Lua由巴西里约热内卢天主教大学PUC-Rio的一个团队设计、实施和维护。”Lua”(发音为LOO-ah)在葡萄牙语中的意思是”月亮”。 Lua 是一种强大、高效、轻量级、可嵌入的脚本语言。它支持过程编程、面向对象编程、函数编程、数据驱动编程和数据描述。 Lua 将简单的过程语法和基于关联数组和可扩展语义的强大数据描述构造相结合。Lua 是动态键入的,通过使用基于寄存器的虚拟机解释字节码来运行,并且具有具有增量垃圾回收的自动内存管理,因此非常适合配置、脚本编写和快速原型设计。 安装Lua官网下载:www.lua.org/download.html。 1234tar zxvf lua-5.x.x.tar.gzcd lua-5.x.xmake linux testmake install 注释123456--单行注释--[[多行注释多行注释--]] 变量数据类型 数据类型 描述 nil 表示一个无效值,只有值nil属于该类,相当于条件表达式中的false boolean true(0,空字符串是true)或者false(只有nil和false是false)...
JS时序图与流程图使用
123456789101112131415st=>start: Start|past:>http://www.google.com[blank]e=>end: End:>http://www.google.comop1=>operation: My Operation|pastop2=>operation: Stuff|currentsub1=>subroutine: My Subroutine|invalidcond=>condition: Yesor No?|approved:>http://www.google.comc2=>condition: Good idea|rejectedio=>inputoutput: catch something...|requestst->op1(right)->condcond(yes, right)->c2cond(no)->sub1(left)->op1c2(yes)->io->ec2(no)->op2->e ...
使用 hugo + nginx 服务器搭建个人博客
基础环境搭建最初由于使用 root 账号+简单密码 ssh 服务器,导致第二天收到tx云报警,该服务器已被暴力破解,最终无奈重装系统。 不要使用 root 用户 ssh 服务器,创建一个全新的用户,且加大密码复杂度。(关于构建一套个人密码管理系统,有望后续撰写一篇blog,此处留坑。) 1234567891011sudo su //切换root用户获取创建用户的权限useradd hellopasswd worldusermod -s /bin/bash hello //为用户指定shellusermod -d /home/hello hello //为用户指定用户目录cat /etc/passwd //查看用户属性su hello //切换用户 go语言环境搭建在go语言官网下载对应安装包。 1wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz 解压到/usr/local目录下,进入该目录下的go目录里,检查是否能正常执行显示go版本。 123456tar -C /usr/local -z...
Go语言总结
Go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,好称“大道至简”,是新时代的“C语言”。 Go语言基本语法变量go语言语法规定,定义的局部变量若没有被调用会发生编译错误。 变量声明格式如下: 12345678910111213//var 变量名 变量类型 var a int//批量声明var( a int b string c []float32 d func() bool e struct { x int y string }) 未初始化的变量将被默认初始化: 整型和浮点型变量默认值为0。 字符串默认值为空字符串。 布尔型默认值为 false。 函数,指针变量,切片默认值为 nil。 go语言拥有多种初始化方式: 12345678910//标准格式var 变量名 变量类型 = 表达式//编译器自动推断类型格式var 变量名 = 表达式//短变量声明格式变量名 := 表达式var a int = 10var b = 10b := 10 短变量声明模式只能用于函数体内,该变量名必须是没有定义过的变量,若定义过...
在C语言中运用面向对象与设计模式
面向对象编程(object-oriented programming),是一种设计思想或者架构风格,而非仅仅是编码方式,OOP程序也并不一定要用OOP语言来写。 OOP拥有封装,继承与多态三大特性,但 $OOP \not= 封装+继承+多态$。 封装是想把一段逻辑/概念抽象出来做到”相对独立”。多态是指让一组Object表达同一概念,并展现不同的行为。继承是希望通过类型的is-a关系来实现代码的复用。 在c语言里运用面向对象c语言有哪些方法来支持OOP编程呢? struct结构体,可以将对象的状态和行为封装在一起。 函数当然也可以封装,实现简洁的接口与复杂的内部隐藏,函数指针关联对象的行为。 static关键字可以控制变量与函数的作用域,避免命名冲突与链接错误。 const关键字约束一些变量的行为。 类型转换,void类型转换,结构体类型转换一定程度上可以模拟多态与继承。 一些命名规范也可以起到访问控制的说明。 #define宏语法实现的代码复用。 首先看一个基础的的栈实现方式: stack.h头文件 1234567#ifndef _STACK_H_#...
GDB的常用调试手段
GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c/c++程序员,gdb是必不可少的工具。 生出调试信息1gcc -g hello.c -o hello coredump配置 建立储存coredump文件的文件夹: mkdir ~/corefile 查看,设置coredump文件大小: ulimit -a ulimit -c unlimited 执行以下两条命令: echo "1" > /proc/sys/kernel/core_uses_pid // 将1写入到该文件里 echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern 修改配置文件/etc/profile 修改ulimit -S -c 0 > /dev/null 2>&1 为 ulimit -S -c unlimited > /dev/nu...
正则表达式
正则表达式(Regular Expression,regexp)是一种描述字符串特征的语法规则,用于验证各种字符串是否匹配这个特征,进而实现高级的文本查找,替换,截取内容等操作。 定位符 定位符 说明 ^ 匹配字符串的开始 $ 匹配字符串结尾的位置 选折符当要查找的条件有多个,只要其中一个满足即成立时,使用选择符”|”。 1grep -p --color 'Linux|UNIX' 字符范围 示例 说明 [abc] 匹配字符a,b,c [^abc] 匹配除a,b,c以外的字符 [a-z] 匹配字母a-z范围内的字符 12[^a-z][a-zA-Z0-9] 点字符和限定符点字符”.”用来匹配任意一个字符。 限定符(?,+,*,{})用于匹配某个字符出现的次数。 字符 说明 示例 . 匹配一个任意字符 s.t–>sat,set,sit ? 匹配前面的字符零次或者一次 colou?r–>color,colour + 匹配前面的字符一次或者多次 go+gle–>goole,gooooole...
八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 思路: 一维数组array存放皇后位置,array[i]=j 表示i行j列有一个皇后。 判断该位置放置皇后是否合法。 该位置合法,则进行下一行放置。 该位置非法则列值j++,进行第2步的判断。 当放满8个皇后(即i从0–>7)时,找到结果+1。 当某行中的列值(即array[i])>=8时,说明该行在前面行的摆放情况下无解。 则回退到上一行,对上一行的列值j++,进行2步判断。 当row回退到第一行(i=0),且第一行的列值超出范围(array[0]>=8)时,代表搜索结束。 输出所有可行解。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051...
AC自动机
AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。要搞懂AC自动机,先得有模式树(字典树)Trie、广度优先策略和KMP模式匹配算法的基础知识。 关于AC自动机建立Aho-Corasick automation算法需要三步: 建立模式串的Trie 给Trie添加失配路径 根据AC自动机,搜索待处理的文本 这里以航电OJ上的一道题hdu 2222 KeywordsSearch为例子。 123给定5个单词:say she shr he her一个字符串:yasherhs问一共有多少单词在这个字符串中出现。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210...
位图法(bitmap) & 布隆过滤器(Bloom Filter)
位图法(bitmap)位图法就是利用位数组来存储数据状态,其优点就是节省数据存储空间。如下图所示:2 byte的位数组存储数字0,1,5,11。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 位运算123451 byte (字节)= 8 bit(位);1 KB = 1024 B(字节);1 MB = 1024 KB; 1 GB = 1024 MB; 1 TB = 1024 GB; 与(&) 0&0=0 1&0=0 0&1=0 1&1=1 或(|) 0|0=0 1|0=1 0|1=1 1|1=1 异或(^) 0^0=0 1^0=1 0^1=...
