- 博客(50)
- 资源 (2)
- 收藏
- 关注
原创 Java的LinkedHashMap 源码解析
LinkedHashMap 是一个有序的 Map,它维护元素的有序性,可以按照插入顺序或访问顺序排列元素。这个有序性是通过维护一个双向链表来实现的。另外,LinkedHashMap 提供了参数来决定是否在访问元素时移动元素,以实现 LRU 缓存功能。这使得 LinkedHashMap 成为一个非常有用的数据结构,适用于需要有序性和缓存功能的场景。
2024-07-19 08:42:04 795
原创 Java的HashSet源码分析
在编程的世界里,有一种神奇的工具,它小巧却强大,灵活而可靠,它就是 HashSet。然而,你是否曾经好奇过,这么强大的工具,其背后的实现原理是怎样的呢?今天,让我们一起揭开 HashSet 源码的神秘面纱,探索这个 Java 世界中的神奇数据结构。首先,我们需要明白,HashSet 并不是一个简单的集合,它是基于哈希表实现的一种集合。哈希表是一种数据结构,通过哈希函数将元素映射到数组的一个位置,实现快速的查找。而 HashSet 则在此基础上,增加了一些额外的功能,使得它在存储和查找元素时更加高效。
2024-07-19 08:40:44 971
原创 Fork_Join模式:分治和Work-Stealing的完美结合
Work-Stealing通过允许空闲的处理器主动从其他处理器“偷取”任务来解决这个问题,保持了负载的均衡,提高了整体并行计算的效率。Fork/Join模式以其独特的分治和Work-Stealing结合的方式,成为解决可分解并行问题的一项卓越选择。Fork/Join模式的核心之一是分治思想,这是一种通过将问题分解成更小、更容易解决的子问题来求解复杂问题的策略。在选择使用Fork/Join模式时,开发者应当注意任务的划分和合并逻辑,确保适用于分治思想和Work-Stealing机制的问题结构。
2024-07-18 08:52:12 688
原创 使用Fork_Join模式解决可分解并行问题
使用Fork/Join模式时,需要仔细评估问题的特性,并选择合适的并行编程模型。我们可以将数组分成两半,分别计算每一半的总和,然后将这两个部分的结果相加,从而得到整个数组的总和。Fork/Join模式的优势在于它能够充分利用多核心架构,提高任务的并行度,从而加速程序的执行。ork/Join模式的原理和应用,我们能够更好地应对并发编程的挑战,提高程序的性能和效率。这是一个简化的例子,实际上,Fork/Join模式可以处理更复杂的任务分解和合并逻辑。方法是一个阻塞方法,会等待任务执行完成并返回结果。
2024-07-18 08:51:13 468
原创 如何开发一个大模型应用
随着人工智能技术的快速发展,大模型应用已成为许多领域的核心竞争力。大模型应用通常指的是基于大规模数据集训练得到的深度学习模型,具有强大的特征表示能力和泛化性能。本文将详细介绍如何开发一个大模型应用,包括模型设计、数据准备、训练和部署等关键环节。
2024-07-16 08:43:08 507
原创 自定义 Java ClassLoader:深入探索
在自定义 ClassLoader 之前,我们需要了解 Java 类加载器的工作原理。Java 类加载器遵循所谓的“双亲委派模型”。简单来说,当一个类加载器收到类加载请求时,它会先将这个请求委托给父类加载器去完成,只有在父类加载器无法完成请求时,自己才会尝试去加载这个类。这种模型确保了 Java 核心库的稳定,并避免了类的重复加载。然而,这也限制了我们在某些情况下对类的加载方式的控制。为了打破这个限制,我们可以创建自己的类加载器。要自定义一个 ClassLoader,我们需要继承findClass和。
2024-07-16 08:39:28 419
原创 Java `loadClass`与`forName`方法的比较分析
在Java编程中,类的加载是一个基础而关键的概念。开发人员经常需要在运行时加载类,无论是为了动态地扩展应用程序的功能,还是为了延迟加载某些资源密集型的类。Java提供了几种方法来实现这一点,其中loadClass和forName是最常见的两种。本文将对这两个方法进行比较分析,探讨它们的使用场景和潜在的差异。loadClass。
2024-07-15 16:17:56 312
原创 讯飞星火通过API接入
如果你想暴富可以关注一下科大讯飞看看它的股票走势每次讯飞星火发布新版本的时候都掀起了一个小涨停科大讯飞作为国内领先的人工智能企业常年以来积累的优势包括智能客服、语音识别、机器翻译等多场景的大量应用铺垫了海量的训练数据除了传统的新闻、小说、论文更多的是在学习和理解人类语言方面有着巨大的优势。
2024-06-25 18:35:31 571
原创 HashMap源码解析
在编程的世界里,有一种神奇的工具,它小巧却强大,灵活而可靠,它是Java中最常用的数据结构之一,它就是HashMap。然而,你是否曾经好奇过,这么强大的工具,其背后的实现原理是怎样的呢?今天,让我们一起揭开HashMap源码的神秘面纱,探索这个Java世界中的瑞士军刀。首先,我们需要明白,HashMap并不是一个简单的哈希表,它是一个基于哈希表实现的Map接口的子类。哈希表是一种数据结构,它通过哈希函数将键值对映射到数组的一个位置,从而实现快速查找。
2024-06-25 18:30:03 858
原创 优秀的程序员一个顶十个
深入研究底层源码,JVM,Spring,Vue...”SQL、JS、Python 或多或少都有一些。写 if("aaa") 就会认为是true。说你这程序怎么永远会执行 if true。我看他打开的简洁的 jQuery 源码。比如JavaScript之类的弱语言。每个语言都有这样的一些不为人知的陷阱。此时屏幕映出了小哥精心制作的界面。编程领域里面有些东西是心照不宣的。问这哥们代码风格怎么是这样的?而大量功利性的学习者往往会忽略。可以顶100个普通主播的营业额。浮躁的人,往往第一关就过不去。
2024-06-24 17:35:20 368
原创 远离不写注释的程序员
这仿佛成了一个死循环大家都有过这样的经历灵感上来了,疯狂敲代码大几百行写完真有成就感但是队友不高兴了没注释看不明白所以,现在是否写注释已经从行业约束问题降低到最基本的道德问题了。
2024-06-24 17:27:31 300
原创 Java多线程中synchronized如何使用
当执行monitorenter指令时,当前线程将试图获取objectref(即对象锁) 所对应的monitor的持有权,当objectref的monitor的进入计数器为0,那线程可以成功取得monitor,并将计数器值设置为1,取锁成功。这里我们未看到任何的monitor相关的指令,其实方法级的同步是隐式的无需通过指令来实现,出现在flags中的ACC_SYNCHRONIZED标志,即可用来区分方法是否同步。通过让线程处于忙循环等待锁释放,期间不出让CPU,减少线程的切换,该锁在JDK4就被引入。
2023-09-20 09:10:08 152
原创 餐馆的redis缓存击穿是怎么回事
原本准备的辣椒,土豆,食用油,Q弹肥肠,大蒜,香菜,梅菜,大片五花肉,莴笋,海带,胡萝卜等基础食材大量匮乏,只有获得锁的线程才去访问数据库并将数据回写到缓存这样后期有其他线程来查询这个key就有缓存了,店家原本准备的土豆烧肥肠,梅菜扣肉,凉拌三丝,黑豆花早就被一扫而空,可能在延时的这1秒或者2秒后面就已经把数据取过来放在redis里了,这个现象就像是在多个key在同一时刻(比如零点)发生过期,店家会一个订单接着一个订单的处理这么多食客的需求,但突然或者某个时刻大量的key在缓存中失效了,
2023-09-20 09:08:07 115
原创 Java内存模型(JMM)是什么
多核CPU和高速缓存在,导致了缓存一致性问题,通过缓存一致性协议解决。各个操作系统都有各自内存模型,对CPU高速缓存与缓存的读写访问过程进行抽象。Java语言作为运行在操作系统层面的高级语言,为了解决多平台运行的问题,在操作系统基础上进一步抽象,得到了 Java 语言层面上的内存模型。
2023-09-19 08:54:30 92
原创 SpringBoot中的DDD领域驱动设计
面向数据建模,面向过程编程,没有真正“面向对象”只注重结果,不注重过程,service层动辄数百上千行,充斥着过程代码、胶水代码,要么臃肿、要么流水账、要不重复、要么逻辑分散,后期极难维护代码耦合严重,层与层之间互相调用、逆向调用,牵一发而动全身代码无法体现业务,在大家都不爱写注释的情况下,随着时间的推移,代码业务逻辑将无人理解,不敢改也改不动。那么有没有一个好的解决方案呢?DDD就是一个不错的选择。
2023-09-18 15:19:58 322 1
原创 ChatGPT逐字推送的秘密
ChatGPT 采用 Server-sent events(SSE)协议,是因为 SSE 提供了一种简单、可靠、高效的服务器推送技术,可以实现实时通信,而且不需要客户端发起请求,可以节省带宽和服务器资源。SSE 是一种基于 HTTP 协议的服务器推送技术,它允许服务器向客户端发送单向的、实时的、持久的数据流,而客户端只需要通过一个简单的 EventSource 接口进行监听和处理即可。
2023-07-20 08:32:03 146
原创 通过开发日志记录来学习AOP
我们先了解一下,AOP一般常见场景,AOP的使用,更多用于日志场景、一般被用于日志诊断上下文,比如logback映射辅助上下文,或者用于辅助信息,比如方法执行时间,我们经常会在方法执行前获取一个时间,方法执行后获取一个时间,前者减去后者得到这个方法执行的时间。做过Web平台的,基本都清楚,大多数的Web平台都会需要记录接口调用的记录,不要小看它,认为它似乎没什么用,很多的个人习惯就是通过这种方式小成本的被挖掘出来。的完成一个接口日志的记录,建议刚入行的新人,看完亲手敲一遍。这次介绍的是,如何通过AOP来。
2023-07-20 08:29:13 55
原创 用Java的OSGi框架构建灵活模块化应用
OSGi是一种面向服务的模块化框架它将应用程序划分为多个独立的、可重用的模块每个模块被称为一个bundle每个bundle都有自己的生命周期、类加载器和依赖管理机制OSGi框架提供了动态部署、服务导向、类加载隔离和生命周期管理等关键特性使得应用程序更具灵活性和可维护性。
2023-07-20 08:26:54 511
原创 Java代理agent技术解密:揭秘方法计时器的神奇实现
在Java中,"agent"是指Java代理技术,它允许开发人员在应用程序运行时动态地修改、监视和分析Java应用程序的行为。Java代理技术是Java的一项高级特性,它允许开发人员在运行时通过代理程序来检测和修改Java应用程序的字节码。
2023-06-19 17:12:30 131
原创 最常用的四个Java函数式接口
函数式编程成为了Java编程中的一大趋势,Java 8中引入了函数式接口,使得函数式编程更加容易。了解以上这些内置的函数式接口,基本在日常开发中80%的场景都可以满足了,如果对自己有更高的要求,推荐大家把java.util.function包下的接口都熟悉一下。在这个例子中,我们定义了一个函数式接口MyFunction,该接口只有一个抽象方法run()。Function 是一个函数式接口,它接受一个参数并返回一个结果。Supplier 是一个函数式接口,它不接受任何参数,但返回一个结果。
2023-06-16 11:42:51 558
原创 如何用函数式接口重构常见模式
但是,在Java 8中,我们可以使用Lambda表达式和函数式接口来实现更简单和更直观的策略模式。在Java中,回调函数通常被实现为接口,该接口只有一个方法,该方法在异步操作完成时被调用。但是,在Java 8中,我们可以使用Lambda表达式和函数式接口来实现更简单和更直观的映射。总的来说,使用Lambda表达式和函数式接口可以简化代码,使代码更加直观和易于理解。但是,在Java 8中,我们可以使用Lambda表达式和函数式接口来实现更简单和更直观的过滤器。
2023-06-05 09:48:27 116
原创 Java如何提前终止for循环
如果我们需要在循环中终止并抛出异常,我们可以使用自定义异常。我们可以在循环中使用try-catch块来捕获自定义异常,并在需要时抛出该异常。
2023-05-18 16:06:35 1490
原创 Java的异常究竟是怎么一回事
包含了异常的类型、异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printStackTrace。程序员平常说的异常就是指Exception,因为这类异常一旦出现,你就要对代码进行更正,修复程序。1、异常本身不是语法层面的错误,它的本质是程序在执行过程中,出现非正常情况。异常天天见,本文主要围绕Java的异常体系和分类简单讲讲Java的异常。:异常产生后,通过代码可以纠正处理,保证程序运行,例如文件不存在异常。2、异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。
2023-05-16 08:19:16 42
原创 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 609
原创 MagicAPI快速入门
Magic-API是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口
2023-05-12 09:30:35 2283
原创 Java自动化-selenium
Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器(2018年开发者说暂停开发,chromedriver也可以实现同样的功能),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。个人通俗的理解就是:模拟人的行为去各个网站溜达,点点按钮,查查数据,或者把看到的信息背回来。就像一只蜘蛛在一幢楼里不知疲倦地爬来爬去。
2023-05-09 11:47:43 1098
原创 远程调试在K8S的POD中的Java应用程序
现在越来越多的公司选择利用Kubernetes来部署和管理Java应用,那么当运行在k8s中的应用运行异常时,除了看日志,远程调试也是个非常实用的办法。接下来,本文将通过实际操作带大家学习如何远程调试!
2023-05-08 10:39:31 664
原创 如何动态刷新Spring应用程序属性
如果只是为了更改配置文件,大家都不想发布新版本的应用程序/服务。我们希望开发、测试、生成环境等都能实现实时刷新应用程序属性。幸运的是,有很多选项可以将您的配置外部化,Spring Boot 甚至支持这种开箱即用的逻辑。这些解决方案中的大多数都需要重新启动应用程序/服务
2023-05-04 17:38:20 358
原创 Java跨平台你真的理解对了吗?
如果你是老鸟,看到此文或许能引发你更多的思考,特别是可能让你想起某次jvm面试题,或许你也有兴趣研究一下.class文件。
2023-04-27 14:24:39 86
原创 必知必会的强大SPEL工具
Spring 表达式语言(缩写为 SpEL)是一种功能强大的表达式语言。在Spring产品组合中,它是评估表达式的基础。它支持在运行时查询和操作对象图。
2023-04-19 16:33:54 387
原创 Java的注解
注解(Annotation),可声明在class、field、method、parameter等前面,有叫它元数据的,并且它是JDK1.5才引入的特性,目前在SpringBoot等框架中被广泛使用。使用格式:@注解名(属性名=属性值, …)获取注解定义的位置的对象Class、Method、Field获取指定的注解调用注解中的抽象方法获取配置的属性值。
2023-04-17 10:11:35 99
Java和itext7实现的pdf文件签章
2023-06-19
使用SonarQube导出pdf分析报告
2023-06-19
区块链的基础功能简易版Java实现
2023-06-16
Java国密电子签章的实现SM2
2023-06-16
国产密码算法SM1234Java实现不依赖外部包
2023-06-16
30分钟用GPT创造属于自己的虚拟形象
2023-05-16
Python爬虫抓取小说网站的基本方法
2023-04-19
简历模板Python程序员求职履历格式范例
2023-04-19
Python操作MongoDB教程
2023-03-29
MagicAPI的项目样品SpringBoot程序
2023-03-17
大学线性代数课程教材整理
2023-03-17
在Java中优雅而简洁的创建对象的方法总结
2023-03-17
MySQL笔试题一条语句解决问题多表联查聚合查询
2023-03-16
软考答题卡初级中级高级含三个级别考试选择主观论文可打印
2023-03-01
SQL基础面试题,一条语句解决问题
2023-02-24
软考高级论文写作技巧和范文
2023-02-23
软考高级系统架构设计师学习笔记及思维导图
2023-02-23
软考系统架构设计师考试真题及解析参考答案
2023-02-23
安卓android免费无广告电子书阅读器Moon+Reader
2023-01-26
免费远程桌面软件AnyDesk 7.17 Windows版、Android版、Mac版居家办公远程协助
2023-01-14
微软应用商店连接失败修复工具
2023-01-14
Android界面UI设计器
2012-09-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人