自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring事务的传播级别

所有方法在同一个事务中运行,要么一起成功提交事务,要么一起回滚事务,如果单独执行,各自单独开启各自事务。PROPAGATION_REQURIED_NEW所有方法使用各自的事务,各自提交或者回滚各自的事务,相互之间不会造成影响。如果嵌套执行的方法要求各自事务独立,不能进行相互影响,则选择本事务传播级别。如果嵌套执行的方法要求一起执行成功或者一起回滚,单独执行时候以非事务方式执行,则选择该事物传播级别。

2023-03-30 11:11:45 192 1

转载 利用JVM在线调试工具排查线上问题

利用JVM在线调试工具排查线上问题在生产上我们经常会碰到一些不好排查的问题,例如线程安全问题,用最简单的threaddump或者heapdump不好查到问题原因。为了排查这些问题,有时我们会临时加一些日志,比如在一些关键的函数里打印出入参,然后重新打包发布,如果打了日志还是没找到问题,继续加日志,重新打包发布。对于上线流程复杂而且审核比较严的公司,从改代码到上线需要层层的流转,会大大影响问题排查的进度。这个时候我们可以使用能够在线调试的工具帮助我们查找问题,例如btrace,可以动态的插入代码,极大

2020-10-17 19:36:46 618

原创 spring AOP对父类方法加强分析

spring AOP可以对方法进行加强,就是在方法前执行一些想要的事情,执行方法后想执行一些信息,原理就是利用动态代理,具体不在阐述今天要讨论的是一个springBean继承了父类,在父类里进行了方法加强,子类调用父类的方法,父类方法会加强吗?注解@CommonLogger是我利用AOP Aspect写的一个打印方法参数的注解,就是在方法上加了这个注解,这个方法的参数就会打印出来,并且对日志进...

2019-01-15 21:22:03 5986 1

原创 利用责任链模式及AOP对日志进行脱敏分享

利用责任链模式及AOP对日志进行脱敏分享现在公司需要对日志进行脱敏,对一些敏感的值需要掩码处理,已保护用户的数据的安全,对脱敏的字段包括姓名、身份证号码、手机号码、银行账号、邮箱等。思路如下:1、如何匹配这些字段,想到的是有两种,一种是对字段名的判断,这种有可能会误伤一些字段,但考虑到只是对字段的掩码并且只是日志,误伤也应该没事,另外一种是对字段的值用正则表达式判断2、对每个字段都...

2018-09-04 16:21:25 1866 1

转载 spring中Aware结尾常用接口说明

文章转自http://blog.csdn.net/javaloveiphone/article/details/52143126一、关于spring中Aware结尾接口介绍:Spring中提供一些Aware结尾相关接口,像是BeanFactoryAware、 BeanNameAware、ApplicationContextAware、ResourceLoaderAware、ServletConte...

2018-03-04 19:26:54 606

原创 spring BeanFactory接口子类及其实现类

Spring实例化Bean后,然后存入spring容器中,而spring容器多种多样,但最终还是落到BeanFactory中,所有的容器要么是BeanFactory的子类的实现要么就是BeanFactory本身的实现BeanFactory的子接口有如下:ApplicationContext, AutowireCapableBeanFactory, ConfigurableApplicationCo...

2018-02-09 11:15:50 7563

原创 Spring ApplicationContext容器启动refresh方法简单分析

ApplicationContext容器启动过程代码分析@Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing

2018-02-07 17:04:10 3614

原创 属性编辑器PropertyEditorSupport在spring中的应用

当我们通过xml定义bean的时候,如果bean中的有的属性是Date类型,而我们在xml中给这个属性赋值,然后实例化这个bean时,却会报类型转换错误,如下org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'propertyEditorBean' defined i

2018-02-01 19:09:25 819

原创 spring xml解析源码序列图

2018-01-24 21:50:42 355

原创 spring bean实例化源码调用序列图

spring源码中bean的实例化极其复杂,以下图仅仅是主要类的主要方法调用关系原文件.vsd可以从https://gitee.com/simba-hua/springsource.git下载

2018-01-24 21:34:49 482

原创 spring中depends-on与look-up的作用

depends-on的作用depends-on的作用一般是一个bean依赖于另外一个bean,被依赖的bean一般用于一些初始化和收尾的工作  如在这个例子中,DependentBean依赖于ResourceBean,  ResourceBean主要用于指定文件路径、打开文件、和关闭文件流  而DependentBean只负责写文件,这样更能体现单一职责  另外需要关注两个bean的init和de

