自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

代码缔造者的博客

day day up good good study

  • 博客(126)
  • 收藏
  • 关注

原创 Java8的Stream执行机制

Stream API通过Sink将两个Stage的执行承接起来,上游的元素处理完后,下沉到下游的处理逻辑。显然,只要我们事先知道用户意图,采用下面方式实现跟Stream API等价的功能,既减少迭代次数,又避免不需要的中间结果存储。2、并行Stream执行的性能要优于for循环,而且比基础类型的优势更高,耗时已经低于for循环的一半。1、基于Stream的操作明显都高于for循环的效率,而且并行的效果更加明显。1、基于Stream的操作稍微比for循环的效率低,但是并行的效果更加明显。

2024-03-04 21:53:23 981 3

原创 Zuul1.x 高并发下阻塞分析以及解决方案

由于最近博主在压测接口的时候发现我接口出现卡死状态,最开始以为是我自己接口出现问题,单独压测我自己的服务(不经过网关)200/qps/10 次循环 是没问题,但是加上网关(zuul 1.x) 去发现 经过两次循环基本就不能访问,同时其他接口也不能访问,由此问题出现在zuul ,接着开始排查之路。因此我们压测那个场景出现阻塞的原因就是:当并发线程高于配置资源后 rabbion http 连接池么有可用连接了,拿不到连接也没有熔断降级配置,抛异常最后执行到SendErrorFilter 这里没有对。

2024-01-20 22:33:50 1125

原创 aop 通过注解实现业务的日志记录

在咱们开发的项目中,有人操作系统的时候需要记录操作人在该系统做了哪些操作,最原始的方式就是在每个需要记录的方法最后写插入日志的方法。首先他是可以实现我们的需求。但是有两个劣势:1、书写的代码比较多。每个方法都需要写插入日志的方法。都需要我们去new 对象。2、写上的代码维护起来比较麻烦。修改一个日志类属性,每个方法都需要修改。现在我们使用Spring 他的一个特性有一个是aop。下面来自百度引用:...

2018-03-11 22:36:26 1027

原创 使用PageOffice实现文档(word,excel,pdf)在线预览编辑

最近发现一款不错的插件的PageOffice,地址是:http://www.zhuozhengsoft.com/Technical/ 他可以实现word,excel、pdf在线预览以及在线编辑。虽然商用的话需要收费,但是有免费的试用版,在实现自己毕业设计或是做样品的时候 是一个不错的选择。他同时支持java\c#\php.一旦有了正真的项目花钱再买也可以。同时自己也可以熟悉如何使用。接着下面实现

2017-10-31 19:44:30 91780 54

原创 搭建Maven+SSM+Shiro+BootStrap(一)

废话不多说了,直接开始我们环境搭建。第一步:首先新建一个Maven项目,主要我搭建的是Web项目所以我们选择是webapp这个选项。如图1;第二步:填写我们的项目名称和主包的名称。也就是我们平常加入pom时候 使用的包名称            项目名称t。接着完成。项目创建完成。第三步:查看我们项目结构少包的,需要我们手动添加,我这里添加开始添加不了,所以只要写不是src/mai

2017-08-30 16:03:54 1813

原创 虚拟机WMware 、Centos、JDK 安装使用

之前换win0系统 将以前的WMware虚拟机都没了,今天就重新安装一次首先下载虚拟机安装包 这个网上有 然后新建虚拟机的时候需要镜像文件按照我下面步驟一步一步做就可以我將步驟截图如下:安装完后(安装时间挺长)需要输入你之前设定的用户名、密码  之后如图:            输入你的密码就可以正式登陆。之后需要安装jdk这个 安装包我使用的是首先复制包到虚拟机

2017-07-16 15:31:12 631 1

原创 Spring+SpringMvc解决事务无效问题

最近做课设,发现我的service层配置的事务没有效果,首先排查就是就是application-transcation.xml 配置的事务如下: <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

2017-04-16 21:05:04 1033

原创 算法题-爬楼梯-不同思路解法

主要记录个人思考过程,不同方案实现思路的演变。

2024-01-18 21:52:13 468

原创 QLExpress动态脚本引擎解析工具

QLExpress脚本引擎1、线程安全,引擎运算过程中的产生的临时变量都是threadlocal类型。2、高效执行,比较耗时的脚本编译过程可以缓存在本地机器,运行时的临时变量创建采用了缓冲池的技术,和groovy性能相当。3、弱类型脚本语言,和groovy,javascript语法类似,虽然比强类型脚本语言要慢一些,但是使业务的灵活度大大增强。4、安全控制,可以通过设置相关运行参数,预防死循环、高危系统api调用等情况。

2023-08-13 23:58:53 864

