自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java密码安全

目录密码学古典密码学现代密码学ASCII编码Byte和bit常见加密方式密码学密码学是网络安全、信息安全、区块链等产品的基础,常见的非对称加密、对称加密、散列函数等,都属于密码学范畴。密码学有数千年的历史,从最开始的替换发到如今的非对称加密算法,经历了古典密码学,近代密码学和现代密码学三个阶段。古典密码学1. 替换法 替换法就是用固定的信息将原文替换成无法直接阅读的密文信息,有单表替换和多表替换两种形式。单表替换即只有一张原文密文对照表单...

2022-02-13 10:30:18 139

原创 Base64算法

何为Base64算法 Base64是一种基于64个字符的编码算法,根据RFC2045的定义:“Base64内容传送编码是一种以任意8位字节序列组合的描述形式,这种形式不易被人直接识别”。经过Base64编码后的数据会比原始数据略长,为原来的4/3倍。经Base64编码后的字符串的字符数是以4为单位的整数倍。 Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括MIME的电子邮件及XML的一些复杂数据。Base64是网络上最常见的用于传输...

2022-02-12 15:09:31 1400

原创 初识JFrame、JPanel、JLabel

JFrame:java图形化界面设计,是一个顶层的框架类,相当于容器。好比一个窗户的框子,这个框子可以嵌入几个玻璃窗。JPanel:也是一个容器类,相当于一个大玻璃窗。JLabel:是一些基础组件,它必须置于某个容器里,类似于剪纸,必须置于窗户的表面。JFrame自带了一个玻璃窗。可以通过语句 Container c=getContentPane(); 获得该内容窗格。也可以定制一个新的玻璃面板替换原来的自带的玻璃窗,代码如下:JPanel jp=new JPanel();th.

2022-01-02 10:41:41 407

原创 java发送get请求400解决

http发送get请求400问题解决小记: 仿佛代码有了保质期,项目在生产环境稳定运转,由于关联系统的升级意外暴露出http发送get请求的400错误。正产运行的请求为什么会突然变成400呢?难道真的是代码有保质期吗? 带着这样的疑惑,进行了一番的探索。首先,系统升级必然是要做兼容性考虑的,就可以排除是升级造成的问题;接着要追踪日志,根据错误信息定位问题。首先,HTTP400 Bad Request 原因如下:1、语义有误,当前请求无法被服务器理解。除非进行修改,否...

2021-12-19 12:18:17 1643

原创 命令行push代码强制覆盖远程代码

Git强制提交本地分支覆盖远程分支git push origin 分支名 --force执行git命令时,需要进入到git节点方可执行其命令。另外git常用命令:切换到远程dev分支:git checkout --track origin/dev查看远程分支:git branch -r查看本地分支:git branch从远程获取最新版本到本地:git fetch使用指定分支代码强制覆盖本地:git reset --hard origin/dev...

2021-11-02 20:45:52 357

原创 maven命令更新子父项目的pom版本

在微服务项目升级中,每次迭代我们都会新拉分支同步进行版本升级,常常会用到maven命令升级工程中的pom版本。如:一个父模块下有多个子模块,父模块包含所有子模块的公共依赖。父模块的version从1.0.0-SNAPSHOT更新到1.0.1-SNAPSHOT。每个子模块都需要更新。此时即可用maven命令统一升级mvn versions:set -DnewVersion=1.0.1-SNAPSHOT //更新整个项目版本注:如果子模块与父模块本来就不一样了, 先运行mvn -N versi

2021-11-01 20:41:29 882

原创 深入学习JVM

1. 类的加载、连接与初始化过程类的加载:1. 类的加载的最终产品是位于内存的Class对象。2. Class对象封装了类在方法区内的数据结构,并且向java程序员提供了访问方法区内的数据结构的接口。有两种类型的类加载器: 1. java虚拟机自带的加载器 1.1 根类加载器Bootstrap 1.2 扩展类加载器 Extension 1.3 系统(应用)类加载器System 2.用户自定义的类加载器 2.1java...

2021-08-21 14:54:09 83

原创 Intellij IDEA 远程调试技巧

