自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

范学博的博客

practice makes perfect

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

原创 一次JVM调优实践 | 项目运行一段时间后卡顿

调优背景:项目运行卡顿,页面加载慢。排查问题思路:查看CPU使用率,内存使用率,分析是否有耗时的线程,是否由于编码不规范导致产生对象过多等。使用’top’命令,查看cpu使用率(%CPU),内存使用率(%MEM),PID进程ID使用’top -Hp pid’命令,查看进程中线程耗费CPU的时间使用’printf “%x\n”线程id’命令,得到线程id的十六进制值使用’jstack 进程id | grep 线程id的十六进制值’命令查看进程的...

2020-09-23 14:03:15 2759

原创 Spring MVC 架构 | 与原生Servlet区别 | 请求处理流程

SpringMVC 简介SpringMVC 全名叫 Spring Web MVC,是⼀种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 SpringFrameWork 的后续产品。下图是Spring MVC 在 Spring 架构中的位置:它通过⼀套注解,让⼀个简单的 Java 类成为处理请求的控制器,⽽⽆须实现任何接⼝。同时它还⽀持 RESTful 编程⻛格的请求。主要解决表现层问题的web框架,是基于 MVC 设计模式的。主要职责就是处理前端HTTP请求。

2020-08-08 16:09:16 786

原创 Spring Cloud中@HystrixCommand注解 Hystrix舱壁模式(线程池隔离策略)

