自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记录,记录,记录

坚持,再坚持

  • 博客(24)
  • 收藏
  • 关注

原创 单例模式

如果让你写一个单例模式的案例,你会怎么写,在我的印象中单例模式嘛,本意就是在这个容器中,只能存在一个类的实例,然后我会这么写:public class SingleTest { private static final SingleTest single = new SingleTest(); private SingleTest(){} public SingleTest instance(){ return single; }}

2021-01-31 21:43:08 65

原创 ModelMapper工具类的简单实用

通常,我们需要将数据库查询出来的数据封装到XXXDTO中再传给前端,如果是我们自己来进行封装的话,我们就需要用到繁杂的getter/setter来进行操作,不过有现成的轮子为啥不用呢?ModelMapper,就是这么一个工具,下面我们就来看下它的简单实用。在进行演示之前,先添上工具的官网:点击这里进入ModelMapper官网好,现在开始演示:由于它是一个额外的轮子,第一步,我们需要导入该jar包<dependency> <groupId>org.modelmapper&

2021-01-31 21:28:03 641

原创 Java-11:IO流

关于Java IO,我会快速想到如下几点:字节流、字符流相应的接口及实现类字节流与字符流之间的转换装饰器模式字节流和字符流的区别就是如何去看待一段二进制序列,我们都知道计算机中的最小单位是比特(bit),一个字节 = 8bit,一个字符 = 2字节 = 16bit(编码为utf-8)。一段二进制序列过来,如何我们不告诉它怎么解读它,你让它怎么办,随机选择?IO流就是对数据传输的抽象,IO流的分为输入流和输出流。输入流输出流字节流InputStreamOutputSt

2021-01-26 21:32:18 141

原创 Java-10:ConcurrentHashMap

看一个类先来看它的类声明,JDK在ConcurrentHashMap类上的申明写到:ConcurrentHashMap是一个线程安全的,支持高性能、高并发,其功能与HashTable类似在进行访问操作时并不需要锁着整个表,即使是有其他线程在进行更新或者修改操作1、继承结构在看继承继承结构的时候,要点就是接口通常为抽象方法,Abstract类通常实现常用类,然后实现一些普通类。Map接口:定义通用的map方法AbstracMap接口:实现一些常用的map方法Serializable接口:标

2021-01-25 21:38:08 88

原创 Java-09:Hashtable、HashMap、TreeMap有什么不同?

惯例,看类对比,先来看下继承结构关系1.继承图谱Map接口表示这个集合是一个键值映射的数据结构,Map不能包含重复的Key,每个键只能映射到一个值。Map提供了三种遍历集合的方法,分别是entrySet(),KeySet(),values()来得到Map中的数据,除此之外,还提供了很多操作Map的方法,如put(),remove(),get(Object)等。Dictionary抽象类:Map接口替代了它AbstractMap抽象类:实现Map接口的常用方法SortMap接口:提供排序的基本方法

2021-01-23 23:29:36 157

原创 Java-08:Vector、ArrayList、LinkedList有何区别?

三个集合都是我们常用的数据集合,在看它们之间的区别前,我们先来看看它们的继承结构。1、继承结构图Collection接口是层次结构中的根接口,构成Collection的单元称为元素。Collection接口提供了添加元素,删除元素,管理数据的方法 。List接口表示这是一个元素有序,可以重复,可以为null的集合,那它又是凭借什么实现有序的。List数据结构在内存中会开辟一块连续的空间,然后将内存地址与索引对应。Queue接口在Collection基础上添加操作队列方法,Deque接口是一个双向队

2021-01-20 23:01:39 126

原创 Java-07:int和Integer有什么区别?

7、int 和 Integer有什么区别?1、数据类型iint是基本数据类型,保存在栈中;Integer是引用类型,在堆中申请内存存放数据,在栈里申明引用指向堆中的内存地址。基本数据类型在栈中怎么存储?int a = 10;int b = 10;JVM有一个局部变量表用来保存引用,如上,建立引用a和引用b,再申请两块内存来存放数据,由引用a和引用b指向它们的内存地址。在Java中, "=="符号是用于比较引用的值,这话没毛病。那引用类型在堆中怎么存储?Java普通对象在HotSpot虚拟机

