自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java 运行时识别类型信息

当Java创建某个类的对象,比如Writer类对象时,Java会检查内存中是否有相应的Class对象。如果内存中没有相应的Class对象,那么Java会在.class文件中寻找Writer类的定义,并加载Writer类的Class对象。一旦Class对象加载成功,就可以用它来创建这种类型的所有对象。这也就是说,每个对象在运行时都会有对应的Class对象,这个Class对象包含了这个对象的类型信息。因此,我们能够通过Class对象知道某个对象“真正”的类型,并不会因为向上转型而丢失。参考...

2022-06-08 19:54:48 295

原创 LocalDateTime与String日期互相转换

LocalDateTime转化为String结果:String转化为LocalDateTime结果:

2022-06-08 19:46:05 769

原创 jpa + MySQL list转String存入数据库

list通过jpa直接存入数据库会报错这里需要进行转换list中存放的自定义对象为Point等一类位置坐标,可以使用POINT、MULTIPOINT等空间类型的字段MySQL数据类型list中存放的是基本数据或者自定义基本数据的集合在POJO类中定义转换器对于List中为基本类型的数据,使用的转换方式对于List中为基本类型集合的数据,使用的转换方式这样就可以在数据库中存入List转换的Json数据参考P.S.在POJO类中定义转换器时,如果使用注解,就会自动生成以查询的字段为主键,以MyLis

2022-06-08 10:39:18 1386

原创 MySQL数据类型

MySQL没有内置的 BOOLEAN 或 BOOL 数据类型。所以要表示布尔值,MySQL使用最小的整数类型,也就是TINYINT(1)。 换句话说,BOOLEAN和BOOL是TINYINT(1)的同义词。在MySQL中,字符串可以容纳从纯文本到二进制数据(如图像或文件)的任何内容。可以通过使用LIKE运算符,正则表达式和全文搜索,根据模式匹配来比较和搜索字符串。更多参考...

2022-06-07 10:50:53 345

原创 SqlSessionFactory和SqlSession详解

1.SqlSessionFactory是MyBatis的关键对象,它是个单个数据库映射关系经过编译后的内存镜像。2.SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得,而SqlSessionFactoryBuilder则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例。3.每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。4.SqlSessio

2022-06-01 17:08:16 6464

原创 基于Junit4的单元测试

文章目录测试类基本思路测试顺序@RunWith(SpringRunner.class)@Mock:MockitoAnnotations.initMocks(this);Mock方法的默认值参数匹配器(matchers)行为测试fieldAssertJUnit 时间测试JUnit 参数化测试测试类基本思路mock中引入测试类。初始化类中的对象和引用类,建立映射关系。构建需要测试的数据和请求,测试功能是否运行正确。测试顺序@Test:这个注释说明依附在 JUnit 的 public void 方

2022-05-31 15:07:48 1406

原创 @Autowired和@Resource的区别

文章目录1、bean注入的注解2、区别1、bean注入的注解@Autowired@Autowiredprivate UserService userService;@Resource@Resouceprivate UserService userService;2、区别@Autowired:spring注解默认按照类型注入如果想按照名称注入,需要结合@Qualifier使用这种情况一般发生在:一个类,有多个实现类的时候,比如接口public interface Interf

2022-05-16 15:46:47 150

原创 hibernate对象状态

文章目录Hibernate对象状态临时(Transient)持久(Persistent)(托管)游离(Detached)(脱管)删除对象(Removed)状态之间的转换遇到的问题Hibernate对象状态临时(Transient)由new操作符创建,且尚未与Hibernate Session 关联的对象被认定为临时(Transient)的。临时(Transient)对象不会被持久化到数据库中,也不会处于 Session 的缓存中。 如果临时(Transient)对象在程序中没有被引用,它会被垃圾回收器

2022-05-11 17:49:20 334

原创 List遍历时删除与迭代器(Iterator)解惑

文章目录ArrayList 遍历时删除方法for循环向后遍历的陷阱增强型for循环(foreach)遇到的问题使用迭代器进行遍历同时修改操作iterator调用remove()方法为什么要先调用next()方法?快速失败(fail-fast)安全失败(fail-safe)List集合使我们非常熟悉的,ArrayList等集合为我们提供了remove()方法,但在遍历时却不能随便使用,我们我们今天便从实现层面讨论下原因以及Iterator的相关知识。ArrayList 遍历时删除方法for循环向后遍历的

2022-05-11 16:03:13 2722

原创 batchUpdate几种方法对比

