自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mufeng

一步一个脚印....

  • 博客(77)
  • 资源 (5)
  • 问答 (19)
  • 收藏
  • 关注

原创 记录一次由于OOM的unable to create new native thread异常引发的线上问题

早上刚到公司,产品就跑过来说:xxx看看这个工单数据是怎么回事?为什么和预期的不一致呢?顿时感觉头大。早饭也顾不上吃了,就拿到数据ID在Elk中搜索日志…问题描述: 根据数据ID,在ELK海量日志中搜索,发现该请求竟然OOM了!!! what? 真是让我惊讶。 仔细查看下报错的原因竟是,JVM申请不到线程来处理本次请求,而导致的OOM。具体日志如下: 原因定位:nested exception is java.lang.OutOfMemoryError: unable to create n

2021-07-06 20:46:33 1184 1

原创 记录一次由于流的read(byte[3 * 1024], 0, len); 读取不足定义的长度,引发的线上bug

场景需求流程:body中携带参数将参数、签名、文件流(base64)格式,通过Http请求第三方接口进行转义音频请求参数如下:{ "sign":"BSKJFKGJKSLQK", "body":{ "bt":"Base64字符" }}1.第一版代码(OOM)1.1.流程概要 - 从网络中获取流,将流转成base64字符 - 将base64字符串与其它参数进行toString(),这时由于base64占用很大的堆内存,极易引发OOM - 通过http发

2021-06-23 15:44:48 497

原创 策略模式应该这样玩(二)

第一版策略应该这样玩(一)利用的是Reflections反射框架 + 注解方式 实现的策略模式,这种是必须引用外部框架Reflections包才能使用,如果不想引用,那有没有另外一种方式可以实现策略模式呢,答案肯定是有的咯。实现思路利用接口实现类 + Application 方式实现策略模式1.创建支付的策略接口并实现它/** * @Description:支付的策略类 * @Auther:Cc * @Data:2020/4/18 22:12 */public interface Stra

2021-01-28 10:49:18 279 1

原创 策略模式应该这样玩(一)

1.为什么我要写这个文章工作了好几年了,发现周围好多同事对应一些类型判断从来没有用过策略模式,导致代码臃肿、耦合度极高,此文主要给从来没有用过设计模式的人一个思想,让他们感受下设计模式之美,哈哈。好了,开始进入正文本文主要讲述策略模式在工作中的应用,主要包含以下知识点:1. 策略模式2. 单例模式3. 工厂模式4. 反射5. 自定义注解如果以上的都不清楚,那可要好好补补课了跟着...

2020-04-21 16:54:06 586

原创 SprngBoot+redis+Token 解决接口幂等性问题

前言:在实际的开发项目中,一个对外暴露的接口往往会面临,瞬间大量的重复的请求提交,如果想过滤掉重复请求造成对业务的伤害,那就需要实现幂等!解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重复处理。如何保证其幂等性,通常有以下手段:数据库建立唯一性索引,可以保证最终插入数据库的只有一条数据token机制...

2020-04-21 16:16:17 2678 10

原创 PDF.JS 解决跨域, 传值,本地路径,IE兼容性 问题

最近公司要求实现在线预览PDF功能,于是百度查了一些资料,借鉴了一些大佬好的想法,特总结下来,供参考。去官网http://mozilla.github.io/pdf.js/ 下载 pdfjs类库导入项目的 WebRoot 下:之后更改Viewer.js中 默认引入pdf路径,请自行百度。第一种:在本项目中预览PDF这种方式是最简单的,因为不涉及跨域操作以及本机pdf文件操作。代码如下`...

2018-10-09 15:34:03 12436 11

原创 docker容器部署RocketMQ

1.创建namesrv服务docker pull rocketmqinc/rocketmq创建namesrv数据存储路径mkdir -p /docker/rocketmq/data/namesrv/logs /docker/rocketmq/data/namesrv/store构建namesrv容器docker run -d \--restart=always \--name rmqnamesrv \-p 9876:9876 \-v /docker/rocketmq/data/n

2021-07-27 21:02:05 1760 4

原创 AQS同步器代码分析