远程调试,特别是当你在本地开发的时候,需要调试服务器上的程序时,远程调试就显的非常有用。知其然知其所以然,首先,为什么可以进行远程调试,背后的原理是什么? Java程序执行过程可以分为一下几个步骤:Java文件--->编译生成类文件(class文件)-->JVM加载类文件-->JVM运行类字节码文件-->JVM翻译成各个机器认识的不同的机器码。 远程调试原理 我们知道Java程序是运行在Java虚拟机(JVM)上的,具有良好的跨平台性...

2021-08-07 14:51:22 452

原创 window下统计工程代码行数

此处只介绍借助cloc工具进行的代码统计:1. 下载最新cloc.exe工具,官网地址:http://cloc.sourceforge.net/2.将cloc-1.64.exe名称修改为cloc.exe,放在需要统计代码的文件夹所在目录->打开黑窗口->进入到cloc所在的文件夹,输入命令">cloc.exe CodeCount"(CodeCount即要统计代码行数的文件名);如上便得到了代码的行数。...

2021-08-01 15:15:25 580 1

原创 unnecessary Mockito stubbings 问题的解决

这个问题是Junit提示我们在测试用例中存在没有用到的方法打桩。这个时候我们就需要对报错的测试用例进行检查,确认执行流程是否是按照我们预期进行的。如果是没有走到目标分支导致的,那么就需要改逻辑。否则就需要删除无用的打桩。在写单测时,要注意覆盖到每个分支,减少每个分支中不必要变量的定义,100%发覆盖率有助于我们测试到每种情况。...

2021-08-01 13:23:12 1397

原创 Git-如何在IDEA中查看代码历史修改者

Git->Annotate:在IDEA中查看代码历史修改者,然后可通过提交描述在Git的marge历史中进行搜索。

2021-07-26 21:50:04 2951

原创 Base64编码长度的计算

首先明确对Base64的理解Base64的编码都是按字符串长度,以每3个8bit的字符为一组,然后针对每组,首先获取每个字符的ASCII编码,然后把ASCII编码转换成8bit二进制,得到24bit;再把这24bit每六个划分,高位用0补齐,得到4个8bit的字节,然后再将这4个8bit的字节转换成十进制,对照Base64编码表,得到对应编码后的字符。如果字符串的长度不能被3整除,多出来的部分用0补齐,对应的输出字符为“=”Base64的编码长度至少比原来长三分之一。关于Base6

2021-07-25 12:19:27 3364

原创 Linux 下模拟Http请求

curl -XPOST -H"Content-Type:application/json" -d 'json参数' 访问地址1. get请求curl命令默认下就是使用get方式发送http请求。curl www.baidu.com2. post请求使用-d参数,形式如下:curl -d "param1=value1&param2=value2" www.baidu.com其他参数-I 只显示头部信息。i 显示全部信息。-v 显示解析全过程...

2021-07-24 16:12:48 346

原创 Linux中./和sh执行文件的区别

1 ./需要执行权限,使用脚本文件中第一行#!指定的shell(解释器)来执行命令(譬如常见的/bin/bash),不指定系统会调用默认shell程序2 sh不需要执行权限,是使用sh这个shell执行命令,是个软链接,它可能是一个任意的shell,通常默认是bash shell,对文件的权限最低要求可读就可以。用type命令可以查看...

2021-07-24 14:31:56 1213

原创 postgresql去重查询最新一组记录

什么是“IOE”?IBM是服务器提供商,Oracle是数据库软件提供商,EMC则是存储设备提供商,三者构成了一个从软件到硬件的企业数据库系统。由这三驾马车构成的数据库系统几乎占领了全球大部分商用数据库系统市场份额。较为著名的“去IOE”事件要追溯到2013年5月份,阿里巴巴首先发动了“去IOE”运动。用成本更加低廉的软件——MYSQL替代Oracle,使用PCServer替代EMC2、IBM小型机等设备,以消除“IOE”对自己数据库系统的垄断。当然,除了降低成本外,“去IOE”化更重要的当然是...

2021-07-24 13:34:39 825

原创 base64和图片的转换

