当前位置: 首页 > news >正文

记一次面试题

1.Php 私有化包(composer)的部署

1. 创建你的PHP包
确定你的包的功能和命名空间。
创建一个新的目录并初始化一个Git仓库。
使用composer init命令创建一个composer.json文件,并定义你的包名、版本、依赖等信息。
2. 开发并测试你的包
在本地开发你的包的代码。
使用PHPUnit或其他测试工具为你的包编写测试。
确保你的包遵循PSR标准,并且所有的依赖都已经在composer.json文件中声明。
3. 私有仓库的选择
使用Git服务器:你可以将你的包托管在任何支持Git的服务器上,例如GitLab、GitHub的私有仓库、Bitbucket等。
使用私有包管理服务:如Packagist.com的私有仓库、Satis或Composer V2的私有Packagist镜像。
4. 部署你的包到私有仓库
确保你的包的版本号正确。
将你的代码推送到所选择的Git服务器或私有包管理服务。
如果使用Satis或私有Packagist,确保你的服务器已经正确配置并且可以访问你的私有包。
5. 在项目中使用你的私有包
在项目的composer.json文件中添加仓库信息,例如:
json
Copy code
"repositories": [{"type": "vcs","url": "https://your-git-server.com/your-package.git"}
]
使用composer require命令添加你的包为依赖。你可能需要提供版本约束。
6. 管理访问权限
确保只有授权的用户可以访问和下载你的私有包。这可能涉及设置Git服务器的访问权限或使用私有包管理服务的访问控制功能。
7. 持续集成/持续部署(CI/CD)
配置CI/CD流程,以自动化测试和部署你的包的更新。这可以通过Travis CI、GitLab CI/CD或GitHub Actions等服务实现。
8. 维护你的包
定期更新你的包,修复bug,添加新功能。
确保遵循语义化版本控制,以便用户可以安全地更新他们的依赖。

2.redis延迟队列的实现

1.使用 Sorted Set 实现延迟队列
Sorted Set 是 Redis 提供的一种数据结构,它可以根据元素的分数进行排序。在延迟队列的场景中,可以使用时间戳作为分数,队列项的内容作为 Sorted Set 的成员。添加任务: 使用 ZADD 命令将任务添加到 Sorted Set 中,其中分数是当前时间加上延迟时间(例如,如果当前时间是 10:00,延迟时间是 300 秒,那么分数就是 10:05 对应的时间戳)ZADD delay_queue {timestamp} "task_info"
处理任务: 创建一个循环,不断地检查 Sorted Set 中是否有分数小于或等于当前时间的元素。如果有,使用 ZRANGEBYSCORE 命令获取这些元素,然后用 ZREM 删除这些元素并处理任务# 获取当前时间戳
ZRANGEBYSCORE delay_queue 0 {current_timestamp} LIMIT 0 1
ZREM delay_queue "task_info"

3.redis 实现分布式锁

SET lock_key unique_value NX PX timeout

4.redis内存型缓存替换方案(硬盘缓存)

1. Tair - 阿里巴巴
Tair是阿里巴巴开发的一个高性能、持久化的键值对存储系统。它最初是为了满足阿里内部的大规模数据存储需求而开发的。Tair支持多种存储引擎,包括但不限于内存、SSD和HDD,使其能够根据不同的业务需求灵活地选择存储介质。2. Tendis - 腾讯
Tendis是腾讯基于RocksDB开发的兼容Redis协议的持久化NoSQL数据库。它设计用于提供与Redis相似的API接口,同时利用RocksDB的特性来提供数据的持久化存储,尤其适合大数据量存储的场景。3. Pika - Qihoo 360
Pika是360公司开源的一个NoSQL数据存储系统,它兼容Redis协议,但在后端使用RocksDB作为存储引擎。这使得Pika可以在提供Redis操作接口的同时,支持更大规模的数据存储和持久化。4.LevelDB:由 Google 开发,提供简单的键值存储功能,适合读写操作较少、数据量不是非常大的场景。5.RocksDB:基于 LevelDB,由 Facebook 开发,针对 LevelDB 的性能和功能进行了优化,支持更高的并发和更大的数据量

