Java
漆黑的莫莫
这个作者很懒,什么都没留下…
展开
-
经验笔记:JSP(JavaServer Pages)
JSP(JavaServer Pages)是一种用于创建动态网页的技术,它允许在HTML页面中嵌入Java代码,从而实现动态内容的生成。JSP与Servlet一样,都是Java EE平台的一部分,用于开发Web应用程序。以下是关于JSP的一些经验和技巧,旨在帮助开发者更好地理解和使用这项技术。通过上述经验笔记,希望可以帮助你在学习和使用JSP的过程中少走弯路,快速上手并开发出高质量的Web应用程序。记得不断实践和总结经验,以便更好地掌握这门技术。原创 2024-09-05 10:10:51 · 503 阅读 · 0 评论 -
经验笔记:Maven 与 Gradle —— Java 构建工具对比
Maven 和 Gradle 在核心功能上有很多相似之处,但在配置方式、构建方式、依赖管理和扩展性等方面存在显著差异。选择哪个工具应考虑项目的具体需求、团队的技术栈以及个人偏好。在 Java 开发过程中,选择合适的构建工具对于提升开发效率、保证构建一致性以及简化项目管理至关重要。Maven 和 Gradle 是目前最常用的 Java 构建工具,它们不仅能够自动化构建过程,还能有效管理项目依赖。本文将详细介绍这两种工具的基础知识,并对比它们的异同,帮助开发者更好地理解并选择合适的构建工具。原创 2024-09-04 18:51:43 · 1017 阅读 · 0 评论 -
Base64 编码解码与 URL/Query 转义
通过上述方法,您可以有效地处理 Base64 编码在 URL 和查询字符串中的转义问题。希望这篇笔记能帮助您避免常见的错误并提高代码的健壮性。原创 2024-08-18 21:03:53 · 599 阅读 · 0 评论 -
使用 MAT 进行 Java 内存分析
【代码】使用 MAT 进行 Java 内存分析。原创 2024-08-18 21:02:09 · 442 阅读 · 0 评论 -
序列化与反序列化技术-经验笔记
选择合适的序列化技术根据应用场景和性能需求选择最合适的序列化技术。考虑安全性和兼容性在设计序列化方案时,应考虑数据的安全性和向前向后的兼容性。使用序列化库利用成熟的序列化库可以简化开发工作,并提高序列化和反序列化的效率。监控序列化性能定期监控序列化和反序列化的性能,以确保其不会成为性能瓶颈。数据验证在反序列化之前进行数据验证,以确保数据的有效性和安全性。原创 2024-08-18 20:56:43 · 918 阅读 · 0 评论 -
Java 程序运维中的垃圾收集 (GC)
垃圾收集 (GC) 是 Java 虚拟机 (JVM) 的一项重要功能,用于自动回收不再使用的对象所占用的内存空间。理解不同的 GC 类型及其行为对于优化 Java 应用程序的性能至关重要。理解不同类型的 GC 行为对于优化 Java 应用程序的性能至关重要。选择合适的 GC 策略根据应用程序的需求选择合适的 GC 策略,例如高响应时间的应用程序适合使用 Concurrent GC。合理配置 JVM 参数。原创 2024-08-18 20:47:32 · 628 阅读 · 0 评论 -
使用 JVMTI 进行 Java 应用程序调试和性能分析
JVMTI 是 Java 虚拟机工具接口 (Java Virtual Machine Tool Interface) 的缩写,它提供了一系列的 API,允许工具(如性能分析器、调试器和配置工具)与 JVM 交互。通过 JVMTI,你可以访问正在运行的 Java 应用程序的状态信息,包括类加载、线程状态、内存分配、垃圾收集等事件。JVMTI 提供了一种灵活的方式来监控和调试 Java 应用程序。通过使用 JVMTI Agent,你可以获得详细的运行时信息,并使用 GDB 进行更深入的调试。原创 2024-08-18 20:46:42 · 909 阅读 · 0 评论 -
使用 GDB(GNU Debugger)对Java 应用程序进行运维排查
在运维工作中,我们经常会遇到各种复杂的技术问题,尤其是在涉及多语言环境的应用系统中。例如,在 Java 应用程序中使用了 JNI (Java Native Interface) 来调用 C/C++ 代码时,可能会遇到一些难以仅凭 Java 日志定位的问题。这时,GDB 就成为了一个非常有用的工具,可以帮助我们深入到原生代码层面进行调试。GDB 是一个强大的工具,可以帮助我们深入到原生代码层面进行调试,这对于解决 Java 应用程序中涉及原生代码的问题非常有用。的动态链接库中的函数时。原创 2024-08-18 20:44:24 · 285 阅读 · 0 评论 -
使用 GCEasy 进行 Java 应用程序垃圾收集(GC)分析
总结 GC 问题根据 GCEasy 的分析结果,总结导致 GC 问题的主要原因。记录下采取的措施和结果,为未来的优化提供参考。反思解决方案评估解决方案的有效性,思考是否有其他可能的优化方法。保持对 GC 行为的关注,定期检查 GC 日志以预防潜在问题。通过上述步骤,你可以充分利用 GCEasy 来分析 Java 应用程序中的 GC 行为。了解年轻代、老年代、Eden 区域和 Survivor 区域的概念对于诊断和解决 GC 问题至关重要。记得在实践中不断学习和探索,以适应不同的场景和技术挑战。原创 2024-08-18 20:41:58 · 721 阅读 · 0 评论 -
在Java程序运维中使用火焰图
火焰图是一种可视化工具,它可以显示程序的调用堆栈,并以矩形的宽度表示每个函数调用所占的时间比例。这使得开发者和运维人员能够一目了然地看到哪个部分消耗了大量资源,从而帮助快速定位性能瓶颈。原创 2024-08-17 21:26:42 · 527 阅读 · 0 评论 -
使用 Hutool 进行 Java 开发
Hutool 是一个现代的、Java 编写的工具类库,它提供了大量实用的功能,旨在简化日常的开发工作。Hutool 的设计哲学是“让 Java 更简单”,它试图以一种非侵入性的方式集成到现有的项目中,而不需要引入框架级别的依赖。Hutool 是一个非常实用的工具库,可以极大地提高 Java 开发者的生产力。通过使用 Hutool,你可以减少重复代码的编写,专注于业务逻辑的实现。如果你正在寻找一个轻量级但功能全面的工具库来简化你的 Java 开发流程,Hutool 绝对值得考虑。原创 2024-08-17 20:59:05 · 851 阅读 · 0 评论 -
使用 NMT进行 Java 应用程序诊断
NMT (Native Memory Tracking) 是 Java 虚拟机 (JVM) 提供的一种功能,用于跟踪和报告 JVM 在本地内存中的使用情况。这包括了直接内存分配、JNI 本地堆分配等。NMT 可以帮助开发人员和系统管理员理解 Java 应用程序对本地内存的使用情况,从而更好地诊断性能问题和潜在的内存泄漏。Native Memory Tracking (NMT) 是一个强大的工具,可以帮助你深入了解 Java 应用程序在本地内存方面的行为。原创 2024-08-17 20:53:00 · 510 阅读 · 0 评论 -
使用 jcmd 进行 Java 应用程序诊断和管理
jcmd是 Java Development Kit (JDK) 中的一个命令行工具,用于发送命令到正在运行的 Java 虚拟机 (JVM) 实例。jcmd提供了一个简单的方式来执行一些诊断和管理任务,而无需启动额外的工具或图形界面。jcmd是一个非常有用的工具,可以在不需要启动图形界面工具的情况下执行各种诊断和管理任务。它特别适合在生产环境中使用,因为它的开销较小,不会显著影响应用程序的性能。通过掌握jcmd的基本用法和常见命令,你可以更有效地监控和管理 Java 应用程序。原创 2024-08-17 20:51:16 · 869 阅读 · 0 评论 -
使用 VisualVM 进行 Java 应用程序性能分析
VisualVM 是一个强大的 Java 性能分析工具,它可以帮助开发者监控和调试 Java 应用程序的性能问题。它集成了多种功能,包括但不限于内存分析线程分析CPU 分析垃圾回收监控以及JMX(Java Management Extensions) 监控等。本文将详细介绍如何使用 VisualVM 来解决常见的 Java 应用程序性能问题。原创 2024-08-17 20:25:34 · 894 阅读 · 0 评论 -
使用 jconsole 进行 Java 应用程序性能监控
jconsole是一个强大的 Java 监控工具,它可以帮助开发者监控 Java 应用程序的运行状况。无论是内存使用、垃圾收集还是线程活动,jconsole都能提供详尽的信息以便于调试和优化。jconsole是一个非常有用的工具,可以帮助开发者深入理解 Java 应用程序的运行情况。通过定期使用jconsole来监控应用程序,可以提前发现性能问题,并及时采取措施进行优化,从而提高应用程序的整体稳定性和性能。原创 2024-08-17 20:17:05 · 290 阅读 · 0 评论 -
使用 jstat 进行 Java 应用程序性能监控
jstat是 Java 开发工具包 (JDK) 中的一个命令行工具,用于监控 Java 虚拟机 (JVM) 的运行时状态,特别是垃圾回收 (Garbage Collection, GC) 的行为。通过使用jstat,你可以监控和诊断 Java 应用程序的内存使用情况,尤其是在性能调优和内存泄漏检测方面非常有用。jstat是一个强大的工具,可以帮助你监控和调优 Java 应用程序的性能。通过上述技巧和最佳实践,你可以更有效地使用jstat来提高应用的稳定性和性能。原创 2024-08-17 20:11:35 · 869 阅读 · 0 评论 -
jstack 使用经验笔记
jstack是一个非常有用的工具,用于获取正在运行的 Java 应用程序中的线程堆栈信息。它可以帮助你诊断各种线程问题,比如死锁、线程挂起、响应时间过长等。jstack是一个强大的工具,可以帮助你快速诊断 Java 应用中的线程问题。通过上述技巧和最佳实践,你可以更有效地使用jstack来提高应用的稳定性和性能。原创 2024-08-17 20:04:52 · 463 阅读 · 0 评论 -
Arthas基础教程笔记
Arthas 是一个非常强大的工具,可以帮助你更好地理解和诊断Java应用程序的问题。随着对它的深入了解,你会发现更多实用的功能。原创 2024-08-17 19:40:49 · 262 阅读 · 0 评论 -
使用jmap进行 Java 内存分析
jmap生成应用程序的堆转储文件(Heap Dump),用于进一步的内存分析。显示 Java 应用程序的内存使用情况。列出应用程序中对象的数量和大小。原创 2024-08-17 19:38:32 · 289 阅读 · 0 评论 -
为什么应当在项目中使用依赖注入?
依赖注入提供了一种更灵活、更易于维护的方式来组织和管理代码。它不仅可以帮助你构建可扩展和可测试的应用程序,还能提高代码质量和团队协作效率。依赖注入有助于降低类之间的耦合度,使得类之间的关系更加扁平化。这并不是说类之间的关系变成了类似一维数组的结构,而是说依赖关系更加清晰且分离。每个类负责自己的职责,而依赖项则由外部容器来管理和注入,这样类之间的交互变得更加明确和可控。这种扁平化的结构有助于代码的可维护性和可测试性,因为类之间的依赖关系不再那么紧密,可以更容易地进行修改和扩展。原创 2024-07-31 19:16:54 · 878 阅读 · 0 评论 -
Spring框架中依赖注入实现手段的选择(基于XML 或 基于注解)
XML 配置更适合于处理复杂的依赖关系,尤其是在需要高度定制化配置的情况下。基于注解的注入更适合于依赖关系较为简单的情况,以及追求代码简洁性和易于维护性的场景。在实际应用中,可能会根据具体情况混合使用这两种方式。例如,可以在大多数地方使用基于注解的注入,而在需要特别定制化的配置时使用 XML 配置文件。此外,即使在使用基于注解的注入时,仍然可以使用 XML 配置文件来定义特定的 Bean 或者配置特殊的场景。这种混合使用的方式可以充分利用两种方法的优点。原创 2024-07-30 14:38:46 · 397 阅读 · 0 评论 -
Spring中依赖的三种注入方式
首先,我们定义一个简单的} }} }} }Component;@Override每种注入方式都有其适用场景和优缺点。Spring 官方推荐使用构造函数注入,因为这种方式可以更好地支持不可变性和最终性,有助于创建易于理解和维护的代码。同时,字段注入也经常被使用,因为它简化了代码。但在使用字段注入时需要注意避免潜在的副作用,比如依赖的不确定性。原创 2024-07-30 14:31:37 · 441 阅读 · 0 评论 -
为什么推荐使用@RequiredArgsConstructor代替@Autowired?
它可以应用于字段、构造器、setter 方法以及配置方法。是 Spring 提供的一种强大功能,是用于自动装配依赖项的注解。使用 Lombok 库中的。在 Spring 框架中,可以带来一些额外的好处。原创 2024-07-30 14:03:33 · 397 阅读 · 0 评论 -
重写一个实现自动匹配输入更改下拉框选项的JComboBox类
过去重写过几次JComboBox类,都是实现了自动匹配输入更改下拉框选项的功能,但是与之前的所写的程序的耦合度太高,因此便想要重写一个实现功能的同时还是高内聚的JComboBox类。原本的下拉框数据:未输入时: / 输入123后再删去3再删去2再删去1时:输入1时: / 输入123后删去3再删去2时:再输入2时:/ 输入123后删去一个3时:再输入3时:代码:........................原创 2022-06-06 18:01:01 · 1064 阅读 · 0 评论 -
com.microsoft.sqlserver.jdbc.SQLServerException: 从数据类型 nvarchar 转换为 datetime 时出错。
如果你很确定自己的nvarchar类型所写的datetime数据格式没问题,那么很有可能是这个问题你的datetime传入的值是null解决方法:在执行sql语句前,加个If判断if (departure_time_ == null) { return vector;}原创 2021-11-24 08:12:46 · 3408 阅读 · 0 评论 -
Exception during ‘super‘ constructor evaluation (eclipse-windowbuilder-报错)
WindowBuilder was not able to show the GUI.An exception happened duringevaluation of constructor TEST2(String) using arguments {<dynamic>}. java.lang.IllegalAccessError: class test.TEST2$$EnhancerByCGLIB$$2ab4d892 cannot access its superclass test原创 2021-06-24 08:39:04 · 563 阅读 · 0 评论 -
数字游戏-Java
题目描述:栋栋正在和同学们玩一个数字游戏。 游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈。栋栋首先说出数字1。接下来,坐在栋栋左手边的同学要说下一个数字2。再下面的一个同学要从上一个同学说的数字往下数两个数说出来,也就是说4。下一个同学要往下数三个数,说7。依次类推。 为了使数字不至于太大,栋栋和同学们约定,当在心中数到 k-1 时,下一个数字从0开始数。例如,当k=13时,栋栋和同学们报出的前几个数依次为: 1, 2, 4, 7, 11, 3, 9, 3,原创 2021-02-23 11:35:14 · 263 阅读 · 0 评论 -
打印十字图-Java
题目描述:小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:..$$$$$$$$$$$$$....$...........$..$$$.$$$$$$$$$.$$$$...$.......$...$$.$$$.$$$$$.$$$.$$.$...$...$...$.$$.$.$$$.$.$$$.$.$$.$.$...$...$.$.$$.$.$.$$$$$.$.$.$$.$.$...$...$.$.$$.$.$$$.$.$$$.$.$$.$...$...$...$.原创 2021-02-23 11:16:01 · 191 阅读 · 1 评论 -
幸运数-Java
题目描述:幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成 。 首先从1开始写出自然数1,2,3,4,5,6,.... 1 就是第一个幸运数。 我们从2这个数开始。把所有序号能被2整除的项删除,变为: 1 _ 3 _ 5 _ 7 _ 9 .... 把它们缩紧,重新记序,为: 1 3 5 7 9 .... 。 这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。 注意,是序号位置,不是那个数本身能否被3整除!! 删除的应该是原创 2021-02-22 18:49:16 · 613 阅读 · 1 评论 -
带分数-Java
题目描述:100 可以表示为带分数的形式:100 = 3 + 69258 / 714。 还可以表示为:100 = 82 + 3546 / 197。 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。 类似这样的带分数,100 有 11 种表示法。 输入:从标准输入读入一个正整数N (N< 1000*1000) 输出:程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。 注意:不要求输出每个表示,只统计有多少表示法!原创 2021-02-19 09:43:45 · 195 阅读 · 0 评论 -
小朋友排队-Java
题目描述:n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。 如果某个小朋友第一次被要求交换,则他的不高兴程度增加1, 如果第二次要求他交换,则他的不高兴程度增加2(即不高兴程度为3),依次类推。 当要求某个小朋友第k次交换时,他的不高兴程度增加k。 请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。 如果有两个小朋友身高一样,则他们谁站在谁前原创 2021-02-10 18:45:44 · 274 阅读 · 0 评论 -
大臣的旅费-Java
题目描述:很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案, 使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。 J是T国重要大臣,他巡查于各大城市之间,体察民情。所以,从一个城市马不停蹄地到另一个城市成了J最常做的事情。他有一个钱袋,用于存放往来城市间的路费。 聪明的J发现,如果不在某个城市停下来修整,在原创 2021-01-29 20:38:55 · 102 阅读 · 0 评论 -
城市建设-Java
题目描述:栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修。市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他。 C市中有n个比较重要的地点,市长希望这些地点重点被考虑。现在可以修一些道路来连接其中的一些地点,每条道路可以连接其中的两个地点。另外由于C市有一条河从中穿过,也可以在其中的一些地点建设码头,所有建了码头的地点可以通过河道连接。 栋栋拿到了允许建设的道路的信息, 包括每条可以建设的道路的花费,以及哪些地点可以建设码头和建设码头的花费。 市长希望栋栋给原创 2021-01-28 21:25:12 · 194 阅读 · 0 评论 -
地宫取宝-Java
题目描述:X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时, 如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明。 请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝。 输入:输入一行3原创 2021-01-28 16:30:34 · 173 阅读 · 0 评论 -
合根植物-Java
题目描述:w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?输入:第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)。接下来一行,一个整数k,表示下面还有k行数据(0<k<100000)接下来k行,第行两个整原创 2021-01-27 22:14:18 · 427 阅读 · 0 评论 -
国王的烦恼-Java
题目描述:C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了m座大桥,每座大桥连接两座小岛。两个小岛间可能存在多座桥连接。然而,由于海水冲刷,有一些大桥面临着不能使用的危险。 如果两个小岛间的所有大桥都不能使用,则这两座小岛就不能直接到达了。然而,只要这两座小岛的居民能通过其他的桥或者其他的小岛互相到达,他们就会安然无事。但是,如果前一天两个小岛之间还有方法可以到达,后一天却不能到达了,居民们就会一起抗议。 现在C国的国王已经知道了每座桥能使用的天数,超过这个天数就不能使用了。现原创 2021-01-27 21:29:49 · 192 阅读 · 0 评论 -
回文数字-Java
题目描述:观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。 本题要求你找到一些5位或6位的十进制数字。满足如下要求: 该数字的各个数位之和等于输入的整数。 输入:一个正整数 n (10< n< 100), 表示要求满足的数位和。输出:若干行,每行包含一个满足要求的5位或6位整数。 数字按从小到大的顺序排列。 如果没有满足条件的,输出:-1 样例输入:44 样例输出:99899原创 2021-01-25 22:30:43 · 275 阅读 · 2 评论 -
危险系数-Java
题目描述:问题描述 抗日战争时期,冀中平原的地道战曾发挥重要作用。 地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。 我们来定义一个危险系数DF(x,y): 对于两个站点x和y (x != y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点。相应的,对于任意一对站点x和y,危险系数DF(x,y)就表示为这两点之间的关键点个数。 本题的任务是:已知网络结构,求两站点之间的危险系原创 2021-01-25 22:12:59 · 154 阅读 · 0 评论 -
剪格子-Java
题目描述:历届试题 剪格子 时间限制:1.0s 内存限制:256.0MB 问题描述 如下图所示,3 x 3 的格子中填写了一些整数。 +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+--+--+ 我们沿着图中的星号线剪开,得到两个部分,每个部分的数字和都是60。 本题的要求就是请你编程判定: 对给定的m x n 的格子中的整数,是否可以分割为原创 2021-01-25 20:58:26 · 137 阅读 · 0 评论 -
分糖果-Java
题目描述:问题描述 有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子。 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。 反复进行这个游戏,直到所有小朋友的糖果数都相同为止。 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。输入:程序首先读入一个整数N(2< N< 100),表示小朋友的人数。 接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)原创 2021-01-25 14:37:57 · 380 阅读 · 0 评论