- 博客(28)
- 收藏
- 关注

原创 idea删除文件报错IOException问题
首先声明,该方法不仅可以解决idea删除文件io流占用问题,还可以解决大部分文件占用导致无法删除的问题。本人所在的公司对数据安全把控十分严格,所以周末在家只能通过向日葵来撸代码了,撸了一半,哎?idea的class文件没有生成?这个好办,删除就好了嘛。然后就出现,如下图所示这怎么办,直接在文件删除有反馈无权限。又不方便重启。如下操作便是了打开任务管理器如图,打开资源监视器在这输入需要删除的文件例如好,现在干掉所有使用中的程序,很简单,右击一般只有一个结束进程的选项.
2020-07-12 14:52:36
3902
2

原创 关于ruoyi框架分页优化方案
ruoyi项目使用的是mybatis的pageHelper插件进行分页,分页使用的是临时表查询,当实际业务中数据量很大时,数据查询很慢,性能很差。就此做了优化。如图,临时表数据量达到w级别之后会造成查询很慢。。优化方案:也就是,只要在对应的xml及mapper文件加入以_COUNT结尾的查询语句会按照你所编写进行查询。...
2020-06-19 14:52:55
5455
8
原创 springcloud本地团队开发解决方案
痛点1:本地服务过多,开发人员需要启动较多服务。痛点2:本地服务希望能访问到测试环境的其他服务,但不希望自己的服务暴露给测试环境。痛点3:本地多个连接到测试环境之后,希望本地多个服务之间通讯,访问其他服务去访问测试环境。处理方案:1.开发服务连接到测试环境的注册中心,并且设置本服务可以调用测试环境的服务,但是测试环境无法访问本地服务。eureka: instance: hostname: my-service client: # 设置注册中心的其他服务无法访问自己的服务
2022-01-21 15:29:07
755
原创 算法 - 稀疏数组
稀疏数组的使用场景当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值;把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模结果分析:原始的二维数组0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2021-10-12 10:28:14
183
原创 泛型的常见问题及概念
为什么会引入泛型?泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。场景一:数字求和常用的数据类型会有很多种,例如int,double等等,那使用泛型的逻辑写一个公共的求和方法怎么实现呢?package com.springtest.generic;/** * 测试泛型使用 * * @author huz
2021-08-03 11:34:37
259
原创 LeetCode - 两数之和 - 每日刷题
public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int carry = 0; ListNode root = new ListNode(0); ListNode cursor = root; while(l1 != null || l2 != null || carry!=0 ){ int l1Val = l1 != null ? l1.val : 0;.
2021-06-07 20:29:08
217
原创 LeetCode打卡 - 每日一题 - 两数之和
给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转...
2021-06-06 01:20:14
121
原创 LeetCode打卡 - 每日一题 - 移除链表元素
给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。
2021-06-05 22:45:44
220
原创 处理异步请求,请求过程中接收参数重置为null
今天线上遇到了很奇怪的问题,方法传递过程中参数是有的,但是正在处理参数突然置空,过程如下图:从图中可以看出我们正在使用的requestMap突然置空,中间没有任何处理。我们查看他的上层发现调用采用的异步的方式: Map<String, String[]> requestMap = request.getParameterMap(); //线程处理数据入库逻辑 executorService.execute(() -> {
2020-11-18 14:29:48
579
1
原创 代码管理的项目经理:命令模式
我们公司有很多甲方公司,之前一直都是每个人对接自己需要做的模块,直到有一天我们最大的甲方公司项目经理找到了我,你们能不能有一个固定的人来对接啊,每次提个需求还要思考去找谁实现。甲方爸爸的需求我们必须要满足,于是我们就内部讨论,需求以后都有固定的一个人(Invoker)对接.由对接人去给各个模块负责人(Receiver)去传递解决需求.那上面这个场景在代码中怎么体现呢。下面我们来讲一讲什么叫命令模式。Encapsulate a request as an object , thereby lett
2020-09-13 13:42:57
218
原创 mysql实现动态查询表字段(返回JSON格式)
-- 准备测试配置表DROP TABLE IF EXISTS `field_config`;CREATE TABLE `field_config` ( `text` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORM..
2020-09-11 11:55:24
1861
原创 为什么要慎用中介者模式?
中介者模式的定义:Define an object that encapsulates how a set of objects interact . Mediator promotes loose coupling by keeping objects from referring to each other explicitly.and it lets you vary their interaction independently.用一个中介对象封装一系列的对象交互。中介者是个对象不需要显示的
2020-09-10 21:23:28
223
原创 一封邮件让我明白原型模式的重要性
又是一个辛苦的周一,好像每个周一都很累,我们戏称为周一综合证。好不容易熬到下班,开心的回家准备开始愉快的王者峡谷之旅的时候,一个电话把我拉回了电脑旁边。"小胡,快看看,邮件怎么全发给一个客户了”。打开代码,没错了,准备实例,clone发送。好像没问题呀。不信邪的我打印了日志,真的是clone引起的阿,吃一堑,长一智,赶紧恶补一下基础,翻出了clone准备好好研究一下。于是有了原型模式的学习。Specify the kinds of objects to create using a pro.
2020-09-07 21:43:19
271
原创 类耦合?接口职责混乱?那是因为你不了解代理模式
定义:Provide a surrogate or placeholder for another object to control access to it;为其他对象提供一种代理以控制对这个对象的访问。普通代理模式:要求客户端只能访问代理角色,不能访问实际角色。基础接口类:package com.kaisen.mainland.Text;/** * @author huzhibo * @Description: 程序员 * @date 2020/9/6 16:59 */
2020-09-06 17:50:25
119
原创 一篇文章教你彻底了解建造者模式
定义:Separate the construcation of a complex object from its representationso that the same construction process can create different representation.将一个复杂对性的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。理解:官方解释有点抽象,通俗的说法就是当业务场景需要根据不通的顺序产生不通的效果,生成不同的类的时候我们需要使用建造者模式。建造
2020-09-06 16:14:42
215
原创 java异常处理:关于实体类应用的必要
关于异常处理我曾经想找到一个完美的适合我们所有业务场景的处理方式。但是很明显,我可能要失望而归了。我希望能记录更多的异常处理方式的优点,最终找到适合我们的。最近在反思一个问题,不知道哪天开始,我们习惯使用map,它的优点很多,我们不用关注map的value是什么类型,它的key值都叫什么名字,只需要存入调用即可,但是代价就是我们会产生更多的NullException,甚至我们在取值的时候会去猜想,是否是我们需要的类型,是否存在null的风险。项目里会存在很多判断NullExceptiin,甚至测试时
2020-08-23 22:54:39
220
原创 对象及数据结构优化方案
1.对象的反对称一段很简单的代码/** * @author huzhibo * @Description: 乘法实现 * @date 2020/8/23 22:00 */public class Multiplication { public double numOne; public double numTwo; public Multiplication(double numOne, double numTwo) { this.numOne
2020-08-23 22:19:12
279
原创 spring全局异常处理
spring全局异常处理源码如下:package com.kaisen.mainland.exceptions;import lombok.Data;/** * 业务异常 * @author huzhibo * @date 2020/8/8 12:02 */@Datapublic class BusinessException extends RuntimeException{ /** * 具体异常码 */ protected String code;
2020-08-09 11:12:31
326
1
原创 Linux环境下升级https
http与https的区别1.传输安全性不同。http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。2.默认端口不同,http默认使用80端口,https默认使用443端口。3.资源占用不同。HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。4.证书要求不同,https需要认证CA证书(如果是本地证书需要导入信任文件),而http不需要认证直接可以使用。https.
2020-08-02 20:16:30
562
原创 设计模式:模板方法模式
Define the skeleton of an algorithm in an operation ,deferring some steps to subclasses. Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm is structure .定义一个操作中的算法的框架,而将一些步骤延续到子类中。使得子类可以不改变一个算法的结构即可重定义该
2020-07-07 22:23:39
103
原创 设计模式:工厂模式
Define an interfance for creating an object . but let subclasses decide which class to instantiate .Factory Method lets a class defer instantiation to subclasses.定义一个用于创建对象的接口,让子类决定实例化哪一个类。共亨方法使用一个类的实例化延迟到其子类。工厂模式首先要有产品public abstract class Product.
2020-07-06 00:03:31
111
原创 设计模式:单例模式
Ensuer a class has only one instance,and procide a global point of access to it.确保某个实例只有一个实例,且自行实例化并向整个系统提供整个实例单例模式通用代码如下(饿汉式,不判断,每次调用都会新创建一个对象,线程安全但是占用资源,使用广泛)public class Test { private static final Test test = new Test(); //限制产生多个类,私有化空参
2020-07-05 18:14:56
70
转载 设计模式之禅阅读笔记:开闭原则
定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定灵活的系统。开闭原则可能是设计模式六项原则中定义最模糊的一个了,它只告诉...
2020-06-29 23:07:17
148
原创 涉及模式之禅阅读笔记:迪米特法则
迪比特法则又称为最少只是原则。1.类应该能可以准确的看出与哪些类交流了,也就是说如果输入输出参数中没有出现某一个类,尽量不要在方法的执行过程中去创建引用(jdk的基本类型除外)2.尽量减少对外暴露的方法。尽量减少两个类之间的方法交互,减少类之间的耦合。如果一个方法放在本类中,既不增减类间关系,也对奔雷不产生负面影响,那就放在本类中。前提条件是该方法不会存在变动。...
2020-06-29 22:38:35
1061
原创 设计模式之禅阅读笔记四:接口隔离原则
接口隔离原则需要注意两点:1.原子化,一个接口只实现类中类型的功能2.单一化,针对不同的业务模块提供不同的接口。接口隔离原则是一个相对的原则,简单来说就是原子化和单一化是相对的。如果项目相对较小,开发人员较少的情况下,我们相对可以提供原子的大小。减少开发成本。针对接口隔离原则做出以下规定:1.一个接口只服务于一个子模块或者业务逻辑。2.尽量对外减少暴露pubilc方法。3.已经污染的接口尽量去修改,如果修改风险较大采用适配者模式进行修改(还未学习)4.最重要,一定要有自己的思
2020-06-21 02:57:19
194
原创 设计模式之禅阅读笔记三:依赖倒置原则
依赖倒置原则有三层含义:1.高层模块不应该依赖底层模块,两者都应该依赖其抽象。(模块间依赖都是同各国抽象发生的,其依赖关系应该是通过接口或者抽象类完成的)2.抽象不应该依赖细节(抽象或者接口不应该依赖实现类)3.细节应该以来抽象(实现类应该依赖抽象或者接口)业务场景思考:1.依赖导致原则在大型开发项目中尤为重要。首先定义好接口或者抽象类,多个人可以对不同层级模块进行同步开发测试。2.维护,如果业务需求发生变更,针对一个实现类需要实现更多的功能时,我们只需要重新实现一个实现类,不.
2020-06-21 02:31:30
147
原创 设计模式之禅阅读笔记二:里氏替换法则
里氏替换法则规定:1.子类必须完全实现父类的方法。2.子类可以有自己的个性。子类可以有自己的方法和属性。3.覆盖或实现父类的方法是输入参数可以被放大。 第三点意思就是说,子类可以对父类的方法进行覆盖,并且覆盖的时候可以在父类的方法上进行扩大,例如,父类有一个getId(HashMap map)的方法,子类在覆盖或者实现的时候可以实现getId(Map map)的方法。但是反之并不成立,及子类如果实现的是getId(HashMap map)方法,但是父类中有一个getId(Map m...
2020-06-21 01:54:08
129
原创 设计模式之禅阅读笔记一:单一职责原则
There should never be more than one reason for a class to change.一个类不应该有一个以上的原因使其发生改变。一个类只负责一个功能领域中的相应职责,或者就一个类而言,应该只有一个引起它变化的原因。实际业务中单一职责比较难处理。业务中职责区分会比较困难,需要长时间去体验。不仅仅是接口和类如此,方法亦然,一个方法不应承担多个功能。(这个在我们业务中确实存在不恰当的设计,例如,修改地址和修改用户名不能使用一个方法)...
2020-06-14 20:07:35
147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人