ubuntu通过virtualbox安装win虚拟机
系统:Ubuntu22.04
需要准备:下载你想用的windows的iso镜像,官方传送门。
第一种方式:安装virtualbox
1sudo apt-get install virtualbox
安装完成后,打开Applications,找到virtualbox,点击启动
安装windows虚拟机
打开virtualbox,点击New新建虚拟机。
设置虚拟机名称和存放位置
name: win10
Machine Folder: /home/$USER/win10
Type: Microsoft Windows
Version: Windows 10(64-bit)
分配内存,选择默认
Hard disk,选择默认
Hard disk file type, 选择默认
Storage on pyhsical hard disk, 选择默认
File location and size, 想用多少自己选,笔者只是画图用,就给了50G。
挂载iso镜像:在virtualbox界面依次点击Setting-->Storage-->Empty-->最右边有下三角的光盘图标 ...
OpenAI API接口申请以及部署使用【记录】
准备工作
需要一张海外的visa卡,这样才能稳定使用。如果没有,就别往下看了,拜拜。
个人用的话,自己爬楼梯。团队使用,建议搞个云
获取api key
首先官网注册登录,
依次点击左侧Settings—>Billing,然后点击页面中的Add payment details。选择Individual或者Company。笔者选的是Individual。
然后输入visa卡的信息,一路Continue,充值。
然后选择侧边栏中的API keys,创建一个新的key,复制这个key存在本地,后续使用。
使用
有很多好用的开源框架可以使用,比如:chatgpt-web和lobehub。笔者使用的是lobechat,也更推荐这个,页面美观,使用起来还不错,下面给出lobechat使用教程。以下操作均在海外云上执行:
首先安装docker-compose,安装方法见笔者的这个博客Ubuntu装机必备软件和配置。打开这个链接Crtl+F搜索docker-compose即可快速定位到安装方法。
然后执行:
123456789101112131415161718cd /srv/mkdir ...
免费域名&部署blog之streamlit【入门篇】
相信很多人都想拥有自己的blog,并且免费部署,目前可选框架太多,如wordpress,hexo,docsify,gradio等等。笔者上面的都用过,但最近更推荐一个新的界面,就是streamlit。
Streamlit 简介与入门指南
什么是 Streamlit?
Streamlit 是一个用于创建数据应用程序的Python库,可以帮助数据科学家、工程师和分析师轻松快速地构建交互式和可视化的数据界面。无需繁琐的前端代码,只需几行简单的Python代码,你就能将你的数据展现得美观而有效。
安装 Streamlit
首先,确保你已经安装了 Python。然后,通过以下命令安装 Streamlit:
12conda activate your-envpip install streamlit
使用 Streamlit
创建一个简单的应用程序
创建一个基本的 Streamlit 应用程序非常简单。新建一个 Python 文件(例如 app.py),并使用以下代码:
1234567891011121314151617181920212223242526272829303132333435363 ...
内网穿透之FRP,域名访问本地服务【只看这篇就够了,收藏必备】
内网穿透简介
互联网上两个不同的主机进行通信首先需要知道对方 IP。根据 IP 协议,只有分配了公网IP的设备才能在互联网上通信和传输数据。而中国人口/设备众多,分配到的IPv4资源又少,因此绝大部分情况是通过路由器/交换机转换公网IP后才上网。
位于路由器/交换机后的设备一般是内网设备,分配的IP地址以 192.168/172.16/10.0 开头,属于内网 IP。要让内网设备对外提供服务,就需要进行内网穿透。
常见穿透工具包括:FRP, ZeroTier 等,本文仅介绍 FRP 的使用。
FRP 简介
FRP(Fast Reverse Proxy)是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
基本原理:
在带有公网 ip 的云服务器上部署 frp 的服务端 frps
在需要穿透的内网服务器上部署 frp 的客户端 frpc
每个客户端都会有一个配置文件用于和服务器连接
公网服务器充当代理服务器,用户访问 公网ip + 端口时,公网服务器的 frps ...
局域网(校园网)内服务之间通过ssh -L互相访问
前言
同一个局域网内有两台linux服务器A和B,B上有一个服务,可以通过curl传输数据访问,现在想从A上也通过curl访问B上的服务
两种情况
如果B服务器上使用docker:
首先建立docker容器时,需要做端口映射
1docker run -p [host_port]:[container_port] [image]
host_port: 本地端口。你可以将这个端口号看作是你在本地主机上监听的端口。
container_port: Docker容器内部的端口号。这是容器内程序正在使用的端口。
例如,如果你有以下的端口映射:
1docker run -p 8080:80 nginx
这表示将本地主机上的8080端口映射到Nginx容器内部的80端口。因此,本地主机上的访问端口是8080,而容器内的应用程序将在80端口上监听。其实可以直接理解成把docker中的服务端口80,映射到本机的8080,供后续使用。
然后在服务器A上通过ssh反向代理实现
1ssh -N -L 10245:localhost:服务B的端口 用户名@服务器B的IP地址
-N 表示不执行远程命令,仅建 ...
Ubuntu装机必备软件和配置
Ubuntu 基本配置
最近将旧电脑重装了 Ubuntu,在这里记录配置过程,方便以后做类似的操作。
文件夹设置
更改文件夹侧边栏的目录,默认是中文路径,改用英文比较方便
12cd ~/.configvi user-dirs.dirs
修改如下:
12345678XDG_DESKTOP_DIR="$HOME/desktop"XDG_DOWNLOAD_DIR="$HOME/download"XDG_TEMPLATES_DIR="$HOME/template"XDG_PUBLICSHARE_DIR="$HOME/public"XDG_DOCUMENTS_DIR="$HOME/document"XDG_MUSIC_DIR="$HOME/music"XDG_PICTURES_DIR="$HOME/picture"XDG_VIDEOS_DIR="$HOME/video"
用户及用户组
创建新用户
1sudo adduser $USER
配 ...
Linux服务器安全
前言
笔者因服务器被攻击,特此整理分享。进入主题如下:
修改核心配置时,建议 先备份原始文件。修改配置和重启服务后,先在新的终端尝试连接服务器,确认无误后,再退出当前的连接。如果错误修改了配置,当前连接状态通常不会掉,能及时改回来。
12mkdir backupsudo cp /etc/ssh/sshd_config ./backup
此外,这些策略更多是防止网络攻击,而不影响机房对服务器的连接。比如禁用 Root 密码登录后,仍可以正常使用云服务器的“远程登录”。同理,机房登录服务器也不受影响。
禁用 root 密码登录
1sudo vim /etc/ssh/sshd_config
输入 /Permi 回车检索,找到 PermitRootLogin,将其注释掉
1# PermitRootLogin prohibit-password
然后重启 sshd 服务
1sudo systemctl restart sshd
禁用普通用户密码登录
1vim /etc/ssh/sshd_config
检索并修改参数为 PasswordAuthentication no,然后重启 ssh 服务。
...
ssh免密登录(本地Windows、linux 连接linux服务器)
前言
ssh或者vscode每次登录服务器都要输入密码,繁琐还记不住。免密是个好东西。
如果你的本地是linux,直接看第二节;如果本地是windows,直接看第三节。
SSH免密登录(Linux)
生成公钥和私钥
本地打开terminal,执行以下命令生成公钥和私钥:
12cd ~/.ssh ssh-keygen -t rsa -C linux2A100 -f ~/.ssh/A100
linux2A100 这个内容会写到公钥中,可以改成自己的,笔者这么写目的:表示本地linux连接A100服务器的意思。
指令最后的A100是生成公钥和私钥的文件名字,可以改成自己的。此时,~/.ssh路径下新增了A100(私钥)和A100.pub(公钥)两个文件。
公钥传送到远端服务器
将公钥传送到远端服务器
1ssh-copy-id -i ~/.ssh/A100.pub -p 3322 account@服务器IP # 如果有端口需要指定,默认端口可以去掉-p参数
也可以手动复制~/.ssh/A100文件的内容到远端服务器的~/.ssh/authorized_keys中
123456mkdir -p ...
fileserver文件分享,scp远程文件传输服务(Linux系统)
前言
把你的文件封装成服务,然后直接将链接甩给别人是不是一件很帅气的工作。
其他同学可以通过scp或者网页拖拽远程文件传输给你。(尤其是录制视频,表演等资料较大时使用,方便得很)
Fileserver文件分享
安装
准备:一台本地服务器(云的更好),没了。
首先安装docker和docker-compose
此处省略docker的安装(改天更新),docker-compose安装如下:
1234curl -L https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-linux-x86_64 -o ~/Downloads/docker-composechmod +x docker-compose # 赋予执行权限sudo mv docker-compose /usr/bin # 添加到环境变量可以读取到的地方docker-compose -v # 测试是否成功
然后找个地方配置docker-compose.yml文件
12345678910111213141516171819cd /s ...
使用flask_fastapi封装模型,不需加载,直接推理
前言
LLM十分火热,各种花样封装使用,但是每次infer的时候,加载模型都需要很久,那么就需要把服务挂载在服务器上,就不用每次infer都花那么多时间加载模型了。
使用fastapi或者flask
笔者更喜欢flask框架,觉得他更接地气,且易于使用。
使用fastapi实现
使用了客户端和服务端的分离,使得你可以在需要的时候发送推理请求。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172# start_server.pyfrom fastapi import FastAPI, Requestfrom transformers import AutoTokenizer, AutoModelimport uvicorn, json, datetimeimport torchfrom tqdm import tqdmfrom transformers import Ll ...
Linux卸载deb文件,别走,看我就行了
众所周知,Ubuntu安装文件通常下载deb格式文件,然后通过dpkg -i package安装。但是卸载的时候咋整啊,找了一堆博客,说的磨磨唧唧,下来教你轻松搞定卸载
123456# 首先查找需要卸载的包sudo dpkg -l | grep "你要卸载的包名字or其中几个字母也行"# 下面是个例子# sudo dpkg -l | grep "simplenote"# ii simplenote 2.21.0-25251 amd64 The simplest way to keep notes
看到ii后边的那个名字,记住他,一会就把他给大卸八块
普通卸载(-r)
12345# 卸载指令sudo dpkg -r "你要卸载的包名字"# 下面是例子sudo dpkg -r simplenote # 移除一个已安装的包裹
纯净卸载(-P)
12345# 卸载指令sudo dpkg -P "你要卸载的包名字"# 下面是例子sudo dpkg -P simplenote # 完全 ...
python如何统计函数被调用次数
前言
每当做搜索任务或者时间复杂度任务相关时候,就会有统计函数被调用次数的需求。通常我们的做法是在函数前面定义一个变量,每循环调用一次,变量就加一,这不失为一种办法,那么有没有更高效的方法呢?
正文
第一种方法:
当然有,那就是python的独家专属操作—> 装饰器。
废话不多说,直接上例子:
123456789101112131415class CallingCounter(object): def __init__ (self, func): self.func = func self.count = 0 def __call__ (self, *args, **kwargs): self.count += 1 return self.func(*args, **kwargs)@CallingCounterdef test(): print('我被调用了')test()print(f'我被调用了{test.count}次')
如果是统计clas ...