自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何理解拉链法

通过将链表和数组相结合,拉链法可以有效地解决哈希冲突

2023-02-23 23:01:23 470

原创 解决接口返回的json中值为null的字段不显示的问题

在项目中发现接口返回的json数据中,值为null的字段没有返回,针对这一问题采用如下方法即可解决。

2023-02-08 17:18:36 4134

原创 使用java8stream的API将List转为Map<String,List<Object>>

主要是使用collect这一api,具体方法有两种,请参考下面的示例。

2022-12-30 16:43:02 793

原创 Java中的运算符

E短路操作,java没有sizeof字面量中的下划线,可在数字字面量中加入下划线:只能使用单个下划线,不能连续使用多个;数字的开头或结尾不能有下划线;像F、D或L这样的后缀周围不能有下划线;在二进制或十六进制标识符b和x的周围不能有下划线。

2022-12-30 12:04:03 147

原创 继承关系中的初始化与加载顺序

父类静态成员、静态代码块 ➡️​ 子类静态成员静态、代码块 ➡️​ 父类成员变量和非静态块(顺序加载) ➡️​ 父类构造函数 ➡️​ 子类成员变量和非静态块(顺序加载) ➡️​ 子类构造函数​。执行基类构造,其对象中的所有基本类型变量先被设置为默认值, 引用类型被设置为null,然后再执行出现在字段定义处的初始化动作(赋值)。​ 在类的加载过程中,如果该类有基类,编译器会先加载该类的基类。【通过输出分析:】初始化X1为null,加载printInit方法,执行X1处的调用。【4.执行基类构造】

2022-12-30 11:58:47 274

原创 常见的垃圾回收机制总结

将标记过的对象,把他们从内存开始的地方按照顺序依次摆放好,中间没有任何缝隙,在摆放完最后一个对象后,对后面的内存区域直接回收。所以,遍历所有的引用即可得到所有“活”的对象,然后再去遍历这些对象中的引用,如此反复,就能得到一个对象网络,其中的对象就都是 活 的;上例 当栈上的引用遍历到a,发现a对象中有个B对象的引用,指向b,这个b引用中又有个A的引用 又指向a 如此循环 根本找不到活的对象。,遍历所有引用,找出所有“活”对象,每找到一个,就给对象一个标记,直到遍历完所有对象;

2022-12-30 11:56:47 282

原创 为什么会有996

