自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(252)
  • 资源 (5)
  • 问答 (1)
  • 收藏
  • 关注

原创 Servlet 3.0的异步处理

其中第二步的业务处理通常是最耗时的,这主要体现在数据库操作,以及其它的跨网络调用等,在此过程中,Servlet 线程一直处于阻塞状态,直到业务方法执行完毕。在处理业务的过程中,Servlet 资源一直被占用而得不到释放,对于并发较大的应用,这有可能造成性能的瓶颈。Servlet 3.0新增了异步处理,可以先释放容器分配给请求的线程与相关资源,减轻系统负担,原先释放了容器所分配线程的请求,其响应将被延后,可以在处理完成(例如长时间运算完成、所需资源已获得)时再对客户端进行响应。

2024-01-02 01:26:23 1054

原创 Redis cluster集群搭建

集群至少需要6个节点(3主3从模式),每一个节点可以搭建在同一台机器上,也可以搭建在不同的服务器上。[root@localhost ~]# wget https://download.redis.io/releases/redis-6.2.5.tar.gz[root@localhost ~]# tar -zxvf redis-6.2.5.tar.gz [root@localhost ~]# cd redis-6.2.5[root@localhost redis-6.2.5]# make[r

2021-09-01 22:54:26 272 1

转载 synchronized 优化手段之锁膨胀机制!

synchronized 在 JDK 1.5 之前性能是比较低的,在那时我们通常会选择使用 Lock 来替代 synchronized。然而这个情况在 JDK 1.6 时就发生了改变,JDK 1.6 中对 synchronized 进行了各种优化,性能也得到了大幅的提升,这也是目前版本中还能经常见到 synchronized 身影的重要原因之一。当然除了性能之外,synchronized 的使用也非常便利,这也是它流行的重要原因。在众多优化方案中,锁膨胀机制是提升 synchronized 性能最有利的

2021-08-18 23:51:47 206

原创 秒懂log4j1与log4j2的区别

相信很多程序猿朋友对log4j都很熟悉,随着技术的发展,log4j的结构、性能被很多新的日志框架所替代。在设计结构上比不上slf4j,在性能上比不上logback。于是apache对垂垂老矣的log4j进行一次重生,不是优化。虽然都叫log4j但是,他们是两个完全不同的东西,为了方便区分他们,给了两个别名:log4j1、log4j2。slf4j的成功在于他的高屋建瓴,俯视一切。slf4j是日志门面(像:java的接口,没有提供任何实现),通过提供各种桥接器,适配各种日志框架(log4j1,jul等)。l

2021-03-27 20:50:15 7092

原创 RabbitMQ之消息确认机制(事务+Confirm)

https://honeypps.com/mq/rabbitmq-message-confirm-strategy/

2020-12-13 18:40:32 178

原创 javac编译debug调试

javac编译器的入口在com.sun.tools.javac.Main类中,该类在tools.jar包中。如果没有tools.jar包,自己添加一下:写一个无法编译通过的类:package com.company;public class Test { public static void main(String[] args) { Integer a = "1"; }}idea会自动检查语法,这么写是idea会报错。所有我...

2020-11-29 20:59:22 862

转载 http2