今天来研究下@HystrixCommand注解。使用Sping Cloud必然会用到Hystrix做熔断降级,也必然会用到@HystrixCommand注解,该注解可以配置的除了常用的groupKey、commandKey、fallbackMethod等,还有一个很关键的就是threadPoolKey,就是使用Hystrix线程隔离策略时的线程池Key。/** * Copyright 2012 Netflix, Inc. * * Licensed under the Apache License

2020-08-06 19:31:39 2064 1

原创 Spring源码环境搭建和Spring源码剖析

Spring源码环境搭建同一版本说明:gradle5.6.3,JDK11.0.5,springframework5.1.x。确认无问题版本。按照如下构建过程构建即可。安装gradle1、进入官网的下载页面(https://services.gradle.org/distributions/)如下图所示,我们选择想要安装的发布版本。gradle-x.x-src.zip是源码,gradle-x.x-bin.zip是需要下载的安装发布版,gradle-x.x-all.zip则是下载全部的文件。我是

2020-07-24 09:28:04 548

原创 RedisCluster的安装、部署、扩容和Java客户端调用

集群规划机器ip 节点角色 安装目录 192.168.127.128 master1-6379,slave1-6380 /home/redis-cluster 192.168.127.129 master2-6379,slave2-6380,master4-6381 /home/redis-cluster 192.168.127.130 master3-6379,slave3-6380,slave4-6381 /home/redis-clust

2020-07-18 10:30:30 456

原创 约定优于配置设计范式及Spring Boot源码剖析

依赖管理在Spring Boot入门程序中,项目pom.xml文件中有两个核心依赖,分别是spring-boot-starter-parent和spring-boot-starter-web,关于这两个依赖的相关介绍具体如下:为何导入dependency时不需要指定版本号呢?首先在父依赖中指定了实际开发所依赖的版本号,当然是可以修改的。<!-- Spring Boot父项目依赖管理 --><parent> <groupId>org.springfr

2020-07-15 19:37:06 530

原创 搭建Hadoop分布式文件系统HDFS、海量列式存储数据库HBase

hadoop集群搭建一、java环境准备#检查java环境[root@localhost ~]# rpm -qa | grep jdk#如果有进行卸载[root@localhost ~]# yum -y remove 上一步查看到的拷贝到这里​#下载并安装[root@localhost ~]# yum install java-1.8.0-openjdk#通过yum安装的默认路径为:/usr/lib/jvm​#配置环境变量[root@localhost jvm]# vim /e

2020-07-11 11:57:42 1825

原创 CAS底层原理 | JVM相关知识

文章内容输出来源:拉钩教育Java工程师高薪训练营https://kaiwu.lagou.com/java_architect.html?utm_source=app_edu开篇词先容我唠叨几句。岁月不居,时节如流。身处技术行业,学习当然是不能停止的。那些所谓三四十岁的焦虑大都是因为日子都是混过去的。我希望优秀的你看到这篇文章能够给你带来一些启发。早日在自己的领域有所作为。学习最重要的是掌握方法。不要被哪些让人眼花缭乱的Java学习路线影响到你的情绪。学习要讲究先学脉络再逐个技术点击破。先根

2020-07-08 21:15:52 8825 2

原创 搭建Nginx+FastDFS服务器以及实现Nginx+Lua+GraphicsMagick动态压缩图片

在Linux系统安装FastDFS服务器(ip:192.168.127.128)1、编译环境[root@localhost ~]# yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y2、安装libfatscommonFastDFS分离出的一些公用函数包#切换到安装目录准备下载安装包[root@local

2020-07-03 19:59:08 1002

原创 采用Sharding-JDBC实现分库分表+读写分离

需求说明1、基于user_id对c_order表进行数据分片。2、分别对master1和master2搭建一主两从的架构。3、基于master1和master2主从集群实现读写分离。特殊说明:本博客中主要讲解spring配置文件配置思路。分库分表+读写分离使用本地两个数据库来演示。搭建主从环境请参见:https://blog.csdn.net/fanxb92/article/details/1069618291、环境准备之机器说明机器名称 IP配置 服务.

2020-06-26 12:27:17 2901 1

原创 搭建MySQL主从半同步复制的MHA高可用集群

需求说明1、首先实现一主两从的同步复制功能(采用半同步复制机制)2、然后采用MHA实现主机出现故障,从库能自动切换功能。3、MHA高可用搭建后,在主库新建商品表进行效果测试MHA介绍  MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能。MHA 在监控到 master 节点故障时,会提升其中拥有最新数据的 slave 节点成为新的master 节点,在此期间,MHA 会通过于

2020-06-25 20:30:55 953

原创 搭建 MongoDB 复制集,添加安全认证,Spring Boot 整合 MongoDB(内容较多慎入)

需求说明(1)如图搭建一个分片集群 要求每个分片节点中的复制集含有一个仲裁节点(2)使用权限控制 建立访问你访问的数据库mamba 这个账号名字是rwUser密码是rwUser 这个账号对数据库有读写权限(3)使用SpringBoot 进行访问分片集群 对mamba 库中的nba_star进行增加数据一、MongoDB基础环境搭建机器较多,建议每操作一个小部分先进行测试,再进行下一步,比如添加复制集配置,先配置一台,启动没问题再进行拷贝修改。开启认证前,建议先使用j...

2020-06-23 11:02:34 2149

原创 Spring Data Jpa 保存实体返回主键

直接上图实体类中get和set方法就正常就好了,看有的博客说一定要加在get方法上,保留意见,因为项目架构不同。注意实体类上,我注掉的代码,一定要去掉,加上了会报错。当然你的项目没有用到就不用管了。为确保严谨,发下项目架构spring boot + spring data jpa,服务搭建spring cloud代码实测,真实有效,铁证如山,一直被模仿,从...

2018-12-06 15:18:33 6994

原创 Spring是如何管理事务的之@Transactional注解详解

前两天在工作中忙的焦头烂额,涉及到@Transactional对于事务的控制,便仔细研究了一下,颇有所获,花费好了几天测试整理,今天才发表出来,希望看到博客的老铁们能有所获吧。话不多说直奔正题。先简单介绍一下Spring事务的传播行为:所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。在TransactionDefini...

2018-08-02 15:19:51 70498 36

转载 谈JVM参数GC线程数ParallelGCThreads合理性设置

谈JVM参数GC线程数ParallelGCThreads合理性设置

2022-11-13 19:19:00 2305 2

原创 跨HDFS集群传输数据distcp

#!/bin/bash#set -xsource=$1target=$2partition_k=$3partition_from=$4partition_to=$5partition_cursor=$partition_fromwhile [ $(date -d $partition_cursor +%s) -le $(date -d $partition_to +%s) ]do bash distcp2 $source $target $partition_k $p.

2022-05-21 14:00:59 339 1

原创 通过ip获取国家 省份 城市信息

通过ip获取国家 省份 城市信息

2022-04-22 10:33:44 1391

原创 shell连接mysql导出数据到文件同时写入hive

#!/bin/bashset -xwork_dir=$(cd $(dirname $0); pwd)mysql_hostname='mysql_hostname'mysql_port='3358'mysql_username='mysql_username'mysql_password='mysql_password'mysql_dbname='mysql_dbname'time=$(date "+%Y%m%d%H%M%S")export_file=${work_dir}/mysql

2022-03-02 16:13:03 1643 1

转载 普通索引和唯一索引,不同业务场景下,如何选择

1、概念不同的业务场景下,应该选择普通索引,还是唯一索引?假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的SQL语句:select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz';所以,你一定会考虑在id_card字段上建索引。由于身份证号字段比较大,我不建议你把身份证号当做主键,那么现在你有两个选择,要么给id_car

2020-08-27 09:14:42 738

原创 JVM 解析器和JIT即时编译器 热点检测 JIT编译器优化 逃逸分析

解析器和JIT即时编译器在部分商用虚拟机中(如HotSpot),Java程序初是通过解释器(Interpreter)进行解释执行的,当 虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。为了提高热点代 码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的 优化,完成这个任务的编译器称为即时编译器(Just In Time C...

2020-03-23 18:19:52 792 1

原创 Spring Boot 全局异常处理简单搭建

摘要今天终于打败了懒惰,决定写这篇博客,主要想把本人在中作中的一些经验和感悟分享给大家,纯属个人应该如何对待工作的一些见解,如果打破了谁的生活观价值观,我并无此意,还请自觉绕行。正文人生真的很长,时间也真的过的很快,所以真的真的要学会好好生活,懂得珍惜,学会爱人,保持进步。无论做什么事都取决于每个人的性格,工作也是一样的。当然我只能局限在自己的领域发表一下看法。开发这条道路需要...

2019-10-13 15:58:40 206

原创 Spring Boot项目中配置自定义线程池

在一个应用程序中,我们需要多次使用线程,也就意味着,我们需要多次创建并销毁线程。而创建并销毁线程的过程势必会消耗内存。而在Java中,内存资源是及其宝贵的,所以,我们就提出了线程池的概念。线程池的好处,就是可以方便的管理线程,也可以减少内存的消耗。四种常见的线程池:CachedThreadPool:可缓存的线程池,该线程池中没有核心线程,非核心线程的数量为Integer.max_value...

2019-02-11 18:06:54 2127

原创 分布式锁解决方案之Redis实现

spring boot 版本2.1.6.RELEASE下面是分布式锁的获取和释放,成员变量:StringRedisTemplate(springboot整合redis获取redis,也可通过注入jedis实现,实现思路是一致的,我会在文末附上获取redis的实现)。再来看看一些redis的基本命令:SETNX key value(stringRedisTemplat...

2019-02-11 16:48:33 11844 7

原创 消息中间件的对比 | RabbitMQ | ActiveMQ | RocketMQ | Kafka

本篇主要码各类消息中间件的优缺点,从各类网站吐血总结。(篇幅较长,纯概念,需要理解,请自备茶水,哈哈哈哈)一、背景介绍1、Java消息服务不同系统之间的信息交换,是我们开发中比较常见的场景,比如系统A要把数据发送给系统B,这个问题我们应该如何去处理? 1999年,原来的SUN公司领衔提出了一种面向消息的中间件服务--JMS规范(标准)。常用的几种信息交互技术(httpClient、...

2018-11-08 17:05:54 1838

原创 设计模式之责任链模式(附实战代码)

请求的链式处理——职责链模式if(条件1) { 此时要调用balabalabala类去处理具体的逻辑} else if (条件2){ 此时要调用dadadadadada类去处理具体的逻辑} else if (条件3) { 此时要调用aaaaaaaaaaaa类去处理具体的逻辑}好这段代码是不是很熟悉呢,对于一些多条件的逻辑处理这应该是很普遍的开发方法了吧,...

2018-10-25 15:18:50 443

转载 并行、并发及对于高并发优化的几个方向

转载过来的,个人保留,原谅我此次搬砖,毕竟搬砖是我的工作

2018-10-16 14:27:58 3119

原创 链式方法调用的事务问题剖析

最近做了分布式的项目,当然没有设计分布式事务的处理,一条逻辑线太长,方法调方法,所以之间的事务问题就暴露出来了我已阵亡,直接码代码吧@Servicepublic class TransactionalServiceImpl implements TransactionalService { @Autowired private CgpMngUserbraServic...

2018-09-20 12:14:08 836

原创 MD5加密

今天开始将开发中常用的一些工具类收录,拿出来分享,话不多说,直接搬上代码,按照main方法中直接调用即可:package ;/** * @Auther: fanxuebo * @Description: MD5加密工具类 * @Date: 14:26 2018/7/11 */public class MD5 {    /**     * 默认password与客户代码(us...

2018-07-17 16:22:33 557

原创 Spring Boot 实现用户登陆并限制同一用户只在一个地方登陆

开始写文章,主要为了记录自己开发过程中遇到的问题,是已经解决了的问题,分享出来交流学习。如若个人理解有误,文章中有不正确的地方,希望大家批评指正,我会继续学习,及时改正。本文主旨实现用户登陆并且限制同一个用户只在一个地方是登陆状态,并没有用Zuul实现,是自己的一个实现方法。项目架构:Spring Boot + Spring Cloud + Angularjs(前端),前端会控制未登录时只...

2018-07-10 16:24:19 37006 9

空空如也

空空如也

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

TA关注的人

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