2021-01-19 22:22:34 272

原创 Java-06:动态代理

6、动态代理谈及动态代理,难免避不开Java的反射技术。Java的反射机制:在程序运行时通过加载已知的class,从而可以操作类或者属性和方法。Java是先编译再运行的语言,Java源文件都是要先经过编译生成class文件,当程序需要动态加载某些类时,它就可以通过反射机制来创建对象并调用方法。Java 反射api的使用方法在这里不做赘述,不懂的同学可以移驾这里→反射api的使用说完反射机制,我们来说说动态代理在常用框架Spring中支持模式:JDK Proxy 或者 cglib,不过先来看下动态代

2021-01-18 23:21:40 128 1

原创 Java-05:理解 Java 的字符串,String、StringBuffer、StringBuilder 有什么区别?

问题: 理解 Java 的字符串,String、StringBuffer、StringBuilder 有什么区别?String类由final关键字修饰,表示不可继承;存放数据的数据结构是char[],也是final修饰,同时String类中也没有提供可以直接操作char[]的方法,所以每次使用拼接、裁剪字符串等方法,都会生成一个新的String对象。又由于字符串的操作频繁,对应用性能会有明显影响。StringBuffer就是用来解决由于操作频繁生成太多的STtring对象的问题,它通过append或者

2021-01-17 23:38:03 85

原创 Mybatis自定义SQL的关系映射、分页、排序

目的: 记录数据库表与实体对象之间不同的映射关系如何用mybatis的自定义sql和结果返回集处理。1、三种对象映射关系1.1 一对一一个人对应一个身份证,一位同学对应一个班级,每个房间都有自己的房间号,当一个事物它对应另一个事物是唯一的,那么它们之间的关系就是一对一的。这里我演示的案例是,一个学生有着一位老师老师基础信息:学生详细信息:如果说,我们需要将两个表一起查出来,我们可以这么做:问题: 如果对象的列重复了,必须要使用到别名1、先定义实体结构,也就是我们返结果的实体类publ

2021-01-17 20:49:04 687

原创 Java-04: 强引用、软引用、弱引用、幻象引用有什么区别?

问题: 强引用、软引用、弱引用、幻象引用有什么区别?先说下区别: 不同的引用类型表示的是对象不同的可达性状态以及对垃圾收集的影响。在Java语言中,除了基本数据类型外,其他的都是指向各类对象的对象引用;Java中根据其生命周期的长短,将引用分为4类。1. 强引用我们平常编写代码Object obj = new Object()中的obj就是强引用。通过关键字new创建的对象所关联的引用就是强引用。 当JVM内存空间不足,JVM宁愿抛出OutOfMemoryError运行时错误(OOM),使程序异常终

2021-01-16 22:27:31 83

原创 Java-03:谈谈 final、finally、 finalize 有什么不同?

问题: 谈谈 final、finally、 finalize 有什么不同?final: Java关键字,可以用来修饰类,成员变量,方法,参数。修饰类:表示该类不可被继承成员变量:引用类型:引用指向的内存地址不可改变,但引用内部的数值是可以改变;基本类型:数值不可变方法:表示该方法不可被重写参数:基本类型:表示该参数在方法中不能被改变;引用类型:不能被赋值,引用不能去指向其他地址。finally: 出现在异常处理,通常用法为try…finally或者try…catch…finally,fina

2021-01-16 14:42:02 159

原创 Java-02:Exception 和 Error有什么不同

问题:对比 Exception 和 Error、运行时异常与一般异常有什么区别?1、Exception和ErrorJava语言在设计之初就提供相对完善的异常处理机制。在Java中,只有Throwable类型的实例才有可能被捕获或者抛出。其中Exception和Error都继承了Throwable类。Exception表示程序在正常运行下,可能会出现的异常情况,可以并且应该被捕获,使程序恢复正常运行。Error表示程序在正常运行下,不太可能会出现的情况,绝大部分的Error会导致程序处于非正常情况,无

2021-01-14 21:07:12 99

原创 HTTP服务器、Servlet容器、Tomcat

这个Servlet不陌生吧,但是我从来不知道它到底是个啥,直到某天,看了这个→从 Servlet 入手带你看架构和框架设计的套路。public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doG

