我的服务器又又又又又又又又一次搬家了,这次用了oracle云的服务器。
先试试好不好用,测试发布^_^
按正常来说,现在的服务器应该是免费的,就是不知道实际会不会收钱,因为我把账户升级成收费账户了,先观察一下。
阿水的世界。
我的服务器又又又又又又又又一次搬家了,这次用了oracle云的服务器。
先试试好不好用,测试发布^_^
按正常来说,现在的服务器应该是免费的,就是不知道实际会不会收钱,因为我把账户升级成收费账户了,先观察一下。
最近从网上批量下来的图片有点多,都是白色底色,左上角固定位置有水印。我想把水印批量删了,photoshop有点慢,就用AI写了个python的脚本,批量处理图片。试了试还挺好用,处理300个图片大概几秒钟,挺快的。
import os
from PIL import Image
def process_image(image_path, save_path, overwrite=False):
try:
# 打开图片
img = Image.open(image_path)
# 确保图片至少有150x60像素
if img.width >= 150 and img.height >= 60:
# 创建一个白色区域,大小150x60像素
white_patch = Image.new('RGB', (150, 60), (255, 255, 255))
# 将白色区域粘贴到图片的左上角
img.paste(white_patch, (0, 0))
# 保存修改后的图片
if overwrite:
img.save(save_path)
print(f"Overwritten: {save_path}")
else:
base, ext = os.path.splitext(save_path)
new_save_path = f"{base}_modified{ext}"
img.save(new_save_path)
print(f"Processed and saved: {new_save_path}")
else:
print(f"Image {image_path} is too small to process.")
except Exception as e:
print(f"Error processing {image_path}: {e}")
def batch_process_images(folder_path, overwrite=False):
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
image_path = os.path.join(folder_path, filename)
save_path = os.path.join(folder_path, filename)
process_image(image_path, save_path, overwrite)
# 设置你的图片文件夹路径
folder_path = 'c:\\static\\upload\\image\\20241010\\' # 替换为你的图片文件夹路径,\需要替换为\\
overwrite = True # 设置为True以覆盖原图,设置为False以保存为新文件
batch_process_images(folder_path, overwrite)
docker,根据安装情况不同,使用apt-get安装的时候和使用snap安装的时候,对于服务的管理命令不同,对于镜像和容器的管理命令都相同。
一、启动一个已经停止的容器实例
docker start 容器ID或容器名
docker start 还有两个参数
-i:以 交互模式启动 交互模式不懂点我
-t:以 附加进程方式启动 附加进程不懂的点我
二、停止一个正在运行的容器
1、docker stop 此方式常常被翻译为优雅的停止容器
docker stop 容器ID或容器名
参数 -t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态
docker stop -t=60 容器ID或容器名
2、docker kill
docker kill 容器ID或容器名 :直接关闭容器
由此可见stop和kill的主要区别:stop给与一定的关闭时间交由容器自己保存状态,kill直接关闭容器
想更进一步了解处理机制的可以看下面这篇文章,比较详细但是需要其他方面的
https://www.jb51.net/article/96617.htm
三、重启一个容器
docker restart 容器ID或容器名 :不管容器是否启动,直接重启容器
docker restart 参数
-t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态
四、修改容器名字
docker rename 容器原来名 要改为的名字
五、删除容器
docker rm是删除容器
六、删除镜像
docker rmi是删除镜像
七、两种进入容器的方法
我们经常需要进入到容器里去做一些工作,比如查看日志、调试、启动其他进程等。有两种方法进入容器:
1,docker attach
通过docker attach可以attach到容器启动命令的终端
2,docker exec
通过docker exec进入相同的容器,-it指定以交模式打开,执行exit退出容器,回到docker host
3,attach和exec的区别:
attach直接进入容器启动命令的终端,不会启动新的进程。
exec则是在容器中打开新的终端,并且可以 启动新的进程。
如果想直接在终端查看启动命令的输出,用attach,其他情况使用exec。
如果只是为了查看启动命令的输出,可以使用docker logs命令。
八、docker启动命令,docker重启命令,docker关闭命令
这里分两种情况,ubuntu里 如果使用snap命令安装的docker,则需要在snap中对docker进行管理。以下部分是直接安装的docker的命令情况:
启动 systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart docker
重启docker服务 sudo service docker restart
关闭docker服务 service docker stop
关闭docker服务 systemctl stop docker
在snap中管理docker服务:
启动docker:sudo snap start docker
重启docker:sudo snap restart docker
关闭docker:sudo snap stop docker
九、提交容器
docker commit 容器id REPOSITORY:TAG
内容有部分修改,增加了snap的内容,其余引用自:
https://www.cnblogs.com/guohu/p/13111498.html
anythingllm使用docker启动、关闭、重启的方式
sudo docker run -d -p 3001:3001 --cap-add SYS_ADMIN -v ${STORAGE_LOCATION}:/app/server/storage -v ${STORAGE_LOCATION}/.env:/app/server/.env -e STORAGE_DIR="/app/server/storage" dockerpull.com/mintplexlabs/anythingllm:latest
anythingllm使用的是dockerpull.com下的镜像。
如果在anythingllm启动后,无法访问本地ollama服务,则需要将ollama的监听地址,从127.0.0.1修改为0.0.0.0,这样就是监听所有ip地址,而不限制只能在本地使用了。
docker restart 容器ID或容器名
2.优雅的关闭docker容器
docker stop 容器ID或容器名
/(width|height|style|class|x:str)="([^"]*)"/g
用于匹配html中所有的width|height|style|class|x:str这些字段,“|”用于分隔各个属性值
/g表示循环匹配
^(.*\/)
用于匹配url中除了最后的文件名以外的其余部分(最后一个/之前的部分),比如:http://xxx.xxx.website.cn/upload/aabbcc.jpg,匹配结果是http://xxx.xxx.website.cn/upload/
[^\/]*$
和上一个相反,用于匹配用于匹配url中最后的文件名(最后一个/之后的部分),比如:http://xxx.xxx.website.cn/upload/aabbcc.jpg,匹配结果是aabbcc.jpg
/<style\s{0,}[^>]*>([\s\S]*?)<\/style>/gi
用于匹配这个标签的正则规则,style可以带有属性,比如带有type="text/css"这样的属性。