lua

Lua笔记-关于lua table的C API (转)

家住魔仙堡 提交于 2020-12-05 12:51:23
转自: https://blog.csdn.net/GJQI12/article/details/81105975 //Lua笔记-关于lua table的C API //Lua版本5.2 /*相关API: lua_createtable 原型: void lua_createtable (lua_State *L, int narr, int nrec); 描述: 创建一个新的table并将之放在栈顶.narr是该table数组部分的长度,nrec是该table hash部分的长度. 当我们确切的知道要放多少元素到table的时候,使用这个函数,lua可以预分配一些内存,提升性能. 如果不确定要存放多少元素可以使用 lua_newtable 函数来创建table. lua_newtable 原型: void lua_newtable (lua_State *L); 描述: 创建一个新的table并将之放在栈顶. 等同于lua_createtable(L, 0, 0). lua_getfield 原型: void lua_getfield (lua_State *L, int index, const char *k); 描述: 将t[k]元素push到栈顶. 其中t是index处的table. 这个函数可能触发index元方法. lua_setfield 原型: void lua

Redis,就是这么朴实无华

泪湿孤枕 提交于 2020-12-05 02:55:12
http://xjjdog.cn 对200+原创文章进行了细致的分类,阅读更流畅,欢迎收藏。 原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。任何不保留此声明的转载都是抄袭。 Redis是2009年发布的,到今天已经超过10岁了。作为必备技能之一,关于它也有聊不完的话题。本文中的任何一个点,都可以展开,完成一篇中等规模的文章。 交流和面试时,你需要用最精准的语言进行描述,那么本文比较适合你。 redis能力: 1 0W/s QPS (redis-benchmark) 1w+ 长链接 (netstat / ss) 最复杂的Zset 6kw数据 写入1k/s 读取5k/s 平均耗时5ms 持久化 (rdb) 1. 基本概览 学习一门新语言,重要的是掌握它的基本数据结构,以及这些数据结构的API。redis的这些数据结构,就类似一门语言。 Redis数据结构 常用5种,一共10种。面试时一般回答5种即可,但其他5种是加分项。 String 字符串 Hash 字典 List 列表 Set 集合 ZSet 有序集合。性能参考: 《redis的zset有多牛?请把耳朵递过来》 Pubsub 发布订阅 (不推荐使用,坑很多) Bitmap 位图 GEO 地理位置 (有限使用,附近的人) Stream 流(5.0) (与Kafka非常像) Hyperloglog

技术架构的战略和战术原则

风流意气都作罢 提交于 2020-12-04 23:56:26
作者丨胡斌 策划丨小智 技术架构,是将产品需求转变为技术实现的过程。技术架构解决的问题包括了如何进行纯技术层面的分层、开发框架选择、语言选择(这里以 JAVA 语言为主)、涉及到各自非功能性需求的技术点(安全、性能、大数据)。技术架构是确定组成应用系统实际运行的技术组件、技术组件之间的关系,以及部署到硬件的策略。 技术架构面临最大的挑战是“不确定性”。在技术架构上,很多时候就会面临这种选择。是要选择业界最新的技术?还是选择团队最熟悉的技术?如果选择最新的技术,遇到新技术出了问题怎么解决?如果选择目前熟悉的技术,后续技术演进怎么办?这些都是架构师在做技术架构过程中需要考虑的。 业务在千变万化、技术在层出不穷,没有一套通用的技术架构模式来适用所有的系统。那么,我们如何保证在做技术架构时,能够实现一个稳定、出色的系统。面对这些“不确定性”时的架构设计问题,这里从战略和战术两个层面来提供一些设计原则。战略层提供的是技术架构的方法和思路,属于顶层设计;战术层提供的是技术架构的技术实践方式,更偏向详细设计。 战略层设计原则 战略层的设计原则就是:合适原则、简单原则、演化原则。 1.1 合适原则 技术人员有一种很强的技术情怀,就是在做设计的过程中,很希望挑战新的技术、在项目中采用最新的框架、或者自己重造一个比业界的还要牛的轮子。这样才能够显示出自己的优秀,以至于不让自己显的那么平庸。比如

Lua之Lua安装与Lua变量-TTLSA(一)

