自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 基于Redis组件之分布式RateLimiter限流

上文我们介绍了RateLimiter文章路径针对IP来限流的方式,上文的限流方案,只针对单应用情况,分布式集群下就不能使用上文的方式,分布式下的限流方案有很多种,这边展示的是Redis的封装redission框架。可以这么讲,jdk中的juc包提供的是单机版的并发业务。那么Redisson基本是基于juc实现的分布式的业务。一:Redission官网我们先去Redission官网喵喵redission官方地址我们可以看到wiki提供了很多功能介绍,分布式锁等,我们这篇文章主要讲限流。进入正题

2021-05-18 16:27:16 6437 3

原创 Cxf+WebService集成拦截器

最近公司与一些大公司对接服务,使用的是老掉牙的web service协议的接口,其中遇到了不少的坑。在此将自己的经验描述一下,让各位后辈能学习到东西。。。1:介绍webservice      Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。 [1] &nbs

2021-05-14 11:01:34 1125 3

原创 Guava之RateLimiter限流

RateLimter是什么,我们为什么需要用到它,以物流系统作为例子:比如系统有一个物流信息查询接口,提供给第三方调用,接口暴露在公网,会出现什么问题,大致讲下如下问题:1、大量正常用户高频访问导致服务器宕机2、恶意用户高频访问导致服务器宕机3、网络爬虫等等限流常见方案:1:Nginx限流2:Tomcat限流3:漏桶算法4:令牌算法等等这里不多介绍,只介绍下RateLimter的令牌算法。其它的后续文章会加上。需要引入第三方组件库<dependency> &lt

2021-05-12 18:34:10 2992

原创 JDK1.8之DateTimeFormatter

我们常用的日期格式方式就是使用SimpleDateFormat,SimpleDateFormat在我们系统的里面,经常会用到,比如转换时间戳导出、打印啊等等。伪代码:正常我们都会这样使用转换时间注意:有些是需要的时候创建新实例如:工具类,创建新的实例SimpleDateFormat在并发下会出现出现时间不对,线程挂死等等。见源码:作者写的注释:翻译为:日期格式不同步。建议为每个线程创建单独的格式实例。如果多个线程同时访问一种格式,则必须从外部对其进行同步。我们常用的forma

2021-05-11 16:25:43 3430

原创 Java+CountDownLatch多任务处理优化

