- 博客(194)
- 资源 (1)
- 收藏
- 关注
原创 Java 后端面试指南
该篇文章是博主对Java的学习进行的系统性的归纳总结,汇总了Java基础、多线程、JVM、MySQL、Redis、docker、实战经验、常用开发框架等常见的一些问题和解决方案,
2024-02-21 18:18:20 1144
原创 SOA与微服务
SOA与微服务文章目录SOA与微服务中心化实现去中心化实现微服务架构微服务的特征SOA架构和微服务架构的差别SOA 全称(Service Oriented Architecture),中文意思为“面向服务的架构”。他是一种设计方法,其中包含多个服务,服务之间通过相互依赖最终提供一系列的功能。一个服务通常以独立的形式存在与操作系统进程中。各个服务之间通过网络调用。SOA就是一个包含多个服务,服务之间通过配合对外提供一系列功能的架构。每个服务独立部署,服务之前通过网络调用。那么SOA的落地实现有哪些
2022-01-21 10:52:09 3715
原创 为什么阿里规定不能使用Executors去创建线程池?
阿里规定不使用Executors去创建线程池是为了避免默认配置带来的潜在风险,尽可能让开发者根据实际需求来自定义线程池,以确保系统的稳定性和可靠性。
2024-03-27 20:47:54 203
原创 布谷鸟过滤器(Cuckoo Filter)
布谷鸟过滤器的核心思想是使用两个或更多的哈希函数,每个元素在过滤器中有两个位置,这样可以有效地减少误报率。当插入一个新元素时,如果这两个位置都被占用,那么会随机选择其中一个位置替换掉原有的元素。这个过程类似于布谷鸟的巢寄生行为,因此得名“布谷鸟过滤器”。此外,布谷鸟过滤器适用于那些可以接受偶尔误报,但需要频繁更新数据的场景。例如,在网络缓存、数据库查询优化、大数据处理等领域,布谷鸟过滤器都可以发挥其优势。
2024-03-12 12:18:34 426
原创 布隆过滤器
布隆过滤器是一种数据结构,它可以告诉你一个元素是否可能在集合中。请注意,它可能会告诉你一个元素在集合中,即使实际上不在(这就是所谓的误报)。然而,如果它告诉你一个元素不在集合中,那么这个元素肯定不在集合中。这种“宁可错杀一千,不可放过一个”的特性使得布隆过滤器非常适合处理可以接受误报,但无法接受漏报的场景。
2024-03-12 12:14:49 885
原创 Java中的信号量(Semaphore)机制详解
信号量(Semaphore)是一种用于控制多个线程对共享资源的访问的同步工具类。它维护了一个许可集,许可集的大小决定了同时访问共享资源的线程数量。当一个线程需要访问共享资源时,首先需要获取一个许可;当线程访问完共享资源后,需要释放许可。通过这种方式,信号量可以有效地控制对共享资源的访问,避免因资源竞争而导致的问题。
2023-12-05 14:04:04 848
原创 Java中的并发编程:深入理解CountDownLatch
CountDownLatch是Java中的一个同步工具类,它主要的设计目的是用来解决多线程之间的协调问题。它允许一个或多个线程等待其他线程执行完毕后再执行。具体来说,CountDownLatch内部定义了一个计数器和一个阻塞队列。每当调用countDown()方法时,计数器的值就会减1。当计数器的值递减到0之前,阻塞队列里面的线程会处于挂起状态。只有当所有其他线程都完成各自的任务并调用了countDown()方法后,计数器的值变为0,此时等待的线程才会被唤醒并继续执行。
2023-12-05 10:34:10 632
原创 Java中的内存模型与垃圾回收机制
本文将深入探讨Java中的内存模型和垃圾回收机制,包括内存区域划分、对象创建与销毁、垃圾回收算法以及如何优化垃圾回收性能。通过理解这些概念和技术,我们可以编写出更高效、稳定的Java程序。
2023-12-01 16:02:05 428
原创 Java中的锁与同步机制
本文介绍了Java中的锁与同步机制,包括内置锁、显式锁、synchronized关键字以及并发容器的原理。通过理解这些概念和技术,我们可以更好地编写高性能、线程安全的Java程序。在实际开发中,我们需要根据具体场景选择合适的同步机制,以确保程序的正确性和性能。
2023-12-01 10:47:19 469
原创 Java 双亲委派模型
Java 双亲委派模型是一种 Java 类加载器的工作原理。它的主要目的是确保类加载器之间的层次结构,以便在需要时可以委托给上层类的加载器加载类。这种模型有助于实现类加载器的可扩展性和安全性。总之,Java 双亲委派模型是一种有效的类加载机制,它可以确保类的唯一性、核心库的安全性以及类的隔离和模块化,从而提高了程序的性能和安全性。
2023-11-03 10:55:48 112
原创 Spring Boot集成etcd
etcd是一个分布式键值存储数据库,用于共享配置和服务发现。它是由CoreOS团队开发并开源的,具备以下特点:简单、安全、高性能、一致可靠等。etcd采用Go语言编写,具有出色的跨平台支持,很小的二进制文件和强大的社区。etcd机器之间的通信通过Raft算法处理。
2023-08-24 15:03:38 1167
原创 java文本相似度
在 Java 中,可以使用一些现成的库来比较文本的相似度。这里,我将为您提供一个使用 Jaccard 相似度算法(集合相似度)比较文本相似度的方法。请注意,这个示例仅提供了一个基本的文本相似度比较方法。实际上,有许多其他相似度指标和算法,如余弦相似度、编辑距离等,您可以根据实际需求进行选择。添加到项目的类路径中。您可以从 Maven Central 仓库下载这个 JAR 文件。方法负责将输入字符串分解为单词。您可以根据需要替换为您喜欢的分词器。方法使用 Jaccard 系数计算两个字符串之间的相似度。
2023-08-23 17:04:31 503
原创 java文本相似度【余弦相似度】
为了实现文本相似度对比,我们可以使用余弦相似度算法。首先,我们需要将文本转换为向量,然后计算两个向量之间的余弦相似度。方法是计算余弦相似度的核心方法,它接受两个字符串参数,分别表示要比较的文本。方法计算它们的相似度。最后,我们将结果输出到控制台。方法中,我们定义了两个要比较的文本,并调用。方法用于将文本转换为字符计数的映射。方法用于测试文本相似度计算。这个代码示例首先定义了一个。
2023-08-23 17:01:27 1170
原创 java调用python脚本的示例
请将上述代码保存为一个Java文件(例如JavaCallPythonScript.java),并将"path/to/your/python/script.py"替换为实际的Python脚本路径。然后编译并运行该Java程序,它将调用指定的Python脚本并打印其输出结果。
2023-08-23 16:15:48 129
原创 DDD与微服务的不解之缘
DDD与微服务的不解之缘文章目录DDD与微服务的不解之缘都已经有微服务了,为什么还需要DDD呢?2003年,Eric出版了那本著名的《Domain-driven Design》,这本书花费了它4年的时间。也就是说,Eric从1999年就开始构思编写DDD了,距今已近二十二年。20多年的时间,在其他领域也许不足为道,但在软件和互联网领域已经足够完成一次次的技术跨越。很难想象,一种软件架构思想历经二十多年不仅没有被淘汰,竟然再次青春焕发!说到这,DDD得感谢微服务的出现。近些年来,由于互联网行业的快速发展
2022-01-21 10:50:26 376
原创 充血模型编码实践
失血模型简单来说,就是domain object只有属性的getter/setter方法,没有任何业务逻辑。@Data@ToStringpublic class User { private Long id; private String username; private String password; private Integer status; private Date createdAt; private Date updatedAt;
2022-01-21 10:49:10 1067 1
原创 DDD为什么火了?
DDD为什么火了?第一次听到DDD这个词是在几年前。乍一听感觉像TDD(测试驱动开发(Test-Driven Development),但其实它们完全是两回事。虽然DDD早在2003年就提出了,但一直没有火起来。直到最近两年才慢慢被大家熟知。深究其原因,我觉得有三方面:第一方面,DDD是解决复杂软件问题的,而之前的软件大多没有很复杂的逻辑,不用DDD也能玩得转;第二方面,DDD一直没有很好的落地指导,一直到《实现领域驱动设计》这本书的问世,为DDD的落地打开了大门;第三方面,国内没有团队去研究和
2022-01-21 10:47:42 573
原创 SpringBoot 实现反向代理
背景:在前后端分离的项目中,有一天后端项目因为某些原因不能暴露在公网地址,此时为了修改最少,利用反向代理技术进行实现。1. 引入依赖 <dependency> <groupId>org.mitre.dsmiley.httpproxy</groupId> <artifactId>smiley-http-proxy-servlet</artifactId> <version>1.12</version&.
2022-01-06 09:58:14 3867 3
原创 Docker 查看仓库的登录信息
cat /root/.docker/config.json{ "auths": { "reg.qi123n123123iu.com": { "auth": "d2FuZ3l123pbmh1QHN5c3dpbi5jb201D26c3lzd2luMXEydsaddzNlNHI=" } }, "HttpHeaders": {
2021-09-15 09:55:04 1839
原创 Java获取UserAgent Java获取当前请求的操作系统及版本、浏览器及版本
识别客户使用的操作系统及版本、浏览器及版本、浏览器渲染引擎等本文采用Hutool,Hutool在4.2.1之后支持User-Agent的解析。使用以桌面浏览器为例,假设你已经获取了用户的UA:String uaStr = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1";获取UA信息我们可以借助UserAgentUtil.p.
2021-04-15 09:47:22 2345
原创 SpringBoot 集成MinIO
SpringBoot 集成MinIO引入jar包 <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>7.0.2</version> </dependency>配置minio: endpoint: 172.28.43.29 port: 9000
2020-07-28 13:41:06 14806 13
原创 初识 MinIO
Linux 下安装MinIO# 下载wget https://dl.min.io/server/minio/release/linux-amd64/minio# 赋权chmod +x minio# 设置用户名export MINIO_ACCESS_KEY=minio# 设置密码export MINIO_SECRET_KEY=miniopassword# 启动 /home/data是自己定义的文件目录,进入minio的下载目录./minio server /home/data
2020-07-24 17:31:54 396
原创 Spring Cloud Feign调用返回流/html
记一次 Spring Cloud Feign接口返回流的过程网关项目由于过滤器的存在不能让接口直接暴露在公网,目前需要进行迂回战术,在可以公网无鉴权的项目里进行Feign调用,由此跳过鉴权,但是发现返回的是一个txt/html,之前一只返回的是数据类型,第一次使用Feign返回此类型内部暴露@ApiOperation("获取自助机取件码")@GetMapping("/selfServiceMachine/getQRCode/{caseId}") public void getQRCode(H.
2020-07-21 15:17:13 3001 3
原创 java base64转图片
@ApiOperation("获取二维码") @GetMapping("/getQRCode") public void getQRCode(HttpServletResponse response) throws IOException { try { response.setContentType("text/html"); String xmlImg = "iVBORw0KGgoAAAANSUhEUgAAAIcAAACH.
2020-07-13 16:47:23 9737
原创 SpringBoot 数据库连接池 Druid HikariCP
在Spring Boot中使用Druid<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version></dependency><dependency> <groupId>com.alibaba<
2020-07-10 18:19:28 524
原创 SpringBoot 引入第三方本地jar 并打包
引入本地jar在项目路径下新建文件夹lib,并将jar放入pom文件引入 <dependency> <groupId>com.orifound</groupId> <artifactId>DES</artifactId> <version>1.0</version> <type>jar</type>
2020-07-06 09:22:18 1279
原创 SpringBoot使用Undertow代替Tomcat
Undertow使用spring boot内嵌容器默认为tomcat,想要换成undertow,非常容易,只需修改spring-boot-starter-web依赖,移除tomcat的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>
2020-07-06 09:16:48 769
原创 git 撤销已经push的提交
git loggit reset --soft f7d68e12aa13089c5865076f66749d4a6b72cbf8git push origin master --force
2020-07-02 20:15:08 491
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人