一些任务调度的概念杂谈 依赖:依赖管理是整个DAG调度的核心。调度依赖包括依赖策略和依赖区间。依赖分为任务依赖和作业依赖,任务依赖是DAG任务本身的依赖关系,作业依赖是根据任务依赖每天的作业产生的。两者在数据存储模型上有所不同。作业依赖树存储的多了两个时间:调度时间,数据时间。job依赖:作业依赖:依赖是由依赖策略和调度依赖区间组成依赖策略。
tinyint数据库类型 时,确保使用的 ORM 框架或数据库驱动支持该映射规则。MyBatis、Hibernate 等框架一般都能处理这些类型转换,但在配置映射文件或注解时要特别注意字段类型,以确保数据一致性。在 ORM 框架(例如 MyBatis、Hibernate 等)中,一般会自动完成数据库。这种映射在布尔状态的数据库字段中非常常见,比如标记删除状态的。的取值范围(-128 到 127),建议映射为 Java 的。类型,避免值超出范围引起的数据转换错误。),或者表示其他数值含义时,使用。的转换,使得数据存取更直观。
Mybatis中Dao接口中支持方法重载吗 方法重载(Method Overloading)是指在同一个类中定义多个方法,它们具有相同的方法名但参数列表不同。在 DAO 层接口中,可以根据不同的需求和条件定义多个方法,提供不同的查询或操作方式。如果在 XML 映射文件中出现多个相同的方法名,则会导致冲突,MyBatis 在解析时无法确定具体调用哪个方法。如果需要实现不同的查询或操作逻辑,可以考虑使用不同的方法名或者使用动态 SQL 来实现条件判断,以满足不同的需求。在 MyBatis 的 XML 映射文件中,是不支持方法重载的。
HashMap添加元素的详细解读 int n, i;else {K k;e = p;else {resize();;break;break;p = e;if (e!if (!++modCount;resize();
问题场景在使用baseMapper里面的saveOrUpdata的方法时,更新数据,当数据库对某个字段更新时,数据库已经有数据了,但是更新时的字段是已经空了,这个时候mybatisplus并不会将更新 【代码】问题场景在使用baseMapper里面的saveOrUpdata的方法时,更新数据,当数据库对某个字段更新时,数据库已经有数据了,但是更新时的字段是已经空了,这个时候mybatisplus并不会将更新。
EasyExcel报错 ExcelDataConvertException: Can not find ‘Converter‘ support class List ExcelDataConvertException: Can not find ‘Converter‘ support class List
十大排序算法 由于用来计数的数组C的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量时间和内存。通俗地理解,例如有 10 个年龄不同的人,统计出有 8 个人的年龄比 A 小,那 A 的年龄就排在第9 位,用这个方法可以得到其他每个人的位置,也就排好了序。2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。
MySql数据库 事务是数据为了保证数据操作的原子性,隔离性,持久性,一致性,为数据库提供的一套机制,在同一事务中,如果有多条sql执行,事务可以确保执行的可靠性。:支持事务,支持行级锁(一个事务对某行数据操作时,只会锁定某一行数据,不锁定其他行,效率高),支持外键约束,支持缓存,支持全文索引,不会存储表中的总行数。4.一致性:数据经过很多次的操作,最终的结果要与预期的结果一致,保证数据的完整性,原子性,持久性,隔离性都是为了保证数据的一致性。:B事务在开启后的两次查询中,两次查询的结果是相同的,解决了不可重复读,脏读。
springboot集成mybatis-plus无法扫描到mapper.xml,因为xml文件没有在resources文件下,无法被扫描到所以需要修改配置 mapper-locations: classpath*:**/mapper/xml*/*.xml* #配置正确的文件路径。--指定资源的位置(xml放在resources下,可以不用指定)-->-- xml放在java目录下-->
使用阿里云实现短信验证码 在等待签名和发送模板通过审核之后就可以配置我们的发送方法,我们使用的是redis来存储发送的验证,用来起到验证作用。在Maven中添加需要使用的jar包。然后申请自己的签名,发送的短信模板,之后点击右上角的头像,点击AccessKey,选第一个就行,然后保存这两个对应的值。然后是调用发送短信的类,在阿里云操作界面点击这个。接下来是使用redis来存储数据的工具类。需要填的值,填到下方代码的空缺位置即可。首先去阿里云中开启短信服务。添加自己redis的配置。
JUC基础认识(2) 核心池的大小,这个参数跟后面讲述的线程池的实现原理有非常大的关系。在创建了线程池后,默认情况下,在创建了线程池后,线程池中的线程数为 0,当有任务来之后,就会创建一个线程去执行任务,当线程池中的线。:对正在执行的任务全部发出 interrupt(),停止执行,对还未开始执行的任务全部取消,并且返回还没开始的任务列表。况下,只有当线程池中的线程数大于 corePoolSize 时,keepAliveTime 才会起。作用,直到线程池中的线程数不大于 corePoolSize,即当线程池中的线程数大。
JUC并发编程 在JMM的规定中,所有的变量都存放在主内存中,当线程调用主内存中的变量时,会拷贝一份数据到该线程的独享的工作内存中,来在此线程中来对该变量副本进行操作,操作完成后会将修改后的变量重新写会到主内存中。当一个线程对共享的主内存变量进行修改后,其他的线程能否立马发现,并及时更新自己的缓存的值。即每次判断我的预期值和内存中的值是不是相同,如果不相同则说明该内存值已经被其他线程更新过了,因此需要拿到该最新值作为预期值,重新判断。JMM是指java内存模型,和JVM不同,它是不存在的,是一个规范模型,是一种约定。
ThreadLocal线程变量副本概念问题 当一个线程中调用一个ThreadLocal对象时,它会获取该线程的独立变量副本,并在该副本上进行操作,从而避免了线程安全问题。具体来说,当一个线程调用ThreadLocal对象的get()方法时,它会获取该线程的独立变量副本,并返回该副本的值。当一个线程调用ThreadLocal对象的set()方法时,它会获取该线程的独立变量副本,并在该副本上设置新的值。因此,不同线程之间的变量值是相互独立的,互不干扰。下面是一个示例,展示了如何在一个线程中调用。
垃圾回收机制 有些语言不支持垃圾自动回收,需要手动回收,而java是支持自动垃圾回收的,但是垃圾回收不是java语言首创的,垃圾回收关系的问题:那些区域需要回收,什么时候回收,如何回收。java的自动回收经过长时间的发展,已经非常强大了。
JVM虚拟机概述(3) Java 虚拟机规范中明确说明:”尽管所有的方法区在逻辑上是属于堆的一部分,但对于 HotSpotJVM 而言,方法区还有一个别名叫做 Non-Heap(非堆),目的就是要和堆分开.编译器(JIT just in time 即时编译器): 将字节码编译,缓存起来,执行更高效, 不会立即使用编译器,将一些频繁执行的热点代码进行编译,并缓存到方法区中,以后执行效率提高了..class(字节码)----解释/编译---> 机器码 (后端编译,在运行时,由执行引擎完成的)
在云服务器安装tomcat和mysql 将 linux 系统安装包解压到指定目录进入 bin 目录执行./startup.sh 命令启动服务器执行./shutdown.sh 关闭服务器在浏览器中访问虚拟机中的 tomcat ip+端口具体操作入下解压tomcat压缩包。
Mybatis-Plus自动生成代码 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'backgroundServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinition
JVM虚拟机概述(2) 是一块很小的内存空间,用来记录每个线程运行的指令位置,是线程私有的,每个线程都拥有一个程序计数器,生命周期与线程一致,是运行时数据区中唯一一个不会出现内存溢出的空间。同样将幸存者1区的存活对象移动到幸存者2区,每次保证一个幸存者区为空的,相互转换。4.每次垃圾回收时,都会记录此对象经历的垃圾回收次数,当一个对象经历过15次回收,仍然存活,就会被移动到老年代。是Java虚拟机中内存最大的一块,是被所有线程共享的,在虚拟机启动时创建,java堆唯一的目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。