博客 RSS 訂閱

cyp3x6rl - Lua協同程序coroutine的簡介及優缺點

什麼是協同(coroutine)? Lua 協同程序(coroutine)與線程比較類似:擁有獨立的堆棧,獨立的局部變量,獨立的指令指針,同時又與其它協同程序共享全局變量和其它大部分東西。 協同是非常強大的功能,但是用起來也很複雜。 線程和協同程序區別 協程是編譯器級別的,線程是操作系統級別的,在多處理器情況下,多線程程序同時運行多個線程;而協同程序是通過協作來完成,在任一指定時刻只有一個協同程序

lua

收藏 評論

cyp3x6rl - Lua面向對象編程之基礎結構table簡例

面向對象編程 (Object Oriented Programming,OOP)是一種非常流行的計算機編程架構。 Lua中最基本的結構是table,所以需要用table來描述對象的屬性。 Lua中的function可以用來表示方法。那麼Lua中的類可以通過table + function模擬出來。 簡例: -- Czhenya Lua 面向對象 -- 對於一個對象來説, 屬性 方法 --[[ 兩種

lua

收藏 評論

cyp3x6rl - phpredis執行LUA腳本示例代碼

前言 本文主要給大家介紹了關於phpredis執行LUA腳本的相關內容,分享出來供大家參考學習,下面話不多説了,來一起看看詳細的介紹吧 示例代碼 $lua = EOT local kws = {} local lrkws = {} local nkws = {} local kw_ids = {} local lr_ids = {} local n_ids = {} f

lua , phpredis

收藏 評論

cyp3x6rl - Lua遊戲開發教程之時區問題詳解

前言 什麼是Lua? Lua 是一個小巧的腳本語言,巴西里約熱內盧天主教大學裏的一個研究小組於1993年開發,其設計目的是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定製功能。Lua由標準C編寫而成,幾乎在所有操作系統和平台上都可以編譯,運行。一個完整的Lua解釋器不過200k,在目前所有腳本引擎中,Lua的速度是最快的。這一切都決定了Lua是作為嵌入式腳本的最佳選擇。相比Python和Pe

lua

收藏 評論

cyp3x6rl - lua讀取redis數據的null判斷示例代碼

前言 為什麼要用lua腳本操作redis數據庫? 1.減少開銷–減少向redis服務器的請求次數 2.原子操作–redis將lua腳本作為一個原子執行 3.可複用–其他客户端可以使用已經執行過的lua腳本 4.增加redis靈活性–lua腳本可以幫助redis做更多的事情 lua腳本本身體積小,啓動速度快. 因此,從redis 2.6.0開始,redis在服務器端內置lua解釋器

lua

收藏 評論

cyp3x6rl - OpenResty中正則模式匹配的2種方法詳解

前言 本文介紹 OpenResty 的兩種正則模式匹配。 首先需要説明的是,OpenResty 套件中包含了兩種語法:一種是主要基於 FFI API 實現的 OpenResty 語法,一種是類原生 Lua 腳本語言的語法。 在本文所介紹的內容中,對應以上兩種語法的正則模式匹配分別是 ngx.re.find 和 string.find 。 這兩種規則起到完全相同的作用:在 subject strin

lua

收藏 評論

cyp3x6rl - 利用Lua定製Redis命令的方法詳解

Redis作為一個非常成功的數據庫,提供了非常豐富的數據類型和命令,使用這些,我們可以輕易而高效地完成很多緩存操作,可是總有一些比較特殊的問題或需求需要解決,這時候可能就需要我們自己定製自己的 Redis 數據結構和命令。 Redis命令問題 線程安全問題 我們都知道 Redis 是單線程的,可是它怎麼會有 線程安全 問題呢? 我們正常理解的線程安全問題是指單進程多線程模型內部多個線程操作進

lua

收藏 評論

cyp3x6rl - Lua Table轉C# Dictionary的方法示例

table特性 table是一個“關聯數組”,數組的索引可以是數字或者是字符串,所有索引值都需要用 "["和"]" 括起來;如果是字符串,還可以去掉引號和中括號; 即如果沒有[]括起,則認為是字符串索引 table 的默認初始索引一般以 1 開始,如果不寫索引,則索引就會被認為是數字,並按順序自動從1往後編; table 的變量只是一個地址引用,對 table 的操作不會產生數據影響 table

lua

收藏 評論

aitaokedemiehuoqi - Lua中設置table為只讀屬性的方法詳解

項目中部分只讀表易被人誤改寫,故決定在非線上環境裏對這些表附加只讀屬性,方便在出現誤改寫的時候拋出lua錯誤,最終版代碼如下: --[[------------------------------------------------------------------------------ -** 設置table只讀 出現改寫會拋出lua error -- 用法 local cfg_proxy

lua

收藏 評論

aitaokedemiehuoqi - Nginx+lua 實現調用.so文件

最近在和智能硬件部門一起,做一個室內定位的服務,該服務根據手機端傳過來的beacon設備列表,根據一定的算法計算出具體的商場,並將商場ID和beason設備列表作為參數,調用.so文件中的計算方法,得出位置數據(座標:x、y、z),返回給手機端。 因為服務對QPS要求比較高,並且都是純查詢操作,於是決定使用Nginx+lua+Redis的架構(該架構在公司內部已成主流,比較成熟)。下面我將對lua

lua

收藏 評論

aitaokedemiehuoqi - linux系統安裝Nginx Lua環境

亦可參考官方安裝指南: lua-nginx-module Installation 這是我總結的安裝,供參考: 需要最新版的Nginx,LuaJIT,ngx_devel_kit,lua-nginx-module等安裝文件: Nginx LuaJIT Lua或者LuaJIT都是可以的,但是出於性能的考慮,推薦安裝LuaJIT ngx_devel_kit lua-nginx-modu

lua , Linux

收藏 評論

aitaokedemiehuoqi - Lua中string.lower()使用指南

前言 今天我們總結的函數也比較簡單,函數的作用的將所給字符串的中的大寫字母轉換成小寫字母,這種操作往往出現在比較操作之前,比如驗證碼通常都是不區分大小寫的,接下來我們一起看一下函數的用法。 內容 string.lower() 原型:string.lower(s) 解釋:接收一個字符串,然後返回一個將字符串中大寫字母轉化為小寫字母的字符串副本,除此之外其他字符都不會被改變,大寫字母

lua

收藏 評論

aitaokedemiehuoqi - 使用Lua編寫Web端模板引擎的實例代碼分享

ltemplate.lua local insert = table.insert local remove = table.remove local concat = table.concat local format = string.format local loaded = {} local partten = "(.-){#([^#].-[^#])#}()" local cont

lua

收藏 評論

aitaokedemiehuoqi - Lua中基本的數據類型、表達式與流程控制語句講解

Lua類型 1.1 基本類型 Lua是一種動態類型語言,沒有類型定義的語法。Lua一共有8種基礎類型:nil(空)、boolean(布爾)、number(數字)、string(字符串)、userdata(自定義類型)、function(函數)、thread(線程)、table(表)。 函數type可根據一個值返回其類型名稱(字符串),如print(type(print)),輸出“f

lua

收藏 評論

aitaokedemiehuoqi - 解析Lua中的全局環境、包、模塊組織結構

模塊就是一個程序庫,而包是一系列模塊。Lua中可以通過require來加載模塊,然後得到一個全局變量表示一個table。Lua將其所有的全局變量保存在一個被稱為“環境”的常規table中。本文首先介紹環境的一些實用技術,然後介紹如何引用模塊及編寫模塊的基本方法。 環境 Lua將環境table保存在一個全局變量_G中,可以對其訪問和設置。有時我們想操作一個全局變量,而它的名稱卻存儲在另

lua

收藏 評論

aitaokedemiehuoqi - 深入解讀Lua中迭代器與泛型for的使用

泛型for原理 迭代器是一種可以遍歷集合中所有元素的機制,在Lua中通常將迭代器表示為函數,每調用一次函數,就返回集合中“下一個”元素。每個迭代器都需要在每次成功調用之間保持一些狀態,這樣才能知道它所在的位置及如何步進到下一個位置,closure就可以完成此項工作。下面的示例是列表的一個簡單的迭代器: function values(t) local i = 0 return function

lua

收藏 評論

aitaokedemiehuoqi - Lua中函數與面向對象編程的基礎知識整理

函數 基礎知識 調用函數都需要寫圓括號,即使沒有參數,但有一種特殊例外:函數若只有一個參數且參數是字面字符串或table構造式,則圓括號可有可無,如dofile 'a.lua',f{x=10, y=20}。 Lua為面向對象式的調用提供冒號操作符的特殊語法,如o.foo(o, x)等價於o:foo(x)。和Javascript類似,調用函數時提供的實參數量可以與形參數量不同,若實參

lua

收藏 評論

FairGuard - 遊戲Lua加密方案

Lua以其小巧快速的特點已漸漸成為廣大遊戲開發者必修項,因此Lua的安全問題對於遊戲開發者亦是迫在眉睫。 一. Lua 在手遊中的使用場景 1.Cocos2dx 引擎 在 Cocos2dx 引擎中,可選的腳本語言主要有 Lua 與 Javascript。相對於 Javascript, 因 Lua 更適合製作非 h5 遊戲而被廣泛使用。 2.Unity3d 引擎 Unity3d 引擎的原生腳本語言

遊戲引擎 , 遊戲開發 , lua

收藏 評論

歆晨技術筆記 - Wireshark插件開發實戰-Lua解析自定義二進制協議

Wireshark插件開發實戰-Lua解析自定義二進制協議 在調試自定義 TCP 協議時,我們常常需要構造原始的二進制數據包並通過 Wireshark 進行抓包分析。這篇文章記錄使用lua開發Wireshark插件解析私有二進制協議。 使用 Python 構造二進制協議數據包 使用 nc(netcat)發送數據 通過 tcpdump 抓包 通過 Wireshark + lua插件解析數據

lua , wireshark

收藏 評論

王林峯 - webpack項目中使用grunt監聽文件變動自動打包編譯

【小技巧】webpack項目中使用grunt監聽文件變動自動打包編譯 分享背景:編寫npm插件的時候,在項目裏的測試html文件內引用需要從入口文件轉譯打包成ES5。因此測試時每次改動都需要手動需要npm run build一下,很麻煩。獲知grunt有個watch功能,折騰了一下,可以做到每次js文件改動時自動build一波,很靈性。 安裝依賴包 //安裝grunt npm i grunt

grunt , webpack

收藏 評論

心葉 - grunt插件:grunt-plug-insert

作者:心葉 時間:2019年01月24日 20:08 需求説明 在我們開發代碼的時候,不會把全部代碼寫在一個文件,只有最後打包的時候會合並在一起,而有時候,我們除了要合併代碼,還可能需要更靈活的合併方案。 這個插件就是在一個代碼文件中的指定位置插入一些了碎片文件。 如何使用 首先,需要安裝node包: npm install grunt-plug-insert --save-dev 一旦安裝

plug , grunt , npm , Javascript

收藏 評論

跑碼 - Webpack與Grunt、Gulp的區別?

隨着前端發展如日沖天,前端項目也越來越複雜,得益於Nodejs的發展,前端模塊化、組件化、工程化也大勢所趨。這些年Grunt、Gulp到Webpack隨着工程化的發展都大行其道。 前端工程化的早期,主要是解決重複任務的問題。Grunt、Gulp就是其中代表。比如: 壓縮、編譯less、sass、地址添加hash、替換等。 Grunt官網中就説: 對於需要反覆重複的任務,例如壓縮(minificat

gulp , grunt , webpack

收藏 評論

yanping - grunt clean提示錯誤

我在命令欄輸入grunt clean,提示如下錯誤 grunt-cli: The grunt command line interface (v1.2.0) Fatal error: Unable to find local grunt. If you're seeing this message, grunt hasn't been installed locally to your pro

grunt

收藏 評論

阿兵雲原生 - openssl 證書生成筆記(go 1.15版本以上)

[TOC] openssl證書生成 問題 golang 1.15+版本上,用 gRPC通過TLS實現數據傳輸加密時,會報錯證書的問題 rpc error: code = Unavailable desc = connection error: desc = "transport: authentication ha ndshake failed: x509: certificate is v

tls , grunt , openssl

收藏 評論