原创 Centos 从0搭建grafana和Prometheus 服务以及问题解决

出现如图所示的问题加入你符合他说的那几个情况 可以修改配置去调整,假如就是第一次按照没有代理没有docker ,直接安装的 在linux centos 环境中 那个就是版本问题。你需要按照低版本 目前我用7开头的版本实验是可以的。8以上目前存在类似问题。这个一般通过 虚拟机ip 替换localhost 即可 加入你不可以 有几种情况。针对第二种你可以 通过命令关掉防火墙 (开发环境可以这样)执行 ./prometheus。

2023-08-07 23:51:43 1138 1

原创 mybatis-plus 缓存深入实践(二)

将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库 数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题

2023-07-22 20:05:13 367 1

原创 两种算法实现树形fullPath设置

当我业务有树形数据结构时候,我们通常设计会预留一个字段叫fullPath. 这个字段保留的是本节点到一级节点路径一般取id + “/”。比如 id = 1,parentId = 0,fullpath=1;id=2,parentId=1,fullpath=1/2,id=3,parentId=2,fullpath=1/2/3,之所以设置fullPah 他可以获取快速的获取上级任意节点以及层级,或者在获取断层树形中也有意义。重点来了今天分享这个适合没有设置过fullPath。

2023-05-21 20:38:24 264 2

原创 PDFBox 优化内存方案

版本基于2.0.27最近使用pdfbx 导入发现内存使用占用特别高,通过查阅官方资料发现pdfbox 在处理一些复杂的pdf 消耗内存特别高,这个是没法避免的,内存设置小的很有可能导致内存溢出。但它提供了一些可以减少内存使用的方案。具体代码就不写了,我从几个维度罗列一下。给大家使用pdfbox 后期做优化参考。这个默认使用的软引用如图:软引用是在内存即将溢出才会回收,所以也会生命周期会一直占用内存咱们自定义不需要实现即可或者使用虚引用。

2023-03-22 20:40:47 2180

原创 自定义手写JDK动态代理

根据Java Porxy 实现原理实现我们手写的自定义代理类,实现简易的动态代理流程。

2023-02-19 23:09:03 240

原创 基本计算器算法实现

所有中间结果将在 [-231, 231 - 1] 的范围内。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval()。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval()。给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。输入:s = “(1+(4+5+2)-3)+(6+8)” 输出:23。输入:s = " 3+5 / 2 " 输出:5。整数除法仅保留整数部分。

2023-01-30 22:33:37 968

原创 如何写单元测试

单元测试

2022-11-30 17:45:07 2309

原创 关于后台设计断层树形结构方案

假如我们按照常规思路,先按照当前用户id 过滤查询他自己创建的数据,这个时候再去迭代递归组装树形结构,要是他创建的是按照顺序的那可以满足,但是要是出现上面那种情况迭代的时候找不到连续的parentId,没法形成父子节点。由于我们正常设计方案针对断层的树形没法获取parentId,所以在考虑设计的时候加入path 这个字段,他的作用是保存从顶层节点到该节点的路径,比如刚才那个开发语言 他的path 就是。这个时候我们可以通过path 一直循环找他上级、上上级……基于这个需求我们分析设计对应方案。

2022-08-20 22:46:27 375

原创 网络通信原理

OSI模型,OSI模型分为7层,全球所有的网络都是按照这7层模式来建立自己的网络结构,掌握了OSI的模型,那么建立一个属于自己的网络结构就非常的容易了。它分别为:1、物理层(Physical Layer);2、数据链路层(DATA Link Layer);3、网络层(Network layer);4、传输层(Transport Layer);5、会话层(Session Layer);6、表示层(Presentation Layer);7、应用层(Application Layer)...

2022-08-14 22:17:56 221

原创 Drools入门介绍

Drools是一个业务规则管理系统,具有基于前向链和后向链推理的规则引擎,允许快速可靠地评估业务规则和复杂的事件处理。规则引擎也是创建专家系统的基本构建块,在人工智能中,专家系统是模拟人类专家决策能力的计算机系统...

2022-06-05 22:34:27 769

原创 Mysql间隙锁实战

前言本次实战是基于数据库mysql5.7.14什么是间隙锁?间隙锁是对索引记录之间间隙的锁,或者对第一个索引记录之前或最后一个索引记录之后的间隙的锁。例如:SELECT c1 FROM t WHERE c1 BETWEEN 10 and 20 For UPDATE;防止其他事务向列t.c1插入值15,无论列中是否已经有这样的值,因为范围内所有现有值之间的差距是锁定的。什么时候会使用间隙锁?InnoDB 存储引擎隔离级别是RR前提下同时有事务发生。间隙锁有什么作用?首先有个前提是知

2022-05-01 20:04:11 1010