AQS原理代码分析特点:可重入锁,有公平锁、非公平锁区分,默认非公平锁。大概逻辑:修改成功并获得锁加入到等待队列Node1、Node2、Node3、…让等待队列线程挂起LockSuport.part(next); 阻塞挂起响应唤醒挂起的线程。LockSuport.unpart(next);Lock代码分析//非公平锁ReentrantLock rLock = new ReentantLock();rLock.lock();//方法 final

2021-06-08 20:53:19 159

原创 jvm的局部变量表

1.为什么要单独写局部变量表的文章?在我个人学习jvm期间,最疑惑的点就在局部变量表什么是局部变量表变量如何在局部变量表中存储的?1.什么是局部变量表在说这个话题之前,大家首先要明白什么是虚拟机栈,它是一种 栈帧 的数据结构,是虚拟机运行时数据区中的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态链接和方法返回地址等信息。局部变量表: 是一组变量值的存储空间,用于存放方法参数和方法内部定义的局部变量,在Java程序被编译为Class文件时,就已经确定了每个方法所需局部变量表的最大容量。它以

2021-05-22 16:40:48 569

原创 JVM:CMS收集器

以下内容摘抄自《深入理解Java虚拟机》P96CMS收集器JVM参数配置: -XX:+UseParNewGC -XX:+UseConcMarkSweepGC 新生代使用并行收集器,老年代使用串行回收收集器目标: 以获取最短回收停顿时间为目标的收集器算法: 基于标记–清除算法1.四个阶段1.)初始标记(CMS initial mark)2.)并发标记(CMS concurrent mark)3.)重新标记(CMS remark)4.)并发清除(CMS concurrent sweep)

2021-05-15 18:43:06 203

原创 Mysql的Decimal()函数

1.场景:数据要sum()求和,字段值有小数,当进行计算时,进行了四舍五入,导致计算错误select CAST(1.5 as DECIMAL); //结果:2select CAST(1.5 as DECIMAL(18, 2)); //结果:1.52.知识:DECIMAL精度和小数位数的默认值分别是18与0。如果在decimal类型中不提供这两个值,那么默认四舍五入。select CAST(1.5 as DECIMAL); //结果:2select CAST(1.4 as DECI

2021-05-12 15:00:39 4483

原创 初识JVM

调优调的什么调的都是堆,因为在jvm内存模型中,虚拟机栈、本地方法栈、程序计数器、是不会产生垃圾的个人常用调优参数参数含义-Xms20m最小堆小设置为20m (默认操作系统的1/64)-Xmx50m最大堆小设置为50m (默认系统的1/4)-Xmn20m新生代大小设置为20m-XX:MetaspaceSize=128m初始化元空间大小为128m-XX:MaxMetaspaceSize=128m最大元空间大小-XX:SurvivorRatio

2021-04-29 14:41:09 278 2

原创 记录多线程使用引发的线程安全问题 -- Callable<T> 返回值场景

