Couchbase UI: Server
在 Couchbase UI 中的 Server(服务器)标签页主要用于管理和监控集群中的各个节点。以下是 Server 标签页的主要内容和功能介绍:
1. 节点列表
显示集群中所有节点的列表,每个节点的详细信息包括:
- 节点地址:节点的 IP 地址或主机名。
- 节点角色:该节点在集群中的角色(如数据服务、索引服务、查询服务等)。
- 健康状态:显示节点的运行状态(绿色代表健康,红色代表异常)。
- 分配的服务:该节点运行的服务(如 Data、Index、Query、Analytics 等)。
2. 资源使用情况
针对每个节点的资源使用情况进行展示:
- CPU使用率:实时显示该节点的 CPU 使用情况。
- RAM使用量:包括总内存、已分配内存和可用内存。
- 磁盘使用量:显示磁盘空间的使用情况,包括数据存储和日志文件占用的大小。
- 网络流量:上传和下载的数据速率(如数据同步流量)。
3. 节点操作
提供针对单个节点的操作选项:
- Failover(故障转移):
手动将一个节点标记为故障,并从集群中移除。 - Rebalance(重新平衡):
当节点状态发生变化(如新增或移除节点)时,可以重新分配数据。 - Remove(移除节点):
从集群中删除某个节点。 - Add Server(添加节点):
将新节点加入到集群。
4. 节点服务分布
展示各个节点的服务分布情况,主要包括:
- Data Service:负责存储和访问数据。
- Index Service:用于索引管理和查询优化。
- Query Service:执行 N1QL 查询。
- Analytics Service:用于复杂的数据分析。
- Search Service:提供全文搜索功能。
- Eventing Service:用于触发和执行事件驱动的逻辑。
5. 集群资源概览
在页面顶部或侧边,会显示整个集群的资源汇总信息,包括:
- 总内存和使用情况。
- 总磁盘空间和使用情况。
- 当前运行的总操作数(OPS)。
- 每秒的数据读取和写入操作速率。
场景应用
- 运维人员可以在这个页面监控集群健康状态、资源使用情况,并快速响应节点故障。
- 管理员可以通过节点操作调整集群规模(如添加节点或移除节点)。
在 Couchbase UI 的 Server 标签页中,可能会看到关于 Node-to-Node Encryption (节点间加密) 的状态,比如显示为 off
或 on
。以下是关于 Node-to-Node Encryption 的详细介绍:
Node-to-Node Encryption 的含义
Node-to-Node Encryption 是一种安全功能,用于加密 Couchbase 集群中各节点之间的通信。它确保数据在网络传输过程中不被拦截或篡改,从而提高集群通信的安全性。
当 Node-to-Node Encryption 设置为 off
时:
- 节点之间的通信是明文传输的,没有加密保护。
- 可能在不安全的网络环境下(如公网部署)存在数据泄露风险。
当 Node-to-Node Encryption 设置为 on
时:
- Couchbase 集群会使用 TLS(传输层安全协议)对节点之间的所有通信进行加密。
- 提供数据在网络传输过程中的机密性和完整性。
在哪些情况下需要启用 Node-to-Node Encryption
- 安全性要求高的环境:如生产环境,特别是云部署或跨数据中心通信时。
- 敏感数据保护:如果传输数据中涉及敏感信息(如用户数据或财务数据),启用加密是必要的。
- 满足合规性:某些法规(如 GDPR、HIPAA)要求对网络传输的数据进行加密。
如何启用 Node-to-Node Encryption
-
通过 Couchbase UI 配置:
- 转到 Security(安全) 页面。
- 在 Cluster Encryption 部分中,找到 Node-to-Node Encryption 设置。
- 开启加密后,系统会提示重新平衡集群(Rebalance)以应用更改。
-
通过 CLI 或 REST API 配置:
- 使用 Couchbase CLI 命令:
couchbase-cli setting-security -c <cluster-url> -u <username> -p <password> --set-node-to-node-encryption --enable
- 通过 REST API 调用相应的安全配置端点。
- 使用 Couchbase CLI 命令:
-
配置 TLS 证书:
- 启用加密需要为每个节点配置 TLS 证书。可以使用 Couchbase 自签名证书或导入自定义证书。
注意事项
- 启用 Node-to-Node Encryption 可能会增加节点间通信的开销(加密和解密过程),但在大多数情况下性能影响有限。
- 如果集群已经运行,启用加密需要重新平衡(Rebalance),可能会短暂影响服务。
- 确保所有节点运行相同的 Couchbase 版本并支持加密功能。
如果您的 Couchbase 集群目前显示 Node-to-Node Encryption: off
,且部署在不安全网络中或传输敏感数据,建议尽快开启加密以确保数据安全。
在 Couchbase 中开启节点间的加密 (Inter-Node Encryption) 不会直接影响已有的历史数据传输,因为加密主要作用于 节点之间的新通信数据,并不改变已经存储在磁盘上的数据。然而,在开启节点间加密时,需要注意以下几点以及可能的调整:
影响与注意事项
-
历史数据无需迁移或修改:
- 历史数据存储在 Couchbase 的磁盘文件中,与节点间的加密无关。启用加密不会触及或改变这些数据。
-
性能开销:
- 开启节点间加密会引入一定的 CPU 和网络性能开销,尤其是在高流量的数据集群中。需要监控性能指标以评估是否需要调整资源配置(如增加节点或提升硬件性能)。
-
集群重启或服务中断:
- 启用节点间加密可能需要重新配置集群,有可能需要重启服务。在生产环境中执行时,应提前规划好维护窗口以避免中断业务。
-
客户端与服务器通信:
- 如果客户端也需要与 Couchbase 进行加密通信(如 SDK 连接),需要确认客户端的配置是否启用了 TLS,并将其与服务器端加密策略保持一致。
启用节点间加密需要的改动
-
更新配置文件:
- 在每个 Couchbase 节点上,通过修改
couchbase-server
的配置文件或使用 Couchbase CLI 来开启加密。
示例:
couchbase-cli setting-security --cluster <cluster-name> \ --username <admin> --password <password> \ --node-to-node-encryption on
- 在每个 Couchbase 节点上,通过修改
-
证书管理:
- 如果使用的是 自签名证书 或 内部 CA,需要在所有节点上安装和信任相关的证书链。证书管理可以通过 Couchbase 自带工具完成:
couchbase-cli ssl-manage \ --upload-cluster-ca \ --cluster <cluster-name> --username <admin> --password <password> \ --cert-path <path-to-ca-cert>
-
验证加密状态:
- 启用加密后,可以通过 Couchbase Web UI 或 CLI 查看加密是否已生效。加密启用后,节点间的通信(如数据复制、索引更新等)将使用 TLS。
-
性能监控与资源调整:
- 随着加密的启用,可能需要调整集群的 RAM 配置或增加节点以应对加密引入的性能损耗。
通过 Couchbase 自带的性能监控工具,观察指标如 CPU 使用率、延迟、数据传输速率等。
- 随着加密的启用,可能需要调整集群的 RAM 配置或增加节点以应对加密引入的性能损耗。
总结
- 开启节点间加密不会影响历史数据的传输,也不需要对历史数据进行任何改动。
- 需要完成配置文件修改、证书安装和性能监控。
- 在生产环境启用前,建议先在测试环境中验证性能和加密配置的有效性。
Couchbase RAM 配额设置解析:
-
Data Quotas: 14.6 GiB
- 用于存储数据的内存分配。适用于普通数据操作的 bucket,例如存储原始和加工后的业务数据。
-
Index Quotas: 4.29 GiB
- 为索引节点分配的内存,支持快速查询。这部分需要根据查询频率和复杂性调整,确保性能稳定。
-
Search Quotas: 4 GiB
- 用于 Full-Text Search 的内存分配。如果有搜索功能,例如用户输入模糊查询或全文搜索,可以依赖这部分内存。
-
Analytics Quotas: 1 GiB
- 用于分析服务的内存分配,支持复杂的 OLAP 分析查询,例如多维度的报表和聚合任务。
-
Eventing Quotas: 256 MiB
- 用于事件处理的内存分配,适合触发函数或实时计算需求,例如触发异步任务或实时数据转化逻辑。
如果是用于数仓的应用场景,这个配置需要进一步结合实际工作负载优化。比如:
- 如果查询较为频繁,可以增加 Index Quotas 或 Search Quotas 的内存配比。
- 如果对实时事件处理依赖较高,适当提高 Eventing Quotas。
相关文章:
Couchbase UI: Server
在 Couchbase UI 中的 Server(服务器)标签页主要用于管理和监控集群中的各个节点。以下是 Server 标签页的主要内容和功能介绍: 1. 节点列表 显示集群中所有节点的列表,每个节点的详细信息包括: 节点地址࿱…...
(一)HTTP协议 :请求与响应
前言 爬虫需要基础知识,HTTP协议只是个开始,除此之外还有很多,我们慢慢来记录。 今天的HTTP协议,会有助于我们更好的了解网络。 一、什么是HTTP协议 (1)定义 HTTP(超文本传输协议ÿ…...
微信阅读网站小程序的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
资源管理输入、工具与技术、输出
过程输入工具与技术输出规划资源管理1.项目章程2.项目管理计划质量管理计划、范围基准3.项目文件项目进度计划、需求文件、风险登记册、干系人登记册4.事业环境因素5.组织过程资产1.专家判断2.数据表现层级型、矩阵型、文本型3.组织理论4.会议1.资源管理计划2.团队章程3.项目文…...
【JavaWeb学习Day13】
Tlias智能学习系统 需求: 部门管理:查询、新增、修改、删除 员工管理:查询、新增、修改、删除和文件上传 报表统计 登录认证 日志管理 班级、学员管理(实战内容) 部门管理: 01准备工作 开发规范-…...
mapStruct 使用踩坑指南
一、缓存机制 经常因为变更字段(通常会这样),导致启动失败。需要清理生成的文件。 /Users/uzong/IdeaProjects/uzong-crm/uzong-crm-manager/src/main/java/com/uzong/crm/manager/GroupManager.java:14:67 java: 找不到符号符号: 方法 getId()位置: 类型为com.u…...
Hive详细讲解-概述与环境搭建
文章目录 1.Hive概述1.2.Hive架构原理1.3Driver 2.Hive最小化模式安装部署3.生产环境hive安装部署4.将hive的元数据存储到Mysql5.元数据库概述6.Hive服务的部署6.1HiveServer26.2Metastore 7.HiveServer2使用7.1Metastore嵌入模式配置7.2Metastore独立模式配置* 8.hive常用的参…...
【算法】数论基础——约数个数定理、约数和定理 python
目录 前置知识约数约数个数定理约数和定理实战演练总结 前置知识 需要掌握:唯一分解定理(算术基本定理) 约数 约数,即因数,定义为: 如果一个整数a可以被另一个整数b整除(即 a mod b 0),那么b就…...
【阅读笔记】基于整数+分数微分的清晰度评价算子
本文介绍的是一种新的清晰度评价算子,整数微分算子分数微分算子 一、概述 目前在数字图像清晰度评价函数中常用的评价函数包括三类:灰度梯度评价函数、频域函数和统计学函数,其中灰度梯度评价函数具有计算简单,评价效果好等优点…...
【技术】TensorRT 10.7 安装指南(Ubuntu22.04)
原文链接:https://mengwoods.github.io/post/tech/008-tensorrt-installation/ 本文安装的版本如下: Ubuntu 22.04 Nvidia Driver 538.78 CUDA 12.2 cuDNN 8.9.7 TensorRT 10.7 安装前的准备(可选) 在安装新版本之前…...
Linux权限有关
文章目录 一、添加普通用户二、Xshell下命令行的知识三、 Linux和Windows操作系统四、再探指令和Linux权限五、用户相关用户切换: 今天我们学习与Linux有关的权限等内容,以及一些零碎知识帮助我们理解Linux的系统和Xshell的原理。 本篇是在Xshell环境下执行的。 一…...
vue router路由复用及刷新问题研究
路由复用问题 当路由匹配路径未发生变化时,只是相关的参数发生了变化,路由跳转时,会发现虽然地址栏中的地址更新到了新的链接,但是页面渲染并未触发响应路由组件的created,mounted等钩子函数,也就意味着组件并没有被重…...
XML实体注入漏洞攻与防
JAVA中的XXE攻防 回显型 无回显型 cve-2014-3574...
【论文阅读】RT-SKETCH: GOAL-CONDITIONED IMITATION LEARNING FROM HAND-DRAWN SKETCHES
RT-Sketch:基于手绘草图的目标条件模仿学习 摘要:在目标条件模仿学习(imitation learning,IL)中,自然语言和图像通常被用作目标表示。然而,自然语言可能存在歧义,图像则可能过于具体…...
27. 【.NET 8 实战--孢子记账--从单体到微服务】--简易报表--报表服务
报表是每个记账应用所具备的功能,要实现报表功能就需要把账本的核心功能(记账)完成,因此报表服务作为本专栏第一部分单体应用开发中最后一个要实现的功能,这一篇文章很简单,我们一起来实现一个简单的报表服…...
LeetCode - #194 Swift 实现文件内容转置
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
【全栈】SprintBoot+vue3迷你商城(9)
【全栈】SprintBootvue3迷你商城(9) 往期的文章都在这里啦,大家有兴趣可以看一下 后端部分: 【全栈】SprintBootvue3迷你商城(1) 【全栈】SprintBootvue3迷你商城(2) 【全栈】Spr…...
ThreeJS示例教程200+【目录】
Three.js 是一个强大的 JavaScript 库,旨在简化在网页上创建和展示3D图形的过程。它基于 WebGL 技术,但提供了比直接使用 WebGL 更易于使用的API,使得开发者无需深入了解 WebGL 的复杂细节就能创建出高质量的3D内容。 由于目前内容还不多,下面的内容暂时做一个占位。 文章目…...
《边界感知的分而治之方法:基于扩散模型的无监督阴影去除解决方案》学习笔记
paper:Boundary-Aware Divide and Conquer: A Diffusion-Based Solution for Unsupervised Shadow Removal 目录 摘要 1、介绍 2、相关工作 2.1 阴影去除 2.2 去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPM) 3、方…...
PyCharm+RobotFramework框架实现UDS自动化测试- (四)项目实战0x10
1.环境搭建 硬件环境:CANoe、待测设备(包含UDS诊断模块) 2.pythonPyCharm环境 pip install robotframework pip install robotframework-ride pip install openpyxl pip install udsoncan pip install python-can pip install can-isotp3…...
基于java实现规则引擎设计思路
背景 去年底换了公司,目前在做HR招聘系统,产品要求:管理端手动配置发布招聘要求(支持多个招聘条件AND与OR关系编排);当C端用户报名该职位时,系统执行该规则,返回报名成功或失败。根据技术调研,采用db存规则…...
TCP协议:互联网数据传输的守护者
在互联网的浩瀚海洋中,数据如同涓涓细流,无时无刻不在流动。而这些数据的稳定、可靠传输,离不开一个重要的协议——TCP(Transmission Control Protocol,传输控制协议)。TCP协议作为互联网协议族中的核心成员…...
2025美国大学生数学建模竞赛(美赛)B题完整思路分析论文(35页)(含模型、可运行代码和运行结果)
2025美国大学生数学建模竞赛B题完整思路分析论文 目录 摘要 一、问题重述 二、问题分析 三、模型假设 四、模型建立与求解 4.1问题1 4.1.1问题1思路分析 4.1.2问题1模型建立 4.1.3问题1样例代码(仅供参考) 4.1.4问题1样例代码运行结…...
InceptionV1_V2
目录 不同大小的感受野去提取特征 经典 Inception 网络的设计思路与运行流程 背景任务:图像分类(以 CIFAR-10 数据集为例) Inception 网络的设计思路 Inception 网络的运行流程 打个比方 多个损失函数的理解 1. 为什么需要多个损失函数&#…...
面向对象设计原则
面向对象最大的优势是抵御变化 理解隔离变化: 从宏观面来看,面向对象构建方式更能适应软件的变化,能将变化所带来的影响减为最少。 各司其职:从微观层面来看,面向对象的方式更强调各个类的责任。由于需求变化导致的新…...
近年流行的开发技术
Web 开发领域 前端技术 HTML5、CSS3 和 JavaScript HTML5:作为网页结构的基础,引入了新的语义化标签(如<header>、<nav>、<article>等),增强了网页的可读性和搜索引擎优化效果,同时支持…...
Go语言中的Select
Select 在 Go 语言中,select 是一种用于处理多个通道操作的控制结构。它允许你同时监听多个通道上的通信操作(发送或接收),并根据哪个操作先完成来执行相应的代码块。select 是 Go 并发编程中的一个重要工具,常用于实…...
SQL调优讨论
说明:狭义的SQL调优,指对慢SQL(一般是Select语句,或包含Select的语句)优化,在不改变查询结果的情况下提高SQL执行效率。广义上的SQL调优,指对某个慢查询优化,通过一些类操作提高查询…...
【STM32】-TTP223B触摸开关
前言 本文章旨在记录博主STM32的学习经验,我自身也在不断的学习当中,如果文章有写的不对的地方,欢迎各位大佬批评指正。 准备工作 今天这篇文章介绍的是触摸开关这一外围硬件。 ST-link调试器STM32最小系统板单路TTP223B触摸传感器模块LE…...
华为数据之道-读书笔记
内容简介 关键字 数字化生产 已经成为普遍的商业模式,其本质是以数据为处理对象,以ICT平台为生产工具,以软件为载体,以服务为目的的生产过程。 信息与通信技术平台(Information and Communication Technology Platf…...
Zookeeper(28)Zookeeper的线性化写入和顺序一致性读是什么?
Zookeeper 是一个分布式协调服务,它在设计上提供了强一致性的保证,其中包括线性化写入和顺序一致性读。这两种一致性模型确保了在分布式系统中数据的一致性和操作的确定性。 线性化写入(Linearizable Writes) 线性化写入保证在任…...
Ubuntu安装GitLab
在 Ubuntu 上安装 GitLab 的步骤如下。这里以 GitLab Community Edition(CE)为例: 前提条件 确保你的 Ubuntu 系统是 20.04 或更高版本。确保你的系统满足 GitLab 的硬件要求。 步骤 更新系统包: sudo apt update sudo apt upg…...
Stable Diffusion 3.5 介绍
Stable Diffusion 3.5 是由 Stability AI 推出的最新一代图像生成模型,是 Stable Diffusion 系列的重要升级版本。以下是关于 Stable Diffusion 3.5 的详细信息: 版本概述 Stable Diffusion 3.5 包含三个主要版本: Stable Diffusion 3.5 L…...
力扣hot100-->滑动窗口、贪心
你好呀,欢迎来到 Dong雨 的技术小栈 🌱 在这里,我们一同探索代码的奥秘,感受技术的魅力 ✨。 👉 我的小世界:Dong雨 📌 分享我的学习旅程 🛠️ 提供贴心的实用工具 💡 记…...
### 2.5.3 二叉树的基本操作
2.5.3 二叉树的基本操作 // 获取树中节点的个数 int size(Node root);// 获取叶子节点的个数 int getLeafNodeCount(Node root);// 子问题思路-求叶子结点个数// 获取第K层节点的个数 int getKLevelNodeCount(Node root,int k);// 获取二叉树的高度 int getHeight(Node root);…...
GAEA 社区:从用户到共同创造者
GAEA 模型最引人注目的方面之一是,它将用户视为共同创造者,而不仅仅是被动的消费者。在许多中心化平台中,用户就是用户。但在 GAEA 的生态系统中,每个人都在推动进步。无论您是贡献计算能力、分享有价值的数据还是帮助改进模型&am…...
记录一个连不上docker中的mysql的问题
引言 使用的debian12,不同发行版可能有些许差异,连接使用的工具是navicat lite 本来是毫无思绪的,以前在云服务器上可能是防火墙的问题,但是这个桌面环境我压根没有使用防火墙。 直到 ying192:~$ mysql -h127.0.0.1 -uroot ERROR 1045 (28…...
doris:MySQL Load
Doris 兼容 MySQL 协议,可以使用 MySQL 标准的 LOAD DATA 语法导入本地文件。MySQL Load 是一种同步导入方式,执行导入后即返回导入结果。可以通过 LOAD DATA 语句的返回结果判断导入是否成功。一般来说,可以使用 MySQL Load 导入 10GB 以下的…...
使用vitepress搭建自己的博客项目
一、介绍can-vitepress-blog 什么是CAN BLOG CAN BLOG是基于vitepress二开的个人博客系统,他能够方便使用者快速构建自己的博客文章,无需繁琐的配置和复杂的代码编写。 CAN BLOG以antdv为UI设计基础,简洁大方,界面友好…...
Yii框架中的扩展:如何使用外部库
在Yii框架中,扩展功能的一种常见且有效的方式是使用外部库。这些外部库可以帮助开发者实现特定的功能,如调用第三方API、处理图片、生成PDF文件或发送邮件等。以下是使用外部库扩展Yii框架的详细步骤: 一、安装外部库 使用Composerÿ…...
【Elasticsearch】inference ingest pipeline
Elasticsearch 的 Ingest Pipeline 功能允许你在数据索引之前对其进行预处理。通过使用 Ingest Pipeline,你可以执行各种数据转换和富化操作,包括使用机器学习模型进行推理(inference)。这在处理词嵌入、情感分析、图像识别等场景…...
Linux的基本指令(上)
1.ls指令 语法:ls [选项] [目录或文件] 功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信息。 常用选项: -a 列出⽬录下的所有⽂件,包括以 . 开头的隐含⽂件。 -d 将…...
【贪心算法】洛谷P1106 - 删数问题
2025 - 01 - 22 - 第 46 篇 【洛谷】贪心算法题单 - 【贪心算法】 - 【学习笔记】 作者(Author): 郑龙浩 / 仟濹(CSND账号名) 目录 文章目录 目录P1106 删数问题题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路代码 P1106 删数问题 题目描述 键盘输入一个高…...
【人工智能】Python中的知识图谱构建与应用
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着人工智能技术的不断发展,知识图谱已成为信息检索、推荐系统、自然语言处理等领域的重要技术之一。本文将详细介绍如何使用Python构建知…...
Spring WebSocket 与 STOMP 协议结合实现私聊私信功能
目录 后端pom.xmlConfig配置类Controller类DTO 前端安装相关依赖websocketService.js接口javascripthtmlCSS 效果展示简单测试连接: 报错解决方法1、vue3 使用SockJS报错 ReferenceError: global is not defined 功能补充拓展1. 安全性和身份验证2. 异常处理3. 消息…...
【Matlab高端绘图SCI绘图模板】第05期 绘制高阶折线图
1.折线图简介 折线图是一个由点和线组成的统计图表,常用来表示数值随连续时间间隔或有序类别的变化。在折线图中,x 轴通常用作连续时间间隔或有序类别(比如阶段1,阶段2,阶段3)。y 轴用于量化的数据&#x…...
java后端之事务管理
Transactional注解:作用于业务层的方法、类、接口上,将当前方法交给spring进行事务管理,执行前开启事务,成功执行则提交事务,执行异常回滚事务 spring事务管理日志: 默认情况下,只有出现Runti…...
常见的多媒体框架(FFmpeg GStreamer DirectShow AVFoundation OpenMax)
1.FFmpeg FFmpeg是一个非常强大的开源多媒体处理框架,它提供了一系列用于处理音频、视频和多媒体流的工具和库。它也是最流行且应用最广泛的框架! 官方网址:https://ffmpeg.org/ FFmpeg 的主要特点和功能: 编解码器支持: FFmpe…...
如何移植ftp服务器到arm板子?
很多厂家提供的sdk,一般都不自带ftp服务器功能, 需要要发人员自己移植ftp服务器程序。 本文手把手教大家如何移植ftp server到arm板子。 环境 sdk:复旦微 Buildroot 2018.02.31. 解压 $ mkdir ~/vsftpd $ cp vsftpd-3.0.2.tar.gz ~/vs…...
牛批,吾爱出品
可能是因为从事IT的原因,我身边的大多数朋友也是从事相关工作的,而IT工作往往需要长时间对着电脑。这样就很容易眼睛疲劳。今天给大家推荐几款,希望有对有需要的小伙伴有所帮助,大家可以收藏以来哦。 CareUEyes CareUEyes是一款绿…...