2018-01-19 09:13:48 790

原创 hiberante三种状态的特征总结

hibernate的状态分为三种,分别是临时态、持久态和游离态临时态指的是session中没有,数据库中也没有,有以下几种情况会是临时态1、刚new出来的对象,但id不在数据库表中存在并且没有执行save之前,如果在数据库中存在就是游离态了。2、从数据库中查询出,然后delete掉后,此时也是临时态持久态指的是session中有,数据库中也有的情况,有以下几种情况会是持久态1、

2017-12-19 18:22:03 533

转载 Redis五种数据类型介绍

概述Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,有序集合。本文详细介绍这五种数据类型的使用方法。本文命令介绍部分只是列举了基本的命令,至于具体的使用示例,可以参考Redis官方文档:Redis命令大全字符串类型字符串是Redis中最基本的数据类型,它能够存储任何类型的字符串,包含二进制数据。可以用于存储邮箱,JSON化的对象,甚至是一张图片,一个字

2017-12-04 19:42:54 225

转载 mysql的sql执行计划详解

引言:实际项目开发中,由于我们不知道实际查询的时候数据库里发生了什么事情,数据库软件是怎样扫描表、怎样使用索引的,因此,我们能感知到的就只有sql语句运行的时间,在数据规模不大时,查询是瞬间的,因此,在写sql语句的时候就很少考虑到性能的问题。但是当数据规模增大,如千万、亿的时候,我们运行同样的sql语句时却发现迟迟没有结果,这个时候才知道数据规模已经限制了我们查询的速度。

2017-11-14 21:25:11 233

原创 openresty 安装nginx和lua

安装pcremkdir /usr/local/openrestycd openrestywget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gztar -zxvf  pcre-8.35.tar.gzcd pcre-8.35yum install -y gcc gcc-c++

2017-11-05 21:47:11 644

原创 Spring boot 过滤返回对象属性遇到的各种坑

Spring boot 过滤返回对象属性遇到的各种坑在很多的应用场景中,我们从后台查询出来的对象数据并不想把所有的字段返回到前台,特别是一些敏感的字段,如密码,解决这种问题有一下几种方式可以查询数据库的时候不要查询出来,这里我不想讨论这个这种情况了还有一种情况就是在实体中,如果某个字段不要显示,则在其get方法前加上注解@JsonIgnore 以上两种都不灵活,如果有的地方要显示这个字段,有的

2017-10-20 22:35:23 29419 11

原创 redis系列之数据库与缓存数据一致性解决方案

redis系列之数据库与缓存数据一致性解决方案                                                                                  -- 来自中华石杉老师视频数据库与缓存读写模式策略写完数据库后是否需要马上更新缓存还是直接删除缓存?(1)、如果写数据库的值与更新到缓存值是一样的,不需要经过任何的计算,可以...

2017-09-03 17:09:58 72008 46

原创 redis系列之sentinel(哨兵)

redis系列之sentinel1、哨兵sentinal,中文是哨兵哨兵是redis集群中非常重要的一个组件,功能如下(1)、集群监控,负责监控redis master和slave是否正常工作(2)、消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知管理员(3)、故障转移,如果master node挂了,自动转移到slave node上(4)、配置

2017-08-24 16:14:40 590

原创 redis系列之主从复制原理

redis系列之主从复制原理主从的意义1、redis要达到高可用、高并发,只有单个redis是不够的,单个redis也就只能支持几万的QPS,所以必须以集群的形式提供服务,而集群中又以多个主从组成2、主从是以多个redis集合在一起,以一个master多个slave为模式对外提供服务,master主要以写为主,slave提供读,即是读写分离的情况,以读多写少为准,如果写比较多的情况一般

2017-08-24 11:53:35 1820

原创 redis系列之数据备份与恢复

redis系列之数据备份与恢复数据备份RDB存储策略(1)、周期性持久化(2)、当触发存储时,就会fork产生子进程执行持久化操作(3)、RDB 文件一旦被创建, 就不会进行任何修改。 当服务器要创建一个新的 RDB 文件时, 它先将文件的内容保存在一个临时文件里面, 当临时文件写入完毕时, 程序才使用 原子地用临时文件替换原来的 RDB 文件。这也就是说, 无论何时,

