自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树的深度

描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。示例1输入:{1,2,3,4,5,#,6,#,#,7}返回值:4解析:这里使用的非递归方法,他是在层次遍历的基础上进行改进而来的,每当一层遍历结束,树的高度+1,那我们如何判断每一层遍历结束呢?可以先记录一层的节点数量,在这一层每遍历到一个节点,就减少当前层元素数量,直到为0那怎么记录到下一层的节点个数呢?注意到每一层的最后一个节点被遍历(并出队列)

2021-05-29 16:20:17 204

原创 工厂模式优化:反射机制+配置文件下的工厂模式进行解耦合

一、引入工厂模式是我们最常用的实例化对象模式了,它是用工厂中的方法代替new创建对象的一种设计模式。我们以Mybatis的SqlSession接口为例,它有一个实现类DefaultSqlSession,如果我们要创建该接口的实例对象:SqlSession sqlSession = new DefaultSqlSession();可是,实际情况是,通常我们都要在创建SqlSession实例时做点初始化的工作,比如解析XML,封装连接数据库的信息等等。在创建对象时,如果有一些不得不做的初始化操作

2021-04-14 15:38:57 479 2

原创 Mybatis快速操作--简化配置文件

mybatis是款好用的Dao层框架,但是由于繁琐的配置文件信息,让我们在使用的时候倍感繁琐,为了更好的开发,我们可以选择一些好用的插件,帮助我们使用Mybatismybatis插件在setting->plugin中搜索Free MyBatis plugin,安装并重启即可!使用配置文件自动生成当我们写一个接口后,只需要按下alt+enter,便会出现提示信息点击确定并选择合适的路径,插件会帮我们自动生成xml文件自动生成sql语句标签我们在接口中定义抽象方法后,需要对Map

2021-04-14 11:39:42 222 1

原创 读取properties配置文件的几种方法

我们常常需要将一些配置参数放置在XML 配置文件或者 properties 配置文件中,增强程序灵活性。我总结下读取 properties 配置文件的几种方法,供需要时使用。假设我有一个config.properties文件:(键值对形式),现在需要读取出来className=demo.TeachermethodName=teach方式一:properties类public class propertiesTest{public static void main(String[] arg

2021-04-09 22:23:23 4999 2

原创 Servlet抽取思想详解

1.概念比如上图中客户端的操作比较多,那我们需要每一个操作建一个Servelet,最终项目结构会很混乱。所以我们需要将用户的操作全部抽取到一起,一个Servlet搞定所有用户操作!Servlet中原有的方法只有doGet和doPost,那怎么做到我们各种各样操作需求?2.自定义方法我们可以通过自己定义方法来完成各种需要的操作,由于Http协议中有一个头参数operator,可以在请求过程中在请求头中带上operator键值对,这样不同操作需求定义成不同方法的时候,通过不同的请求头中参数来判断到底

2021-03-18 16:48:53 213 3

原创 response.setContentType()和response.setCharacterEncoding()使用区别及统一处理request和response编码

引入在Servlet中,我们常常会处理服务器与浏览器之间传输的时候,中文乱码问题。乱码原因:我们知道浏览器的编码方式是GBK,而Tomcat服务器中编码方式是utf-8,如果他们编码不一致,就会出现乱码有一个比较好的解决方式是在doGet中加入两行代码第一行处理浏览器发送给服务器数据的乱码问题,第二行处理服务器发回给浏览器数据的乱码问题准确来说,这个已经是蛮好的解决方法了。就在今天下午写response的时候我突然看到了response.setCharacterEncoding(),我就

2021-03-17 17:28:05 699 3

原创 添加Tomcat类库:解决程序包javax.servlet不存在

如果出现javax.servlet不存在,说明没有添加Tomcat类库步骤如下step1step2step3step4step5添加Tomcat库成功。Tomcat详细部署详见另一篇博文IDEA中创建web项目+Tomcat部署(2020.2后版本)

2021-03-14 13:54:04 1320

原创 No database selected Query:解决数据库查询中使用问号占位符查询不到正确数据的问题

项目场景:提示:这里简述项目相关背景:例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大)问题描述:提示:这里描述项目中遇到的问题:例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据APP 中接收数据代码:@Override public void run() { bytes = mmInStream.read(buffer); mHandler.obta

2021-02-26 20:43:04 3071 2

原创 IDEA中创建web项目+Tomcat部署(2020.2后版本)

前言自从IDEA2020.2版本发布之后,在IDEA中创建web项目与之前发生了很大变化现在:我们会发现新建项目的时候,界面变成这样了曾经:在IDEA2020.2以前,我们创建一个web项目那么问题就来了,我们应该怎么办呢?一、配置Web项目现在我们创建web项目只需要:1.正常的先New 一个普通Java项目,2.然后回到项目界面,右键项目名称->add framwork support->选中Web Application->默认勾选创建web.xmlste

2021-02-25 20:54:16 545

原创 多态中向下转型的技巧性认知(逢看必懂)

前言在多态中,向下转型因为是比较基础的内容,用到次数也不算多,所以大家都不太重视,但在写代码时,冷不丁出现一个 ClassCastException也是很不好受的,主要还是对向下转型理解不到位出现的。下面我用一些比较形象的例子以及自己的话语写了一些理解,只要掌握了类型之间转换的技巧,那基本不会在写代码时候出现 ClassCastException了,文章有点长,请耐心读下去~多态的转型分为向上转型与向下转型两种:1.向上转型(简单回顾)向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过

2021-02-24 21:47:48 636 1

原创 forName().getResourceAsStream和forName().getClassLoader().getResourceAsStream方法的区别及总结(API文档分析)

问题描述:在载入一个properties文件的时候,由于我的粗心写了一行易错代码 - -,InputStream is = Class.forName("utils._03DruidUtils").getResourceAsStream("druid.properties");结果直接给我报出一个空指针异常NullPointerException我仔细分析了下代码,一般空指针异常是读取文件没有读到,所以我就注意到了这一行代码InputStream is = Class.forName("ut

2021-02-19 23:59:10 1367 6

原创 MySQL查询语句书写顺序技巧总结(一遍必会版)

0. 前言MySQL的查询语句语法虽然是描述性语言,但是在使用的时候,我发现如果语句书写顺序不正确的话,还是很容易发生报错的,如果您已经学了查询语句的概念,但是写代码的时候有些模糊,那我后面写的可能会对您有所帮助!我在这里分享一下我对语句书写的理解~

2021-02-14 23:02:46 4613 9

原创 依赖注入DI应用的简单理解(xml配置文件+反射)

引入假如我有一个类Person,我想通过类来创建对象import lombok.Data;@Data //loombok注解public class Person { private String name; private String address;}//创建对象public static void main(String[] args) { Person person = new Person(); person.setName("张三");

2021-02-11 19:18:11 450 7

原创 Java中如何获取基本数据类型(自实现和调用反射API两种方式)

问题Java是面向对象的语言,一切皆是对象,所以基本数据类型都是有自己的包装类的,对于引用数据类型,我们通过反射技术可以得到一个变量的类型.变量名称.getClass().getSimpleName()但是,对于基本数据类型,我们如果想要得到他的类型应该怎么办呢?我查了下API,好像没有专门的方法可以帮助我们直接获取基本数据类型变量的类型,所以我就自己写了个方法,可以获得一个变量的基本数据类型。实现 public static void main(String[] args) {

2021-02-05 01:02:11 2352 6

原创 filezilla连接超时解决方法

在windows和虚拟机之间进行数据传输的时候,我们往往会用到FileZilla,但是如果没有设置好,可能会出现FileZilla连接失败的情况。一般出现这种情况主要还是设置上面出现问题。以下记录一次我连接失败到连接成功的经历,虽然我还不知道我这波操作后连接成功的原理是什么,但是好像误打误撞解决问题了,希望有大佬能够回答一波~出现问题:我打开虚拟机的网络,并查看了ip地址查看了ip地址得到ip:10.0.2.15设置站点管理,通过FileZillla建立连接3.点击连接,得到结果

2021-01-31 23:57:55 5610 5

原创 redhat修改镜像源(操作极简单版)

写在前面:本文仅供学习使用!!!在新安装的redhat系统中,如果希望yum install 常常会爆出如下错误yum安装时提示, “This system is not registered with an entitlement server. You can use subscription-manager to regist”那是因为该系统是商业系统,并未注册,所以官方源是没法用的,此时我们只能通过配置镜像源的方法来绕过官方源(本文使用的是阿里源)STEP1:下载CentOS-Base.

2021-01-31 18:52:09 5278 1

原创 Ubuntu下设置代理(命令行版)

方法一:如果只是想临时使用http代理,可以在使用apt-get之前于终端下输入:export http_proxy=“http://用户名:密码@代理IP:代理端口”(用户名,密码是虚机的用户名,密码),我之前就搞错了,插个眼~~方法二:(方法一的持久化)如果希望apt-get与其它应用程序都可以一直使用http代理,可以这样:在终端下编辑~/.bashrc文件:vim ~/.bashrc在文件末尾添加如下两句:export http_proxy=http://用户名:密码@代理地

2021-01-28 00:06:58 8095

原创 Ubuntu下Authentication failure解决方法

在Ubuntu下切换root账户时遇到的这个问题原因:我输入密码时,输入的当前账户的密码而不是root账户的密码。我之前从来没有登陆过root账户,不知道密码。解决办法如下:输入命令行1.sudo passwd root2.输入当前账户密码3.输root账户密码4.重复输入root账户密码此时成功切换到root账户~...

2021-01-27 20:12:35 602

转载 Vagrant-共享文件夹共享(virtulbox模式共享报错解决)

1、初始化虚拟机配置目录下出现Vagrantfile文件vagrant init cent2、新增box并查看是否添加成功vagrant box add cent cent.boxvagrant box list3、修改Vagrantfile配置文件(第一个路径:物理机目录,可以是绝对地址或相对地址,相对地址是指相>对与vagrant配置文件所在目录)(第二个路径:挂载到虚拟机上的目录地址,没有当前目录则创建config.vm.synced_folder "E:/WW

2021-01-25 16:56:57 405

原创 [Errno 12] Timeout on https://download.docker.com/linux/centos/7/x86_64/stable/Packages解决方法

问题描述:在使用yum命令安装指定版本docker时报如下错误: https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.3.ce-3.el7.x86_64.rpm: [Errno 12] Timeout on https://download.docker.com/linux/cento...

2021-01-22 17:34:46 1206 2

原创 There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox.错误

环境搭建详见Vagrant环境搭建及基本使用文章在vagrant搭建环境的时候遇到了一个错误,我在vagrant up的时候出现了一个错误There was an error while executing `VBoxManage`, a CLI used by Vagrantfor controlling VirtualBox. The command and stderr is shown below._Command: ["startvm" , "1eebb5c1-fba9-4940-bce

2021-01-21 16:48:13 9926 3

原创 Vagrant环境搭建及基本使用

Vagrant使用一、安装软件安装Vanrant在 Vagant 网站下载最新的版本,根据自己的操作系统选择对应的版本下载即可。注意,Vagrant 是没有图形界面的,所以安装完成后也没有桌面快捷方式。具体使用方法,接下来会详细说明。Vagrant 的安装程序会自动把安装路径加入到 PATH 环境变量,所以,这时候可以通过命令行执行 vagrant -v 检查是否安装成功:C:\Users\Jonas\Desktop>vagrant -vVagrant 2.2.14安装 Virtua

2021-01-21 16:36:51 1467 1

原创 Resource punkt not found. Please use the NLTK Downloader to obtain the resources解决方法

问题如图当出现这个情况,是因为没有安装punkt但是按照提示import nltknltk.download()却发现这个时候可以选择手动下载,但是我尝试用官网地址,可能是因为墙的原因,没有办法解决,所以我就找了个离线安装包,安装后解决了这个问题。将文件解压到以下的任意文件夹中(我的环境是Linux)为了方便大家解决问题,我把下载下来的文件放在网盘,有需要的小伙伴可以自取(永久有效)网盘链接:https://pan.baidu.com/s/1A2KNaz-F7u8wCcKSJvndyw

2021-01-04 01:12:17 7034 14

原创 如何在IDEA中lambda表达式图标显示

如何在IDEA中lambda表达式图标显示在IDEA中写了Lambda表达式后,侧边显示栏没有,如何让他显示出来呢?第一步:setting第二步:Editor->Gutter Icons第三步:勾上Lambda,点击OK后即可显示了最终效果...

2020-12-23 12:29:25 3622 3

原创 匿名内部类有多种接口怎么用Lambda

Lambda的语法中对实现的接口的名字也简化省略了,那会不会有这么一种情况:一个类的构造器中可以接收多种接口,并且多个接口需要实现的抽象方法中传入的参数都一样,那用Lambda就很难区分到底实现的是哪个接口了。那该怎么办呢?我写了个测试了一下interface Animal{ void run();}interface Person{ void run();}//哺乳动物类class mammal { public mammal() { }

2020-12-22 23:54:48 508

原创 idea项目的根目录怎么查看?

idea项目的根目录怎么查看?问题:​ IO操作中,我常常因为懒惰,想写相对路径,如File file = new File("/config.properties");,但是我却找不到一个项目的根目录到底在哪,记录下我这次的寻找根目录的方法解决方法:传入根目录./到File类中通过输出File的方法**getAbsoluteFile()**找到根目录File file = new File("./");System.out.println(file.getAbsoluteFile(

2020-12-22 21:40:32 7715

原创 常用API

04 【常用API】内容Object类日期类日期格式化日历类SystemArrays正则表达式Math类BigInteger类BigDecimal类基本类型包装类目标 能够说出Object类的特点 能够重写Object类的toString方法 能够重写Object类的equals方法 能够使用将日期格式化为字符串的方法 能够使用将字符串转换成日期的方法 能够使用日历对象的方法 能够使用Math类的方法 能够使用System类获取当前系统毫秒值 能够说出数组冒

2020-11-14 14:43:01 301

原创 IDEA中出现java file outside of source root怎么办

有时候打开idea会出现文件名左下角有个红圈的情况,下图其实只要稍微修改下就可以跑起来了step1:点击文件下的项目结构step2:点击左边模块step3:右键点击文件夹,将这里的“排除的”点成“源”就可以了step4:确定即可这就是最终可以运行的图了~~...

2020-10-12 20:37:35 38846 11

原创 Eclipse的自动补全代码功能

eclipse的初始自动补全功能并不好,每次需要alt+/才能显示出来,刚开始写的时候感觉还行,但人都是懒得,肯定希望写的时候就出现提示信息,哈哈。我发现可以通过修改设置达到目的这个是没修改前的配置,我们只有通过点才能有提示,我修改了两处地方,就可以达到自动提示效果1.该处需要修改成其实就是将.后面加上abdefghijlmnopqrstuvwxyz等26个字母即可(eclipse不区分大小写,不用大写ABCD等)2.这个地方需要点上勾勾,这个作用是避免你输入空格的时候,编译器给你填入你不想要的

2020-08-18 00:11:38 338

原创 JAVA与C中一维数组的类似之处与区别

因为我写C比较多,在学java的时候总是会不自觉想去了解了解和C关联,毕竟底层实现是差不多的在java中,基本数据类型不需要new而直接定义,而引用数据类型在定义实例时需要new实例对象。1、不同于String类,String由于实现了常量池 所以new 和不new 有区别:new的话,引用变量指向堆区。不new的话,引用变量指向常量池。下面是来自网络的内存结构图2、对于数组的定义,初始化时用new与不用new 没区别,只是两种方式罢了,因为数组是引用数据类型,建立对象时,无论用不用new,数组实

2020-08-07 20:48:24 317

转载 Notepad++运行JAVA代码的配置

前言:我在学习的时候发现notepad++的编译运行比较麻烦,所以自己按照该文章配置了,亲测有效,转载以备不时之需Notepad++运行JAVA有两种方法:第一种:调用cmd终端命令执行。第二种:安装NppExec插件。版本:npp.7.5.7.bin.x64 前提:已配置JAVA环境变量。第一种方法:工具栏->运行 点击后选择运行1、在运行窗口中输入:cmd /k javac "$(FULL_CURRENT_PATH)" & echo 编译成功!..

2020-08-03 17:11:51 930

原创 socket技术详解(看清socket编程)

socket编程是网络常用的编程,我们通过在网络中创建socket关键字来实现网络间的通信,通过收集大量的资料,通过这一章节,充分的了解socket编程,文章用引用了大量大神的分析,加上自己的理解,做个总结性的文章1:socket大致介绍 socket编程是一门技术,它主要是在网络通信中经常用到 既然是一门技术,由于现在是面向对象的编程,一些计算机行业的大神通过抽象的理念,在现实中通过反复的理论或者实际的推导,提出了抽象的一些通信协议,基于tcp/ip协议,提出大致的构...

2020-07-31 15:55:57 321

原创 如何高效敲代码?

经常有读者对学习编程有一种困惑:书/视频都看懂了,就是不会自己写。这也是当初行哥学编程时非常困扰的一个问题,之后不会写就对着敲代码 如果照着敲代码,感觉自己就像一个无情的打字机 如果不照着敲代码,感觉学完之后索然无味,看完视频教程不断质疑自己刚才都学了啥? 在这种纠结过程中耗费了大量时间,学习效果却不是很显著经过几年的洗礼,稍微分享一下行哥的回答:首先给个结论:敲代码肯定有效果,但是要区分一下怎么敲代码 如果只是照着别人的代码逐字敲进去,也只能练习手速,在大脑中暂时留下

2020-07-29 23:32:54 5272 2

空空如也

空空如也

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

TA关注的人

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