自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Crg的博客

createdByCrg

  • 博客(58)
  • 收藏
  • 关注

原创 Spring Application Event 在事件驱动设计中的应用

Spring Application Event 在事件驱动设计中的应用,在系统建设过程中通常会遇到两个不同领域耦合的老代码和基于系统规模和时间成本不得不采用妥协方案而导致的耦合,为了应对这种工程实践的现状,考虑可扩展、易维护、可拆分,我们在无法对其进行服务级别隔离时,可以考虑通过事件发布和监听的手段将需要协同处理业务的不同领域代码进行依赖分离

2023-11-29 18:20:24 1001

原创 设计模式在实际业务中应用 - 模版方法

作者在工作中主要主导 A 业务线的系统建设,A 业务线主要是零售场景酒水的售卖与即时配送服务。为了方便运营在自研系统中对多平台商品进行管理而开发的三方平台商品管理功能,本次介绍的模版方法模式则是在该功能开发过程中的落地实践。

2023-11-28 23:02:49 690

原创 基于 ECDSA(椭圆曲线数字签名算法)生成 JWT Token

ECDSA(椭圆曲线数字签名算法)生成 JWT Token

2023-09-26 19:05:54 213

原创 Bean validation 最佳实践

Bean Validation 2.0 (JSR 380) 是 Java EE 和 Java SE 中用于 JavaBean 验证的 Java API 规范。

2023-08-10 20:47:05 265

原创 领域驱动 - 开篇

作者在 2019 年入职一家公司,主要负责企业内部 ERP 系统建设。在我入职时该系统已经是一个庞大的单体项目,项目复杂度已经对日常更新迭代造成很大影响。通常我们在一个不了解的业务领域进行功能迭代时会通过产品设计文档、技术方案设计文档、业务代码对整个业务领域功能设计、业务流程设计、技术设计进行充分的了解,然而现状是产品设计文档、技术方案设计文档缺失或者版本很老,开发人员只有通过代码来了解整个业务领域的现状以及一些设计细节。

2023-07-02 23:15:50 115

原创 通过 Maven 命令将 jar 包推送到私服

文章目录通过 Maven 命令将 jar 包推送到私服1. 命令2. 命令选项说明2.1. 选项:-DgroupId2.2. 选项:-DartifactId2.3. 选项:-Dversion2.4. 选项:-Dpackaging2.5. 选项:-Dfile2.6. 选项:-Durl2.7. 选项-DrepositoryId3. 使用场景说明通过 Maven 命令将 jar 包推送到私服1. 命令mvn deploy:deploy-file -DgroupId=com.ele -DartifactId=

2021-10-26 10:41:07 2137

原创 基于 Jenkins 定时作业的上线执行人机器人通知

基于 Jenkins 定时作业的上线执行人机器人通知1 shell script#!/bin/bash# 参与人员来源可以是文本、网络、数据库都可以release_personnel_array=('A同学' 'B同学' 'C同学' 'D同学')# 上一个人员previous_personnel=$(cat ../release.txt)# 当前人员current_personnel=''break_flag=0for (( i = 0; i < ${#release_person

2020-11-11 21:38:18 190

原创 策略模式在实际业务场景中的使用及优化

策略模式在实际业务场景中的使用及优化策略模式(Strategy Pattern):定义不同的策略算法,以达到新增算法、移除算法、修改算法的便利性和调用无感知,并且不同的算法区分开之后也更加方便阅读策略算法。(个人理解)一、我在什么场景下使用策略模式1、业务场景在项目开发中有业务需求要对不同类型的加工单做不同的复杂业务校验。2、我为什么要使用策略模式该加工单大概率不会有新增,但...

2019-09-30 10:29:01 2163 4

原创 Idea Mac 2019.2.1和2019.2.2版本敲代码卡顿问题

Idea Mac 2019.2.1和2019.2.2版本敲代码卡顿问题前言:博主最近将电脑替换成2019款MacBookPro13.3 后安装了Idea最新的版本来进行开发工作,但是在开发过程中发现敲代码卡顿尤其中文键入时,非常影响效率。然后开始了寻找解决方案,目前经过实际测试已经正常。电脑配置为I5 2.4GHZ、16GB运行内存、256GBSSD。一、尝试更新版本解决问题从Idea...

2019-09-21 11:24:37 2911 2

原创 升级Https前的可行性验证(一)