原创 面试开课吧合并区间算法

题目定义一个表示起止属性的类public class Interval { int start; int end; public int getStart() { return start; } public void setStart(int start) { this.start = start; } public int getEnd() { return end; }

2022-04-26 23:38:06 461 3

原创 MySQL开发规范

基础规范数据库字符集默认使用utf8mb4,兼容utf8,并支持存储emoji表情等四字节内容正常情况禁止在线上生产环境做数据库压力测试正常情况禁止从测试、开发环境、本机直连线上生产数据库禁止在数据库中存储明文密码禁止在数据库中存储图片、文件等大数据禁止将业务日志实时保存到数据库,建议保存到日志文件,对于统计后的结果再存放到mysql中禁止线上核心业务使用mysql存储过程、视图、触发器、Event、InnoDB外键约束等,这些容易将业务逻辑和db耦合在一起,而且在MySQL不同版本的这些特

2022-03-27 23:41:00 2994

原创 Mybatis异常分析之 org.apache.ibatis.executor.result.ResultMapException

前文本文章主要正对org.apache.ibatis.executor.result.ResultMapException异常出现情况分析。从原理角度明白为啥会有这样的异常,以后不管那种场景下,明白原理后,不需要百度自己即可知道问题的根源。怎么会出现这样错误情况一情况二通过源码分析原理如何解决情况一解决对象类型值与mysql 一一对应情况二解决剔除注解@Builder 或者@AllArgsConstructor 代理生成构造方法注解都要剔除。第一条不剔除的话,按照数据库查询出

2022-03-20 16:27:58 8184

原创 SpringBoot 跳转jsp的一些问题汇总

前言在我们开发中大多数还是已前后端分离为主了,但是有一些公司或者毕业生课设还是以SpringBoot一起部署前后端,比如jsp、html页面直接放到Springboot项目中一起部署。所以今天就将我以前碰到过的一些问题记录下,分享给大家有类似的可以参考。问题访问jsp页面直接下载解决方案需要我们在pom中配置jsp解析jar 以及配置合理的jar 作用域。<dependency> <groupId>org.springframework.boot</gro

2022-03-06 23:40:34 647

原创 MyBatis-Plus缓存详解(一)

Mybatis版本3.5.7为啥要提前申明下版本,因为该文章是基于Mybatis3.5.7 版本源码做的分析,有一些源码与以前旧版本有不一样的地方,没有说明版本的话会引导初学者迷惑。有的说1有的说2 不知道该看那个文章才是适用自己的,不管怎么,大致思想不会变化,最好建议大家学会使用后多看源码。万变不离其中。基本缓存问题什么是缓存?1.存在内存中的临时数据2.将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库 数据文件)查询,从缓存中查询,从而提高查询效率,

2022-02-27 23:32:10 4861 1

原创 Mybatis-Plus

MybatisPlus 基本使用以及源码分析

2022-02-14 21:43:43 2581

原创 Java开发工具使用

掌握Java 编译工具

2021-12-19 21:32:17 7322 1

原创 算法题_有效括号简单易懂解法

题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。示例 1:输入:s = “()” 输出:true 示例 2:输入:s = “()[]{}” 输出:true 示例 3:输入:s = “(]” 输出:false 示例 4:输入:s = “([)]” 输出:false 示例 5:输入:s = “{[]}” 输出:true提示:1 <= s.leng

2021-11-07 12:05:13 217

原创 设计模式之建造者模式多种方式使用

背景自助餐大家都熟悉,不同的自助餐店,菜品种类是不一样的,比如有烤肉自助、披萨自助、海鲜自助等种类。当我们要生成一份自助订单的时候,就需要根据不同的自助种类生成。但是他们大多是有共性的,比如烤肉突出是烤肉但是也有海鲜,海鲜也有烤肉,所以我们生成一份自助订单的时候,只需要把所以菜品的都作为属性,不同种类自助自由组合就可以。这样这个订单兼容所以的自助餐。既然是创建对象,自由组合生成,根据这些特点我们可以使用设计模式中的建造者模式。优点可选择性强根据上面需求我们可以通过自由配置对应自助餐的订单,很方便

2021-10-17 23:13:20 253

原创 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度

题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2:输入: s = “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3:输入: s = “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是

2021-10-12 23:46:58 9852

原创 设计模式之策略+工厂实现支付功能代码优化

