5 jhappyfly

尚未进行身份认证

我要认证

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

等级
TA的排名 2w+

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)与 远程服务调用

EventBus(事件总线)是Vert.x的神经系统,负责应用系统消息的传递。Vert.x各模块(Verticle)之间的相互调用就是通过EventBus实现的,因此各Verticle之间是高度解耦的。EventBus提供发布订阅功能和点对点的消息服务,类似于消息队列,每条消息在EventBus上都有一个地址(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

通过zkCli操作ZooKeeper

客户端脚本zkCli使用ZooKeeper提供了客户端脚本方便的我们对ZooKeeper进行操作 安装信息 zkHome : /usr/local/zookeeper连接到ZooKeeper通过bin目录下的zkCli可以连接到ZooKeeper,如果不指定任何参数,默认连接的是本机的2181端口。./usr/local/zookeeper/bin/zkCli.sh -server 192.1

2017-11-02 15:58:02

CentOS6.9搭建ZooKeeper环境

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。在分布式泛滥的今天,ZooKeeper发挥着非常大的作用。ZooKeeper是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口...

2017-11-02 15:35:33

Java虚拟机类加载(解析阶段)

解析解析阶段是将常量池中的符号引用替换为直接引用的过程。在进行解析之前需要对符号引用进行解析,不同虚拟机实现可以根据需要判断到底是在类被加载器加载的时候对常量池的符号引用进行解析(也就是初始化之前),还是等到一个符号引用被使用之前进行解析(也就是在初始化之后)。到现在我们已经明白解析阶段的时机,那么还有一个问题是:如果一个符号引用进行多次解析请求,虚拟机中除了invokedynamic指令外,虚拟机

2017-10-20 09:27:39

java多线程的6种实现方式详解

多线程的形式上实现方式主要有两种,一种是继承Thread类,一种是实现Runnable接口。本质上实现方式都是来实现线程任务,然后启动线程执行线程任务(这里的线程任务实际上就是run方法)。这里所说的6种,实际上都是在以上两种的基础上的一些变形。继承Thread类万物皆对象,那么线程也是对象,对象就应该能够抽取其公共特性封装成为类,使用类可以实例化多个对象,那么实现线程的第一种方式就是继承...

2017-10-12 12:41:57

查看更多

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