- 博客(42)
- 资源 (16)
- 收藏
- 关注
原创 手把手教你排查CPU100%和JVM内存溢出问题
内存溢出(Memory Overflow)指的是程序在申请内存时,向操作系统申请了一块内存空间,但由于某种原因(如程序错误、缺乏足够的内存等),导致程序使用的内存超过了申请到的内存大小。这会导致程序崩溃或者出现未定义的行为。内存泄漏(Memory Leak)指的是程序在动态分配内存后,没有及时释放已经不需要的内存空间,导致系统中存在大量无用的内存占用,最终可能会导致系统的性能下降或者耗尽可用内存资源。可以这样理解:内存溢出是指程序需要的内存超过了可用内存;
2023-09-06 10:29:46
279
原创 一文搞定Nginx的压缩、黑白名单、防盗链、零拷贝、跨域、双机热备等知识
一文搞定Nginx的压缩、黑白名单、防盗链、零拷贝、跨域、双机热备等知识
2023-01-04 17:57:04
1126
原创 Jmeter 压测错误connection reset解决及参数优化
方法仅作参考:1.修改HTTP请求下面的Impementation选项,改成HttpClient42.在user.properties文件内修改:hc.parameters.file=hc.parameters#Jmeter 2.10以后禁用了失败请求重试3.在hc.parameters文件内修改:http.connection.stalecheck$Boolean=true#Jmeter 2.10以后禁用了失效检查重启Jmeter再尝试一下新建注册表脚本r
2022-03-03 09:54:22
8712
原创 spring boot redis分布式锁
随着现在分布式架构越来越盛行,在很多场景下需要使用到分布式锁。分布式锁的实现有很多种,比如基于数据库、zookeeper等,本文主要介绍使用Redis做分布式锁的方式,并封装成spring boot starter,方便使用一.Redis分布式锁的实现以及存在的问题锁是针对某个资源,保证其访问的互斥性,在实际使用当中,这个资源一般是一个字符串。使用Redis实现锁,主要是将资源放到Redis当中,利用其原子性,当其他线程访问时,如果Redis中已经存在这个资源,就不允许之...
2022-02-08 17:57:43
4820
原创 自定义操作日志实现
1. 通过 LoggerFactory 打印logback配置: <appender name="lipstick" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level&...
2022-01-06 16:13:55
261
原创 EAP 认证 五元组转换三元组算法实现
最近工作中接触到部分网络通信编程,需要将鉴权五元组转换成三元组,故将此涉及的算法记录一下,方便以后回顾。USIM卡用2G终端,HLR会发送五元组鉴权,同时VLR会启动五元组/三元组转换流程,将五元组变换为三元组,登陆2G网络。同时,SIM卡用3G终端,HLR会发送三元组鉴权,同时VLR会启动三元组/五元组转换流程,将三元组变换为五元组,登陆3G网络。背景知识:【2G/3G鉴权参数的转换】2G/3G交互操作中的关键是在两个系统中密钥的长度不同。3G鉴权后,有128位密码和完整性密钥C.
2021-12-31 15:27:26
916
原创 sed和awk用法
Maven内置了三大特性:属性、Profile和资源过滤来支持构建的灵活性。先看我们关心得问题。“为什么在xxx.properties,xxx.xml 中能使用${} 来访问pom文件的属性”这是因为Maven 提供的资源过滤的功能默认情况下,Maven属性只有在POM中才会被解析。资源过滤就是指让Maven属性在资源文件(src/main/resources、src/test/resources)中也能被解析。在POM中添加下面的配置便可以开启资源过滤<build> <
2021-07-08 16:02:00
330
1
转载 SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战
1、前言与初衷本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用。本文章会涉及结合工作过程中部署不同环境服务器的项目案例场景为初心进行实际细讲。本文章主要讲述Docker、Jenkins、GitLab、Git、JDK、SpringBoot、Maven等技术结合实现自动化运维部署(DevOps)应用工程,适合SpringCloud部署。初衷想法:在学习过程中遇到比较有趣的问题、然而花了点心血和时间去整理,然而进行梳理出来一份文章比较完整有知识体系的DevOps自动化构建与部署工
2021-06-23 14:56:10
262
原创 arthas使用介绍
一次线上问题的综合排查排查,两个相同的系统的某个模块,数据量更少的系统查询更慢。先说下整体思路:查看系统整理负载,网络有100左右毫秒的延迟,看起来影响不大 查看正序运行整体情况,一次查询会经历3次FGC,有问题,解决后虽然会快一些但是还是有点慢 跟踪调用栈,发现有点在获查询结果的时候特别慢 排查是否有mysql慢查询(定义为1秒以上的查询),结果是没有 通过arthas发现调用了20多次查询,每次网络延迟100ms,加起来就有2s了,定位出问题。这样看起来arthas真的很强大,它不仅仅能
2021-05-31 11:46:21
745
原创 生产环境问题定位分析和JVM调优
生产环境下JVM调优最小堆、最大堆内存设为1G,使用G1垃圾回收器,最长的GC暂停时间设为200毫秒,如果时间过长,会相应调整空间的大小(单位是毫秒),新生代最小比例20%,最大比例30%,+DisableExplicitGC关闭系统调用GC功能 【System.gc() 默认会触发一次Full Gc】打印GC及GC详细信息、GC时间戳,在out of memory的情况下的内存dump输出到指定路径,GC日志路径nohup java -jar -server -Xms1G -Xmx
2021-05-31 11:42:07
626
原创 详细了解springBoot 启动流程及其原理
SPRINGBOOT启动流程及其原理Spring Boot、Spring MVC 和 Spring 有什么区别? 一 springboot启动原理及相关流程概览 二 springboot的启动类入口 三 单单是SpringBootApplication接口用到了这些注解 1)@Configuration注解 2)@ComponentScan注解 3)@EnableAutoConfiguration AutoConfigurationPackage注解:...
2020-12-08 09:19:27
1244
原创 花费10年时间 整理的JVM内存的划分图解
了解了上面这张图,会让你对JVM内存的划分有更深入的理解,而不仅限于什么虚拟机栈、程序计数器等比较浅显的认知。那么这张图有什么用呢?在进行内存排查的时候,我们需要了解到底是哪一个部分除了问题。如果你找不对地方,肯定切入就比较困难,这会耗费你大量的精力。一台4GB的机器,一般使用Xmx分配给JVM的,肯定不能太多。比如3.5GB之类的。这就太贪婪了,很容易造成JVM异常死亡。这是为什么呢?这个比较好理解,因为在操作系统上,运行的不仅仅你的JVM应用,还会有其他一些守护进程,比如各种日志收集工具..
2020-11-26 09:35:18
172
原创 Redisson实现 redis 集群分布式锁
前言上文我们介绍的 Redis实现分布式锁的正确方式 是 redis 单机的方式,所以本篇要基于 redis 集群做分布式锁,我们使用 Redisson来做。有同学肯定有这样的疑问为什么用 redis 集群方式啊,单机不是挺好的?集群和单机不就是 redis 多节点配置的问题吗?为什么使用另一种方式 Redisson呢?Redisson 是什么呢?可不可以不用Redisson呢?……其实在研究 集群实现分布式锁之前我也有这些问题,所以,我下面一一为各位解答,并用代码实现。
2020-11-16 16:47:41
1466
2
原创 JAVA开发微信支付-公众号支付/微信浏览器支付(JSAPI)
写这篇文章的目的有2个,一是自己的项目刚开发完微信支付功能,趁热回个炉温习一下,二也是帮助像我这样对微信支付不熟悉,反复看了多天文档还是一知半解,原理都没摸清,更不要说实现了。本以为网上的微信开发教程会和“java的重写与重载”一样铺天盖地,可搜出来的结果,要么是PHP的教程(微信支付官网推荐就是PHP),要么星星点点就那么几篇,想对比的看看思路都成问题,官网下载的JAVA-SDK-DEMO也恕我技术低下,看的糊里糊涂。等自己开发完的那一刻,才豁然开朗,才知道走通完支付这条路的过程走了多少弯路,我是...
2020-10-22 11:38:29
505
原创 利用ThreadLocal管理登录用户信息实现随用随取
通常在项目中,用户登录后,我们会将用户的信息存到session,如果想在其它地方获取session中的用户信息,我们需要先获取HttpServletRequest,再通过request.getSession得到HttpSession,从而获取到我们想要的用户信息。通常我们会将以上操作提取一个公共方法,如:public static User getSessionUser(HttpServletRequest request) { if(request.getSession().
2020-10-17 16:52:12
2196
原创 通过RequestContextHolder直接获取HttpServletRequest对象
问题朋友遇到一个问题:他想在Service方法中使用HttpServletRequest的API,但是又不想把HttpServletRequest对象当作这个Service方法的参数传过来,原因是这个方法被N多Controller调用,加一个参数就得改一堆代码。一句话:就是他懒。不过,这个问题该这么解决呢?思考不把HttpServletRequest当作参数传过来,这意味着要在Service的方法中直接获取到HttpServletRequest对象。我们知道,一次请求,Web应用服务器就会分配
2020-09-29 09:25:21
887
原创 ApplicationContextAware使用理解
问题背景在我们的web程序中,用spring来管理各个实例(bean), 有时在程序中为了使用已被实例化的bean, 通常会用到这样的代码:ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext-common.xml"); AbcService abcService = (AbcService)appContext.getBean("abcService"); 但是这样
2020-09-28 10:17:59
3259
2
原创 springcloud 微服务间通过 FeignClient 调用 抛出异常 和权限拦截 统一处理
/** * Title: FeignExceptionAspect * Description: Feign统一异常处理 */@Aspect@Order(Ordered.LOWEST_PRECEDENCE - 100)public class FeignExceptionAspect { /** * Pointcut注解声明切点 * 配置切入点,该方法无方法体,主要为方便同类中其他方法使用此处配置的切入点 * @within 对类起作用,@annotation 对方法.
2020-09-25 16:04:00
6600
4
原创 基于springboot + mybatisplus 的快速集成多数据库源配置(亲测可用)
一个基于springboot的快速集成多数据源的启动器简介dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据库源的启动器。其支持Jdk 1.7+, SpringBoot 1.4.x 1.5.x 2.x.x。示例项目可参考项目下的samples目录。特性支持数据源分组,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。 支持数据库敏感配置信息加密ENC()。 支持每个数据库独立初始化表结...
2020-08-05 11:19:19
524
原创 springboot 整合 redis 哨兵模式
本文内容涵盖#windows下单机部署redis多实例 、linux下哨兵示例 redis主从配置 redis哨兵配置以spring boot redis demo下一个存action,一个取action为例进行演示。本文只讲配置,不讲原理(原理随便都是,配置完整完善且简洁的少)redis 命令介绍#启动实例 D:\Redis-6379> redis-server.exe redis.windows.conf 指定进入哪个redis实例,redis的默认客户端是redi
2020-07-16 17:50:30
699
原创 redis 哨兵配置文件解读 sentinel.conf
# Example sentinel.conf# port <sentinel-port>port 8001# 守护进程模式daemonize yes# 指明日志文件名logfile "./sentinel1.log"# 工作路径,sentinel一般指定/tmp比较简单dir ./# 哨兵监控这个master,在至少quorum个哨兵实例都认为master down后把master标记为odown# (objective down客观down;相对应的存在sdow
2020-07-16 17:02:32
496
原创 前端js常用的60余种工具方法【强烈建议收藏】
“工欲善其事,必先利其器!”本文为大家带来前端js开发常用的60种工具方法,有了这些开发工具你就可以高效的处理任务和信息了。1.邮箱export const isEmail = (s) => { return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)}2.手机号码export const isMobile = (s) => { return /^1[0
2020-07-01 17:59:40
393
原创 VUE 路由传参
vue路由带参总结1. params<router-link :to="{name:'test', params: {id:1}}">配置路由格式要求: path: "/test/:id"js参数获取:this.$route.params.id2.query<router-link :to="{name:'test', query: {id:1}}">...
2020-05-13 18:01:27
133
原创 MySQL 登录报错 Access denied for user 'root'@'localhost' (using password: NO) 的解决办法
这个问题是在Windows下安装MySQL服务时遇到的,使用MySQl绿色版进行安装的,安装完成后,连接到MySQL服务时输入命令 “ mysql -uroot -p ” ,因为时第一次登录,未设置密码,直接回车,就遇到了这个问题,错误信息如下:“ ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using pass...
2020-05-13 18:01:03
27900
原创 Sonar 规则及相关提示处理
1、".equals()" should not be used to test the values of "Atomic" classes.bug 主要不要使用equals方法对AtomicXXX进行是否相等的判断Atomic变量永远只会和自身相等,Atomic变量没有覆写equals()方法.2、"=+" should not be used instead of "+="bug 主要"=+" 与 "=+" 意义不同a =+ b;虽然正确但写法不合规,应写成 a = +b;3、"@N.
2020-05-12 18:06:03
5675
原创 java项目linux 系统部署 shell 启动脚本
#!/bin/bashkill_pid(){ pid=`ps -ef | grep wifi-wgw | grep java | awk '{print $2}'` if [ "$pid" != "" ] then kill -9 $pid echo "kill $pid wifi-wgw pid" else echo 'no pid' fi...
2020-04-30 16:00:52
335
原创 maven项目修改java class 文件编译版本的配置方法
使用Maven编译Java项目,默认的jdk编译版本是1.5(参考官网的说明-》https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html)。嗯~,有时候会导致jdk版本不匹配(比如代码中使用了jdk1.8的新特性,这是就需要使用jdk1.8进行编译)。解决方案方案一:全局设置在${MAVEN_HOM...
2020-04-22 09:55:09
623
原创 视频等大文件java断点续传处理
import com.teleone.ferryportal.model.bo.Storage;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.f...
2020-04-09 17:56:26
289
原创 netty4 client连接服务端步骤及底层原理说明
服务端依次发生的步骤建立服务端监听套接字ServerSocketChannel,以及对应的管道pipeline; 启动boss线程,将ServerSocketChannel注册到boss线程持有的selector中,并将注册返回的selectionKey赋值给ServerSocketChannel关联的selectionKey变量; 在ServerSocketChannel对应的管道中触发...
2020-01-20 16:25:21
318
原创 使用redis分布式锁解决秒杀和高并发问题
(一)redis技术的使用:redis真的是一个很好的技术,它可以很好的在一定程度上解决网站一瞬间的并发量,例如商品抢购秒杀等活动。。。redis之所以能解决高并发的原因是它可以直接访问内存,而以往我们用的是数据库(硬盘),提高了访问效率,解决了数据库服务器压力。为什么redis的地位越来越高,我们为何不选择memcache,这是因为memcache只能存储字符串,而redis存储类型很...
2020-01-06 09:40:06
789
原创 搭建maven 仓库
Maven中央仓库搭建搭建系统:Linux Centos 7.4 x64 安装环境:JDK1.8、maven3.5.4、nexus-3.13下载:nexus-3.13.0-01-unix.tar.gz 百度云:https://pan.baidu.com/s/1B8NVom10Mcmu73ZArciCyQ 密码:xfg11、安装Nexus注:安装前,请确认系统已安装jdk与mave...
2019-12-09 14:14:23
393
原创 RestTemplate使用教程,用更优雅的方式发HTTP请求
Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。我之前的HTTP开发是用apache的HttpClient开发,代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,稍微截个图,这是我...
2019-08-20 17:27:47
346
原创 @Cacheable、@CacheEvict、@CachePut使用方法,Spring常用的缓存注解说明
Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接...
2019-08-20 10:07:59
109
原创 idea 警告标准(默认配置标准降级)
<profile version="1.0"> <option name="myName" value="Default" /> <inspection_tool class="Convert2Diamond" enabled="false" level="WARNING" enabled_by_default="false" /> <insp...
2019-04-17 16:52:56
1289
转载 java 并发编程内存模型分析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,...
2019-04-17 16:48:07
97
原创 为什么说Java中只有值传递,沒有引用传递
在开始深入讲解之前,有必要纠正一下大家以前的那些错误看法了。如果你有以下想法,那么你有必要好好阅读本文。错误理解一:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。如果是个引用,就是引用传递。错误理解二:Java是引用传递。错误理解三:传递的参数如果是普通类型,那就是值传递,如果是对象,那就是引用传递。实参与形参我们都知道,在Java中定义方...
2019-02-28 10:00:21
494
1
原创 服务器发布项目tomcat启动sun.misc.BASE64Encoder;报错
解决办法:将jdk目录Java\jdk1.8.0_181\jre\lib\rt.jar 复制到\Java\jdk1.8.0_73\lib 文件夹下
2018-09-21 17:11:53
906
open jdk 21 windows64位 + linux 64位 官方包
2024-06-13
obots-uam.rar
2020-10-09
jdk-8u241-linux-x64.tar.gz + node-v12.16.1-linux-x64.tar.xz 开发环境
2020-03-19
项目代码源文件
2018-05-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人