自作多情 提交于 2020-12-04 23:55:58
公司业务有用到Lua,与nginx结合起来实现高性能的web应用,想去弄懂这方面的知识,就去了解学习了下Lua,欢迎大咔们指教。 1. Lua介绍 Lua是一门简单的编程语言,它的优势在于可以整合C++的模块来扩展自身的功能,使用数百行或更少的代码来解决复杂的问题。具有的特征有: 1.1. 可扩展性:Lua从一开始就被设计成易于扩展的语言,很多功能都是通过外部库来实现的,很容易与其他编程语言如C、C++、Java等等进行交互。 1.2. 简洁: Lua十分简洁,但是功能强大,易于学习,很适合小规模的应用。 1.3. 高效: Lua有很高的执行效率。 1.4. 可移植性: Lua可以运行在任何现有的系统上。 Lua脚本是包含一系列Lua命令的简单脚本,扩展名为.lua的文本文件。单个命令或者一系列命令组成的脚本文件,在Lua中我们把它称为代码块。 代码块:指一个控制结构内,一个函数体,或者一个chunk(变量被声明的那个文件或者文本串)。 2. Lua安装 先把Lua环境搭建起来,便于后面学习演示。 # curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz # tar zxvf lua-5.2.3.tar.gz # cd lua-5.2.3/src # make linux 2.2 常见问题解决方法 问题1: lua.c:67:31:

重新认识 randomseed

和自甴很熟 提交于 2020-12-04 19:12:41
在之前的文章中,我写过这样的测试用例: local seed = 123456 for i= 1 , 2 do math .randomseed(seed + (i- 1 )/ 10 ) local num = {} for j= 1 , 10 do table .insert(num, math .random( 100 )) end print ( table .concat(num, "," )) end 运行结果是: 61,66,19,75,44,61,68,1,33,4 61,66,19,75,44,61,68,1,33,4 目的是为了引出 LCG 的缺点,然而这并不能证明 LCG 算法生成的随机数列质量就不够好。这是因为 randomseed 底层调用的是 C 的 srand ,其需要传入的是一个 unsigned int。Lua 的 randomseed 只是对其做了个包装:如果你传入的不是 int,Lua 会对其进行数值修约,再将修约之后的值传递给 srand 调用, 也就是说 randomseed 是不支持浮点数的 。上面的用例中,其实 seed 是一样的,都是 123456,因而产生的随机数列是一样的。 另外,需要注意的是由于 srand 接受的是一个 int。而 Lua 用的是 double,那么如果你将 randomseed 的 seed 越界

Lua之Lua安装与Lua变量-TTLSA(一)

半腔热情 提交于 2020-12-04 08:56:15
公司业务有用到Lua,与nginx结合起来实现高性能的web应用,想去弄懂这方面的知识,就去了解学习了下Lua,欢迎大咔们指教。 1. Lua介绍 Lua是一门简单的编程语言,它的优势在于可以整合C++的模块来扩展自身的功能,使用数百行或更少的代码来解决复杂的问题。具有的特征有: 1.1. 可扩展性:Lua从一开始就被设计成易于扩展的语言,很多功能都是通过外部库来实现的,很容易与其他编程语言如C、C++、Java等等进行交互。 1.2. 简洁: Lua十分简洁,但是功能强大,易于学习,很适合小规模的应用。 1.3. 高效: Lua有很高的执行效率。 1.4. 可移植性: Lua可以运行在任何现有的系统上。 Lua脚本是包含一系列Lua命令的简单脚本,扩展名为.lua的文本文件。单个命令或者一系列命令组成的脚本文件,在Lua中我们把它称为代码块。 代码块:指一个控制结构内,一个函数体,或者一个chunk(变量被声明的那个文件或者文本串)。 2. Lua安装 先把Lua环境搭建起来,便于后面学习演示。 # curl -R -O http://www.lua.org/ftp/lua-5.2.3.tar.gz # tar zxvf lua-5.2.3.tar.gz # cd lua-5.2.3/src # make linux 2.2 常见问题解决方法 问题1: lua.c:67:31:

使用 GIMP 轻松地设置图片透明度

