- 博客(27)
- 收藏
- 关注
原创 JVM,JRE,JDK的区别
JVM:它是Java虚拟机也是Java跨平台的核心,虽然Java是跨平台的,但是JVM并不是,需要安装适配不同平台的JVM才能实现Java的跨平台特性。平时开发只需要下载安装JDK就行,它里面包含了JVM和JRE。Java开发工具包,它是由JRE+开发工具组成。JRE:Java运行环境,它是由JVM+核心类库组成。
2024-02-16 13:04:07 159
原创 Docker基础篇
docker它是一种容器技术,它可以开辟一定的虚拟空间提供给程序运行,空间和空间之间彼此隔离互相独立,这个空间被称为容器,它可以公用宿主机的资源,最大限度的运用宿主机的软硬件设备。
2024-02-16 00:06:56 1131
原创 order by一定会导致索引失效吗?
第一条语句它的执行过程是先去取出所有数据,然后根据bcd进行排序,或者,之前已经建立了bcd索引,先走bcd索引,然后再回表出查询全部数据,这种方法就不需要排序了,只需要根据主键id回表取数据就行,但是比第一种多了回表的动作,且不说两种方法的效率如何(需要看数据量),这条语句的两种执行流程都是要进行全表扫描的。第二条语句,它只需要bcd的数据,而且已经建立了bcd为顺序的索引,那么你select b,c,d和order by b,c,d都可以满足使用它索引的条件,那么MySQL当然会走索引了。
2024-02-10 14:44:50 1639
原创 MySQL会将字符型数字转换成数字,将非数字类型字符转换成0
由此可见,MySQL查询时候会将字符型数字转换成数字,将非数字类型字符转换成0,平时开发时候要注意一下这个小知识。可见是查不到的,但是如果将某一条数据的a改成0,就可以查询出来一条结果,如图。MySQL会将字符“2”,转换成数字2,结果如下。创建一个表,如下图,
2024-02-09 23:15:00 396
原创 java 中一个方法返回两个对象之Pair用法
方法三:使用Java中javafx.util包下的Pair,可以返回两个对象,泛型自己定义,有点类似于map,但又不同于map,map返回的结果是{key=value},Pair返回的是key=value,用法案例如下。方法一:将多个结果或者对象封装到一个对象实例当中去,然后将该实例作为方法的结果返回,一般都是参数超过三个或者三个以上才封装到一个实例中,缺点就是当有多个线程调用时,频繁的创建对象,浪费资源。通常一个方法返回一个结果,或者一个结果集,当一个方法返回多个结果或者多个对象时该怎么办?
2024-02-09 15:36:33 652 1
原创 count(1)和count(*)以及count(字段)区别
它们都是利用数据库索引进行统计条数的,如果没有索引就会进行全表扫描,如果有非聚簇索引,一般是走非聚簇索引,没有非聚簇索引就查找聚簇索引,聚簇索引也没有的话就只能走全表扫描了,原因是非聚簇索引也保持着每条记录的一部分数据,相比于聚簇索引,同一页同一次磁盘io,非聚簇索引可以取出更多条数据,减少磁盘io次数,检索起来比较快。count(1)和count(*)会统计字段中包含null的记录,而count(字段)会统计字段值非null的数据条数。count()是数据库一个函数,这三种方式都是用来统计数据条数。
2024-02-09 15:33:03 433 1
原创 Index column size too large. The maximum column size is 767 bytes.
MySQL5.7的版本对索引长度默认是767字节,超出会报错,限制索引长度是为了提高索引的查询效率和减少索引存储的空间,毕竟大的索引key查询和维护起来开销都比较大。导入SQL脚本文件到MySQL5.7版本中,提示导入失败,失败信息: Index column size too large. The maximum column size is 767 bytes.意思式索引长度太长,默认最大的长度为767字节。然后重新执行SQL脚本即可,值得一提的是,当数据库重启后这两个配置会恢复成修改之前的值。
2023-09-23 00:59:18 4150 1
原创 关于IDEA终端不能使用npm命令
第二步:打开idea终端,输入npm相关命令,如果提示“不是内部命令”,退出idea,以管理员重新运行idea,再从新执行npm命令应该就可以了。打开cmd终端命令窗口,输入node -v命令,查看本地是否安装了node.js环境,如果没装,需要先安装node环境。
2023-09-23 00:26:18 5399 1
原创 多线程同步:使用100个线程给一个账户金额进行每次+1操作
在主函数中创建一个账户对象,创建一个100个线程的线程池,执行操作并打印最终结果,这里特别注意while循环这一块代码,添加这块代码是为了判断所有线程任务是否执行完毕,如果执行完毕则向下走,打印输出结果,没有执行完毕继续循环等待,直到所有线程任务执行完毕,如何不加这个循环判断,打印结果很可能会不准确,因为service.shtdown()后并不是所有线程都执行完毕,此时主线程继续向下走,输出账户余额是子线程没执行完的某一时刻的值。类中有账户对象,存入的金额,构造器,run方法中调用账户对象的加钱方法。
2023-07-06 19:17:21 480 1
原创 MySQL修改字段类型之modify
ALTER TABLE[改变方式]。alter table 表名 alter column 字段名 变更后的字段类型。1,范围不同:alter范围是针对字段增删改操作,modify只可以修改字段属性。这个语法会执行报错,不能达到修改字段类型目的,原因是第二个alter不起作用。需要给表里某个字段修改字段类型,将varchar类型修改为float。ALTER TABLE [表名] MODIFY [列名] [数据类 型]这个语法可以达到修改字段目的,使用modify可以达到。
2022-10-26 04:47:17 8570
原创 SpringBoot实现AOP
类加上@Aspect注解,告诉spring boot它是一个切面类@Component@AspectSystem.out.println("前置通知***");}System.out.println("环绕通知之前***");System.out.println("环绕通知之后***");}System.out.println("后置通知***"+obj);}System.out.println("异常通知***"+e);}
2022-10-01 18:22:35 404
原创 java 中枚举的定义
在开发过程中,我们会经常遇到一些属性或者参数定义为某个固定的值,我们通常会将这些值定义为常量或者枚举,不用我们再一一定义一遍了,只需要在需要使用的地方引入定义好的常量或者枚举即可,也方便我们日后再维护代码的时候,只需要改一个地方,其他的地方也都随只改变。类中RspEnum.values()方法是枚举本身的方法,调用枚举的values()方法可以获取到枚举的集合,然后对次遍历操作。也可以自定义拓展一下方法,比如根据姓名获取枚举中对应年龄的方法,根据年龄获取枚举中与年龄对应的姓名等,下面是一个简单的案例。
2022-10-01 18:01:05 934
原创 优化SQL之通过构造函数将数据库参数存入单例bean的成员属性中
构造函数是用来给对象创建时初始化成员属性的方法,它的方法名和类名相同。spring中ioc会使用反射来创建对象,默认调用对象的无参构造器来创建对象并初始化对象的成员属性,此时的成员属性都是对应类型的默认值,类里面可以不写无参构造器,spring在创建对象的时候会自己帮你加上类的无参构造器并调用,当类中有你自定义的有参构造器时,spring就不会帮你加午餐构造器了,这个时候你想要通过调用这个类的无参构造器来创建对象,它会报错。...
2022-08-13 15:05:03 321
原创 保留两位小数
计算保留两位小数 /** * 保留两位小数 * 分子可以是小数、整数 * @param a * @param b * @return */ public String percent(double a ,int b){ if (b == 0) { return "0.00"; } //创建一个数值格式化对象 NumberFormat number.
2021-12-01 00:06:21 347
原创 获取指定月份天数和指定月份的第一天和最后一天
public static final String DF_YYYY_MM = "yyyyMM"; private static SimpleDateFormat sdf=new SimpleDateFormat("yyyyMM"); /** * 校验时间格式yyyyMM * @param str * @return */ public static boolean timeForm(String str ) { Strin..
2021-11-30 23:04:27 197
原创 关于数据库备份和外键约束
数据库备份(简单谈谈方案,后面抽空详细描述一下场景)一种是使用命令定期备份到本地或者服务器,缺点是如果服务器在执行命令之前宕机,只能回复上一次备份的数据,上一次到宕机这段时间的数据备份不了,造成丢失。另一种是通过连接高速网络实施热备份,通过binlog实现主数据库宕机快速连接到备用数据库外键约束外键约束概念;一A表中的某个字段和另外一个B表中的主键字段关联,那么B表中关联的主键字段就是A表的外键。(一定是和某个表中的主键关联,不是主键的字段不能作为外键)外键约束场景:如果两张表的数据“感
2021-11-27 00:09:07 373
原创 SQL 去除重复数据 UNION all 和UNION 的用法
使用UNION关键字去除重复数据要注意,用UNION连接的前后两个SQL语句查询出来的结果在字段顺序,字段名称,字段类型都要一致。1.UNION all 是将两个查询语句结果合并输出,不去除重复数据例如;将商品状态为‘1’的和名字为‘雪糕’的全部查出SELECT *FROM goods_infowhere goods_status ='1'UNION allSELECT *FROM goods_infoWHERE goods_name = '雪糕'查询的结果可以看出查出9.
2021-11-26 00:37:25 23037
原创 获取当月天数和前一个月天数
获取当前月天数/** * 获取当月的天数 */ public static int getCurrentMonthDay() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DATE, 1); calendar.roll(Calendar.DATE, -1); int num = calendar.get(Calendar.
2021-11-25 23:38:13 470
原创 Java中获取当前时间的前一个月的第一天和最后一天
获取前一个月的第一天 /** * 获取前一个月第一天 */ public static String getBeforeMonthFirstDay(Date date) {//获取时间工具对象 Calendar calendar = Calendar.getInstance();//设置前一个月 calendar.add(Calendar.MONTH,-1);//设置开始时间是00:00:00 calendar.set(
2021-11-24 22:33:18 930
原创 Java中使用EasyExcel将数据以excel形式导出
首先再项目的maven中添加相关依赖<!--EasyExcel依赖--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId> <version>2.2.3</version></dependency>封装一个E...
2021-11-17 15:20:52 1178
原创 SQL语句In中加单引号和不加单引号的区别
一,加单引号,其实就是将引号中的数据作为查询条件去精准匹配例子;SELECT *FROM userWHERE dept_id in ('1123598813738675202')# where条件相当于 where dept_id = '1123598813738675202'执行结果二,不加单引号,默认取in括号中前十六位进行查询例子;它会以前十六位“1123598813738675”作为查询条件进行查询SELECT *FROM userWHERE.
2021-08-25 21:16:00 2940 1
原创 java中如何实现一个定时任务
叮当应用场景;统计数据报表,删除数据库数据,定时发送短信等实现方式;三种第一种;使用javaJDK自带的timeTask和timer实现定时任务,这种方式可以设置延时,执行间隔,但是不能设置执行时间点,一般用的较少public class Method1 { public static void main(String[] args) { TimerTask timerTask = new TimerTask() { @Overr...
2021-08-16 21:55:33 2523
原创 java中利用POI解析Excel常见问题
问题一;解析电话号码等纯数字时,解析出来的是科学计数类型的值例如;17692851564 利用 row.getCell()读取到的值是1.7692851564E10解决方法; String s = row.getCell(0).toString(); //解决读取电话号码是科学计数法 String phone = new BigDecimal(s).toPlainString();
2021-08-05 21:41:08 1527
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人