浏览速度慢?你的系统还没有升级到Http/2吗?开篇HTTP发展的心路历程上图:连接无法复用上图:设置Connection:Keep-Alive,保持连接在一段时间内不断开。上图:HTTPpipelining:建立多个连接上图:多路复用先对HTTP协议进行简单介绍1. HTTP协议 :Hyper Text Transfer Protocol(超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到...

2020-11-15 20:16:47 408

原创 docker私有仓库搭建

拉取镜像:docker pull registry:2.7docker run -d -p 5000:5000 --privileged=true -v /D/docker/registry/var/lib/registry:/var/lib/registry --name=registry registry:2.7将我docker中tomcat:8镜像上传到 本地docker镜像厂库中。由于我的ip经常变动,这里在hosts文件中将www.localRegistry.c..

2020-11-01 12:57:47 168

原创 Java 程序读取Mysql数据库时间信息与真实时间相差 13、14 小时、SQLException: HOUR_OF_DAY: 2 -> 3

CST时区引起的异常:Java 程序读取Mysql数据库时间信息,与真实时间相差 13、14 小时java.sql.SQLException: HOUR_OF_DAY: 2 -> 3原因:Mysql 驱动:mysql-connector-java 升级到8版本后。将数据库时间解析到java时间,需要获取数据库的时区。java如何数据库时区:1、数据库连接中指明的时区,就用该时区,优先级最高。datasource.urljdbc:mysql://127.0.0.1:3306/your

2020-10-12 23:58:00 4346 5

原创 SpringGateway学习

认识GatewayFilter、GatewayFilterChain在SpringGateway中GatewayFilter、GatewayFilterChain这两个类,这很容易让我们想起ServletApi中的Filter、FilterChain。他们有什么关系呢?ServletApi:public interface Filter { public void doFilter(ServletRequest request, ServletResponse response, .

2020-09-12 14:18:11 958

转载 静态代理之AspectJ编译织入

前面两篇文章都是说的在代码运行时动态的生成class文件达到动态代理的目的,那我们现在回到静态代理,静态代理唯一的缺点就是我们需要对每一个方法编写我们的代理逻辑,造成了工作的繁琐和复杂。AspectJ就是为了解决这个问题,在编译成class字节码的时候在方法周围加上业务逻辑。复杂的工作由特定的编译器帮我们做。AOP有切面(Aspect)、连接点(joinpoint)、通知(advice)、切入点(Pointcut)、目标对象(target)等概念,这里不详细介绍这些概念.AspectJ的使用如何

2020-09-05 15:41:03 2050

原创 学习springSecurit第二节-httpSecurity

前一节,我们已经了解了springSecurity的主体结构 ,这一节我们将分析HttpSecurity 是如何创建SecurityFilterChain的。HttpSecurity:HttpSecurity是用来创建SecurityFilterChain,这里要注意与WebSecurity区分,WebSecurity是用来创建Filter的。SecurityFilterChain:public interface SecurityFilterChain { boolean mat

2020-08-09 23:06:16 513

原创 学习springSecurit第一节-主体结构

@Configurationpublic class WebSecurityConfiguration implements ImportAware, BeanClassLoaderAware { /** * Creates the Spring Security Filter Chain */ @Bean(name = "springSecurityFilterChain") public Filter springSecurityFilterChain() throws Except.

2020-08-09 14:32:40 298

原创 Linux系统设置SSH免密连接

Secure Shell 协议,简称 SSH,是一种加密网络协议,用于客户端和主机之间的安全连接,并支持各种身份验证机制,目前最实用的身份验证机制就是基于密码的身份验证和基于公钥的身份验证两种。不过今天小编带来的是,Linux系统如何设置基于 SSH 密钥的身份验证。SSH秘钥登录采用的是非对称加密特点:1、公钥加的密,私钥才能解。私钥加的密,公钥才能解。2、公钥对外开放,任何人都可以获取,私钥不可泄露。张三是个linux 运维人员,管理100台linux 服务器,为了安全每台服务器的密码都不一样

2020-07-12 00:49:43 330

原创 Docker 容器开启ssh登录

Docker 容器开启ssh登录登录容器:docker exec -it containId bash修改密码:[root@c51dfb838b52 ~]# passwd查看是否已经安装了ssh服务:[root@c51dfb838b52 ~]#service ssh status安装ssh服务:linux发行版本不同自带的包管理工具也不同 常用的是apt、apt-get、yum、apk。一个一个试试。使用前一定要更新一下 apt update 、apt-get update 等安装:ap

2020-07-11 22:55:52 1584

原创 apollo配置中心(一)

1、Apollo简介Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。Apollo支持4个维度管理Key-Value格式的配置:environment (环境) application (应用) cluster (集群) namespace (命名空间)同时,Apollo基于开源模式开发,开源地址:https://github.com/ctripcorp/apoll

2020-07-04 19:19:28 2601

原创 RabbitMQ排他性队列

如果你想创建一个只有自己可见的队列,即不允许其它用户访问,RabbitMQ允许你将一个Queue声明成为排他性的(Exclusive Queue)。该队列的特点是:只对首次声明它的连接(Connection)可见。 会在其连接断开的时候自动删除。对于第一点,首先是强调首次声明,因为另外一个连接无法声明一个同样的排他性队列;其次是只区别连接(Connection)而不是通道(Channel),从同一个连接创建的不同的通道可以同时访问某一个排他性的队列。这里说的连接是指一个AMQPConnectio

2020-06-13 22:21:18 2641

转载 RabbitMQ BasicProperties

简介当使用RabbitMQ发布消息时,消息又AMQP规范中的三个低层帧类型组成:Basic.publish方法帧; 内容头帧; 消息体帧;这三种帧类型按顺序一起工作,以便消息传递时完好无损。其中,内容头帧中的消息属性是一种预定义的值,这些值通过设置Basic.Properties数据结构进行指定:content-type属性:让消费者知道如何解释消息体; content-encoding属性:指示消息体使用某种特殊的方式进行压缩或编码; message-id和correlati

2020-06-07 09:07:09 1846

原创 RabbitMQ 消息确认

正常情况下,如果消息经过交换器进入队列就可以完成消息的持久化,但如果消息在没有到达broker之前出现意外,那就造成消息丢失,有没有办法可以解决这个问题?RabbitMQ有两种方式来解决这个问题:一、事务使用事务的实现主要是对信道(Channel)的设置,主要的方法有三个:channel.txSelect()声明事务模式;channel.txComment()提交事务;channel.txRollback()回滚事务;// 创建连接ConnectionFactory facto.

2020-06-05 23:10:20 204

原创 mq

批量确认:一个消费者和rabbitmq服务器建立连接会创建一个channel ,rabbitmq每发向这个channel 发送消息,deliveryTag就会+1 ,从1开始,deliveryTag就是消息的编号 1、2、3……。deliveryTag交付标记的作用域是每个信道,所以必须在接收消息的信道上进行确认。首先发10条消息import com.rabbitmq.client.*;public class MyProducer { private final static .

2020-05-30 23:38:01 189

原创 通过 Lettuce 来操作 Redis

Java 操作 Redis 的库有两个,Jedis 和 Lettuce,目前 SpringBoot 2.x 中已经将 Jedis 换成了 Lettuce,让我们一起来看看这个东西。Redis介绍Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。相比Memcached它支持存储的类型相对更多(字符、哈...

2019-12-22 21:38:07 1677 1

原创 CompletableFuture 使用详解

CompletableFuture 使用详解1、 runAsync 和 supplyAsync方法CompletableFuture 提供了四个静态方法来创建一个异步操作。public static CompletableFuture<Void> runAsync(Runnable runnable)public static CompletableFuture&...

2019-12-22 15:39:54 7040 4

原创 spEl 表达式

Spring 表达式语言 Spring Expression Language(简称 SpEL )是一个支持运行时查询和操作对象图的表达式语言 。 语法类似于 EL 表达式 ,但提供了显式方法调用和基本字符串模板函数等额外特性 。SpEL 虽然作为 Spring 家族中表达式求值的基础,但却可以被独立使用。依赖:<dependency> <groupId>o...

2019-12-08 22:19:01 251

原创 windows键盘在 mac 上的设置

windows键盘在 mac 上的设置在默认设置下:windows 键盘插入mac 电脑,在默认设置下:键盘上 Shift 键会被 mac 识别为 Shift 键盘上 Ctrl 键会被 mac 识别为 Control 键盘上 Win 键会被 mac 识别为 Command 键盘上 Atl 键会被 mac 识别为 Option情况1:如果你已经习惯了...

2019-12-08 14:35:48 20013 1

转载 cglib

什么是CGLIBCGLIB(Code Generator Library)是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。Hibernate作为一个比较受欢迎的ORM框架,同样使用CGLIB来代理单端(多对一和一对一)关联(延迟提取集合使用的另一种机制)。为什么使用CGLIBCGLIB代理主要通过对字节码的操作,为对象引入间接...

2019-11-24 21:01:38 254

原创 Java Bridge Method

bridge method如果一个类继承了一个范型类或者实现了一个范型接口, 那么编译器在编译这个类的时候就会生成一个叫做桥接方法的混合方法(混合方法简单的说就是由编译器生成的方法, 方法上有synthetic修饰符), 这个方法用于范型的类型安全处理, 用户一般不需要关心桥接方法。实例://范型接口public interface Parent<T> { v...

2019-11-18 23:08:40 245

原创 git

diff$ git diff #比较工作区和缓存区的不同$ git diff --cached #比较缓存区和 HEAD 不同$ git diff HEAD #比较工作区和 HEAD 不同,就里的 HEAD 也可换成任意版本号例比较工作区和缓存区的不同:比较缓存区和 HEAD 不同:比较工作区和 HEAD 不同,就里的...

2019-11-16 11:00:31 458

原创 git 实例

实例一、git使用过程中使用reset 进行版本回退。原始版本文件:对 test1目录中的三个文件进行改动:file1_1.txt修改、file1_2.txt 删除、file1_3.txt重命名、file1_4.txt 新增。并 commit。对 test2目录中的三个文件进行改动:file2_1.txt修改、file2_2.txt 删除、file2_3.txt重命名...

2019-11-16 10:59:21 180

原创 docker 各种容器的配置

mysqldocker run -p 3307:3306 --name mysql -v /docker/mysql/conf:/etc/mysql/conf.d -v /docker/mysql/logs:/logs -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=hong10086 -d mysql:5.7.27...

2019-11-02 23:25:24 463

原创 jenkins 构建 maven 项目

jenkins 构建 maven 项目选择第二个构建一个 maven 项目 。如果没有该选项需要安装Maven Integration插件。从上到下的配置是(构建时也是按照从上到下进行执行的):1.General就是项目详情,根据项目情况实际情况随意填写.2.源码管理源码的位置,是在 git 上还是在 svn 上,并填写拉取地址。这里用的是 git作为演示,Repositor...

2019-11-02 15:24:33 343

转载 dockerFile

什么是dockerfile?Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。docker build 命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。例:docker build -f /path/...

2019-10-30 16:12:49 177

原创 java valid

定义的校验类型@Null :验证对象是否为null @NotNull 验证对象是否不为null, 无法查检长度为0的字符串@NotBlank:检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.@NotEmpty:检查约束元素是否为NULL或者是EMPTY.@CreditCardNumber:信用卡验证@Email:验证是否是邮件地址,如...

2019-10-18 21:47:33 1337

原创 ElasticSearch安装

一、安装Java SE环境在安装Elasticsearch引擎之前,必须安装ES需要的软件环境注意:运行需要jdk1.8及以上二、安装ElasticSearch(一)下载ElasticSearch官网:https://www.elasticsearch.orgElasticSearch下载地址:https://www.elastic.co/downloads/elasti...

2019-09-04 15:43:32 194

原创 git 公钥私钥生成

1、安装git2、进入git安装目录双击bash.exe输入:ssh-keygen -t rsa -C "邮箱@qq.com"

2019-09-03 17:16:40 164

原创 Java 正则表达式

ava 正则表达式。java.util.regex 包主要包括以下三个类:Pattern 类: pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。 Matcher 类: Matcher 对象是对输入字...

2019-09-02 15:28:26 197

原创 Spring五个事务隔离级别和七个事务传播行为

事务隔离级别隔离级别 1 DEFAULT 使用底层数据库的默认隔离级别,大部分数据库,默认隔离级别都是READ_COMMITED 2 READ_UNCOMMITED 允许事务读取未被其他事务提交的更改。脏读,不可重复读,幻读都可能会出现. 3 READ_COMMITED 只允许事务读取已经被其他事务提交的更改,可以避免脏读,但不可重复读和幻读问...

2019-08-25 17:42:39 902

转载 SPI机制

JAVA拾遗--关于SPI机制JDK提供的SPI(Service Provider Interface)机制,可能很多人不太熟悉,因为这个机制是针对厂商或者插件的,也可以在一些框架的扩展中看到。其核心类java.util.ServiceLoader可以在jdk1.8的文档中看到详细的介绍。虽然不太常见,但并不代表它不常用,恰恰相反,你无时无刻不在用它。玄乎了,莫急,思考一下你的项目中是否有用到...

2019-08-19 14:14:37 185

原创 BigDecimal加减乘除计算

public static void main(String args[]) { Double d1 = 1d; Double d2 = 0.3d; BigDecimal v1 = new BigDecimal(d1); BigDecimal v2 = new BigDecimal(d2); BigDecimal s...

2019-08-14 16:02:52 551

原创 Spring BeanWrapper

BeanWrapper这个接口主要用来操作一些标准的JavaBeans。对Bean属性的操作,封装了一个bean的行为,诸如设置和获取属性值等。大家熟知的主要有下面的工具类(Apache的BeanUtils和PropertyUtils、cglib的BeanMap和BeanCopier、spring的BeanUtils),但是Spring里有有一个更加强大的BeanWrapper操作类(支持设置嵌套...

2019-08-08 17:11:51 532

原创 mybatis 插件

Mybatis插件又称拦截器,本篇文章中出现的拦截器都表示插件。Mybatis采用责任链模式,通过动态代理组织多个插件(拦截器),通过这些插件可以改变Mybatis的默认行为(诸如SQL重写之类的),由于插件会深入到Mybatis的核心,因此在编写自己的插件前最好了解下它的原理,以便写出安全高效的插件。MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBat...

2019-08-07 16:12:20 369

pl/sql中文版 免安装

pl/sql中文版 免安装 ,plsql使用前请安装完整版的oracle客户端 或 下载精简版oracle文件,在plsql中将文件与plsql进行关联。

2017-10-27

oracle11g 32位 客户端 client

oracle11g客户端,包含安装图解教程,可以在百度云下载。

2017-10-27

只有windows oracle10g 32位 客户端 client

只有windows oracle32位客户端已上传到百度云,有需要的可以下载保证好用。

2017-10-27

binary viewer 文件二进制查看器

binary viewer 文件二进制查看器

2017-07-31

分布式数据库唯一主键设计

分布式数据库唯一主键设计

2017-06-10

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

TA关注的人

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