自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

日月忽其不淹兮,春与秋其代序 认知即成长

上有六龙回日之高标,下有冲波逆折之回川。蜀道之难

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

原创 Nginx配置

#usernobody;worker_processes1;#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#pidlogs/nginx.pid;events{worker_connections1024;}http{includem...

2021-01-08 00:41:25 266

原创 在nginx的基础上安装lua模块,实现nginx执行shell脚本

nginx安装可以参考https://blog.csdn.net/ab7253957/article/details/85266493如果没有安装过nginx可以使用openresty,是对nginx的增强1.下载安装LuaJIT 2.1http://luajit.org/download.htmlwget http://luajit.org/download/LuaJIT-2....

2019-12-08 21:17:36 1315

原创 Spring 加载@Component/@ComponentScan/@Import/@ImportResource/@bean注解类的流程

org.springframework.context.support.AbstractApplicationContext#refresh public void refresh() throws BeansException, IllegalStateException { // Invoke factory processors registered as beans in ...

2019-11-13 13:53:52 738

原创 Spring boot启动流程源码解析

Precondition:1.Spring boot注入bean的四种方式1)@Controller @Service @Repository @Component2) @Configuration + @Bean3) 实现factoryBean接口4) @Import 1)@Configuration注解的类 2)ImportSelect实现类...

2019-11-13 09:03:18 171

原创 Spring boot自动配置原理

