java
文章平均质量分 94
java
aabond
这个作者很懒,什么都没留下…
展开
-
加速访问:优秀的Python、Java、Javascript和Linux镜像站点推荐
当访问位于国外的官方网站时,常常会面临到网速缓慢或者无法访问的问题,这不仅令人沮丧,也影响了工作效率。为了解决这些问题,我开始寻找并使用一些镜像站点,特别是在Python、Java、Javascript和Linux等领域。这些镜像站点不仅提供了更快的访问速度,还确保了数据的可靠性和稳定性,让我能够更高效地获取所需的软件包、文档和资源。接下来,我将分享一些我个人使用过的优秀镜像站点,希望能为你的工作和学习带来便利和帮助。原创 2024-07-15 20:00:00 · 543 阅读 · 0 评论 -
SpringBoot学习小结之RocketMQ
在当今互联网时代,随着数据规模和业务复杂度的不断增长,分布式消息中间件作为实现系统解耦、异步通信和削峰填谷的重要工具,扮演着越来越关键的角色。而在众多的消息中间件中,Apache RocketMQ 以其出色的性能、高可用性和可扩展性,成为了许多企业构建分布式系统的首选之一。RocketMQ 是一种开源分布式消息队列系统, 由阿里巴巴集团开发并在2012年开源,现已成为 Apache 软件基金会的顶级项目之一。原创 2024-05-26 10:18:30 · 710 阅读 · 0 评论 -
JVM调优
JVM(Java Virtual Machine)是 Java 底层的核心部分,它是一个在物理计算机上运行 Java 字节码的虚拟机。Java 字节码是通过将 Java 源代码编译而成的中间代码,可以在任何支持 Java 虚拟机的平台上运行。JVM 充当了 Java 程序与底层操作系统之间的桥梁,提供了垃圾回收、内存管理、线程管理等功能,使得Java程序在不同平台上具有良好的可移植性和跨平台性。JVM 调优 (JVM tuning) 是指通过优化 JVM 的配置和参数设置,以达到最佳的性能和资源利用效率。原创 2023-12-11 09:00:00 · 928 阅读 · 0 评论 -
Java开源工具库使用之线上监控诊断库Arthas
在现代软件开发中,应用程序的监控和调试是非常重要的环节。特别是在复杂的 Java 应用程序中,排查问题、优化性能和定位异常往往成为开发者的一项挑战。针对这个问题,阿里巴巴开发了一款强大而灵活的 Java 诊断工具,名为Arthas。Arthas 框架被誉为"Java开发者的神器",它旨在帮助开发者实时监控和深入调试 Java 应用程序,提供了丰富的功能和便捷的操作。无论是在开发、测试还是生产环境中,Arthas 都能够以低侵入性的方式提供全面的应用程序观测和问题诊断能力。原创 2023-11-14 14:36:45 · 503 阅读 · 0 评论 -
重温数据结构与算法之前缀和
前缀和(Prefix Sum),也被称为累计和,是一种在计算机编程算法领域中广泛应用的重要概念和技巧。它通过将一个序列中的元素累加起来,得到一个新的序列,其中每个元素表示原序列中对应位置及其之前所有元素的和。前缀和的简洁性和高效性使其在各种算法和问题中有着广泛的应用。前缀和有许多实际的应用。例如,前缀和可以用于计算区间内的和。无论是静态区间查询还是动态更新的场景,前缀和都可以为我们提供快速的求解方法。它可以在常数时间内计算出任意区间的和,而不受区间长度的影响。这种特性使得前缀和在处理数据流问题时非常有用。原创 2023-11-10 17:54:16 · 306 阅读 · 0 评论 -
Java开源工具库使用之Lombok
Lombok是一款在 Java 开发中广受欢迎的工具库,它能够显著简化 Java 代码的编写过程并减少样板代码的冗余。在面对频繁的getter和setter方法、构造函数、日志记录等重复性代码任务时,Lombok 的出现为开发者带来了极大的便利,无需手动编写这些重复性的代码,减少了代码量,提高了开发效率。Lombok的使用非常简单,只需在项目中引入 Lombok 库,并在需要的类上添加相应的注解即可。原创 2023-09-29 21:28:30 · 2035 阅读 · 0 评论 -
Java开源工具库使用之Apache Commons IO
Apache Commons IO 是 Apache 软件基金会的一个开源项目,提供了一组用于处理 I/O 操作的实用工具类。它的目标是简化常见的文件和流操作,提供更方便、更高效的方式来处理输入和输出。原创 2023-08-29 21:47:59 · 334 阅读 · 0 评论 -
重温数据结构与算法之Manacher算法
回文子串,顾名思义,即字符串中满足回文性质的子串。在算法设计与分析中,回文子串经常作为研究和讨论的重点,例如 POJ 3974 题目中的最长回文子串问题,以及 LeetCode 0005 题目中求解最长回文子串长度的问题。中心扩展算法是一种简单直观的方法,它通过以每个字符为中心向两边扩展来寻找回文子串,然而其时间复杂度为On2O(n^2)On2,动态规划同样,也存在效率低下的问题。马拉车算法(Manacher Algorithm)是一种高效解决回文字符串问题的算法。原创 2023-08-08 23:19:26 · 342 阅读 · 0 评论 -
《编程匠艺》读书笔记(一)
最近读了《编程匠艺》这本书,它是由美国作者 Pete Goodliffe 编写的,它不仅是一本学习指南,更是一本激发编程激情的读物,展示了一种追求卓越的编程态度。在我看来,它带来不仅仅是技术上的提升,更好地掌握编程技巧、提高自己的开发效率和质量,更重要的是对编程的思考和理解。下面是读书笔记+个人理解,书中一共分24个章节,当前是 01章- 06章。原创 2023-07-19 10:21:25 · 333 阅读 · 0 评论 -
重温数据结构与算法之KMP算法
KMP 算法是一种字符串匹配算法,它可以在一个主串中查找一个模式串的出现位置。在实际应用中,字符串匹配是一个非常常见的问题,比如在搜索引擎中搜索关键词、在文本编辑器中查找字符串等等。 KMP 算法的发明者是 DonaldKMorris 和 VaughanPratt,他们在1977年发表了一篇论文《Fast Pattern Matching in Strings》,其中Donald Knuth 还是《计算机程序设计艺术》的作者。 相比于暴力匹配算法的时间复杂度OnmO(nm)Onm。原创 2023-06-28 08:30:00 · 351 阅读 · 0 评论 -
Java开源工具库使用之压测JMeter
是一款开源的 Java 应用程序,用于对软件进行性能测试。它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等。 JMeter 提供了图形化用户界面,使得测试人员可以轻松地创建和运行测试计划,并查看测试结果。JMeter 还可以模拟多种负载类型,包括静态和动态资源,如文件、图片、视频、数据库等。原创 2023-05-19 20:18:03 · 1812 阅读 · 1 评论 -
使用WireShark抓包分析TCP_IP协议
TCP/IP 协议是一组用于互联网通信的协议。它由两个主要协议组成:传输控制协议(TCP)和互联网协议(IPTCP/IP协议是互联网上最常用的协议之一,它使得不同类型的计算机和网络设备能够相互通信。TCP负责将数据分割成数据包,并确保它们在网络上的传输。IP负责将数据包从源地址路由到目标地址。在计算机网络(谢希仁编著)这本书中,详细介绍了TCP/IP网络传输涉及的分层,及各个比特的含义。在这篇文章中,我们将使用Wireshark抓包分析 TCP/IP 协议,用实践来验证理论。原创 2023-04-26 11:34:35 · 8806 阅读 · 3 评论 -
重温数据结构与算法之摩尔投票法
在统计学中,众数是一种重要的集中趋势指标,它表示一组数据中出现次数最多的那个值。此外在一个集合中,如果一个元素的出现次数比其他所有元素的出现次数之和还多,那么就称它为这个集合的绝对众数(等价地说,绝对众数的出现次数大于总元素数的一半)。例如,在{1,2,3,3,4}这组数据中,3就是众数,因为它出现了两次,而其他值都只出现了一次,但是没有绝对众数。寻找众数可以帮助我们了解数据的主要特征和分布情况,在某些场合下也可以作为数据代表或近似值。例如,在民意调查中,我们可能会关注哪个候选人得到了最多人的支持;原创 2023-03-27 11:00:00 · 997 阅读 · 0 评论 -
Java开源工具库使用之ZooKeeper
分布式系统是由多个节点协同工作的系统,它们可以提供高可用性高性能和高扩展性的服务。然而,分布式系统也面临着很多挑战,如网络延迟、节点故障、数据一致性等。为了解决这些问题,分布式系统需要一个协调服务来管理节点之间的通信和协作。ZooKeeper就是一个高性能的分布式应用协调服务。它提供了一些常用的服务, 如命名、配置管理、同步和组服务。在一个简单的接口中,让你不用从头开始编写,可以直接使用它来实现一致性、组管理、领导选举和存在协议等功能。当然,你也可以在它的基础上构建自己的特定需求。原创 2023-03-20 11:00:00 · 1340 阅读 · 0 评论 -
重温数据结构与算法之宽度优先搜索
广度优先搜索(,简称BFS),是一种遍历图存储结构的一种算法,它既适用于无向图,也适用于有向图。BFS 算法的基本思想是从一个起始顶点开始,依次访问其相邻的未被访问过的顶点,并将它们加入到一个队列中,然后从队列中取出一个顶点作为新的起始顶点,重复上述过程,直到队列为空或者找到目标顶点为止。从一个顶点开始,按层次访问其相邻的顶点,然后再访问下一层的顶点,直到遍历完所有的顶点。使用队列来存储待访问的顶点,保证先进先出的顺序。能够找到最短路径,适用于寻路等问题。原创 2023-03-14 11:29:05 · 903 阅读 · 0 评论 -
重温数据结构与算法之深度优先搜索
深度优先搜索(DFS)是一种遍历或搜索树或图数据结构的算法。该算法从根节点开始(在图的情况下,选择一些任意的节点作为根节点),并在回溯之前尽可能地沿着每个分支进行探索。需要额外的内存,通常是一个堆栈,来跟踪到目前为止沿着指定分支发现的节点,这有助于回溯。从一个起始节点开始,沿着一条路径不断访问邻接节点,直到没有未访问的邻接节点为止,然后回溯到上一个节点,继续访问其他邻接节点。利用栈或递归来实现。可以产生目标图的相应拓扑排序表。简单易实现。占用空间少。原创 2023-03-08 10:00:24 · 2000 阅读 · 0 评论 -
Java开源工具库使用之httpclient
HttpClient成立于2001年,是项目下的子项目,2004 年离开Commons,提升成为一个单独的 Jakarta 项目。2005 年,Jakarta 创建了项目,目标是开发的继任者。2007 年,Commons项目,也就是HttpClient项目的发源地,离开了Jakarta, 成为了1个新的顶级项目。不久之后,也离开了Jakarta, 成为一个独立的顶级项目,负责维护HttpClient的工作。HttpClient提供了高效、最新、功能丰富的支持HTTP。原创 2023-02-22 11:26:45 · 2678 阅读 · 0 评论 -
重温数据结构与算法之约瑟夫问题
约瑟夫问题,是一个计算机科学和数学中的问题,在计算机编程的算法中,类似问题又称为约瑟夫环,又称“丢手绢问题”。据说著名犹太历史学家 Josephus 有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。原创 2023-01-29 23:41:24 · 1503 阅读 · 0 评论 -
Java开源工具库使用之JWT
官网介绍JWT 是什么?JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑和独立的方式,可以作为 JSON 对象在各方之间安全地传输信息。这个信息可以被验证和信任,因为它是用数字签名完成的。jwt 可以使用密钥(使用 HMAC 算法)或使用 RSA 或 ECDSA 的公钥/私钥对进行签名。虽然 JWT 也可以加密以提供各方之间的保密,但专注于签名 Token。签名 Token 可以验证其中包含的声明的完整性,而加密Token 可以向其他各方隐藏这些声明。原创 2023-01-17 23:24:42 · 1284 阅读 · 0 评论 -
SpringBoot学习小结之滑块验证码生成库tianai-captcha
最近发现一个有趣的 Java 验证码库,能够生成各种行为验证码:滑块、旋转、点选验证码。github: https://github.com/tianaiyouqing/tianai-captchapom原创 2022-12-19 08:30:00 · 3063 阅读 · 5 评论 -
Java并发之线程池
在高并发的 Java 程序设计中,编写多线程代码可以最大限度发挥现代多核处理器的计算能力,提升系统的吞吐和性能。线程是多线程代码的基础工具,但不能无限制增加线程的数量,线程的创建和销毁、所占内存都要消耗系统资源,如果处理不当,可能会导致 OOM,并且大量线程的回收也会给 GC 带来压力,延长停顿时间。在并发环境下,系统不能够确定在任意时刻中,有多少任务需要执行,有多少资源需要投入。为解决资源分配这个问题,线程池采用了“池化”(Pooling)思想。原创 2022-11-23 21:03:06 · 684 阅读 · 0 评论 -
重温数据结构与算法之并查集
并查集是一种树型的数据结构。它的特点是由子结点找到父亲结点,用于处理一些不交集()的合并及查询问题。Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。Union:将两个子集合并成同一个集合。摘自 Wiki在计算机科学中,不相交集数据结构(Disjoint Sets),也称为并查集或合并查找集(),是存储不相交(非重叠)集合的数据结构。同样地,它将一个集合的一个分区存储为不相交的子集。它提供添加新集、合并集合(用联合替换它们)和查找集合成员的操作。原创 2022-11-09 22:33:14 · 426 阅读 · 0 评论 -
Java开源工具库使用之高性能内存数据查找库CQengine
CQEngine(Collection Query Engine) 集合查询引擎,是一个高性能的Java集合,可以使用类似 SQL 的查询语句进行搜索,且延迟极低。每秒实现数百万个查询,查询延迟以微秒为单位从数据库中卸载查询流量,扩展应用程序层即使是在低端硬件上,其性能也比数据库高出数千倍支持堆内持久化、堆外持久化、磁盘持久化,并支持 MVCC 事务隔离。原创 2022-11-02 14:49:17 · 2167 阅读 · 0 评论 -
Java开源工具库使用之Guava
Guava 是谷歌开源的 Java 核心库,它包括很多新的集合类型(如 multimap 和 multiset)、不可变集合、graph 库,以及用于并发、I/O、哈希、缓存、基本类型、字符串等的实用代码!它被广泛应用于谷歌中的大多数 Java 项目中,也被许多其他公司广泛使用。pom 依赖:原创 2022-10-24 17:32:21 · 3391 阅读 · 0 评论 -
Java开源工具库使用之java源代码生成库JavaPoet
JavaPoet是一个用于生成 .java 源代码文件的 Java API。截止博客发表为止,整个项目核心源码就17个类文件,github上却有 9.9k stars,可谓短小精悍。javapoet 实现了自动导包和语句分号添加,代码流程控制,代码格式化等功能,很方便开发者生成一些模板代码原创 2022-10-17 11:45:00 · 1354 阅读 · 0 评论 -
重温数据结构与算法之单调栈
单调栈(monotonous stack)是指栈的内部从栈底到栈顶满足单调性的栈结构。其实单调栈就是“栈 + 维护单调性”,根据元素依次增大/减小可分为两种递增单调栈:栈中元素从栈底到栈顶依次增大递减单调栈:栈中元素从栈底到栈顶依次减小单调栈通常用来解决这种问题:给出n个数,用 O(n) 的时间求出每个数左/右边第一个比它小/大的数.。原创 2022-10-10 12:14:44 · 616 阅读 · 0 评论 -
重温数据结构与算法之动态规划
摘自 LeetcodeDP 在笔试和面试中经常会遇到,而 DP 最重要有三点:状态定义,初始状态和状态转移方程。下面会通过 Leetcode 上一些题目来练习 DP原创 2022-10-07 13:40:12 · 525 阅读 · 2 评论 -
Java开源工具库使用之性能测试JMH
JMH(Java Microbenchmark Harness),是 OpenJDK 团队开发的一款基准测试工具,一般用于代码的性能比较和调优,精度甚至可以达到纳秒级别,适用于 java 以及其他基于 JVM 的语言。原创 2022-09-28 12:55:31 · 954 阅读 · 0 评论 -
Java开源工具库使用之密码安全策略库passay
passay 是一个 Java 开源的密码安全策略库,可用于生成和验证密码。它提供了全面的规则类以验证/生成密码,并且高度可配置。Rule针对密码强度规则的接口。用于定义了一个密码策略规则集,包含一个或多个规则密码校验器。用于对一个候选密码评估多个密码规则的中心组件,可根据规则集验证密码密码生成器。生成满足给定规则集的密码pom 依赖:原创 2022-09-14 10:46:44 · 1867 阅读 · 0 评论 -
Java开源工具库使用之虚假数据生成库datafaker
在开发和测试过程中,经常碰见需要构造虚假数据进行测试的情况。开源库 datafaker 是 Java 相关虚假数据构造库,它是java-faker的替代产品,基于 Java 8 构建,具有最新的库和几个新添加的 Fake Generators。原创 2022-09-12 10:43:58 · 2643 阅读 · 0 评论 -
Java开源工具库使用之Apache commons-lang3
标准的 Java 库未能提供足够的方法来操作其核心类,Apache-common-lang 提供了许多辅助工具,特别是字符串操作方法、基本数值方法、对象反射、并发、对象创建和序列化以及系统属性。此外,它还包含了对 java.util 的基本增强功能,日期和一系列的实用工具。common-lang 有两个主要版本,lang 和 lang3。原创 2022-09-07 12:14:39 · 8373 阅读 · 2 评论 -
SpringBoot学习小结之数据库版本管理工具Flyway
flyway 是一款数据库迁移工具,你也可以把它看成是一款数据库版本管理工具。2010年,Axel Fontaine 创建了 flyway ,2019 年 flyway 被 Redgate 收购,flyway 后面也分为 Community edition (开源社区版) 和 Teams edition (商业版) ,一些高级功能(如 Undo )只能在商业版中使用,对于基本的数据迁移,开源的版本也够用了。...原创 2022-08-15 17:17:25 · 997 阅读 · 0 评论 -
SpringBoot学习小结之分库分表、读写分离利器Shardingsphere
从官网上可以看到Apache ShardingSphere 是一款开源分布式数据库生态项目,旨在碎片化的异构数据库上层构建生态,在最大限度的复用数据库原生存算能力的前提下,进一步提供面向全局的扩展和叠加计算能力。其核心采用可插拔架构,以数据库协议及 SQL 方式提供诸多增强功能,包括数据分片、访问路由、数据安全等。Apache ShardingSphere 由JDBC、Proxy和Sidecar(规划中) 3 款产品组成。项目的线路规划和时间历程如下图。...原创 2022-08-09 11:16:31 · 368 阅读 · 0 评论 -
SpringBoot学习小结之Swagger
Swagger API 项目最初由 Wordnik 的技术联合创始人 Tony Tam 于 2011 年创建,主要针对在 Wordnik 的产品开发过程中API 文档自动化和客户端 SDK 生成的需求。设计师/开发人员 Zeke Sikelianos 创建了 Swagger 这个名字,Swagger API 项目于 2011 年 9 月开源。2015 年 11 月,维护 Swagger 的公司宣布在Linux基金会的赞助下,创建了一个名为OpenAPIInitiative。...原创 2022-08-02 18:39:11 · 194 阅读 · 0 评论 -
SpringBoot学习小结之MyBatisPlus
在使用Mybatis时,最先开始的事情就是实体类对应的增删改查代码的编写,而且还不能省略,你不知道下个需求需不需要这个方法。几乎每个表都需要编写一套最基本的增删改查方法,主要就是DAO接口和mapper.xml文件的编写,如果表中的字段进行了修改,那么实体类,mapper文件甚至DAO接口都要进行修改,这样比较麻烦。虽然有MyBatisGenerator这样的插件在,可以自动生成,但是会覆盖自定义的方法。有没有类似JPA那样不用编写sql语句的框架库呢?有的,...原创 2022-07-25 09:45:00 · 163 阅读 · 0 评论 -
SpringBoot学习小结之mapstruct
Java bean映射框架有很多,在之前我已经有一篇博文介绍了dozer, 它也是一个优秀的映射框架,但是作者已经不再维护了,不过作者在readme里推荐了另一个类似的框架 mapstruct ,所以准备开始学习它。 根据官网介绍,mapstruct 是一个Java注解处理器,用于为Java bean类生成类型安全和性能良好的映射类。使用 mapstruct ,只需要定义一个 Mapper 接口,声明需要映射的方法,在编译过程中,mapstruct 会自动生成该接口的实现类,实现将源对象映射到目标对象原创 2022-07-17 18:54:00 · 486 阅读 · 0 评论 -
SpringBoot学习小结之Dubbo
在互联网的发展过程中,在以前,我们只需要一个服务器,将程序全部打包好就可以,但是,随着流量的增大,常规的垂直应用架构 已无法应对,所以,架构就发生了演变,从单体应用转向分布式、微服务架构。dubbo正是一款微服务开发框架,它提供了 RPC通信 与 微服务治理 两大关键能力。单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。垂直应用架构当访问量逐渐......原创 2022-07-11 23:06:51 · 187 阅读 · 0 评论 -
SpringBoot学习小结之Redis
Redis是一个持久化在磁盘上的内存数据库,支持多种数据类型Redis和Mencashed对比总而言之,Redis提供了非常丰富的功能,而且性能基本上与Memcached相差无几,这也是它最近这几年占领内存数据库鳌头的原因。在技术选型方面,如果你的业务需要各种数据结构给予支撑,同时要求数据的高可用保障,那么选择Redis是比较合适的,但是如果你的业务非常简单,只是简单的set/get,并且对于内存使用并不高,那么使用Memcached足够了。...原创 2022-06-24 22:17:24 · 775 阅读 · 0 评论 -
书签整理-程序员常用网站导航
程序员常用网站导航原创 2022-06-19 19:51:31 · 4942 阅读 · 0 评论 -
SpringBoot学习小结之权限控制Shiro
Shiro是 Apache下一个功能强大、灵活的轻量级java开源安全框架,可用来实现用户身份验证、权限授权、session管理和密码加密等功能。下图是Shiro的重点主要概念支持功能身份验证和授权功能具有可插拔性和灵活性,方便开发人员自定义自己的角色权限规则shiro和Spring Security对比1.2 实体类2.3 Dao2.4 Controller2.5 配置web配置Shiro配置全局异常处理2.6 Realm2.7 自定义注解LoginUse原创 2022-06-12 20:30:00 · 1142 阅读 · 0 评论