- 博客(33)
- 收藏
- 关注
原创 优雅的处理Lambda异常
Lambda中的异常处理在Lambda中使用try-catch处理是比较丑陋的,那么如何优雅的处理异常昵?我们可以采取将异常包装的方式进行处理,下面将以Function函数为例新建一个函数接口,该接口抛出异常@FunctionalInterfacepublic interface CheckExceptionFunction<T, R> { R apply(T t) throws Exception;}新建一个函数工具类,方便调用public class L
2021-09-08 18:39:38
637
原创 Java中的SPI
什么是SPISPI全称是Service Provider Interface,是Java提供的一套用来被第三方实现或扩展的API,可以用来启用框架的扩展或组件的替换。SPI的应用SPI有很多的使用场景,比如:JDBC中的使用,各种数据库的驱动实现SLF4J中的使用,加载不同的日志实现Spring中的使用,对servlet的ServletContainerInitializer的实现……SPI的实战创建一个接口public interface DataBaseDriver {
2021-07-07 18:51:48
394
原创 创建线程的方式
1、继承Thread类在项目中不建议使用这种方式创建线程,太消耗系统资源public class Test1 { public static void main(String[] args) { new MyThread().start(); }}class MyThread extends Thread { @Override public void run() { // do some thing…… }}2、实
2021-05-19 23:31:59
189
原创 DBeaver显示系统数据库不全
问题 用DBeaver连接MySQL之后,界面上系统库显示不全,只显示了一个sys库,但是用命令show databases进行查看显示完全解决右击连接名点击Connection view选中显示系统对象
2021-05-06 22:09:01
14849
8
原创 三个线程循环交替执行
比如A线程输出1,B线程输出2,C线程输出3,A线程输出4,B线程输出5,C线程输出6……我们可以用synchronized和wait和notify来实现,要实现顺序执行,那么下一个线程的开始应该是上一个线程给的信号,这样才能保证顺序执行,代码如下public static void main(String[] args) throws InterruptedException { Object lockA = new Object(); Object lo
2021-04-25 18:10:34
1508
原创 JVM(一)初识
JVM是Java Virtual Machine(Java虚拟机)的缩写,是Java平台的基石,是一种抽象的计算机,像真正的计算机一样,它具有指令集并在运行时操作各种内存区域。Java之所以可以Write once, run everywhere,就是因为Java语言使用Java虚拟机屏蔽了与具体平台的相关信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
2021-04-21 02:26:48
171
原创 Deepin更改默认jdk
下载需要的jdk,并安装配置好运行:sudo update-alternatives --display java我们需要关注链接java指向和优先级运行:sudo update-alternatives --install /usr/bin/java java /opt/software/jdk1.8.0_271/bin/java 1100这里的 /usr/bin/java 就是上面的链接java指向,/opt/software/jdk1.8.0_271/bin/java是自己的jd..
2021-04-06 23:59:38
344
原创 上传图片报错java.lang.IllegalArgumentException
用户上传图片的时候报了java.lang.IllegalArgumentException的错误,找了大量的图片进行问题复现,但是都正确上传了,唯独用户提供的这张图片不可以,最后经过排查是这个图片的问题,解决方法是:将这个图片用画图工具打开,然后“另存为”,再上传这个另存为的图片就可以了。...
2019-12-27 16:22:03
1646
原创 拦截器获取request的值之后,Controller拿不到值
原因:在Spring中request的只能被获取一次,拦截器获取之后就会导致Controller拿不到值解决方法:将request的值进行备份,请求到达Controller的时候就会拿到这个值创建一个自己的HttpServletRequestWrapper并继承servlet的HttpServletRequestWrapper,为了备份request中的 值。 public c...
2019-11-20 17:49:32
1779
原创 ajaxfileupload返回的json数据带pre标签
有两种解决方法:第一种:后台直接返回text/html类型的数据,ajaxfileupload的js会根据dataType的类型转换,当写成json时,会走json类型的这个方法进行格式化成json。第二种:后台不动,还是返回application/json的数据,修改js源码里面的uploadHttpData中判断json里面的代码改为:data = jQuery.pars...
2019-09-18 14:54:25
514
原创 Deepin安装Wireshark
更新软件:sudo apt update 安装:sudo apt install wireshark(安装过程中选择确定) 安装玩之后非Root用户是没有权限的,所以需要给权限 sudo gpasswd -a USERNAME wireshark(USERNAME为自己的用户名,将这个用户添加到wireshark组,需要重启) sudo chgrp wireshark /usr/bin/d...
2019-07-10 23:35:50
1885
原创 MySQL出现Lost connection to MySQL server during query错误原因
原因一:MySQL的服务宕了进mysql的控制台,输入show global status like 'uptime',如果显示数字很大,说明服务很长时间没有重启过,那么该原因就可以否决。原因二:MySQL的连接超时进入mysql控制台,输入show global variables like '%wait_timeout',看看显示的时间判断一下是否超时,如果超时,那么将改时间改大...
2019-06-27 17:32:45
8279
原创 Deepin安装VirtualBox扩展包
查看本机的VirtualBox版本 下载对应的扩展包点这里 打开全局设定——扩展,进行安装 如果安装过程出现与gksu-run-helper通信失败的错误,解决方法如下:终端输入:gksu-properties 将su改为sudo 重新安装即可成功...
2019-05-30 20:57:02
2556
原创 写入MySQL报错超出 max_allowed_packet 的问题
查看max_allowed_packet的大小 show variables like '%max_allowed_pack%' 将大小改掉就行了 set GLOBAL max_allowed_packet = XXXX 关闭连接重新打开就可以了
2019-04-11 10:27:01
564
原创 Hyper-V中安装CentOS7设置静态ip并且可以连接外网
在Hyper-V中安装好CentOS7,安装的时候配置网络选择Hyper-V默认的交换机(具体安装方法自行查找,这里不再进行说明) 对Hyper-V添加一个内部交换机,名称自定义。添加完之后到电脑的网络连接里面对这个交换机设置静态ip。 将虚拟机关闭,选择这台虚拟机进行设置,选择添加硬件——>网络适配器——>添加,然后选择新添加的网络适配器选择刚才新建的交换机 ...
2019-04-09 22:49:00
6449
2
原创 设计模式——委派模式
一、介绍委派模式不属于 23 种设计模式之一,是面向对象设计模式中常用的一种模式,比如SpringMVC的DispatcherServlet就是典型的委派模式。这种模式的原理为类 B 和类 A 是两个互相没有任何关系的类,B 具有和 A 一模一样的方法和属性;并且调用 B 中的方法,属性就是调用 A 中同名的方法和属性。B 好像就是一个受 A 授权委托的中介。第三方的代码不需要知道 A 的存在...
2018-08-23 22:47:30
346
原创 设计模式——模板模式
一、介绍在模板模式中,一个抽象类公开定义了执行它的方法的方式/模式,让子类不改变算法架构的情况下,重新定义算法中的某些步骤。UML类图如下:二、何时使用有一些通用的方法,但是每个子类都需要重写 的时候三、实现我们以造汽车为例,比如每个汽车都有鸣笛、启动、停止……这些功能,我们可以将这些动能抽象出来,然后子类各自实现,但是他们的运行顺序时不能变的,启动-->鸣笛--...
2018-08-20 22:11:44
131
原创 设计模式——策略模式
一、介绍策略模式指对象有某个行为,在不同的场景中,有不同的实现算法。它有如下角色:抽象的策略角色:通常是一个接口具体的策略角色:抽象的策略角色实现环境角色:持有策略类的引用,为了给客户端使用下面是它的UML类图:二、实现比如当我们在网上买东西最后需要支付的时候,需要选择支付方式,这里我们就以它为例。public interface Payment { ...
2018-08-16 23:55:13
233
原创 设计模式——代理模式
一、介绍对其他对象提供一种代理以控制对这个对象的访问。它有如下角色:Subject:一个抽象的角色,是一个接口。RealSubject:真是对象,是对接口的实现。Proxy:代理对象,里面持有被代理对象(RealSubject)的引用,所以操作代理对象时从而可以操作真实对象,并且在操作真实对象之前可以可以加一些其他的操作,比如对真实对象的权限访问等等。下面是代理模式的UML...
2018-08-09 01:02:45
143
原创 Linux下安装Redis
1、下载Redis下载页面2、安装2.1、安装前准备 安装之前确认已经安装了jemalloc、gcc、gcc-c++、tcl,如果没有安装请先安装。 安装方法:yum install -y gcc gcc-c++ tcl jemalloc需要到github上面下载安装,解压之后INSTALL.md这个文件是安装说明,请自行参考安装。 下载...
2018-07-30 18:18:25
129
原创 设计模式——原型模式
一、介绍 原型模式适用于创建重复对象,同时也能保证性能。该模式是创建对象的最佳方式。二、实现 需要创建的对象要实现Cloneable接口,并且重写clone方法。三、实例public class Student implements Cloneable{ private String name; private Integer age; private Int...
2018-07-11 00:18:55
133
原创 设计模式——单例模式
一、介绍 单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。二、特点 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。三、优点 1、在内存中只有一个实例,节省内存。 2、避免了频繁的创建和销毁,提高...
2018-07-06 01:12:03
169
原创 CentOS下用rpm安装mysql
1、下载linux版本的MySQL 请根据自己系统选择对应版本2、将下载的文件进行解压3、MySql的安装 因为CentOs7默认集成了mariadb,所以需要先将该包卸载掉 输入:rpm -qa|grep mariadb 将会看见mariadb 的包 在输入:...
2018-06-19 23:58:48
1099
1
原创 CentOS7打开、关闭端口
CentOS7使用的是firewall防火墙,不再是原来的iptables1:查看firewall防火墙状态 firewall-cmd --state 或者 systemctl status firewalld2:打开防火墙 systemctl start firewalld3:关闭防火墙 systemctl stop fire...
2018-05-31 22:50:19
30998
2
原创 Linux下安装jdk
1、下载Linux版本jdk 点击此处下载jdk1.8.0_1622、安装 将jdk解压到/usr/java目录下,确保该目录存在,如果不存在要先创建该目录, 创建目录: 输入:mkdir /usr/java 输入:cd /usr 输入:ls 以上操作完成就看见/usr...
2018-04-11 22:13:42
171
原创 Linux常用命令
1、tar命令 语法: tar(选项)(参数) 选项: -c: 创建新的压缩文件 -C<目的目录>: 将压缩文件解压到指定目录可以使用这个选项 -x: ...
2018-04-10 01:18:40
171
原创 设计模式——工厂模式
一、介绍工厂模式属于创建型模式,它是为创建对象提供接口的,提供了一种创建对象的最佳方式,在创建对象时不会对客户端暴露创建逻辑,并且通过使用一个共同的接口来指向新创建的对象。二、工厂模式的分类 1:简单工厂模式 简单工厂模式又叫静态工厂方法模式,通过专门定义一个类来负责创建其他类的实例。 在该模式中有三个角色: 工厂角色:该角...
2018-03-28 00:11:44
221
原创 使用FormData上传文件
1.使用form表单accept属性的介绍点这里<form id="fileForm"> <p>普通文本框:<input type="text" name="textInput"></p> <!-- multiple表示可以选择多个文件 --> <input type="file&
2017-11-30 00:28:31
1376
原创 HTML input标签的 accept 属性
定义和用法accept 属性只能与 <input type="file"> 配合使用。它规定能够通过文件上传进行提交的文件类型。提示:请避免使用该属性。永远不要相信用户的输入,应该在服务器端验证文件格式。语法<input accept="value">属性值值描述MIME_type用逗号隔开的 MIME 类型列表。比如该文件框只接受 word文档<input type...
2017-11-23 23:31:19
4411
原创 mysql压缩版的安装
1.环境变量的添加(1)将mysql压缩包解压到某个盘符的根目录下(2)添加MYSQL_HOME环境变量,如图所示并且在path变量中追加新值,如下图所示(切记是追加不是覆盖)2.msyql安装(1)在mysql根目录中将my-default.ini文件复制之后改名为 my.ini,并取消注释(#代表注释),如果没有该文件请自行创建my.ini文件,写上如下内容:(标红的地方根据自己的安装目录填写...
2017-08-29 21:25:08
378
原创 servlet访问路径的3中配置方式
1:精确配置,例如:/abc只有/abc可以访问到此servlet,此servlet只处理这一个请求。2:通配符:/*所有路径都可以访问此servlet,此servlet处理所有请求。3:后缀,例如:*.do只要以do为后缀的路径都可以访问此servlet,此servlet可以处理多个请求。...
2017-03-16 23:07:09
437
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人