5.redis 常见集群方案比较选型

Redis 集群技术方案主要旨在提供数据的高可用性、分布式存储以及负载均衡,以支持大规模数据处理和访问。以下是 Redis 支持的几种主要集群技术方案:1. Redis Sentinel
Redis Sentinel 提供了监控、通知、自动故障转移和服务发现的机制。它主要用于高可用性方案,通过监控所有 Redis 节点的运行状态,一旦主节点出现故障,Sentinel 可以自动将一个从节点提升为新的主节点,从而保证服务的连续可用性。
- 优点:实现简单,自动故障转移,维护系统的高可用性。
- 缺点:不支持自动的数据分片,适用于单个 Redis 实例需要高可用的场景。2. Redis Cluster
Redis Cluster 提供了一个自动分片的分布式数据库解决方案,支持在多个 Redis 节点之间自动分配数据。每个节点存储整个数据集的一部分,并且 Redis Cluster 通过使用一致性哈希来分配数据到不同的节点上。
- 优点:支持自动数据分片,可以水平扩展,提高了数据的读写能力和存储容量。
- 缺点:客户端实现相对复杂,网络分区可能会影响可用性和一致性。3. Redis 主从复制
Redis 支持主从复制(Replication),允许一个 Redis 服务器的数据被复制到多个从服务器中。这不仅可以用于数据备份,也能通过读写分离来提高读取性能。
- 优点:简单易用,可以实现读写分离,提高读取性能。
- 缺点:不提供自动故障转移,需要结合 Sentinel 来实现高可用;也不支持自动数据分片。4. 第三方集群方案
除了 Redis 官方支持的集群方案外,还有一些第三方解决方案,如 Twemproxy(由 Twitter 开发)和 Codis(由猿辅导开源)。这些工具提供了代理层来实现数据的分片和负载均衡,有时还提供了更加丰富的特性。
- Twemproxy:支持数据分片和连接池,减少了客户端和 Redis 服务器之间的连接数。
- Codis:基于代理的 Redis 集群解决方案,支持动态添加或删除节点,易于扩展。5.选择哪种方案?
选择哪种 Redis 集群技术方案取决于你的具体需求:
- 如果需要高可用性和自动故障转移,可以选择 **Redis Sentinel**。
- 如果需要数据分片和水平扩展,**Redis Cluster** 是更好的选择。
- 对于需要读写分离或简单扩展的场景,可以使用 **主从复制**,可能结合 **Sentinel** 来增强可用性。
- 如果你的应用场景对连接数有严格要求或需要更灵活的数据分片策略,可以考虑 **Twemproxy** 或 **Codis**。根据你的业务需求(如数据量、读写比例、可用性要求等)以及运维能力,综合考虑选择最合适的方案。

6.RabbitMQ常见部署模式

1.单节点部署
在单节点部署模式下,RabbitMQ 服务运行在单个服务器上。这是最简单的部署方式,适合开发环境或者小规模的生产环境,其中的消息传输负载较低,对可用性和容错能力的要求不是很高。
- 优点:- 简单易部署,不需要复杂的配置。- 适用于小型应用或开发测试环境。
- 缺点:- 高可用性和容错能力较弱。如果节点失败,服务将不可用。- 扩展性有限,难以应对大规模消息传输需求。2.集群部署
集群部署模式下,多个 RabbitMQ 节点(服务器)组成一个集群,共同对外提供服务。集群中的节点可以共享消息队列和消息,提高了系统的可用性和可扩展性。- 优点:- 高可用性。集群中的某个节点如果出现故障,其他节点可以继续提供服务,保证了系统的持续可用性。- 良好的扩展性。可以通过增加更多的节点来扩展系统的处理能力,满足大规模的消息传输需求。- 负载均衡。集群可以分摊消息处理负载,提高处理效率。
- 缺点:- 部署和管理相对复杂。需要合理规划集群的架构,并且维护成本较高。- 数据一致性。在高并发场景下,保证集群中数据的一致性可能会面临挑战。

