Java
文章平均质量分 81
全粘架构师
这个作者很懒,什么都没留下…
展开
-
在Java中 String能存储多少个字符?
然而,对于一些不常用的字符或扩展字符集中的字符,UTF-16可以使用一对4个字节的序列来表示,即所谓的代理对(surrogate pair)。关于String能存储多个字符,这个是面试者在面试中经常被提及的问题,这个问题可以问的很浅,也可以问的很深,具体看面试官看了你的简历后,对你的能力有什么样的看法,今天,我们就这个问题,深入的了解一下。总结:在Java中,String类型在编译阶段的最大长度为65534个字符,而在运行时理论上可以存储约2GB的字符,但实际可用长度会受到系统资源和JVM实现的限制。原创 2024-09-23 14:35:41 · 1078 阅读 · 0 评论 -
Spring如何既返回实体同时下载文件
你可以将文件内容以Base64等方式编码后作为字符串嵌入到返回的实体中。客户端需要解码这个字符串以获取原始文件内容。这种方法适用于文件内容较小的情况。// 填充其他所需信息客户端收到响应后,需要解码这个字段来获取原始文件内容。原创 2024-08-28 08:27:42 · 487 阅读 · 2 评论 -
Stream流在日常开发中的使用
Java 8 引入的 Stream API 提供了丰富的功能,使得对集合数据进行处理变得更加简洁和高效。Stream API提供了丰富的方法来操作数据流,其中包括了mapflatMapfilter等常用方法。这些方法使得对集合数据进行转换、过滤、分组、排序等操作变得简单而直观。了不起整理了日常开发中经常使用到的方法,帮助老铁们更好地理解和运用Java 8 Stream API。原创 2024-08-28 08:26:20 · 486 阅读 · 0 评论 -
都在说计算机行情不好,却很少人说因为什么
随着高考的落幕,我的表妹急切地向我咨询专业选择的问题。以往,对于那些对未来迷茫、缺乏特定兴趣的学生,我会毫不犹豫地推荐计算机科学·。毕竟在这个科技日新月异的时代,掌握一些计算机技能无疑是明智的选择。记得张老师曾说过,计算机是寒门子弟改变命运的最佳途径,直至疫情爆发前,这确实是一个不争的事实。原创 2024-08-28 08:24:40 · 408 阅读 · 0 评论 -
ClassLoader深入探索
在自定义 ClassLoader 之前,我们需要了解 Java 类加载器的工作原理。Java 类加载器遵循所谓的“双亲委派模型”。简单来说,当一个类加载器收到类加载请求时,它会先将这个请求委托给父类加载器去完成,只有在父类加载器无法完成请求时,自己才会尝试去加载这个类。这种模型确保了 Java 核心库的稳定,并避免了类的重复加载。然而,这也限制了我们在某些情况下对类的加载方式的控制。为了打破这个限制,我们可以创建自己的类加载器。要自定义一个 ClassLoader,我们需要继承findClass和。原创 2024-08-21 08:28:42 · 292 阅读 · 0 评论 -
Java堆和栈的区别
Java堆和栈作为Java虚拟机内存管理的重要组成部分,在存储方式、内存特点、垃圾回收机制和使用场景等方面有着显著的区别。理解这些区别可以帮助我们更好地编写高效、稳定的Java程序。在实际开发中,需要根据程序的特性和需求选择合适的数据结构和算法,合理地利用堆和栈的优势来提高程序的性能和稳定性。同时,也需要关注堆和栈的使用情况,避免出现内存溢出或者资源过度消耗的问题。原创 2024-08-21 08:27:11 · 908 阅读 · 0 评论 -
Java的LinkedHashMap 源码解析
LinkedHashMap 是一个有序的 Map,它维护元素的有序性,可以按照插入顺序或访问顺序排列元素。这个有序性是通过维护一个双向链表来实现的。另外,LinkedHashMap 提供了参数来决定是否在访问元素时移动元素,以实现 LRU 缓存功能。这使得 LinkedHashMap 成为一个非常有用的数据结构,适用于需要有序性和缓存功能的场景。原创 2024-07-19 08:42:04 · 849 阅读 · 0 评论 -
Java的HashSet源码分析
在编程的世界里,有一种神奇的工具,它小巧却强大,灵活而可靠,它就是 HashSet。然而,你是否曾经好奇过,这么强大的工具,其背后的实现原理是怎样的呢?今天,让我们一起揭开 HashSet 源码的神秘面纱,探索这个 Java 世界中的神奇数据结构。首先,我们需要明白,HashSet 并不是一个简单的集合,它是基于哈希表实现的一种集合。哈希表是一种数据结构,通过哈希函数将元素映射到数组的一个位置,实现快速的查找。而 HashSet 则在此基础上,增加了一些额外的功能,使得它在存储和查找元素时更加高效。原创 2024-07-19 08:40:44 · 1013 阅读 · 0 评论 -
Fork_Join模式:分治和Work-Stealing的完美结合
Work-Stealing通过允许空闲的处理器主动从其他处理器“偷取”任务来解决这个问题,保持了负载的均衡,提高了整体并行计算的效率。Fork/Join模式以其独特的分治和Work-Stealing结合的方式,成为解决可分解并行问题的一项卓越选择。Fork/Join模式的核心之一是分治思想,这是一种通过将问题分解成更小、更容易解决的子问题来求解复杂问题的策略。在选择使用Fork/Join模式时,开发者应当注意任务的划分和合并逻辑,确保适用于分治思想和Work-Stealing机制的问题结构。原创 2024-07-18 08:52:12 · 719 阅读 · 0 评论 -
使用Fork_Join模式解决可分解并行问题
使用Fork/Join模式时,需要仔细评估问题的特性,并选择合适的并行编程模型。我们可以将数组分成两半,分别计算每一半的总和,然后将这两个部分的结果相加,从而得到整个数组的总和。Fork/Join模式的优势在于它能够充分利用多核心架构,提高任务的并行度,从而加速程序的执行。ork/Join模式的原理和应用,我们能够更好地应对并发编程的挑战,提高程序的性能和效率。这是一个简化的例子,实际上,Fork/Join模式可以处理更复杂的任务分解和合并逻辑。方法是一个阻塞方法,会等待任务执行完成并返回结果。原创 2024-07-18 08:51:13 · 508 阅读 · 0 评论 -
自定义 Java ClassLoader:深入探索
在自定义 ClassLoader 之前,我们需要了解 Java 类加载器的工作原理。Java 类加载器遵循所谓的“双亲委派模型”。简单来说,当一个类加载器收到类加载请求时,它会先将这个请求委托给父类加载器去完成,只有在父类加载器无法完成请求时,自己才会尝试去加载这个类。这种模型确保了 Java 核心库的稳定,并避免了类的重复加载。然而,这也限制了我们在某些情况下对类的加载方式的控制。为了打破这个限制,我们可以创建自己的类加载器。要自定义一个 ClassLoader,我们需要继承findClass和。原创 2024-07-16 08:39:28 · 508 阅读 · 0 评论 -
Java `loadClass`与`forName`方法的比较分析
在Java编程中,类的加载是一个基础而关键的概念。开发人员经常需要在运行时加载类,无论是为了动态地扩展应用程序的功能,还是为了延迟加载某些资源密集型的类。Java提供了几种方法来实现这一点,其中loadClass和forName是最常见的两种。本文将对这两个方法进行比较分析,探讨它们的使用场景和潜在的差异。loadClass。原创 2024-07-15 16:17:56 · 336 阅读 · 0 评论 -
远离不写注释的程序员
这仿佛成了一个死循环大家都有过这样的经历灵感上来了,疯狂敲代码大几百行写完真有成就感但是队友不高兴了没注释看不明白所以,现在是否写注释已经从行业约束问题降低到最基本的道德问题了。原创 2024-06-24 17:27:31 · 320 阅读 · 0 评论 -
通过开发日志记录来学习AOP
我们先了解一下,AOP一般常见场景,AOP的使用,更多用于日志场景、一般被用于日志诊断上下文,比如logback映射辅助上下文,或者用于辅助信息,比如方法执行时间,我们经常会在方法执行前获取一个时间,方法执行后获取一个时间,前者减去后者得到这个方法执行的时间。做过Web平台的,基本都清楚,大多数的Web平台都会需要记录接口调用的记录,不要小看它,认为它似乎没什么用,很多的个人习惯就是通过这种方式小成本的被挖掘出来。的完成一个接口日志的记录,建议刚入行的新人,看完亲手敲一遍。这次介绍的是,如何通过AOP来。原创 2023-07-20 08:29:13 · 69 阅读 · 0 评论 -
用Java的OSGi框架构建灵活模块化应用
OSGi是一种面向服务的模块化框架它将应用程序划分为多个独立的、可重用的模块每个模块被称为一个bundle每个bundle都有自己的生命周期、类加载器和依赖管理机制OSGi框架提供了动态部署、服务导向、类加载隔离和生命周期管理等关键特性使得应用程序更具灵活性和可维护性。原创 2023-07-20 08:26:54 · 557 阅读 · 0 评论 -
Java代理agent技术解密:揭秘方法计时器的神奇实现
在Java中,"agent"是指Java代理技术,它允许开发人员在应用程序运行时动态地修改、监视和分析Java应用程序的行为。Java代理技术是Java的一项高级特性,它允许开发人员在运行时通过代理程序来检测和修改Java应用程序的字节码。原创 2023-06-19 17:12:30 · 154 阅读 · 0 评论 -
如何用函数式接口重构常见模式
但是,在Java 8中,我们可以使用Lambda表达式和函数式接口来实现更简单和更直观的策略模式。在Java中,回调函数通常被实现为接口,该接口只有一个方法,该方法在异步操作完成时被调用。但是,在Java 8中,我们可以使用Lambda表达式和函数式接口来实现更简单和更直观的映射。总的来说,使用Lambda表达式和函数式接口可以简化代码,使代码更加直观和易于理解。但是,在Java 8中,我们可以使用Lambda表达式和函数式接口来实现更简单和更直观的过滤器。原创 2023-06-05 09:48:27 · 137 阅读 · 0 评论 -
Java的异常究竟是怎么一回事
包含了异常的类型、异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printStackTrace。程序员平常说的异常就是指Exception,因为这类异常一旦出现,你就要对代码进行更正,修复程序。1、异常本身不是语法层面的错误,它的本质是程序在执行过程中,出现非正常情况。异常天天见,本文主要围绕Java的异常体系和分类简单讲讲Java的异常。:异常产生后,通过代码可以纠正处理,保证程序运行,例如文件不存在异常。2、异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。原创 2023-05-16 08:19:16 · 54 阅读 · 0 评论 -
Java的try-with-resources
在try-with-resources语句块中,我们创建一个BufferedReader对象并将其包装在try语句的括号中,这样在try块执行结束后,它会自动关闭资源。Java 7中引入的try-with-resources语法糖是一个非常有用的特性,它使得在代码中使用资源(例如文件或数据库连接)变得更加简单、方便和安全。在try-with-resources语句块中不需要在外部编写return语句,因为资源将在块结束时自动关闭,并且我们可以在try块中直接返回所需的结果。原创 2023-05-16 08:17:23 · 661 阅读 · 0 评论 -
MagicAPI快速入门
Magic-API是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口原创 2023-05-12 09:30:35 · 2726 阅读 · 0 评论 -
Java自动化-selenium
Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器(2018年开发者说暂停开发,chromedriver也可以实现同样的功能),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。个人通俗的理解就是:模拟人的行为去各个网站溜达,点点按钮,查查数据,或者把看到的信息背回来。就像一只蜘蛛在一幢楼里不知疲倦地爬来爬去。原创 2023-05-09 11:47:43 · 1199 阅读 · 0 评论 -
远程调试在K8S的POD中的Java应用程序
现在越来越多的公司选择利用Kubernetes来部署和管理Java应用,那么当运行在k8s中的应用运行异常时,除了看日志,远程调试也是个非常实用的办法。接下来,本文将通过实际操作带大家学习如何远程调试!原创 2023-05-08 10:39:31 · 757 阅读 · 0 评论 -
如何动态刷新Spring应用程序属性
如果只是为了更改配置文件,大家都不想发布新版本的应用程序/服务。我们希望开发、测试、生成环境等都能实现实时刷新应用程序属性。幸运的是,有很多选项可以将您的配置外部化,Spring Boot 甚至支持这种开箱即用的逻辑。这些解决方案中的大多数都需要重新启动应用程序/服务原创 2023-05-04 17:38:20 · 386 阅读 · 0 评论 -
Java跨平台你真的理解对了吗?
如果你是老鸟,看到此文或许能引发你更多的思考,特别是可能让你想起某次jvm面试题,或许你也有兴趣研究一下.class文件。原创 2023-04-27 14:24:39 · 102 阅读 · 0 评论 -
必知必会的强大SPEL工具
Spring 表达式语言(缩写为 SpEL)是一种功能强大的表达式语言。在Spring产品组合中,它是评估表达式的基础。它支持在运行时查询和操作对象图。原创 2023-04-19 16:33:54 · 492 阅读 · 0 评论 -
Java的注解
注解(Annotation),可声明在class、field、method、parameter等前面,有叫它元数据的,并且它是JDK1.5才引入的特性,目前在SpringBoot等框架中被广泛使用。使用格式:@注解名(属性名=属性值, …)获取注解定义的位置的对象Class、Method、Field获取指定的注解调用注解中的抽象方法获取配置的属性值。原创 2023-04-17 10:11:35 · 130 阅读 · 0 评论 -
Java的整数List能存字符串对象吗
今天在写代码时,想到一个有趣的面试题,如题List能够存String对象吗?原创 2023-04-11 11:57:37 · 142 阅读 · 0 评论 -
并发基础概念
本文涉及的六个问题,全部出自于博主在大厂面试,所遇到问题。原创 2023-03-31 08:21:29 · 85 阅读 · 0 评论 -
5分钟快速理解redis分布锁
如果锁还存在,那么等待释放锁的消息,这里采用了信号量来阻塞线程,当锁释放并发布释放锁的消息后,信号量的release方法被调用,此时被信号量阻塞的队列中的第一个线程就可以继续尝试获取锁了。大家看这张图可以看到,redisson还采用了redis的消息订阅与发布,如果一个线程设置了waitTime,他就会去在这个时间里去等待,订阅了一个channel,当占锁线程一旦释放了锁,占锁线程就回去发布一条消息,等待的线程订阅到了 就可以去重试再占锁。如果等待到了锁释放时间的通知,则开始重新进入循环开始重试加锁。原创 2023-03-15 08:48:05 · 136 阅读 · 0 评论 -
5分钟讲清楚常用加密算法
最早的密码应用,都伴随着阴谋与战争。中国古代的“阴符”、“阴书”就是其中的代表。原创 2023-03-13 10:05:30 · 273 阅读 · 0 评论 -
设计模式系列整理-03-代理模式
解决类之间的线性调用问题原创 2023-02-22 11:17:57 · 73 阅读 · 0 评论 -
设计模式系列整理-02-建造者模式
网上99%的建造模式都说错了,只看这一篇就学会builder模式原创 2023-02-10 09:36:47 · 98 阅读 · 0 评论 -
设计模式系列整理-01-工厂模式
工厂模式谁不会?原创 2023-02-01 14:05:13 · 81 阅读 · 0 评论 -
程序员摸鱼必备-用人工智能帮我写代码
写程序,有靠天赋的,有靠粘贴的,有靠AI的原创 2023-01-14 09:10:14 · 2715 阅读 · 1 评论 -
Elastic Search 入门使用说明
ES的安装、配置、与Java项目集成运用翻译 2022-12-20 08:42:35 · 1202 阅读 · 0 评论