📄🦌🙌🐟🏖️
乘与零-cenyuio
让生活变的更有趣~
热门文章
按住 Shift 横向滚动
Jenkins 配置SSH凭据

Jenkins 配置SSH凭据

一、创建 SSH 密钥与公钥 # 进入容器 docker exec -it jenkins bash # 创建目录 mkdir -p /var/jenkins_home/.ssh # 生成密钥(无密码) ssh-keygen -t rsa -b 4096 -N "" -f /var/jenkin

Jenkins 部署安装

Jenkins 部署安装

一、Jenkins 介绍 Jenkins 是一款基于 Java 开发的开源自动化服务器,也是持续集成和持续交付(CI/CD)领域的核心工具之一。它就像一个不知疲倦的“智能管家”,能够自动化软件开发的构建、测试、打包和部署等全流程任务,帮助开发团队提升效率和软件质量。

Java面试-22:HashMap 的原理?

Java面试-22:HashMap 的原理?

HashMap 是一种基于数组和链表(或红黑树)的数据结构,通过 key 的 hash 值定位桶位置。数组初始长度为 16,负载因子为 0.75,当元素达到 12 个时会扩容以避免性能下降。key 的 hash 值经过扰动运算后用于定位桶位置,采用位运算而非取模以提高效率。链表长度超过 8 且数组长度大于等于 64 时,链表会转换为红黑树以优化查询性能。put 操作流程包括计算 hash、定位桶、插入元素并判断是否扩容,而 get 操作则是反向查找。HashMap 在多线程环境下可能导致环形链表,因此是非线程安全的,建议在并发场景下使用 ConcurrentHashMap。

Java面试-20:在工作中怎么进行Git版本控制?

Java面试-20:在工作中怎么进行Git版本控制?

文章描述了一个标准的Git开发流程,主要包括以下步骤:首先,开发者在每天开工前从`develop`分支拉取最新代码,确保本地代码同步。然后,从`develop`分支创建自己的功能分支(如`feature/xxx`或`fix/xxx`),并在开发完成后进行`add`和`commit`操作,提交信息清晰规范。提交前,将`develop`分支合并到自己的功能分支,解决冲突后再推送至远程仓库,并提交Merge Request进行Code Review。Review通过后,合并到`develop`分支,测试通过后再合并到`master`分支进行上线发布。此外,文章还提到了使用`stash`暂存代码、`reset`和`revert`回滚版本等操作,确保开发流程的规范性和安全性。整体流程强调了分支隔离、及时同步、规范提交、Code Review和安全上线的原则。

Java面试-18:介绍一下MySQL有那些索引类型?

Java面试-18:介绍一下MySQL有那些索引类型?

本文详细介绍了数据库中常见的六种索引类型及其特性: 1. **主键索引(PRIMARY KEY)**:最特殊、最重要的索引,每张表只能有一个,具有唯一性和非空性,用于唯一标识一行数据,查询速度最快。 2. **唯一索引(UNIQUE)**:类似于主键索引,但允许字段为NULL,保证列值绝对不重复,适用于手机号、身份证号等字段。 3. **普通索引(INDEX)**:最常用、最简单的索引,仅用于加速查询,无唯一或非空要求。 4. **复合索引(联合索引)**:一次为多个字段创建索引,遵循最左前缀原则,适用于经常一起查询的多个字段。 5. **全文索引(FULLTEXT)**:专门用于关键词搜索,比`like`查询快得多,适用于文章内容、商品描述等搜索场景。 6. **空间索引(SPATIAL)**:用于地理位置、坐标等数据,常见于地图范围查询,普通开发较少使用。

Java面试-17:介绍一下 Redis 缓存穿透、击穿、雪崩,及处理方案?

Java面试-17:介绍一下 Redis 缓存穿透、击穿、雪崩,及处理方案?

本文讨论了缓存系统中常见的三种问题及其解决方案: 1. **缓存穿透**:请求查询不存在的数据,导致请求直接打到数据库。解决方案包括缓存空结果、使用布隆过滤器判断数据是否存在、接口参数校验和限流。 2. **缓存击穿**:热点Key突然过期,导致大量请求同时访问数据库。解决方案包括设置热点Key永不过期、加互斥锁控制数据库访问、提前异步刷新缓存。 3. **缓存雪崩**:大批量缓存同时过期或Redis宕机,导致所有请求打到数据库。解决方案包括给过期时间加随机值、搭建Redis集群、使用多级缓存、服务降级和限流。 通过这些措施,可以有效防止缓存问题对系统性能和稳定性的影响。

Java面试-16:字符串常量池的作用了解吗?

Java面试-16:字符串常量池的作用了解吗?

字符串常量池是 JVM 为提升性能和减少内存消耗而专门为字符串(String 类)开辟的一块区域。其主要目的是避免字符串的重复创建,从而优化内存使用。当创建一个字符串对象时,JVM 首先在字符串常量池中查找是否已存在相同内容的字符串。如果存在,则直接返回该字符串的引用;如果不存在,则创建新字符串并将其放入常量池。这种机制确保了相同内容的字符串在内存中只存在一份,从而节省了内存空间。例如,代码中 `String aa = "ab";` 和 `String bb = "ab";` 都引用了字符串常量池中的同一个 "ab" 对象,因此 `aa == bb` 返回 `true`。