文章目录batchUpsate(String[] sqls)这种的sql在于多样化,可以是各种混合sql,在操作时,批量1000条执行一次,中途有某条sql报错时,后面的sql则不会执行,之前的sql则全部会执行提交。batchUpdate(String sql, List<Object[]> batchArgs)没有预编译,这种的sql在于效率,固定的sql,变化的参数,操作时间会极大减少,默认情况下,当中途有数据报错时,会全部回滚,不提交,所以是全部插入或者全部不插入;batch

2022-04-24 13:52:22 2920

原创 Mybatis原理

文章目录- 什么是Mybatis?- Mybaits的优点:- MyBatis框架的缺点:- MyBatis与Hibernate有哪些不同?- 架构MyBatis缓存一级缓存- mybatis技巧和细节1、#{}和${}的区别是什么?2、通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?3、Mybatis是如何进行分页的?分页插件的原理是什么?4、Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形

2022-04-23 16:14:10 1289

原创 groupBy的时候实现组间排序

方法1:使用treeMap,默认按照升序排序TreeMap<String, List<Matchs>> matchsListMap = matchsList.stream().collect(Collectors.groupingBy(Matchs::getMatchDate,TreeMap::new,Collectors.toList()));方法2:传入有顺序的Map, LinkedHashMap 即可。参考...

2022-04-12 15:51:14 1040

原创 每天一个学费小技巧——@SneakyThrows

​ 在java的异常体系中Exception异常有两个分支一个是运行时异常RuntimeException一个是编译时异常,在Exception下的所有非RuntimeException异常,比如IOException、SQLException等所有的运行时异常不捕获,而编译时异常是一定要捕获,否则编译会报错。@SneakyThrows就是利用了这一机制,将当前方法抛出的异常,包装成RuntimeException,骗过编译器,使得调用点可以不用显示处理异常信息。使用注解: import l

2022-03-17 16:30:55 888

原创 记一次导入包无效问题

原因:先增加一个模块,删除后又加入同名模块,此时idea会默认删除的模块不再用,所以hi将删除模块的pom文件忽略掉,此时依赖是引不进来的。解决办法:1、删除新建的有问题的模块2、打开项目中.idea/misc.xml,将下图中的行删除,对应刚删除的模块名3、右键pom.xml -> maven ->Reimport,重新导入依赖,问题解决参考...

2022-03-17 14:34:16 357

原创 mysql 插入与更新

MySql将查询结果插入到另外一张表参考MySQL防止重复插入相同记录 insert if not exists参考MySQL的INSERT ··· ON DUPLICATE KEY UPDATE使用的几种情况参考

2022-03-07 11:52:01 1224

原创 future异步调用方法

