Lua 是一个简洁、轻量、可扩展的脚本语言,也是号称性能最高的脚本语言,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本。很多应用程序使用Lua作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。
Lua原生支持的数据类型非常之少,它只提供了nil、数字(缺省是双精度浮点数,可配置)、布尔量、字符串、表、子程序、协程(coroutine)以及用户自定义数据这8种。但是其处理表和字符串的效率非常之高,加上元表的支持,开发者可以高效的模拟出需要的复杂数据类型(比如集合、数组等)。Lua是一个动态弱类型语言,支持增量式垃圾收集策略。有内建的,与操作系统无关的协作式多线程(coroutine)支持。它还可以用于嵌入式硬件,不仅可以嵌入其他编程语言,而且可以嵌入微处理器中。

Nginx采用模块化的架构,官方版本的Nginx中大部分功能都是通过模块方式提供的,比如Http模块、Mail模块等。通过开发模块扩展Nginx,可以将Nginx打造成一个全能的应用服务器,这样可以将一些功能在前端Nginx反向代理层解决,比如登录校验、js合并、甚至数据库访问等等。

但是,Nginx模块需要用C开发,而且必须符合一系列复杂的规则,最重要的用C开发模块必须要熟悉Nginx的源代码,使得开发者对其望而生畏。

Nginx_Lua_Module是一个Nginx第三方模块,通过将Lua解释器集成进Nginx的配置中,支持引用Lua脚本文件/代码段实现业务逻辑,从而极大增强了Nginx的能力。由于lua的紧凑、快速以及内建协程,所以在保证高并发服务能力的同时极大地降低了业务逻辑实现成本。
Nginx+Lua是一个非常好的组合,它允许使用一个高性能的脚本语言扩展Nginx。Nginx有很多方法是自带的,但是使用Lua没有限制的。

本文将介绍ngx_lua的安装与配置过程。

2018年10月08日 教程整理
阅读更多...

本文将分别记录官方安装包及apt-get命令两种方式的redis数据库安装方法,以及redis的一些常用命令

2018年10月06日 教程整理
阅读更多...

本文将分别记录官方安装包及apt-get命令两种方式的redis数据库安装方法,以及redis的一些常用命令

2018年10月03日 教程整理
阅读更多...
阅读更多...

1. ** 环境需求 **

安装Maven前,先确保系统已正常安装且配置好JDK。

2018年09月30日 教程整理
阅读更多...

Hexo是一款基于Node.js的静态博客框架,依赖少易于安装使用,可以方便的生成静态网页托管在GitHub和Coding上,是搭建博客的首选框架。

2018年08月28日 教程整理
阅读更多...

本文将分别记录官方安装包及apt-get命令两种方式的redis数据库安装方法,以及redis的一些常用命令

2018年08月28日 教程整理
阅读更多...

在执行一个shell脚本的时候, 经过检验,内部代码并没有错误,但运行时却提示 ‘\r’: command not found。

这个问题一般发生在Windows创建和编辑.sh脚本上传至Linux服务器运行的情况。问题发生的原因是 因为系统换行符的差异。只要转化脚本为unix格式即可解决问题。

2018年05月30日 教程整理
阅读更多...

sed替换的基本语法为:

sed 's/<原待替换字符串>/<替换目标字符串>/'

在上一段代码规则中:单引号内部,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线 \ 进行转义。但是单引号 ' 是不能用反斜线 \ 转义的,这中签情况需要把命令中的单引号改为双引号,即: sed "s/<原待替换字符串>/<替换目标字符串>/"

命令中的斜线分隔符可以换成其他的符号,只需要紧跟s定义即可,例如换成问号 ? : sed 's?<原待替换字符串>?<替换目标字符串>?' ,效果是一样的。

基本语法默认只替换每行的第一个匹配的关键字。

更复杂的语法可以在此基础上加以调整:

2018年05月30日 教程整理
阅读更多...
阅读更多...

问题描述: 因项目技术需求,项目需要在原有低版本Spring-3.2.15.RELEASE+ehcache-2.4.4(同时包含Mybatis)框架的基础上,升级到较新的版本(4.1.0.RELEASE及以上,本文所选版本为Spring-5.0.4.RELEASE)。
更新Spring相关依赖文件后,启动项目。发现项目出现:

java.lang.NoSuchMethodError: org.springframework.cache.ehcache.EhCach
eFactoryBean.setMaxEntriesLocalHeap(J)V

报错。

具体如下:

2018年02月24日 教程整理
阅读更多...

问题描述: SpringMVC的服务端获取通过FormData提交的参数时候;如果采用GET方式,服务端可以接收参数的值; 而采用POST方式的时候,却始终接收不到参数的值而报错。

解决方案如下:

2018年02月23日 教程整理
阅读更多...

问题描述: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property

解决方案如下:

2018年02月10日 教程整理
阅读更多...

问题报错: java.lang.VerifyError: Inconsistent stackmap frames at branch target ...

2018年02月10日 教程整理
阅读更多...

本文详细介绍Ubuntu 系统以 .tar.gz安装包解压 / apt-get 两种方法安装Tomcat7服务器的步骤。

2018年02月02日 教程整理
阅读更多...

0.1. 安装python-software-properties

sudo apt-get install python-software-properties
sudo apt-get install software-properties-common

0.2. 添加ppa

sudo add-apt-repository ppa:webupd8team/java

0.3. 更新系统

sudo apt-get update

0.4. 开始安装Java

sudo apt-get install oracle-java8-installer

0.5. 设置java环境变量

至此,java已经安装成功。
使用java -version 命令即可查看Java版本:

使用sudo update-alternatives --config java 命令可以查看java安装路径:

查看Java安装路径后,需要设置系统环境变量。具体流程如下:

  1. 打开environment文件:sudo vim /etc/environment

  2. 在文件中添加上一步查询到的Java安装路径,如:JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre"

0.6. * java版本切换

如系统安装了多个版本的JDK,可以通过update-java-alternatives命令切换Java版本。如:

sudo update-java-alternatives -s java-8-oracle
2018年02月02日 教程整理
阅读更多...

最近在做web项目,碰到需要跨页面传递参数的功能,就是那种需要把当前页面的内容带到新开的子窗体中。采用js中window.open()方法请求子页面或刷新父页面信息,仅支持以get的方式传递,把需要的内容或参数全部序列化,然后通过url去传,显得url很臃肿,而且get的传递内容长度有限制。

在web项目开发中,考虑数据的安全性及传递内容的体量,通常会倾向于采用post的方式传递参数。问题在于open方法不能设置请求方式,一般网页的post都是通过form来实现的。如果仅仅模拟form的提交方式,那么open方法里那种可设置窗体属性的参数又不能用。

最后通过查阅相关资料及借鉴js其他的功能,逐渐实现window.open()与post相结合的功能:将form的target设置成和open的name参数一样的值,通过浏览器自动识别实现了将内容post到新窗口中。

2018年01月23日 教程整理
阅读更多...

对于目前的技术发展阶段来说,主流的远程Git仓库一般有GitHub和BitBucket仓库相对受开发者推崇。因此本文分享下我们以往收集的使用buckets和octocats的经验。
主要结论如下:

2017年12月06日 教程整理
阅读更多...
阅读更多...

错误:Host ‘aaa’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’

原因:

  出现这种情况是因为同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞。

2017年12月05日 教程整理
阅读更多...