以图为例,Spring boot项目启动类上都有@SpringBootApplication注解,重点在于AutoConfigurationImportSelector.selectImports(),一步步的跟踪源码下去,应用会读取"META-INF/spring.factories"配置文件,加载自动配置类 public String[] selectImports(Annotati...

2019-11-12 12:48:50 164

原创 Mybatis整合Spring boot源码分析

首先需要配置SqlSessionFactoryBean,用于解析xml文件,仅仅是解析xml,没有找到mapper接口相关的操作,最后构造了DefaultSqlSessionFactory,但是根本没有用到,只是为了方法值返回,spring boot通过@MapperScan注解扫描实现Mapper接口无实现类注入spring1.使用原生Mybatis的Mapper接口作用域是SqlSessi...

2019-11-12 11:22:58 197

原创 Mybatis源码分析(未整合Spring)

本文使用Mybatis官方提供的Demo进行分析,先贴代码,Mybatis默认配置在XMLConfigBuilder@Slf4jpublic class MybatisTest { private SqlSession session; private SqlSessionFactory sqlSessionFactory; @Before public ...

2019-11-11 10:57:45 186

原创 Spring 实例化bean的过程

以Spring boot为例,从Main方法开始 public static void main(String[] args){ SpringApplication.run(MainApplication.class, args); } 从run方法开发跟踪,可以找到ApplicationContext的refersh方法,这是Spring容器的初始化方法org....

2019-11-10 16:18:17 229

原创 Spring使用@Autowired注解注入bean流程

//@Autowired属性注入流程 1.org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean 2.org.springframework.beans.factory.su...

2019-11-10 15:59:18 762

原创 Git Commit和pull的撤销

1.撤销commitgit reset --soft HEAD^HEAD^的意思是上一个版本,也可以写成HEAD~1如果你进行了2次commit,想都撤回,可以使用HEAD~22.撤销pullgit refloggit reset --hard HEAD@{n}...

2019-07-17 17:22:02 592

原创 Spring常用内置接口

1.注入bean工厂public interface BeanFactoryAware extends Aware { void setBeanFactory(BeanFactory var1) throws BeansException;}2.应用上下文 @Override public void setApplicationContext(Applicati...

2019-07-16 21:04:10 229

原创 js格式化日期

function addDay(dayInterval, date) { date = date ? date : new Date(); var ms = dayInterval * (1000 * 60 * 60 * 24) return new Date(date.getTime() + ms); } functio...

2019-07-08 20:26:22 123

原创 经典排序算法

排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。稳定排序算法:大小相等的两个元素不管其位置是否相邻,在排序后都不改变其前后位置;反之,不稳定排序算法常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。稳定的排序算法:冒泡排...

2019-07-05 11:26:17 193

原创 RabbitMq基本概念

ConnectionFactory、Connection、ChannelQueueExchange(fanout、direct、topic、headers)routing keyBindingBinding keyexchange与queue进行绑定形成binding(binding key),fanout: 忽略routing key,只要queue与绑定关系就...

2019-07-04 17:27:08 155

原创 IDEA启动参数优化

-Xms2048m-Xmx2048m-XX:ReservedCodeCacheSize=240m-XX:+UseConcMarkSweepGC-XX:SoftRefLRUPolicyMSPerMB=50-ea-Dsun.io.useCanonCaches=false-Djava.net.preferIPv4Stack=true-Djdk.http.auth.tunneling...

2019-05-11 19:42:41 1318

原创 当调用外部接口发生异常、服务器宕机或杀死进程时如何保证数据一致性

调用外部接口发生异常时数据一致性解决方案这里提供一个一劳永逸的解决方案设计思路:外部接口多采用交易接口+结果查询接口的方式,基于这种形式的接口提供以下解决方案。 1.根据流水号标识一笔交易请求,另外本地要提供rollback方法 2.模板类记录请求日志,日志状态在本地事务更新3.定时任务扫描日志表异常或超时记录,然后调用外部查询接口进行补偿,对成功请求更改日志状态...

2019-03-15 17:34:37 3017

原创 APM系统实现原理

    每个应用都是执行main方法启动,javaagent使应用在执行main方法之前调用premain方法,而在premain方法里classloader加载类时使用javassist对字节码进行改写,对原方法进行增强,这就形成了监控,类似Spring AOP,而Spring AOP的底层就是动态代理,CGLIB动态代理采用javassist实现。...

2019-01-18 10:07:14 1263

原创 Mongodb

环境centos71.官方下载  https://www.mongodb.com/download-center/communitywget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.5.tgz2.启动#创建数据目录tar -zxvf  mongodb-linux-x86_64-4.0.5.tgzmk...

2019-01-17 11:13:53 161

原创 ES集群并配置IK分词器

一、ES集群搭建,建议在单机部署时安装完IK分词器再copy到其他机器进行集群部署,省去安装IK分词器的时间1.单机部署,参照https://blog.csdn.net/ab7253957/article/details/85334259中搭建es的步骤,先搭建单机es再进行下面的步骤2.修改配置文件config/elasticsearch.yml,标红属性是需要修改或增加的属性,如果是在...

2019-01-12 15:02:25 2602

原创 Nginx生产环境配置

一.Nginx 反向代理与负载均衡二.Nginx 实现高速缓存三.Nginx 性能参数调优nginx调优1.worker_connections 1024(linux理论上支持十万,但是要除以工作进程数worker_processes)2.worker_processesworker_processes number(CPU核心数)3.进程和cpu绑定CPU核心数为4时,可以进...

2018-12-30 12:37:51 1072

原创 ELK搭建

1.准备环境:centos7、elasticsearch 2.4.6、kibana4.6.1 、logstash2.4.0、jdk1.7+elasticsearch不能在root账号下运行,需要新建一个用户(1)创建用户名为elk的用户       adduser elk(2)修改密码      passwd  或  echo root |passwd --stdin elk(...

2018-12-29 12:39:51 342

原创 Kafka集群配置

1、Kafka概念:    Topic: Kafka按照Topic分类来维护消息,每个Topic可以配置多个partition(分区),每个分区只能被一个消费者消费,每个partition对应一个commit log文件    Producer: 我们将发布(publish)消息到Topic的进程称之为生产者(producer)    Consumer: 我们将订阅(subscribe...

2018-12-27 09:12:06 182

原创 Nginx安装

linux环境centos71.下载源码 及安装wget http://nginx.org/download/nginx-1.14.0.tar.gztar -zxvf nginx-1.14.0.tar.gz简单构建./configure基于参数构建./configure --prefix=/usr/local/nginx --with-http_stub_status_...

2018-12-26 18:06:57 203

原创 Tomcat配置详解

下面是tomcat-8.5.37原生server.xml配置,删除了所有自有注释Connector主要属性:protocol  监听的协议,默认是http/1.1 port   连接端口号 minThread  初始化线程数 maxThread  最大线程数,生产配置800-1000 minSpareThreads="100" 最大空闲线程 enableLookups="fals...

2018-12-26 12:38:31 340

原创 Tomcat整体架构及生产环境部署

一、tomcat组件及其关系tomcat组件完全展现在配置文件server.xml中,详细配置见https://blog.csdn.net/ab7253957/article/details/852602111、Connector   连接器,用于建立用户请求,将用户请求转化为Request  (1) HTTP 1.1  (2) SSL (https)  (3) AJP( Ap...

2018-12-26 09:50:45 507

原创 Redis高可用集群搭建

redis集群需要至少要三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,在三台虚拟机上实现三主三从1.下载 && 解压 && 编译$ wget http://download.redis.io/releases/redis-5.0.3.tar.gz$ tar xzf redi...

2018-12-25 10:08:25 192

原创 centos7下Mysql安装及主从配置

一、mysql安装(根据官方步骤https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/)#查看可用的mysql包,如果没有进行第1、2步下载yum repolist all | grep mysql1.下载RPM包wget https://repo.mysql.com//mysql80-community-release-e...

2018-12-24 16:12:45 190

原创 RocketMq事务消息遇到的问题

1、搭建2m-2s-sync集群测试RocketMq分布式事务,返回结果sendStatus=SLAVE_NOT_AVAILABLE,但是集群机器都正常,纠结了很长时间,后面把BrokerRole改为ASYNC_MASTER,一切都正常了。。。,那么可以这么说,事务消息只支持2m-2s-async集群模式2、发送的消息在rocketmq-console可视化界面查不到消息,原因查询时有时间参数...

2018-12-20 18:46:51 1023

原创 RocketMq集群搭建

地址下载https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip        今天使用两台虚拟机搭建rocketmq集群,IP地址为192.168.21.128和192.168.21.129,遇到一个坑耗费了比较长的时间,防火墙的问题关闭防火墙systemc...

2018-12-17 17:57:08 305

原创 Mysql索引原理

1.mysql使用B+tree(B-tree(B树)的一种变种)数据结构存储索引,B+tree和B-tree的区别在于B+tree在非叶子节点不存储数据,只存储索引,而且mysql在设计的时候将节点的大小设计为4K,这是因为操作系统(windows为例)硬盘的页大小为4K,操作系统会进行预读(预读的大小为页大小的整数倍),将这个节点加载到内存里,在内存里进行顺序查找速度是很快的。2.Innod...

2018-11-21 16:34:27 139

原创 Spring MVC整合websocket遇到的问题

   https://blog.csdn.net/ab7253957/article/details/52502609     按照之前写过的一片博客做了websocket实现,遇到好多问题其一,报404错误,找不到路径/webSocketExportSettlement 是我定义的节点,见下图找了很长时间原因,最后确定的是框架的问题,配置url是.do结尾的,被拒绝掉了...

2018-09-18 11:53:41 2054

原创 Jar包启动脚本

PROG=ring-servicePIDFILE=ring.pidJAVA_OPTS="-Xms768m -Xmx768m -XX:+UseConcMarkSweepGC -Duser.timezone=GMT+08 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:gc.log -XX:+DisableExplicitGC"stat...

2018-06-27 14:09:31 797 1

原创 Spring RestTemplate配置类

public class RestTemplateConfig { private int socketTimeout = 10000; private int connectTimeout = 10000; /** * 连接不够用的等待时间,不宜过长,必须设置,比如连接不够用时,等待时间过长将是灾难性的 */ private int conn...

2018-03-26 15:41:19 4127

原创 Mysql死锁问题

com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction; SQL []; Deadlock found when trying to get lock; try restarting

2018-01-22 10:37:49 296

原创 自定义Mybatis类型处理器对参数和结果集进行自定义处理

业务需求是对字符串数据进行加密后入库,使用类型处理器会有一个短板,即此类型的所有数据都会被自定义的类型处理器进行处理,如果是只对几个特殊字段进行加密,则这种方法是行不通的,本人尝试过自定义类型,可String不能被继承,再者JavaBean要被其他项目引用,自定义类型毕竟不合适,我们这里只介绍一下类型处理器的使用    1.自定义类型处理器实现TypeHandler接口,代码如下,这里的Str

2017-12-22 10:00:59 1760

原创 使用Dubbo调用Mybatis懒加载出现数据丢失--懒加载的数据无法加载

<association property="bankInfo" column="user_id" fetchType="eager" select="com.jrq.core.mapper.CustomerBankInfoMapper.getDefaultCardByUserId"> 添加fetchType="eager"属性 ,急加载

2017-11-27 19:40:17 931

原创 ThreadPoolExecutor线程池的使用

package com.jrq.core.file.executor;import com.google.common.util.concurrent.*;import java.util.concurrent.Callable;import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.Thr

2017-11-21 12:44:20 341

原创 Spring Boot拦截器配置

1.before @Before("execution(* com.jrq.core.mapper..*Mapper.*(..))") public void pageHandle(JoinPoint joinPoint) { Object[] args = joinPoint.getArgs(); for (Object arg : args) { if (ar

2017-09-30 18:16:02 445

原创 Spring Boot+JSP启动报404错误找不到页面

IDE: idea2017.1.2启动方式:右击启动类, run现象:程序启动正常,jsp页面访问不了解决方法:mvn spring-boot:runps:如果提示启动类找不到,那是你的目录错误,在启动类的工程下的pom.xml目录执行mvn spring-boot:run

2017-09-18 19:39:30 1462

原创 二十三种设计模式图解

2017-09-14 16:03:01 436

空空如也

空空如也

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

TA关注的人

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