分类 分享 下的文章

差分约束,虽然是带有“差分”二字,但是实际上通常是归属于图论这一类问题。

差分约束主要的表现形式是求满足一组数值上大小关系条件的最大/最小值。

大小关系条件就是“大于,小于,等于”这种。

通常在拿到一组条件之后,需要确定求的是最大值还是最小值,这会关系到是求最短路还是最长路。

如果是求最大值,一般就是求最短路。与之相对的如果是求最小值就是求最长路。

我们是如何将一组数值上的大小关系条件转换为图论问题的?

我们会将一个关系变为一条边,而在边的两端就是满足这个关系的两个客体。而且通常需要根据是求最大值还是最小值并根据贪心的思想,先将这个关系统一转换为小于等于或者大于等于。

举个例子,对于求最大值来说,需要将所有的关系转换为小于等于,最终的答案就是求满足这一组小于等于关系的一个交集。通过跑最短路,可以不断的去求这个交集。

比如现在有两个值a,b,并且有三个关系

a ≤ b + 1

a ≤ b + 2

a ≤ b + 3

a ≥ 0

b ≥ 0

需要求的是满足这个条件每个数的最大值,假如给a,b分别设置为1,2号点,那么对于前三个关系可以看做是b分别向a连了3条边,权值分别是1,2,3。而对于最后两个条件可以看做是a,b两个点分别向超级源点0连了一条边权为0的边。之后去跑最短路,可以求出a,b两点向超级源点的最短的距离是1,0。所以满足这个条件的最大值就是1,0

最近看书看到这个up,b站上就去关注了一下。

https://space.bilibili.com/1317344920?spm_id_from=333.1387.follow.user_card.click

有一说一他的生活比较接近我理想的状态。也恰好是在现代社会。

我比较喜欢的生活就是这样一边做远程,然后一边到处玩,然后保持单身。挺好的。

唉唉,最近好焦虑。

上面应该有附图的,但是图床貌似出了点问题,得找个时间修一修。

背景:
后端完好。expo启动在安卓模拟器。

问题:
本地api地址使用localhost报TypeError: Network request failed

分析
在Android模拟器中, localhost:8080 或 127.0.0.1:8080 指向的是 模拟器内部 ,而不是宿主机(电脑)。这就是为什么会出现 Network request failed 错误的根本原因。

解决:
使用电脑的实际IP地址,
在命令行运行 ipconfig (Windows)查看你的IP地址,将api地址中localhost改为实际的ip

cloudflare 解析的域名 可以使用泛域名的ssl证书,并且可以直接重定向至https,有了这个之后如果使用lnmp来新建站点,可以不需要勾选添加ssl,并且在实际使用中,会默认使用https连接。

但是对于wordpress来说,新建文章需要站点的url和数据库中的一致。因为这个https实际上不是这个子域的,所以在安装的时候,默认会给你写成http。所以只需要将http改为https即可。

202508291700

需要将 站点地址 改为 https即可。
如果不小心将wordpress地址也改为了https,就好出现重定向过多,导致无法进入后台
这个时候可以连上数据库,修改wp_options表中的site_url字段将https改回http即可。

后端有点问题一直拖到现在,学长在摸鱼,我也闲着无聊先去看下。

主要是python脚本没有跑起来。

  1. 看下原来的代码在哪个地方用到python

我发现之前上传的是我有改过的,可能是因为我有部分的地方改过所以导致了用不了

服务器上面是没有安装python3.11的,所以得装一个python3.11

问了一下gpt,直接就是下了源码然后编译,目前来看还算是比较顺利

离线安装的依赖版本和本地的python版本一致

因为我电脑上的是3.12,服务器上需要的是3.11

所以之前本地打包的依赖服务器的安装不了

现在得先在本地启一个3.11的虚拟环境然后在虚拟环境下再来下载这些依赖

先是用scoop安装一下python311

scoop bucket add versions
scoop install versions/python311

然后创建一个虚拟环境

python311 -m venv py311env

然后激活虚拟环境(我用的是git bash)

source py311env/Scripts/activate

之后再下载依赖

mkdir my_pkgs
cd my_pkgs

pip download pandas scikit-learn keras numpy openpyxl matplotlib mysql-connector-python

然后打包成tar,在服务器上解压,再用pip安装

pip3 install --no-index --find-links=. pandas scikit-learn keras numpy openpyxl matplotlib mysql-connector-python

有点尴尬,忘记了电脑是windows,下的依赖只能是windows用不能给linux用

现在是打算用wsl重复一下上面的步骤

wsl上面需要还是手动编译一个python3.11

先要安装一下编译的依赖:

sudo su # 获取权限
sudo apt-get update
# 随文章进行而更新,依赖应该是全的
sudo apt-get install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget

然后就是编译安装

cd /opt
wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz # 下载python
tar -xzf Python-3.11.9.tgz
cd Python-3.11.9

# 安装编译依赖(如果有权限,可以让管理员预装)
# CentOS: yum groupinstall "Development Tools"
# Debian/Ubuntu: apt-get install build-essential

# 编译并安装到自定义目录(不要覆盖系统 Python 2.7)
sudo ./configure --prefix=/opt/python3.11 --enable-optimizations
sudo make -j$(nproc)    # 编译时间较长
sudo make install

配置环境变量:

# 加入环境变量
echo 'export PATH=/opt/python3.11/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# 验证版本
python3 --version

目前来说还算顺利

后面下载依赖的时候不知道为什么还是下的3.12的版本,可能pip直接安装是这样的?不懂,还是得建一个虚拟环境试下

创建虚拟环境失败,其实之前编译的时候有问题,但是我直接给忽略了,现在看来应该是编译出问题了,感觉wsl好像什么都没有。

问了一个gpt报错,说是因为少了依赖,先下完依赖之后再更新

还是得建一个虚拟环境,不过python的安装倒是顺利,不错。

目前好像是因为说内网的那个linux的版本比较老,一些包不支持,所以得专门下载低版本去安装希望顺利

可以先查看一下支持哪些平台

python3 -m pip debug --verbose

然后对于某一个包可以指定平台下载,例如:

pip download \
  --only-binary=:all: \
  --platform manylinux2014_x86_64 \
  --python-version 311 \
  --implementation cp \
  --abi cp311 \
  Pillow==10.0.1

目前都挺顺利的,但是到了要运行的时候发现内部少了Python 标准库模块 ctypes

应该是编译的问题,问了一下gpt说是服务器少了libffi 开发依赖
所以现在是先让那边的管理员看能不能解决,或者干脆帮忙装一下python3.11,唉。

至少可以先停一会儿了。

后面因为连不了网,他们那边也是没有解决方法,只能是我这里继续。

我查了一下linux版本是Centos7,然后网上找了一个rpm的包

https://ftp.iij.ad.jp/pub/linux/centos-vault/centos/7.7.1908/cr/x86_64/Packages/

https://ftp.iij.ad.jp/pub/linux/centos-vault/centos/7.7.1908/cr/x86_64/Packages/libffi-devel-3.0.13-19.el7.x86_64.rpm

本地安装了一下这个依赖,然后再重新编译,目前貌似没有什么问题,一切顺利

sudo yum install ./*.rpm

装好了之后,重新编译python3之后又运行了一遍脚本,然后补装了一个库,总归是可行了。

之后就是把服务重新启动一下,过一两天看下数据库的数据,如果没有问题的话,这个就解决了,可喜可贺,可喜可贺。