2021-01-13 21:27:49 235 2

原创 Mybatis-plus的分页插件

案例建立在已使用mybatis-plus的项目上,下面来看吧!1、添加插件通过一个配置,来加入分页插件@Configurationpublic class MybatisConfig { @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor();

2021-01-12 23:35:09 225

原创 如何优雅地包装controller的返回结果

现在项目情况都是前后端分离,后端人员为了能让前端人员能够看懂返回结果,同时还需要返回结果的格式一致,所以就有了固定的结果返回体。Controller控制器返回给前端常见的的格式有三种:自定义返回体Result自定义MapResponseEntity今天,我们用到的是第一种情况吗,自定义返回体Result。1、自定义返回体Result通常情况下,需要前端需要的信息如下,JSON格式:一般会存在3个Key:code,msg,data{ code: 1, msg: "",

2021-01-12 00:53:18 4093 3

原创 Myabtis-plus中IService接口的使用

Mybatis-plus的IService接口:IService接口解释,我们可以看到IService接口就是有一大堆方法接口。IService的使用:IService的使用需要另外两个接口的配合:baseMapper和ServiceImpl第一步:实现basemapper接口public interface AdminMapper extends BaseMapper<Admin> {}第二步:编写service类public interface AdminService ex

2021-01-08 21:59:25 15240 2

原创 java - 动态代理

1、代理模式代理模式是23中设计模式中的一种,它是为了在目标对象的基础上增加额外的功能,也就是扩展对象的功能。在编译期阶段否能决定最终的执行方法可以把代理模式分为动态代理和静态代理。2、静态代理我们目标是一个人在跑步,现在我们在不该原来的代码基础上,增加套马甲的功能。定义一个接口:public interface PersonDao { void run();}实现一个基础类:public class Person implements PersonDao{ @Overr

2021-01-08 21:32:47 80

原创 Mybatis-plus该这么用?

MP 全称 Mybatis-Plus ,套用官方的解释便是成为 MyBatis 最好的搭档。它是在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。官网入口1、基础启动案例导包 <!--Mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-jav

2021-01-08 01:01:03 393

原创 MySQL-41:自增主键用完怎么办

41.1 表定义自增id表定义的自增值达到上限后的逻辑是:再申请下一个 id 时,得到的值保持不变。可以用下面的sql语句验证:create table t( id int unsigned auto_increment primary key) auto_increment=4294967295;insert into t values(null);insert into t values(null);//Duplicate entry '4294967295' for key

2021-01-06 21:42:35 191 1

原创 MySQL-40:表的复制

常见的复制方法有三种: mysqldump 方法,CSV 文件 , 物理拷贝方法 。40.1 mysqldump使用mysqldump命令将数据导出成一组insert语句,也就是sql文件。命令如下:mysqldump -h$host -P$port -u$user --add-locks=0 --no-create-info --single-transaction --set-gtid-purged=OFF db1 t --where="a>900" --result-file=/cli

2021-01-04 23:42:03 95

原创 MySQL-39:insert语句常见问题

39.1 insert…select 语句建表如下: CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) DEFAULT NULL, `d` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `c` (`c`) ) ENGINE=InnoDB; insert into t

2021-01-03 22:02:31 188 1

原创 Java-注解

1、注解的基础Java注解的基础为4个元注解:Retention,Target,Inherited,Documented。Retention: 表明注解可以存在到的周期,有三个选项:source(源码),class(字节码),runtime(运行时),默认为class,表示从class文件到JVM中运行时,该注解会被丢弃。public @interface Retention { RetentionPolicy value();}public enum RetentionPolicy {

2021-01-03 20:51:41 90

原创 MySQL-38:自增主键

使用自增主键的目的: 可以让数据插入数据页时尽量保持按递增顺序插入,使得数据页数据更加紧凑,避免页分裂。我们会讨论一下问题:自增主键如何保存?我们先来建个表:create table t3( id int(11) not null auto_increment PRIMARY key, a int(11) not null, b int(11) not null, UNIQUE key a(a))ENGINE = INNODB38.1 自增主键如何保存表的结构定义语句保存在.fm的

2021-01-02 01:16:21 197

空空如也

空空如也

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

TA关注的人

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