5 jhappyfly

尚未进行身份认证

我要认证

热爱生活,热爱编程,具有十足程序猿气质男一枚

等级
TA的排名 2w+

openresty lua 模块

一个业务逻辑可能会非常复杂,不可能将所有的逻辑写到一个文件中,这就需要模块的概念。将公共方法抽取成为一个模块,在使用时可以调用这个模块的方法。lua中的模块有点类似于Java中类的抽象层级,但和类又有本质差别。定义一个模块 创建一个lua文件 test_module.lua,内容如下local count = 0 local function hello() count = count + 1 ngx.say("count : ", count)...

2020-07-26 22:02:40

openresty 常用api

获取参数# 1 获取get方式传入的url参数location /lua_api_params { default_type 'text/html'; content_by_lua_block { local arg = ngx.req.get_uri_args(); for k,v in pairs(arg) do ngx.say("key:",k," val:",v); end;...

2020-07-26 22:01:35

openresty 第一个程序

修改nginx配置文件,默认路径在:/usr/local/openresty/nginx/conf/nginx.conf修改后的文件如右图所示content_by_lua 指定一句lua代码content_by_lua_file 指定lua对应的文件content_by_lua_block 指定lua代码块校验修改后的nginx配置文件是否正确nginx -t重启nginxngin...

2020-07-26 22:00:22

openresty 环境搭建

1.安装依赖的包yum install pcre-devel openssl-devel gcc curl2.下载并安装openresty# add the yum repo:wget https://openresty.org/package/centos/openresty.reposudo mv openresty.repo /etc/yum.repos.d/# update the yum index:sudo yum check-update#安装openre..

2020-07-26 21:59:19

Vert.x(vertx)操作Redis

Redis是一个基于Key-Value的非关系型数据库,在项目中经常用来做缓存、分布式锁等。关于Redis的基础知识,这里就不多说了,读者如果对这块内容不熟悉,可以先找些Redis相关的资料来学习。下面我主要来介绍下在Vertx中如何使用Redis,以及底层的实现原理。基本操作1.使用Redis和使用数据库一样,只需要导入相关的包,就可以了。这里只需要引入vertx-redis-clien...

2019-09-25 10:55:01

Vert.x(vertx)发送 HTTP/HTTPS请求

应用场景在应用系统中,经常会有类似于获取天气、发送短信、处理图像、支付等需求,这些需求实现都非常复杂,或者受到监管的限制,不是任何一个公司都可以做到的。但有些应用为了提升用户的体验,需要用到这些功能,比如饿了么会根据你所在的位置推荐附近的商家,在线商城需要在线支付,还有一些应用需要进行人脸识别等等。有需求就会有市场,于是就有很多的公司单独对外提供某种服务,比如支付宝就对外提供支付的功能...

2019-02-21 17:57:49

Vert.x(vertx) 事件总线(EventBus)与 远程服务调用

Event Bus(事件总线) 是Vert.x的神经系统,负责应用系统消息的传递。Vert.x各模块(Verticle)之间的相互调用就是通过Event Bus实现的,因此各Verticle之间是高度解耦的。Event Bus提供发布订阅功能和点对点的消息服务,类似于消息队列,每条消息在Event Bus上都有一个地址(address),发布者向这个地址发送消息,接收者从这个地址接收消息。...

2019-02-11 14:16:59

Vert.x(vertx) 认证和授权详解(包含认证和授权在Web系统中的使用)

每个线上系统几乎都是离不开认证和授权的,Vert.x提供了灵活、简单、便捷的认证和授权的支持。Vert.x抽象出了两个核心的认证和授权的接口,一个是AuthProvider,另一个是User。通过这两个接口,我们可以非常灵活的实现我们自定义的认证和授权方法。当然,Vert.x也给我们提供了使用JDBC、Shiro、MongoDB、JWT等授权的实现,我们可以直接使用。Vert.x提供的认证和...

2018-12-22 22:22:39

Vert.x(vertx) 连接MySQL、Oracle数据库

Vert.x提供异步访问数据库的API,可能这里有朋友会有疑惑,直接使用我们之前的熟悉的Mybatis或者Hibernate不行吗,可行,但数据库操作是一个耗时操作,使用传统的同步模型,容易阻塞线程,导致整体性能下降,因此我们对于数据库操作,需要使用Vert.x提供的异步API。Vert.x提供的API层级非常低,可以说是仅仅在原生JDBC基础上封装了一层异步接口。所有的对数据库操作都需要通过...

2018-12-13 15:59:24

Vert.x(vertx) 实现TCP服务

对于Java开发人员,想要实现一个http服务,非常简单,写个servlet,打成war包,放到tomcat下就能运行。但如果要实现一个tcp服务就没那么简单了,因为tcp是传输层协议,并不像http那样,有类似tomcat的中间件给我们封装底层的网络协议,封装线程的交互。要实现一个tcp服务,只能自己动手处理网络和线程问题,这是非常考验编程功底的事情,而且如果团队人员素质不高,项目周期要求较短的...

