自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 问答 (1)
  • 收藏
  • 关注

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

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

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

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

原创 Vert.x(vertx)操作Redis

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

2019-09-25 10:58:00 2660

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

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

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

原创 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 6402 2

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

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

2018-12-22 22:22:39 4888 2

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

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

2018-12-13 15:59:24 7031 8

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

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

2018-12-07 14:43:04 7447 6

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

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

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

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

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

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

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

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

2018-06-22 15:43:28 34190 22

原创 Oracle Database Link 跨数据库操作

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

2018-06-07 10:02:58 5000

原创 PL/SQL中文乱码问题

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

2018-06-07 09:31:17 1831

原创 log4j 日志框架使用

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

2018-05-24 11:31:50 12339 3

原创 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 12385 5

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

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

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

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

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

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

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

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

2017-11-03 16:22:12 2557

原创 通过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 1822

原创 CentOS6.9搭建ZooKeeper环境

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

2017-11-02 15:35:33 475

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

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

2017-10-20 09:27:39 3023

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

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

2017-10-12 12:41:57 37814 20

原创 SpringBoot创建Web应用

工欲善其事必先利其器,SpringBoot应用开发推荐两款开发工具1. STS(Spring Tool Suit) 是Spring官方推荐的工具,在Eclipse的基础上提供了开发SpringBoot的插件,下载地址为:https://spring.io/tools2. Idea,这是一个传说中最好用的收费的开发工具,也提供了对SpringBoot的支持。下载地址:https://www....

2017-09-07 18:06:39 1801

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

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

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

原创 Spring AOP(aop) 详解

Spring有两大核心,一个是IOC,一个是AOP。IOC比较好理解,控制反转,也就是将bean的控制权交给Spring来管理,让对象之间解耦。但是对于AOP,只是听老师说功能非常强大,却一直没有领略到其强大之处。却是被通知,切入点,切面,切点表达式这一堆的概念所迷惑。感觉AOP离我们遥遥无期,遥不可及。导致这种情况并不能怪老师,而是想要领略到AOP的强大,是需要大的项目规模来进行支撑的...

2017-08-30 17:10:32 392

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

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

2017-08-23 15:37:05 3261

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

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

2017-08-08 12:17:29 1935

原创 Java方式配置SpringMVC

SpringMVC在Web开发中可以说是绝对的霸主,之前国内的Web开发框架可能还被Struts,Struts2占据。但现在,几乎所有的公司在做Web开发上,都会选择使用SpringMVC。SpringMVC和Spring整合上可以说是无缝的,但很多的朋友可能和我一样,看着密密麻麻的XML配置文件,不知道该如何配置。好在Spring3的时代,给我们提供了更加便捷的配置方式,使用Java配置Sp...

2017-07-27 09:06:25 672

原创 Eclipse的Thymeleaf代码提示功能

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

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

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

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

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

原创 Spring 计划任务

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

2017-07-25 08:58:54 353

原创 Spring对多线程支持

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

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

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

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

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

原创 Spring Aware

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

2017-07-21 09:35:00 376

原创 Spring Event

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

2017-07-20 08:51:25 446

原创 Spring EL

在第一节说Spring的配置的时候提到过,有的配置是可以使用注解或者Java的配置的,有些配置像数据库配置是需要放到配置文件中的。那么使用Java配置的情况下,又要对数据库进行配置该怎么办呢?我们一般的做法就是创建一个properties配置文件,使用JDK提供的Properties类可以方便的读取文件内容。如果使用SpringEL,你会发现,读取配置就更简单了。当然了,SpringEL并不仅仅是...

2017-07-19 13:32:33 352

原创 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-availability to Linux system and Linux based infrastr...

2017-07-19 09:07:13 452

原创 Spring AOP和自定义注解

用过Spring的朋友都知道,Spring有两大核心功能,一个是IOC,一个是AOP。IOC对于开发者来讲可能用的还比较多,声明一个Bean交给Spring容器来管理,或者从Spring容器中找到某个Bean注入到另一个Bean中。而对于AOP来讲,普通开发者用的就不是很多了。往往是项目的整体架构都已经对切面进行处理完毕了,记录日志也好,处理数据库事务也好等等这些功能,程序员一般是不需要关注的,当...

2017-07-18 09:14:26 710

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

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