ListenableFutureTask<T> task = ListenableFutureTask.create(new Callable<T>() { @Override public T call() throws Exception{ List<ListenableFuture<T>> = new ArrayList<>(); futures.add(function); T result = new T; resul

2022-03-04 15:33:59 925

原创 Semaphore

信号量, 可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。常用方法说明acquire() 获取一个令牌,在获取到令牌、或者被其他线程调用中断之前线程一直处于阻塞状态。acquire(int permits) 获取一个令牌,在获取到令牌、或者被其他线程调用中断、或超时之前线程一直处于阻塞状态。acquireUninterruptibly() 获取一个令牌,在获取到令牌之前线程一直处于阻塞状态(忽略中断)。 tryAcquire()尝试获得令牌,

2022-03-04 11:05:44 98

原创 字符串匹配正则表达式

MySQL:where regexp ‘pattern’ 参考Clickhouse:where match(column, ‘pattern’) 参考

2022-03-04 09:34:26 315

原创 SpringBoot注解验证参数

控制参数格式、类型、大小等参考

2022-03-03 11:02:06 87

原创 if 和 switch 效率

if…else写法:if(boolean){ } else if(boolean){ } else if(boolean){ } else{ }switch…case写法:switch (表达式){ case 值1 : 语句1 break; case 值2 : 语句2 break; ... default : 语句n break; }总结:switch以空间换时间。1、当分支较多时,当时用switch的效率是很高的。因为switch是随机访问的,就是确定了选择值之后

2022-02-28 17:47:23 7903

原创 flatMap(Collection::Stream)用法

Map<key, List a> 取出Map的List amap.values().stream().flatMap(Collection::stream).collect(Collectors.toList());

2022-02-14 18:03:00 1713

原创 JpaRespository接口

父类——CrudRepository接口提供最基本的对实体类的增、删、改、查操作JpaRepository接口JPA(java peersistence api),它并不是一个框架,而是一组规范。框架使用了这个规范,对和数据库的交互做了一些底层的封装。建立了一个通道,把我们在程序中写的按照框架的规范的sql语句转化成数据库引擎可以解析的sql。继承关系最好的想法是使用 CrudRepository 或 PagingAndSortingRepository, 具体取决于是否需要排序和分页。如果可

2022-02-10 10:58:35 998

原创 数据-雪花算法

一种分布式id生成算法,保证所有生成的id按时间趋势递增,并且整个分布式系统内不会产生重复id(因为有datacenterId和workerId来做区分)。SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图:1bit,不用,因为二进制中最高位是符号位,1表示负数,0表示正数。生成的id一般都是用整数,所以最高位固定为0。41bit-时间戳,用来记录时间戳,毫秒级。41位可以表示个数字,如果只用来表示正整数(计算机中正数包含0),可以表示的数值范围是:0 至 ,减1是

2022-01-29 10:58:58 1064

原创 spring学习3

文章目录docker定义核心概念使用步骤数据交互JDBCMyBatisdocker定义优点:1、可以把我们已经安装配置好的软件,例如,mysql,Tomcat,redis等,打包成一个镜像,这样如果我们想在其他的服务器上安装这些软件,我们就不用再像以前那样,从官网上下载,并且对每一个软件进行配置,我们只需要在其他的服务器上安装docker,然后通过docker直接运行我们打包好的镜像,2、运行中的镜像称为是容器,容器的启动速度是非常快的,软件就是在容器的内部运行的.3、容器之间是沙箱的隔离机制

2022-01-27 14:57:37 1019

原创 几种copyProperties工具类性能比较

结论:Apache BeanUtils的性能最差,不建议使用。Apache PropertyUtils100000次以内性能还能接受,到百万级别性能就比较差了,可酌情考虑。spring BeanUtils和BeanCopier性能较好,如果对性能有特别要求,可使用BeanCopier,不然spring BeanUtils也是可取的。参考...

2022-01-26 16:53:54 602

原创 springboot学习2

文章目录日志日志遗留问题springboot日志的使用Java logger的五个级别@Slf4j指定日志配置文件位置指定日志配置文件的文件名规范切换日志框架日志slf4j只提供SJF4J日志API,具体实现的用的配置文件还是底层真正调用时用的jar包。日志遗留问题springboot+slf4j可能还要和Hibernate、Mybatis组合,但每个组件有它自身的日志文件系统。解决:统一使用slf4j日志系统。参考springboot日志的使用Java logger的五个级别TR

2022-01-24 14:58:39 72

原创 springboot学习1

文章目录打包简化部署父项目Spring Initializer创建一个Springboot项目Springboot配置application.properties 文件和 application.yml 文件区别YAML(非必要)YAML语法YAML支持的三种语法配置文件占位符profile配置文件加载位置外部配置加载顺序自动配置原理打包简化部署在项目中添加插件<build> <plugins> <plugin> &lt

2022-01-18 10:35:23 319

原创 spring4

文章目录spring整合hibernate什么是Hibernate框架?使用Hibernatespring在web中的应用Spring 、SpringMVC 、Struts2之间的区别spring整合hibernate什么是Hibernate框架?Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping,在Java对象与关系数据库之间建立某种映射,以实现直接存取Java对象。也就是MVC中的数据持久层——DAO层,它能将javaBean对象和数据表中

2022-01-17 10:24:58 441

原创 spring学习3

文章目录事务管理事务传播行为事务的隔离级别事务管理事务管理是企业级应用程序开发中必不可少的技术, 用来确保数据的完整性和一致性。事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用。事务的四个关键属性(ACID)原子性(atomicity): 事务是一个原子操作, 由一系列动作组成. 事务的原子性确保动作要么全部完成要么完全不起作用.一致性(consistency): 一旦所有事务动作完成, 事务就被提交. 数据和资源就处于一种满足业务规则的一致性状

2022-01-14 17:04:55 81

原创 spring学习2

文章目录AOP——面向切面术语AOP框架——AspectJ基于注解基于XMLAOP——面向切面术语AOP框架——AspectJ基于注解要在 Spring 中声明 AspectJ 切面, 只需要在 IOC 容器中将切面声明为 Bean 实例. 当在 Spring IOC 容器中初始化 AspectJ 切面之后, Spring IOC 容器就会为那些与 AspectJ 切面相匹配的 Bean 创建代理。在切面类中需要定义切面方法用于响应的目标方法,切面方法即为通知方法,通知方法需要用注解标识,A

2022-01-14 14:32:09 227

原创 spring学习1

文章目录IOC(Inversion Of Control)——控制反转DI(Dependency Injection)——依赖注入Bean配置(通过xml文件)Bean配置的继承与依赖Bean配置的作用域Bean配置的生命周期Bean配置(注解方式)IOC(Inversion Of Control)——控制反转反转资源获取的方向。传统的方式为组件向容器发起请求查找资源。而IOC中容器主动将资源发送给管理的组件,组件只需要选择一种合适的方式来接受资源。首先进行IOC容器的实例化,然后才能进行Bean的实

2022-01-13 17:39:29 72

原创 Mybatis+clickhouse 动态SQL的update和insert不好使这件事

文章目录不好使替代方法不好使insert用法@Insert("<script>" + " insert " + " into tableName (column1, column2, column3)" + " values (#{value1}, #{value2}, #{value3}) " + "</script>"})void insertValues(@Param("value1") type value1, @P

2022-01-13 15:02:47 1063 1

原创 TCP/IP协议

TCP/IP协议族分层参考参考2协议细节参考

2022-01-07 14:40:21 1335

原创 HTTP协议

定义HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同, 用于客户端和服务器之间的通信。请求访问文本或图像等资源的一端称为客户端, 而提供资源响应的一端称为服务器端。URL——统一资源标识符(Uniform Resource Identifiers)包含了用于查找某个资源的足够的信息,HTTP使用URL来传输数据和建立连接。一个完整的URL包括以下几部分,例:http://www.aspxfa

2022-01-07 14:30:19 2049

原创 java中String类所有用法

文章目录new和直接赋值的区别+拼接字段用法lastIndexOf(int ch)format连接可变字符串concat(String str)intern()replace(char oldChar, char newChar)replace(CharSequence target, CharSequence replacement)replaceAll(String regex, String replacement)replaceFirst(String regex, String replaceme

2022-01-05 16:51:18 1177

原创 ETL(数据抽取、转换、装载)

概念ETL即数据抽取(Extract)、转换(Transform)、装载(Load)的过程,它是构建数据仓库的重要环节。ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。ETL是BI项目重要的一个环节。通常情况下,在BI项目中ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败。ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计ETL的时候我们也是从这三部分出发。

2022-01-04 16:25:12 6055

原创 Serializable接口

文章目录定义使用优点定义一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才能被序列化。什么是序列化?序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。对象的序列化:把对象转换为字节序列的过程。对象的反序列化:把字节序列恢复为对象的过程。当我们需要把对象的状态信息通过网络进行传输,或者需要将对象的状态信息持久化,以便将来使用时都需要把对象进行序列化。使用一般情况下,我们在

2022-01-04 16:03:35 398

原创 泛型通配符

通常情况下,使用T,E,K,V,?。提高代码可读性,约定的意义是:?表示不确定的 java 类型T (type) 表示具体的一个java类型K V (key value) 分别代表java键值中的Key ValueE (element) 代表Element其中?又可以分为上界通配符 < ? extends E>:用 extends 关键字声明,表示参数化的类型可能是所指定的类型,或者是此类型的子类。类型参数列表中如果有多个类型参数上限,用逗号分开。下界通配符 < ? s

2022-01-04 14:52:31 280

原创 one-hot编码

文章目录概念数据对象编码方式概念数据对象对离散的,无序的数据进行特征数字化。例如: 性别特征:["男","女"] 祖国特征:["中国","美国,"法国"] 运动特征:["足球","篮球","羽毛球","乒乓球"]那么特征是 [“男”,“中国”,“乒乓球”] ,就可以用 [0,0,4] 来表示。编码方式One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。One

2021-12-30 17:08:33 298

原创 终-模式总结

创造性模式创造型模式抽象了实例化的过程。它们帮助一个系统独立于如何创建、组合和表示他的那些对象。创造性模式都会将关于该系统使用哪些具体的类的信息封装起来。允许客户用结构和功能差别很大的”产品“对象配置一个系统。配置可以是静态的,即在编译时指定,也可以是动态的,就是运行时再指定。抽象工厂:提供一个创建一系列或相关依赖对象的接口,而无需指定它们具体的类。创造型模式隐藏了这些类的实例是如何被创造和放在一起,整个系统关于这些对象所知道的是由抽象类所定义的接口。这样,创造型模式在创建了什么,谁创建它,它是怎么

2021-11-10 15:24:59 86

空空如也

空空如也

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

TA关注的人

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