2018-12-07 14:43:04

Vert.x(vertx) Web开发-路由

在Vert.x 创建HTTP服务 中我们已经创建了一个简单的HttpServer,但这个HttpServer比较低级,对于请求参数解析、Session等常用功能都需要我们通过编码实现,也就是要重复造轮子,非常不方便。Vert.x提供了Web开发组件vertx-web,提供了一堆Web开发中常用的功能。比如参数封装,路由,国际化,认证和授权,session和cookie以及模板等,可以非常方便的...

2018-07-03 16:21:46

Vert.x(vertx) 创建HTTP服务

Vert.x底层通信框架依赖于Netty,并封装了对Http协议的支持,因此可以非常方便的进行Web开发,且不依赖于任何中间件。笔者所在的公司老系统使用的是SSM架构的项目,部署在Weblogic上,每年花在中间件上的钱就非常多,现在全面改造为Vert.x,中间件的费用直接就省了。另外不依赖中间件,编程会变得非常灵活,定制性非常强,安全性也会得到一定层度的提高。对于实现一个简单的web服务,有...

2018-06-25 18:09:11

Vert.x(vertx) 简明介绍

摘要Vert.x最大的特点就在于异步(底层基于Netty),通过事件循环(EventLoop)来调起存储在异步任务队列(CallBackQueue)中的任务,大大降低了传统阻塞模型中线程对于操作系统的开销。因此相比较传统的阻塞模型,异步模型能够很大层度的提高系统的并发量。Vert.x除了异步之外,还提供了非常多的吸引人的技术,比如EventBus,通过EventBus可以非常简单的实现分布...

2018-06-22 15:43:28

Oracle Database Link 跨数据库操作

有这么一个需求,要搭建测试环境,需要把开发库中的一部分表和数据导入到测试库中。咋一看这个需求有很多的实现方法,至少可以使用Oracle的导入导出来操作。这肯定能够实现,但感觉比较low,下面来看一种高大上的做法,使用Oracle的DATABASE LINK。DATABASE LINK 顾名思义,就是数据库的连接,功能就是连接到其他的数据库,并对其他的数据进行方便的操作。但从这一点来看,是不是就...

2018-06-07 10:02:58

PL/SQL中文乱码问题

最近工作原因开始接触Oracle,对于用习惯MySQL的我还是有些不适应的,首先就是开发工具的改变。在Oracle下,PL/SQL dev可以说是Oracle客户端工具中的绝对霸主,那么要使用Oracle自然少不了使用PL/SQL dev。最近就遇到一个传说中的乱码问题。经过一翻询问和网上查找资料,终于找到了解决办法,解决的方案也非常简单。1.查询数据库使用的编码select use...

2018-06-07 09:31:17

log4j 日志框架使用

Log4j是Apache下的一款开源的日志框架,能够满足我们在项目中对于日志记录的需求。一般来讲,在项目中,我们会结合slf4j和log4j一起使用。Log4j提供了简单的API调用,强大的日志格式定义以及灵活的扩展性。我们可以自己定义Appender来满足我们对于日志输出的需求。什么是日志框架我们在系统中对于记录日志的需求并不单纯。首先,我们希望日志要能持久化到磁盘,最基本的就是要能够保...

2018-05-24 11:31:50

SpringMVC整合Swagger出现Unable to infer base url. This is common when using dynamic servlet 错误

错误具体信息如下:Unable to infer base url. This is common when using dynamic servlet registration or when the API is behind an API Gateway.The base url is the root of where all the swagger resources are ser...

2018-03-19 16:17:21

nginx开机自启动和实现服务管理

nginx是以源码包的形式发布的,我们安装完毕之后,可以通过/usr/local/nginx/sbin/nginx 来运行,停止和重启nginx。这虽然可行,但使用起来比较麻烦,我们希望可以把nginx作为linux服务来进行管理,通过service nginx start这种形式来开启nginx服务,并且能够随系统自动启动。实现这个功能其实非常简单,因为nginx已经给了支持。先来说一说实现...

2018-03-16 09:21:12

SVN不提交.projects .settings target等文件

开发工具: Eclipse Maven  SVN当我们写完代码提交到版本库的时候,SVN插件往往会把.classpath,.settings之类的文件一并提交。如果我们使用了maven,还会把target一起提交,这并不是我们想要的,除了我们自己可以注意不提交以外,还有没有更好的办法来处理呢,肯定是有的。只需要在Eclipse中配置忽略的资源就可以了,步骤如下:1. 选择菜单栏Wind...

2018-01-11 10:10:08

使用Java客户端API操作Zookeeper

使用Java客户端API操作Zookeeper使用Java客户端API操作Zookeeper准备环境连接到zookeeper创建节点查询节点获取子节点的内容列出子节点修改节点关于Watcher删除节点在了解了使用zkCli操作zookeeper之后,下面就是使用Java来操作zookeeper。就像操作数据库一样,数据库可以使用客户端工具来连接,也可以提供Java的api来链接。至于为

2017-11-03 16:22:12

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。