- 博客(85)
- 资源 (3)
- 收藏
- 关注
原创 职场常用Excel基础04-二维表转换
在Excel中,二维表(也称为矩阵或表格)是一种组织数据的方式,其中数据按照行和列的格式进行排列。比如,从长格式转为宽格式,或者反之亦然;例如,如果我们有一个记录不同年份销售情况的表格,其中每一列代表一年的销售额,那么这个表格就是宽格式的。Excel提供了丰富的工具和技术用于二维表的转换,无论是长宽格式之间的转换,还是多个工作表数据的合并,甚至是数据的归一化和标准化,都能轻松应对,欢迎大家一起讨论~得到的结果将是长格式的数据表示,其中每一年的销售额都单独占据了多行,且每行对应一个特定的地区和年份。
2025-01-03 22:33:09
791
原创 职场常用Excel基础03-自定义排序
除了标准的升序和降序排序外,Excel还提供了强大的自定义排序功能,允许用户根据自己的需求灵活地调整数据排列方式。有时候,我们的数据可能含有空白单元格,而在某些情况下,不希望这些空白影响最终的排序结果。例如,在统计绩效时,若有的同事没有评分,则对应的单元格为空白。在Excel中,自定义排序是指用户可以根据自己设定的规则对数据进行排序,而不是局限于默认的字母顺序(A-Z)或数字大小(小到大)。Excel的自定义排序功能非常强大且灵活,它不仅支持简单的单列排序,还能应对复杂的多条件排序需求,欢迎大家一起讨论~
2025-01-02 21:22:09
621
原创 职场常用Excel基础02-条件格式
条件格式是Excel中一项非常有用的功能,它允许用户根据特定的规则自动改变单元格的外观(如颜色、字体样式等),从而更直观地展示数据趋势和异常值。通过条件格式,可以快速识别重要信息,简化数据处理流程,并提升工作效率。条件格式的应用场景十分广泛,例如:突出显示销售报表中的最高或最低销售额;甚至还可以创建热力图来展现复杂的多维数据关系。假设我们有一个包含产品销量的表格,想要快速找出销量超过300的商品。通过合理运用条件格式,可以使我们的工作表变得更加生动有趣,同时也极大地提高了分析效率,欢迎大家一起讨论~
2025-01-01 20:31:24
622
原创 职场常用Excel基础01-数据验证
在Excel中,数据验证(Data Validation)是一项非常有用的功能,它可以帮助用户限制输入到单元格中的数据类型和范围,从而保证工作表的数据质量和一致性。通过设置特定的规则,可以防止用户输入无效或错误的数据,简化数据处理流程,并减少人为错误带来的风险。数据验证是指在Excel中为指定的单元格或区域设置输入条件,当用户尝试输入不符合这些条件的数据时,Excel会弹出警告信息阻止该操作,或者允许用户选择是否继续。例如,如果我们想确保某列中的每个单元格内容都是唯一的,即不允许重复值存在。
2024-12-31 22:24:29
893
原创 Spring基础分析15-新版本Spring特性预览
此外,Spring Boot 3.0(与Spring 6兼容)引入了spring-boot-configuration-processor插件的改进,可以自动生成配置元数据文件,从而简化IDE的自动补全和错误检查。此外,Spring 6还增加了对Kotlin语言更好的支持,包括对Kotlin协程的原生支持。上述配置文件定义了一个名为serviceA_route的路由规则,它会将所有匹配/api/serviceA/**路径的请求转发给名为service-a的服务,并去掉最前面的一级路径(即/api)。
2024-12-30 22:18:51
514
原创 Spring基础分析14-用户认证与授权
该框架支持多种安全协议和技术,如LDAP、OAuth2、SAML等,并提供了灵活的配置选项以适应不同的需求。接着,在configure()方法中,我们将这个编码器绑定到了UserDetailsService上,从而确保所有用户的密码都会被正确加密,欢迎大家一起讨论~Spring Security作为Spring框架下的安全组件,提供了强大的工具来帮助开发者构建安全的应用程序。下面是一个具体的例子,展示了如何配置HttpSecurity以启用表单登录,并允许匿名访问某些页面。
2024-12-26 22:01:51
421
原创 Spring基础分析13-Spring Security框架
Spring Security提供了全面的安全服务,在身份验证和授权两个核心领域中,为基于Spring的应用程序提供了强有力的保护。它不仅能够保护Web应用程序,还能保护非Web的Java应用程序。从基础的认证和授权到高级的主题如OAuth2、OpenID Connect以及细粒度的访问控制,Spring Security几乎涵盖了现代应用程序安全性的各个方面,欢迎大家一起讨论~快速了解如何使用Spring Security,创建一个简单的Spring Boot应用程序,并为其添加基本的安全配置。
2024-12-24 22:03:20
595
原创 Spring基础分析12-文件上传下载功能
此段代码定义了一个GET端点/api/files/download/{fileName},接受一个文件名作为路径变量,并尝试从服务器上读取该文件并以附件形式返回给客户端。这里定义了一个POST端点/api/files/upload,它接受一个名为file的MultipartFile作为参数,并尝试将其保存到服务器上的指定目录中。对于更高级的安全措施,如加密传输和访问控制,应根据具体的应用场景进行实施,欢迎大家一起讨论~此外,为了处理文件上传,可能还需要一个用于存储文件的服务器端文件系统或者云存储服务。
2024-12-23 21:38:31
362
原创 Spring基础分析11-表单处理与验证
通过上面的操作,实现了Spring MVC下的表单处理和验证。这个过程不仅简化了前端与后端之间的交互,还增强了用户体验,因为它提供了即时的错误提示。接下来,我们将创建一个新的Maven项目,并添加必要的依赖项。Spring框架提供了一套强大的机制来处理和验证表单数据,使得我们能够更加专注于业务逻辑的实现,而不需要担心底层细节。为了让应用程序支持多语言,我们可以将验证消息存储在一个属性文件中,并根据用户的语言偏好加载相应的资源。在这个例子中,我们将创建两个方法:一个用于显示注册表单,另一个用于处理表单提交。
2024-12-22 22:14:39
273
原创 Spring基础分析10-Spring MVC架构模式详解
当一个HTTP请求进入Spring MVC应用程序时,DispatcherServlet会根据配置的拦截器链(Interceptor Chain)依次调用每个拦截器的方法。Spring MVC拦截器(Interceptor)是Spring框架提供的一个功能,它允许我们在请求到达控制器之前和响应返回给客户端之前执行特定的逻辑。在这个例子中,home方法接受一个Model参数用来向视图传递数据,并返回一个字符串"home"作为逻辑视图名,这将由ViewResolver解析为实际的视图资源。
2024-12-21 20:13:48
919
原创 Spring基础分析09-事务管理策略(编程式、声明式)
编程式事务管理允许我们通过编码明确指定事务边界。声明式事务管理是一种更高层次的抽象,它允许开发者通过配置文件(如XML)或注解(如@Transactional)定义事务规则,而无需在业务逻辑代码中手动管理事务。而对于大型系统或有复杂事务需求的应用,则可能需要结合使用这两种方式。首先,我们需要创建一个新的Spring Boot项目,添加必要的依赖,例如Spring Data JPA和H2数据库驱动。同样的转账逻辑也可以通过声明式事务管理来实现,只需要在方法上加上@Transactional注解即可。
2024-12-20 22:47:44
481
原创 Spring基础分析08-集成JPA/Hibernate进行ORM操作
Spring框架通过其数据访问抽象层,为JPA/Hibernate提供了卓越的支持,使得ORM操作变得更加简单、直观且高效。Hibernate是JPA的一个开源实现,除了遵循JPA规范外,还提供了许多额外的功能,如二级缓存、查询语言HQL等。通过Spring集成JPA/Hibernate进行ORM操作,不仅可以简化数据访问层的实现,还能充分发挥两者的优势,满足复杂的企业级应用需求,欢迎大家一起沟通交流~对于一些复杂的场景,比如需要在一个方法中多次开始和结束事务,编程式事务管理提供了更大的灵活性。
2024-12-19 23:15:22
576
原创 Spring基础分析07-Spring JdbcTemplate
传统的JDBC API虽然提供了对数据库的基本访问能力,但其冗长的代码和繁琐的资源管理非常的不方便。为了解决这些问题,Spring框架引入了JdbcTemplate,通过一系列便捷的方法简化了与数据库的交互过程,同时保持了对SQL语句的直接控制。JdbcTemplate内部采用了模板方法模式,它定义了一个标准的操作流程,而具体的实现则由子类或者回调函数提供。对于一些复杂的查询需求比如多表联结、分组统计等,JdbcTemplate也能轻松处理,关键在于构造合适的SQL语句,并正确地映射结果集。
2024-12-18 23:01:19
519
原创 Spring基础分析06-Spring AOP实现横切面
Spring AOP作为Spring框架的一部分,提供了强大而灵活的AOP支持,极大地简化了这类功能的实现。传统的方式是在每个受影响的方法内部嵌入相应的代码来处理这些功能,这不仅会导致代码冗余,还会增加维护成本。而AOP则提供了一种机制,可以在不修改原有代码的情况下,动态地为这些方法添加额外的行为。这种方式的优点是可以避免运行时的性能开销,但由于需要特殊的编译工具链,因此不如基于代理的方式普及。涉及到用户认证和授权等问题,通过AOP,我们可以在不改变业务逻辑代码的情况下,为敏感操作添加必要的安全控制措施。
2024-12-17 21:50:20
536
原创 Spring基础分析05-自动装配(Autowiring)
没有在任何地方显式地配置这两个bean之间的关系,而是依靠Spring的自动装配机制自动完成了依赖注入。在这个例子中,userService bean被配置为按类型自动装配其依赖项,即它将自动获取一个名为userRepository的bean实例作为依赖。当启用自动装配时,Spring会在启动过程中扫描所有的bean定义,并尝试根据预设的策略找到合适的候选者进行依赖注入。自动装配(Autowiring)作为一种特殊的DI机制,能够根据类型或名称自动解析并注入所需的依赖项,极大地简化了配置过程。
2024-12-15 23:16:17
721
原创 Spring基础分析04-IoC/DI
此外,Spring还支持感知容器的回调接口,如InitializingBean、DisposableBean等,允许Bean在特定阶段执行额外的操作。通过这些模式,Spring有效地解决了传统面向对象编程中的紧耦合问题,促进了组件间的解耦,提高了代码的可测试性和灵活性。依赖注入是实现IoC的一种具体方式,它允许开发者以声明式的方式指定对象间的依赖关系,而不是通过硬编码。随着Java语言的发展,Spring也引入了基于注解的配置方式,让我们可以用更加简洁直观的方式来定义Bean和注入依赖。
2024-12-14 22:14:34
722
原创 Spring基础分析03-Bean的生命周期管理
为了解决这一问题,Spring引入了“提前暴露单例对象”的机制,在Bean尚未完全初始化之前就将其注册到容器中,以便其他Bean可以引用它。Bean生命周期指的是一个Bean从被创建到最终被销毁的过程中所经历的一系列状态变化。了解Bean的生命周期有助于我们更好地控制和定制Bean的行为,从而提高系统的灵活性和性能。Spring框架通过丰富的特性和灵活的配置选项,为我们提供了全面的Bean生命周期管理工具。除了直接在类上使用注解外,还可以在配置类中通过@Bean注解来定义Bean的生命周期行为。
2024-12-13 22:11:11
665
原创 Spring基础分析02-BeanFactory与ApplicationContext
ApplicationContext是BeanFactory的子接口,除了继承了父接口的所有功能外,还增加了许多额外的功能和服务。然而,对于大多数线上应用来说,ApplicationContext提供的额外功能和服务往往更加实用和必要。但是,当运行这段代码时,会发现ApplicationContext会在启动时预加载所有的单例Bean,而不仅仅是按需加载。BeanFactory和ApplicationContext是Spring IoC容器的核心组件,负责管理应用程序中的Bean生命周期和配置。
2024-12-12 22:13:44
571
原创 Spring基础分析01-Spring的核心特性与优势
依赖注入(Dependency Injection, DI)则是IoC的一种具体实现形式,允许开发者以声明式的方式指定对象间的依赖,而不是通过硬编码。每当有来自com.example.service包下的任何服务调用发生时,都会触发相应的前置(@Before)、返回后(@AfterReturning)或抛出异常后(@AfterThrowing)的方法打印出相应的日志信息。Spring框架以其轻量级、灵活性、强大的功能集、优秀的社区支持和文档、以及持续的技术创新,成为Java企业级开发中的首选中间件。
2024-12-11 22:05:29
816
原创 数据结构第一弹-数据结构在不同领域的应用
数组与链表为基本的数据存储提供了基础支持,而栈与队列为特定的操作模式提供了高效的解决方案。Trie树,也称为前缀树或字典树,是一种用于存储字符串集合的数据结构。堆是一种特殊的完全二叉树,分为最大堆和最小堆两种类型。不同的数据结构适用于解决不同类型的问题,从简单的数组到复杂的图结构,每种数据结构都有其独特的应用场景。并查集是一种用来管理不相交集合的数据结构,支持合并两个集合以及查询两个元素是否属于同一个集合的操作。图是由顶点(节点)和边组成的非线性数据结构。边可以是有向的也可以是无向的,还可以有权重。
2024-12-09 22:26:31
578
原创 数据结构第一弹-高级数据结构
Trie树,也称为前缀树或字典树,是一种用于存储字符串集合的数据结构。Trie树以其高效的字符串操作能力在文本处理领域有着广泛的应用,而并查集则因其简洁的接口和强大的集合管理能力成为了许多算法的基础组件之一。除了常见的数组、链表、栈、队列等基本数据结构外,还有许多高级数据结构能够解决特定问题,提供更高效或更优雅的解决方案。并查集是一种用来管理不相交集合的数据结构,支持合并两个集合以及查询两个元素是否属于同一个集合的操作。大家好,今天和大家一起学习一下数据结构中的高级数据结构,比如Trie树,并查集等~
2024-12-08 21:39:43
376
原创 数据结构第一弹-字符串处理
在不同的编程语言中,字符串的内部表示方式可能有所不同,但大多数现代语言都支持Unicode编码,以适应全球多种语言的需求。KMP算法是一种高效的字符串匹配算法,其核心思想是利用已经部分匹配的信息避免重复计算。字符串处理是计算机科学领域的一个重要课题,涉及到许多复杂的算法和技术。暴力法是最直接的字符串匹配方法,它通过逐个字符比较的方式找到子串的位置。简单的字符串压缩可以通过统计连续相同字符的数量来实现。
2024-12-07 16:36:57
644
原创 技术文档的更新机制
技术文档的更新与维护是确保其有效性、准确性和实用性的重要环节,如果文档不能及时更新,那么文档逐渐就失去了意义,因为文档和实际生产的代码已经无法对应。随着技术的发展和生产环境的迭代,持续优化文档内容变得至关重要。
2024-12-06 22:05:02
267
原创 数据结构第一弹-哈希表
在最坏的情况下,例如所有的键都被映射到了同一个槽位上,哈希表的性能可能会退化到O(n)。然而,在实际应用中,由于碰撞(即不同的键可能被映射到相同的索引位置)的存在,性能可能会有所下降。无论是用于简单的键值对存储还是复杂的分布式系统中,哈希表都是一个强大的工具,欢迎大家一起评论区讨论~哈希表(Hash Table)是一种非常重要的数据结构,它通过使用哈希函数将键(key)映射到一个固定范围的索引值上,从而实现快速的查找、插入和删除操作。哈希表是实现字典的理想选择,因为它支持高效的查找、插入和删除操作。
2024-12-06 21:39:04
1096
原创 数据结构第一弹-图
图(Graph)是一种非线性的数据结构,它由节点(也称为顶点,Vertices)和边(Edges)组成。如果是0,则表示不存在边。无论是简单的关系表示还是复杂的网络分析,图都能提供有效的解决方案,欢迎大家一起在评论区讨论~编译器在进行代码优化时,可以将程序转换成控制流图(CFG),通过对图的操作来识别冗余代码、循环不变量等,从而提高程序效率。例如,在关系型数据库中,外键约束可以形成一张图,帮助优化查询性能。BFS则从一个给定的起点开始,逐层向外扩展,先访问离起点最近的所有节点,然后再访问更远一层的节点。
2024-12-06 21:34:33
1138
原创 数据结构第一弹-堆
该算法首先将待排序的数组构造成一个最大堆(或最小堆),然后反复移除堆顶元素并重建堆,直到所有元素都被移除。堆是一种完全二叉树(Complete Binary Tree),其中每个节点的值都大于或等于(最大堆)或小于或等于(最小堆)其子节点的值。如果不满足,则与较大的子节点(最大堆)或较小的子节点(最小堆)交换,直到满足为止。完全二叉树是一种特殊的二叉树,在这种树中,除了最后一层外,每一层都是完全填充的,并且所有结点都尽可能地向左靠拢。上滤操作是指当一个新节点被插入到堆底时,需要检查该节点是否满足堆的性质。
2024-12-05 21:20:48
897
原创 数据结构第一弹-平衡树
无论是AVL树还是红黑树,它们的核心思想都是通过限制树的高度来保证高效的查询速度。平衡树是一种自我调整的数据结构,旨在保持左右子树的高度差不超过一个特定值,以确保插入、删除等操作后树仍能保持较佳的时间复杂度。根据维护平衡的方式不同,平衡树可以分为多种类型,其中最著名的包括AVL树、红黑树等。与AVL树相比,红黑树牺牲了一定程度的严格平衡性,换来的是更简单的维护成本及更高的实际运行效率。平衡树是一种特别重要的数据结构,它通过维持树的高度来保证操作的效率,从而在众多数据结构中脱颖而出。
2024-12-04 22:21:04
1151
原创 数据结构第一弹-栈
栈的这一端通常被称为“栈顶”,相对的一端称为“栈底”。如果是运算符,则弹出栈顶两个元素作为操作数,根据运算符进行计算,并将结果再压入栈。最后,栈中剩下的唯一元素即为表达式的计算结果。栈是一种非常基础且重要的线性数据结构,它遵循后进先出(LIFO, Last In First Out)的原则。今天详细介绍栈的基本概念、操作方法、实现方式以及在实际应用中的示例。如果希望进一步分析,可以尝试实现一些更复杂的栈应用场景,如深度优先搜索算法、内存管理等。此外,也可以考虑研究其他类型的数据结构,如队列、树、图等。
2024-12-04 22:15:45
416
原创 数据结构第一弹-链表
与数组不同,链表中的元素不必存储在连续的内存位置上,这使得链表在插入和删除操作上更加灵活。链表是由一系列节点组成的数据结构,每个节点包含数据部分(可以是一个简单值或复杂对象)和指向下一个节点的引用(指针)。根据节点间链接方式的不同,链表可以分为单向链表、双向链表和循环链表等几种类型。此外,链表也是许多高级数据结构的基础,如哈希表中的桶、树的子节点列表等。这是执行其他操作的基础步骤。若要删除链表中的某个特定节点,则需要找到该节点及其前一个节点。如果要在链表中间或尾部插入节点,则需要先找到正确的插入位置。
2024-12-03 23:45:59
339
原创 数据结构第一弹-数组
虽然数组存在一些局限性,如固定大小和在非末尾位置进行插入/删除操作时效率较低,但通过合理的设计和优化,这些问题往往可以得到缓解。数组之所以能够实现高效的随机访问,是因为它的元素在内存中是连续存储的。每个元素占据固定的内存空间,因此可以通过简单的数学运算计算出任意元素的地址。数组是一种线性数据结构,它由相同类型的元素组成,这些元素按照一定的顺序排列,并且存放在连续的内存空间中。例如,在一个整型数组中,如果每个整数占4个字节,那么第3个元素(索引为2)的地址就是基址加上2×4字节。
2024-12-02 22:30:58
526
原创 数据结构第一弹-算法复杂度分析
算法复杂度分析是一种评估算法性能的方法,它通过计算算法运行时间或空间需求来衡量算法的好坏。通过了解不同类型的复杂度以及如何进行分析,可以更好地选择合适的算法和数据结构,从而构建出更加高效的应用程序。时间复杂度关注的是算法执行所需的时间,而空间复杂度则关注算法执行过程中所占用的内存空间。冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较每对相邻元素,并且如果它们的顺序错误就把它们交换过来。在这个例子中,我们遍历整个数组一次,因此该函数的时间复杂度为 O(n),其中 n是数组的长度。
2024-12-02 22:17:25
900
原创 数据结构第一弹-线性VS非线性
在计算机科学中,数据结构是组织和存储数据的方式,它直接影响到算法的效率。根据数据元素之间的关系,数据结构可以分为两大类:线性数据结构和非线性数据结构。线性数据结构中的元素按照顺序排列,每个元素都有一个直接前驱和一个直接后继(除了第一个和最后一个元素)。常见的线性数据结构包括数组、链表、栈和队列。非线性数据结构中的元素之间没有固定的顺序,通常表现为树形或图状结构。print(numbers) # 输出 [1, 2, 3, 4, 5, 6]大家好,今天和大家一起学习一下数据结构,先了解一下线性与非线性~
2024-12-01 17:17:32
352
原创 数据结构第一弹-二叉树
二叉树及其变种,特别是二叉搜索树,是计算机科学中非常重要的数据结构。通过理解二叉树的基本概念和操作,以及二叉搜索树的特点和优势,可以更加灵活地解决各种问题,欢迎一起讨论~二叉树可以是空树,也可以由一个根节点加上两棵互不相交的左子树和右子树组成。由于二叉搜索树的有序性,我们可以通过比较节点值来高效地定位目标节点。二叉树是一种每个节点最多有两个子节点的数据结构,通常被分为左子节点和右子节点。对于第三种情况,通常选择用右子树的最小节点或左子树的最大节点来替换待删除节点。要删除的节点是叶节点。
2024-12-01 15:27:08
1116
原创 数据结构第一弹-队列
队列是一种特殊的线性表,它只允许在一端进行插入操作,在另一端进行删除操作。在这个例子中,每当有新顾客到达银行时,他们会被加入到队列中。无论是简单的线性队列还是更复杂的循环队列,都能有效解决各种场景,欢迎大家一起讨论~队列是一种非常重要的线性数据结构,遵循先进先出(FIFO, First In First Out)的原则。在网络通信中,队列常用来作为缓冲区,临时存放待发送或接收的数据包。打印机通常有一个任务队列,用户提交打印请求后,这些请求会被加入到队列中,打印机依次处理这些任务。# 使用链表实现的队列。
2024-11-29 23:05:07
682
原创 JAVA基础第一弹-类加载机制
在这个例子中创建了一个名为 MyClassLoader 的自定义类加载器,它从文件系统中特定的路径加载 .class 文件。Java 类加载机制是 Java 虚拟机(JVM)中一个重要的组成部分,它负责将字节码文件加载到内存中,并对其进行验证、准备、解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型。这种模型要求除了顶层的启动类加载器外,其余每个类加载器在尝试加载类时,都会先委托给其父类加载器进行加载,只有当父类加载器无法完成加载请求时,子类加载器才会尝试自己去加载。
2024-11-26 22:11:17
342
原创 JAVA基础第一弹-多线程
大家好,今天和大家一起分享一下线程池相关的内容~线程基础内容什么是线程?线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务线程的生命周期1、新建状态(new)用new创建的线程,处于新建状态,和其他java对象一样,仅仅在堆中分配了内存。 2、就绪状态(Runnable)创建线程后,调用start()方法
2024-11-25 22:16:55
584
原创 JAVA基础第一弹-ThreadLocal
当一个线程调用 ThreadLocal 实例的 get() 方法时,ThreadLocal 会查找当前线程是否已经存在对应的值。具体来说,ThreadLocal 在每个线程内部维护了一个 ThreadLocalMap,这是一个定制化的哈希表,它的键是 ThreadLocal 对象,值则是线程希望存储的对象引用。每个线程都有自己的 ThreadLocal 变量副本,因此不会发生数据共享的情况,这样就避免了多线程间的竞争条件,从而不需要进行同步控制。在这个过程中,我们需要在多个方法之间传递用户的登录信息。
2024-11-24 21:37:04
668
原创 JAVA基础第一弹-ForkJoin解析
Fork/Join 框架是 Java 并发编程中的一个重要工具,它通过“分而治之”的策略来并行处理任务,特别适用于可以分解为多个子任务的计算密集型任务。下面将详细介绍 Fork/Join 框架的原理及其核心机制。1. 基本概念Fork:将一个大任务分解为多个子任务,每个子任务可以独立执行。Join:等待所有子任务完成后,将子任务的结果合并,形成最终结果。2. 核心组件:这是 Fork/Join 框架的核心类,它是一个特殊的线程池,专门用于管理和调度 Fork/Join 任务。
2024-11-23 23:18:17
1127
原创 JAVA基础第一弹-IO模型
NIO(Non-blocking I/O),也称为New I/O,是在Java 1.4版本中引入的一种新的I/O操作方式。与传统的BIO不同,NIO提供了非阻塞式的I/O操作,使得一个线程可以管理多个输入输出通道,极大地提高了程序在高并发场景下的性能和效率。在Java中,BIO(Blocking I/O)是传统的I/O模型,它基于流(Stream)的概念来实现数据的读写操作。在这些应用中,可能需要同时处理成千上万个连接,使用NIO可以显著减少线程的数量,降低系统的资源消耗,提高系统的整体性能。
2024-11-22 23:12:57
562
SSHjar包,可以直接用,很全
2014-12-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人