为什么越来越多的网站开始采用前后端分离?
从传统的 PHP 网站,到如今流行的 Vue、React、Go、Node.js,越来越多的项目都开始采用「前后端分离」架构。那么,它到底解决了哪些问题?又为什么逐渐成为现代 Web 开发的主流?
前言如果你接触过早期的网站开发,应该对这样的架构并不陌生。
浏览器发起请求,服务器负责处理业务逻辑、查询数据库、渲染 HTML 页面,最后再返回给浏览器。
整个流程看起来十分简单:
1234567浏览器 │ ▼PHP / Java / ASP.NET │ ▼MySQL
对于小型网站来说,这种模式开发效率很高,但随着业务越来越复杂,它的局限性也开始逐渐显现。
什么是前后端分离?很多人第一次听到「前后端分离」,都会误以为只是把一个项目拆成两个项目。
其实并不是。
前后端分离真正的核心思想只有一句话:
页面负责展示,服务负责数据。
浏览器不再直接请求页面,而是通过 API 获取数据。
整个流程变成了:
12345678910浏览器(Vue / React) │ ▼ REST API ...
高强度使用Codex的宝子们注意一下,你的磁盘可能正在遭受核打击。
Codex当前在流式任务和长时间运行时,会以极高频率往~/.codex/logs_2.sqlite狂写TRACE日,这样的强度可以直接把消费级SSD直接写废,
Codex史诗级大BUG?
Codex 当前在流式任务和长时间运行时,会以极高频率往 ~/.codex/logs_2.sqlite 狂写 TRACE 日,这样的强度可以直接把消费级 SSD 直接写废。
快检测一下自己有没有中招:
提示词:帮我检测 ~/.codex/logs_2.sqlite 是否因 TRACE 日志持续高频写盘?
如果真的中招了,再输入这个提示词赶紧止损吧提示词:中招了就直接先备份,再用 SQLite trigger 拦截 logs 表, 并 checkpoint/truncate WAL,最后采样确认 MAX(id) 和 WAL 不再增长。
Twikoo 评论系统魔改记录最近对博客里的 Twikoo 评论系统做了一些二次开发,主要围绕前端体验和博客主题适配展开。
这篇只记录改造方向,不展开核心逻辑。
改造内容这次主要调整了评论区的前端体验:
评论输入框 UI 重新整理
表情、图片、AI 评论按钮收纳到左下角工具胶囊中
移动端按钮尺寸缩小,避免换行和拥挤
评论方式按钮重新排版
深色模式单独优化配色
默认头像 CDN 做了适配调整
Twikoo 前端资源统一放到 Hexo 静态目录
前端资源路径博客中引用的 Twikoo 前端文件路径为:
1/pluginsSrc/twikoo/twikoo.all.min.js
对应 Hexo 项目目录
source/pluginsSrc/twikoo/twikoo.all.min.js
这样可以把二开后的 Twikoo 前端文件作为博客静态资源统一管理。
页面初始化博客页面中仍然通过 twikoo.init 初始化评论系统。
示例:
1234twikoo.init({ envId: 'https://twikoo.example.c ...
mbstring 扩展本身并不会导致 502 错误。 如果同时安装了 OPcache 和 mbstring 后出现的 502,问题几乎可以肯定是 OPcache 引起的
为什么安装了 OPcache 就会 502?问题的根源在于 PHP 8.4.21 版本中,OPcache 扩展的 JIT(即时编译)功能与当前环境存在不兼容。这可能会导致 PHP-FPM 进程因为”段错误”而崩溃,Nginx 在无法连接到后端时就会返回 502 错误。
解决方案(二选一)方案一:关闭 OPcache 的 JIT 功能(推荐,保留基础缓存)这个方法可以保留 OPcache 的脚本缓存加速能力,同时解决 502 错误。
定位配置文件:在宝塔面板的 软件商店 -> PHP 8.4 设置 -> 配置文件 中修改。
修改参数:在配置文件中找到 opcache.jit_buffer_size 这一行,将其值改为 0。如果找不到这行,可以手动添加。
修改前:
1opcache.jit_buffer_size=128m
修改后:
1opcache.jit_buffer_size=0
这个修改会关 ...
在 AI 编程工具快速普及的今天,Qoder、Codex、Cursor成为了开发者最常对比的三款工具。我经过长时间实际使用,从上手难度、代码生成、使用体验、适用场景等方面,分享最真实、接地气的使用感受,帮大家快速选对适合自己的工具。
Cursor是目前最受欢迎、最接地气的 AI 编辑器,核心优势是开箱即用、极度顺滑。它基于 VS Code 深度改造,界面布局、快捷键、插件生态完全沿用 VS Code,老用户几乎零学习成本,打开就能直接写代码。它的实时补全能力非常强,敲几个字符就能快速生成整行、整段代码,逻辑通顺、语法规范,写前端页面、接口逻辑、业务代码都很高效。内置的 AI 助手支持一键修 bug、解释代码、批量修改文件,甚至能直接运行命令、优化项目结构。免费额度足够日常开发,Pro 版功能更强大。唯一小缺点是中文理解能力一般,但完全不影响主力开发,是普通开发者的首选。
Qoder作为国产 AI IDE,主打中文友好、工程化强、国内稳定。它最大的亮点是对中文需求、中文注释的理解非常精准,用自然语言描述功能,就能快速生成符合需求的代码,特别适合国内开发者。它对大型项目、多文件、多模块的支 ...
在账号安全愈发重要的今天,弱密码、重复密码已成为网络攻击的重灾区。为了让每一位用户都能轻松拥有高强度、高唯一性的密码,CikGen 应运而生 —— 一款专注安全、高度可定制的随机密码生成器浏览器扩展,以极简操作、强大功能,成为你日常上网的安全助手。
一、安全为本,拒绝密码风险CikGen 以安全为核心设计原则,全程在浏览器本地生成密码,不上传、不存储、不泄露任何数据,从源头杜绝密码泄露风险。摒弃 “123456”“生日拼音” 等易破解弱密码,通过随机算法生成包含大小写字母、数字、特殊符号的复杂组合,有效抵御暴力破解、字典攻击、撞库等常见威胁,让每一个账号都拥有专属 “安全锁”。
同时,插件支持高度可定制密码规则:自由调整密码长度、勾选所需字符类型,适配网站、APP、系统等不同场景的密码要求,兼顾安全性与实用性,满足个性化使用需求。
二、六大核心功能,好用更省心1. 护眼深色模式,长时间使用更舒适
搭载专属深色主题设计,低蓝光、高对比度界面,有效缓解眼部疲劳,无论是夜间办公还是日常使用,都能带来温和舒适的视觉体验,兼顾美观与护眼需求。
2. 响应式布局,适配多场景使用
采用1 ...
CIKTab 新标签页是一款简约美观、功能强大的浏览器起始主页,极致的个性化配置,满足您的各项要求,提高工作效率!支持创建/分享个人导航页,方便快捷的美化您的浏览器,提升浏览器主页与新标签页使用体验!
点击按钮直达网页版 Google Chrome Microsoft Edge
特色功能说明:
独特的小组件设计让信息展示充满美感
聚合多个主流搜索引擎,支持一键快捷切换搜索
全屏自由拖拽,支持卡片放置在任意位置
舒适的动画,让您切换自如,感受丝滑
支持多设备登录和即时数据同步
支持数据本地备份,离线也能用
支持导入、导出本站数据,管理随心
支持众多小组件供您自由选择!
支持批量导入本地书签,方便一键管理
分类切换支持滚动翻页、循环滚动等多种模式
自定义自定义静态、动态、纯色以及渐变壁纸
点击时间一键切换极简模式,享受纯净壁纸界面
支持提交分享您觉得不错的网站资源
支持他人标签页导出数据迁移至当前标签页
部分截图
问题描述
打开控制面板–>系统和安全–>BitLocker 驱动器加密选项里面发现硬盘上面提示“正在等待激活 BitLocker”,如下图所示:
取消Bitlocker命令说明
以“管理员权限”打开命令提示符(CMD)
操作 Bitlocker 命令说明
1234567manage-bde -? -->查看帮助 manage-bde status; -->查看状态 manage-bde -on C: -->加密 c 盘,并开启 bitblocker manage-bde -off C: -->取消加密,并关闭 bitblocker
解决 Bitlocker 正在等待激活解决办法
以“管理员权限”打开命令提示符(CMD)
使用【manage-bde -off 硬盘盘符:】按下回车取消正在等待激活。
示例:比如这里取消 E 盘的正在等待激活命令【manage-bde -off E:】,按下回车键,如下图所示表示操作成功;
表示关闭 BitLocker 完成
Windows11开启旧版右键菜单
以管理员身份运行:Windows PowerShell,输入以下代码并回车,然后重启电脑生效
1reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
Windows11恢复系统本来的右键菜单
以管理员身份运行:Windows PowerShell,输入以下代码并回车,然后重启电脑生效
1reg delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f
Microsoft Edge 禁止自动跳转 https
在 Microsoft Edge 地址栏输入edge://flags/#edge-automatic-https
找到Automatic HTTPS,下拉选择disabled,并点击右下角重启
Google Chrome 禁止自动跳转 https
地址栏中输入 chrome://net-internals/#hsts
在 Delete domain security policies 中输入项目的域名,并 Delete 删除
可以在 Query domain 测试是否删除成功
[!NOTE]
很多朋友都在问如何在Mac上实现微信双开,简单实用的方法供大家参考。
安装微信: 先安装微信,可以从微信官网下载或通过App Store安装。
打开自动操作:打开启动台,搜索自动操作并回车,选择出现的“自动操作”应用。
创建新应用程序: 在弹出的窗口中选择“应用程序”并点击“选取”。
添加Shell脚本: 在左上方搜索框输入shell,然后将“运行shell脚本”拖到右侧窗口。
输入命令: 在脚本输入框中输入以下命令
1nohup /Applications/WeChat.app/Contents/MacOS/WeChat > /dev/null 2>&1&
保存应用程序: 点击菜单栏的“文件”->“存储”,为新创建的应用程序命名(如“微信2”),选择位置和文件格式为“应用程序”,然后点击“存储”。
启动双开微信: 打开启动台,找到刚才添加的程序,点击即可实现微信双开。
如果你想要更改双开微信的图标,可以按照以下步骤进行:
从网上下载一个你喜欢的微信Logo,比如搜索“微信logo”。
...
查看SIP状态终端输入命令按回车键运行
1csrutil status
可以看到SIP状态都是enabled开启的状态,如果显示全是Disabled那么说明SIP关闭,如果不是那就需要进恢复模式进行关闭SIP。
macOS系统关闭SIP
进入恢复模式
!!! abstract NOTE intel处理器 把mac电脑完全关机,然后开机,在电脑开机时候马上按着Command+R 不放,等出现苹果标志5秒之后,松开按键,之后会出现一些用户选项,点击你的Mac管理员账号,提示密码输入Mac开机密码点击继续,即可进入Recovery 模式(如下图所示) !!! !!! caution NOTE ARM处理器 将Mac完全关机,按住开机电源键不要松开,这个过程会提示“正在载入启动选项…”,等出现选项10秒以上,再松开电源键,然后点击选项; 之后会出现一些用户选项,点击你的Mac管理员账号,提示密码输入Mac开机密码点击继续(如果没有出现用户选择就不用理会),即可进入Recovery 模式(如下图所示) !!!
进入Recovery模式界面之后,点击最顶上菜单“实用工具”–选择“终端”,打 ...
打开启动台–其他–终端,打开终端;
然后输入下面的命令按回车键运行,建议你直接拷贝粘贴,以免你输入错命令;
1sudo spctl --master-disable
输入命令后【回车】,出现【password】输入你电脑的【开机密码】,输入密码后【回车】
再打开 “系统设置” – “安全性与隐私” – “安全性” – 允许一下来源的应用程序 – 点击 App Store 与已知开发者选项,然后选择 任何来源
之后提示输入Mac开机密码再点击修改设置,再点击 允许任何来源确认即可。
为什么要转化分区类型MBR分区格式不支持2 TiB以上的云盘。如果您的云盘为MBR分区类型,且希望将其扩容至2 TiB及以上,需将分区类型转换为GPT后再进行扩容
注:转换过程中通常不会丢失数据,但建议在操作之前备份数据
判断是否需要分区转换运行sudo fdisk -lu,查看目标云盘的Disklabel type字段
因分区格式限制,若为dos,且扩容后容量超过2TiB,需进行分区转换,否则无需转换,可直接扩容分区。
执行分区转换指令运行以下命令,安装gdisk工具
Alibaba Cloud Linux 2/3版本、CentOS 6及以上版本
1type sgdisk || sudo yum install -y gdisk
Debian 9及以上版本、Ubuntu14及以上版本。
12sudo apt-get updatetype sgdisk || sudo apt-get install -y gdisk
运行以下命令,将MBR分区转换为GPT分区注:<待转换设备名称>可通过sudo fdisk -lu的disk字段获取,sgdisk只能对待转 ...
扩容分区
运行sudo lsblk,确认待扩容云盘设备名称及分区编号
1234567$ sudo lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTvda 253:0 0 50G 0 disk ├─vda1 253:1 0 2M 0 part ├─vda2 253:2 0 200M 0 part /boot/efi└─vda3 253:3 0 39.8G 0 part /vdb 253:16 0 40G 0 disk /data
如果待扩容云盘不存在分区,则无需扩容分区,可直接扩容文件系统。示例中数据盘vdb不存在分区,无需扩容分区
如果待扩容云盘容量大于分区总容量,需要扩容分区。示例中系统盘vda容量为50GiB,存在三个分区,分区总容量为40GiB,需对最后一个编号为3的分区vda3扩容。
注:仅支持对单块云盘的最后一个分区扩容。
常用设备命名及分区格式如下:
设备类型
设备名称
分区编号
非NVMe协议云盘
格式为vd[a-z],如vda(系统盘) ...
磁盘分类与设备命名Linux如何识别和命名磁盘是所有磁盘管理操作的基础
分类
设备名
描述
IDE / ATA (PATA) 硬盘
/dev/hda, /dev/hdb
较早的硬盘接口标准,现在已不常见。a, b 代表主/从设备。分区名为 /dev/hda1, /dev/hda2
SATA/SAS/SCSI 硬盘
/dev/sda, /dev/sdb
最常见的硬盘类型。a, b 代表第一块、第二块磁盘。分区名为 /dev/sda1, /dev/sda2。
NVMe 固态硬盘
/dev/nvme0n1
高速 M.2 接口的SSD。nvme0是控制器,n1是命名空间(磁盘)。分区名为 /dev/nvme0n1p1。
虚拟化磁盘 (VirtIO)
/dev/vda, /dev/vdb
在KVM ...
!!! abstract NOTE
MBR 是传统的硬盘使用方式,只支持一个硬盘上最多 4 个主分区,而 GUID 就是新兴的 GPT 方式,支持的主分区数量没有限制。如果主板较老只支持 BIOS,那就选择 MBR,如果是新主板,支持 UEFI,就可以选择 GUID。有些用户想将自己 MBR 格式的磁盘转换成 GPT 格式,除了可以借助 PE 以外,还能够用系统自带的命令行方式进行转换。
!!!
按 Win + R 组合键,打开运行,并输入:cmd 命令,可以快速打开命令提示符窗口,请用管理员权限运行 cmd;或者以管理员身份打开 Windows 终端
利用 diskpart; list disk 可实现对硬盘的分区管理,包括创建分区、删除分区、合并(扩展)分区;
根据磁盘,我们可以输入:select disk=2 命令,意思是需要转换的是磁盘 2
既然已经选择好目标磁盘了,那就输入:convert gpt 命令,可以完成转换,成功转换会有提示:DiskPart 已将所选磁盘成功地转更为 GPT 格式;
输入:list disk 命令,可以查看 Gpt 对应的项 ...
下载脚本
下载最新版本源代码 (zip)
Video_Station_for_DSM_722
将下载的 zip 文件保存到 Synology 上的文件夹中。
解压缩 zip 文件。
通过 SSH 运行脚本1sudo -s /volume1/scripts/videostation_for_722.sh
使用 Microsoft Diskpart Erase 实用程序,清理或擦除存储设备将删除硬盘中的所有数据和分区
以管理员身份运行终端/CMD
输入diskpart 然后按 Enter
在 diskpart 提示符窗口下,输入 list disk 然后按 Enter
磁盘列表将以文本格式显示出来,选择一个磁盘编号,例如选择磁盘1,需要输入 select disk 1,然后按 Enter
Diskpart 擦除/清理将永久擦除/销毁所选硬盘上的所有数据。请确定您正在擦除正确的磁盘
如图所示,提示已选择该磁盘,在 diskpart 提示符下,输入 clean 然后按 Enter
一旦输入 clean 并点击回车,硬盘将被擦除。不会提供警告
命令提示符窗口将显示消息 “DiskPart succeeded in cleaning the disk“(DiskPart 已成功清理磁盘)。 _单击_右上角的红色 X以关闭命令提示符窗口。
!!! abstract NOTE
Umami 是一个开源的、以隐私为中心的网站分析工具,是 Google Analytics 的替代品。它提供网站流量、用户行为和性能的基本见解,同时优先考虑数据隐私。
与许多传统分析平台不同,Umami 不会收集或存储个人数据,避免了对 cookies 的需求,并且符合 GDPR 和 PECR 标准。
Umami 设计轻量且易于设置,可以进行自托管,使用户对其数据拥有完全控制权。
!!!
配置教程
在需要放入umami信息的文件夹建立docker-compose.yaml文件,填写下面的内容:
以下提供三种方式,请自行选择
:::tabs active=1== tab postgresql
12345678910111213141516services: umami: image: ghcr.io/umami-software/umami:postgresql-latest ports: - "3000:3000" environment: DATABASE_ ...





























