
日常一记
文章平均质量分 60
默辨
希望成为一个有思想的软件工程师
展开
-
工作常用Linux命令记录
工作常用Linux命令记录原创 2024-03-30 17:16:56 · 860 阅读 · 0 评论 -
软件架构的可维护性指标——代码圈复杂度
软件架构是软件开发和维护过程中的一个重要制品,是软件需求和设计、实现之间的桥梁。软件架构的开发和维护是基于架构软件软件生命周期中的重要环节,与之相关的步骤包括导出架构需求、架构开发、架构文档化、架构分析、架构实现和架构维护。软件架构的维护与演化密不可分,维护需要对软件架构的演化过程进行追踪和控制,以保障软件架构的演化过程能够满足需求(亦有说法将架构维护作为架构演化的一个部分)那么如何衡量软件架构的可维护性呢?官方给出了六个指标。原创 2023-11-12 17:48:14 · 744 阅读 · 0 评论 -
String、Date、LocalDate之间的转换,这一篇就够了!!!
工作最近用到了大量的日期转换,特做此总结原创 2023-05-31 23:50:05 · 8462 阅读 · 0 评论 -
插入数据时,在xml中使用selectKey完成自定义序列做数据列
插入数据时,在xml中使用selectKey完成自定义序列做数据列原创 2022-09-22 11:39:36 · 555 阅读 · 0 评论 -
Oracle和MySQL不同编码格式下varchar所能存储的中文数量
Oracle和MySQL不同编码格式下varchar所能存储的中文数量原创 2022-09-22 10:55:19 · 8542 阅读 · 4 评论 -
工作常用Stream流操作记录
工作常用Stream流操作记录原创 2022-08-22 12:32:41 · 455 阅读 · 0 评论 -
Linux下SpringBoot项目启停脚本
Linux下SpringBoot项目启停脚本原创 2022-07-14 13:03:40 · 731 阅读 · 0 评论 -
看我在Map<String, String>集合中,存入Integer类型数据
教你如何在Map集合对象中存入Integer类型的数据原创 2022-06-23 23:33:34 · 2973 阅读 · 2 评论 -
五千字JVM调优参数记录
写在前面:本文全部的细节内容,都能够在《深入理解JVM虚拟机》一书中查看文章目录一、JVM配置参数1、基础参数2、对象流转参数3、垃圾回收器参数4、CMS参数5、G1参数6、ZGC参数二、调优参数1、jps(虚拟机进程状态工具)2、jmap(Java内存映像工具)3、jstack(Java堆栈跟踪工具)4、jhap(虚拟机堆转存储快照分析工具)5、jvisualvm(虚拟机运行监视和故障处理程序)6、jinfo(Java配置信息工具)7、jstat(虚拟机统计信息监视工具)一、JVM配置参数.原创 2022-05-29 21:57:43 · 859 阅读 · 0 评论 -
Java编写HTTP请求发送XML报文数据
Java编写HTTP请求发送XML报文数据1、编写系统A的服务端代码2、编写系统B的服务端代码3、测试结果测试背景:现在有系统A和系统B,系统A使用HTTP请求向系统B发送报文数据,然后B系统接收到对应HTTP请求,并且对该请求中数据进行解析处理,最终返回与处理逻辑相对应的XML报文。这里的系统A可以抽象理解为客户端,系统B可以抽象理解为服务端这里的xml,可以抽象一下, 并不一定需要是真正的xml报文数据,Json同理。为方便后期改写,故demo中的系统A使用SpringBoot进行构建,原创 2022-03-20 14:46:23 · 12784 阅读 · 2 评论 -
搭建Demo验证在一次Socket请求中有借助缓冲区处理数据
文章目录1、编写socket通信消费端2、编写socket通信生产端3、测试结果4、其他在我的上一篇博客——浅谈Tomcat接收到一个请求后在其内部的执行流程的第二章中提到了一个操作系统的缓冲区概念,位置如下图所示。 即浏览器发送请求后,数据是先存放到一个缓冲区,如果tomcat想要使用对应的数据,就是用相应的API去缓冲区中获取数据,即使用我们熟悉的inputStream.read进行获取。下面我将使用一个小案例来验证对应的缓冲区的存在。1、编写socket通信消费端public cla原创 2022-02-09 23:41:38 · 615 阅读 · 0 评论 -
使用http请求发送文件,文件标题乱码
使用http请求发送文件,文件标题乱码(内容正确)项目中的代码大致如下:最终的结果是,文件上送成功,文件的内容正常,但是文件的标题乱码。InputStream is = null;DataOutputStream dos = null;// 读取文件标题String fileName = "文件标题";// (方式1)将字符串直接写入dos.writeBytes(buildHttpRequest(fileName));// (方式2)将字符串以字节的形式写入dos.write原创 2021-12-22 11:55:32 · 750 阅读 · 0 评论 -
根据key找到JSON字符串中指定的value值(Java实现)
文章目录一、引言二、代码三、测试一、引言距离上次写接口已经过去了一周,那次接口之旅让我明白打印日志的重要性,于是我自定义了一个Log注解,用于打印接受的参数和返回的参数:自定义注解+AOP,优雅的打印方法接受和返回的参数内容。上一次接口交互的数据是xml格式的数据,由于我对于dom4j不太熟悉,所以就按部就班的使用常规的形式进行解析,效果还算如人意。但是这次接口交互的数据是JSON,我依然不熟悉,但是FastJSON、Gson、Jackson它们熟悉呀,高效的API,丝滑般的体验,能够一边摸着鱼原创 2021-11-27 21:43:35 · 6994 阅读 · 1 评论 -
MyBatis解析<if>动态sql时,Integer类型值为0,返回false
踩坑日记,内容如题如题,MyBatis中如果参数类型为Integer,并且参数的值为0,那么动态SQL在判断下面条件的时候,返回为false<if test="money != null and money != ''">解决办法,去掉判断字符串为 ‘’ 的情况即可<if test="money != null">补充MyBatis源码的位置,肯定是解析动态SQL的位置,所以我们可以直接定位到IfSqlNode类中 然后就是Ognl表达式的解析流程了(本.原创 2021-11-22 00:05:45 · 1276 阅读 · 0 评论 -
自定义注解+AOP,优雅的打印方法接受和返回的参数内容
文章目录第一种打印方式第二种打印方式第三种打印方式写在前面经历了近两个月的时间,我终于完成了一个项目点十多个接口的开发到现场SIT。在这个过程中我深刻的意识到了添加日志的重要性(以前的自己从来不会想着添加日志,这次是真的给我上了一课)。举一个授信占用接口的例子。在我们的系统中,前台对一笔交易进行提交审批的时候,最终会通过一个接口发送对应的数据给与之对应的信贷系统(两个系统的交互,其实还有涉及中转平台)。在调用授信接口前,我统会对那一笔业务进行相应的授信数据处理(业务流程也十分复杂),最终会把接口原创 2021-11-21 22:57:19 · 1586 阅读 · 3 评论 -
Improper inline parameter map format. Should be: #{propName,attr1=val1,attr2=val2}
MyBatis在使用#获取参数时,如果使用了jdbcType(建议使用jdbcType,否则遇到插入值为null时,又会出现其他错误),那对应的jdbcType后的=两边不能有空格。结局办法:去掉空格即可MyBatis源码位置...原创 2021-11-17 11:30:23 · 4062 阅读 · 0 评论 -
开发中IDEA常用快捷键
没有长篇大论,仅列出自己日常开发中高频使用的几个。也许还有其他常用的快捷键以及实现相同功能的快捷键更方便,欢迎评论留言。1、查看当前类、接口或者方法在什么位置被调用:Ctrl + 鼠标左键 2、常看方法的实现类有哪些:Ctrl + Alt + 鼠标左键 补充:个人觉得1、2两点非常重要,也非常常见。如果我们的开发框架是基于Spring的,那么我们在controller层,直接按住Ctrl + Alt + 鼠标左键,就能够直接跳转到service层的具体实现类的。而不再需要先按住Alt,进原创 2021-10-21 13:17:44 · 4121 阅读 · 12 评论 -
nacos启动报错 db.num is null【已解决】
文章目录1、双击startup.cmd文件,启动nacos一、问题db.num is null2、新建一个数据库nacos3、执行对应的sql语句4、修改配置文件二、问题Unable to start embedded Tomcat5、修改cluster.conf配置文件6、再次启动7、登录理论上启动nacos,只需要双击startup.cmd文件(win下),就可以直接启动,但是我在启动的过程中却发生了。本人下载的nacos版本为nacos-server-1.4.0。该篇博文为自己在安装过程中出现的原创 2021-07-27 22:18:24 · 15071 阅读 · 8 评论 -
Redis操作工具类——RedisUtil
RedisUtil工具类底层封装了Redis的一些常用的原生操作代码来源网络,仅作学习使用package pers.mobian.redis.util;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;imp原创 2021-05-31 13:29:44 · 5880 阅读 · 3 评论 -
VO与Map之间的相互转换
写在前面:本文更多的讲解的是VO对比Map的用法,而非概念.对VO、PO甚至是DO、DTO不熟悉的小伙伴请自行百度。文章目录一、希望达到的效果二、方式一:使用VO三、方式二:使用Map四、对比分析一、希望达到的效果前端的显示效果:这里的数据,分别来自两张表。账号、名称来自T_ADMIN表,VO数据测试列来自VO_TEST表数据库的数据:我们要做的就是将两张表进行关联,然后获取我们需要的数据,然后展示在前端这是在项目中是十分常见的情况,如果你没有见到,如果你觉得不常.原创 2020-11-18 23:59:35 · 4587 阅读 · 0 评论 -
The content of elements must consist of well-formed character data or markup
记录今天在编写Mybatis的mapper.xml文件时的一个错误。The content of elements must consist of well-formed character data or markup.替换形式1:原因是xml文件无法解析 < 符号,应该替换为对应的转义字符形式替换形式2:这是XML语法。在CDATA内部的所有内容都会被解析器忽略,被<![CDATA[ ]]>这个标记所包含的内容将表示为纯文本目标形式<<=&g.原创 2020-11-12 13:52:43 · 4514 阅读 · 0 评论 -
jQuery的AJAX请求中contentType和dataType的区别
jQuery的AJAX请求中contentType和dataType的区别contentType: 前端发送给后台服务器的数据类型dataType:希望后台服务器发送给前端的数据类型。如果没有设置此属性,服务器端返回什么数据类型,就是相应类型格式的字符串。//使用jQuery写的一个AJAX请求function getMsg(data) { $.ajax({ url:'/mobian/test1.action', type:'POST',原创 2020-11-12 12:07:47 · 635 阅读 · 1 评论 -
The content of element type “resultMap“ must match “(constructor?,id*,result*,association*,collectio
The content of element type “resultMap” must match “(constructor?,id*,result*,association*,collection*,discriminator?)”此错误我们可以定位到resultMap内部的匹配列表。问题就是我们绑定的顺序有问题。以下说明及示例来源官网你可能想把它映射到一个智能的对象模型,这个对象表示了一篇博客,它由某位作者所写,有很多的博文,每篇博文有零或多条的评论和标签。 我们先来看看下面这个完整的原创 2020-10-28 10:56:20 · 3279 阅读 · 0 评论 -
TortoiseSVN新人使用指南
基本够用TortoiseSVN新人使用指南转载 2020-10-15 11:38:26 · 177 阅读 · 0 评论 -
IDEA失去焦点,取消自动编译【已解决】
IDEA失去焦点,取消自动编译(已解决)项目用热部署的方式部署,然后以Debug方式启动(方便我们在项目执行的过程中调试代码)。具体的热部署方式,网上有很多教程,请自行百度。但是当我们以Debug方式启动项目以后,我们在编写Java代码的时候,一旦失去焦点项目就会报错,从编译的角度来说这是一个便捷的功能,毕竟能及时发现我们项目的错误,但是从用户的体验角度来说,我个人觉得没有那么友好。所以我建议我们取消这个功能网上很多热部署的教程都是让我们把这两个选项都设置为Update classes and原创 2020-10-09 20:46:36 · 23342 阅读 · 11 评论 -
数据库执行update语句,一直执行不完【已解决】
今天执行了一个很简答的更新数据的SQL,结果一直执行不过去。最开始我以为是我的过滤条件不对,导致数据量太大,但是当我用select语句去执行时,发现过滤条件并没有问题,然后便开始了面向百度。原来是发生了锁表现象,先将我的处理过程做一个总结:1、使用SQL查看我们的锁表进程SELECT SESS.SID, SESS.SERIAL#, LO.ORACLE_USERNAME, LO.OS_USER_NAME, AO.OBJECT_NAME,.原创 2020-09-30 14:14:53 · 10072 阅读 · 4 评论 -
ORA-01790:表达式必须具有与对应表达式相同的数据类型
Oracle在使用UNION时,字段类型不一致会报错:ORA-01790:表达式必须具有与对应表达式相同的数据类型MySQL:在使用UNION时,如果字段类型不匹配,默认使用写在前面的Oracle:在使用UNION时,如果字段类型不匹配,会报错。可以使用内置函数进行类型转化...原创 2020-09-25 14:48:31 · 36119 阅读 · 2 评论 -
IDEA打开窗口的数量及打开窗口的排列方式调整
IDEA打开窗口的数量及打开窗口的排列方式调整在我们项目的开发过程中,由于项目涉及的类过多,以至于我们会打开很多的窗口。使用IDEA默认的配置,个人觉的十分不便。但我们可以对窗口的排列方式和打开窗口的排列方式进行设置。(默认设置为一行展示所有窗口,窗口数量限制10个)修改IDEA编译器展示页面,使其能够堆叠显示,不在横着一排//默认的设置为在一行显示File --> Setting --> Editor --> General --> Editor Tabs//原创 2020-09-25 14:35:11 · 15255 阅读 · 1 评论 -
Oracle数据库删除重复的记录
Oracle数据库删除重复的记录使用ROWID对重复记录进行删除-- 1.我们的表名:TTRD_CFETS-- 2.如果两条记录是完全相同的,使用区别去其他数据的字段即可:UPDATETIME-- 3.如果我们希望根据指定字段对数据进行分组后删除多余数据,使用指定的字段即可:UPDATETIME-- ③删除指定的记录DELETE FROM TTRD_CFETS T1 -- ②对我们指定的字段进行条件判断。即记录分组后,ROWID不是最小的记录都会被删除WHER原创 2020-09-25 14:12:37 · 505 阅读 · 0 评论 -
IDEA调试代码F7、F8、F9
IDEA调试代码基本操作快捷键效果F8Step Over 表示跳到下一步F7Step Into 表示进入到代码Alt+shift+F7Force Step Into 表示强制进入代码Shift+F8Step Out 表示跳出该方法F9Resume Program 表示跳到下一个断点...原创 2020-09-25 11:17:46 · 2465 阅读 · 0 评论