HomeLab:中年男人的快乐源泉
未读前言NAT (网络地址转换, Network Address Translation) 的由来与互联网的发展历史密切相关, 主要是为了解决 IPv4 地址资源紧张问题, 同时增强网络安全性和管理灵活性. 相关文章: 先导篇:我的 HomeLab 概要; 硬件篇:介绍我所拥有的硬件设备; 网络篇:包括网络环境、异地组网与网络安全; 服务篇:使用 Docker 搭建的各类服务; 数据篇:包括数据存储方案、备份方案和数据恢复方案; HomeLab数据同步:构建高效的数据同步网络 HomeLab数据备份:打造坚实的数据安全防线 HomeLab 网络续集:升级 10G 网络-再战 10 年 NAT 内网穿透详解:揭秘网络连接背后的奥秘 背景与由来1. IPv4 地址枯竭问题IPv4 使用 32 位地址空间, 最多可以提供约 43 亿个唯一地址. 随着互联网的普及, 联网设备数量迅速增长, 特别是 1990 年代后期, 地址分配紧张的问题愈发明显. 早期解决方案如子网划分和无类别域间路由 (CIDR) 延缓了地址耗尽, 但并不能彻底解决问题. 2. 私有网络需求 很多组织和企业需要将大量内部 ...
HomeLab:中年男人的快乐源泉
未读在构建个人云端实验室 (HomeLab) 的过程中, 硬件是基石, 而网络则是让这些硬件协同工作的血脉和灵魂. 本篇将深入探讨家庭网络的配置, 从基础的架构设计到高级的安全性和异地组网技术, 逐步展示如何搭建一个高效、稳定且安全的自托管网络环境. 我将从以下几个方面进行详细阐述: 网络架构: 介绍如何选择合适的网络设备 (如路由器、交换机等) , 以及如何在不同的房间和位置部署网络覆盖. 安全性: 讨论如何设置网络安全策略, 包括防火墙规则、VPN 配置、加密通信等, 以确保数据的安全性和隐私保护. 异地组网: 展示如何通过远程访问技术, 将家庭实验室扩展到外部网络, 实现异地管理和操作. 实践案例: 分享实际操作步骤和经验, 帮助读者更好地理解和应用这些网络技术和概念. 通过本篇的探讨, 你将能够了解到如何构建一个高效、安全且可扩展的自托管网络环境. 这不仅能够满足日常工作和学习的需求, 还能为你的个人云端实验室提供一个稳固的网络基础. 让我们一起揭开家庭网络配置的神秘面纱, 探索自托管的无限可能吧! 相关文章: 先导篇:我的 HomeLab 概要; 硬件篇:介绍我所拥有的硬 ...
HomeLab:中年男人的快乐源泉
未读简介在打造个人云端实验室(HomeLab)的过程中,硬件选择是至关重要的第一步。它们不仅是实验的基础设施,也是整个系统稳定性和性能的保证。本篇将重点探讨如何在预算范围内,选择具有高稳定性、良好性价比、可扩展性以及兼容性的硬件。 以下是我在挑选硬件时需要考虑的关键因素: 稳定性:我将优先考虑那些可靠性高的硬件产品,避免因频繁故障而导致的维护成本和工作中断。 性价比:在确保硬件能满足基本需求的前提下,我会寻找性价比最高的选项。毕竟,资金是有限的资源,需要合理分配。 可扩展性:为了未来的发展和可能的升级,我倾向于选择那些能够轻松扩展的硬件解决方案。 兼容性:为了避免后期使用中的不兼容问题,我将选择那些在市场上得到广泛认可的、具有良好兼容性的组件。 在选择硬件时,我特别看重稳定性。我不想频繁地处理各种硬件故障,这不仅影响工作效率,也可能导致宝贵的数据丢失。因此,我排除了集成所有功能的“全功能一体机”(All In One)方案(这类方案又叫 All In Boom)。这类产品虽然在某些方面可能看起来很有吸引力,但它们往往牺牲了性能和升级的可能性。 相反,我会将服务部署到多个独立的服务器上 ...
目前公司的数据存储模式比较落后, 主要问题在于数据安全性差;整体数据量大以及原有大量陈旧的数据难以存储;存在多操作系统平台,设备繁杂导致存放的数据难以共享协作和管理,造成效率低下;员工的离职造成资料丢失。我们需要一个满足需求又安全的方案来解决这样的普遍难题。 NAS 存储共享解决方案包含:群晖 NAS 服务器、Backup 插件。 应用场景:企业数据集中存储/共享/备份,企业私有云文件管理器搭建。 方案背景随着企业信息化的发展,企业信息化带来的数据爆炸式增长向企业的数据管理方式提出了挑战,一方面要应对数据容量的不断扩充,另一方面需要确保所有有效数据的高安全性和可管理性。目前来看,企业的数据各自存放、分散管理,关联性不强,无法很好的针对不同的业务数据进行统一、有效的管理。 企业的数据存储模式比较落后,成本较高且效率低下,主要问题在于数据安全性差;整体数据量大以及原有大量陈旧的数据难以存储;存在多操作系统平台,设备繁杂导致存放的数据难以共享协作和管理,造成效率低下;员工的离职造成资料丢失。 从对企业单位数据存储的分析中可以看出,要使整个企业内部的数据得到统一管理和 ...
4630436162ade97ba2718b7d0c4b3b63dc7090183d7540ee162ecb0e10eb2414c72e60244e12ceaa62d656cbfb8ba8f40e48fa587bf2fd6af1e81566fe6513e3d738d5da3bd9af744984184c7c3ff13b532fef8b24a995c17643bd5d9c6c974fe3f5e2d56ff94237c27185687a4890bcba81a70bb76ca8e388de031ac5420a761103cbb9db0ddc5a5ad0b1c9e3e583a7d64ae899fe48d6166f7e43d12b7a67e7b791ad52e18453946aaa5798fba882aa520c1fa9a0a439f5e0a53e7726d2a58fbdb898b33854e589a73b8924d4da528115f25f5be7c46e961204b460fad1dab2d7a9c4f294c369f1ff547b87f3b5b744dbb0ccab7ad932644 ...
HomeLab:中年男人的快乐源泉
未读增加 KVM 虚拟机磁盘容量在 KVM 中扩展虚拟机磁盘容量分为两步:扩展虚拟磁盘文件 和 扩展虚拟机内的分区和文件系统。 第一步:扩展虚拟磁盘文件1. 确认虚拟磁盘文件路径使用以下命令查找虚拟机磁盘文件的位置: 1virsh domblklist <虚拟机名称> 示例输出: 123Target Source------------------------------------------------vda /var/lib/libvirt/images/vm-disk.qcow2 记下磁盘文件路径(例如 /var/lib/libvirt/images/vm-disk.qcow2)。 2. 扩展磁盘文件假设需要将磁盘扩展为 50 GB,根据磁盘格式选择以下命令: QCOW2 格式磁盘扩展 1qemu-img resize /var/lib/libvirt/images/vm-disk.qcow2 50G RAW 格式磁盘扩展 1qemu-img resize /var/lib/libv ...
AI:人工智能
未读使用 vuepress 搭建自己的博客 Vuepress 介绍官网: https://vuepress.vuejs.org/ 类似 hexo 一个极简的静态网站生成器, 用来写技术文档不能在爽. 当然搭建成博客也不成问题. Vuepress 特点 响应式, 也可以自定义主题与 hexo 类似 内置 markdown (还增加了一些扩展), 并且可以在其使用 Vue 组件 Google Analytics 集成 PWA 自动生成 Service Worker 快速上手安装初始化项目 12yarn init -y# 或者 npm init -y 安装 vuepress 12yarn add -D vuepress# 或者 npm install -D vuepress 全局安装 vuepress 12yarn global add vuepress# 或者 npm install -g vuepress 新建一个 docs 文件夹 1mkdir docs 设置下 package.json 123456{ "scripts": { ...
zuihou-admin-cloud基于 SpringCloud(Hoxton.SR1) + SpringBoot(2.2.2.RELEASE) 的 SaaS 型微服务脚手架,具备用户管理、资源权限管理、网关统一鉴权、Xss 防跨站攻击、自动代码生成、多存储系统、分布式事务、分布式定时任务等多个模块,支持多业务系统并行开发, 支持多服务并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,非常适合学习使用。核心技术采用 Nacos、Fegin、Ribbon、Zuul、Hystrix、JWT Token、Mybatis、SpringBoot、Seata、Nacos、Sentinel、 RabbitMQ、FastDFS 等主要框架和中间件。 希望能努力打造一套从 SaaS基础框架 - 分布式微服务架构 - 持续集成 - 系统监测 的解决方案。本项目旨在实现基础能力,不涉及具体业务。 部署方面,可以采用以下 4 种方式,并会陆续公布 jenkins 集合以下 3 种部署方式的脚本和配置文件: IDEA 启动 jar 部署 docker 部署 k8s 部署 租户后台 ...
1. 概述这篇文章将阐述怎么在 Spring 中使用 Profile 从 Spring 3.1 开始,我们能够将 bean 映射到不同的 profile 上,如 dev, test, prod 等。 我们也能够根据环境 (environment) 来激活不同的 profile,从而加载我们需要的 bean。 2. 在 Bean 上使用 @Profile我们先从简单的例子开始,看看怎么把 bean 绑定到不同的 profile 上。 使用 @Profile 注解,我们可以将 bean 绑定到指定的 profile 上。这个注解支持绑定一个或多个 profile。 试想这样一个场景:我们有一个 bean,只在开发环境需要,线上环境不需要。那么我们可以通过注解将这个 bean 绑定到 dev profile 上。这样,这个 bean 只会存在于开发环境,而在其他环境中不会被加载。如下所示: 1234@Component@Profile("dev")public class DevDatasourceConfig 上面的写法是指绑定 bean 到 de ...
互联网是基于 HTTP 协议构建的,而 HTTP 协议因为简单流行开来,但是 HTTP 协议是无状态(通信层面上虚电路比数据报昂贵太多)的,为此人们为了追踪用户想出了各种办法,包括 cookie/session 机制、token、flash 跨浏览器 cookie 甚至浏览器指纹等。 把用户身份藏在每一个地方(浏览器指纹技术甚至不需要存储介质) 讲使用 spring security 等具体技术的资料已经很多了,这篇文章不打算写框架和代码的具体实现。我们会讨论认证和授权的区别,然后会介绍一些被业界广泛采用的技术,最后会聊聊怎么为 API 构建选择合适的认证方式。 认证、授权、凭证首先,认证和授权是两个不同的概念,为了让我们的 API 更加安全和具有清晰的设计,理解认证和授权的不同就非常有必要了,它们在英文中也是不同的单词。 认证是 authentication,指的是当前用户的身份,当用户登陆过后系统便能追踪到他的身份做出符合相应业务逻辑的操作。即使用户没有登录,大多数系统也会追踪他的身份,只是当做来宾或者匿名用户来处理。认证技术解决的是 “我是谁?” 的问题。 ...
新时代码农
未读Maven 相关问题 由于未统一管理多个模块的 jar 依赖, 每个模块都各自为政;模块之间的配置相互拷贝, 有用的没用的都拷了;升级版本麻烦, 每个相关模块都得改版本. 1. 重复的依赖 redis-cache 模块的 pom.xml 2. 重复的插件 mamagesystem 模块的 pom.xml 3. 依赖冲突 mamagesystem 模块的 pom.xml 4. 重复的配置 导致的问题有可能导致出现以下几种异常: java.lang.ClassNotFoundException java.lang.NoSuchMethodError java.lang.NoClassDefFoundError 解决方案 所有模块使用一个父模块来管理将重复配置迁移到 parent pom.xml 中;使用 dependencyManagement 来统一管理 jar 依赖;使用 pluginManagement 统一管理插件依赖;所有 jar 依赖的版本全部使用 properties 管理;使用 excludes 排除冲突的 jar 包; 代码问题1. 代码不规范 ...
缓存服务组件 依赖于: jedis spring-data-redis spring-session-data-redis redis 集群使用的是 ShardedJedisPool, redis 3.x 后自带集群负载 jar 中重要的类 JedisConnectionFactory用于获取 jedis 实例,从而操作 redis ShardedJedisPool用于连接 redis 集群 cache 重要的类 RedisDataSource使用 JedisConnectionFactory 从 ShardedJedisPool 连接池中获取 jedis RedisClientTemplate依赖 RedisDataSource 操作 redis 的具体模板方法 RedisCacheServiceImpl对 RedisClientTemplate 再次封装 JedisPool(非切片链接池) 和 ShardedJedisPool(切片链接池) 有什么区别JedisPool 连一台 Redis,ShardedJedisPool 连 Redis 集群,通过一致性 ...
新时代码农
未读JDK5 新特性Java5 开发代号为 Tiger(老虎),于 2004-09-30 发行 1、泛型所谓类型擦除指的就是 Java 源码中的范型信息只允许停留在编译前期,而编译后的字节码文件中将不再保留任何的范型信息。也就是说,范型信息在编译时将会被全部删除,其中范型类型的类型参数则会被替换为 Object 类型,并在实际使用时强制转换为指定的目标数据类型。而 C++中的模板则会在编译时将模板类型中的类型参数根据所传递的指定数据类型生成相对应的目标代码。 1Map<Integer, Integer> squares = new HashMap<Integer, Integer>(); 通配符类型:避免 unchecked 警告,问号表示任何类型都可以接受 12345public void printList(List<?> list, PrintStream out) throws IOException { for (Iterator<?> i = list.iterator(); i.hasNext(); ...
IDEA Plugin API 文件操作Virtual File SystemVirtual File System 是处理文件的一套机制, 用于处理如何加载文件, 如果保存文件, 当文件变化时如何更新缓存等. IntelliJ Platform 将操作文件封装成了 Virtual File System, 提供了以下几点主要功能: 封装处理文件的通用 API, 不论文件在磁盘, 存档, HTTP 服务器或者其他地方, 都使用同一套 API; 提供快照功能, 能跟踪文件的修改; 提供将附加持久数据与 VFS 中的文件相关联; 为了提供最后两个功能,VFS 管理用户硬盘的某些内容的持久快照。快照仅存储通过 VFS API 至少请求过一次的文件,并且异步更新以匹配磁盘上发生的更改。 快照是应用程序级别,而不是项目级别 - 因此,如果某个文件(例如,JDK 中的某个类)被多个项目引用,则其内容的一个副本将存储在 VFS 中。 所有 VFS 访问操作都通过快照。 如果通过 VFS API请求某些信息但快照中没有这些信息,则会从磁盘加载并存储到快照中。如果快照中有可用信息,则返回快照 ...