7.kafka如何实现顺序队列

1. 单个分区
原理:Kafka 保证单个分区内的消息是按照它们被发送的顺序来存储的。也就是说,如果你的主题(Topic)只有一个分区,那么这个主题中的所有消息都将全局有序。
实践:在创建主题时,指定分区数为 1,以确保消息全局有序。

相关文章:

记一次面试题

1.Php 私有化包(composer)的部署 1. 创建你的PHP包 确定你的包的功能和命名空间。 创建一个新的目录并初始化一个Git仓库。 使用composer init命令创建一个composer.json文件,并定义你的包名、版本、依赖等信息。 2. 开发并测试你的包 在本地…...

Rust入门2——随机数

文章目录 一、生成随机数二、比较两个数相等 简单列出两个Rust的小例子 一、生成随机数 在Cargo.toml的dependencies中引入rand,指定rand的版本 [dependencies] rand "^0.3.14"之后在主函数中调用rand函数,生成随机数 use rand::Rng; f…...

c#: 表达式树的简化

环境&#xff1a; .net 6 一、问题&#xff1f; 有下面的表达式&#xff1a; var nums new List<int> { 1, 2, 3 }; Expression<Func<int, bool>> exp i > i > nums.Max();我们知道&#xff0c;它其实就是&#xff1a;exp i > i > 3; 那么…...

13. UE5 RPG限制Attribute的值的范围以及生成结构体

前面几章&#xff0c;我们实现了通过GameplayEffect对Attribute值的修改&#xff0c;比如血量和蓝量&#xff0c;我们都是有一个最大血量和最大蓝量去限制它的最大值&#xff0c;而且血量和蓝量最小值不会小于零。之前我们是没有实现相关限制的&#xff0c;接下来&#xff0c;我…...

UE4运用C++和框架开发坦克大战教程笔记(十九)(第58~60集)完结

UE4运用C和框架开发坦克大战教程笔记&#xff08;十九&#xff09;&#xff08;第58~60集&#xff09;完结 58. 弹窗显示与隐藏59. UI 面板销毁60. 框架完成与总结 58. 弹窗显示与隐藏 这节课我们先来补全 TransferMask() 里对于 Overlay 布局类型面板的遮罩转移逻辑&#xff…...

ModuleNotFoundError: No module named ‘_ctypes‘报错解决方案

1、须命令安装libbffi-devel软件包&#xff1a; yum install libffi-devel -y2、安装完后再重装python3&#xff0c;无须卸载 找到之前的python3安装包&#xff0c;如果安装包删除了通过 history | grep python命令找到最初安装时的包下载的命令下载&#xff0c;保证版本一样&…...

【服务器数据恢复】服务器RAID模块硬件损坏的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某品牌服务器中有一组由数块SAS硬盘组建的RAID5磁盘阵列&#xff0c;服务器操作系统是WINDOWS SERVER&#xff0c;服务器中存放企业数据&#xff0c;无数据库文件。 服务器出故障之前出现过几次意外断电的情况&#xff0c;服务器断电…...

spring boot3x登录开发-上(整合jwt)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途。 目录 前置条件 jwt简介 导依赖 编写jwt工具类 1.配置项直接嵌入代码&#xff0c;通过类名.静态方法使用 2.配置项写到…...

git 克隆拉取代码出现私钥权限问题。

问题反馈&#xff1a; rootdd:~/android/boost-1.74-for-android-r20b# git clone https://github.com/liulilittle/boost-1.74-for-android-r20b.git Cloning into boost-1.74-for-android-r20b... WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0777 for /root/…...

【5G NR】【一文读懂系列】移动通讯中使用的信道编解码技术-卷积码原理

