- 博客(78)
- 资源 (12)
- 问答 (1)
- 收藏
- 关注
原创 JDK 1.8 HashMap源码分析(部分)
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { private static final long serialVe
2018-07-13 17:00:52 401
原创 前端报表导出成word文档(含echarts图表)
前端报表导出成word文档(含echarts图表)一、问题背景:前端vue做的各种维度的报表,原来是通过前端整体截屏导出成PDF,但部分报表在遇到跨页时会被截断,客户体验极差。然后又考虑客户可能需要修改报表中的一些内容,因此需要导出成word文档解决跨页截断和满足修改报表内容的问题。前期解决方案预研时试过jacob、poi方案,但jacob只能用于windows平台(要引用一个dll文...
2018-06-23 22:33:56 39189 29
原创 【第7期】前端如何实现菜单记忆和用户操作的状态记忆
本期要点:1. 先看实现的效果图2. Iview菜单Menu的介绍3. 如何实现菜单记忆4. 如何实现用户操作的状态记忆
2024-01-03 13:05:24 634 1
原创 【第6期】使用Iview的Select组件进行远程搜索并在编辑时设置一个或多个默认值
本期要点1. Iview Select组件的简单介绍2. 后端编写学校搜索接口3. 前端编写调用搜索接口的相关方法4. Select组件触发远程搜索5. 编辑时对已选择的数据设置默认值(1个和多个)
2024-01-03 12:56:09 1784
原创 【第5期】前端Vue使用Proxy+Vuex(store、mutations、actions)跨域调通本地后端接口
本期要点1. 本地开发前后端如何跨域调用2. 全局请求、响应处理拦截器处理3. 封装HTTP请求模块4. 编写API请求映射到后端API5. 数据的状态管理
2023-12-31 23:39:24 1336
原创 【第4期】Springboot集成阿里云对象存储OSS+Vue+Iview文件上传组件
- 本期要点:1. 配置阿里云OSS密钥2. 编写OSS上传的简单类3. Springboot集成OSS4. 后端开发上传接口5. 前端开发Vue+Iview+Uploader组件6. 前端渲染上传后的图片
2023-12-30 08:57:16 1191
原创 【第3期】Springboot集成SpringSecurity+RSA+ECS免密登录
本期要点:1. 如何生成RSA公钥文件和私钥文件2. 获取公钥文件和私钥文件转换成JDK的密钥文件对象 3. 简单的验证加密和解密4. 与Springboot、SpringSecurity如何集成5. 集成后验证用户注册的加密存储6. 集成后验证用户登录的解密验证7. 实现ECS的免密登录
2023-12-16 13:45:43 1766
原创 【第2期】Springboot如何快速集成SpringSecurity
本期讲如何集成SpringSecurity- 主要讲解一下部分:>1、基于RBAC的权限系统>2、SpringSecurity核心安全配置>3、登录过滤器>4、权限校验过滤器>5、默认的登录接口
2023-12-13 13:45:52 1254
原创 【第1期】SpringSecurity基于角色和权限的细粒度接口权限控制
从零到一开发上线前后端资源平台,技术栈:Springboot+SpringSecurity+RSA+JWT+Redis+VUE
2023-12-13 08:27:16 1298
原创 Syntax Error: TypeError: Cannot read properties of undefined (reading ‘styles‘)
Syntax Error: TypeError: Cannot read properties of undefined (reading 'styles')
2023-12-01 23:30:52 3404
原创 井字格不重复最多走法
题目:从起点(0,0)沿着边走到终点(m,n),走的路不重复,求有多少种不同的走法?算法设计方法一:利用递归思想,从终点(m,n)来看,能走到终点的走法有多少种,假设paths(m,n)表示从起点走到(m,n)的走法数量,那么有表达式:paths(m,n)=paths(m,n-1)+paths(m-1,n)。含义是,到达(m,n)点的走法等于到达(m,n-1)的走法加上到达(m-1,n)的走法,只有这两个途径可以到达(m,n)。方法二:动态规划,待补充算法实现方法一:递归算法pu
2021-01-01 14:37:28 2334
原创 Java手写简单数据库连接池
1. 来源有时候我们在编写一些简单的需要操作数据库的工具时,可能就用不着复杂的spring、mybatis这样的框架,需要尽量的简单化。从下面的测试数据可以看出,创建数据库连接平均耗时1.8秒,释放连接平均耗时0.2秒,如果不使用连接池,那么每次数据库操作都会多花至少2秒的时间来创建和释放连接。当使用了连接池后,只需要在启动和结束的时候花点时间初始化和释放连接,在中途真正操作数据库时会节省大量的时间,提升系统的性能。连接耗时测试==========================开始初始化【源库】
2020-09-26 11:17:10 1454 1
原创 去掉Log4j,如何转换成logback
这里写自定义目录标题修复漏洞,去掉Log4j,引入logback1 背景2 困难点3 组件介绍3.1 代码结构3.2 关键类说明3.2.1 ClassOfCallerConverter.java3.2.2 MethodOfCallerConverter.java3.2.3 LineOfCallerConverter.java3.2.4 LogbackConfigLoader.java3.2.5 AbstractLogbackInitListener.java3.2.6 DefaultLogbackInitL
2020-06-19 13:38:52 2866
原创 从网上爬取全国大学学校数据2020版(最新版,包含大部分常用字段)
1. 文章说明现在跟教育沾边的项目基本上都离不开“学校”的数据,而全国大学的数据网上版本也非常之多,下载了很多个版本,浪费了近100点C币,最终得到的数据都不尽如人意,有些只有学校数据缺少其他重要的字段,有些只有部分学校,缺少很多学校。本篇文章的目的就是为了分享我获取到的最新的全国大学学校数据,数据非常的丰富,字段多达41个,总共2934所,数据来源:中国教育在线2. 爬取数据样例展示为了让大家清楚的看到数据本身的样子,这里给出几个示例:字段字段值字段含义id140系统内部
2020-06-01 22:17:54 11163 14
原创 不同层面禁用PUT、DELETE、HEAD、TRACE、OPTIONS请求方式
背景对于一些对安全级别要求高的应用,可能只允许有GET和POST请求,其他请求方式需要禁用,那么可以从多个层面来进行禁用。下面从大范围禁用到小范围禁用罗列如下(假定服务容器是tomcat)从tomcat层面禁用从tomcat来禁用,表示tomcat中所有运行的应用都禁用这些请求方法修改apache-tomcat/conf/web.xml,在<session-config></session-config>节点后面新增禁用配置:<session-config>
2020-05-14 11:18:47 7532
转载 Apache Rocketmq 关键类详细说明(九)
DefaultMQProducer类简介public class DefaultMQProducer extends ClientConfig implements MQProducerDefaultMQProducer类是应用用来投递消息的入口,开箱即用,可通过无参构造方法快速创建一个生产者。主要负责消息的发送,支持同步/异步/oneway的发送方式,这些发送方式均支持批量发送。可以通...
2020-01-10 11:23:23 354
转载 Apache Rocketmq 权限控制(七)
权限控制1.权限控制特性介绍权限控制(ACL)主要为RocketMQ提供Topic资源级别的用户访问控制。用户在使用RocketMQ权限控制时,可以在Client客户端通过 RPCHook注入AccessKey和SecretKey签名;同时,将对应的权限控制属性(包括Topic访问权限、IP白名单和AccessKey和SecretKey签名等)设置在distribution/conf/pla...
2020-01-10 11:22:17 3324
转载 Apache Rocketmq 架构设计(三)
架构设计1 技术架构RocketMQ架构上主要分为四部分,如上图所示:Producer:消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。Consumer:消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方...
2020-01-10 11:20:16 186
转载 Apache Rocketmq 最佳实践(六)
最佳实践1 生产者1.1 发送消息注意事项1 Tags的使用一个应用尽可能用一个Topic,而消息子类型则可以用tags来标识。tags可以由应用自由设置,只有生产者在发送消息设置了tags,消费方在订阅消息时才可以利用tags通过broker做消息过滤:message.setTags(“TagA”)。2 Keys的使用每个消息在业务层面的唯一标识码要设置到keys字段,方便将...
2020-01-10 11:17:22 263
转载 Apache Rocketmq 中的概念及含义(一)
基本概念1 消息模型(Message Model)RocketMQ主要由 Producer、Broker、Consumer 三部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器,每个 Broker 可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的 Broker。Mess...
2020-01-10 11:16:23 274
转载 Apache Rocketmq 整体架构与设计(四)
设计(design)1 消息存储消息存储是RocketMQ中最为复杂和最为重要的一部分,本节将分别从RocketMQ的消息存储整体架构、PageCache与Mmap内存映射以及RocketMQ中两种不同的刷盘方式三方面来分别展开叙述。1.1 消息存储整体架构消息存储架构图中主要有下面三个跟消息存储相关的文件构成。(1) CommitLog:消息主体以及元数据的存储主体,存储Produ...
2020-01-10 11:13:52 205
转载 Apache Rocketmq 特性(二)
特性(features)1 订阅与发布消息的发布是指某个生产者向某个topic发送消息;消息的订阅是指某个消费者关注了某个topic中带有某些tag的消息,进而从该topic消费数据。2 消息顺序消息有序指的是一类消息消费时,能按照发送的顺序来消费。例如:一个订单产生了三条消息分别是订单创建、订单付款、订单完成。消费时要按照这个顺序消费才能有意义,但是同时订单之间是可以并行消费的。Roc...
2020-01-10 11:04:22 226
转载 Apache Rocketmq 服务搭建与运维(八)
运维管理1 集群搭建1.1 单Master模式这种方式风险较大,一旦Broker重启或者宕机时,会导致整个服务不可用。不建议线上环境使用,可以用于本地测试。1)启动 NameServer### 首先启动Name Server$ nohup sh mqnamesrv & ### 验证Name Server 是否启动成功$ tail -f ~/logs/rocketmq...
2020-01-10 11:03:13 237
转载 Apache RocketMQ开发者指南(序)
Apache RocketMQ开发者指南这个开发者指南是帮助您快速了解,并使用 Apache RocketMQ1. 概念和特性概念(Concept):介绍RocketMQ的基本概念模型。特性(Features):介绍RocketMQ实现的功能特性。2. 架构设计架构(Architecture):介绍RocketMQ部署架构和技术架构。设计(Design):介绍Ro...
2020-01-10 11:01:25 321
转载 Apache Rocketmq使用样例合集(五)
样例包括:Producer端发送同步消息发送异步消息单向发送消息消费消息顺序消息样例顺序消息生产顺序消费消息延时消息样例批量消息样例过滤消息样例消息事务样例Logappender样例OpenMessaging样例1 基本样例在基本样例中我们提供如下的功能场景:使用RocketMQ发送三种类型的消息:同步消息、异步消息和单向消息。其中前两种消息是可靠的,因为会有发送是否成功的应答。使...
2020-01-10 10:59:51 397
原创 自动修复360代码卫士扫描出来的日志伪造和删除main方法
项目经过360代码卫士扫描以后或多或少有些漏洞,既然公司要求扫描,那就会要求修复,进入正题,如文章标题,本篇文章主要涉及一个jar包工具,功能主要实现如下功能:解决项目中360扫描出来的【输入验证》日志伪造】漏洞解决前:logger.debug(“xxxxx”+message);解决后:String logDebugStr = StringEscapeUtils.escapeE...
2019-11-07 19:43:50 1785
原创 在多线程环境操作事务时,synchronized使用不当引发的线程安全问题,通过现象来了解Spring Aop原理
我们都知道,在多线程环境,可以用synchronized来做多线程同步,保护临界区资源,达到线程安全的目的。我们也知道synchronized和ReentrantLock的区别,如果不清楚两者区别的,请参考《synchronized和ReentrantLock的区别与适用场景的解析》。假设读这篇文章前大家已经会使用Springboot+Mysql+Mybatis,首先在文章前面提出几个问题,看你是...
2019-11-05 18:36:03 795
原创 记一次Log4j.xml配置不当,业务日志不打印到控制台的问题!!!
问题背景项目打印日志使用的是log4j,并且是项目启动的时候加载log4j.xml配置文件初始化log4j,为了排查问题方便,修改log4j.xml,增加日志输出到控制台,但之前不小心改过一次,时间久了再使用就不不打印日志到控制台了,也没找到原因,今天看了下log4j的源码,才发现问题!#log4j.xml配置如下是我使用的log4j.xml的具体配置(关键部分),相信对log4j.xml比...
2019-10-28 15:48:14 6471
原创 CountDownLatch演示(陪老婆儿子买东西案例)
CountDownLatch演示(陪老婆儿子买东西案例)CountDownLatch是什么?CountDownLatch是一个非常实用的多线程控制工具类,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待CountDownLatch如何工作?CountDownLatch有一个正数计数器,countDown()方法对计数器做减操作,await()方法等待计数...
2019-10-25 12:34:43 366
原创 Jenkins集成Sonar(3/3)- 安装SonarQube Scanner进行扫描(离线安装)
安装方式选择:在线安装:直接在Jenkins》系统管理》插件管理》可选插件,搜索Sonar离线安装:下载sonar插件(文章顶部有链接),将插件解压放入~/.jenkins/plugins/下即可在线安装要简单许多,由于我们是内网服务器,无外网访问权限,因此只能用离线安装,下面介绍离线安装过程下载sonarqube scanner要通过jenkins使用sonarqube来进行代码的...
2019-10-23 16:08:58 6621
原创 Centos安装Jenkins -war包方式
背景jenkins安装方式众多,但有些人比较喜欢用tomcat+jenkins.war方式来安装部署,下面是整个安装过程下载tomcatjenkins.war需要运行容器,这里选择tomcat 8wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.t...
2019-10-23 12:52:00 1510
原创 Jenkins集成Sonar(2/3)登录并添加token进行扫描+汉化
登录首次登陆默认账号密码为admin/admin添加项目登录后按照弹出窗填写项目名称生成一个tokene6f2520079a51cd7b96fac7b8379aac81e70fba8选择项目语言和管理工具生成远程代码审查命令mvn sonar:sonar \-Dsonar.host.url=http://10.12.3.123:9000/sonar \-Dsonar.log...
2019-10-23 12:26:58 4790
原创 Jenkins集成Sonar(1/3)安装sonar并启动
下载sonar创建sonar目录mkdir -p /opt/xxxx/product/bdc/sonar在线安装:wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.8.zip离线安装:点击下载sonar上传到服务器/opt/xxxx/product/bdc/sonar目录下解压...
2019-10-22 19:17:52 1205
原创 利用Swagger自动生成项目接口文档
利用Swagger自动生成项目接口文档swagger生成的接口不能用于交付,客户一般要求提供word文档类型的接口文档,或者前后端联调时,不容易看得懂,需要word版的易懂的文档,因此可以利用swagger的接口数据生成接口文档,文档样式统一,全局控制
2019-10-08 12:08:30 797
原创 StopWatch单线程问题及多线程ConcurrentStopWatch解决方案
相信很多人都知道,spring-core中有个非常实用的监控类StopWatch,在Spring Boot应用启动过程中也有使用,可以监控代码段执行耗时以及占整个监控过程耗时百分比,这样很容易监控出比较耗时的代码,及时发现问题,优化性能。但不足的是,StopWatch是个线程不安全的工具类,不能用于多线程环境,因此基于StopWatch的不足,自定义组件`mbyx-component-concurrent-stopwatch`提供一个多线程版本的ConcurrentStopWatch便于在多线程环境监控代码
2019-03-30 00:45:14 10914 5
转载 MYSQL千万级数据量的优化方法积累
原文地址:https://www.toutiao.com/i6583260372269007374/1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描 如:select id from t where num is ...
2018-07-31 10:00:40 254
原创 Spring Boot 全配置示例
原文路径:https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html# ===================================================================# COMMON SPRING BOOT PROPE...
2018-07-18 22:01:40 559
原创 CentOS 7安装gitlab-ee企业版
CentOS 7安装gitlab-ee企业版下面提供官方安装文档: 官方文档地址:https://about.gitlab.com/installation/#centos-7 安装前:[root@localhost ~]# free -m total used free shared buff/cache availabl
2017-11-16 11:04:00 13511 3
yiqixue_university.zip
2020-06-01
jenkins与sonar集成的离线插件sonarqube scanner
2019-10-23
sonar汉化包-所有版本.zip
2019-10-22
中国行政区域划分mysql版合并的一张表(包含港澳台、经纬度、邮编等)
2018-05-22
使用jedis优化联通短信网关
2015-12-22
java MongoDB查询数据导出为excel表格
2015-06-03
提交multipart/x-www-form-urlencoded类型数据
2015-06-01
阿里ECS Linux服务器安装mysql-5.5.27
2015-04-04
HTML使用AngularJS加载json银行信息显示成单选按钮
2015-01-23
java对象引用修改值的问题
2018-07-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人