自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 为什么建议不要做联表查询?

相比而言,拆分成单表查询+代码上组装,业务逻辑更清晰,优化更方便,单个表的索引设计上也更简单。1、单表查询更利于后续的维护。在实际开发场景中,在代码初步开发阶段(如果摊上一个不太靠谱的产品),业务发生变动,某张表的结构发生变动,很可能整个join查询都变得不可用,复杂的关联查询,在修改时,基本等于推倒重来。2、代码可复用性高这个不用多说,join联表的SQL,基本不太可能被复用,但是拆分后的单表查询,比如上面例子中,我查询出tab数据,任何地方组装需要tab数据,我都不需要再次做相关查询,直接使用。

2023-02-23 14:07:56 1010 1

原创 为什么要移除数据库物理外键?

数据完整性几乎都是业务的要求,理应由业务部分负责维护,而不是依赖数据库访问量较大的web应用,以及有一定规模的企业应用,都关注伸缩性和性能问题,各种形式的垂直、水平切分运用越来越多,外键、触发器、存储过程之类的基本属禁区。eg: 在海量的数据库中想都不要去想外键,试想,一个程序每天要insert数百万条记录,当存在外键约束的时候,每次要去扫描此记录是否合格,一般还不止一个 字段有外键,这样扫描的数量是成级数的增长!在最早接触数据库的时候,会接触数据库三范式,在表和表之间有关系的时候,需要使用外键添加约束。

2023-02-23 14:05:36 476

原创 MySQL-redo log和undo log

MySQL中是如何实现事务提交和回滚的?为了保证数据的持久性,数据库在执行SQL操作数据之前会先记录redo log和undo logredo log是重做日志,通常是物理日志,记录的是物理数据页的修改,它用来恢复提交后的物理数据页undo log是回滚日志,用来回滚行记录到某个版本,undo log一般是逻辑日志,根据行的数据变化进行记录redo/undo log都是写先写到日志缓冲区,再通过缓冲区写到磁盘日志文件中进行持久化保存undo日志还有一个用途就是用来控制数据的多版本(MVCC)

2023-02-23 14:01:38 399

原创 JVM记录

1、方法区:也称“永久代”,“非堆”,用于储存虚拟机加载的类信息,常量,静态变量,是各个线程共享的内存区域。运行时常量池:方法区的一部分,Class文件中除了有类的版本,字段,方法,接口等描述信息外,还有一项信息就是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中。2、虚拟机栈:描述的是java方法执行的内存模型,每个方法被执行的时候,都会创建一个“栈帧”用于存储局部变量(包括参数),操作栈,方法出口等信息。

2023-02-23 14:00:51 334

原创 Java常用数据结构

Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类。一、几个常用类的区别1.ArrayList: 元素单个,效率高,多用于查询2.Vector: 元素单个,线程安全,多用于查询3.LinkedList:元素单个,多用于插入和删除4.HashMap: 元素成对,元素可为空5.HashTable: 元素成对,线程安全,元素不可为空。

2023-02-23 13:53:24 409

原创 关于Java中的String,String Buffer, String Builder

可以看到,String类是final类,一旦赋值就不可改变,成员方法都默认为final方法。并且String类是通过char数组来保存字符串的。观察以下String类方法的实现的源代码,可以看出,String的操作都不是在原有的字符串上进行的,而是重新生成了一个新的字符串对象。在这些操作后,原来的对象都没有改变,得出的结果属于新的对象。因此,String对象创建之后,此对象中存储的字符串内容不再被改变,String类对象有编辑的功能,但是编辑功能是通过创建一个新的对象来实现的,而不是对原有对象进行修改。

2023-02-23 13:49:37 199

原创 Go语言学习资料推荐

the-way-to-gothe-way-to-go中文翻译版,内部含有大量代码示例可以直接下载build-web-application-with-golangbuild-web-application-with-golanggo语言web开发指南

2021-11-01 15:54:44 114