前言项目有许多统计的功能,有些统计页面,要展示几个统计的结果,用户通过前台设置相关参数,后台实时统计并返回数据。后台查询正常查询结果是串行的。最好的用户体验,就是每一个操作都可以实时的展示数据,3秒之内应该是用户的忍受范围之内的了,所以做一款产品不仅要考虑用户交互设计,后端的优化也是比不可少的。举一个物流项目例子:1:统计订单量2:统计物流信息的时效3:统计客户下单量(按高到低排序)大家可以简单的看下以上这3项统计数据,总体来说,统计量还是不少的。最主要的还是要实时、实时、实时(重要的事情说三

2021-05-10 18:32:48 2752

原创 JDK1.8特性之StringJoiner

StringBuilder、StringBuffer、String这三个的区别,很多文章都有在说。这边也给大家做一个简要的概述一:String、StringBuilder、StringBuffer1:StringString类型是不可变对象,所以我们在每次对 String 类型进行改变的时候,其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,不仅效率低下,而且大量浪费有限的内存空间,所以经常改变内容的字符串最好不要用 String 。见源码:final修饰

2021-05-10 16:00:22 2900

原创 Nacos(第一篇)_Springboot2.x+Nacos配置管理中心

前言在开发过程中,我们通常会配置一些参数来实现某些功能,如:开启某些服务,邮箱通知,短信通知等;一般在这个时候,我们都是通过硬编码来实现、配置文件或数据库实现。Nacos 配置管理Nacos 是阿里巴巴的开源的项目,全称 Naming Configuration Service ,专注于服务发现和配置管理领域。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态配置服务、服务发现及管理、动态DNS服务,服务元数据及流量管理。Nacos 生态图

2021-05-10 11:08:18 3214

原创 Sentinel(第三篇)_Springboot2.x+Sentinel监控信息基于MySQL持久化

前言根据官方提供的wiki文档,sentinel控制台的实时监控数据,默认提供的存储数据时间为 5 分钟以内的数据。如果我们的需求是需要持久化的,那就需要我们自己定制实现相关的接口。https://github.com/alibaba/Sentinel/wiki/%E5%AE%9E%E6%97%B6%E7%9B%91%E6%8E%A7本文只做一个持久化基于MySQL的方式,对于监控数据,可能用MySQL关系数据库存储不太合适,虽然MySQL也可以通过事件或者任务定期清理或者通过代码定时的清理。数据

2021-05-08 18:16:46 3817

原创 Sentinel(第二篇)_Springboot2.x+Sentinel源码版

前言:在第一篇,我为了偷懒使用的下载jar包版本启动的方式,由于现在需要集成nacos,则下载源码版。下载完成之后,解压进入解压后的文件夹如下然后我们打开当前项目,如下:打开可能没有展示完全,可能由于maven环境的加载,等等就好了。进入执行命令也可以用我们先试试我们下载的源码能不能启动,如果没有问题,我们再进行流控规则集中存储可以成功,接下来也要走一遍配置看看是否正常进入网站:localhost:8080并添加流控规则然后启动sentinel项目(第一篇搭建的项

2021-05-08 17:31:28 3416

原创 Sentinel(第一篇)_Springboot2.x+Sentinel

前言:Sentinel干嘛用的,我们先通过几个问题点,再通过这个几个问题点来看Sentinel是干嘛用的。限流:限流,字眼上的意思就是限制流量(请求数等),就是打个比方:一桶水最多装50毫升以每秒不超过10毫升,就不会溢出,假设瞬间你的水龙头滴水量超过了10毫升,那桶就会溢出,可能比较慢,但是如果一秒20毫升的水滴入,那很快就溢出了。可能一瞬间,也可能慢慢叠加。在系统上如果你的系统最大支持1000/qps,那如果一秒只有1000的qps进来,那服务器能稳定运行,如果一秒2000/qps的进来,服务器

2021-05-08 17:25:40 3952 1

原创 十万个为什么不推荐使用BeanUtils属性转换工具

至于为什么,我们跟着源代码来看,以及各种拷贝工具的性能效率;对比工具如下:1:apache common-beanUtils2:Spring beanUtils3:CGLib(实现converter与不实现converter情况,提供缓存BeanCopier提升性能)4:Mapstruct效率:getter/setter > Mapstruce > CGLib > Spring >apache common-beanUtils …;推荐直接定义转换类和方法可使用 IDE

2021-04-29 16:03:34 6587

原创 JMeter 安装 压力测试

最近公司系统的接口,客户调用经常出现超时等异常问题,排查日志发现是某一个时间段大批量请求进来,系统没有做队列,限流等操作。公司没测试工程师,于是又当爹又当妈,操练一下常用的JMeter测试工具。首先下载JMeter工具;官网地址:https://jmeter.apache.org/前提:先安装JDK,配置环境变量一:下载安装也可以下载旧版本;我使用的是5.2.1下载,安装好后。二:配置环境变量配置Jmeter环境变量:按下面变量名和变量值配置Jmeter系统环境变量变量名:【JM

2020-08-19 12:37:40 12432 1

原创 JVM 内存溢出 java heap space

前段时间公司的项目突然出现了异常,查看日志出现 java.lang.OutOfMemoryError: Java heap space这不是内存溢出了?当看到这个时候,瞬间想到了JVM调优,这不是面试官最喜欢问的JVM调优?对JVM没有了解过,刚好项目遇到了,决定学习一波。首先就是要了解JVM,了解JVM前,需要了解内存模型,类加载机制等;才能更明白的理解JVM,内存模型,类加载机制等,由于时间原因,没有独立的做单独的文章。后续补上。一:首先了解JVM:JVM它是Java Virtual Ma

2020-08-18 18:12:16 18653

原创 Layui 数据过长自动换行

添加此样式:.layui-table-cell { font-size:14px; padding:0 5px; height:auto; overflow:visible; text-overflow:inherit; white-space:normal; word-break: break-all;}

2020-08-17 14:14:49 16337

原创 Layui 标签栏改变颜色

<style> /*点击tab页字体加粗*/ .layui-tab-title .layui-this{ color: black; font-weight:bolder; } /*点击tab页背景色改变,以显眼当前在哪个标签页的主体页面*/ .layadmin-pagetabs .layui-tab-title li:hover, .layadmin-pagetabs

2020-08-17 14:14:27 17201 1

原创 Layui 新增的元素事件不生效

// 绑定onchange事件 ---新增的元素事件不生效 //$(".fixedInput").bind("input propertychange change",function(event){ // var _divs = $(".fixedInput").parent().parent().find("select"); // var select = _divs.eq(0).find("option:selected"); // select.val("fixedValu.

2020-08-16 10:46:07 14415

原创 Layui form提交阻止刷新

在点击事件第一行添加 // 设置表单提交不刷新事件--Start function stopDefault( e ) { //阻止默认浏览器动作(W3C) if ( e && e.preventDefault ){ e.preventDefault(); }else{//IE中阻止函数器默认动作的方式 window.event.returnValue = false; } return

2020-08-16 10:45:36 16388 2

原创 Layui 时间控件限制

//当前时间 var nowTime = new Date(); //console.log(nowTime); // 时间范围控制 var test5 = laydate.render({ elem: '#test5' ,calendar:true ,type:"datetime" ,value: new Date((new Date() - 5184000000)) // 2个月前 //,range: true ,min: -1000 /

2020-08-16 10:44:54 14617 1

原创 Layui 关闭layui的tab页

引用admin.js。 var admin = layui.admin; var topAdmin = parent === self ? admin : parent.layui.admin; // 关闭tab页 topAdmin.closeThisTabs(); $("#LAY_app_tabsheader>li").eq(admin.tabsPage.index).find('.layui-tab-close').trigger('click');

2020-08-16 10:44:22 17771

原创 Layui 子页面:需要关闭当前弹窗(子页面)

var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引parent.layer.close(index); //再执行关闭parent.layer.alert(result.message,{icon:1});

2020-08-16 10:43:44 16433 1

原创 Layui 导出execl,长度大于15会被科学计算法的解决办法

找到table.js请修改源码:找到这个方法 table.exportFile = function(id, data, type,name){ xxxx; xxxx; xxxx; layui.each(table.clearCacheKey(item1), function(i2, item2){// 修改前; vals.push

2020-08-16 10:42:58 14586

原创 Layui 点击跳转新的tab页并后台校验,异常弹出提示信息并关闭tab页

如果点击跳转新的tab页,同时打开tab页并后台校验,如异常弹出提示信息并关闭tab页;引入admin.jslayui.use([ 'index', 'laydate', 'form','laypage','httpCommon', 'jquery','layer','table','admin'], function () {var admin = layui.admin;在需要处理的条件内,添加此段代码; var topAdmin = parent === self ? admin : p

2020-08-16 10:42:20 14704

原创 Layui 导出EXECL需要设置EXECL名称

(当前使用版本:layui 2.4.0)打开table.js请修改源码:找到此方法括起来的方法修改源码条件// 旧table.exportFile = function(id, data, type){ data = data || table.clearCacheKey(table.cache[id]); type = type || 'csv'; // 省略... alink.download = (config.title

2020-08-16 10:41:05 13491

原创 Layui 数据表格的行记录需要换行

请添加此css样式:注意:表格渲染如果设置了“fixed: ‘left’”此,字段需要去掉, .layui-table-cell { height: auto; }

2020-08-16 10:40:05 14201

原创 Layui 数据表格复选框不居中

请添加此css样式: .layui-table-cell .layui-form-checkbox[lay-skin="primary"]{ top: 50%; transform: translateY(-50%); }

2020-08-16 10:38:48 14373

原创 Hirbernate set属性自动更新

1

2020-08-05 10:35:15 15858

原创 JAVA 图片添加内容

公司最近需要进行图片内容动态添加数据需求boolean flag = PDFReader.createStringMark(“C:\Users\zhangwp\Desktop\1.jpg”, “CALG”,“C:\Users\zhangwp\Desktop\12.jpg”);System.out.println(flag);具体内容位置等根据需求调试/** * 给图片添加文字内容 * @param filePath 原图路径 * @param markContent

2020-08-05 10:12:39 16125

原创 Linux 安装SVN服务器 图解教程

前言:

2020-08-05 09:51:29 15778

原创 Linux 配置TOMCAT多JDK

1.安装Tomcat,并制定jdk(用于一台服务器多jdk,多tomcat配置)2:配置基于linux,centos6.9的配置,不要配置环境变量,只需在setclasspath.sh,重点是sh结尾// 这里追加#Make sure prerequisite environment variables are setexport JAVA_HOME=/usr/java1.8/jdk1.8.0_231 //jdk路径export JRE_HOME=/usr/java1.8/jdk1.8.0_

2020-08-05 09:51:10 15766

原创 Linux 安装ActiveMQ 图解教程

1.前提:activemq基于java的,所以得先安装jdk;见Linux 安装JDK 图解教程重点重点重点:Activemq的版本一定要和JDK的版本匹配。2.下载activemq下载地址:http://activemq.apache.org/download-archives.html我下载的是Activemq 5.12.0 Relaese 版本JDK我安装的是1.7版本https://www.oracle.com/technetwork/java/javase/downloads/ja

2020-08-05 09:50:53 15933

原创 Linux 安装Erlang 图解教程

1.安装依赖yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel.erlang官网:https://www.erlang.org/downloads下载(会比较慢,请耐心等待)wget http://erlang.org/download/otp_src_22.0.tar.gz由于我已经有包了,就直接解压了。2.解压tar -zxvf

2020-08-05 09:50:37 14900

原创 Linux 安装RabbitMQ 图解教程

1.前提:由于rabbitmq是基于erlang语言开发的,所以必须先安装erlang。见Linux 安装Erlang 图解教程rabbitmq下载地址:https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.15下载wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.15/rabbitmq-server-generic-unix-3.7.

2020-08-04 11:03:34 15013

原创 Linux 安装Nginx 图解教程

1.首先安装nginx所需环境安装4个依赖gcc 安装yum install gcc-c++PCRE pcre-devel 安装yum install -y pcre pcre-develzlib 安装yum install -y zlib zlib-develOpenSSL 安装yum install -y openssl openssl-devel2.安装nginx我使用的是wget命令下载nginx创建的nginx目录下使用命令wget -c https://nginx.or

2020-08-04 10:57:42 14511

原创 Linux 安装FastDFS 图解教程

1.创建fastdfs安装目录,我的是在etc/fastdfs。由于我在虚拟机搭建首先在etc目录下的hosts文件添加一行IP地址192.168.1.14 file.gaci.com如果要本机访问虚拟机,在C:\Windows\System32\drivers\etc\hosts中同样增加一行2.下载安装libfastcommon我这边使用的是wget命令:wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.ta

2020-08-04 10:54:29 15618

原创 Linux 安装Solr 图解教程

1.进入Solr官网我装的是6.5.0的版本2.下载Tomcat进入官网:使用xshell连接虚拟机,在/usr目录下,新建Tomcat目录和Solr目录,把相应的包上传进去解压Solr和Tomcat(1)解压Solr(2)解压Tomcat3.复制Solr文件夹中的一些文件到apache-tomcat下:(1)将 solr 压缩包中 solr\server\solr-webapp\文件夹下有个webapp文件夹,将之复制到tomcat\webapps\目录下,文件夹名改

2020-08-04 10:23:24 15213

原创 Linux 安装Zookeeper 图解教程

1.进入Zookeeper官网http://zookeeper.apache.org/2.连接上xftp下载好之后,用xftp连接上,然后我在我自己的/usr里面新建一个zookeeper文件夹,把下载好的包上传到里面。3.然后使用xshell连接上虚拟机进入zookeeper的目录然后使用命令: tar -zxvf 上传文件的名字我们进入到conf文件夹下面,将zoo_sample.cfg这个文件复制为zoo.cfg(必须是这个文件):使用命令: cp zoo_sampl

2020-08-04 10:16:48 15565

原创 Linux 安装Redis 图解教程

1.首先进入官网:https://redis.io下载redis2.下载之后连接xftp,上传到自己生成的文件夹里3.然后连接xshell进入文件夹里解压redis包输入:tar -zxvf 文件名Cd 进入redis解压目录4.输入:make命令出现这些错误;需安装gcc,输入:yum -y install gcc5.重新进入redis目录进行make再次make,发现出现如下错误:执行:make MALLOC=libc,完成后,发现src下生成了redis-se

2020-08-04 10:13:13 15560

原创 Linux 安装MySQL 图解教程

1.首先进入到MySQL存放安装包的位置新建一个mysql目录输入: cd /usr 进入usr目录 ,然后输入: mkdir mysql 创建mysql目录输入: ll 查看目录生成没有2.查看系统中是否已安装MySQL服务(提示:可能会有自带的MySQL),以下提供两种方式;rpm -qa | grep mysqlyum list installed | grep mysql本人的没有,如果已安装则删除MySQL及其依赖的包;3.下载 mysql57-commu

2020-08-04 10:05:31 16063

原创 Linux 安装JDK 图解教程

1.安装方式第一种方法:首先进入官网www.oracle.com 第二种:采用yum安装。本文采用第一种2.打开虚拟机3.查看ip地址命令 :ip addrEns33发现没有ip地址,输入 : vi /etc/sysconfig/network-scripts/ifcfg-ens33显示这样:然后按 i键编辑,改成yes,按esc键退出编辑,再输入命令 :wq 保存退出4.输入sudo service network restart 重启5.输入ip ad

2020-08-04 09:54:22 17603

原创 JAVA Json-Schema接口校验利器

何为Json-SchemaJson-schema是描述你的JSON数据格式;JSON模式(应用程序/模式+ JSON)有多种用途,其中之一就是实例验证。验证过程可以是交互式或非交互式的。例如,应用程序可以使用JSON模式来构建用户界面使互动的内容生成除了用户输入检查或验证各种来源获取的数据。(来自百度百科)相关jar包<dependency> <groupId>com.github.fge</groupId> <artifactId&g

2020-08-04 08:57:47 16599

空空如也

空空如也

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

TA关注的人

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