目录 一、引言 二、卷积编码的发展历史 2.1 卷积码的起源 2.2 主要发展阶段 2.3 重要里程碑 三、卷积编码的基本概念 3.1 基本定义 3.2 编码器框图 3.3 编码多项式 3.4 网格图(Trellis)描述 四、MATLAB示例 一、引言 卷积编码&#xff0c;作为数字通信领域中的一项…...

揭开Markdown的秘籍:标题|文字样式|列表

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;Markdown指南、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️Markdown 标题二. ⛳️Markdown 文字样式2.1 &#x1f514;斜体2.2 &…...

移动最小二乘法

移动最小二乘法&#xff08;Moving Least Square&#xff0c;MLS&#xff09;主要应用于曲线与曲面拟合&#xff0c;该方法基于紧支撑加权函数&#xff08;即函数值只在有限大小的封闭域中定义大于零&#xff0c;而在域外则定义为零&#xff09;和多项式基函数&#xff0c;通过…...

【LeetCode】37. 解数独(困难)——代码随想录算法训练营Day30

题目链接&#xff1a;37. 解数独 题目描述 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&…...

VUE学习——属性绑定

属性绑定&#xff0c;就是给html添加id、class这样类似的操作。 <template><div v-bind:id"dynamicId"><div v-bind:class"dynamicClass">Test</div></div> </template><script>export default{data(){return{…...

vue3 之 通用组件统一注册全局

components/index.js // 把components中的所组件都进行全局化注册 // 通过插件的方式 import ImageView from ./ImageView/index.vue import Sku from ./XtxSku/index.vue export const componentPlugin {install (app) {// app.component(组件名字&#xff0c;组件配置对象)…...

[Java][算法 双指针]Day 02---LeetCode 热题 100---04~07

LeetCode 热题 100---04~07 第一题&#xff1a;移动零 思路 找到每一个为0的元素 然后移到数组的最后 但是需要注意的是 要在给定的数组原地进行修改 并且其他非零元素的相对顺序不能改变 我们采用双指针法 定义两个指针i和j i和j一开始分别都在0索引位置 然后判断j所…...

【问题解决】如何将一个服务器的docker迁移到另一个服务器

要将Docker容器从一台机器迁移到另一台机器&#xff0c;可以按照以下步骤操作&#xff1a; 在机器A上提交容器为镜像&#xff1a; 使用docker commit命令将运行中的容器保存为新的镜像。这里需要容器的ID或名称&#xff0c;以及你想要命名的目标镜像名。 docker commit [容器…...

C++单例模式详解

目录 0. 前言 1. 懒汉式单例模式 1.1 最简单的单例模式 1.2 防止内存泄漏 1.2.1 智能指针的方法 1.2.2 静态嵌套的方法 1.3 保证线程安全 1.4 C11版本的优雅解决方案 2. 饿汉式单例模式 0. 前言 起因是在程序中重复声明了一个单例模式的变量&#xff0c;后来程序怎么调…...

LLM应用开发与落地:流式响应

一、背景 最近智能客服产品给到一个游戏客户那边&#xff0c;客户那边的客服负责人体验后认为我们产品回答的准确率是还是比较高的。同时&#xff0c;他反馈了几个需要改进的地方&#xff0c;其中一个就是机器人回复慢。机器人回复慢有很多原因&#xff0c;也有优化方式&#…...

神经网络 | 基于 CNN 模型实现土壤湿度预测

Hi&#xff0c;大家好&#xff0c;我是半亩花海。在现代农业和环境监测中&#xff0c;了解土壤湿度的变化对于作物生长和水资源管理至关重要。通过深度学习技术&#xff0c;特别是卷积神经网络&#xff0c;我们可以利用过去的土壤湿度数据来预测未来的湿度趋势。本文将使用 Pad…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 原创笔记&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 上一篇&#xff1a;《数据结构第4章 数组和广义表》…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中&#xff0c;经常会遇到端口被占用的问题&#xff08;如 8080、3306 等常用端口&#xff09;。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口&#xff0c;帮助你高效解决此类问题。​ 一、准…...