原创 Go语言成长之路(二)-内建容器(多图文示例)

这里写Go语言成长之路(二)-内建容器1、数组1.1、一维数组1.2、多维数组1.3、数组参数传递2、Slice-切片2.1、切片定义2.2、切片初始化2.3、切片常用操作3、Map-集合3.1、Map创建3.2、Map赋值3.3、Map获取3.4、Map遍历3.5、Map删除1、数组1.1、一维数组一维数组的声明方式:var variable_name [SIZE] variable_type例如:var b [5]int数组初始化:var b = [5]int{1000, 2, 3

2021-10-31 20:38:55 193 1

原创 Go语言成长之路(一)-Go语言基础语法(多图文示例)

1、变量定义Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。声明变量的一般形式是使用 var 关键字:2、变量类型定义3、指针定义4、常量定义5、枚举定义6、条件语句7、循环语句8、函数...

2021-10-31 11:39:38 368

原创 Go语言成长之路-Go语言结构

  我们以一个HelloWorld代码作为实例来讲解Go 语言的基础组成有以下几个部分:包声明引入包函数变量语句 & 表达式注释如上图所示package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。import “fmt” 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),

2021-10-30 12:45:22 129

原创 GO语言学习-启动

Hello World!今天搭建好了环境,写了一个Hello World,纪念一下自己学习Go语言的起点。之后会按照计划学习这门语言。

2021-10-29 22:54:20 86

原创 《火星人日记》——今天才知道TODO的用法

今天明白了TODO的用法打开IDEA,在代码中加入注释,注释中的内容以TODO开头,提示自己下一步需要做什么然后打开IDEA底部栏的TODO就可以查找到添加了TODO注释的地方了作用相当于一个便利贴,提醒一下自己还有什么需要做。...

2021-10-15 10:48:52 105

转载 使用P3C进行项目代码规范管理

存在的问题研发团队的代码质量管理,是项目管理的重要环节之一。项目的代码质量将会影响到项目的研发、测试、维护以及运营等众多领域。中小项目团队在过去的代码质量管理中,往往存在以下几个问题:1、编写者水平经验有限。中小公司往往缺少技术专家,所以想要撰写完整全面的代码规范规约比较困难。2、文档更新维护成本高。由于代码规范也是随着技术变革需要与时俱进的,所以对于中小公司来说维护成本比较大。3、程序员容易疏忽。在编码时由于专注业务逻辑的实现,而疏忽了规范的遵守。4、代码质量监管费力。管理人员排查代码规范问

2021-06-15 09:39:19 445

原创 XML Parser Error on line 17: 对实体 “characterEncoding“ 的引用必须以 ‘;‘ 分隔符结尾

场景:使用Mybatis Plus Generator进行生成的时候,配置generatorConfig.xml后运行出错问题:XML Parser Error on line 17: 对实体 “characterEncoding” 的引用必须以 ‘;’ 分隔符结尾。原因:是数据库连接配置的connectionURL不能直接使用&号错误示范:<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"

2021-06-13 17:42:34 459 1

原创 MyBatis-Plus学习总结

什么是MyBatis-Plus?MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus的有点有哪些?无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅

2021-06-11 16:42:46 263 2

转载 Mybatis Plus 查询方法记录

@Testpublic void contextLoads() {}@Autowiredprivate UserInfoMapper userInfoMapper;/** * 普通查询 */@Testpublic void selectById() { UserInfo userInfo = userInfoMapper.selectById(123); System.out.println(userInfo);}/** * 批量查询 */@Testpub

2021-06-10 20:53:54 1052

原创 使用Super CSV 解析上传csv文件后出现乱码

问题:在项目中使用了Super CSV来将上传的csv文件信息转化为实体类信息,但是中文部分出现了乱码。原因:一般的CSV是用UTF-8编码的,而EXCEL是ANSI编码,由于这一份csv文件是用Excel编辑的,因此由于编码不一致而导致出现乱码。用记事本打开csv文件,可以看到该文件是ANSI编码解决方式用记事本打开要上传的csv文件,点击另存为,并且重新设置编码为UTF-8,将保存类型设置为txt,然后再上传。然后再上传,得到的解析结果没有出现乱码。问题暂时解决。...