升级Https之前的可行性验证注意:自签证书和Nginx的安装都基于ContOS 6一、如何申请OpenSSL自签证书1、安装OpenSSL(一)OpenSSL 工具下载下载地址(二)OpenSSL 安装参考博客查看服务器是否安装有OpenSSLopenssl version -a将下载的OpenSSL源码上传至Linux服务器可以使用X...

2018-08-17 18:15:46 579

原创 多线程 -- 使用线程池时如何接收另外一个线程池中执行代码的返回值

前言:最近在处理实际业务时遇到一个问题,订单表中有50-100万数据需要生成订单流水。应用部署在了四台服务器上,如何在竞争到锁的服务器上处理订单生成订单流水的速度更快,考虑使用一个线程池去负责读取数据,一个线程池负责去插入数据,在此之前先编写一个Demo类来测试方案是否可行。一、首先回顾一下创建线程的三种方式 1、Thread类class testTask extends Thread{...

2018-07-27 18:28:39 2115

原创 Spring Boot - 使用Spring Boot构建SM项目

前言:第一次使用Spring Boot开发项目,之前时从Spring+Spring Mvc+MyBatis过渡过来的,先来个小Demo。一、首先我们需要先创建一个基于SpringBoot的项目(我这里使用的是IDEA) 1、首先打开IDEA,new project 2、点击Spring Initializr,然后点击Next 3、创建项目 二、搭建SM架构 1、找到p...

2018-07-17 19:56:58 1290

原创 Chrome 添加印象笔记网页剪辑插件

前言:在网页上浏览时看到好的文章想要收藏到印象笔记中,印象笔记提供了网页剪辑的插件支持多个浏览器,但是在谷歌浏览器中无法直接安装印象笔记的.crx格式的插件。百度了一下都比较散,在这里总结一下,从下载到安装。一、下载印象笔记网页剪辑插件 1、访问印象笔记官网下载网页剪辑插件 网页剪辑插件下载地址2、下载时需要注意国内无法访问Chrome商店,在Chrome商店下载提供了...

2018-05-05 10:25:59 5769 1

原创 IDEA 部署Web项目能够访问到TomCat服务器但是无法访问项目内资源问题

前言:从Eclipse转IDEA使用过程中发生了一些问题,在这里做一下分享。问题描述:在Eclipse中部署项目到Tomcat后访问项目资源localhost:8080/项目名/访问资源路径,但是在IDEA 中使用此路径无法访问到项目资源。一、Eclipse部署项目的访问路径 二、问题原因 导致这个问题的原因是IDEA部署项目到TomCat默认忽略项目名,所以Eclipse中部署项...

2018-04-26 12:46:33 18118 4

原创 Java -- 获取实现接口的泛型的参数化类型和实际类型参数

前言:在向上抽取功能时可能会有需要获取到实现接口的实际泛型参数类型这样的需求,分享一下自己实现的方法。一、Java 代码直接上代码,代码上有注释,对API做了相应的解释。public BasicAction(){ try { //获取子类字节码文件对象,this代表的是子类对象。 Class clazz = thi...

2018-04-02 10:35:09 7750

原创 SpringDataJpa -- 多条件查询

前言:使用SpringDataJpa 进行多条件查询。一、单表的多条件查询@Override public Page&lt;Courier&gt; pageQuery(Courier model, Pageable pageable) { //封装查询对象Specification Specification&lt;Courier&gt; exam...

2018-03-31 17:58:44 10872 5

原创 Hibernate -- NoSession问题分析和解决

前言:对Hibernate出现NoSession问题进行分析和解决。一、问题分析 1、为什么会出现NoSession? ① 从字面理解NoSession的原因是没有获取到Session,那为什么获取不到Session了,通常在Service层中所有Dao层操作完毕提交事务后,Session就会被关闭。在此时如果再次执行Dao层操作就必须获取Session,但是Session已经关闭所有就...

2018-03-31 17:42:16 1840

原创 SpringDataJpa -- NoSession问题分析和解决

前言:对SpringDataJpa NoSession问题进行分析和解决。一、问题分析1、为什么会出现NoSession? ① 从字面理解NoSession的原因是没有获取到Session,那为什么获取不到Session了,通常在Service层中所有Dao层操作完毕提交事务后,Session就会被关闭。在此时如果再次执行Dao层操作就必须获取Session,但是Session已经关闭所...

2018-03-31 17:28:56 3234

原创 Apache POI -- 读取Excel文件数据导入到数据库

前言:使用Apache 旗下 POI读取Excel文件中的数据插入到数据库。一、导jar包 ① poi ② poi-ooxml ③ poi-ooxml-schemas ④ dom4j ⑤ xmlbeans二、解决03和07版本不同API问题1、判断文件后缀.xls或者.xlsx,来使用HSSFWorkbook(03)还是XSSFWorkbook(07)API。2...

2018-03-31 12:52:31 779

原创 在无网络情况下配置dtd本地约束

前言:在很多框架的使用中需要配置XML文件,而在XML文件中需要添加dtd约束。在有网络条件下可以提示所要配置的标签,但是在无网络条件下我们则需要配置dtd本地约束。这里以Struts2为例,其他框架的配置相同!一、首先我们需要找到struts2核心jar包 二、解压struts2核心jar包,并找到XML配置中的dtd约束对应的dtd文件 三、在磁盘中新建一文件夹存放所有需要...

2018-02-26 18:38:23 763

原创 JavaWeb使用Filter、动态代理对客户端请求服务端参数中文乱码解决

一、代理模式 代理模式传送门:博客地址二、Java动态代理 Java动态代理传送门:博客地址 三、乱码解决思路 对原有的HttpServletRequest类中的getParameter()方法进行增强。对方法进行增强三种方式: ① 继承,覆盖原有方法(在解决乱码中不可用,HttpServletRequest是TomCat创建) ②装饰设计模式(在解决乱码中可用) ③动态代理

2018-01-26 23:45:27 288

原创 代理模式 -- 动态代理

前言: 根据静态代理来实现Java中的动态代理模式。一、什么是代理模式和静态代理 前往上一篇博客的传送门:博客地址二、静态代理和动态代理的区别 在静态代理中代理对象需要我们自己手动创建,在动态代理中将自动创建代理对象而不需要我们手动创建。三、根据之前博客中案例,实现Java中的动态代理 将代理者剔除之后的代码为:1、房东接口/** * * @author 大家都说

2018-01-26 23:29:47 189

原创 代理模式 -- 静态代理

一、代理模式介绍 1、代理模式简介 代理模式(Proxy),为其他对象提供一种代理以控制这个对象的访问。–引用至《大话设计模式》2、代理模式组成 ①访问者 ②代理者 ③被代理者3、现实生活中案例 二、Java代码模拟代理模式(静态代理) 1、房东接口/** * * @author 大家都说名字长不会被发现 * 房东接口 */public interf

2018-01-26 22:42:10 183

原创 NoSql Redis(键值对数据库)的学习

一、具有代表性的非关系型数据库 Redis(键值对数据库)、mongoDB(文档数据库)、Hbesa(列存储数据库)、Neo4j(图形数据库)二、Redis 五种数据类型1、字符串类型 2、散列类型 3、列表类型 4、集合类型 5、有序集合类型三、Redis常用命令 1、字符串 set key value //赋值 get key //获取指定key的val

2018-01-24 16:13:25 3078

原创 Linux 命令汇总

Linux 命令汇总1.cd home 切换到指定目录中 2. cd ../ 回到上一级目录 3. cd / 回到系统根目录 4. cd - 回到上一次操作目录 5. cd ~ 回到用户目录 6. ls 查看当前文件夹下所有文件和文件夹 7. ls -l(ll) 查看文件夹下所有文件和文件夹所有详细信息 8. ls -a 查看文件夹下所有

2018-01-24 15:59:15 569

原创 服务端Filter执行流程图

服务端Filter执行流程图

2018-01-24 15:39:21 628

原创 重定向和转发过程图

重定向和转发过程图

2018-01-24 15:38:25 355

原创 客户端请求服务端动态数据过程图

客户端请求服务端动态数据过程图

2018-01-24 15:37:31 1036

原创 客户端访问服务端Web应用服务器工程资源过程图

客户端访问服务端Web应用服务器工程资源过程图

2018-01-24 15:29:55 870

原创 客户端使用域名访问服务器过程图

客户端使用域名访问服务器过程图

2018-01-24 15:28:09 1870

原创 JavaSE练习 - DBUtils的使用

前言:对简化JDBC操作使用工具DBUtils的使用练习。一、添加jar包 项目下新建lib包,复制commons-dbutils-1.6.jar 到lib包下。右键buildpath –>Add to buildpath。二、代码使用package cn.itcast.javaeevideoday03;import java.sql.Connection;import java.sql.Pre

2017-12-19 21:15:44 290

原创 JavaSE练习 - Dbcp连接池的使用

前言: 对连接池Dbcp的使用回顾练习一、导入jar包 项目下新建lib包,复制commons-dbcp-1.4.jar 和 commons-pool-1.5.6.jar到lib包下。右键buildpath –>Add to buildpath。二、添加配置文件配置文件名:dbcp-config.properties配置文件内容:#基本配置内容driverClassName=com.mysql.

2017-12-19 20:25:45 175

原创 JavaSE练习 - c3p0连接池的使用

前言:使用c3p0 连接池的回顾练习。一、导入jar包 项目下新建lib包,复制c3p0-0.9.1.2.jar 到lib包下。右键buildpath –>Add to buildpath。二、添加配置文件 注意:c3p0 在使用默认配置文件情况下对配置文件有严格要求,文件名及标签都必须一样。同样也支持代码中设置配置信息,如果在src下添加了配置文件,同时又在代码中设置了配置信息

2017-12-19 20:05:39 411

原创 JavaSE练习 - JDBC操作数据库

前言:对Java提供的数据库访问规则(JDBC)进行回顾练习。一、导入jar包 项目下新建lib包,复制mysql-connector-java-5.1.37-bin.jar 到lib包下。右键buildpath –>Add to buildpath。二、使用步骤 1.注册驱动. 2.获得连接. 3.获得语句执行平台 4.执行sql语句 5.处理结果 6.释放资源.三、代码实现

2017-12-19 16:51:26 269

原创 MySQL学习 - Sql语句汇总

/*创建数据库*/CREATE DATABASE 数据库名;/*切换到指定数据库*/USE 数据库名;/*创建表*/CREATE TABLE 表名( /*字段*/ 字段名 字段数据类型 约束; id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,(字段id INT类型 自增长 主键 不能为空) `name` VARCH

2017-12-19 15:48:37 189

原创 MySql练习 多对多表练习-用户角色权限表

前言:对数据库知识回顾,创建数据库、创建表、主键约束、外键约束、表关系(多对多)。一、表描述 一张用户表,一张角色表,一张权限表。一个用户对应多个角色,一个角色对应多个用户同时对应多个权限,一个权限可以对应多个角色。以下为Sql语句:-- 创建数据库CREATE DATABASE day19hometest;-- 切换到指定数据库USE day19hometest;-- 创建用户表

2017-12-16 11:55:13 3901

原创 JavaSE练习 - BeanUtils的使用综合案例

前言:使用BeanUtils简化bean对象数据分装,对象创建使用反射,XML解析使用dom4j。一、导入jar包 项目目录下新建文件夹lib,添加commons-beanutils jar包、commons-logging jar包和dom4j jar包到lib文件夹下,选中三个jar包右键buildpath –>Add to buildpath。二、编写xml文件<?xml versi

2017-12-13 16:05:58 252

原创 Java SE练习 - 对dom4j解析、反射的综合练习

前言:对dom4j、反射使用的一个综合练习。一、编写XML文件<?xml version="1.0" encoding="UTF-8"?><beans> <student className="cn.itcast.javaeevideoday02.Student"> <name>张三</name> <age>18</age> <sex>男</

2017-12-13 14:41:07 351

原创 Java SE练习 - 反射获取对象构造方法、成员变量、成员方法

前言:反射使用回顾一、获取字节码文件对象的三种方式,推荐使用第三种方式//获取字节码文件对象的三种方式 //方式一 Class c1 = Student.class; //方式二 Student stu = new Student(); Class c2 = stu.getClass(); //方式三

2017-12-13 11:35:12 1069

原创 JavaSE练习 XML解析-Dom4j使用

前言:对Dom4j解析XML文件回顾练习。一、添加jar包 在项目下新建lib文件夹,将dom4j解析jar包复制到该路径,点击jar包右键BuildPath–>Add to buildpath 二、创建XML文件,编写XML<?xml version="1.0" encoding="UTF-8"?><beans> <student className="cn.itcast.ja

2017-12-13 10:40:17 184

空空如也

空空如也

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

TA关注的人

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