自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Vert.x(vertx)操作Redis

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

2019-09-25 10:58:00 1199 0

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

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

2019-02-21 17:57:49 2610 1

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

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

2019-02-11 14:16:59 4100 2

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

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

2018-12-22 22:22:39 3399 2

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

Vert.x提供异步访问数据库的API,可能这里有朋友会有疑惑,直接使用我们之前的熟悉的Mybatis或者Hibernate不行吗,可行,但数据库操作是一个耗时操作,使用传统的同步模型,容易阻塞线程,导致整体性能下降,因此我们对于数据库操作,需要使用Vert.x提供的异步API。 Vert.x提...

2018-12-13 15:59:24 5084 5

原创 Vert.x(vertx) 实现TCP服务

对于Java开发人员,想要实现一个http服务,非常简单,写个servlet,打成war包,放到tomcat下就能运行。但如果要实现一个tcp服务就没那么简单了,因为tcp是传输层协议,并不像http那样,有类似tomcat的中间件给我们封装底层的网络协议,封装线程的交互。要实现一个tcp服务,只...

2018-12-07 14:43:04 5143 3

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

在Vert.x 创建HTTP服务 中我们已经创建了一个简单的HttpServer,但这个HttpServer比较低级,对于请求参数解析、Session等常用功能都需要我们通过编码实现,也就是要重复造轮子,非常不方便。 Vert.x提供了Web开发组件vertx-web,提供了一堆Web开发中常用...

2018-07-03 16:21:46 8698 13

原创 Vert.x(vertx) 创建HTTP服务

Vert.x底层通信框架依赖于Netty,并封装了对Http协议的支持,因此可以非常方便的进行Web开发,且不依赖于任何中间件。笔者所在的公司老系统使用的是SSM架构的项目,部署在Weblogic上,每年花在中间件上的钱就非常多,现在全面改造为Vert.x,中间件的费用直接就省了。另外不依赖中间件...

2018-06-25 18:09:11 5362 1

原创 Vert.x(vertx) 简明介绍

摘要 Vert.x最大的特点就在于异步(底层基于Netty),通过事件循环(EventLoop)来调起存储在异步任务队列(CallBackQueue)中的任务,大大降低了传统阻塞模型中线程对于操作系统的开销。因此相比较传统的阻塞模型,异步模型能够很大层度的提高系统的并发量。 Vert.x除了异...

2018-06-22 15:43:28 27395 19

原创 Oracle Database Link 跨数据库操作

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

2018-06-07 10:02:58 3469 0

原创 PL/SQL中文乱码问题

最近工作原因开始接触Oracle,对于用习惯MySQL的我还是有些不适应的,首先就是开发工具的改变。在Oracle下,PL/SQL dev可以说是Oracle客户端工具中的绝对霸主,那么要使用Oracle自然少不了使用PL/SQL dev。最近就遇到一个传说中的乱码问题。 经过一翻询问和网上查找...

2018-06-07 09:31:17 792 0

原创 log4j 日志框架使用

Log4j是Apache下的一款开源的日志框架,能够满足我们在项目中对于日志记录的需求。一般来讲,在项目中,我们会结合slf4j和log4j一起使用。Log4j提供了简单的API调用,强大的日志格式定义以及灵活的扩展性。我们可以自己定义Appender来满足我们对于日志输出的需求。 什么是日志框...

2018-05-24 11:31:50 10128 0

原创 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 ...

2018-03-19 16:17:21 11598 5

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

nginx是以源码包的形式发布的,我们安装完毕之后,可以通过/usr/local/nginx/sbin/nginx 来运行,停止和重启nginx。这虽然可行,但使用起来比较麻烦,我们希望可以把nginx作为linux服务来进行管理,通过service nginx start这种形式来开启nginx...

2018-03-16 09:21:12 2774 2

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

开发工具: Eclipse Maven  SVN 当我们写完代码提交到版本库的时候,SVN插件往往会把.classpath,.settings之类的文件一并提交。如果我们使用了maven,还会把target一起提交,这并不是我们想要的,除了我们自己可以注意不提交以外,还有没有更好的办法来处理呢,...

2018-01-11 10:10:08 2307 3

原创 使用Java客户端API操作Zookeeper

使用Java客户端API操作Zookeeper使用Java客户端API操作Zookeeper 准备环境 连接到zookeeper 创建节点 查询节点获取子节点的内容 列出子节点 修改节点关于Watcher 删除节点在了解了使用zkCli操作zookeeper之后,下面就是使用Java来操作zook...

