国内建站合规指南:ICP 备案与公安备案的区别及全流程解析
国内建站合规指南:ICP 备案与公安备案的区别及全流程解析 在使用中国大陆地区的云服务器搭建个人网站(如 Hexo 博客、OJ 系统)时,合规是网站能够长久稳定运行的先决条件。根据国内相关法规,网站上线必须完成两项核心的行政审批与登记:工信部 ICP 备案和公安部联网备案。 本文将从技术与合规的角度,梳理这两种备案的核心区别、依赖关系以及标准的操作流程。 一、 核心概念与区别对比 许多开发者在初期容易将两者混淆。简而言之,ICP 备案决定了你的网站能否被访问(接入互联网的资格),而公安备案则是为了追溯与安全监管(辖区派出所登记)。 维度 ICP 备案 (工信部) 公安联网备案 (公安部) 全称 非经营性互联网信息服务备案 全国公安机关互联网站安全服务平台备案 主管单位 工业和信息化部(及各地通信管理局) 属地公安机关(网安大队) 办理时机 网站上线前(未备案无法解析到大陆 80/443 端口) 网站上线后的 30 日内 前置条件 拥有已实名的域名、大陆节点云服务器 已取得 ICP...
Nginx 博客配置 Let's Encrypt SSL 证书及 DNS 踩坑记录
Nginx 博客配置 Let’s Encrypt SSL 证书及 DNS 踩坑记录 前两天刚把服务器的 80 端口理顺,用 Nginx 做了反向代理,实现了“域名访问博客,IP 访问 OJ”的分流。但是发现我的网站只能用浏览器的无痕模式访问,查了一下大概是普通模式会自动使用https,但是由于没有配置SSL证书,所以无法访问。 去国内某云厂商的控制台看了一眼,好家伙,最基础的单域名 DV 证书现在居然卖到了 500 多块钱一年。果断关闭页面,拥抱开源世界最良心的方案:Let’s Encrypt 免费证书 + Certbot 自动化工具。 这里记录一下整个配置过程,以及中间遇到的一个非常经典的“网络灵异”大坑。 1. 极简安装与申请 因为我的服务器是 Ubuntu 系统,Web 服务器是 Nginx,所以直接用 apt 一键安装 Certbot 和它的 Nginx 插件: sudo apt updatesudo apt install certbot python3-certbot-nginx -y 安装完之后,理论上只需要执行下面这一行命令,Certbot...
Nginx 反向代理 Docker 实现域名与 IP 的访问分流
Nginx 反向代理 Docker 实现域名与 IP 的访问分流 1. 起因与冲突 最近在服务器上部署了两个东西:一个是基于 Hexo 的个人博客,另一个是基于 Docker 部署的 HOJ(Hcode Online Judge)。 原本的想法很简单: 输入域名 duziks.top 访问博客。 输入服务器 IP 访问 OJ 系统。 遇到的坑: 两个服务都默认想要占用 80 端口。Docker 容器(hoj-frontend)先占了坑,导致 Nginx 启动时直接报错,提示端口被占用。 2. 解决思路:反向代理 核心思路是 “让出 80 端口,统一交给 Nginx 管理”。 把 Docker 容器内部的 80 端口映射到宿主机的 8081 端口(避开公网默认的 80)。 让 Nginx 监听真正的 80 端口。 Nginx 内部做判断:如果是域名访问,直接读静态文件;如果是 IP 访问,就把流量“转发”给内部的 8081 端口。 3. 操作实录 第一步:修改 Docker 端口映射 找到 HOJ 的安装目录(我的是在...
hexo博客部署到linux云服务器教程
hexo博客部署到linux云服务器教程 大多数人都是把hexo博客部署到Github Pages上,但是由于国内网络访问Github较慢,而我恰好有一台已经部署过一个Online Judge的云服务器,于是突发奇想把我的hexo博客也部署到云服务器上试试。所以本文适用于和我一样已经把hexo博客部署到Github Pages上面了,想双线部署到云服务器的朋友们。 第一阶段:配置云服务器(接收端) 我们需要在服务器上建立一个“代码接收仓库”和一个“网站根目录”。 1. 创建目录并初始化 Git 裸仓库 # 创建网站静态文件存放目录sudo mkdir -p /var/www/hexo# 创建 Git 裸仓库sudo mkdir -p /var/repo && cd /var/reposudo git init --bare hexo.git 2. 配置 Git Hook(实现自动部署) 当本地推送到 hexo.git 时,它会自动把文件同步到 /var/www/hexo。 sudo vi...
【版本答案】PicGo + Github 创建图床
【版本答案】PicGo + Github 创建图床 我们写博客时经常面临一个问题,当我们要插入较多图片时,放到本地要一个个填入图片的本地地址,连同图片一起上传到博客仓库还会使博客页面加载过慢,上传到公共图床既麻烦,又面临图床爆炸图片过期的问题。 使用PicGo + Github创建自己的图床或许成了最优雅的解决方案,它既不用担心图片过期,使用时还十分方便,可以联动Typora在插入图片时自动上传到图床,地址自动填入图床的图片地址,在上传到CSDN等博客软件时也不用因为是本地图片而再 一张张地上传图片。 下面我们来看一下具体的安装配置过程。 第一步:创建 GitHub 图床仓库 登录 GitHub,创建一个新仓库(例如命名为 Image-Bed)。 仓库必须设置为 Public(公开),否则外部无法访问图片链接。 初始化时建议勾选 Add a README.md,确保仓库不是空的。 第二步:生成 GitHub 个人访问令牌 (Token) 这是让 PicGo 有权限向你的仓库上传文件的关键: 点击 GitHub 右上角头像 -> Settings ->...
Sublime Text C/C++ 环境配置
Sublime Text C/C++ 环境配置 官网下载 Sublime Text https://www.sublimetext.com/ 下载MinGW https://github.com/niXman/mingw-builds-binaries 点击右侧Releases 选择最新版本的文件下载 配置环境变量 下载完成后解压 打开bin文件夹并复制目录 在任务栏中搜索并打开编辑系统环境变量 点击环境变量 双击打开系统变量中的Path 点击右侧新建,将复制的地址加入,然后点击确定 配置Sublime Text 设置中文 打开Sublime Text 按下快捷键 Ctrl + Shift + P 打开命令面板 在搜索框中输入 install 选择 Install Package Control 进行安装 安装成功后再次使用快捷键 Ctrl + Shift + P 打开命令面板 在搜索框中输入 install 选择 Package Control: Install Package 库加载完成后输入 Chinese...
Java Map 用法详解
Java Map 用法详解 在Java中,Map 是一个非常核心的接口(位于 java.util 包),用于存储键值对(Key-Value Pair)。每一个键(Key)在 Map 中是唯一的,通过键可以快速找到对应的值(Value)。 以下是关于 Java Map 的详细用法指南,涵盖了常用实现类、基本操作、遍历方式以及 Java 8 的新特性。 1. 核心概念与常用实现类 Map 本身是一个接口,我们通常使用它的具体实现类。 实现类 特点 适用场景 排序 HashMap 最常用,基于哈希表。查找和插入性能极高(接近 O(1)O(1)O(1))。 通用场景,不需要排序。 无序 LinkedHashMap 继承自 HashMap,但在内部维护了一个双向链表。 需要保持插入顺序或访问顺序时。 按插入/访问顺序 TreeMap 基于红黑树实现。 需要根据 Key 进行自然排序或自定义排序时。 按 Key 排序 Hashtable 线程安全(旧版),性能较差。 不推荐。多线程请用 ConcurrentHashMap。 无序 2. 基本操作...
ICPC2025西安站游记
由于队伍校内排名不高,所以几乎是被动地选择了西安站 但是从俊杰Charles发布的前瞻榜来看,西安站的强度是比较低的了,所以算是成功捡漏 Day -1 10月17日 早上和队友乘高铁前往西安北站,10:44出发,下午六点才到,刚下高铁,决定去高铁站附近吃点东西,遇到一个阿姨问我们打不打网约车,和队友商量了一下决定打车去行政中心地铁站附近吃,吃完再坐地铁去西工大,网约车是在滴滴上叫的,阿姨在我们旁边等我们坐上车之后就走了,没搞明白她是咋赚钱的(难道是专门推广滴滴的? 下车后来到了西安大融城,进去后三个人像刘姥姥进了大观园,最后我吃了肉夹馍和岐山擀面皮(和凉皮差不多),队友吃了炸酱面和臊子面 吃完后坐地铁到钟楼站(是我第一次坐地铁,都怪威海没地铁),出来看了眼钟楼和鼓楼,就又回地铁站坐车到了西安南站,出站发现一片荒凉,又打网约车到网上订的西工大附近的酒店,路上越走越偏,感觉回到了村里,到最后一段路才稍显繁华了一点,到酒店就睡了 Day 0...
2024山东省赛回顾
2024山东省赛回顾 2024 CCPC 全国邀请赛(山东)暨山东省大学生程序设计竞赛是我参加的第一场线下赛 但是当时以几名之差痛失Cu牌,之前一直没有补题,现在来回看一下 题目链接:https://codeforces.com/gym/105385 顺序由简到难:I,A,K,F,C,J I - Left Shifting 签到题,若无相邻字符则无解,否则枚举左移次数 0≤d<n0 ≤ d < n0≤d<n,判断是否 sd=sd+n−1modns_d = s_{d+n−1 mod n}sd=sd+n−1modn 即可。 #include <bits/stdc++.h>using namespace std;int n;char a[500005];void solve(){ cin>>a; n=strlen(a); int ans=0; if(a[0]==a[n-1]){ cout<<ans<<"\n"; return; } for(int...
矩阵快速幂
矩阵快速幂 1. 什么是矩阵快速幂 矩阵快速幂是把「对一个方阵求大幂」的问题用二分法(指数快速幂 / 指数平方)加速计算的技巧。直接把矩阵乘 k 次需要 O(k∗m3)O(k * m^3)O(k∗m3) (m 为矩阵维度,方阵常见为 2),而矩阵快速幂可以把复杂度降到 O(logk∗m3)O(log k * m^3)O(logk∗m3)。 这个技巧常用于线性递推(线性齐次递推)问题,例如斐波那契、K 项线性递推、一些动态规划转化为线性变换的场景。 2. 为什么用矩阵可以求斐波那契数列 斐波那契数列满足递推: Fn=Fn−1+Fn−2F_n = F_{n-1} + F_{n-2} Fn=Fn−1+Fn−2 把状态向量设为 [Fn,Fn−1]T[F_n, F_{n-1}]^T[Fn,Fn−1]T,则可以写成矩阵形式: [FnFn−1]=[1110][Fn−1Fn−2]\begin{bmatrix} F_n \\ F_{n-1} \end{bmatrix} = \begin{bmatrix} 1 & 1 \\ 1 &...









