- 博客(27)
- 收藏
- 关注
原创 MDM设备管控,企业移动设备管理方案
移动设备管理(MDM) 是一种安全与管理解决方案,旨在帮助企业监控、管理和保护智能手机、平板电脑、笔记本电脑等移动设备。通过MDM,IT团队能够强制执行安全策略、控制应用程序使用并保护敏感数据,从而确保现代工作场所的合规性和效率。MDM的核心价值在于:- 安全防护:防止数据泄露和设备滥用。- 统一管理:集中控制分散的移动设备群。- 合规支持:满足企业使用规则要求。
2025-03-19 18:58:02
655
原创 Java 用于人工智能
是一个用于开发 ML 算法的开源项目,也是另一个可扩展且可用于处理大数据的流行机器学习库。人工智能 (AI) 正在使机器能够执行通常不需要人工干预的任务,例如解决问题、自然语言理解和图像处理,从而实现行业的现代化。也是一个强大的选择,因为许多组织由于其稳健性和可扩展性而在企业应用程序中使用它。Java 编程语言的“一次编写,随处运行”理念使开发人员能够创建无需更改即可在各种平台上运行的 AI 系统。MOA 提供了一个从海量数据中学习的框架,这是欺诈检测、网络入侵检测和推荐系统等实时 AI 应用的关键步骤。
2025-02-14 11:06:26
759
原创 安全漏洞的生命周期
在大多数情况下,更改正在使用的相同依赖项的版本将消除已知的漏洞。由于这些信息通常代表着相当大的经济价值,因此在绝大多数情况下可以假设,此类数据集的商业提供商将比免费提供的数据集更快地访问更新的信息。如果对所有受影响的系统组件进行了顺利的测试,那么从技术角度来看,没有什么可以阻碍软件的可用性。在这里,至关重要的是,您不仅要信任一家提供商,还要专注于所谓的“合并”或“聚合器”。如果现在可以使用这些信息,也就是说,可以使用软件开发中使用的工具来处理这些信息,那么故事情节就开始在您的项目中开始了。
2025-01-13 11:46:20
456
原创 Java 中的并发性
异步编程在 Java 中出现得稍晚一些,虽然有构建块,但实际上只有从 Java 8 开始才可用,但它也已经成熟,现在拥有一个支持反应式编程和异步并发的强大生态系统。从技术上讲,异步编程不是并发的一部分,但在实践中,它在许多用例中齐头并进,可以提高性能,并使资源使用效率更高。在这个简单的用例中,由于每个线程生成和处理请求的速度都非常快,因此我们不会遇到问题。虽然功能强大,但它也相当复杂,尤其是当你必须在线程之间访问数据时,因为 Java 中的默认机制(由于其 OOP 根源)是通过同步线程来使用共享状态并发。
2025-01-10 10:48:37
750
原创 破解 JVM 上的第三方 API
它通过在不修改代码本身的情况下向现有代码添加额外行为(建议)来实现这一点,而是通过“切入点”规范单独指定要修改的代码,例如“当函数名称以‘set’开头时记录所有函数调用”。存储类定义的字节数组。但如果您需要更改依赖类的行为,反射就毫无用处:如果您的类使用了第三方类,在这篇文章中,我们列出了四种不同的方法来破解第三方库的行为:反射、类路径阴影、面向方面编程和 Java 代理。你需要扩展它,但这是不可能的,因为设计不允许这样做 - 故意的。有趣的是,JVM 为我们提供了一种在加载类时更改字节码的标准机制。
2024-12-27 10:34:22
898
原创 深入探究 Java 中的多线程
即使经过多年的研究和开发,多线程仍然是一个非常有趣的话题,以开发高质量、强大且高效的软件。条件将对象监视方法(wait、notify 和notifyAll())分解为不同的对象,通过将它们与任意 Lock 实现的使用相结合,产生每个对象具有多个等待集的效果。它有效地分配工作并执行单个任务,它可用于调度和异步执行任务,它具有比进程更有效的上下文切换机制,并且它与其他线程共享内存空间,但可以拥有自己的存储。尤其是当必须恢复挂起线程的线程需要在调用 resume() 之前访问挂起线程持有的共享资源或锁时。
2024-12-23 10:55:39
742
原创 如何将 Java 微服务引入云
是的,把一个高度复杂的问题分成小块,把团队分成小组,把单片项目分成更小的项目。微服务架构风格是一种将单个应用程序开发成一套小型服务的方法,这样,例如,电子商务公司就不必只使用一个代码库和一个实现,而是可以将团队/代码分为财务、产品库存、营销等。从更技术的角度看,与敏捷开发相一致的领域驱动设计 (DDD) 方法用于开发满足复杂需求的软件,将实现与核心业务概念的不断发展的模型紧密联系起来。诸如通用语言之类的技术用于使代码更接近业务,减少开发人员和用户之间的障碍,因此,与敏捷开发相比,交互更多。
2024-12-20 11:37:30
843
原创 探索全面的 MDM 应用管理:简化企业设备应用生命周期管理
通过 AMS,企业可以轻松实现应用程序的集中化管理,覆盖从安装到更新、从配置到监控的整个应用生命周期。结合 MDM 的设备管理,AMS 实现了对应用程序的生命周期管理,确保企业移动生态系统的整体安全性。:为企业创建专属应用商店,用于发布和更新内部应用,无论是员工、客户还是合作伙伴,都能及时获取最新版本。:通过 AMS 的强制安装功能,管理员能迅速覆盖安装问题应用,保障广告内容及时恢复,减少经济损失。:AMS 提供的应用管理功能,可在任何地点推送医疗应用或更新,减少接触风险并提高医生工作效率。
2024-12-19 15:47:57
638
原创 移动设备管理系统(MDM),企业的设备管理方案
移动设备管理 (MDM) 是一种软件解决方案,允许 IT 团队控制、保护和管理移动设备,包括智能手机、平板电脑和笔记本电脑。移动设备管理之所以重要,主要原因是,如果没有 MDM,IT 管理员将无法保护和管理远程设备。可以显著降低以下风险:数据隐私侵犯数据泄露网络钓鱼设备使用不合规的恶意软件移动设备管理 (MDM)1)增强安全性MDM 为移动设备提供了额外的安全保障。使用 MDM 的组织可以采取预防措施,防止网络、数据泄露、未经授权的访问等。2)提高效率。
2024-12-16 10:16:10
1068
原创 为 Java 应用程序创建安全 Docker 镜像的 5 个技巧
Docker 是容器化应用程序最广泛使用的方法。使用 Docker Hub,可以轻松创建和提取预先创建的映像。这非常方便,因为您可以使用 Docker Hub 中的这些映像快速为 Java 应用程序构建映像。然而,为 Java 应用程序创建自定义 Docker 镜像的简单方法会带来许多安全问题。那么,我们如何使安全性成为 Java Docker 镜像的重要组成部分呢?1. 为你的 Java 应用程序选择正确的 Docker 基础镜像创建 Docker 镜像时,我们会根据从 Docker Hub
2024-12-13 12:06:18
844
原创 Java 应用程序创建安全 Docker 镜像的 5 个技巧
当然,从安全角度来看,使用最新版本是好的,因为您将自动获取最新的安全修复程序,但是,您需要考虑到基础映像会随着时间而变化,因此很难在特定时间快照重新创建映像。我选择了一个包含 maven 和 openjdk8 的基础镜像,将源代码复制到镜像中,然后调用 maven 来构建和运行我的应用程序。但是,我们也可以选择特定版本的标记,例如基于 Debian、Centos 或 Alpine(请注意,alpine 不是基于 glibc,可能与进行本机 JNI 调用的应用程序不兼容)。在这里,我设置要使用的用户。
2024-12-09 13:35:25
1342
原创 避免 Java 序列化!
Java 序列化也被称为“不断给予的礼物”,因为它多年来产生了许多问题。您可能认为这些类型的攻击是不可能的,因为您需要在类路径上有一个易受攻击的类。但是,如果您考虑类路径上的类数量(包括您自己的代码、Java 库、第三方库和框架),则很可能存在一个易受攻击的类。从 JSON 反序列化到 Java 对象也存在类似的问题。攻击者可能序列化了一个恶意对象并将其发送到您的应用程序。如果您需要自己反序列化输入流,则应使用有限制的。中有一个关于 Jackson 库的反序列化问题的示例。最大的问题在于反序列化部分。
2024-12-06 16:11:00
200
原创 避免 Java 序列化!
Java 序列化也被称为“不断给予的礼物”,因为它多年来产生了许多问题。您可能认为这些类型的攻击是不可能的,因为您需要在类路径上有一个易受攻击的类。但是,如果您考虑类路径上的类数量(包括您自己的代码、Java 库、第三方库和框架),则很可能存在一个易受攻击的类。从 JSON 反序列化到 Java 对象也存在类似的问题。攻击者可能序列化了一个恶意对象并将其发送到您的应用程序。如果您需要自己反序列化输入流,则应使用有限制的。中有一个关于 Jackson 库的反序列化问题的示例。最大的问题在于反序列化部分。
2024-12-02 14:21:03
145
原创 什么是 JVM 字节码
但如果你的编译器生成的 JVM 字节码效率低下,你的语言将运行得非常慢,因此不会吸引很多用户。因此,实际上,JVM 是针对 Java 和任何其他 JVM 语言将在其上运行的每种操作系统和硬件类型而定制的。但我相信 JDK 字节码仍然比汇编语言高一层,因为 JVM 字节码是 JVM 的输入流,JVM 会将字节码转换为适用于每个特定操作系统和硬件平台的机器语言(本质上是汇编语言)。如果您的应用程序追求卓越的性能,或者您正在编写一种新的 JVM 语言,那么了解 JVM 字节码是必不可少的。文件内容的一种方法。
2024-11-29 11:51:18
438
原创 Java 开发的容器意识
在这种情况下,即使我们为容器分配了 256MB 内存,最大堆也必须远低于该值(例如,50%,或取决于您的应用程序)。从主机计算得出的(以字节为单位),并且可能明显高于您最初分配的 256MB 内存。当您容器化 Java 应用程序时,请确保使用容器感知(CGroup 感知)的基本 JDK 映像,以便 JDK 可以正确分配内存和 CPU 数量。这些文件的内容反映了运行容器的主机/节点计算机的资源量,但不反映分配给容器的实际限制(可能要少得多)。,JVM 实例所需的总本机内存与加载的类的数量大约呈线性关系。
2024-11-27 12:31:01
467
原创 成为更好的 Java 开发人员:要了解的 16 条秘诀
要保持经常更新到最新的版本 学习 Kotlin:它可能会给你一些有趣的视角(以及在需要时换工作的能力等)。Java 17 和 21 实际上比 9 和 11 好得多,并且采用了很多与 Kotlin 引入的类似更改(除了空安全,因为向后兼容) 生疏意味着成长的机会。这是一项挑战,这也是让我不感到无聊的原因。想想你觉得整个计算堆栈中最令人畏惧和难以理解的是什么。深入学习。 了解其他语言/框架的工作方式。有时,一个框架有一个长期存在的问题,每个人都在抱怨,而另一个框架中却没有这样的问题。更好的方法可以让你的生
2024-11-24 11:53:47
281
原创 如何使用 Spring Boot 分析工具分析性能问题
有一天,您开始收到沮丧的客户发来的电子邮件和消息,报告您的服务已中断。通过附加 JProfiler,您可以分析 CPU 热点,识别消耗过多 CPU 周期的方法,并对其进行优化以提高性能。通过利用此功能,您可以识别最近的性能变化,并了解应用程序的不同部分在不同条件下的表现。监控提供持续的可见性和潜在问题的警报,而分析提供诊断和修复这些问题所需的详细分析。通过利用 Digma 持续时间功能提供的详细见解,您可以保持端点的最佳性能,确保流畅的用户体验,并主动解决出现的任何问题。
2024-11-22 14:08:47
1103
原创 嵌入式 Java需要知道的内容
这两种解决方案都可以通过在 Main(CRaM)中存储已加载的 JVM 和 Java 类的状态,或者在稍后将已加载的应用程序类包含在客户定义的检查点(CRaC)中来加快应用程序的启动速度。得益于其丰富的库生态系统,它提供了流畅的开发体验,并允许开发人员以最少的代码构建复杂而强大的方法。借助基于 ARMv7 或更新版本的现代强大系统,在大型云环境或强大机器上使用的完全相同的 Java 运行时在最小的 Linux 系统上同样流畅地运行。这些项目是在 Azul 内部根据我们客户的需求而诞生的。
2024-11-21 11:53:00
805
原创 为什么 Java 8 是隐藏的定时炸弹
Oracle 对 Java 6 的支持已于 2018 年结束,对 Java 7 的支持将于 2022 年结束,对 Java 8 的支持将于 2030 年结束。在许多情况下,可以用更少的代码和更少的依赖项实现相同的功能,从而使代码更易于阅读和维护。但想到所有那些维护旧系统的开发人员都错过了新版本提供的所有编码和性能改进,强调为什么继续使用 Java 8 是一颗定时炸弹的众多原因中的一些...OpenJDK 的每个新版本都会对运行时本身进行许多改进,例如,垃圾收集器中的优化和内存管理的改进?
2024-11-20 11:40:51
717
原创 AJAX 和 SSR 简史
在行业的某些角落,头脑冷静的人占了上风,术语SSR被创造出来,用来描述我们多年来一直在做的事情的回归——尽管有一些现代的增强功能。抓取和索引页面的机器人是为更简单的 Web 设计的,其中页面在服务器端呈现。当时,它是少数提供此功能的技术之一。AJAX 的出现标志着 Web 开发的重大转变,将更多逻辑从服务器转移到客户端,这种转变并非毫无道理。客户端渲染带来诸多好处,其中最显著的是响应能力的提高,大大提升了用户体验。和任何新技术一样,早期采用者都会赶上潮流,技术会逐渐流行,问题也会随着时间的推移而出现。
2024-11-19 11:27:41
847
原创 使用云原生构建包轻松容器化 Java 应用程序
它们简化了构建和打包应用程序的过程,减少了错误,提高了效率和安全性,所有这些都节省了时间和精力,使开发人员能够专注于编写代码和交付价值。,并利用了这些标准的最新功能。是一组可执行文件,可以分析您的应用源代码、创建构建计划并生成可供部署以运行您的应用程序的容器映像。本文重点介绍 Cloud Native Buildpacks,这是一个在开发者社区中发展势头迅猛的开源项目,它提供了具有令人印象深刻的功能和优势的多语言解决方案。在底层,构建器会按顺序运行所有构建包的检测阶段,然后继续运行构建阶段。
2024-11-17 12:10:29
661
原创 全栈调试的艺术
无论您处理的是模糊的前端代码、配置错误的后端服务还是系统级问题,成功调试的关键在于有条不紊的协作方法。全栈调试是开发人员的一项必备技能,因为它涉及跟踪应用程序的多个层中的问题,通常涉及人们可能只是粗略了解的领域。两者都有出色的调试器(如下面的 Firefox 调试器所示),不幸的是,许多开发人员仅限于控制台打印,而不是探索这个强大的工具。随着工具的不断发展,可用于调试的工具和技术也在不断发展。请注意,这是一篇介绍性的文章,主要关注前端调试方面,在接下来的文章中,我将深入探讨前端调试中不太熟悉的功能。
2024-11-16 17:29:46
1016
原创 使用纯 Java 编写 Shebang 脚本
Bash 脚本很棒,但对于不熟悉语法的开发人员来说,它们可能晦涩难懂。作为 Java 开发人员,您可能更喜欢以 Java 方式完成工作。好吧,从 Java 11 开始,您就可以这样做!如果您有兴趣,请随时查看。但在本文中,我们将保持简单,使用纯 Java 而不使用任何外部库。如果你没有看到类似的输出,则表示 Java 未安装。很抱歉让你不爽,但你现在需要安装它!这是文件的关键部分,指示 shell 使用 Java 21 以源形式运行脚本。如果您想在机器的任何位置运行此脚本,只需将文件移动到以下。
2024-11-15 12:42:59
232
原创 Java 性能调优:调整 GC 线程获得最佳结果
例如,在具有 128 个 CPU 的机器上,JVM 可能会为垃圾收集的并行阶段分配大约 80 个线程,为并发阶段分配大约 20 个线程,总共大约有 100 个 GC 线程。如果您没有使用上述两个 JVM 参数明确设置 GC 线程数,则默认 GC 线程数是根据服务器/容器中的 CPU 数量得出的。虽然 GC 线程对于高效的内存管理至关重要,但过多的 GC 线程可能会给 Java 应用程序带来严重的性能挑战。虽然 GC 线程过多可能会造成性能问题,但 GC 线程过少也会给 Java 应用程序带来同样的问题。
2024-11-14 11:40:36
818
原创 Java 并发:可见性和同步
最终,程序将按预期终止,因为我们将达到阈值。这不仅适用于同步块中涉及的变量,也适用于倒计时线程可见的变量。因此,尽管消息变量在程序结束时不在任何同步块内,但其更改的值已公开,因此可以看到打印的正确值。在这篇文章中,我们将重点介绍两个线程之间的变量可见性以及更改共享变量时会发生什么。这是一段糟糕的代码:两个线程在没有任何同步的情况下对同一个变量号进行操作。因此,这不仅涉及同步和发出线程安全操作,还涉及确保线程所做的更改可见。时,一个线程的更改对于遇到synchronized块的另一个线程是可见的。
2024-11-13 10:13:20
302
原创 每个 Java 软件架构师都应该知道的 20 件事
随着软件开发领域的快速发展,Java 脱颖而出,成为推动全球范围内大量应用程序的基础语言。2024 年,Java 软件架构师的角色具有前所未有的重要性。软件架构师不仅必须对 Java 及其生态系统有深刻的理解,还必须掌握最新趋势、技术和最佳实践,才能构建具有弹性、可扩展且高效的应用程序。本文仔细研究了每个 Java软件架构师在 2024 年应该掌握的 20 个基本领域。这些领域涵盖了微服务、云原生应用程序、反应式编程和区块链技术等各种主题,囊括了驾驭不断变化的软件架构领域所必需的技能和知识。
2024-11-12 11:06:19
416
原创 Java Bean 验证:以编程方式应用约束
在本文中,我们探讨了以编程方式注释实体字段的用例。虽然这种方法满足了我们的特定需求,但其他更复杂的场景也是可能的。假设您正在开发一个项目,其中包含作为系统一部分实现的多个实体。根据所需的业务逻辑,您需要执行特定的。但是,这些类是作为第三方依赖项提供的,这意味着它们无法修改,因此无法直接注释。为 的字段分配必要的注解。但是,请记住,由于我们特定的用例限制,我们无法修改其代码。这里,通过,我们通过提供各自的约束定义类。为了验证,我们创建了一个名为的自定义。此外,根据我们的业务逻辑,不能为。
2024-11-11 14:09:12
789
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人