- 博客(99)
- 收藏
- 关注
原创 数据库之索引
1.索引是什么1.1 索引是帮助MySQL高效获取数据的数据结构。1.2 索引存储在文件系统中。1.3 索引的文件存储形式与存储引擎有关(InnoDB、MyISAM、memory)。存储引擎:InnoDB存储引擎数据跟索引文件放在一个文件夹中,myisam分为不同的文件。InnoDB支持事务,而myisam不支持。InnoDB支持表锁和行锁,myisam只支持表锁。InnoDB支持外键,myisam不支持外键。1.4 索引文件的结构:hash、二叉树、B树、B+树(没有B
2021-04-18 18:38:27
230
原创 日期问题:LocalDateTime转为yyyy-MM-dd HH:mm:ss格式失败
日期格式转换问题,一般情况下在返回的DTO里面相应字段加上JsonFormat注解,即可返回"yyyy-MM-dd HH:mm:ss"格式的时间: @ApiModelProperty("新增时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime;但是实际情况是,LocalDateTime类型上面加这个注解并不起作用。Date类型上面使用这个注解可以起作用。于是,遇
2020-07-23 09:59:45
7401
原创 对某个时间范围内的数据进行搜索,前端传入的时间如何处理
有的时候会遇到这样的功能:比如搜索所有的用户的数据,用户表中有createTime(添加时间)这个字段,然后进行搜索的时候,有可能有这样的场景:查询某个时间段新增的所有用户信息,那么前端传入的参数为:开始时间-结束时间,数据库中的数据精确到了时分秒,但是前端传入的数据只有年月日,此时考虑到数据的精确性,需要对前端传入的数据进行处理,开始时间的时分秒默认设置为“00:00:00”,而结束时间默认设置为“00:00:00” public Date getEndDate() { if (n
2020-07-21 14:48:56
2151
原创 MySQL之聚合函数count()的用法
在使用MySQL数据库查询的时候,涉及到数量查询,总是会使用count函数,一般有:count(*)、count(字段)、count(1)、count(主键id)这几种用法,这些用法有什么不同,原来没有仔细思考过,今天偶然看到,在此记录,希望自己在以后的开发中,能够有所体会。count()是一个聚合函数,对于返回的结果集,一行行地判断,如果count函数的参数不是NULL,累计值就加1,否则不加。最后返回累计值。count(id)InnoDB引擎会遍历整张表,把每一行的id值都取出来,...
2020-07-21 11:02:04
4476
原创 MySQL使用子查询,子查询条件本身写错了,但是不报错
MMySQL使用子查询,子查询条件本身写错了,子查询中的某个字段写错了,子查询的表中并没有此字段,但是运行sql的时候不报错。此问题留待以后研究。
2020-07-17 13:48:54
461
1
原创 IDEA自动补全返回值,自动补全变量名称和属性名称
ctrl+alt+v写代码的时候,我们经常会遇到使用某个类的某个方法。知道调用这个方法,每次都是直接写完这个方法,还要写返回值,idea给他们提供了相关的自动补全功能
2020-07-16 13:57:38
943
原创 数据库设计的一些体会
1.有些功能涉及到正式数据和未发布的数据,可以为新建的未发布的数据单独设置一张数据库表(可理解为中间表),在点击发布的时候,将中间表的数据拷贝到正式的数据库表中(已发布的数据)。2.有些涉及到上下层级的数据库表,可以设置一个parentId用来表示上下级的关系,然后设置一个code字段用来表示某些上下级的关系(比如一级为100,二级为100100,三级为100100100,以此类推),这样在查询某个一级所有下级的时候,可以用code字段进行查询。3.一般数据库的设计都有一些公共的字段,比如新增时间,
2020-07-16 11:23:35
205
原创 Java数字超长如何设置不变为科学计数法
有的时候数字超长,无论是数据库进行操作还是Java代码进行操作,都会变为科学计数法。现在有一个string类型的字段code,每新增一条数据,code+1。因为需要的code很长,所以定义为了string类型。用MySQL数据库自带的函数MAX(code)+1得到的值为科学计数法的值。需要的是正常的值。尝试了将code转为double类型+1后再转为string,发现还是变成了科学计数...
2020-04-27 15:19:54
2040
原创 ==和equals的区别
一、==的含义在java中,主要有两个作用。1、基础数据类型:比较的是他们的值是否相等,比如两个int类型的变量,比较的是变量的值是否一样。2、引用数据类型:比较的是引用的地址是否相同,比如说新建了两个User对象,比较的是两个User的地址是否一样。二、equals的含义Object的equals源码如下:public boolean equals(Object obj...
2020-04-24 13:43:30
238
原创 共导入3级产品类,每级对应多个下级:通过前端页面添加时不同上级可以对应相同的下级且同级名称可重复,通过导入功能添加的数据同级品类名称重复的示为一个品类
有需求如下:共导入3级产品类,每级对应多个下级;通过前端页面添加时不同上级可以对应相同的下级且同级名称可重复,通过导入功能添加的数据同级品类名称重复的示为一个品类。并且在导入的时候只需要关注此次需要导入的数据,而不需要关注数据库表中原有数据,即使原数据有名字相同的,也不必合并。excel表中数据如图所示:对应的数据为:excel表中的数据导入了之后为List:[Tes...
2020-03-16 16:04:36
424
原创 IntelliJ IDEA新建java文件报错: Unable to parse template "Class" Error Message : 0
IntelliJ IDEA新建java文件报错: Unable to parse template "Class" Error Message : 0并且生成了一个后缀为.java的文件:原因:JDK更新到jdk-8u162或更高版本引起的解决办法:1. 在idea.exe.vmoptions 或 idea64.exe.vmoptions(这两个文件在idea安装路径的...
2020-01-10 09:41:23
776
原创 Java学习笔记之--------责任链模式
责任链模式将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。场景打牌时,轮流出牌;接力赛跑;大学中,奖学金审批;公司中,公文审批。常见的公司内的请假审批流程:如果请假天数小于3天,主任审批;如果请假天数大于等于3天,小于10天,经理审批;如果大于等于10天,小于30天,总经理审批;如...
2020-01-09 18:26:16
189
原创 Java学习笔记之--------享元模式
场景内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或者相似的对象,我们可以通过享元模式来节省内存。享元模式核心享元模式以共享的方式高效的支持大量细粒度对象的重用。享元对象能够做到共享的关键是区分了内部状态和外部状态。内部状态:可以共享,不会随环境变化而变化;外部状态:不可以共享,会随环境变化而变化。享元模式实现FlyweightFactory享元工厂类:创建并管理享元...
2020-01-07 18:29:07
128
原创 Java学习笔记之--------外观模式
迪米特法则了解外观模式之前,先加深一下对迪米特法则的印象:迪米特法则也叫最少知道原则:一个软件应当尽可能少的与其他实体发生相互作用。相关场景如果我们自己泡茶,需要自己准备开水、茶叶、茶具,然后再亲自动手泡茶。如果我们去到茶馆里面,我们只需要跟服务员联系,然后由服务员去完成其他的工作,我们就可以喝到一壶热茶。如果需要注册一个公司,我们需要自己按照流程,工商局、质检局、税务局、银行,都...
2020-01-07 17:57:35
124
原创 Java学习笔记之--------装饰模式
装饰模式职责动态的为一个对象增加新的功能。装饰模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。实现细节Component抽象构件角色:真实对象和装饰对象有相同的接口。这样,客户端对象就能够以与真实对象相同的方式同装饰对象交互。Concrete Component具体构件角色(真实对象)...
2020-01-04 16:03:01
141
原创 Java学习笔记之--------组合模式
使用组合模式的场景把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。(组合模式和组合不同,组合是在A类中定义一个B类,A拥有了B的属性和方法。)组合模式核心抽象组件(Component)角色:定义了叶子和容器构件的共同点。叶子(Leaf)构件角色:无子节点。容器(Composite)构件角色:有容器特征,可以包含子节点。组合模式dem...
2020-01-02 17:42:00
163
1
原创 Java学习笔记之--------桥接模式
桥接模式的场景商城系统中常见的商品分类,以电脑为例,如何良好的处理商品分类销售的问题?我们可以用多层继承结构来实现下图的关系。实现多层继承结构之后的类图如下:但是用继承实现会存在一些问题:1.扩展类问题(类个数膨胀问题):如果需要增加一个新的电脑类型:智能手机,则要增加各个品牌下面的类;如果要增加一个新的品牌,也要增加各种电脑类型的类。2.违反单一职责原则:一个类,...
2020-01-02 15:19:02
130
原创 Java学习笔记之--------代理模式
代理模式核心作用通过代理,控制对象的访问。可以详细控制某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理,即AOP的微观实现。代理模式是AOP(Aspect Oriented Programming 面向切面编程)的核心实现机制。核心角色抽象角色:定义代理角色和真实角色的公共对外方法。真实角色:实现抽象角色,定义真实角色所需要实现的业务逻辑,供代理...
2019-12-27 14:25:49
133
原创 Java学习笔记之--------适配器模式
适配器模式生活中经常遇到这样的场景,比如我们现在的Type-C接口充电的手机,只提供一个Type-C接口用来充电,那么我们如何插入我们的耳机呢?每部手机都会配套一个转接线,转接线一端可插入Type-C接口,一端提供了耳机插孔。这样我们的手机就可以连接线式耳机了。将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。模式...
2019-12-24 14:28:28
133
原创 Java学习笔记之--------原型模式
原型模式通过new产生一个对象需要非常繁琐的数据准备或者访问权限,可以使用原型模式。原型模式就是Java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具备原型模式的特点。原型模式的优势:效率高(直接克隆,避免了重新执行构造过程步骤)。克隆和new类似,但是不同于new。new创建新的对象属性用的是默认值,克隆出的对象的属性值完全和原型对象相同。并且克隆出的新对象改变不会影响...
2019-12-18 18:34:22
311
原创 Java学习笔记之--------建造者模式
使用场景我们需要构建一个复杂的产品。比如:电脑,手机,飞船。这个复杂产品的创建,有这样一个问题需要处理:装配子组件是不是需要特定的步骤?实际开发中,我们所需要的对象构建时,也非常复杂,有很多步骤需要处理时,我们就可能需要想到建造者模式。建造者模式的本质建造者模式又称生成器模式,建造者模式分离了对象子组件的单独构造(由builder来负责)和装配(由director负责)。从而可以构...
2019-12-18 16:15:54
146
原创 Java学习笔记之--------抽象工厂模式
抽象工厂模式抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。抽象工厂模式用来生产不同产品族的全部产品(对于新增加的产品无能为力,支持增加产品族)。抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。抽象工厂模式demopublic interface Engine { vo...
2019-12-18 15:14:45
167
原创 Java学习笔记之--------工厂方法模式
不使用工厂模式我们现在有一个汽车方法,实现如下:public interface Car { void run();}public class Audi implements Car { @Override public void run() { System.out.println("奥迪在跑"); }}public class Byd implements...
2019-12-17 16:23:16
175
原创 不常用但偶尔用的SQL,不定时更新
1.update left join 多表关联更新UPDATE table_1 t1 left join table_2 t2 on t2.id = t1.tid SET 需要修改的字段信息where 条件;2.select count(字段名) group by 分组查询数量大于1的SELECT COUNT(name) FROM table GROUP BY name HAVI...
2019-11-28 11:12:56
115
原创 Spring Boot学习笔记之使用Spring Boots实现数据库操作(IntelliJ IDEA+MySQL)
Spring Boot学习笔记之使用Spring Boots实现数据库操作已经写过一篇:https://blog.csdn.net/wangruoao/article/details/83015083这里跟连接SQL server数据库的时候相比,只修改配置文件application.properties即可:server.port=8081#数据库用户名密码设置spring.da...
2019-11-26 22:05:14
429
原创 MySQL数据库安装
自从项目换成了mysql数据库,我安装上了navicat可视化工具就以为万事大吉了,万万没想到我自己想连接到本地数据库测试点东西的时候发现,一直连接失败。我也不知道是什么问题,最后才搞清楚是自己忘了安装MySQL。因为原来用的SQL server数据库,原来做的demo都是连接SQL server数据库的,后俩换成了MySQL,而我并没有安装MySQL,真的是蠢到家了。然后想到了自己初学的...
2019-11-26 18:28:06
398
原创 bug记录--------JSON parse error:Cannot deserialize value of type `com.test.EnumTest` from String
在查询类型的时候定义了一个枚举EnumTest,这样前端传类型的时候传枚举就可以。然后在查询的时候报错:JSON parse error:Cannot deserialize value of type `com.test.EnumTest` from String "ELERTRONIC": value not one of declared Enum instance names: [...
2019-11-19 16:50:21
6030
原创 Java学习笔记之--------单例模式(二)
单例模式存在的问题1.反射可以破解单例模式。2.反序列化可以破解单例模式。注:上面的单例模式不包括枚举实现单例模式。反射破解单例模式我们以懒汉式为例。public class SingletonDemo06 { private static SingletonDemo06 instance; private SingletonDemo06(){ /*if (i...
2019-09-24 16:34:59
187
原创 Java学习笔记之--------单例模式(一)
单例模式的核心作用保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。单例模式的应用场景Windows的Task Manager(任务管理器)。Windows的Recycle Bin(回收站)。在整个系统运行过程中,回收站一直维护着仅有的一个实例。项目中,读取配置文件的类,一般也只有一个对象。没有必要每次使用配置文件数据,都new一个对象去读取。网站的计数器,一般也...
2019-09-19 19:49:52
291
原创 Java中Date和LocalDateTime转为String
由于Excel表格中的时间格式经常是"yyyy/MM/dd"类型的,所以在文件导出或者导入的时候,经常会用到时间格式的转换。public class Test { //1.LocalDateTime转为"yyyy/MM/dd" public static String formatLocalDateTimeString(LocalDateTime date) { DateTimeF...
2019-09-05 20:12:01
9525
原创 SQL server递归获取部门信息以及数据库表优化设计
预设条件:公司下设置三级部门信息,部门表Department字段设计如下,其中有四个字段(公司ID未体现):id:部门ID,自增主键; name:部门名字; parentId:父级部门ID; deleted:是否删除,0未删除,1已删除。现在要删除部门信息,可以想到在删除部门信息的时候,如果删除的是一级部门,那么它下面的二级...
2019-02-25 16:56:06
1222
原创 Mybatis+SQL server 批量插入数据自增主键无法回写--问题未解决
Mybatis+SQL server批量插入数据自增主键无法回写,搜索了很多资料,这个问题仍然没有一个解决方案。很多都是说入参的注解@Param(value="list"),然后批量插入的时候,<foreach>里面有一个collection=\"list\"标签,名字必须命名为list。但是这个应该对MySQL适用,但是对SQL server不适用。在此记录问题,留待解决。...
2019-02-22 13:37:08
2394
2
原创 数据结构读书笔记之算法初识
算法算法是对特定问题求解步骤的一种描述,它是指定的有限数列,其中每一条指令表示一个或多个操作。算法的5个特征:有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。 确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。并且,在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出。 ...
2019-02-18 14:37:47
174
原创 数据结构读书笔记之数据结构初识
数据结构数据结构是相互之间存在一种或多种特定关系的数据元素的集合。(数据结构这个概念,至今尚未有一个被一致公认的定义,不同的人在使用这个词时所表达的意思有所不同)数据数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。对计算机科学而言,数据的含义极为广泛,数字、图像、文本、声音等都可以通过编码而归之于数据的范畴。数据元素数据元素是数...
2019-02-14 14:06:26
468
原创 Java学习笔记之--------动态编译
动态编译动态编译是6.0引入的功能。动态编译应用场景:可以做一个浏览器端编写Java代码,上传服务器编译和运行的在线评测系统,服务器动态加载某些类文件进行编译。动态编译的两种方法:通过Runtime调用javac,启动新的进程去操作。 Runtime run = Runtime.getRuntime(); Process process = ru...
2019-01-16 18:16:49
197
原创 英文字母间隔变得很大abcdefg
这种是全角半角的原因,shift+空格 可以切换全半角。如果不起作用,那就是没有开启这个功能,鼠标放到语言栏,右键,然后点击设置。然后如下图,点击按键。 然后有一个全角半角的设置,如果不起作用,就是没开启这个快捷键,开启之后即可。 ...
2019-01-04 10:36:34
25977
6
原创 Java学习笔记之--------反射
Java的动态性Java的动态性主要在以下几个功能上体现:反射机制,动态编译,动态执行JavaScript代码,动态字节码操作。动态语言程序运行时,可以改变程序结构或者变量类型。动态语言有:Python、ruby、JavaScript等。C、C++、Java不是动态语言,但是Java有一定的动态性,我们可以利用反射机制、字节码操作获得类似动态语言的特征。Java的动态性让编程更加灵...
2018-12-27 18:10:44
179
原创 Java学习笔记之--------Class类介绍
Class类介绍在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个Class对象,用于表示这个类的类型信息。java.lang.Class类十分特殊,用来表示Java中类型(class / interface / enum / annotation / primitive type / void)本身。...
2018-12-27 16:28:20
182
原创 报错"importPackage" is not defined
在学习尚学堂视频过程中,跟着老师敲代码,但是自己的代码报错:Exception in thread "main" javax.script.ScriptException: ReferenceError: "importPackage" is not defined in <eval> at line number 1 at jdk.nashorn.api.scripting....
2018-12-27 11:38:27
3468
8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人