2017-11-03 16:22:12 1730 0

原创 通过zkCli操作ZooKeeper

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

2017-11-02 15:58:02 1278 0

原创 CentOS6.9搭建ZooKeeper环境

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。在分布式泛滥的今天,ZooKeeper发挥着非常大的作用。 ZooKeeper是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域...

2017-11-02 15:35:33 422 0

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

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

2017-10-20 09:27:39 2218 0

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

多线程的形式上实现方式主要有两种,一种是继承Thread类,一种是实现Runnable接口。本质上实现方式都是来实现线程任务,然后启动线程执行线程任务(这里的线程任务实际上就是run方法)。这里所说的6种,实际上都是在以上两种的基础上的一些变形。 继承Thread类 万物皆对象,那么线...

2017-10-12 12:41:57 32358 19

原创 SpringBoot创建Web应用

工欲善其事必先利其器,SpringBoot应用开发推荐两款开发工具 1. STS(Spring Tool Suit) 是Spring官方推荐的工具,在Eclipse的基础上提供了开发SpringBoot的插件,下载地址为:https://spring.io/tools 2. Idea,这是一个...

2017-09-07 18:06:39 1681 0

原创 获得jquery-datatables 选中的行的内容

或许之前对于jQuery-datatables的理解有误,只是单从一个后端开发者的角度去理解确实感觉这个前端框架不像easyUI那样好用,也不像bootstrap那样简洁。实际上,任何一个框架都是有它存在的理由,如果从前端的角度来理解jQuery-datatables似乎就比较合理了,不需要重头开...

2017-09-06 12:38:27 10622 2

原创 Spring AOP(aop) 详解

Spring有两大核心,一个是IOC,一个是AOP。IOC比较好理解,控制反转,也就是将bean的控制权交给Spring来管理,让对象之间解耦。但是对于AOP,只是听老师说功能非常强大,却一直没有领略到其强大之处。却是被通知,切入点,切面,切点表达式这一堆的概念所迷惑。感觉AOP离我们遥遥无期,遥...

2017-08-30 17:10:32 319 0

原创 MyCat用户配置-添加用户、修改用户、删除用户、重置用户密码

我们在首次使用客户端登录的时候,我们可以使用一个名字为root,密码为123456的这么一个账户。这个账户是MyCat给我们创建的一个默认用户,那么这个用户是在哪里指定的,或者又如何创建的呢。 这个问题其实非常简单,我们看到在mycat的目录下有一个conf目录,这个目录就是用来存放配置文件的目...

2017-08-23 15:37:05 2380 0

原创 linux安装jdk(RPM方式和tar.gz方式)

安装有两个过程,第一个是下载,第二个是安装。安装之前要下载Java的安装包,在下载之前,我们先来掰扯一下Java的各种版本。众所周知,Java是免费开源的,这里的开源有两层含义,第一是Java本身是开源的,第二其规范也是开源的。这也就意味着Java可以有多个虚拟机,可以有多个编译环境。这里说这个问...

2017-08-08 12:17:29 1734 0

原创 Java方式配置SpringMVC

SpringMVC在Web开发中可以说是绝对的霸主,之前国内的Web开发框架可能还被Struts,Struts2占据。但现在,几乎所有的公司在做Web开发上,都会选择使用SpringMVC。 SpringMVC和Spring整合上可以说是无缝的,但很多的朋友可能和我一样,看着密密麻麻的XML配置...

2017-07-27 09:06:25 468 0

原创 Eclipse的Thymeleaf代码提示功能

在Eclipse中安装Thymeleaf插件即可。 插件的地址为: http://www.thymeleaf.org/eclipse-plugin-update-site/ 安装过程可以见 http://blog.csdn.net/king_kgh/article/details/760843...

2017-07-25 16:47:56 9932 3

原创 Eclipse插件安装(在线和离线方式)

Eclipse是基于插件的,插件为Eclipse提供了极大的扩展能力。我们经常会用到一些Eclipse中没有给我提供的一些功能,比如SVN,比如Thymeleaf的编辑工具,比如ADTBundle等等,都是通过插件来完成,那么如何安装需要的插件到Eclipse中呢? 插件的安装一般有三种方式,第...

2017-07-25 16:42:50 31029 3

原创 Spring 计划任务