1.场景:进行多线程处理时,需根据传递的参数,执行相应的方法,并返回结果代码相关:package cn.sys.Test.thread.callable;import lombok.Getter;import lombok.Setter;import java.util.concurrent.*;class Task implements Callable<String> { private ThreadPoolExecutorTest test; pri

2021-03-11 17:01:27 396 3

原创 java从网络中下载文件

java从网络中下载文件,封装了一个工具类package com.fsk.common.utils.file;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.net.HttpURLConnection;import java.net.URL;public class FileUtils { /** *

2021-01-12 17:30:07 464

原创 Feign远程调用报请求头异常

Feign远程调用报请求头异常在做微信支付时,线上稳定允许了一段时间,因为更改了网关,在支付完成进行进行回调时,feign远程调用业务逻辑时,出现请求头异常,去git查看issue得到需配置请求头,故记录一下。代码:/** * @description: 设置feign请求头 * @author: cc * @date: 2020/10/27 15:01 */@Configurationpublic class FeignConfiguration implements RequestIn

2020-10-27 15:06:26 696

原创 mysql获取本周星期几、当天是本月多少号

#本周星期几select dayofweek(NOW()) -1;#本月多少号select DAYOFMONTH(NOW());

2020-08-04 15:04:53 2436

原创 微信小程序--解密手机号、unionId

该方法,为了解析小程序的手机号和unionId等密文信息wx.getUserInfo的官方文档登录相关文档String result = WxPublicUtil.getPhoneNumber(encryptedData, sessionKey, iv);JSONObject jsonObject = JSONObject.parseObject(result);解析手机号参数示例:{ "openId": "2222", "encryptedData":"H3eEZR9ZRKW

2020-07-16 22:00:30 713

原创 微信公众号---域验证

1.为了成为开发者进行的验证:验证成功之后,需返回:echoStr 消息controller请求: /** * @author: cc * @date: 2020/7/15 13:26 */ @GetMapping("/wxDomainToken") @ApiOperation(value = "微信接口域验证", httpMethod = "GET", notes = "微信接口域验证") public void show(HttpSer

2020-07-16 21:51:07 192

原创 微信公众号--授权相关

1.近期在做微信公众号相关授权,借此机会记录一下,以备后续1.测试接口号申请1.首先验证成功开发者 /** * @author: cc * @date: 2020/7/15 13:26 */ @GetMapping("/wxDomainToken") @ApiOperation(value = "微信接口域验证", httpMethod = "GET", notes = "微信接口域验证") public void show(HttpServle

2020-07-16 21:24:54 455

转载 Http请求连接池工具类

springboot封装httpClient配置使用场景:参数为body,并需要设置Header头部信息1、添加pom内容 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpasyncclient</artifactId> <version>4.1</version> </depen

2020-06-10 15:48:38 1276 1

原创 Http请求工具类

用于Http请求使用import com.alibaba.fastjson.JSONObject;import java.io.*;import java.net.ConnectException;import java.net.HttpURLConnection;import java.net.URL;import java.util.Map;/** * @description: http请求工具类 * @author: Cc * @data: 2020/6/10 11:08

2020-06-10 15:33:50 679

原创 Spring事物你真的懂了吗?

1.Spring事物你真的懂了吗?问题1:spring在什么情况下,会导致事物失效?2.前期准备数据库Mysql,采用默认的传播行为parent()方法调用child()方法。parent()为核心任务,必须执行。child()方法可有可无3.模拟场景3.1 模拟2个默认的传播行为首先:都定义2个为默认的传播行为先去看下数据库:@RunWith(SpringRunner.class)@SpringBootTest@Slf4jpublic class TestTransactiona

2020-06-01 23:58:51 321

原创 基于Redis实现分布式锁

1.前言目前系统架构是分布式,因为场景要保证数据一致性,且项目采用的是redis作为缓存,故采用reids实现分布式锁2.实现方案采用 redis中的 setNx + expire 实现分布式锁setNx(key, value): 如果key存在,则返回0. 否则返回1expire: 过期时间3.代码实现(Demo) /** * @Description 是否获取到锁 ...

2020-05-06 11:45:40 167

原创 多线程之---CountDownLatch和CylicBarrier

随手记录一下,写的粗糙,没有涉及原理,方便自己。以后再深入研究1.CountDownLatchCountDownLatch是一个计数器闭锁,通过它可以完成类似于阻塞当前线程的功能,即:一个线程或多个线程一直等待,直到其他线程执行的操作完成2.CylicBarrierCyclicBarrier允许一组线程在到达某个栅栏点(common barrier point)互相等待,直到最后一个...

2020-05-03 17:46:03 393

原创 多线程之--- 信号量Semaphore

写这篇博客的目的是增加自己记忆,方便平常使用1.信号量Semaphore 是一种基于计数的信号量,它可以是一个阀值,基于此,多个线程竞争获取许可信号,超过阀值后,线程申请许可信号将会别阻塞常用方法方法含义acquire()申请一个信号量获取可用的资源,如果可用, 信号量内部的资源个数减掉1,如果没有可用资源线程会阻塞在该方法中,不能结束该方法,不能返回,直到有可用...

2020-05-03 17:13:58 420

原创 Mybatis如果存在该条数据则修改,否则新增

1.前景这几天接到客户的一个需求:数据导入时如果存在该数据则去更新,否则新增2.思考查看Mysql的文档知道存在一个函数,挺符合符合我现在的需求on DUPLICATE key UPDATE2.1:前提:表数据必须有**【唯一主键】**,否则无法进行判断该数据是否唯一2.2:语法insert into t_wsdm_code(id,code_type,code,type_nam...

2020-04-16 17:30:53 7120

原创 PDF加水印

1.前期准备:在pom.xml中加入以下依赖 <!-- PDF加水印 Begin --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId&gt...

2020-04-15 17:17:11 343

原创 java.lang.NoSuchMethodError异常信息

出现这种问题,大部分都是jar报版本太低造成。因为我的出现原因: 当我调用该方法时,出现 java.lang.NoSuchMethodError异常信息 :public class JzsDBPoolConnection { private static BasicDataSource dataSource = null;}这个类里,因为是连接池,故把连接池jar包升级,问题就解决了...

2019-10-17 12:12:30 1757

原创 使用 spire.doc 将word转pdf

java使用工具栏 spire.doc.free-2.0.0.jar实现,word转pdf。简单将jar引用项目中,之后测试就ok了 public static void main(String[] argv) throws Exception { Document document = new Document(); document.loadFromFile("D:\\\\AA...

2019-10-15 13:53:45 4599 4

原创 java递归获取父节点下的所有子节点

//存放子节点 static List<Map<String,Object>> cList = new ArrayList<Map<String, Object>>(); /** * @Description 递归父节点,获取所有子节点 * @param: * @param aList 需要递归的数据 * @param id 父...

2019-08-14 17:30:51 1977

原创 java批量下载为zip

前言:1.前端:在这里插入代码片2.后端/** 批量下载为 zip **/public static void batchDownLoadFile(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ String filename =...

2019-08-13 17:54:12 2991

原创 单例模式的连接池模板

因为在项目中,要使用到多数据源,且对该项目框架不熟悉,故写出用连接池操作其它的数据库该模板是查阅API文档,自己手写完成。大大简化了操作的复杂性。具体可看代码代码:package com.ces.component.issuetable.action;import org.apache.commons.dbcp.BasicDataSource;import org.apache.com...

2019-07-19 09:36:04 586

原创 Mysql中的锁

1.为什么需要加锁为了保证数据的一致性2.Mysql中存在什么锁表锁和行锁表锁与行锁粒度的对比:锁定粒度: 表锁 > 行锁加锁效率: 表锁 > 行锁冲突概率: 表锁 > 行锁并发性能: 表锁 < 行锁3.针对锁,又可细分为以下几种锁a.共享锁(Shared Lock):简称 “ 读 ”锁,就是多个事务对于同一锁可以共享一把锁,都能访问到数据吗,但是只能...

2019-05-30 17:29:28 137

原创 Spring使用 AOP 实现 日志功能

因为有人问我 AOP 应该怎么实现日志功能,故写一个简单版本。在写Aop 实现日志功能时,如果对AOP 一些内置属性不清楚的,可结合此博客:代码环境 SSM :1.首先 写一个 日志类 Logtable@Entity@Table(name = "logtable")@Setter@Getterpublic class Logtable { private Integer id...

2019-05-18 19:06:53 6743

原创 关于事务的注意事项

1.添加了 @Transactional 注解的方法,如果在方法中添加 try { }catch(){ }块, 那么在块中如果发生异常则不会回滚。2.如果一个需求是: 当我在做删除操作时,如果失败与否,都必须添加日志。 那么这个地方就需要使用事务的传播行为:propagation= requires_new ;含义:如果当前线程中存在事务,则挂起当前事务,并新建一个属于自己的事务执行,...

2019-05-07 18:51:08 504

原创 利用html2canvas.js截取当前HTML为图片并保存下载

1.前期准备利用 html2canvas.js文件,如果没有则可点击下载:实现原理:利用渲染的html进行局部截图生成图片的Base64码,之后,可以在后台通过解析Base64 获取到图片。前端代码:1.先创建一个待截图的HTML。 <div id="container2" style="color: #FF0000;display: inline-block; wi...

2019-05-05 11:54:39 3806

原创 java根据Excel模板导出excel

需要jar包:如果是 maven项目需要引入下面这个就可以<dependency> <groupId>net.sf.jxls</groupId> <artifactId>jxls-core</artifactId> <version>1.0.3</versi...

2019-04-08 15:12:26 12478 6

转载 浅谈对 索引的认知

1.索引三大特性三大特性分别是:a、索引高度较低, io次数会很少,数据访问速度增加,索引高度较低是优化利器,几百万数据访问一条数据也是很快完成,尽管有8个或者几个逻辑读,也可很快完成查询。b、索引存储列值,索引可以看作是列和rowid的组合。这样的特性可以优化count,sum、avg类sql,第二个特性和第三个特性共同可以优化max、min类sql。c、索引本身有序索引有序可以优化...

2019-03-28 14:59:59 484

原创 Mysql explain 执行计划 解释

一:Mysql explain 执行计划前言:使用 explain 执行sql计划,以便分析Sql执行过程 涉及多少行、使用哪些索引、运行时间等。如:explain 名词解释:字段含义table显示这一行的数据是关于哪张表的type这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和...

2019-03-28 14:01:50 337

原创 Spring事务的几种实现方式

前言1.、事务几种实现方式(1)编程式事务管理对基于 POJO 的应用来说是唯一选择。我们需要在代码中调用beginTransaction()、commit()、rollback()等事务管理相关的方法,这就是编程式事务管理。(2)基于 TransactionProxyFactoryBean的声明式事务管理(3)基于 @Transactional 的声明式事务管理(4)基于Aspectj...

2019-03-14 14:38:56 28700

spire.doc.free-2.0.0.jar

使用工具类将word转pdf,直接调用方法就可以。简单无脑操作。推荐给大家。详情看我博客

2019-10-15

html2canvas.js

通过该js实现html在线截图,生成Base64码,从而实现在线截图并下载

2019-05-05

excel模板所需jar:commons-jexl-2.1.1.jar 和 jxls-core1.0.3.jar

该资源用于 根据Excel模板导出相应数据所需jar包。commons-jexl-2.1.1.jar 和 jxls-core1.0.3.jar

2019-04-08

jai_codec-1.1.3.jar 和 jai_core.jar 核心包

tiff图片转JPG文件所需jar包,jai_codec-1.1.3.jar 和 jai_core.jar 核心包 亲测可用!

2018-10-25

jobConverter

jobConverter相关jar包,实现 word转PDF,直接考入项目,自己亲测可用。

2018-10-24

JVM相关:示例程序,为什么会占用3M空间?

2021-05-11

JVM相关:下面代码中年轻代分配的空间才4M大小,为什么就进行了Minor GC?

2021-05-10

关于JVM的内存布局:为什么类的静态变量String等于方法体中的String?

2021-04-22

如何编译安卓源代码NotificationManagerService.java文件

2020-10-14

spring cloud Oauth2.0 使用refresh token 获取到的新的refresh token 无法进行刷新Token

2020-10-10

AtomicInteger原子类,这种情况下为什么线程不安全?

2020-07-27

如何保证第三方登录的Token不过期?

2020-06-09

支付宝手机H5支付,return_url无法请求服务器接口

2020-06-06

springCloud微服务需要使用消息队列,从应用扩展性及效率来讲,是使用spring cloud stram + rabbitmq 方式好点 还是单纯使用rabbitmq好

2020-05-28

jsp页面初始化时,css无法对append追加的元素进行渲染

2020-02-18

Oracle数据库问题:因为本机电脑意外重启,导致数据库不能使用了

2019-08-26

spring boot 无法引用静态资源

2019-06-28

spring boot 访问HTML 总是有缓存,如何修改前端页面实时生效

2019-06-25

使用html2canvas截图生成的Base64 参数,传递到后台,解析之后下载的图片和截图的图片不一致问题

2019-04-29

JDBC 如何抽成一个公共查询方法,并正确释放资源 close()

2019-04-25

连接池:为什么方法结束之后,连接池中所有链接都结束了???

2019-04-24

将 json数据 按照字符串的格式存到了 redis中,当我数据库做了增 删、改 ,该如何保 数据一致性呢

2018-12-03

sql Server触发器,急

2018-11-05

Web项目使用 Pdf.js类库实现在线预览PDF,点击 在线预览,出现“意外的服务器响应”,急

2018-09-30

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

TA关注的人

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