如果发明出来更高级的“武器”,就能打破这一局面,那么就算再快也没用(我觉得发明更高级的武器就意味着要消耗更多的资源,投入更大的成本,但互联网时代大伙往往都不太能沉得住气……“我们熬夜工作,不是因为晚上有灵感,而是因为白天的碌碌无为,引发了愧疚感”“几乎所有人都会混淆行动与进展,混淆忙碌与多产 ” ——出自《代码大全》 作者在该书本引用,实际上并不是行动了就会有进展,忙起来了就会有产出。书中大佬的预测:国内的原始积累差不多了,接下来该向精耕细作的阶段进发了,从劳动密集型 >>>> 知识密集型。

2022-12-30 11:50:51 83

原创 什么是X-Y问题

X-Y问题就是有人想解决问题X,他觉得Y可能是解决X的方法但不知道Y怎么做;在我们的工作中,需求方给出的来的是Y,而软件工程师不知道需要解决的X是什么。我理解的X-Y问题是没有找到问题的本质,而在错误的解决方案上浪费时间。

2022-12-28 16:57:58 351

原创 高效的学习方法之一——和身边的人搭伴学

前提是双方都非常信任彼此,因为搞软件大多容易沉浸在自己的问题里,又不太善于做高情商的表达。一遇到沟通问题,一句话说不好就会引发误会。很多时候解决一个问题有好几个方案,若不确定用哪个,便可以与你的搭档讨论,把你的方法讲述一遍,他不见得会给你一个确定的答案,但。有了信任的伙伴,你就不再需要费时间去想如何表述问题,无需猜测、有话直说,就算无意间说了不太客气的话,对方也能理解并接受。

2022-12-28 16:57:18 92

原创 写代码和读代码哪个更重要

如果一段代码被使用了很久都没有被淘汰,说明它设计思路很棒,建议关注最旧的部分,可以推敲设计的核心思想。在高手帮你review代码的过程中学习,关注大佬指出你代码的问题,以及如何改进;大概率是因为写代码的人准备好了基础工具,要看看别人早期是如何搭建这些工具的。读代码是一种有益的精进方式,类似与阅读和写作,从范文得以借鉴。清晰,明确,易用,自带使用说明的;代码要更干净,更优雅,更漂亮。观察他解决问题的方法与思路。通用性高,可扩展的;

2022-12-28 16:55:29 137

原创 拿到任务后为什么要先分解

按单一职责原则对任务拆解,罗列功能点(比如要实现一个XX模块,那么就先将这个模块需要的接口先罗列出来,在一一实现)子任务完成后,发给评审,有问题的话评审也会很快给你回馈,那么接下来要写的子任务就能避免面同样的问题——小步试错。每个功能点对应一个小程序或小模块,写出模块,最后把他们拼装起来。抓住重点,去掉不必要的东西,留下必须要做的,找到任务的主干。任务分解能帮你理清楚解决问题的思路。

2022-12-28 16:54:17 539

原创 一些改Bug的经验与技巧

如果修复某个Bug花了很长时间,这时候就要问问自己为什么,怎么做才吸取经验教训,在类似的问题上不再出问题,以及采用的方法,使用的工具是否还有改进的地方;当所有问题都解决之后,一定要梳理下从最初找Bug到最后改Bug的整个过程。

2022-12-28 16:52:38 437

原创 做测试其实比写代码难

即不能让减少或增加的两方增减量不同,如 A给B转账,A-10元,B+10元,不变量就是这两个数字加起来=0。对程序交付以后出现的问题和BUG,对齐的测试程序也要保留或提交到代码库,保证回归测试可以自动运行这个测试。如A方法的入参范围为[-10,10],那么还要测测-13 14等等。桥的主要功能是承重,所以搭桥时就要考虑使用的材料能承受多少力。白盒:清楚内部的东西以及内部是如何运作的。测似接口的语义,而不是当前实现的具体行为。对重要模块,编写时就要做到基本的性能测试。,绝不能让用户成了你的测试。

2022-12-28 16:51:11 88

原创 四大编程原则

例如我要造一辆车,A工厂,只负责生产车轮;每个人只负责生产一个部件,而我要做的就是把不同的部件组装而已。设计灯泡时不需要考虑用什么开关控制它,不管是声控、光控、手动,统统不管;让一个模块做到独立,做到精益求精,同时把模块间的耦合降到最低,不会因为动了一个模块,而导致其他模块出问题。避免重复原则:相似的代码要想办法抽取出来,达到用这一段代码解决多个问题的目的。例如灯泡和开关,灯泡只负责量亮灭,开关只负责控制通电和不通电,这是高内聚。开闭原则:对修改是关闭的,对扩展是开放的,保证重用性和稳定性。

2022-12-28 16:50:01 92

原创 软件工程师是否存在35岁的坎

因为更大的人可能就慢慢退休了,年轻人这时候也还没成长起来,社会一定会把重担交给30~40岁这群人,若没接住一会掉队;一但接住了,35岁就成了事业发展的高峰期了。其实所有行业都是如此,只是软件工程师这一行的容错率会比较低,到了岁数就干不下去了,而在其他行业还能混得下去。前瞻能力,感知行业变化、技术潮流,为公司未来应对做好准备。抓重点,简化问题,标准化问题,才能实现规模化,平台化。探路能力,只要方法没问题,即使没有路,也能够蹚出来。为公司带来资源、吸引人才,带来效益。不存在年龄的坎,只存在能力的坎。

2022-12-28 16:46:09 1283

原创 软件工程师的四大台阶

从新手成长到进阶,至少有60%软件工程师可以跨域;而从进阶到高手,大概只有30%;高手到大神,1%都不到。当然这不是统计的数据,只是大一个概的印象,方便你了解各个阶段的比率。

2022-12-28 16:38:30 62

原创 新人进入公司后的注意事项

优先选择走在未来航道上的那些的公司确认所选公司是否是一家的公司。

2022-12-28 16:29:53 82

原创 java数组转为集合的两种常用方法

方法一Integer[] a = {1,2,3,4,5,6};//使用Arrays.asList(a)时 数组需要定义为包装类新List<Integer> i1 = new ArrayList<>(integers);System.out.println(i1.getClass());//class java.util.ArrayList方法二Integer[] a = {1,2,3,4,5,6};//使用Arrays.asList(a)时 数组需要定义为包装类新Lis

2021-08-11 10:11:26 13369

原创 Centos7中java开发环境配置总结

文章目录linux自带的Open JDK和Oracle JDK有什么区别Linux安装jdk1.8Linux安装MySQL5.7异常情况修改密码允许远程访问Linux安装nginxLinux平滑升级NginxLinux安装Reidsredis设置密码redis配置后台启动Linux安装node.jsLinux安装yarnLinux安装cnpmLinux安装vue-cliLinux安装RabbitMQ前提-安装erlang安装RabbitMQ用户管理Linux配置elasticseacher运行java程序将

2021-08-03 10:18:23 434

原创 java Base64编解码

使用Java.Util中的Base64处理(机翻)该类只包含用于获取Base64编码方案的编码器和解码器的静态方法。这个类的实现支持RFC 4648和RFC 2045中指定的Base64类型。基本使用RFC 4648和RFC 2045表1中规定的“The Base64 Alphabet”进行编码和解码操作。编码器不添加任何换行(行分隔符)字符。解码器拒绝包含base64字母表之外的字符的数据. URL和文件名安全使用RFC 4648表2中指定的“URL和文件名安全的Base64字母表”进行编码和解码。编

2021-07-20 16:59:42 470

原创 MySQL

MySQL配置MySQL服务启动​ win+R->cmd->service.msc 打开服务的窗口​ 以管理员打开cmd ->​ net start mysql 开启​ net stop mysql 停止登录mysql -uroot -pmysql -h(目标的ip) -uroot -p(连接目标的密码)mysql --host=(目标的ip) -user=(目标用户名) --password=(连接目标的密码)退出exitquit

2021-02-24 16:26:28 98

转载 请求与响应消息格式

所有的HTTP消息都包含下面三个部分开始行(start line)请求头(headers):由一个空行结束数据体(entity-body)HTTP消息(HTTP请求,HTTP响应)格式请求消息格式1.请求行包含:请求方式、请求URL、请求协议/版本,如下:GET/login.htmlHTTP/1.12.请求头客户端浏览器告诉服务器一些信息常见的请求头:User-Agent(使用浏览器版本信息,可用来解决浏览器兼容问题) Mozilla/5.0 (Windows NT.

2020-10-11 12:46:04 206

原创 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误记录

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误记录大致需要从以下几个点入手:springboot全局配置文件      映射文件的扫描路径是否配置正确XXXMapper.xml文件mapper标签中的namespace属性是否正确sql标签中的id属性是否与dao层接口的相关方法对应/dao层是否存在匹配的方法da

2020-08-10 18:12:12 130

原创 基础关键字之this

this关键字this关键字只能在方法内部使用,表示对调用方法的那个对象的引用1、在成员方法或构造方法使用this来访问成员变量通常可以省略,但是当方法的局部变量与成员变量重名时,此时在方法中直接引用的该变量是局部变量class hhhh{ private int hhh = 1; void hh(int hhh,int aaa){ this.hhh = hhh;//this对调用方法的那个对象的引用 }}2、在成员方法或构造方法中使用this来访问其他

2020-05-09 15:26:02 97

原创 基础关键字之super

super关键字与当前类的父类有关1、显式调用父类构造方法(在继承中已经了解过)class Fu{ public Fu(){ System.out.println("我是爸爸"); } public Fu(String str){ System.out.println(str+", 我是爸爸"); }}public class Zi extends Fu { Zi(){ super(); }

2020-05-09 15:25:11 100

原创 基础关键字之static

static关键字static就是没有this的方法可以在没有创建任何对象的前提下,仅通过类本身来调用很像全局方法,但是Java中禁止全局方法静态代码块public class 类名称{static{ //静态代码块内容 }}特点当第一次用到本类时,静态代码块执行唯一的一次静态代码块执行时机:静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。如果一个类中有多个静态代码块,会按照书写顺序依次执行。后面在比较的时候会通过具体实

2020-05-09 15:23:55 88

原创 基础关键字之final

final关键字1、final修饰类不能被继承(Cannot inherit from final ‘the_final.XXX’)public final class 类名{ //}2、final修饰方法不能被子类重写(overridden method is final)访问权限 final 方法名(参数)3、final修饰成员变量与局部变量向编译器告知一块数据是恒定不变的对于基本类型:final使数值恒定不变对于引用类型:final使引用(指向)不能改变,但是对象自

2020-05-09 15:21:16 153

原创 Java基础(9)Junit+反射+注解

一、Junit单元测试测试工具(写测试类,测试代码)测试分类:黑盒:(不需要写代码)看不到代码,只需输入,看其输出是否达到期望白盒:(需要些代码)关注程序具体的执行流程Junit使用:定义一个测试类(测试用例)建议:测试类名:被测试类名Test CalcultorTest包名:xxx.xxx.xx.test cn.itcast,.testpublic class Calculator { public int add(int a, int

2020-05-09 15:19:04 128

原创 Java基础(8)方法引用

方法引用​ 标准语法为 Classname::methodName​ 需要注意的是,虽然这是一个方法,但不需要在后面加括号,因为这里并不调用该方法。​ 我们只是提供了和 Lambda 表达式等价的一种结构, 在需要时才会调用。​ 凡是使用 Lambda 表达式的地方,就可以使用方法引用。1、方法引用符双冒号::为引用运算符,而他所在的表达式被称为方法引用。如果Lambda要表达的函数方案已经存在与某个方法的实现中,那么则可以通过双冒号来引用该方法作为Lambda的替代者。2、通过对象名引用成员

2020-05-09 15:16:43 126

原创 Java基础(7) 函数式接口

一、函数式接口函数式接口:接口中有且只有一个抽象方法@FunctionalInterface//注解:检测是否为函数式接口 public interface Demo01 { public abstract void method();}Lambda表达式详情在多线程中提到二、函数式编程2.1、Lambda的延迟执行有些场景的代码执行后,结果不一定被使用,从而造成性能的浪...

2020-05-09 15:14:37 213

原创 Java基础(6) 网络编程

网络编程一、网络通信概述1.1、软件结构C/S结构:Client/Server结构,指客户端和服务器结构。QQ,迅雷。B/S结构:Browser/Server结构,指浏览器和服务器结构。谷歌,火狐。1.2、网络通信协议网络协议:计算机网络中进行数据交换而建立的规则、标准或约定的集合。TCP/IP协议:TCP/IP的四层协议:应用层:(各种应用层协议,如HTTP,FTP,TFT...

2020-05-09 15:12:26 94

原创 Java基础(5)File类与IO流

File类与IO流一、File类1、概述java.io.File类文件和目录路径名的抽象表示形式。java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作可以使用File类的方法创建一个文件/文件夹删除文件/文件夹获取文件/文件夹判断文件/文件夹是否存在对文件夹进行遍历获取文件的大小File类是一个与系统无关的类,任何...

2020-05-09 15:05:35 349

原创 Java基础(4)多线程

多线程一、线程实现方式1、并发与并行并发:多个事件在同一个时间段内发生(交替执行)并行:多个事件在同一时刻发生(同时执行)2、线程与进程进程:指一个内存中(RAM)运行的应用程序,每个进程都有一定的内存空间, 一个应用程序可以运行多个进程,是系统运行程序的基本单位;进程是程序的依次执行过程,是系统运行程序的基本单位;系统运行一个程序,是一个进程从创建、运行到消亡的过程。线程...

2020-05-09 14:56:23 139

转载 Mybatis Mapper.xml中的“#{}”与“${}”

Mybatis Mapper.xml中的“#{}”与“${}”来源:简书 作者:Kevin___ Mybatis——Mapper.xml中的“#{}”与“${}”Mybatis在真正操作数据库前要完成2个步骤:1、预编译SQL语句(以提高语句利用率,减少资源消耗)2、将SQL传输给DBMS(数据库管理系统,真正的数据库操作者)执行。配置文件中的SQL语句使用#{*value*}...

2020-02-25 11:57:36 710

原创 Java基础(3)继承

继承1、关键字:extends2、格式//定义父类的方式:(一个普通的类的定义)public class 父类名{ //.... }//定义子类的格式:public class 子类名 extends 父类名{ //...}3、继承中变量的重名在父子继承关系中,如果成员变量重名,则创建子类对象时,访问有两种方式:1、直接通过子类对象访问:(该对象被创...

2020-02-12 14:20:15 125

原创 Java基础(2)String类与StringBuffer/StringBuilder类

String类简介java.lang.String类注意程序中所有双引号字符串,都是String类对象 (就算没有new 也照样是)1、字符串特点 字符串的内容用不可变 【重点】(要变也是“指向”发生改变,但是无法修改原始的字符串中的内容) 正是因为字符串不可改变 ,所以字符串是可以共享使用的 (有相同的就调用已经存在的那个) 字符串效果上相当于是char[] 字符数组,但是底层...

2020-01-06 11:28:57 1344

原创 Java基础(1)类与对象

面向对象语言特征对象的创建成员变量与局部变量的区别标准的类的组成引用类型的使用Math类Date类Random类static关键字

2019-11-18 21:05:54 122

空空如也

空空如也

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

TA关注的人

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