我们在Java中可以通过Timer类来执行定时任务,在spring中,给我提供了更加便捷的计划任务。我们可以通过@EnableScheduling来开启计划任务,通过@Scheduled来定义一个计划任务。   我们先来看@Scheduled的源码 @Target({ElementType...

2017-07-25 08:58:54 298 0

原创 Spring对多线程支持

在我们的应用系统中,经常会处理一些耗时任务,自然而然的会想到使用多线程。JDK给我们提供了非常方便的操作线程的API,JDK5之后更是新增了JUC包的支持,并发编程大师Doug Lea(JDK并发的作者)也是一直在为我们使用线程做着不懈的努力。 为什么还要使用Spring来实现多线程呢?这是句废话...

2017-07-24 16:17:52 14964 2

原创 HaProxy安装/启动/简单配置

Haproxy 虽然带着ha,但它做的确是负载均衡。haproxy是工作在四层之上的,这也就意味着它可以代理的服务要比nginx更广泛,性能比nginx也要更高一些。相比较lvs,可配置性又比较好,需要的机器没有lvs那么多。因此haproxy在一定需求下使用还是不错的。比如使用haproxy来对...

2017-07-21 09:40:21 13644 1

原创 Spring Aware

aware 的意思是“意识到的; 知道的; 觉察到的”spring 容器对于bean来讲,是无意识的,也就是说bean和容器之间是解耦的。如果换了容器,bean依然可以使用。那么spring aware就是为了让bean对容器有意思,让这俩紧紧耦合在一起。我们说项目中是要减少耦合的,那么为什么sp...

2017-07-21 09:35:00 320 0

原创 Spring Event

spring event是spring的事件机制,和gui中的事件类似,使用的也是观察者模式。spring event为bean与bean之间的消息通信提供了支持。当一个bean处理完一个任务后,希望另外一个bean知道并能做响应的处理,这时我们就需要让另一个bean监听当前bean所发送的事件。...

2017-07-20 08:51:25 407 0

原创 Spring EL

在第一节说Spring的配置的时候提到过,有的配置是可以使用注解或者Java的配置的,有些配置像数据库配置是需要放到配置文件中的。那么使用Java配置的情况下,又要对数据库进行配置该怎么办呢?我们一般的做法就是创建一个properties配置文件,使用JDK提供的Properties类可以方便的读...

2017-07-19 13:32:33 318 0

原创 Keepalived安装/简单配置

Keepalived is a routing software written in C. The main goal of this project is to provide simple and robust facilities for loadbalancing and high-av...

2017-07-19 09:07:13 397 0

原创 Spring AOP和自定义注解

用过Spring的朋友都知道,Spring有两大核心功能,一个是IOC,一个是AOP。IOC对于开发者来讲可能用的还比较多,声明一个Bean交给Spring容器来管理,或者从Spring容器中找到某个Bean注入到另一个Bean中。而对于AOP来讲,普通开发者用的就不是很多了。往往是项目的整体架构...

2017-07-18 09:14:26 577 0

原创 Maven项目指定编译版本和文件编码

新创建的Maven项目JDK的版本是1.5的,几年前可能还可以,现在都到了JDK12的年代,再使用JDK1.5就说不过去了。所以在新创建了Maven项目之后,我们首先需要对JDK的版本进行指定。 Maven提供了一个插件来解决这个问题,可以直接将下面的代码拷贝到你项目的POM文件中即可。我这里指...

2017-07-17 22:38:17 558 0

原创 Spring Java配置

什么?你要问我applicationContext.xml这个配置文件该怎么配置?你可知道,XML配置文件的方式是在Spring1.0的时代使用的,现在都到了Spring5,你还在用,不觉得out吗!什么,你说问我的是properties配置文件(SpringBoot采用properties配置的...

2017-07-17 12:28:34 1045 0

原创 生成纯ASCII的图像

我们经常见到在一些项目的启动的过程中有一些特殊的字符来标识这个项目,比如Redis,又或者SpringBoot,那么这些字符是怎么做到的呢,如果你认为是一个一个敲的,那就out了,有一个网站可以非常轻松的来处理这件事。   地址为:http://patorjk.com/software/taa...

2017-07-13 15:00:31 942 0

原创 Vmware创建Linux虚拟机

很多情况下我们想要一个Linux环境,却很难有条件单独使用一台机器来部署Linux系统,因此经常会选择使用虚拟机的形式或者是选择安装双系统。这里我主要记录一个我在虚拟机中安装Linux系统的过程。 我这里你使用的虚拟机软件是VMware。下面多图预警~~~~~~ 1,点击创建新的虚拟机 ...

2017-07-13 11:30:00 2134 0

提示
确定要删除当前文章?
取消 删除