/** * 将base64转为图片 * @param imagebase64 * @param filePath * @return */ public static String decideImage(String imagebase64, String filePath) { BufferedOutputStream os = null; byte[] data = null; try { os...

2021-07-23 23:11:17 189

原创 常量的本质含义与反编译及助记符详解

还记得才接触到类的初始化时的窘态,如今再次学习jvm,理解这些底层的东西,希望可以得到更多的收获。首先看下面的代码:绝大多数人应该都能想到程序运行的结果吧,但是为什么是如此的呢?我们知道所有java虚拟机实现必须在每个类或接口被java程序“首次主动使用”时才初始化。显然上面的案例中并没有触发Parent1类的初始化,原因如下: 在Parent1中我们定义的是编译期的常量,即这些常量在编译阶段会被存入调用这个常量的方法所在的类的常量池中,本质上:调用类并没有直接引用...

2021-07-23 22:13:18 57

原创 idea的terminal无法使用ll,ls等命令

idea的terminal无法使用ll,ls等命令出现如下界面解决办法如下:1.将Windows默认的cmd命令行终端改为git命令行终端模式file--->settings--->terminal将设置更改如下:点击apply--->OK即可。重新打开你的 Terminal 就能看到变成了经常看到的 Git bash 窗口。...

2021-07-23 21:14:15 763

原创 如何测试服务器及端口是否畅通

1. 判断服务器是否开启及网络环境是否畅通ping 服务器ip地址 //通过该命令判断服务器网络环境是否畅通ping命令是不能检测端口的,只能检测你和相应ip是否连通。2. 判断服务器端口是否开放telnet [服务器ip] [端口]如:telnet 10.200.36.18 8080 //测试10.200.36.18服务器 8080端口是否畅通。如果不畅通会有错误提示。如果在windows命令行中,运行telnet相关指令提示“‘telnet’ 不是内部或外部命令,也不..

2021-07-08 21:28:35 10567

原创 java实现图片压缩

maven中用到的依赖: <dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version> </dependency> <depende

2021-07-04 18:36:45 440

原创 FixMethodOrder Junit-优先级测试

JUnit是通过@FixMethodOrder注解(annotation)来控制测试方法的执行顺序的。@FixMethodOrder注解的参数是org.junit.runners.MethodSorters对象,在枚举类org.junit.runners.MethodSorters中定义了如下三种顺序类型:MethodSorters.JVMLeaves the test methods in the order returned by the JVM. Note that the order fro

2021-07-04 15:35:23 136

原创 @JsonInclude(JSON include.Include.NON_EMPTY)

@JsonInclude(JSON include.Include.NON_EMPTY)标记是jackson包提供的json序列化方法,已经集成于Springboot2.0中,此方法的配置意在可以对实体json序列化的时候进行对应的数值处理。将该标记放在属性上,如果该属性为空字符串或者为null则都不参与序列化 。如果放在类上边,那对这个类的全部属性起作用Include.Include.ALWAYS 默认 Include.NON_DEFAULT 属性为默认值不序列化 Include.NO...

2021-05-29 18:02:17 6600

原创 Idea debug时报错:Command line is too long

在工作中,常常会使用debug去看一些信息,但是最近在debug的时候遇到了如下的报错这种异常的出现是因为运行项目的指令过长引起的,在IDEA进行代码运行时加载了很多指令,这些指令拼接后的长度超出了系统的最大长度。解决方法:在项目/.idea/workspace.xml文件中添加一行代码如下<component name="PropertiesComponent"> ...<property name="dynamic.classpath" value="tr...

2021-05-18 19:09:50 337

原创 @ConditionalOnMissingBean注解

@ConditionalOnMissingBean注解作用在@bean定义上,它的作用就是在容器加载它作用的bean时,检查容器中是否存在目标类型(ConditionalOnMissingBean注解的value值)的bean了,如果存在这跳过原始bean的BeanDefinition加载动作。参考博客 https://blog.csdn.net/xcy1193068639/article/details/81517456@ConditionalOnMissingBean,它是修饰bean的一个..

2021-04-28 20:53:29 1857 1

原创 Mock测试(接口测试)

一、关于Mock测试1、什么是Mock测试Mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的比较复杂的对象(如 JDBC 中的ResultSet 对象),用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法。2、为什么要进行Mock测试Mock是为了解决不同的单元之间由于耦合而难于开发、测试的问题。所以,Mock既能出现在单元测试中,也会出现在集成测试、系统测试过程中。Mock 最大的功能是帮你把单元测试的耦合分解开,如果你的代码对另一个类或者接口有依赖,它能够帮你模拟

2021-04-28 20:50:02 879

原创 58到家数据库30条军规解读

军规适用场景:并发量大、数据量大的互联网业务军规:介绍内容解读:讲解原因,解读比军规更重要一、基础规范1.必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高2.必须使用UTF8字符集解读:万国码,无需转码,无乱码风险,节省空间3.数据表、数据字段必须加入中文注释解读:N年后谁tm知道这个r1,r2,r3字段是干嘛的4.禁止使用存储过程、视图、触发器、Event解读:高并发大数据的互联网业务,架构设计思路是“.

2021-04-24 11:49:00 139

原创 @Primary注解 在spring中的作用

在spring 中使用注解,常使用@Autowired, 默认是根据类型Type来自动注入的。但有些特殊情况,对同一个接口,可能会有几种不同的实现类,而默认只会采取其中一种的情况下 @Primary 的作用就出来了。Primary可以理解为默认优先选择,不可以同时设置多个,内部实质是设置BeanDefinition的primary属性注解 备注 @Primary 优先方案,被注解的实现,优先被注入 @Qualifier 先声明后使用,相当于多个实现起多个不同的名字,注入时候

2021-04-24 10:40:03 356

原创 java中变量.equals(值)与值.equals(变量)的区别

String a ="a""a".equals(a); 这是对的。 String a = null;a.equals("a"); 这就错了 。一般是防止 传过来的变量是NULL值 而报异常。所以我们一般会使用 值.equals(变量) 这种方式

2021-04-24 10:04:16 113

原创 svn update 报错,提示先cleanup的解决

 svn update 报错有两种情况:1.有可能你在更新的时候,中断了2.正在打开着SVN的某个文件,在打开某个文件的情况下,去update会造成SVN更新锁定解决办法:clean up 一下在SVN文件的目录下 右键--->TortoiseSVN-->clean up --->OK我是第二种情况,关闭SVN中的文件,采用上述方法得以解决。但是也有clean up失败的情况一 问题描述:    1.svn update失败,提示已被locked..

2021-04-24 09:37:33 1578

原创 SVN给文件加锁与解锁

在多人协同开发时,经常会存在多人对同一个文件进行修改的情况,这个时候我们就可以采用SVN的 锁定-修改-解锁的模式,在这样的模式里,在一个时间段里配置库的一个文件只允许被一个人修改(即如果你对一个文件获得锁定,那么只有你可以提交这个文件,其他用户的提交都会被拒绝,直到你释放了这个锁)。此模式并不适合软件开发这种工作,我们采用此种模式进行文档管理。使用TortoiseSVN获取锁现在,开发人员想要修改一下某个文件,他在修改的过程中,有可能会给某个接口文档这个文件加锁,进行获取锁操作找到要修改的文.

2021-04-24 09:25:31 4158

原创 java中的bean对应的意义(PO,DO,VO,TO,QO,BO,DAO,DTO,POJO)

ORM 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在 O/R Mapping 的世界里,有两个基本但重要的东东需要了解,即 VO , PO 。VO ,值对象(Value Object)通常用于业务层之间的数据传递,和 PO 一样也是仅仅包含数据而已。但应是抽象出的业务对象 , 可以和表对应 , 也可以不 , 这根据业务的需要 。用 new 关键字创建,由 GC 回收的。PO ,持久对象(Persise

2021-04-18 13:33:32 360

原创 初识SecureCRT工具

SecureCRT是最常用的终端仿真程序,是一款用于连接运行包括Windows、UNIX和VMS的理想工具。简单的说就是Windows下登录UNIX或Liunx服务器主机的软件。不同就是SecureCRT支持SSH(使用SSH客户端与服务端通讯时,用户名及口令均进行了加密,有效防止了对口令的窃听,同时ssh的数据传输是经过压缩的,提高数据传输速度),同时支持Telnet和rlogin协议。SSH 为 Secure Shell 的缩写,是建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠、专为远程

2021-04-18 12:29:05 813

原创 lombok下的@Builder和@Data注解用法

lombok是一款在java开发中简洁化代码的插件工具,使用lombok注解,目的就是不用去写经常反复去写的(如Getter,Setter,Constructor等)一些代码了。首先常用的 lombok 注解@Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 等方法,注解后在编译时会自动加进去@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法@NoA

2021-04-16 21:38:18 1782 1

原创 向来心是看客心,奈何人是剧中人

向来心是看客心,奈何人是剧中人!生活本不累,累的是人心,不得不说,人活得就是心。走着走着或许就偏离了最初的航道!人生的大多数烦恼,不过是想的多,做的少。不管你现在处于什么境况,不开心的时候请给心灵放个假,让它适当的休息休息,找到光明才好起航。工作、生活这就是日子。或许是我们那颗骚动的心为自己徒增了烦恼,所以要懂得知足,这和人往高处走,水往低处流并不矛盾。我们可以脚踏实地的为自己制定计划,并付诸行动。当一切都按部就班执行时,我们便是在悄悄拔尖了。还用担心惊艳了所有人吗?所以,要知足,要上进,要

2021-03-10 13:26:14 163 1

原创 Java实现定时任务的几种方式

博客地址:https://blog.csdn.net/kegumingxin2626/article/details/72854823

2021-03-10 11:31:03 78

原创 Java调用百度API实现地址和经纬度互转

在近期的项目中有地址转经纬度的需求,要在地图上进行展示。大多数同事都推荐百度地图,此处特做一个小结,方便使用。百度地图开发者秘钥AK申请此处省略。百度API官网:http://lbsyun.baidu.com/index.php?title=webapi直接上代码​​package com.jo.common.utils.AddressUtil;import com.alibaba.fastjson.JSON;import com.jo.common.utils.StringUtil

2021-03-09 19:10:05 371

原创 Oracle基础小结

1. 数据库Oracle数据库是数据的屋里存储,包括数据文件ORA或者DBF、控制文件、联机日志、参数文件。其实Oracle数据库的概念和其他数据库不一样,这里的数据库是一个操作系统,只有一个库,可以看作是Oracle就只有一个大数据库。2.实例一个Oracle实例有一系列的后台进程和内存结构组成,一个数据库可以有n个实例3.用户用户是在实例下建立的,不同实例可以建相同名字的用户。此处我们可以这样理解:MySQL中每个项目我们会去创建不同的数据库,Oracle中我们会创建新的用户,.

2021-03-09 18:26:14 68

原创 java中Date日期类型的大小比较

方法一:java.util.Date类实现了Comparable接口,可以直接调用Date的compareTo()方法来比较大小 String beginTime = "2020-02-28 14:42:32"; String endTime = "2020-07-29 12:26:32"; SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

2021-03-08 09:44:45 541 2

原创 @JsonFormat(pattern = “yyyy-MM-dd“, timezone = “GMT+8“)

@JsonFormat 默认是标准时区的时间,多出现少8小时的情况使用时,按需求加上时区 北京时间 东八区 timezone=”GMT+8”作用:后台的时间 格式化 发送到前台。在网上看博客时,有看到@JsonFormat 涉及到夏时令的说法,可以参考博客:https://blog.csdn.net/weixin_37882382/article/details/91387401@DateTimeFormat 接受前台的时间格式 传到后台的格式import java.util.Date

2021-03-07 10:43:09 5166

原创 MybatisPlus忽略映射字段

在开发中我们可能会遇到MybatisPlus使用实体类属性进行SQL操作,实体中有这个属性,但是数据库的表没有这个字段(即:实体类属性非数据库表字段)。如果不做处理就会报错。API@TableName:数据库表相关@TableId:表主键标识@TableField:表字段标识@TableLogic:表字段逻辑处理注解(逻辑删除解决方案@TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的。 @TableField(exist =

2021-03-07 10:33:10 582

空空如也

空空如也

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

TA关注的人

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