2017-08-23 23:10:08 2211

转载 Redis Sentinel 机制详解

概述Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自懂切换。它的主要功能有以下几点

2017-08-20 18:46:26 318

转载 高性能WEB服务器——之Jetty (N)I/O组件

简介:Jetty是一个当前非常活跃的并且很有前景的Servlet引擎和WEB容器。本文所讨论的主题建立在Jetty 9版本之上,通过本文对Jetty I/O的组件结构的介绍,您将充分了解到Jetty是如何做到支持高并发网络请求的。(一)先简单谈谈I/OJetty是一个WEB容器,所以本文所讨论的I/O主要是面向流的I/O,即:针对网络连接的I/O。UNIX下的五种I/O模型,分别是:

2017-08-02 16:19:05 775

原创 Spring的七个事务传播行为

Spring的七个事务传播行为Spring事务种类Spring事务含有七个级别,分别如下:REQUIREDREQUIRED是Spring的默认事务级别,如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务,具体表现在方法上加入注解@Transactional(rollbackFor=Exception.class,propagation = Propagation.RE

2017-07-31 21:09:45 1235

原创 Spring boot 用mybatis连接数据库

环境准备建立Spring boot应用需要安装STS,不安装直接新建maven项目会报各种问题,反正我没有成功。eclipse安装STS在help菜单中点击”Eclipse Marketplace“,然后切换到popular选项,然后选择STS,install创建Spring boot应用安装STS后,右键新建Spring starter Project,type 选择Maven,填写

2017-07-31 20:47:08 3723

原创 利用Netty的ChannelBuffer自定义序列化

利用Netty的ChannelBuffer自定义序列化先定义ChannelBuffer工厂package com.shux.common.serializer;import org.jboss.netty.buffer.ChannelBuffer;import org.jboss.netty.buffer.ChannelBuffers;/** * ChannelBuffer工

2017-07-23 18:21:37 3013

原创 自定义注解及利用AOP对方法进行加强处理

自定义注解及利用AOP对方法进行加强处理自定义注解自定义的关键字为@Interface原注解原注解是注解的注解,有一下几种@Retention: 定义注解的保留策略@Retention(RetentionPolicy.SOURCE)   //注解仅存在于源码中,在class字节码文件中不包含@Retention(RetentionPolicy.CLASS)

2017-07-21 21:20:50 1090

原创 JDK1.8函数式编程Predicate及Consumer的用法

FunctionalInterfaceFunctionalInterface关键字是放在接口中的注解,用于标示此接口可用于函数式编程形式 如”() ->{}“ 的写法,形式如下@FunctionalInterfacepublic class Flyer{ String fly(String name);}@FunctionalInterface只能用在中只有一个虚方法的接口中,但

2017-07-21 20:23:56 1881

原创 数据库事务隔离级别及相关实例

数据库事务隔离级别分类数据库事务级别分为不可重复读、幻想读和脏读。不可重复读不可重复读的意思是事务T1读取了一条数据,然后T2修改了这条数据,然后T2提交事务,T1再次查询,查询到的数据与之前不同。即一个事务两次读取同一条数据,得到的数据不一致,其中的原因是在两次查询的间隔内另外一个事务更改了此数据导致的。例子如下:

2017-05-31 11:31:11 483

原创 Java中HashMap的实现原理分析

JAVA中基本存储结构java中基本数据存储结构分为数组和链表,各有各特点,不过都比较极端数组数组的存储是连续的,占用空间大,如果数组较大,而剩余的空间不够存储的话,剩余的存储空间就会浪费,占用内存严重,空间复杂度大,优点是查询速度快,但插入删除慢链表链表占用空间不连续,比较分散,占用内存比较宽松,空间复杂度较小,时间复杂度较大,查找比较困难,插入删除快。哈希表哈希表结

2017-05-11 18:12:29 398

原创 redis 集群搭建及相关命令

redis 集群安装1、下载redis 安装包redis-3.0.7.tar.gz2、tar -zxvf redis-3.0.7.tar.gz 解压安装包3、进入根目录,make 编译4、进入src,make install 安装5、新建目录/usr/local/redis/bin   /usr/local/redis/etc6、拷贝redis-server red

2017-04-28 20:12:11 427

原创 linux常用命令

ps aux | grep redis 查看进程是否启动  查看redis是否运行ps -ef | grep 8080 查看端口是否被占用chkconfig iptables on 永久性开启防火墙chkconfig iptables off 永久性关闭防火墙systemctl stop firewalld --centos7 永久性关闭防火墙service iptables

2017-04-28 20:08:15 353

原创 mysql 批量插入数据优化

1、把insert into tablename(c1,c2,c3)values(v1,v2,v3);insert into tablename(c1,c2,c3)value(v4,v5,v6);变更为insert into tablename(c1,c2,c3)values(v1,v2,v3),(v4,v5,v6);效率会快很多,在用到hibernate框架时,千万不要用hiberante的ba

2017-04-26 11:40:05 803

转载 mysql分表与分区的区别

一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,具体请参考mysql分区功能详细介绍,以及实例 二,mysql分表和分区有什么区别呢 1,实现方式上 a),mysql的分表是真正的分表,一张表分成很多表后,每一个小表都是完

2017-04-25 16:11:24 379

转载 Java 中的悲观锁和乐观锁的实现

锁(locking)业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的“锁”,即给我们选定的目

2017-04-17 11:11:14 418

原创 阿里巴巴面试题及注意点

第一轮:电话初面第二轮:技术面谈【技术职位尽量避免谈管理上的工作】第三轮:高管复试第四轮:HR最后确认一面:面试官一般会针对您所做过的项目来做具体技术的交流,会比较关注个人对项目细节是不是掌握到位,主要考察java的技术基础和原理,比如Spring框架以及数据库和JVM三个方面,也会交流到分布式、线程池的实现等等,重点考察是不是有比较钻研技术和技术上的亮点【不一定每个面都很

2017-04-16 22:18:42 3282

原创 zookeeper分布式安装及简单的例子

zookeeper分布式安装及简单的例子Zookeeper分布式安装1、版本及环境 zookeeper 3.5.2  下载地址为:http://mirror.bit.edu.cn/apache/zookeeper/Linux version 2.6.32-504.el6.x86_64三台机器:10.202.15.193  10.202.15.195  10.202.15.1

2017-04-14 11:19:06 752

原创 Eclipse插件开发流程

Eclipse插件开发流程最近工作比较繁忙,都没有时间写技术博客了,最近工作中用gradle管理项目,每次更改了模块关系或者更新了SVN,都要重新gradle和重新刷新和编译,每次要做这些操作都要切换到工作空间的文件夹中执行bat脚本,所以为了节约时间,就开发了个插件在eclipse中一键操作就可以了,插件开发如下:  1、在eclipse树目录下,单击右键New---->other---

2017-03-31 10:05:38 9772

原创 Zookeeper解决分布式锁问题

什么是分布式锁随着互联网的发展,传统的单应用单DB早已不适应现在高速互联网的发展,分布式已经成为各大企业解决高用户高访问量的解决方案,包括分布式应用,分布式数据库,负载均衡等。 对于分布式的应用和分布式数据库如何做到分布式锁呢,那什么是分布式锁呢?分布式锁是控制分布式系统之间同步访问共享资源的一种方式,比如把应用分别部署到应用服务器A和应用服务器B,而应用服务器A连着数据库A,应用服务器B

2017-03-09 19:38:20 2626

原创 hadoop学习笔记(理论篇)

HDFS 分布式文件系统   NameNode:属于管理层用于管理数据的存储,是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等。   SecondaryNameNode:也属于管理层,辅助NameNode进行管理,用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。   Da

2017-02-22 16:49:50 730

原创 java责任链模式

Struts2的拦截器功能强大,每个Action调用之前都会进行过滤器的过滤,包括自带的过滤器和用户自定义的拦截器,拦截器可以进行权限的校验、文件格式的校验等,拦截器用到的主要设计模式就是责任链模式思想了,下面通过一个列子来演示责任链模式来展示其设计巧妙之处。 先定义一个接口Filter,即过滤器或者拦截器,里面有一个doFilter方法,用于过滤或拦截一些信息。package com

2017-02-21 12:05:34 258

jquerymobil

jquery mobile Demo,主要用于mobile 开发

2014-12-19

PLSQL编程及优化

讲述ORACLE数据库基础,包括SQL编写,查询,创建存储过程,触发器、游标等,还包括数据库优化功能,分析函数的应用,常用函数的用法等。

2014-11-12

MQ6.0+java编程

详细解析MQ的用法及应用,快速学会MQ的应用及部署与配置

2014-11-12

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

TA关注的人

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