自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Q码记

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

  • 博客(140)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 Bean生命周期(二) 源码释读

在 Bean生命周期(一) 浅尝知味 中,我们介绍了Bean的生命周期,并通过实验对其进行了验证,这次我们将从源码角度对其做进一步说明。整个Bean的生命周期,主要的逻辑就是实例化、初始化、销毁,而这些逻辑都集中在两个类里面,一个是 AbstractAutowireCapableBeanFactory,负责Bean的实例化与初始化,另外一个是 DisposableBeanAdapter,负责Bea...

2019-11-15 23:22:15 254

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

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

2019-11-12 12:06:10 307

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

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

2019-08-18 18:38:15 621 1

原创 Cglib动态代理实现解析

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

2018-04-11 23:05:14 2362 5

原创 JDK 动态代理源码解读

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

2018-04-09 23:08:54 508

原创 设计模式 之 代理模式

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

2018-04-03 22:45:59 284

原创 使用 Docker 部署 Springboot 应用

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

2018-03-27 23:49:10 23523

翻译 Docker-Compose入门

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

2018-01-24 21:14:25 58745 2

原创 Drools Workbench 中文规则问题

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

2018-01-16 00:32:16 3675

原创 Workbench 与 kie-server 搭建及使用

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

2018-01-09 22:34:02 21619 44

原创 SpringBoot 实战 之 优雅终止服务

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

2017-12-01 11:42:58 15886 3

原创 VirutalBox 下安装 CentOS

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

2017-07-29 14:58:45 510

原创 Drools 简介

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

2017-07-09 22:44:17 40876 4

原创 VirtualBox 主宿访问及上网配置

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

2017-06-30 11:23:45 1345

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

翻译 Spring 调用 RESTful 服务

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

2017-05-14 10:39:35 7890

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

原创 SpringBoot实战 之 接口日志篇

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

2017-05-03 21:54:28 8311 2

原创 SpringBoot实战 之 异常处理篇

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

2017-05-01 14:34:31 43449 12

原创 SpringBoot实战 之 外部配置篇

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

2017-04-29 22:20:07 1420

原创 SpringBoot实战 之 数据交互篇

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

2017-04-28 23:03:35 46247 1

原创 SpringBoot实战 之 入门篇

SpringBoot 简介Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot 可以轻松创建一个基于 Spring 且独立运行的生产级应用。SpringBoot 安装SpringBoot 的安装有很多种方式,最简单的一种是直接将

2017-04-23 15:19:41 5438 1

原创 Drools 之 KieModule 版本管理

序Drools 作为一个优秀的开源规则引擎,它的功能无疑是非常强大的。与普通的规则硬编码相比,Drools 有着非常多的优点,比如:规则的动态更新、规则配置的可视化等。规则动态更新的简单描述使用或了解过 Drools 的小伙伴们应该知道它里面定义了很多的概念,其中有一个比较重要的就是 KieModule,而 Drools 的规则动态更新也就是基于对 KieModule 地动态加载。由于一般在现实的使

2017-04-02 22:35:18 4508

原创 Maven 插件编写 之 初识 Mojo

Maven 作为一个优秀的项目管理工具,其插件机制为其功能扩展提供了非常大的便捷性。虽然说大多数情况下,我们可能不太会自己去编写 Maven 插件,但不排除在某些特殊的情况下,我们需要去完成一个自己的插件,来协助我们处理某些比较通用的事情。正好,最近有一些需求可能需要来对一个 Drools 的 Maven 插件进行扩展,所以学习一下 Maven 的插件编写。Maven 插件的命名规范一般来说,我们

2017-03-26 13:28:18 15297 3

原创 洪泛路由模拟(Java实现)

洪泛路由模拟(Java实现)  本文主要是以洪泛路由的一个简单模拟,一切都源于一个朋友的请求,所以花了大概两个小时的时间完成了这么一个简单的实现。 不知道大家对洪泛算法有没有过一些了解,总之我在这之前是完全没有听说有这么一个算法存在。如果没有了解过的话,可以参考如下描述(源自百度百科的拷贝): 洪泛不要求维护网络的拓扑结构和相关的路由计算,仅要求接收到信息的节点以广...

2016-05-04 22:06:39 2209 12

原创 初涉 Hadoop 之安装流程

由于 Hadoop 是使用 Java 语言编写,所以在安装 Hadoop 之前请保证已有正常的 JDK 环境可以使用。(JDK 安装配置流程,在这里不做赘述,请搜索其它博客进行学习。)下面请跟着我一步步来完成Hadoop环境的搭建:一、下载安装包wget https://archive.apache.org/dist/hadoop/common/hadoop-1.2.0/hadoo

2015-06-30 22:07:10 401

原创 日志规范

         作为程序员,你们工作中最讨厌遇到什么事?可能是杂乱无章的代码,可能是高强度的工作。。。。而我最讨厌的就是找Bug。                  我们往往会遇到这样的一种情况:程序出问题了,但是问题出在哪儿,我们缺很难找到。对于一个经验丰富或者说对所开发系统非常熟悉的程序员来说,他们可以通过自己的经验来定位Bug。但是如果,你只是一个职场菜鸟,你对系统又不了解...

