java
文章平均质量分 79
雨不在
专注写bug的逗比程序猿
展开
-
一文搞定Nginx的压缩、黑白名单、防盗链、零拷贝、跨域、双机热备等知识
一文搞定Nginx的压缩、黑白名单、防盗链、零拷贝、跨域、双机热备等知识原创 2023-01-04 17:57:04 · 1122 阅读 · 0 评论 -
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 · 8348 阅读 · 0 评论 -
EAP 认证 五元组转换三元组算法实现
最近工作中接触到部分网络通信编程,需要将鉴权五元组转换成三元组,故将此涉及的算法记录一下,方便以后回顾。USIM卡用2G终端,HLR会发送五元组鉴权,同时VLR会启动五元组/三元组转换流程,将五元组变换为三元组,登陆2G网络。同时,SIM卡用3G终端,HLR会发送三元组鉴权,同时VLR会启动三元组/五元组转换流程,将三元组变换为五元组,登陆3G网络。背景知识:【2G/3G鉴权参数的转换】2G/3G交互操作中的关键是在两个系统中密钥的长度不同。3G鉴权后,有128位密码和完整性密钥C.原创 2021-12-31 15:27:26 · 902 阅读 · 0 评论 -
SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战
1、前言与初衷本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用。本文章会涉及结合工作过程中部署不同环境服务器的项目案例场景为初心进行实际细讲。本文章主要讲述Docker、Jenkins、GitLab、Git、JDK、SpringBoot、Maven等技术结合实现自动化运维部署(DevOps)应用工程,适合SpringCloud部署。初衷想法:在学习过程中遇到比较有趣的问题、然而花了点心血和时间去整理,然而进行梳理出来一份文章比较完整有知识体系的DevOps自动化构建与部署工转载 2021-06-23 14:56:10 · 259 阅读 · 0 评论 -
arthas使用介绍
一次线上问题的综合排查排查,两个相同的系统的某个模块,数据量更少的系统查询更慢。先说下整体思路:查看系统整理负载,网络有100左右毫秒的延迟,看起来影响不大 查看正序运行整体情况,一次查询会经历3次FGC,有问题,解决后虽然会快一些但是还是有点慢 跟踪调用栈,发现有点在获查询结果的时候特别慢 排查是否有mysql慢查询(定义为1秒以上的查询),结果是没有 通过arthas发现调用了20多次查询,每次网络延迟100ms,加起来就有2s了,定位出问题。这样看起来arthas真的很强大,它不仅仅能原创 2021-05-31 11:46:21 · 710 阅读 · 0 评论 -
生产环境问题定位分析和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 · 592 阅读 · 0 评论 -
详细了解springBoot 启动流程及其原理
SPRINGBOOT启动流程及其原理Spring Boot、Spring MVC 和 Spring 有什么区别? 一 springboot启动原理及相关流程概览 二 springboot的启动类入口 三 单单是SpringBootApplication接口用到了这些注解 1)@Configuration注解 2)@ComponentScan注解 3)@EnableAutoConfiguration AutoConfigurationPackage注解:...原创 2020-12-08 09:19:27 · 1233 阅读 · 0 评论 -
花费10年时间 整理的JVM内存的划分图解
了解了上面这张图,会让你对JVM内存的划分有更深入的理解,而不仅限于什么虚拟机栈、程序计数器等比较浅显的认知。那么这张图有什么用呢?在进行内存排查的时候,我们需要了解到底是哪一个部分除了问题。如果你找不对地方,肯定切入就比较困难,这会耗费你大量的精力。一台4GB的机器,一般使用Xmx分配给JVM的,肯定不能太多。比如3.5GB之类的。这就太贪婪了,很容易造成JVM异常死亡。这是为什么呢?这个比较好理解,因为在操作系统上,运行的不仅仅你的JVM应用,还会有其他一些守护进程,比如各种日志收集工具..原创 2020-11-26 09:35:18 · 169 阅读 · 0 评论 -
spring boot redis分布式锁
随着现在分布式架构越来越盛行,在很多场景下需要使用到分布式锁。分布式锁的实现有很多种,比如基于数据库、zookeeper等,本文主要介绍使用Redis做分布式锁的方式,并封装成spring boot starter,方便使用一.Redis分布式锁的实现以及存在的问题锁是针对某个资源,保证其访问的互斥性,在实际使用当中,这个资源一般是一个字符串。使用Redis实现锁,主要是将资源放到Redis当中,利用其原子性,当其他线程访问时,如果Redis中已经存在这个资源,就不允许之...原创 2022-02-08 17:57:43 · 4776 阅读 · 0 评论 -
Redisson实现 redis 集群分布式锁
前言上文我们介绍的 Redis实现分布式锁的正确方式 是 redis 单机的方式,所以本篇要基于 redis 集群做分布式锁,我们使用 Redisson来做。有同学肯定有这样的疑问为什么用 redis 集群方式啊,单机不是挺好的?集群和单机不就是 redis 多节点配置的问题吗?为什么使用另一种方式 Redisson呢?Redisson 是什么呢?可不可以不用Redisson呢?……其实在研究 集群实现分布式锁之前我也有这些问题,所以,我下面一一为各位解答,并用代码实现。原创 2020-11-16 16:47:41 · 1437 阅读 · 2 评论 -
JAVA开发微信支付-公众号支付/微信浏览器支付(JSAPI)
写这篇文章的目的有2个,一是自己的项目刚开发完微信支付功能,趁热回个炉温习一下,二也是帮助像我这样对微信支付不熟悉,反复看了多天文档还是一知半解,原理都没摸清,更不要说实现了。本以为网上的微信开发教程会和“java的重写与重载”一样铺天盖地,可搜出来的结果,要么是PHP的教程(微信支付官网推荐就是PHP),要么星星点点就那么几篇,想对比的看看思路都成问题,官网下载的JAVA-SDK-DEMO也恕我技术低下,看的糊里糊涂。等自己开发完的那一刻,才豁然开朗,才知道走通完支付这条路的过程走了多少弯路,我是...原创 2020-10-22 11:38:29 · 495 阅读 · 0 评论 -
jar 替换 class
解压替换文件, 重新压缩成jar 包,切记 :winrar压缩格式选择为存储!!原创 2020-10-20 17:15:35 · 143 阅读 · 0 评论 -
利用ThreadLocal管理登录用户信息实现随用随取
通常在项目中,用户登录后,我们会将用户的信息存到session,如果想在其它地方获取session中的用户信息,我们需要先获取HttpServletRequest,再通过request.getSession得到HttpSession,从而获取到我们想要的用户信息。通常我们会将以上操作提取一个公共方法,如:public static User getSessionUser(HttpServletRequest request) { if(request.getSession().原创 2020-10-17 16:52:12 · 2188 阅读 · 0 评论 -
通过RequestContextHolder直接获取HttpServletRequest对象
问题朋友遇到一个问题:他想在Service方法中使用HttpServletRequest的API,但是又不想把HttpServletRequest对象当作这个Service方法的参数传过来,原因是这个方法被N多Controller调用,加一个参数就得改一堆代码。一句话:就是他懒。不过,这个问题该这么解决呢?思考不把HttpServletRequest当作参数传过来,这意味着要在Service的方法中直接获取到HttpServletRequest对象。我们知道,一次请求,Web应用服务器就会分配原创 2020-09-29 09:25:21 · 874 阅读 · 0 评论 -
ApplicationContextAware使用理解
问题背景在我们的web程序中,用spring来管理各个实例(bean), 有时在程序中为了使用已被实例化的bean, 通常会用到这样的代码:ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext-common.xml"); AbcService abcService = (AbcService)appContext.getBean("abcService"); 但是这样原创 2020-09-28 10:17:59 · 3246 阅读 · 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 · 6581 阅读 · 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 · 520 阅读 · 0 评论 -
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 · 681 阅读 · 0 评论 -
MybatisPlus常用API方法总结
原创 2020-07-15 09:17:48 · 638 阅读 · 0 评论 -
视频等大文件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 · 286 阅读 · 0 评论 -
@Cacheable、@CacheEvict、@CachePut使用方法,Spring常用的缓存注解说明
Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存放在缓存中,等到下次利用同样的参数来调用该方法时将不再执行该方法,而是直接...原创 2019-08-20 10:07:59 · 107 阅读 · 0 评论 -
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 · 1282 阅读 · 0 评论 -
java 并发编程内存模型分析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,...转载 2019-04-17 16:48:07 · 93 阅读 · 0 评论 -
为什么说Java中只有值传递,沒有引用传递
在开始深入讲解之前,有必要纠正一下大家以前的那些错误看法了。如果你有以下想法,那么你有必要好好阅读本文。错误理解一:值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。如果是个引用,就是引用传递。错误理解二:Java是引用传递。错误理解三:传递的参数如果是普通类型,那就是值传递,如果是对象,那就是引用传递。实参与形参我们都知道,在Java中定义方...原创 2019-02-28 10:00:21 · 487 阅读 · 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 · 902 阅读 · 0 评论