7 qchery

尚未进行身份认证

崇尚专注,乐于分享! 个人站点:https://qchery.gitee.io 微信公众号:Q码记 欢迎大家关注交流!!!

等级
TA的排名 3w+

Bean生命周期(一) 浅尝知味

在Spring体系中,对象的实例(Bean)都是交给Spring容器进行管理的,但是对于Bean在Spring中是创建及销毁流程,很多人都只有一个模糊的概念,今天我们就来认真地探寻一下Bean生命周期的问题。生命周期图首先,给大家晒上一张我画的生命周期图,当然这并不是完整的流程,像InstantiationAwareBeanPostProcessor里面的postProcessPrope...

2019-11-12 12:02:10

第一次在生产上遇到死锁,好方!

1.背景之前做风控系统,为了灵活的配置各种风险规则,引入了Drools规则引擎。上线以来,一直很平衡地在运行,然而,最近按业务要求将规则包拆分成多个项目后,每隔一段时间就会出现规则容器无法正常启动的情况。新创建的规则容器一直处于CREATING状态(正常是STARTED),之前让运维的小伙伴重启下kieserver就能恢复正常,所以一直没有怎么在意。然而就在昨天晚上,突然收到运维反馈,重启也无...

2019-08-18 18:38:15

Cglib动态代理实现解析

在JDK动态代理源码解读已经知道了JDK动态代理的实现逻辑,这里我们来学习一下Cglib的实现逻辑。以方便对动态代理有一个全面的认识。首先,我们来看一下生成代理类的时序图,对比起JDK的实现,它复杂了很多。整体看上去比较难以理解,那我们来看下这些类图,可能更加清晰些。来看看入口类Enhancer,它继承自AbstractClassGenerator,而Abs...

2018-04-11 23:05:14

JDK 动态代理源码解读

