修复 Conda 导致的
PowerShell 启动缓慢
问题描述
每次启动 PowerShell
时都有明显的卡顿,启动时间长达数秒。经过排查,发现这是由于 Conda
的初始化脚本导致的。
原因
在使用 conda init 命令配置 PowerShell 环境时,Conda
会向配置文件(Profile)中注入一段初始化代码。这段代码会在每次启动
PowerShell 时立即执行,加载整个 Conda 环境,从而拖慢启动速度。
排查过程
测试当前启动时间 使用
Measure-Command 测试加载配置文件的启动耗时:
Measure-Command { pwsh.exe -Command "exit" }
测试结果显示需要约 5 秒。
测试裸启动时间
测试不加载配置文件(-NoProfile)的启动耗时:
Measure-Command { pwsh.exe -NoProfile -Command "exit" }
结果仅需 0.5
秒左右。巨大的时间差异证实了问题出在配置文件(Profile)的加载过程中。
定位配置文件
$PROF ...
DNS、端口、安全组与反向代理
1. DNS:只负责“域名 → IP 的映射”
DNS(域名解析)只做一件事:
xx.example.com → 服务器公网 IP
它不涉及端口、不涉及防火墙、不涉及安全策略。
你只是告诉全球的 DNS 服务器:
“访问这个域名,请去找这台服务器。”
2. 端口:服务监听的位置
服务器上的每一个服务,都需要监听一个端口,例如:
服务
默认端口
是否需对外开放?
HTTP
80
✔ 通常开放
HTTPS
443
✔ 通常开放
xx 后端
1234
❌ 不需要开放
如果你的 xx 运行在:127.0.0.1:1234,那么它只允许
本机访问。
外网无论如何都无法访问这个端口,即使安全组放行了 1234 端口。
如果你的 xx 运行在:0.0.0.0:1234,那么它允许
所有 IP 访问。
但是,是否能从外网访问,还要看安全组中是否放行了 1234 端口。
3.
安全组:决定外网能否访问某个端口
安全组是云厂商提供的入口防火墙,决定哪些端口可以从外网访问。例如:
端口
安全组放行?
外网能访问吗?
80
✔
...
Python
未读logging
Python的logging模块提供了灵活的日志记录功能,可用于调试和记录程序运行信息。
1 基本配置
将以下代码添加到Python文件中,以配置日志记录:
import logging
from pathlib import Path
# 配置日志文件路径
script_dir = Path(__file__).parent # 获取当前脚本所在目录
log_file_path = script_dir / 'log_file.log' # 在脚本目录下创建日志文件
# 配置日志
logging.basicConfig(
level=logging.DEBUG, # 设置日志级别
format='%(asctime)s - %(levelname)s - %(message)s', # 设置日志格式
handlers=[
logging.StreamHandler(), # 输出到控制台
logging.FileHandler(log_file_path, encoding='utf-8') # ...
博客资源托管方案
资源托管方案
在搭建博客时,通常会涉及到一些静态资源的托管问题,比如图片、视频、音频等。这里列出几种常见的资源托管方案,供参考:
标号
方案
具体方法
推荐指数
1
本地
放在博客source文件夹下,使用相对路径,跟随博客同步到github仓库
★★
2
github repo
将assets资源放在单独的github仓库管理,并打tag
★★★
3
云服务器
将assets放在云服务器静态网页上
★★★★
4
npm
将assets发布到npm,经过 unpkg/jsDelivr CDN使用
★★★★
优缺点分析
1 本地
优点:
方便,直接放在博客的source文件夹下,使用相对路径引用即可。
不需要额外的配置和管理。
跟随博客同步到github仓库,方便备份和版本控制。
缺点:
资源文件较大时,可能会导致博客仓库过大,影响克隆和下载速度。
仓库容量有限,超过限制后也难以清理。
2 github repo
一般配合jsDelivr使用,cdn加速。
优点:
可以将assets资源放在单独的github仓 ...
内容分发网络 (CDN)
CDN,全称 Content Delivery
Network(内容分发网络),是一种通过分布式部署的服务器网络来加速和优化内容传输的技术。它的核心目标是让用户能够就近获取所需的网页、视频、图片、脚本等内容,从而提升访问速度和体验,同时减轻源站服务器的压力。
1 原理
内容缓存与分发 (Caching & Distribution):
这是CDN最基础也是最关键的技术。CDN会将网站的静态内容(如图片、视频、CSS/JS文件等)主动或被动地从源站服务器缓存到遍布全球的边缘节点服务器上。当用户发起访问请求时,请求会被引导至离用户地理位置最近、网络延迟最低的边缘节点,该节点会直接将缓存的内容响应给用户,避免了对源站的直接访问,极大地缩短了物理距离和数据传输时间。
负载均衡与智能调度 (Load Balancing & Intelligent Scheduling):
CDN拥有一个智能的“大脑”——全局负载均衡(GSLB)系统。这个系统会实时监控所有边缘节点的健康状况、负载情况以及到用户的网络链路质量。当用户发起请求时,GSLB会综合分析用户的I ...
1. gitignore
.gitignore 文件用于指定哪些文件或目录在 Git
版本控制中被忽略。它可以避免将不必要的文件(如编译产物、临时文件等)提交到版本库中。
# 忽略特定文件
secret.txt
# 忽略特定目录
temp/
# 忽略特定目录下的所有文件(但保留temp目录本身)
# 如果 temp/ 目录是空的,Git 默认不会追踪空目录,通常要用 .gitkeep 之类的文件强制保留
temp/*
# 忽略特定目录下的所有 .tmp 文件
temp/*.tmp
# 忽略特定目录下的所有文件和子目录,但保留某个文件
temp/*
!temp/keep.txt
# 忽略特定目录下的所有文件和子目录,但保留某个目录
temp/*
!temp/keep/
2. 清除已跟踪的文件
不会删除 Git 提交历史中的文件,它 只删除工作区(working
directory)和未跟踪的文件,不会影响 Git 版本库的提交记录:
git clean -n -d -x # 预览即将删除的文件
git clean -f -d -x # 确认无误后执行删除
3. 回退以前的提交
3.1 ...
Live2D Widget 使用说明
在网页中添加 Live2D 看板娘。兼容 PJAX,支持无刷新加载。
(注:已不再需要配置依赖 jQuery 和 Font Awesome)
代码: live2d-widget
live2d_api
博文:
网页添加 Live2D
看板娘 Live2D 看板娘
API 迁移公告
1 简单配置
只需要最基础的功能,那么只用将这一行代码加入 html 页面的
head 或 body 中,即可加载看板娘:
<script src="https://fastly.jsdelivr.net/gh/stevenjoezhang/live2d-widget@latest/autoload.js"></script>
添加代码的位置取决于你的网站的构建方式。例如,如果你使用的是 Hexo,那么需要在主题的模版文件中添加以上代码。对于用各种模版引擎生成的页面,修改方法类似。
如果网站启用了 PJAX,由于看板娘不必每页刷新,需要注意将该脚本放到
PJAX 刷新区域之外。
2 进阶配置
2.1 修改autoload.js文件
下载live2d-wid ...
网站搭建
未读Twikoo 评论系统配置
目前很多面板支持一键配置,以下是私有部署方式介绍
云端部署
在 TwiKoo 官网
找到云函数部署的私有部署方式,按照文档进行配置。
下载nodejs
选择最新的LTS版本,Linux,nvm,npm。按照命令安装。
指定镜像源:npm config set registry https://registry.npmmirror.com
安装 Twikoo server:
npm i -g tkserver查看是否安装成功:npm ls tkserver -g
配置环境变量,主要关注以下几个参数:
TWIKOO_DATA:lokijs 数据库存储路径,默认是
./data。
TWIKOO_PORT:服务端口,默认是 8080
TWIKOO_IP_HEADERS:在特殊情况下使用,如使用了
CloudFlare CDN 它会将请求 IP 写到请求头的 cf-connecting-ip
字段上,为了能够正确的获取请求 IP 你可以写成
[“headers.cf-connecting-ip”],默认是 []
启动服务
创建一个文件夹,如
/www/wwwr ...
1. 基于值函数 vs 基于策略方法
强化学习解决决策问题的思路可以分为两大类:一类是”评估价值后决策”,另一类是”直接优化决策”。这就是我们常说的基于值函数的方法和基于策略的方法。
1.1
基于值函数的方法:先评估,再决策
想象你是一个下棋的新手,如何提高棋艺?一个直观的想法是:学会评估每个局面的好坏,然后选择能达到最好局面的走法。这就是基于值函数方法的核心思想。
核心理念
基于值函数的方法通过学习价值评估函数来指导决策:
值函数评估:基于值函数的方法主要通过估计状态值函数
( V(s) ) 或动作价值函数 ( Q(s, a) )
来评估每个状态或状态-动作对的优劣。这里,( V(s) ) 表示在状态 ( s )
下能获得的期望累计奖励,而 ( Q(s, a) ) 则表示在状态 ( s ) 采取动作 ( a )
后的期望累计奖励。
策略间接导出:这些方法通常不直接表示策略,而是通过优化值函数,然后从中推导出最优策略。例如,在给定
( Q(s, a) ) 的情况下,可以通过选择使 ( Q(s, a) )
最大的动作来获得最优策略。
状态价值函数 \(V(s)\):评估”在状态s下,按 ...
12 DDPG算法
深度确定性策略梯度是在动作空间无限的环境使用off-policy的actor-critic算法。它它的actor是一个确定性策略,通过梯度上升法来最大化Q值;它的critic是一个Q网络,通过梯度下降法来最小化Q值的TD误差。
12.1 DDPG算法
12.1.1 算法引出
TRPO和PPO是on-policy的actor-critic算法,这意味着它们只能在当前策略上进行更新,样本效率较低。
DQN是off-policy的Q-learning算法,直接估计Q值,样本效率较高,但是但是它只能处理动作空间有限的环境,这是因为它需要从所有动作中挑选一个\(Q\)值最大的动作。虽然可以将将动作空间离散化,但这比较粗糙,无法精细控制。
TRPO和PPO学习的是随机策略,而DDPG学习的确定性策略。随机策略可以表示为\(a\sim
\pi_\theta(a|s)\),确定性策略可以表示为\(a=\mu_\theta(s)\)。
12.1.2 算法公式
确定性策略梯度定理:
\[
\nabla_\theta J(\mu_\theta)=\mathbb{E}_{s\sim \ ...