梦想与她 提交于 2020-12-02 22:11:07
使用色键(或绿屏)技巧来设置你电脑游戏中图片的透明度。 不管你是否正在使用 Python 或 Lua 编程一个游戏或一个 APP,你都有可能在你的游戏资源中使用 PNG 图像。PNG 格式图像的一个优点是能够存储一个 alpha 通道 ,这在一个 JPEG 格式的图像中是不可能获得的。alpha 在本质上是不可见的或透明的“颜色”。alpha 是你图像 不可见 的一部分。例如,你要绘制一个甜甜圈,甜甜圈的空洞将使用 alpha 填充,你就可以看到它后面的任何东西。 一个常见的问题是如何找到一幅图像的 alpha 部分。有时你的编程框架,不管它是 Python Arcade 、 Pygame 、LÖVE,或者其它的任何东西都会检测出 alpha 通道,(在适当地调用函数后)将其作为透明处理。这意味着它将不会在 alpha 部分来渲染新的像素,而留下甜甜圈的空洞。100% 是透明的,0% 是不透明的,在功能上起到“不可见”的作用。 有些时候,你的框架与你的图像资源在 alpha 通道的位置上是不一致的(或者,alpha 通道根本就不存在),你在你想要透明度的地方却得到像素。 这篇文章描述了我所知道的最可靠的方法来解决透明度的问题。 色键 在计算机图形学中,有一些有助于确定每一个像素是如何渲染的值。色度Chrominance(或者 chroma),描述一个像素的饱和度或强度

根治可扩展、高可用、高性能“神器”:SpringCloud+Nginx高并发编程手册

∥☆過路亽.° 提交于 2020-12-01 14:54:34
在面试过程中几乎是必问到高并发一些问题,而本篇就是SpringCloud结合Nginx解答高并发开发、大厂面试的核心难题!本篇旨在帮助开发工程师弥补在Spring Cloud微服务、Nginx反向代理核心知识方面的短板! 统筹全篇 这份手册前6章剖析Feign高并发RPC的底层原理,解析Hystrix高性能配置的核心选项,阐述Hystrix滑动窗口的核心原理。后4章介绍Nginx的核心原理及其配置,并结合秒杀场景实现Spring Cloud秒杀、Spring Cloud+Nginx Lua秒杀,为广大Java开发者提供一个全面学习高并发开发的实战案例。 同时这份笔记也是免费分享的,免费获取方式在文末! 第1章Spring Cloud+Nginx高并发核心编程的学习准备 第2章Spring Cloud入门实战 第3章Spring Cloud RPC远程调用核心原理 第4章RxJava响应式编程框架 第5章Hystrix RPC保护的原理 第6章微服务网关与用户身份识别 第7章Nginx/OpenResty详解 第8章Nginx Lua编程 第9章限流原理与实战 第10章Spring Cloud +Nginx秒杀实战 总结 这份手册可以说是SpringCloud+Nginx高并发编程实战中一份弥足珍贵的笔记,无论是在日常开发之中开始面试前的准备,都是值得大家去阅读理解!

编译lua-5.3.5时出错解决方法

喜夏-厌秋 提交于 2020-12-01 04:05:34
问题描述:   执行 make linux test 过程出现错误,错误信息如下:     “     lua.c:82:31: fatal error: readline/readline.h: No such file or directory     compilation terminated.     <builtin>: recipe for target 'lua.o' failed     make[2]: *** [lua.o] Error 1     make[2]: Leaving directory '/home/jason/work/lua/lua-5.3.5/src'     Makefile:110: recipe for target 'linux' failed     make[1]: *** [linux] Error 2     make[1]: Leaving directory 'lua-5.3.5/src'     Makefile:55: recipe for target 'linux' failed     make: *** [linux] Error 2      ” 解决方法:     说明缺少“libreadline-dev”依赖包,安装该依赖包 Ubuntu安装方法: sudo apt-get update sudo

学了python能干什么

拥有回忆 提交于 2020-11-29 22:48:17
学了python能做些什么 1.WEB开发 Python拥有很多免费数据函数库、免费web网页模板系统、以及与web服务器进行交互的库,可以实现web开发,搭建web框架,目前比较有名气的Python web框架为Django。从事该领域应从数据、组件、安全等多领域进行学习,从底层了解其工作原理并可驾驭任何业内主流的Web框架。 1. 桌面软件 Python在图形界面开发上很强大,可以用tkinter/PyQT框架开发各种桌面软件! 2. 网络编程 网络编程是Python学习的另一方向,网络编程在生活和开发中无处不在,哪里有通讯就有网络,它可以称为是一切开发的“基石”。对于所有编程开发人员必须要知其然并知其所以然,所以网络部分将从协议、封包、解包等底层进行深入剖析。 3. 爬虫开发 在爬虫领域,Python几乎是霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。从事该领域应学习爬虫策略、高性能异步IO、分布式爬虫等,并针对Scrapy框架源码进行深入剖析,从而理解其原理并实现自定义爬虫框架。 4. 云计算开发 Python是从事云计算工作需要掌握的一门编程语言,目前很火的云计算框架OpenStack就是由Python开发的,如果想要深入学习并进行二次开发,就需要具备Python的技能。 5. 人工智能 MASA和Google早期大量使用Python