2021-06-09 09:28:50 429

原创 当IDEA提示代码文件出现问题时如何快速定位?

当IDEA提示代码文件出现问题时如何快速定位?1、设置模式右键点击编辑区右上角的右上角的方框,可以在Go the high priority problems only 和 Go to next problem模式间切换。“Go the high priority problems only”的意思是在优先级较高的错误间切换,“Go to next problem”的意思是永远跳向下一个错误和警告,不管优先级的问题。开始定位可以按F2键进行错误的快速定位,可以按Shift+F2键进行警告的快

2021-06-08 10:15:14 2111

原创 关于Bigdecimal 的equals 和compare

关于Bigdecimal 的equals 和compare在比较两个Bigdecimal 的值是否相等时,我们有equals 和compare两个选择,那么这两种方式有什么不同吗?接下来看一下源码。 @Override public boolean equals(Object x) { if (!(x instanceof BigDecimal)) return false; BigDecimal xDec = (BigDecimal)

2021-06-08 09:39:22 384

转载 创建BigDecimal对象的时候,最好使用String作为参数

一、构造BigDecimalBigDecimal提供了丰富的构造函数,可以通过int、long、double、String等来构造一个BigDecimal对象。但是,使用double作为参数的构造函数,无法精确构造一个BigDecimal对象,需要自己指定一个上下文的环境,也就是指定精确位。BigDecimal bg = new BigDecimal(1.1);System.out.println(bg.toString()); 运行结果:1.100000000000000088817841.

2021-06-08 09:34:09 2790

原创 (学习笔记)关于SpringMVC中的Controller、Service、DAO的多线程问题

SpringMVC中Controller为什么能够处理并发访问?SpringMVC中用来处理http请求的Controller是基于Servlet实现的,Spring中绝大多数的类都是单例的,Servlet也是这样。Controller、Service、DAO都是默认单例模式既然Controller是单例模式,那么它是怎么能够在同时处理很多个请求的呢?想要搞明白这点,首先面临的一个问题是:计算机是如何处理一个请求的呢?计算机大部分的任务都是由CPU来完成的,Controller虽然叫做控制器,但是

2021-04-08 11:53:12 3474 4

原创 SpringBoot入门教程(第一阶段):整合Themleaf

SpringBoot入门教程:使用Themleaf创建项目并添加相关依赖

2021-02-17 10:14:56 511

原创 SpringBoot入门教程(第一阶段):整合SpringData JPA

SpringBoot入门:使用SpringData JPA1、首先创建项目,添加依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency>

2021-02-16 23:17:42 206 1

原创 IDEA教程 第二章:创建SpringBoot项目

IDEA教程 第二章:SpringBoot1、打开IDEA,Create New Project,选择Spring Initializr,点击Next2、填写好项目相关信息3、选好依赖之后点击Next,选好项目所在路径,然后点击Finish4、项目创建完成

2021-02-15 22:35:04 91

原创 数据库学习笔记之索引详解

索引简介索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。索引的一个主要目的就是加快检索表中数据,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。如果说把数据库看作字典的话,那么索引可以被看作目录。在数据库表中,对字段建立索引可以大大提高查询速度。通过善用这些索引,可以令MySQL的查询和运行更加高效。索引是对数据库表中一个或多个列(例如,emplo

2020-10-25 17:16:48 693

原创 JAVA-JDBC编程总结

JDBC简介JDBC全称是Java数据库连接(Java Database Connectivity),它是一套用于执行SQL语句的Java的API,应用程序可以通过这套API关系到数据库,并使用SQL语句来完成对数据库的增删改查等操作。JDBC由两层构成,上层是JDBC的API,下层是JDBC的驱动程序API,1.Java应用程序2.JDBC驱动程序管理器3.厂商或第三次提供驱动程序4.数据库JDBC常用API使用JDBC连接数据库关于SQL关于数据库的基本操作事务处理...

2020-10-07 23:27:01 616 1

原创 计算机网络与Java网络编程基础知识总结

关于Java网络编程计算机网络将地理位置不同的计算机通过通信线路连接起来,实现资源的共享和信息的传递,网络中的计算机通常称之为主机,而网络编程就是通过程序来实现两台以上主机之间的通信。实际的通信网络内容较多,但是Java语言提供了许多网络类,屏蔽了底层的复杂细节,是程序员可以很容易地编写出网络程序。计算机网络知识基础在进行Java网络编程之前,需要对关于计算机网络的总体知识有一个大致的理解。分层结构模型众所周知,计算机网络传输实际上是一个很复杂的模型,为了更方便程序开发,我们一般会简历网络传输模

2020-10-06 21:21:58 694 1

原创 Java-关于并发与多线程笔记

进程与线程进程:是计算机中的程序在某个数据集合上的一次独立的运行活动,是系统进行资源分配和调度的基本单位。进程特征:1.每个进程都有自己独立的一块内存空间和一组系统资源;2.创建并执行一个进程的系统开销比较大;3.进程是程序的一次基本执行过程,是系统运行程序的基本单位;线程:被称为轻量级进程,.是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的 资源。虽然系统是把资源分给进程,但是CPU很特殊,是被分配到线程的,所以线程是CPU分配的基本单位。线程特征:1.线程自己

2020-10-04 23:15:57 119

原创 Java-关于异常处理笔记

什么是异常?在程序开发过程中,我们要尽量避免错误的发生,但是总会发生一些不可预期的事情,例如除法除数为0,内存不足,栈溢出等,这些就属于异常;Java中提供了异常处理机制,处理这些不可预期的事情;异常也被称为例外,是程序运行过程中会发生的,会打断程序正常执行的事件,以下是几种常见的异常:1.算术异常(ArithmeticException)2.没有给对象开辟内存空间时出现的空指针异常(NullpointException)3.找不到文件异常(FileNotFoundException)在程序

2020-10-03 13:17:23 312

原创 Java-泛型编程笔记

Java泛型编程

2020-10-02 21:27:17 118

原创 Java笔记2-面向对象

面向对象(OOP)在程序中使用对象的概念来映射现实中的事物,使用对象的关系来描述事实的联系,这种思想就是面向对象。把要解决的问题按照一定的规则划分为多个独立的对象,然后通过调用对象的方法来解决问题,一个应用程序会包含多个对象,通过多个对象的相互配合实现代码功能,当某个应用程序出现问题时或功能需求变化时,只需要修改相应对象即可,这样代码更容易维护开发,效率更高,逻辑结构更加清晰。面向对象三大特性封装继承多态类与对象类是一张用于组合对象属性和行为的一种机制;类的实例化就是对象;在Java中,

2020-09-27 20:21:18 222

原创 Java基础语法杂记

1.java工作原理编写,编译,运行.java文件——>.class文件——>机器代码.class文件交给JVM解释运行一次编译,到处运行java编译器与java解释器JRE(Java Runtime Enviroment) java运行时环境JDK(Java Devolopment Kit) Java开发工具包,其中包括Java运行时环境2.配置PATH环境变量系统查找bin目录JAVA的初学者,必须要学会配置PATH环境变量,否则无法编译、运行JAVA程序。那么,为

2020-09-25 22:40:30 95

原创 SQL调优的几种方式

要建立索引索引是帮助MySQL高效获取数据的一种数据结构,就像是书本的目录,加快数据库的查询速度。索引一般分为两种:聚集索引和非聚集索引。聚集索引:聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个。如果某索引不是聚集索引,则表中的行物理顺序与索引顺序不匹配,与非聚集索引相比,聚集索引有着更快的检索速度。简单来说,就是一个按顺序排列的目录,数据也按目录顺序排列。非聚集索引:非聚集索引是一种不

2020-09-24 22:47:21 1787

原创 ECS训练营体验日记

第一天获取ECS服务器今天加入了ECS的训练营,并且获取了ECS的资源,打算趁这个机会学习一些关于云计算和服务器管理的有关知识。什么是ECS云服务器(Elastic Compute Service,ECS)的标准定义是指一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。用户无需提前购买硬件,即可迅速创建或释放任意多台服务器,并且提供多样的类型。ECS的优势1.无需自建机房,无需采购以及配置硬件设施。2.快速交付,快速部署,缩短应用上线周期。3.快速接

2020-09-23 22:36:55 198

原创 关于Java的Static函数调用非静态方法

关于Java的Static函数调用非静态方法通常情况下,Java 静态函数中能不能调用非静态函数的方法?答案是不行的,因为在Java中,非静态方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接.调用。为什么是这样呢?从内存的角度看,在Java中,静态局部变量初始化是在第一次调用函数的时候初始化,全局变量是在main方法执行之前就已经初始化了,这时系统已经为该静态变量分配好内存。也就是说,当类被加载的时候,静态方法和静态属性

2020-09-20 11:05:17 608

原创 Spring MVC 入门使用笔记(一)

1.早期基于Servlet的MVC模型__MVC 是 Model、View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责: __1.模型:用于存储数据以及处理用户请求的业务逻辑。2.视图:向控制器提交数据,显示模型中的数据。3.控制器:根据视图提出的请求判断将请求和数据交给哪个模型处理,将处理后的有关结果交给哪个视图更新显示。** 基于 Servlet 的 MVC 模式的具体实现如下: **1.模型:一个或多个 JavaBean 对象,用于存储数据(实体模型,由

2020-09-12 13:53:27 138

原创 博客背景壁纸推荐(二)CSDN图床

高清博客背景壁纸推荐(二)这里是壁纸推荐关于解决CSDN图床的水印问题:在添加图片URL时去除CSDN图床水印

2020-08-04 14:18:32 716

原创 C/C++笔记—内存四区模型

C/C++笔记—内存四区模型操作系统给C/C++编写的程序分配内存,通常将分配的内存划分为以下四个区域:1.栈区:用于存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。用完由操作系统自动释放,一般是由编译器自动分配释放的。栈向下生长,栈分配的地址越来越小。2.堆区:动态分配给程序的内存区域,由程序员手动释放,若程序员不释放,程序结束时可能由OS回收。这里的堆并不等于数据结构里的堆,分配方式更类似于链表。堆向上生长,当给变量分配内存时,而堆分配的地址则越来越大3.数据区:程序结束

2020-08-04 13:45:07 170

原创 解决CSDN图床的水印问题

解决CSDN图床的水印问题问题:在使用CSDN做图床的时候,大家可能会发现图片会被CSDN的Markdown编辑器自动添加水印,就像这样:我们可以很明显的看到,在图片的右下角出现了水印,很影响视觉效果。那么该怎么去掉呢?解决办法:在向我们的博客或网页添加图片时,我们需要添加图片的URL,我们对图片单击右键,点击“在新标签页打开图片”,就可以得到页面:这个时候我们在地址栏可以看到图片的地址为:https://img-blog.csdnimg.cn/20200718094740490.jpg

2020-08-02 12:55:32 829

原创 JavaScript复习概览

JavaScript概览1.概念JavaScript是web 开发人员必学的 3 门语言中的一种:1.HTML 定义了网页的内容2.CSS 描述了网页的布局3.JavaScript 网页的行为JavaScript是一门客户端脚本语言运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎脚本语言:不需要编译,直接就可以被浏览器解析执行了2.功能可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验。3.历史19

2020-08-02 12:18:59 116

空空如也

空空如也

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

TA关注的人

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