2015-06-26 09:18:56 256

原创 Java工具之JPS

e里面也提供了类似的工具供广大Java开发人员使用,它就是jps(Java Process Status),它可以用来显示正在运行的虚拟机进程。 显示的信息主要包括两项,一个是虚拟机的执行子类,另一个是这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier, LVMID)。Jps的功能可以说是十分单一,但是它可以说是最常用的工具之一了,因为其它都需要用到它查询出来的LVMID来确定监控的是哪一个虚拟机进程。 有些人可能会问既然Linux下面的ls可以查

2015-04-06 19:50:18 184

原创 Linux 相关问题及解决方法

Linux 相关问题及解决方法  ### Linux环境下配置网络1.使用命令 cd /etc/sysconfig/network-scripts/ 进入网络配置路径2.修改 ifcfg-eth0 配置网卡的相关属性  DEVICE=eth0             # 硬件名  NM_CONTROLLED=yes  ONBOOT=yes            ...

2014-08-18 09:27:35 181

原创 SpringMVC与Mybatis集成开发环境搭建

SpringMVC与Mybatis集成开发环境搭建 1、导入相关JAR包 2、构建项目目录  3、配置文件web.xml<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/x

2014-08-04 11:14:18 131

原创 使用Ant编译生成Hadoop的Eclipse插件

2014-04-25 18:03:32 236

原创 hadoop-1.0.1在Linux环境下的安装

hadoop-1.0.1在Linux环境下的安装 1、下载hadoop-1.0.1并将其上传至Linux服务器下载链接如下:http://archive.apache.org/dist/hadoop/core/hadoop-1.0.1/hadoop-1.0.1.tar.gz此处设定上传目录为/var/ftp/pub,并使用命令tar -xzvf hadoop-1.0.1.tar....

2014-04-23 09:07:17 124

原创 初涉Android之ContentProvider

初涉Android之ContentProvider  一、ContentProvider的作用,可以让其它应用访问本应用的数据第一步:定义ContentProvider如下:import android.content.ContentProvider;import android.content.ContentUris;import android.content.C...

2013-12-23 19:45:11 97

原创 初涉Android之数据库数据列表显示

数据库数据列表显示    一、在Android开发中,使用的数据库一般是SQLite,至于有没有别的数据库,那我就不知道了,毕竟相对来说,我也只是一个初学者,对于SQLite的操作与其它数据库没有太大的区别,使用标准的SQL语句即可。          既然说到数据库,那么第一步肯定是建立数据库了,在开发Android的过程中,如果我们要建立数据库就要使用到SQLiteOpenHelpe...

2013-12-23 10:15:27 2077

原创 初涉Android之Pull解析XML文件

Node,也就是文本结点。而使用Pull解析XML文件的时候,解析到一个结点,就会产生一个事件(Event),每个事件根据结点的类型也位置,产生不同的事件状态,我们要做的就是根据不同的事件状态进行不同的处理,即可完成对XML文件的解析工作。 解析时的事件状态主要分为以下几种:START_DOCUMENT:文档开始,我们在这个状态下,主要做初始化工作END_DOCUMENT:文档结束,解析完成,终止解析START_TAG:标签开始,正式开始解析文件内容END_TAG:标签结束,处理解

2013-12-21 18:05:13 111

原创 初涉Android之文件保存

三种权限,具体可以参考《Linux私房菜》,当然,学习Android不需要了解这么多啊,在Android中,文件操作大致有四种操作模式,分别是MODE_PRIVATE、MODE_APPEND、MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE等。 下面对于四种操作模式进行简单的介绍:MODE_PRIVATE(私有操作模式):创建出来的文件只有本应用能够访问,其它应用不能访问,另外用私有操作模式生成的文件,写入文件的内容会覆盖以前已有的内容MODE_APPEND

2013-12-21 17:45:19 129

原创 动态代理

ke()方法执行的过程中,会调用被代理对象与代理对象相同的方法,同时还会调用Advice的相关方法。[img]http://dl2.iteye.com/upload/attachment/0088/8833/e6b81321-99a6-3df9-b2d3-dc50d314c869.png[/img][b]2、模拟Spring的事务[/b]1)建议接口[code="java"]import java.lang.reflect.Method;public inte

2013-09-02 12:11:55 188

原创 自定义加密的类加载器

jar*AppClassLoader加载classpath指定目录下的类2、自定义加载器1)被加载的类[code="java"]public class ClassAttachment { public ClassAttachment() { System.out.println("Hello,World"); }}[/code]2)加密class的加密器[code="java"]import

2013-09-01 21:35:01 110

原创 自定义注解

2013-08-30 18:32:49 98

原创 BeanUtils的简单使用

lic class Test { private Integer x; // 此处必须要实例化,不然后面测试对象为空 private Date date = new Date(); public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public Test(Integer x) { super(); thi

2013-08-27 22:29:03 66

洪泛路由python实现

简单使用Python实现的洪泛路由算法,写得比较蠢,仅供参考

2019-03-31

javascript.html

选项卡,全选反选,等诸多简单功能的实现,代码长度很短易于理解……

2012-11-08

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

TA关注的人

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