在Jdk动态代理使用的过程中,程序入口为Proxy.newProxyInstance,通过对程序调用的跟踪,可以得到如下时序图。在newProxyInstance方法里面,主要做了两件事情:一、生成指定的代理类;二、使用InvocationHandler创建一个代理类实例;publicstaticObjectnewProxyInstance(ClassL...

2018-04-09 23:08:54

设计模式 之 代理模式

代理(Proxy)是一种设计模式,为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式一般由以下三部分组成:抽象角色:通过接口或抽象类声明真实角色实现的业务方法。代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。真实角色...

2018-04-03 22:45:59

使用 Docker 部署 Springboot 应用

在SpringBoot实战之优雅终止服务中已经介绍了几种Springboot应用的部署方式,今天来介绍一种新的部署方式,让应用部署更加简单高效。对于微服务架构来说,服务拆分的越多,运维的成本也就越高,以前的一个系统只需要部署一次就可以了,但拆分成多个服务后,就需要多次部署了,为了简化部署流程,容器化成了该问题的最佳解决方案。这里假定大家对Springboot应用的搭建及D...

2018-03-27 23:49:10

Docker-Compose入门

Compose是一个用户定义和运行多个容器的Docker应用程序。在Compose中你可以使用YAML文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。使用Compose基本会有如下三步流程:在Dockfile中定义你的应用环境,使其可以在任何地方复制。在docker-compose.yml中定义组成应用程序的服务,以便它们

2018-01-24 21:14:25

Drools Workbench 中文规则问题

在Workbench与kie-server搭建及使用一文中,我们介绍了如何快速地搭建Workbench及kie-server服务。但如果尝试过该方法的同学应该会发现一个问题,中文的规则怎么就匹配不成功呢?这也许会让很多学习Drools的小伙伴头疼,毕竟Drools的中文资料太少,并没有什么可以参考的标准。踩坑实录下面我来分享一下我解决这个问题的一个思路。首先,

2018-01-16 00:32:16

Workbench 与 kie-server 搭建及使用

​本篇文章基于Drools7.5.0.Final,6.x版本与7.x在安装上基本类似,但7.x提供了docker镜像,使得workbench及kie-server的安装比6.x容易了很多倍。​首先需要准备Docker环境,Docker的安装过程不在此赘述,可以参考官网安装教程或者菜鸟教程。安装完成后,由于Docker仓库在国外,下载速度可能会很慢,所以

2018-01-09 22:34:02

SpringBoot 实战 之 优雅终止服务

由于SpringBoot是一个微服务框架,其生产部署的方式也需要尽可能的简单,与常规的Web应用有着一个巨大的不同之处,它可以内嵌一个Web容器,如:Tomcat、Jetty等,不再需要将应用打包成容器规定的特定形式。对于SpringBoot来说,打包成一个简单的Jar包直接使用java-jar即可启动,这是一种非常优雅的方式,但同时也带来了一定的问题,如:应用如何停止...

2017-12-01 11:42:58

VirutalBox 下安装 CentOS

环境准备宿主机:MacOS64位操作系统虚拟机软件:VirtualBox5.1.26CentOS镜像:CentOS-6.4-i386-minimal.iso,32位,不包含视窗界面的最小化版本,大小为315M左右。虚拟电脑创建首先,在VirtualBox上新建一个虚拟电脑,填写虚拟电脑名称,并选择系统类型及版本号,注意,VirtualBox版本里面没有CentOS的选项,请选择

2017-07-29 14:58:45

Drools 简介

现实生活中,规则无处不在。对于某些企业级应用,诸如欺诈检测软件,购物车,活动监视器,信用和保密应用之类的系统,经常会有大量的、错综复杂的业务规则配置,而且随着企业管理者的决策变化,这些业务规则也会随之发生更改。我们开发人员不得不一直处理软件

2017-07-09 22:44:17

VirtualBox 主宿访问及上网配置

需求:1.宿主机需要通过固定的IP访问虚拟机2.虚拟机需要可以访问外网已有条件及约束:1.宿主机已经可以访问外网2.上网使用的IP地址若是静态IP会经常出现冲突3.虚拟机系统版本CentOS6.4首先,我们大体的看一下Vbox的四种网络设置的功能及区别:1.单网卡如果只有一张虚拟网卡,我们来考虑下Vbox四种网络设置是否能实现需求:NAT:主机不能访

2017-06-30 11:23:45

Drools WorkBench 安装(Mysql版)

声明:安装手册使用的安装包为kie-drools-wb-6.5.0.Final-tomcat7.war,下载链接为https://download.jboss.org/drools/release/6.5.0.Final/kie-drools-wb-6.5.0.Final-tomcat7.war。1.在Tomcat7中安装bitronix事务管理器拷贝下面的

2017-06-28 11:26:13

Spring 调用 RESTful 服务

RestTemplate是客户端访问RESTful服务的核心类。它在概念上类似于Spring中的其他模板类,如JdbcTemplate和JmsTemplate及其他Spring组合项目中的模板类。RestTemplate的行为是通过提供回调方法及配置HttpMessageConverter进行自定义的,HttpMessageConverter将对象封送到Http请

2017-05-14 10:39:35

SpringBoot实战 之 数据库

1.数据库配置1.1.In-Memory数据库SpringBoot可以自动配置嵌入式数据库,如:H2,HSQL和Derby等。不需要提供任何连接URL,只需将构建依赖关系包含到要使用的嵌入式数据库中即可。以HSQL配置In-Memory数据库:"org.hsqldb:hsqldb:2.4.0"使用内存嵌入式数据库开发应用程序通常很方便。显然,内存数据库不提供持久存储;在应用程序

2017-05-06 13:54:53

SpringBoot实战 之 接口日志篇

在本篇文章中不会详细介绍日志如何配置、如果切换另外一种日志工具之类的内容,只用于记录作者本人在工作过程中对日志的几种处理方式。1.Debug日志管理在开发的过程中,总会遇到各种莫名其妙的问题,而这些问题的定位一般会使用到两种方式,第一种是通过手工Debug代码,第二种则是直接查看日志输出。Debug代码这种方式只能在开发环境适用,一旦程序移交部署,就只能通过日志来跟踪定位了。

2017-05-03 21:54:28

SpringBoot实战 之 异常处理篇

在互联网时代,我们所开发的应用大多是直面用户的,程序中的任何一点小疏忽都可能导致用户的流失,而程序出现异常往往又是不可避免的,那该如何减少程序异常对用户体验的影响呢?其实方法很简单,对异常进行捕获,然后给予相应的处理即可。但实现的方式却有好多种,例如:try{...}catch(Exceptione){doSomeThing();}像这种标准的try-catch

2017-05-01 14:34:31

SpringBoot实战 之 外部配置篇

SpringBoot允许你外部化你的配置,以便你可以在不同的环境中使用相同的应用程序代码。你可以使用properties文件、YAML文件、环境变量和命令行参数来外部化配置。可以使用@Value注解直接将属性值注入到Bean里面,也可以通过@ConfigurationProperties将属性绑定到结构化对象中。1.配置注入1.1.@Value注入SpringBoot会默认加

2017-04-29 22:20:07

SpringBoot实战 之 数据交互篇

1.序SpringBoot非常适合Web应用开发,我们可以使用它轻松地建立一个Web服务。在SpringBoot入门里面,我们已经使用其实现一个非常简单的接口,输出了HelloWorld!下面我们模拟真实的场景来学习SpringBoot应用开发。2.数据格式(Json)在现实的项目场景中,前后分离已经成了Web开发的基调,全栈的时代已经逐渐远去,后端负

2017-04-28 23:03:35

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!