背景在我们开发中支付功能可能遇到的不少,今天这个案例就是以支付为中心,通过结合设计模式实现支付功能的扩展性。方便我们以后需求增加、变更的时候是我们开发起来得心应手,同时也减少QA的回归时间。设计关系图实现类接口基类/** * @ClassName IPay * @Description 支付接口 * @Author xiaowu * @Date 2021/8/10 6:02 下午 */public interface IPayStrategy<T> { /*

2021-09-28 23:46:24 668

原创 Java实现zip、tar、tar.gz 打包压缩解压

什么是zipzip是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),他于1989年1月公布了该格式的资料。ZIP通常使用后缀名“.zip”,它的MIME格式为application/zip。当前,ZIP格式属于几种主流的压缩格式之一,其竞争者包括RAR格式以及开放源码的7z格式。从性能上比较,RAR及7z格式较ZIP格式压缩率较高,而7-Zip由于提供了免费的压缩工具而逐渐在更多的领域得到应用。Microsoft从Windows ME操作系统开始内置对zi

2021-09-21 23:54:19 2950

原创 SonarQube代码审查工具

介绍SonarQube ® 是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码异味。它可以与您现有的工作流程集成,以支持跨项目分支和拉取请求的持续代码检查安装下载SnoarQube版本:7.5 支持jdk1.8https://binaries.sonarsource.com/Distribution/sonarqube/下载汉化包SnoarQube 7+https://github.com/xuhuisheng/sonar-l10n-zh下载p3c为修改分析规则服务的插件

2021-09-11 17:55:21 5961

原创 代码整洁之道总结

前言什么是整洁的代码出自《c++程序设计语言》作者说到我喜欢优雅和高效的代码。代码逻辑应当直截了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做妤一件事OTI公司创始人,Eclipse 战略教父,Dave Thomas说到:整洁的代码应可由作者之外的开发者阅读和增补。它应通过所有单元测试和验收测试。它使用有意义的命名。它只提供一种非多种做一件事的途径。它只有尽量少的依赖关系、

2021-08-14 17:22:03 4530

原创 Mysql查询树形子节点

建立树形表CREATE TABLE `tb_tree` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `code_num` bigint(20) DEFAULT NULL, `parent_code_num` bigint(20) DEFAULT NULL, `code_name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFA

2021-08-07 19:14:29 1789

原创 树形结构在Mysql 相关业务查询

前言平常我们在开发难免会遇到树形结构的表结构,今天我们针对树形结构在Mysql 中两个查询需求做个总结,以及查询sql 具体分析简单树形建表CREATE TABLE `tb_tree` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `code_num` BIGINT(20) DEFAULT NULL, `parent_code_num` BIGINT(20) DEFAULT NULL, `code_name` VARCHAR(20) DEFA

2021-07-18 16:58:21 446

原创 Guice+aopalliance实现Aop之 日志记录

前言由于我们开发中经常需要手动写请求参数以及方法的返回值打印 每个都写显得很繁琐所以今天我们主要使用Guice的注解注入对象功能以及加上aopalliance 的动态代理实现请求参数和响应参数的日志打印 方便我们查看日志信息 具体Guice介绍就不在此介绍不了解的可以通过一些不错Guice原理分析学习了解。业务代码模拟用户实体package org.cloudcommon.guava.dto;/** * @ClassName UserDTO * @Description: TODO

2021-06-30 23:02:17 245 3

原创 Netty学习之NIO零拷贝

概念零拷贝是一种I/O操作优化技术,可以快速高效将数据从文件系统移动到网络接口,而不需要将其从内核空间复制到用户空间,尤其在FTP或者HTTP等协议中可以显著提升性能。但是目前只有在使用NIO或者Epoll 传输时才可以使用该特性。传统I/O读写过程这里按照一个我们常用功能即从我们服务器传输文件到目标服务器。 也就是文件从我们应用程序读到数据再把数据写入到网络传输到目标服务器中。读操作如图所示分为以下几个步骤:我们应用程序读取数据 首先触发read()系统调用.这时候操作系统会进行一次

2021-05-23 22:41:16 192

原创 基于JMockit 1.45 使用教程

JMockit以前我们单元测试基本不怎么写,或者直接使用@Test 运行 一旦遇到需要调用第三方服务就比较麻烦了,所以今天学习使用JMockit 可以帮助我们解决这个问题同时还有可视化测试覆盖展示。使用JMockit导入引用jar<dependency> <groupId>org.jmockit</groupId> <artifactId>jmockit</artifactId> <version>1.

2021-04-20 20:48:24 475 2

原创 mysql 执行超时处理逻辑分析

出现mysql 异常:com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request如何模拟?通过cmd 窗口 mysql -uroot -p 登录mysql查看自己事务隔离级别以及修改自动提交。SELECT @@global.tx_isolation;select @@autocommit;set autocommit = 0;执行命令开启事.

2021-04-18 16:22:12 2116

mybatis-plus 缓存(二)

mybatis-plus 缓存(二)

2023-07-22

空空如也

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

TA关注的人

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