Java知识点
文章平均质量分 52
java学习笔记
DKPT
I CAN DO IT.
展开
-
Springboot的核心配置文件是什么?
Spring Boot会首先加载application.properties,然后加载application.yml,因此如果在两个文件中定义了相同的属性,那么application.yml中的值将覆盖application.properties中的值。需要注意的是,Spring Boot还支持其他配置文件格式,如application.xml,但application.properties和application.yml是最常用和推荐使用的。这是一个基于属性的配置文件,它使用简单的键值对来设置属性。原创 2024-06-22 06:01:58 · 220 阅读 · 0 评论 -
sql常用的函数与代码示例
【代码】sql语句中常用的函数与代码示例。原创 2024-06-22 06:00:52 · 251 阅读 · 0 评论 -
sql语句中常用的函数有那些
【代码】sql语句中常用的函数有那些。原创 2024-06-22 06:00:27 · 444 阅读 · 0 评论 -
mysql查询使用group by返回的结果是什么
在MySQL中,当您使用GROUP BY语句时,您通常是为了根据一个或多个列对结果集进行分组,并对每个分组应用某种聚合函数(如SUM(), AVG(), COUNT(), MAX(), MIN()等)。aggregate_function(column_name) 是您想要应用的聚合函数和要对其应用该函数的列。使用GROUP BY返回的结果集将包含每个分组的唯一组合以及任何应用的聚合函数的结果。SELECT 子句中的列可以是您要分组的列,也可以是您想要对其应用聚合函数的列。原创 2024-06-21 09:47:08 · 285 阅读 · 0 评论 -
如何设置数据库的隔离级别
PostgreSQL的默认隔离级别是READ COMMITTED。注意:这会影响所有新开启的会话。原创 2024-06-21 09:46:45 · 412 阅读 · 0 评论 -
如何根据CAP原理设计分布式系统
根据CAP原理设计分布式系统时,需要在一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)之间进行权衡和取舍。原创 2024-06-17 08:01:47 · 351 阅读 · 0 评论 -
cap原理是什么?
在分布式系统中的所有数据备份,在同一时刻是否同样的值,即写操作之后的读操作,必须返回该值。这里的一致性指的是强一致性,也就是数据更新完,访问任何节点看到的数据完全一致。原创 2024-06-17 08:01:24 · 599 阅读 · 0 评论 -
spring ioc和aop原理
Spring的IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的两个核心概念,它们分别解决了对象之间的依赖关系管理和系统级问题。原创 2024-06-16 09:30:24 · 549 阅读 · 0 评论 -
Java如何使用flowable流代码示例
Flowable 是一个开源的 BPMN 2.0 工作流引擎,用于在 Java 应用中构建业务流程和案例管理。以下是一个简单的 Java 代码示例,说明如何使用 Flowable API 来部署一个 BPMN 2.0 流程定义,并启动一个流程实例。在实际应用中,可能需要处理流程中的用户任务、等待状态、事件等。流程定义的 key(“myProcess”)是用于启动流程实例的,它应该与 BPMN 文件中的流程定义 ID 或 key 相匹配。首先,确保已经在项目中添加了 Flowable 的依赖。原创 2024-06-14 08:47:48 · 451 阅读 · 0 评论 -
flowable流的配置过程流程API
在Flowable中,异常处理通常通过配置BPMN流程中的边界事件或调用服务任务的异常处理逻辑来实现。同时,Flowable还会将流程实例的参与人信息插入到act_ru_identitylink表中,并将运行中的变量ID插入到act_ru_variable表中。开启流程实例后,Flowable会在数据库中生成流程实例ID,并将模型的各个节点信息插入到act_ru_actinst等运行时表中。在任务执行过程中,可以使用IdentityService API处理用户身份信息,如查询用户、组等。原创 2024-06-13 13:15:11 · 401 阅读 · 0 评论 -
如何处理大文件的分块读取问题
4、流式处理:如果可能的话,最好使用流式处理来处理数据块,而不是将它们全部存储在内存中。2、字符编码:如果文件包含文本数据,并且使用了特定的字符编码(如UTF-8),则在将字节转换为字符串时需要使用正确的字符编码。2、创建缓冲区:创建一个字节缓冲区(如byte[]数组),用于临时存储从文件中读取的数据块。3、循环读取:在循环中,从文件中读取指定数量的字节到缓冲区,直到文件末尾。4、处理数据:对缓冲区中的数据进行处理,如解析、转换或存储。5、关闭文件:读取完成后,确保关闭文件流以释放资源。原创 2024-05-31 07:22:45 · 410 阅读 · 0 评论 -
如何根据文件类型选择合适的读取方法
例如,对于XML文件,可以使用Java的javax.xml.parsers包或第三方库如JDOM、DOM4J等;例如,对于ZIP文件,可以使用Java的java.util.zip包;2、对于较大的文本文件,可以考虑使用java.nio.file包中的Files.lines()方法,它返回一个按行读取的Stream,非常适合流式处理。2、如果需要处理图像或音频文件,可能会使用到专门的库,如Java的javax.imageio包或javax.sound.sampled包。原创 2024-05-30 17:14:08 · 356 阅读 · 0 评论 -
分块读取大文件的一些方法
Java NIO(New I/O)API 提供了一种基于通道(Channel)和缓冲区(Buffer)的 I/O 方式,它可以用来进行高效的 I/O 操作。它将文件或文件区域的一部分直接映射到内存中。这对于处理大文件特别有用,因为它可以避免在读取文件时创建大的临时缓冲区。请注意,虽然MappedByteBuffer可以高效地处理大文件,但它并不总是最佳选择。它依赖于操作系统的内存映射文件实现,并且可能不适用于所有用例。还有一些第三方库,如Apache Commons IO,提供了用于处理大文件的实用工具。原创 2024-05-30 17:13:47 · 265 阅读 · 0 评论 -
Java中的动态绑定是如何实现的
Java中的动态绑定(也称为晚期绑定或运行时绑定)是在运行时根据对象的实际类型来确定要调用的方法的过程。这是Java面向对象编程中的一个重要特性,它允许在运行时实现多态性。原创 2024-04-30 13:31:36 · 152 阅读 · 0 评论 -
jvm基础知识
JVM,即Java Virtual Machine(Java虚拟机),是一种用于计算设备的规范,它是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现。JVM的主要特点是其独立性,可以运行在不同的操作系统上,为Java程序提供跨平台支持。其中,类加载是JVM的重要过程,包括加载、连接和初始化三个阶段。同时,JVM还支持动态加载和卸载类,可以在运行时动态添加、修改和删除类。总的来说,JVM是Java程序运行的核心,为Java程序提供了跨平台、自动内存管理、安全性保障和高效执行的能力。原创 2024-04-29 12:25:04 · 199 阅读 · 0 评论 -
优化SQL语句时如何减少资源消耗
2、减少子查询和JOIN操作:如果可能,尝试将复杂的查询分解为简单的查询,并在应用程序层面处理结果。3、定期维护和重建索引:随着数据的插入、更新和删除,索引可能会变得碎片化,需要定期重建以优化性能。1、定期收集和分析性能数据:使用数据库的性能监控工具或第三方工具来收集和分析性能数据。2、根据数据进行调整:根据收集到的数据调整查询、索引和数据库配置,以持续优化性能。1、调整缓存设置:增加查询缓存的大小或调整缓存策略,以减少重复查询的开销。3、分区表:对于非常大的表,考虑使用分区来提高查询性能和管理效率。原创 2024-04-29 12:24:14 · 703 阅读 · 0 评论 -
如何判断SQL语句的优化效果
优化后的查询应该返回更少的行数,尤其是在使用了更高效的过滤条件或连接策略时。优化后的查询应该减少CPU的占用和内存的使用。优化查询通常应减少不必要的磁盘I/O。2、优化后的查询计划应该显示更有效的索引使用、更少的扫描行数以及更合理的连接顺序。3、对比分析:对比两者的执行时间,如果优化后的查询时间明显缩短,则说明优化有效。2、优化后查询时间:然后执行优化后的SQL语句,并记录执行时间。1、在不同的数据量和数据分布下测试优化后的查询,以确保其稳定性。1、使用EXPLAIN或类似的工具查看查询的执行计划。原创 2024-04-28 20:16:34 · 284 阅读 · 0 评论 -
sql语句中explain功能使用方法与示例
在SQL中,EXPLAIN 语句(或其变种,如 EXPLAIN PLAN、EXPLAIN ANALYZE 等,具体取决于数据库管理系统)用于查看查询的执行计划。这可以帮助数据库管理员和开发者理解查询是如何被数据库优化器解析和执行的,从而找出可能的性能瓶颈并进行优化。下面是EXPLAIN的一般使用方法和一个示例。请注意,不同的数据库系统(如MySQL、PostgreSQL、Oracle等)可能有些许差异,因此建议查阅相应数据库的官方文档以获取最准确的信息。原创 2024-04-28 20:15:58 · 670 阅读 · 0 评论 -
常用SQL语句示例
2、ALTER TABLE语句:用于修改现有表结构,如添加、删除或修改列。4、GROUP BY子句:用于将结果集按照一个或多个列进行分组。1、INSERT INTO语句:用于向数据库表中插入新记录。1、DROP TABLE语句:用于删除整个表及其所有数据。1、UPDATE语句:用于修改数据库表中的现有记录。3、ORDER BY子句:用于对查询结果进行排序。1、DELETE语句:用于从数据库表中删除记录。1、CREATE TABLE语句:用于创建新表。2、WHERE子句:用于过滤查询结果。原创 2024-04-27 09:49:15 · 218 阅读 · 0 评论 -
SQL优化方案示例
2、对于大量数据的列,考虑使用INT而非VARCHAR,如果业务逻辑允许。3、定期审查和优化索引,避免过多的索引占用存储空间并降低写操作的性能。2、使用EXPLAIN命令分析查询执行计划,找出可能的瓶颈。1、选择合适的数据类型来存储数据,避免不必要的类型转换。1、避免在查询中使用SELECT *,只选择需要的列。2、避免在索引列上使用函数或运算,这会导致索引失效。3、减少子查询的使用,考虑使用连接(JOIN)替代。2、清理无用数据和重建索引,以维持数据库的性能。1、为经常用于搜索、排序和连接的列创建索引。原创 2024-04-27 09:48:52 · 261 阅读 · 0 评论 -
多版本并发控制(MVCC)相关知识
多版本并发控制(MVCC=Multi-Version Concurrency Control),是一种用来解决读 - 写冲突的无锁并发控制。也就是为事务分配单向增长的时间戳,为每个修改保存一个版本。版本与事务时间戳关联,读操作只读该事务开始前的数据库的快照(复制了一份数据)。这样在读操作不用阻塞写操作,写操作不用阻塞读操作的同时,避免了脏读和不可重复读。原创 2024-04-26 11:15:02 · 333 阅读 · 0 评论 -
分库分表之后主键id解决方案有哪些
Leaf 是美团开源的分布式ID生成器,能保证全局唯一性、趋势递增、单调递增、信息安全,里面也提到了几种分布式方案的对比,但也需要依赖关系数据库、Zookeeper等中间件。这种方式生成的 id 有序,但是需要独立部署数据库实例,成本高,还会有性能瓶颈。但是,引入了新的组件造成系统更加复杂,可用性降低,编码更加复杂,增加了系统成本。美团技术团队文章:https://tech.meituan.com/2017/04/21/mt-leaf.html。不适合作为主键,因为太长了,并且无序不可读,查询效率低。原创 2024-04-26 11:14:30 · 585 阅读 · 0 评论 -
MySQL的事务隔离级别
最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。原创 2024-04-25 16:11:00 · 298 阅读 · 0 评论 -
InnoDB与MyISAM的区别
3、InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。1、InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务。5、Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高。原创 2024-04-25 16:10:41 · 136 阅读 · 0 评论 -
MySQL常用引擎有哪些?
全表锁,存储在内容中,速度快,但会占用和数据量成正比的内存空间且数据在mysql重启时会丢失,默认使用HASH索引,检索效率非常高,但不适用于精确查找,主要用于那些内容变化不频繁的代码表。全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,占用空间相对较小,对事务完整性没有要求,以select、insert为主的应用基本上可以使用这引擎。外键约束,并发能力强,占用空间是MYISAM的2.5倍,处理效率相对会差一些。行级锁,提供了具有提交、回滚和崩溃回复能力的事务安全,支持自动增长列,支持。原创 2024-04-24 17:59:43 · 283 阅读 · 0 评论 -
数据库的脏读、幻读、不可重复读
所谓脏读是指一个事务中访问到了另外一个事务未提交的数据,获得更新前的值。当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样。它发生在一个事务(T1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据时。原创 2024-04-24 17:59:21 · 714 阅读 · 0 评论 -
数据库锁的相关概念
TABLE,ALTER TABLE等,表锁影响整个表的数据,因此并发性不如行锁好。总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但。总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的。时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一。个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作。乐观锁适用于多读的应用类型,这样可以提高吞吐量。原创 2024-04-23 10:29:38 · 549 阅读 · 0 评论 -
非关系型数据库和关系型数据库区别
NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数。同样也是因为基于键值对,数据之间没有耦合性,所以非常容易。而且不需要经过SQL层的解析,所以性能非常高。使得对于安全性能很高的数据访问要求得以实现。原创 2024-04-23 10:28:51 · 176 阅读 · 0 评论 -
数据库索引学习笔记
4、非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。3、聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,2、索引降低了插入、删除、修改等维护任务的速度(虽然索引可以提高查询速度,3、唯一索引可以确保每一行数据的唯一性,通过使用索引,可以在查询的过程中。2、主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特。位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。1、唯一索引:唯一索引不允许两行具有相同的索引值。原创 2024-04-22 15:31:00 · 473 阅读 · 0 评论 -
数据库范式与数据库事务知识笔记
第三范式:满足第二范式并且表中的非主键字段必须不传递依赖于主键字段,每一列。一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔。事务开始前和结束后,数据库的完整性约束没有被破坏。隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每。持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久。第二范式:满足第一范式并且表中的非主键字段都依赖于主键字段。执行SQL语句,要么全部执行成功,要么全部执行失败。原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。原创 2024-04-22 15:30:18 · 499 阅读 · 0 评论 -
常见的SQL优化策略
常见的SQL优化策略原创 2024-04-21 17:26:03 · 415 阅读 · 0 评论 -
常见查找与排序的数据结构算法与Java代码示例
常见查找与排序的数据结构算法与Java代码示例原创 2024-04-21 17:24:37 · 304 阅读 · 0 评论 -
常见的数据结构、查找与排序算法
6、堆排序:利用堆的性质(父节点值大于或等于子节点值)进行排序,首先构建大顶堆或小顶堆,然后依次将堆顶元素与末尾元素交换并调整堆结构。1、顺序查找:从列表的第一个元素开始,依次比较直到找到要查找的元素或搜索到最后一个元素。适用于数据量较小的列表。2、链表:物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现。5、树:如二叉树、红黑树、AVL树等,具有层次关系的集合,常用于高效查找和排序。1、冒泡排序:通过相邻元素之间的比较和交换,使较大的元素逐渐“浮”到序列的末尾。原创 2024-04-20 21:40:02 · 404 阅读 · 1 评论 -
nginx的各种负载均衡策略与各种负载均衡策略如何配置
nginx的各种负载均衡策略与各种负载均衡策略如何配置原创 2024-04-08 21:50:35 · 907 阅读 · 0 评论 -
git开源平台测评报告如何编写
详细介绍Git开源平台的核心功能和特点。可以包括分布式版本控制、高效性、分支管理、易于协作、安全性等方面的描述。同时,可以列举一些Git平台的主要优势和特性,以便读者对其有一个全面的了解。原创 2024-04-08 06:59:15 · 292 阅读 · 0 评论 -
如何确保正向代理处理的安全性?
如何确保正向代理处理的安全性?原创 2024-04-07 20:39:11 · 245 阅读 · 0 评论 -
nginx的正向代理是什么?如何结合Java实现nginx的正向代理?
nginx的正向代理是什么?如何结合Java实现nginx的正向代理?原创 2024-04-07 20:38:47 · 632 阅读 · 0 评论 -
nginx的负载均衡包括哪些策略配置?Java如何结合nginx实现负载均衡?
在Nginx的配置文件中(通常是nginx.conf或位于/etc/nginx/sites-available/目录下的某个文件),需要定义一个upstream块来指定Java应用程序实例,并配置一个server块来处理传入的请求。1、可以使用Nginx的健康检查模块(ngx_http_health_check_module)来监控后端Java应用程序实例的健康状况,并自动将不健康的实例从负载均衡池中移除。2、根据你的应用程序的特定需求,你可能还需要考虑其他Nginx模块或特性,如限流、访问控制等。原创 2024-04-06 20:35:55 · 966 阅读 · 0 评论 -
Java如何使用nginx实现反向代理
2、编辑Nginx配置文件:找到Nginx的配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf。你的Java应用程序需要能够处理从Nginx接收的请求。3、保存并重启Nginx:保存你的配置文件,并重启Nginx以应用新的配置。1、安装Nginx:首先,你需要在你的服务器上安装Nginx。在示例中,当访问你的域名时,Nginx会将请求代理到Java应用程序,然后Spring Boot会处理这个请求并返回"Hello, World!原创 2024-04-06 20:35:19 · 744 阅读 · 0 评论 -
ngnix的反向代理是什么?有什么作用?
ngnix的反向代理是什么,有什么作用原创 2024-04-05 17:03:48 · 760 阅读 · 0 评论