From 4b6903e1055910f402f5e6a6946b922a374905a0 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Fri, 17 Mar 2023 15:44:27 +0800 Subject: [PATCH 01/41] update readme 20230317 --- 01_basic/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/01_basic/README.md b/01_basic/README.md index 8bde885..224e972 100644 --- a/01_basic/README.md +++ b/01_basic/README.md @@ -958,6 +958,13 @@ sorted(l, key=lambda x:x[1], reverse=True) # Out[42]: [('c', 6), ('d', 4), ('e', 3), ('b', 2), ('a', 1)] ``` +用法一(衍生):
```python # 调整数组顺序使奇数位于偶数前面,奇偶相对顺序不变 From f785ffc0b75a9f05fb7bbee6fb14e40cf36876aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B0=8F=E4=BF=A1=E5=8F=B7?= Date: Mon, 10 Apr 2023 16:10:26 +0800 Subject: [PATCH 02/41] Update README.md --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index b05b1db..69a34d3 100644 --- a/README.md +++ b/README.md @@ -62,3 +62,12 @@ index-url = http://mirrors.aliyun.com/pypi/simple/ trusted-host = mirrors.aliyun.com ``` + +# 使用conda升级到python3.8 + +https://qa.1r1g.com/sf/ask/4099772281/)
+```shell +conda update -n base -c defaults conda +conda install -c anaconda python=3.8 +#然后再重新安装下依赖包 +``` From ae958f27fe83095d37815fb2d4dc3bf7c2a24812 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B0=8F=E4=BF=A1=E5=8F=B7?= Date: Mon, 10 Apr 2023 16:10:56 +0800 Subject: [PATCH 03/41] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 69a34d3..b27d70a 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ trusted-host = mirrors.aliyun.com ``` -# 使用conda升级到python3.8 +## 使用conda升级到python3.8 https://qa.1r1g.com/sf/ask/4099772281/)
```shell From 502bdac0a2211fe0f3bedae5850d5cd24702e67e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B0=8F=E4=BF=A1=E5=8F=B7?= Date: Tue, 11 Apr 2023 09:21:10 +0800 Subject: [PATCH 04/41] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b27d70a..92e89be 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,15 @@ `Github`加载`ipynb`的速度较慢,建议在 [Nbviewer](http://nbviewer.ipython.org/github/lijin-THU/notes-python/blob/master/index.ipynb) 中查看该项目。 +[python各版本下载仓库](https://www.python.org/ftp/python/)
+ --- ## 简介 -默认安装了 `Python 3.8`,以及相关的第三方包 `gensim`, `tqdm`, `flask` +默认安装了 `Python 3.9`,以及相关的第三方包 `gensim`, `tqdm`, `flask` -anaconda 虚拟环境创建python版本降级命令:conda create -n tableqa python=3.7 +anaconda 虚拟环境创建python版本降级命令:conda create -n tableqa python=3.8 > life is short.use python. From f4519019881b4e1a06c9783052326184afacefcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B0=8F=E4=BF=A1=E5=8F=B7?= Date: Mon, 17 Apr 2023 11:48:00 +0800 Subject: [PATCH 05/41] Update README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 92e89be..08e5f11 100644 --- a/README.md +++ b/README.md @@ -67,9 +67,19 @@ trusted-host = mirrors.aliyun.com ## 使用conda升级到python3.8 +方法一
https://qa.1r1g.com/sf/ask/4099772281/)
```shell conda update -n base -c defaults conda conda install -c anaconda python=3.8 #然后再重新安装下依赖包 + +方法二(或使用虚拟环境)
+$ conda create -p /your_path/env_name python=3.8 +# 激活环境 +$ source activate /your_path/env_name +# 关闭环境 +$ source deactivate /your_path/env_name +# 删除环境 +$ conda env remove -p /your_path/env_name ``` From 7fa3cdd60a6dc03cf12052e1c6da8c9c46922185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B0=8F=E4=BF=A1=E5=8F=B7?= Date: Mon, 17 Apr 2023 11:48:36 +0800 Subject: [PATCH 06/41] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 08e5f11..385e7e0 100644 --- a/README.md +++ b/README.md @@ -73,8 +73,9 @@ https://qa.1r1g.com/sf/ask/4099772281/)
conda update -n base -c defaults conda conda install -c anaconda python=3.8 #然后再重新安装下依赖包 - +``` 方法二(或使用虚拟环境)
+``` $ conda create -p /your_path/env_name python=3.8 # 激活环境 $ source activate /your_path/env_name From 3b83965aeb5f4f5104ecfe81c9a390e3f1d6496d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B0=8F=E4=BF=A1=E5=8F=B7?= Date: Wed, 31 May 2023 17:00:44 +0800 Subject: [PATCH 07/41] Update README.md --- 10_docker/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/10_docker/README.md b/10_docker/README.md index 7875d27..818f049 100644 --- a/10_docker/README.md +++ b/10_docker/README.md @@ -7,7 +7,7 @@ [docker docs for mac](https://docs.docker.com/docker-for-mac/)
1.2 linux下安装
-TODO +[Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/) 1.3 配置docker镜像站
[docker镜像站网址](https://www.daocloud.io/mirror#accelerator-doc)
From 9fc7e25fae4da8fc690b452bdeac556ea0adbecc Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Fri, 4 Aug 2023 14:47:10 +0800 Subject: [PATCH 08/41] update multiprocess --- .DS_Store | Bin 0 -> 20484 bytes 01_basic/README.md | 75 ++++++++++++++++++ 08_pycharm/.DS_Store | Bin 0 -> 6148 bytes .../.DS_Store" | Bin 0 -> 6148 bytes 4 files changed, 75 insertions(+) create mode 100644 .DS_Store create mode 100644 08_pycharm/.DS_Store create mode 100644 "08_pycharm/\346\277\200\346\264\273\347\240\201/.DS_Store" diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bf2d0682525e17b6f9086f698ef55cace79e3675 GIT binary patch literal 20484 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 1: + total = len(iterable) if hasattr(iterable, '__len__') else None + + with ProcessPoolExecutor(max_workers) as pool, tqdm(total=total, desc=desc, unit=unit) as pbar: + for i in pool.map(func, iterable): + yield i + pbar.update() + + else: + return map(func, iterable) + +xtuple, xlist, xset = Pipe(tuple), Pipe(list), Pipe(set) + +def ff(x): + for i in range(x): + a = 1 + return x+2 + +if __name__ == '__main__': + dfs = [] + arr = [100000000,200000000,300000000,400000000] + #without multiprocess + for i in arr: + dfs.append(ff(i)) + #with multiprocess + dfs = arr | xProcessPoolExecutor(ff, 16) | xlist #这里的16是进程数,一般cpu有N核就起N-1个进程 + print(dfs) +``` +```python +# 多进程(yuanjie封装meutils) 以多进程读取data下pdf文件为例 +from meutils.pipe import * +os.environ['LOG_PATH'] = 'pdf.log' +from meutils.log_utils import * +location = 'output' #pdf文件处理后保存的文件夹 +@diskcache(location=location) +def func(file_path): + try: + df = pdf_layout(str(file_path)) #解析成字典 详见https://github.com/binzhouchn/deep_learning/blob/master/4_llm/1_%E5%90%91%E9%87%8F%E6%95%B0%E6%8D%AE%E5%BA%93/es/es.py 中的body字典 + with open(f'{location}/{file_path.stem}.txt', 'w', encoding='utf8') as f: + json.dump(df, f, ensure_ascii=False) + except Exception as e: + logger.debug(f"{file_path}: {e}") + logger.debug(f"{file_path}: {traceback.format_exc().strip()}") +if __name__ == '__main__': + ps = Path('./data/').glob('*.pdf') | xlist #将所有pdf文件都列出来 + dfs = ps | xProcessPoolExecutor(func, 16) | xlist #这里的16是进程数,一般cpu有N核就起N-1个进程 +``` ### cv的多进程实现 diff --git a/08_pycharm/.DS_Store b/08_pycharm/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bec7f6f54d9a49cd9e3113fc8cc1896409aaeb7b GIT binary patch literal 6148 zcmeHK!EO^V5Ve~?om7Y%sM@22#4U$JNyq^qEg>9wLs~=+1+}}~(5$q(UL_mSvIOmC z(0)z1!3Q9|fN$uvGxh)}Aw9Mc@<^UH_ISLWC)wU%jPc$iXfjq~j0tFnP)t z$Qq5Hlj9oW)Q^-8y>EWHFxw7T1}p=s#sHq(5=&Xg4*lu;`HjMH)@c0TYo+p?yX!(! zMfG0wtvggxH}kT|xaW=bu=mo-hCbP^l!|`ap8q-=O!sRKo~tDD!elVg!C^3fDQ|Ye zBv8|ynk2zkuj3kr5EW6`uWjdftJ|r|cB?z9%e>odp#69@tB9>f&8IsD@yUn$-FoLs7>O6jO%;%E+>ZiAx^j4m?+jZIMbgs?$vq^4g z&d3R67acX-Llw_o#^i}rzfYI7c=+z;=J$&)&;G>4D!9g*4wtR^7sqC!R<9@nbZErJ zitf*D%Q9dYxIG5&evr@*9m2w(zB)kZ5&*Ca!&<<`S^{Gvp+i_01P=%|p@1foQ;ES% zIE+i0=MWYKO*rFJd~o_QrwWDZufzIMPiNdQXtia)GH{iFlIhm){eQ8%{=XVzdzJyq zz<zT3RH?o~!jPXh*C^1%Kj0tFnxdL<}1nt;{ zWQ;~;06ETa!2NE!=||EZ@-+j70mH!KV*ta*m!PY za!QDTD7+|ayLH)h6EEqsD_-jhetqzgx=;G1l+i!k^FM~Q?oM%bO~#2A#nL z9T+kF%=T@zYZx#L+|K~s4;C~;hcMNst`6u_2>_UbVI`nrErBr>p+lHz1Pch)p@2G+ zQ;ETKIE-85=MbhEbvWZxd~jNsQ-#9S>M*~h+!=Q?n%*#A7|1d(u0MOz?SH39oihewHCBpXej8HYE&W6(Q~X6e2V9xDFK^>3ZO%nYJ?FG P^G86@U^>IVgEH_J Date: Wed, 16 Aug 2023 14:54:52 +0800 Subject: [PATCH 09/41] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 385e7e0..ba458d9 100644 --- a/README.md +++ b/README.md @@ -84,3 +84,7 @@ $ source deactivate /your_path/env_name # 删除环境 $ conda env remove -p /your_path/env_name ``` + +## 其他python仓库推荐 + +[All algorithms implemented in Python - for education](https://github.com/TheAlgorithms/Python/)
From 30791cf1dde4b9eb9c71ed8366962d7c67f706f9 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Fri, 25 Aug 2023 11:09:46 +0800 Subject: [PATCH 10/41] update python notes --- 01_basic/README.md | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/01_basic/README.md b/01_basic/README.md index f48fb05..539ce2a 100644 --- a/01_basic/README.md +++ b/01_basic/README.md @@ -92,6 +92,8 @@ [**46. python日期处理**](#python日期处理) +[**47. dataclass**](#dataclass) + ---
点击展开 @@ -1364,7 +1366,43 @@ train_pca = pad_mean_by_group(train_pca) [80个例子,彻底掌握Python日期时间处理](https://mp.weixin.qq.com/s/2bJUZBfWS_8ULGrb9tRpmw)
- - +### dataclass + +dataclass 提供一个简便的方式创建数据类, 默认实现__init__(), __repr__(), __eq__()方法
+dataclass支持数据类型的嵌套
+支持将数据设置为不可变:@dataclass(frozen=True)
+ +不用dataclass
+ +```python +class Person: + def __init__(self, name, age): + self.name = name + self.age = age +p = Person('test', 18) +q = Person('test', 18) +#<__main__.Person at 0x7ff4ade66f40> +str(p) +repr(p) +#'<__main__.Person object at 0x7ff4ade66f40>' +p == q +#False +``` +```python +from typing import Any +from dataclasses import dataclass +@dataclass +class Person: + name: Any + age: Any = 18 +p = Person('test', 18) +q = Person('test', 18) +#Person(name='test', age=18) +str(p) +repr(p) +#"Person(name='test', age=18)" +p == q +#True +```
\ No newline at end of file From 4f5365c93deff55623cb72f0346a642601a9eecd Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Fri, 1 Sep 2023 17:35:20 +0800 Subject: [PATCH 11/41] update md5 --- .DS_Store | Bin 20484 -> 20484 bytes 01_basic/README.md | 21 +++++++++++++++++++++ 10_docker/.DS_Store | Bin 0 -> 8196 bytes 3 files changed, 21 insertions(+) create mode 100644 10_docker/.DS_Store diff --git a/.DS_Store b/.DS_Store index bf2d0682525e17b6f9086f698ef55cace79e3675..ceb39ab38df1d46c547abb913760fa8cbdf09b59 100644 GIT binary patch delta 98 zcmV-o0GAT=|6EFgO^FgZ9ZAUQKPlaClRlaeMAle8m2 zlfEjmlinFD0s=j=3>v%vlaeMivrIq;0h0?Im;(Ym36t+ZS(E=AhOV$$vv7aqQ-`1Itqq{#egQ!t zDKj1m4gqh@@UqmR;>`R!h@dskWOvhu$ 点击展开 @@ -1405,4 +1407,23 @@ p == q #True ``` +### md5_sha256 + +```python +import hashlib + +def enc(s, ed='md5'): + if ed == 'md5': + hash_object = hashlib.md5(s.encode()) + elif ed == 'sha256': + hash_object = hashlib.sha256(s.encode()) + else: + raise ValueError('unsupport type!') + hash_hex = hash_object.hexdigest() + return hash_hex + +for i in ['13730973320','13802198853','17619520726']: + print(enc(i,'md5')) +``` + \ No newline at end of file diff --git a/10_docker/.DS_Store b/10_docker/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fdff98b2de29c72f209426a74e929a509c274bcc GIT binary patch literal 8196 zcmeHMU2GIp6u#fK(3vu&)AH9vU>9l&VguW>)fQ4*+N!Ozp}M6%fR^2zfsUP>sXMdV zLMTmM{jwJFSBi;(^ck~RnvF7@W!dm$ z(!oLyfgl1w1cC?z5eOo1BSe7iY~G{=?tQ@x#vlSg1a8U*@b5#EI;U};P7CUNI%x1p z0HVAE@EXmj4)AoMK8^cyT2N1wY>MguzAF3@145nnQ7%q2?$c>Og*t;!XYhB1U!lO; zo%EufI73{}U<@JAGR&ZgU7J(CYgET)n4KDT#!{x8BDt?qW2WJ_vDi6; zii#I4E|H{CskE&0!NiC?o^X?H&S^_#_wlFRq&t%G=Y6(q&d!smenTH0R+qQimYXyz zJ?kkOnoc772MkNI$J^|jr8%CRgkVULEXl)a)#PMTeXK6p)G$>Sove?wG}lF28t$B$ zlBHEO^{rh8GKY^$K00;uW#K3MZv`u#=l3hua@utA?ZWBM$%4}}1*hfGB}!Siv#awy zrF+mw+g8Fjq7SR(4*A_hkG)wvPd*N$Z8Mj#oME*hoix)qGwJF(O_K}LTDgt>m6i~OjYvTc8_s0PQRXYh*rmA z!e#m0rK{Ggui3n{v1Ld5*>bg_QdzF79LO7vkuvo?%vi4{ZQJk(Mfu2jcaNiC%i6v zt0e8?>+M;cMzO4H4BsZJNvY4FCP+-eV?Hx+#|KP?{xm zmpqUc?uo_iN~=_XI(aZ{XEJndM=Zy~ZIb$x^bp^>JL$N)$8?Lf=U#Nsv4;5iPEFG_ zNs_7yz^IOI5>wA*S>@N!T2{-N>H6to2PrX*v1i!{c8Z;5XV^FF2X=w|#C~O$*q`h# z_BR-0RAL!cU?n1mVgsrXLkqTHJMKjmxKJtPXKc@Qi>OhBJtf6JP+ zN@Nd#Q=gchE`>BwOE?Urvs`-phDb!^_!Ez{8zYJeN)g%P-oBBzA)mK3M!X`*2El7= zQX=Xi0>02}*`_FJF=d9}?zoG%izx>Lx4nb7jOVDlAc(ID;qTcD`-NRX2qh>Z=&mN% zZo(EcVh8R)Cw8G5J?O_E_F^CQ6KD^?z{4JJ^B!=I;W0dpCkVdJ;d#7><9G=t2)u9N zExe8Qa1!r(Fg}e>@F_mS=lBBO;v6o{190~|0RMO`0Ou1~%e1XSBv(j+xh8_A>x)2< z5Ub+#|J@7!{(pVO0;wPZK?MGn5kPTAqN9zDzR>5C*V<9)2dMML<)#JoRA}HLeBCR@ liO&9ENb{)Ai~Dq1P~uSg&wmKewc!3g!-D(YL*LCi`~!9DG@<|i literal 0 HcmV?d00001 From 6ed5095b655ba3e8a4e02ec42e8bb65fce8cd8a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B0=8F=E4=BF=A1=E5=8F=B7?= Date: Wed, 20 Sep 2023 17:43:12 +0800 Subject: [PATCH 12/41] Update README.md --- 09_remote_ipython/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/09_remote_ipython/README.md b/09_remote_ipython/README.md index a5a07fe..19a1543 100644 --- a/09_remote_ipython/README.md +++ b/09_remote_ipython/README.md @@ -26,7 +26,7 @@ done! 1. 打开ipython ```python -from IPython.lib import passwd +from IPython.lib import passwd #from notebook.auth import passwd In [2] : passwd() # 输入密码 Enter password: Verify password: From acb93f66b11fbd75eb1cf840f3a106f0d5c9a68b Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Fri, 3 Nov 2023 15:16:28 +0800 Subject: [PATCH 13/41] update docker readme --- 10_docker/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/10_docker/README.md b/10_docker/README.md index 818f049..f950c0e 100644 --- a/10_docker/README.md +++ b/10_docker/README.md @@ -15,7 +15,8 @@ 1.4 配置docker代理
- windows中右击图标,选settings->Proxies - - [mac/linux](https://www.cnblogs.com/EasonJim/p/9988154.html) + - [mac](https://www.cnblogs.com/EasonJim/p/9988154.html) + - [linux](https://blog.csdn.net/qq_30034989/article/details/132021346) ```shell # 如果使用HTTP代理服务器时,将为docker服务创建systemd插件目录 From a8f695b5ebc444986fbcbf1ed35adff2d8b0643d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B0=8F=E4=BF=A1=E5=8F=B7?= Date: Thu, 18 Jan 2024 14:26:48 +0800 Subject: [PATCH 14/41] Update README.md --- 10_docker/README.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/10_docker/README.md b/10_docker/README.md index f950c0e..6f269c7 100644 --- a/10_docker/README.md +++ b/10_docker/README.md @@ -147,11 +147,21 @@ docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) ``` -2.12 docker修改完镜像生成新的镜像以后貌似没看法删除旧的镜像 +2.12 虚悬镜像 + +上面的镜像列表中,还可以看到一个特殊的镜像,这个镜像既没有仓库名,也没有标签,均为
+```shell + 00285df0df87 5 days ago 342 MB +```
+这个镜像原本是有镜像名和标签的,原来为 mongo:3.2,随着官方镜像维护,发布了新版本后,重新 docker pull mongo:3.2 时,mongo:3.2 这个镜像名被转移到了新下载的镜像身上,而旧的镜像上的这个名称则被取消,从而成为了 。除了 docker pull 可能导致这种情况,docker build 也同样可以导致这种现象。由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为 的镜像。这类无标签镜像也被称为 虚悬镜像(dangling image) ,可以用下面的命令专门显示这类镜像:
+```shell +$ docker image ls -f dangling=true +REPOSITORY TAG IMAGE ID CREATED SIZE + 00285df0df87 5 days ago 342 MB +```
+一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。
```shell -pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy -pandas sklearn jieba gensim tqdm flask requests PyMySQL redis pyahocorasick -pymongo pyspark py2neo neo4j-driver==$PYTHON_DRIVER_VERSION +$ docker image prune ``` 2.13 拷贝宿主机本地文件到docker中,和从docker中拷贝到宿主机 From ea39fbcb33e41cf7f861a863ee99757f813c6a1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B0=8F=E4=BF=A1=E5=8F=B7?= Date: Thu, 18 Jan 2024 14:29:25 +0800 Subject: [PATCH 15/41] Update README.md --- 10_docker/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/10_docker/README.md b/10_docker/README.md index 6f269c7..b823beb 100644 --- a/10_docker/README.md +++ b/10_docker/README.md @@ -1,4 +1,4 @@ -# simple use for docker +# [docker入门实践](https://yeasy.gitbook.io/docker_practice/) ## 1. docker安装及配置Docker镜像站 From 5f60c255f650a565718f00530cf348961bf7f0c3 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Thu, 25 Jan 2024 15:46:54 +0800 Subject: [PATCH 16/41] update slots --- .DS_Store | Bin 20484 -> 18436 bytes 01_basic/README.md | 76 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/.DS_Store b/.DS_Store index ceb39ab38df1d46c547abb913760fa8cbdf09b59..f4a31c61398335c73a5cce9a1f57ca38a87b2ecb 100644 GIT binary patch delta 298 zcmZo!z}PZ@QHFtmfzhcn#gKu)0m$S4Vh}CB!@$78wNd6Z^JD`bmdV@>@{`pJ#5bRF z+Q76~-dLCsD9ykK#6ZBoy|GZ7WwScZ6JbWd%{&UnnUr=W735?VmlzmaV`O4xVP#|I zVCUfGhz-ujFApwBEGaE^np~jZ?aRr*880ANU2SM$p`&1EXi%%8P;F>vXsn}PVPI5S z%gG_CtZy9@pPiGNm){Msj1g)n122RRCwnIMsflggth|JCa-){)W?hGcOzaRzF`$6d x<`9Db-p%$7{Y>Hv3~Uey2W}wk3iIn`84nv4khd6^Ai>}5D;*1Zx-Yb zW7(|6^Hi8oU^9=xai+;D4O)c_4RjPtjcaujstpY+Ep!wtjm;-J8k$aSR1@C3Sa}KO zWG)S#&5LC-m>9(;7ivjO)?yK#Y-=FCSkHj@Ft6US~ zWCItL$=odRn-g`HFl}~Z*}$|pz_g7?0_X@fuu~X3xPi1Q%%z)U9Bf!7`}1(H0G-M) OImKn> 点击展开 @@ -1426,4 +1430,76 @@ for i in ['13730973320','13802198853','17619520726']: print(enc(i,'md5')) ``` +### 查看内存 + +有几种方法可以在Python中获取对象的大小。可以使用sys.getsizeof()来获取对象的确切大小,使用objgraph.show_refs()来可视化对象的结构,或者使用psutil.Process().memory_info()。RSS获取当前分配的所有内存。 + +```python +>>> import numpy as np + >>> import sys + >>> import objgraph + >>> import psutil + >>> import pandas as pd + + >>> ob = np.ones((1024, 1024, 1024, 3), dtype=np.uint8) + + ### Check object 'ob' size + >>> sys.getsizeof(ob) / (1024 * 1024) + 3072.0001373291016 + + ### Check current memory usage of whole process (include ob and installed packages, ...) + >>> psutil.Process().memory_info().rss / (1024 * 1024) + 3234.19140625 + + ### Check structure of 'ob' (Useful for class object) + >>> objgraph.show_refs([ob], filename='sample-graph.png') + + ### Check memory for pandas.DataFrame + >>> from sklearn.datasets import load_boston + >>> data = load_boston() + >>> data = pd.DataFrame(data['data']) + >>> print(data.info(verbose=False, memory_usage='deep')) + + RangeIndex: 506 entries, 0 to 505 + Columns: 13 entries, 0 to 12 + dtypes: float64(13) + memory usage: 51.5 KB + + ### Check memory for pandas.Series + >>> data[0].memory_usage(deep=True) # deep=True to include all the memory used by underlying parts that construct the pd.Series + 4176 +``` + +### slots用法 + +```python +#不使用__slots__时,可以很容易地添加一个额外的job属性 +class Author: + def __init__(self, name, age): + self.name = name + self.age = age + + + me = Author('Yang Zhou', 30) + me.job = 'Software Engineer' + print(me.job) + # Software Engineer + +# 在大多数情况下,我们不需要在运行时更改实例的变量或方法,并且__dict__不会(也不应该)在类定义后更改。所以Python为此提供了一个属性:__slots__ +class Author: + __slots__ = ('name', 'age') + + def __init__(self, name, age): + self.name = name + self.age = age + + + me = Author('Yang Zhou', 30) + me.job = 'Software Engineer' + print(me.job) + # AttributeError: 'Author' object has no attribute 'job' +``` + + + \ No newline at end of file From 7e5ae0e30952e49f4ea4f9deaab29565b6500958 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Thu, 25 Jan 2024 15:49:44 +0800 Subject: [PATCH 17/41] update slots --- 01_basic/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/01_basic/README.md b/01_basic/README.md index ef0ca9a..a54367a 100644 --- a/01_basic/README.md +++ b/01_basic/README.md @@ -1479,7 +1479,6 @@ class Author: self.name = name self.age = age - me = Author('Yang Zhou', 30) me.job = 'Software Engineer' print(me.job) @@ -1492,8 +1491,7 @@ class Author: def __init__(self, name, age): self.name = name self.age = age - - + me = Author('Yang Zhou', 30) me.job = 'Software Engineer' print(me.job) From 8c84e4ae472729f7d4a2731cadac71c9cdff71d1 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Thu, 25 Jan 2024 15:59:59 +0800 Subject: [PATCH 18/41] =?UTF-8?q?update=20=E6=9F=A5=E7=9C=8B=E5=86=85?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 01_basic/README.md | 64 +++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/01_basic/README.md b/01_basic/README.md index a54367a..d287bce 100644 --- a/01_basic/README.md +++ b/01_basic/README.md @@ -1436,38 +1436,38 @@ for i in ['13730973320','13802198853','17619520726']: ```python >>> import numpy as np - >>> import sys - >>> import objgraph - >>> import psutil - >>> import pandas as pd - - >>> ob = np.ones((1024, 1024, 1024, 3), dtype=np.uint8) - - ### Check object 'ob' size - >>> sys.getsizeof(ob) / (1024 * 1024) - 3072.0001373291016 - - ### Check current memory usage of whole process (include ob and installed packages, ...) - >>> psutil.Process().memory_info().rss / (1024 * 1024) - 3234.19140625 - - ### Check structure of 'ob' (Useful for class object) - >>> objgraph.show_refs([ob], filename='sample-graph.png') - - ### Check memory for pandas.DataFrame - >>> from sklearn.datasets import load_boston - >>> data = load_boston() - >>> data = pd.DataFrame(data['data']) - >>> print(data.info(verbose=False, memory_usage='deep')) - - RangeIndex: 506 entries, 0 to 505 - Columns: 13 entries, 0 to 12 - dtypes: float64(13) - memory usage: 51.5 KB - - ### Check memory for pandas.Series - >>> data[0].memory_usage(deep=True) # deep=True to include all the memory used by underlying parts that construct the pd.Series - 4176 +>>> import sys +>>> import objgraph +>>> import psutil +>>> import pandas as pd + +>>> ob = np.ones((1024, 1024, 1024, 3), dtype=np.uint8) + +### Check object 'ob' size +>>> sys.getsizeof(ob) / (1024 * 1024) +3072.0001373291016 + +### Check current memory usage of whole process (include ob and installed packages, ...) +>>> psutil.Process().memory_info().rss / (1024 * 1024) +3234.19140625 + +### Check structure of 'ob' (Useful for class object) +>>> objgraph.show_refs([ob], filename='sample-graph.png') + +### Check memory for pandas.DataFrame +>>> from sklearn.datasets import load_boston +>>> data = load_boston() +>>> data = pd.DataFrame(data['data']) +>>> print(data.info(verbose=False, memory_usage='deep')) + +RangeIndex: 506 entries, 0 to 505 +Columns: 13 entries, 0 to 12 +dtypes: float64(13) +memory usage: 51.5 KB + +### Check memory for pandas.Series +>>> data[0].memory_usage(deep=True) # deep=True to include all the memory used by underlying parts that construct the pd.Series +4176 ``` ### slots用法 From 832ea8ac2f3dd2db185a799e00a1132e49eaa6fe Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Tue, 2 Apr 2024 10:27:11 +0800 Subject: [PATCH 19/41] update nginx --- 12_nginx/README.md | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/12_nginx/README.md b/12_nginx/README.md index 96a4c31..5acf588 100644 --- a/12_nginx/README.md +++ b/12_nginx/README.md @@ -1,11 +1,16 @@ ## nginx -[nginx作为http服务器-静态页面的访问](https://www.cnblogs.com/xuyang94/p/12667844.html)
-[docker nginx反向代理](https://www.cnblogs.com/dotnet261010/p/12596185.html)
-[nginx负载均衡参考1](https://www.jianshu.com/p/4c250c1cd6cd)
-[nginx负载均衡参考2](https://www.cnblogs.com/diantong/p/11208508.html)
+[**1. nginx入门使用**](#nginx入门使用) + +[**2. nginx正则使用1(2024.4.2更新)**](#nginx正则使用1) + -### nginx使用 + +--- +
+点击展开 + +### nginx入门使用 **1. 第一步用安装docker nginx** @@ -72,4 +77,20 @@ docker run --name=nginx -d -p 4030:4030 nginx def custom(): return str(3 + 2) ``` -[配置文件2](default2.conf) \ No newline at end of file +[配置文件2](default2.conf) + +
+ +### nginx正则使用1 + + + + + + + - 参考资料 + +[nginx作为http服务器-静态页面的访问](https://www.cnblogs.com/xuyang94/p/12667844.html)
+[docker nginx反向代理](https://www.cnblogs.com/dotnet261010/p/12596185.html)
+[nginx负载均衡参考1](https://www.jianshu.com/p/4c250c1cd6cd)
+[nginx负载均衡参考2](https://www.cnblogs.com/diantong/p/11208508.html)
\ No newline at end of file From d8879da9836a93ca963c0e2279d101addd8d42be Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Tue, 2 Apr 2024 10:28:15 +0800 Subject: [PATCH 20/41] update nginx --- 12_nginx/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/12_nginx/README.md b/12_nginx/README.md index 5acf588..7029c09 100644 --- a/12_nginx/README.md +++ b/12_nginx/README.md @@ -7,11 +7,12 @@ --- -
-点击展开 ### nginx入门使用 +
+点击展开 + **1. 第一步用安装docker nginx** ```shell From 112cec1607e82995570ed975e76fd4c2d2c2ae78 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Tue, 2 Apr 2024 10:52:14 +0800 Subject: [PATCH 21/41] update nginx --- 12_nginx/README.md | 11 +++++++++++ 12_nginx/default3.conf | 15 +++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 12_nginx/default3.conf diff --git a/12_nginx/README.md b/12_nginx/README.md index 7029c09..3af9489 100644 --- a/12_nginx/README.md +++ b/12_nginx/README.md @@ -84,7 +84,18 @@ def custom(): ### nginx正则使用1 +```shell +cd /etc/nginx/conf.d +#修改后重启 +systemctl restart nginx +nginx -s reload +``` +[配置文件3](default3.conf) +说明:本次使用正则的目的是当我访问
+http://10.28.xx.xx:8000/aimanager_gpu/recsys/时,
+正则匹配后转到http://localhost:10086,后面不加/aimanager_gpu/recsys路由
+(如果不走正则那么转到http://localhost:10086后会自动拼接/aimanager_gpu/recsys)
diff --git a/12_nginx/default3.conf b/12_nginx/default3.conf new file mode 100644 index 0000000..2253947 --- /dev/null +++ b/12_nginx/default3.conf @@ -0,0 +1,15 @@ +upstream recsys { + server localhost:10086; + } + +server { + server_name localhost; + listen 8000; + location ~* /aimanager_gpu/recsys/ { + if ($request_uri ~ /aimanager_gpu/recsys/(.+)) + { + set $rightUrl $1; + } + proxy_pass http://recsys/$rightUrl; + } +} \ No newline at end of file From 8b8869b97fe4e81e12055c60b8203f74e6fb4237 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Tue, 2 Apr 2024 10:53:34 +0800 Subject: [PATCH 22/41] update nginx --- 12_nginx/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/12_nginx/README.md b/12_nginx/README.md index 3af9489..6acbd3d 100644 --- a/12_nginx/README.md +++ b/12_nginx/README.md @@ -92,10 +92,10 @@ nginx -s reload ``` [配置文件3](default3.conf) -说明:本次使用正则的目的是当我访问
-http://10.28.xx.xx:8000/aimanager_gpu/recsys/时,
-正则匹配后转到http://localhost:10086,后面不加/aimanager_gpu/recsys路由
-(如果不走正则那么转到http://localhost:10086后会自动拼接/aimanager_gpu/recsys)
+说明:本次使用正则的目的是当我访问 +http://10.28.xx.xx:8000/aimanager_gpu/recsys/时, +正则匹配后转到http://localhost:10086,后面不加/aimanager_gpu/recsys路由 +(如果不走正则那么转到http://localhost:10086后会自动拼接/aimanager_gpu/recsys) From a4efe338bb85b6afa006c1af0a240fbd2bd85f04 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Tue, 2 Apr 2024 10:57:54 +0800 Subject: [PATCH 23/41] update nginx --- 12_nginx/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/12_nginx/README.md b/12_nginx/README.md index 6acbd3d..15f65bc 100644 --- a/12_nginx/README.md +++ b/12_nginx/README.md @@ -95,7 +95,7 @@ nginx -s reload 说明:本次使用正则的目的是当我访问 http://10.28.xx.xx:8000/aimanager_gpu/recsys/时, 正则匹配后转到http://localhost:10086,后面不加/aimanager_gpu/recsys路由 -(如果不走正则那么转到http://localhost:10086后会自动拼接/aimanager_gpu/recsys) +(如果不走正则那么proxy_pass转到http://localhost:10086后会自动拼接/aimanager_gpu/recsys) From 0097aba16ecfda12517b5076bfe6e72e69c71026 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Thu, 18 Apr 2024 11:11:43 +0800 Subject: [PATCH 24/41] =?UTF-8?q?add=20newapi=20docker=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 18436 -> 0 bytes 10_docker/.DS_Store | Bin 8196 -> 0 bytes 10_docker/newapi_docker_demo/README.md | 94 +++++++++++++++++++++++++ 3 files changed, 94 insertions(+) delete mode 100644 .DS_Store delete mode 100644 10_docker/.DS_Store create mode 100644 10_docker/newapi_docker_demo/README.md diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index f4a31c61398335c73a5cce9a1f57ca38a87b2ecb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18436 zcmeHPdvF^^8Q;%wk~`}XpYxPe$5!mdP8&CoWLdW2CXpX$k~$?1JB{Xt%NhJ;6&GB9lene@R-%Rq-I6s9d{fj{8e-8=a# z-Pvwv5@U3pyFKlGd(y7H)$jX$-?t`&KvQqTO-O(cBH&3&St2CAfDk8^E0Cu_268hno@O8qKMXx_?GhVtcUPz<7FAO&*GrH$DSz^mse)Kw zlctreUbFf}sj?#)PQ=@y`;|_)P~DyAUxP2#CzZaa(!V*Ji1l{I)lRu69E^o~W5JZt z7>iM1tSeN*$wVx+KA}ca(L{VpM@re7(jPResbi~}NT!oIPAYhfw5#};H^qV>CDy(t8jo!5WL+!s}&p_n31ErM!MVAAu;%gSUyJ}vN< zl~rYu4Dz5Lverda*qW!cEpcJnBsr+Hd26LId9obQ9^_vtNpildioECY71%mOZq-_w zTdsv1%1#Dd*Kj#96kY` zggfDL@Ok(m+y!^TgYXc14ZaS?;5+abd=I`4kHZQ0F`R@`@Kg91{0h#&EBrI&Q81#% zT3+Z^c(r@q{sXriy!}321G-$HE}@n8V_AU9pa#`Ch!B>VBAO20x-U4T8<^sdKlv8OY5*ZU*QK z(BB8ARtB_kfS2s2125EkpmNlNUzz~_ z%Yar6@RD~Yz`GOB-WfCx1=zb|KPM9>5a4C*nwx>#3}ny1EUcQ0CXZ&x8}0pLccyw? zzxPyQrbHy|5tvK#?9Q@<4DZm_mW;;|@m=^-x|FFkRm;q+I8o8$3ZcQJg!)y@pCHfa zR?<1$pAZU!f@uXi+R%MyO9fNCYEv+|jlNnROzjS7_w8t`rSF5Go6+R&lxH<3;;CRX zt|VFKXhcDg?VHgMPxLn>dgBq5J*SN~2!bexowDP=0gv0~s&;xjwFj%62i$H?ZMC!B ze@3Bp0GDRou}Vir(5AP3;rp z3V}bXwAd-4e>BWNV=cv{#a9c0(O2Ugs*0}>(P?6i8?ULB7K`X8G5?KsbxSn@dQ#l4 z<5fPXUO@Lr_wRURgS1SbzFXRDgDmC|dAiZK3{SV~{3QJ_VnF!|(-o0KN=gMKA0T=6gK>Pr}dP*Ki(Qf|ubH_yfEJ@4&lE z^-0>PZgpXu=Lq0jiq+PQm+@G)a|8E>aTZKJAM9|EF`^`|87_! zDdll22W*0-*0Q4_s+}XMDQ$SgNX#_8%OGY!>C9P@WPr>}G}Td-p=c4DMlx`QT!c_+ zzltJg8crE(%`3G_!(f!rjuf!VOYL?ekRky|t1GMQ5`$63LDHH<)sn1iC?mUdC?@Xoz|QdCjjNo<5Ac=A-Z)<~`6SFeXL@z-4Esk^>0tqd7o|1b?T zD&^Riczs1=t`yGDGhmT zheqKs_y&9nz75BbkROB}z*DHoPcuUPML3(Gyjg_&NI&2f$ZDzV7U*gzZ-TIvvKc7L zhc%I|ML3vzvKXUyQIax-IRxTDlcEzHa%xCKN!VaWoVn75L@_laT)t|jyVl1n2@g8x z^)6SIB{7zWPu58FX`uW>R%3=nOvh=Wb{7p4(TUoF_bT4S>6GaYq6$-hg7w(gL-vs{ z*^MGe(ml@R)a|F-Moo=}&S_m8&Z)P?cTsa{I@*k>E5aG^)U9qHLW9Ob&cRX>Je)$GgXc~W=z8=9llc9|=^3kcF32wONEz23M^T_|I z;cBArqvw$1Ojd3#V)DqiG+A*;PH>aeL~S!L%_5D;0950_cB-XN<#937$?dK~5Ucao zT@=n+jMs#Nv67sK42(3}$iNI`cX1C>U%Wh}swnR$GB7NdVamYR%Z4*Bf;=cPs-@gs zX3D_W7jgzhkb_)sk#rqrV5rZ@y1FEf#=wYjgcCQlQeB#X5#?51xm3D-h=D<$w3=71 zus3EhFw`sNqbR!s49sg91M_zi2BtELfmw%f4bH#>F|NTG7@lE98JJIFOoKBp52hKI zr!Sg;vDWGw|1zdbNU1apW|`|m<6o%W>HJGc1;+2>(>niBvd|{tdf>2Fve3Z4l(^j3 z64dz@sn#c;s_XoVv=oyZWmV^2q!j^dZPob~sb!^zfySek49sdY{-rU^ztBJ&=U*so zXyjk^r}-DExSW5vC(XZnGtIv|@qzgl?t#p~!a|9Syow?B*FxHaRk4uFfJ_1XIuH7F zamGQ!$zB6kj)#avZ4E{#YQ1$M`ov?2SY!><1SPX%jAYn*fkW?k8oGEC%#LQEsc znS4!I&&v3MX!t2BBi8UGjR%Xy?f2H9EAC~?h2Q5vi^i9op)nRV$aJ(uZ`@SC^JoaVKtB*h(E1sT+<` zhgs@|t;&&+x?!ufWu$I6+_ucr4TsN`ox0&@u$iT9I06py)D0X(OR2+Qh&EZKZlw8o zErr8Hn#hgh7Dja)CU>(G`aujiog~j8XMdjjp1g&;{oCXn@;(3*fP@M4(_t?1_YSxU z4IVd!oNAE6UyUIrnpVGorPS|020yHE_dOVLx&sE_W0+EZn5EL+gS`F2$ksoKiS*w^ zgXb6UJiGwN)x)dsM|gA0DI8fp1*3WHHop6#wephZv|p@F4~sQj!d)M>|7zEVZG>GP zwqd(IY{Peb*lfdgePF9`*9W$eB3zr6yFSv&%VMQgs{1T?0dtSu!n~t@V|=s#^N!|X z#!)3ygAb#lJlM37#YbtdsU3D`!6vG(aSS%~uwc_c3^v`t;-p8=*!e6AHr>xMkZ7>! z5vIO_n1S>|7Hm4fGLgm-Y%={ZHe##6z_E}W!q?GcO)%Eo1BgFpSZNsfKD3BsI2x3sl1;m~Npi`hZ<+Bxy; z!jm3UZh)7p3tqJCct)*rNOMSY{(sK@PyhD^ N@v{Bbhw9l&VguW>)fQ4*+N!Ozp}M6%fR^2zfsUP>sXMdV zLMTmM{jwJFSBi;(^ck~RnvF7@W!dm$ z(!oLyfgl1w1cC?z5eOo1BSe7iY~G{=?tQ@x#vlSg1a8U*@b5#EI;U};P7CUNI%x1p z0HVAE@EXmj4)AoMK8^cyT2N1wY>MguzAF3@145nnQ7%q2?$c>Og*t;!XYhB1U!lO; zo%EufI73{}U<@JAGR&ZgU7J(CYgET)n4KDT#!{x8BDt?qW2WJ_vDi6; zii#I4E|H{CskE&0!NiC?o^X?H&S^_#_wlFRq&t%G=Y6(q&d!smenTH0R+qQimYXyz zJ?kkOnoc772MkNI$J^|jr8%CRgkVULEXl)a)#PMTeXK6p)G$>Sove?wG}lF28t$B$ zlBHEO^{rh8GKY^$K00;uW#K3MZv`u#=l3hua@utA?ZWBM$%4}}1*hfGB}!Siv#awy zrF+mw+g8Fjq7SR(4*A_hkG)wvPd*N$Z8Mj#oME*hoix)qGwJF(O_K}LTDgt>m6i~OjYvTc8_s0PQRXYh*rmA z!e#m0rK{Ggui3n{v1Ld5*>bg_QdzF79LO7vkuvo?%vi4{ZQJk(Mfu2jcaNiC%i6v zt0e8?>+M;cMzO4H4BsZJNvY4FCP+-eV?Hx+#|KP?{xm zmpqUc?uo_iN~=_XI(aZ{XEJndM=Zy~ZIb$x^bp^>JL$N)$8?Lf=U#Nsv4;5iPEFG_ zNs_7yz^IOI5>wA*S>@N!T2{-N>H6to2PrX*v1i!{c8Z;5XV^FF2X=w|#C~O$*q`h# z_BR-0RAL!cU?n1mVgsrXLkqTHJMKjmxKJtPXKc@Qi>OhBJtf6JP+ zN@Nd#Q=gchE`>BwOE?Urvs`-phDb!^_!Ez{8zYJeN)g%P-oBBzA)mK3M!X`*2El7= zQX=Xi0>02}*`_FJF=d9}?zoG%izx>Lx4nb7jOVDlAc(ID;qTcD`-NRX2qh>Z=&mN% zZo(EcVh8R)Cw8G5J?O_E_F^CQ6KD^?z{4JJ^B!=I;W0dpCkVdJ;d#7><9G=t2)u9N zExe8Qa1!r(Fg}e>@F_mS=lBBO;v6o{190~|0RMO`0Ou1~%e1XSBv(j+xh8_A>x)2< z5Ub+#|J@7!{(pVO0;wPZK?MGn5kPTAqN9zDzR>5C*V<9)2dMML<)#JoRA}HLeBCR@ liO&9ENb{)Ai~Dq1P~uSg&wmKewc!3g!-D(YL*LCi`~!9DG@<|i diff --git a/10_docker/newapi_docker_demo/README.md b/10_docker/newapi_docker_demo/README.md new file mode 100644 index 0000000..39dcc95 --- /dev/null +++ b/10_docker/newapi_docker_demo/README.md @@ -0,0 +1,94 @@ +## Dockerfile + +```Dockerfile +FROM node:16 as builder + +WORKDIR /build +COPY web/package.json . +RUN npm install +COPY ./web . +COPY ./VERSION . +RUN DISABLE_ESLINT_PLUGIN='true' VITE_REACT_APP_VERSION=$(cat VERSION) npm run build + +FROM golang AS builder2 + +ENV GO111MODULE=on \ + CGO_ENABLED=1 \ + GOOS=linux + +WORKDIR /build +ADD go.mod go.sum ./ +RUN go mod download +COPY . . +COPY --from=builder /build/dist ./web/dist +RUN go build -ldflags "-s -w -X 'one-api/common.Version=$(cat VERSION)' -extldflags '-static'" -o one-api + +FROM alpine + +RUN apk update \ + && apk upgrade \ + && apk add --no-cache ca-certificates tzdata \ + && update-ca-certificates 2>/dev/null || true + +COPY --from=builder2 /build/one-api / +EXPOSE 3000 +WORKDIR /data +ENTRYPOINT ["/one-api"] +``` + + +## Dockerfile 解析 + +这个 Dockerfile 通过多个阶段构建一个含前端和后端组件的应用。每个阶段使用不同的基础镜像和步骤来完成特定的任务。 + +### 第一阶段:前端构建(Node.js) + +- **基础镜像**: + - `FROM node:16 as builder`:使用 Node.js 16 版本的官方镜像作为基础镜像,并标记此构建阶段为 `builder`。 +- **设置工作目录**: + - `WORKDIR /build`:将工作目录设置为 `/build`。 +- **复制文件**: + - `COPY web/package.json .`:将前端代码目录下的 `package.json` 文件复制到工作目录中。 +- **安装依赖**: + - `RUN npm install`:根据 `package.json` 安装所需依赖。 +- **复制前端代码和版本文件**: + - `COPY ./web .`:将web文件夹下所有文件复制到工作目录。 + - `COPY ./VERSION .`:将项目版本文件复制到工作目录。 +- **构建前端项目**: + - `RUN DISABLE_ESLINT_PLUGIN='true' VITE_REACT_APP_VERSION=$(cat VERSION) npm run build`:设置环境变量并执行前端构建脚本,生成生产环境用的前端文件。 + +### 第二阶段:后端构建(Go) + +- **基础镜像**: + - `FROM golang AS builder2`:使用 Go 的官方镜像作为基础,并标记此阶段为 `builder2`。 +- **环境变量**: + - 设置多个环境变量,以支持 Go 的模块系统和确保生成的是适用于 Linux 的静态链接二进制文件。 +- **设置工作目录**: + - `WORKDIR /build`:设置工作目录。 +- **添加 Go 模块文件**: + - `ADD go.mod go.sum ./`:添加 Go 模块定义文件。 +- **下载依赖**: + - `RUN go mod download`:下载 Go 依赖。 +- **复制代码和前端构建产物**: + - `COPY . .`:复制所有后端代码到工作目录。 + - `COPY --from=builder /build/dist ./web/dist`:从第一阶段中复制构建好的前端文件到后端服务目录中。 +- **编译应用**: + - `RUN go build -ldflags "-s -w -X 'one-api/common.Version=$(cat VERSION)' -extldflags '-static'" -o one-api`:使用 Go 编译命令构建应用,设置链接器选项以嵌入版本信息并优化二进制大小。 + +### 第三阶段:运行环境 + +- **基础镜像**: + - `FROM alpine`:使用轻量级的 Alpine Linux 镜像作为基础。 +- **安装证书和时区数据**: + - 运行一系列命令以安装必要的证书和时区数据,确保应用可以处理 HTTPS 连接和正确的时间。 +- **复制编译好的应用**: + - `COPY --from=builder2 /build/one-api /`:从第二阶段复制编译好的应用到根目录。 +- **端口和工作目录**: + - `EXPOSE 3000`:声明容器在运行时会监听 3000 端口。 + - `WORKDIR /data`:设置工作目录,应用可能会使用此目录来存储数据。 +- **设置入口点**: + - `ENTRYPOINT ["/one-api"]`:设置容器启动时执行的命令。 + +### 总结 + +此 Dockerfile 首先构建前端资源,然后构建后端服务,并将前端资源集成到后端服务中,最后在一个轻量级容器中运行编译好的二进制文件,实现前后端的自动化构建和部署。 From 11a6d6580efc8125174ff8b1f3a4b35a94804e60 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Fri, 24 May 2024 09:45:52 +0800 Subject: [PATCH 25/41] update vscode --- .DS_Store | Bin 0 -> 6148 bytes 08_vscode/.DS_Store | Bin 0 -> 6148 bytes 08_vscode/README.md | 76 ++++++++++++++++++ {08_pycharm => 99_pycharm_archive}/.DS_Store | Bin {08_pycharm => 99_pycharm_archive}/README.md | 0 .../pic/pycharm_activ.png | Bin .../pic/pycharm_git1.png | Bin .../pic/pycharm_git2.png | Bin .../pic/pycharm_remote1.png | Bin .../pic/pycharm_remote2.png | Bin .../pic/pycharm_remote3.png | Bin .../pic/pycharm_remote4.png | Bin .../pic/pycharm_remote5.png | Bin .../.DS_Store" | Bin .../jetbrains-agent.jar" | Bin .../\346\277\200\346\264\273\347\240\201.txt" | 0 ...\346\277\200\346\264\273\347\240\2011.txt" | 0 ...\346\277\200\346\264\273\347\240\2012.txt" | 0 ...\346\277\200\346\264\273\347\240\2013.txt" | 0 ...\347\240\201\346\261\207\346\200\273.docx" | Bin 20 files changed, 76 insertions(+) create mode 100644 .DS_Store create mode 100644 08_vscode/.DS_Store create mode 100644 08_vscode/README.md rename {08_pycharm => 99_pycharm_archive}/.DS_Store (100%) rename {08_pycharm => 99_pycharm_archive}/README.md (100%) rename {08_pycharm => 99_pycharm_archive}/pic/pycharm_activ.png (100%) rename {08_pycharm => 99_pycharm_archive}/pic/pycharm_git1.png (100%) rename {08_pycharm => 99_pycharm_archive}/pic/pycharm_git2.png (100%) rename {08_pycharm => 99_pycharm_archive}/pic/pycharm_remote1.png (100%) rename {08_pycharm => 99_pycharm_archive}/pic/pycharm_remote2.png (100%) rename {08_pycharm => 99_pycharm_archive}/pic/pycharm_remote3.png (100%) rename {08_pycharm => 99_pycharm_archive}/pic/pycharm_remote4.png (100%) rename {08_pycharm => 99_pycharm_archive}/pic/pycharm_remote5.png (100%) rename "08_pycharm/\346\277\200\346\264\273\347\240\201/.DS_Store" => "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/.DS_Store" (100%) rename "08_pycharm/\346\277\200\346\264\273\347\240\201/jetbrains-agent.jar" => "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/jetbrains-agent.jar" (100%) rename "08_pycharm/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\201.txt" => "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\201.txt" (100%) rename "08_pycharm/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2011.txt" => "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2011.txt" (100%) rename "08_pycharm/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2012.txt" => "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2012.txt" (100%) rename "08_pycharm/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2013.txt" => "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2013.txt" (100%) rename "08_pycharm/\346\277\200\346\264\273\347\240\201/\351\235\236\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/Pycharm\346\226\271\345\274\217\344\270\200\346\277\200\346\264\273\347\240\201\346\261\207\346\200\273.docx" => "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\351\235\236\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/Pycharm\346\226\271\345\274\217\344\270\200\346\277\200\346\264\273\347\240\201\346\261\207\346\200\273.docx" (100%) diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..cd8207aa8514e6a2e27fe576e39f3bff0524d46f GIT binary patch literal 6148 zcmeHKUrWO<5Wmc+Eg}q2*ki!gfph*HzLYt?fE9gEsjV$qtj$;0eC%U(t&)6`}Pl>Sbv$Xg1$PWudybwCpT9E6%lluSWhL91M$2 z*uSLKnNnHwSr4Q0G#Lf8^<$L}!Zc6%Iv|Y`bh)}n^H_~KYM94`j`fYfaUD0P)yLyj zYo{Swd(BBhj@t+AhTPxTolIP3V{_~1GS5Z<*_w-vDm!5;VGt%sJXISC=wgEt|f2bDH4#Rg(hn$)7PlGo5T@(Fw$ zXLh$@u?J5gb_RC8nVp&4%m>*Y#u#_TL5r~(V@yCpww>0VnY_P8-Mck`=c<;n$35mtqV~V)y?X)J4hyO=4Ip5@kWofYxh$x`rTLMuU zv<(&-!2`l|Dxgl~=83^|I*dybXB#Xu>U74{$}o>vdG>hWYIPWwDx7g!BlW}pF)+_S zNt-o1|BvC9S@_7GPa%sKAO`*!1H9aEI}Q|O&em_`;aMx8^`N0(T!9J*=yR6 +```shell +# 第一步 创建容器 +nvidia-docker run -d --name myllm -p 8891:22 -v $PWD/llm:/workspace/llm -w /workspace/llm -it 10.xx.xx.xxx/zhoubin/llm:py311-cuda12.1.0-cudnn8-devel-ubuntu22.04 /bin/bash +注释: +[-p 8891:22]:把docker的端口号22映射到服务器的端口号8891。 +[-d]:容器后台运行,避免退出容器后容器自动关闭。 +[-v]:挂载和同步目录,服务器和docker内有一个文件夹保持同步。 +[-it]:确保docker后台交互运行。 +[10.xx.xx.xxx/zhoubin/llm:py311-cuda12.1.0-cudnn8-devel-ubuntu22.04]:镜像名。 +[/bin/bash]:docker内要运行的指令。 +``` +```shell +#第二步 在容器内安装ssh服务 +docker exec -it [容器ID] /bin/bash +# 更新apt-get +命令:apt-get update +# 安装vim +命令:apt-get install vim +# 安装openssh-server +命令:apt-get install openssh-server +# 设置root密码(docker里面的用户名和密码,我这边账号密码都是root/root) +命令:passwd +``` +```shell +# 第三步 配置/etc/ssh/sshd_config文件 +# 在文件/etc/ssh/sshd_config中添加下面的代码: +PubkeyAuthentication yes +PermitRootLogin yes + +# 第四步 重启ssh服务 +/etc/init.d/ssh restart +或 service ssh restart + +# 第五步 退出docker后,验证端口映射 +docker ps -a +docker port [容器ID] 22 +若结果输出“0.0.0.0:8891”,则说明端口映射正确。 +``` +```shell +# 第6步 本地电脑连接docker(见Termius dgx6_docker_llm) +ssh root@11.xx.xx.xxx -p 8891 ,密码是root +``` +```shell +# 使用VSCode连接远程主机上的docker container +# 打开VScode编辑器,按下快捷键“Ctrl+Shift+X”,查找安装“Remote Development”。安装完成后需要点击“reload”,然后按下快捷键“Ctrl+Shift+P”,输入“remote-ssh”,选择“open SSH Configuration file”,在文件xx/username/.ssh/config中添加如下内容: +Host llm_docker #Host随便起名字 + HostName 11.xxx.xx.x + User root + Port 8891 + +#保存后,按下快捷键"Ctrl+Shift+P",输入"remote-ssh",选择"Connect to Host...",然后点击"llm_docker",接着选择“Linux”,最后按提示输入第三步中设置的root连接密码,在左下角显示"SSH:llm_docker",说明已经成功连接docker。 +``` + +```shell +#内网环境远程如果出现连接不上,大概率是vscode-server无法下载导致,可以手动搞定 +https://update.code.visualstudio.com/commit:903b1e9d8990623e3d7da1df3d33db3e42d80eda/server-linux-x64/stable + +具体参考附录中的[VSCode连不上远程服务器] +``` + + + + + + +---- + +[vscode历史版本下载地址](https://code.visualstudio.com/updates/v1_86)
+[在VScode中添加Linux中的Docker容器中的Python解释器](https://blog.csdn.net/weixin_43268590/article/details/129244984)
+[VSCode连不上远程服务器](https://blog.csdn.net/qq_42610612/article/details/132782965)
+ diff --git a/08_pycharm/.DS_Store b/99_pycharm_archive/.DS_Store similarity index 100% rename from 08_pycharm/.DS_Store rename to 99_pycharm_archive/.DS_Store diff --git a/08_pycharm/README.md b/99_pycharm_archive/README.md similarity index 100% rename from 08_pycharm/README.md rename to 99_pycharm_archive/README.md diff --git a/08_pycharm/pic/pycharm_activ.png b/99_pycharm_archive/pic/pycharm_activ.png similarity index 100% rename from 08_pycharm/pic/pycharm_activ.png rename to 99_pycharm_archive/pic/pycharm_activ.png diff --git a/08_pycharm/pic/pycharm_git1.png b/99_pycharm_archive/pic/pycharm_git1.png similarity index 100% rename from 08_pycharm/pic/pycharm_git1.png rename to 99_pycharm_archive/pic/pycharm_git1.png diff --git a/08_pycharm/pic/pycharm_git2.png b/99_pycharm_archive/pic/pycharm_git2.png similarity index 100% rename from 08_pycharm/pic/pycharm_git2.png rename to 99_pycharm_archive/pic/pycharm_git2.png diff --git a/08_pycharm/pic/pycharm_remote1.png b/99_pycharm_archive/pic/pycharm_remote1.png similarity index 100% rename from 08_pycharm/pic/pycharm_remote1.png rename to 99_pycharm_archive/pic/pycharm_remote1.png diff --git a/08_pycharm/pic/pycharm_remote2.png b/99_pycharm_archive/pic/pycharm_remote2.png similarity index 100% rename from 08_pycharm/pic/pycharm_remote2.png rename to 99_pycharm_archive/pic/pycharm_remote2.png diff --git a/08_pycharm/pic/pycharm_remote3.png b/99_pycharm_archive/pic/pycharm_remote3.png similarity index 100% rename from 08_pycharm/pic/pycharm_remote3.png rename to 99_pycharm_archive/pic/pycharm_remote3.png diff --git a/08_pycharm/pic/pycharm_remote4.png b/99_pycharm_archive/pic/pycharm_remote4.png similarity index 100% rename from 08_pycharm/pic/pycharm_remote4.png rename to 99_pycharm_archive/pic/pycharm_remote4.png diff --git a/08_pycharm/pic/pycharm_remote5.png b/99_pycharm_archive/pic/pycharm_remote5.png similarity index 100% rename from 08_pycharm/pic/pycharm_remote5.png rename to 99_pycharm_archive/pic/pycharm_remote5.png diff --git "a/08_pycharm/\346\277\200\346\264\273\347\240\201/.DS_Store" "b/99_pycharm_archive/\346\277\200\346\264\273\347\240\201/.DS_Store" similarity index 100% rename from "08_pycharm/\346\277\200\346\264\273\347\240\201/.DS_Store" rename to "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/.DS_Store" diff --git "a/08_pycharm/\346\277\200\346\264\273\347\240\201/jetbrains-agent.jar" "b/99_pycharm_archive/\346\277\200\346\264\273\347\240\201/jetbrains-agent.jar" similarity index 100% rename from "08_pycharm/\346\277\200\346\264\273\347\240\201/jetbrains-agent.jar" rename to "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/jetbrains-agent.jar" diff --git "a/08_pycharm/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\201.txt" "b/99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\201.txt" similarity index 100% rename from "08_pycharm/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\201.txt" rename to "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\201.txt" diff --git "a/08_pycharm/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2011.txt" "b/99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2011.txt" similarity index 100% rename from "08_pycharm/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2011.txt" rename to "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2011.txt" diff --git "a/08_pycharm/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2012.txt" "b/99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2012.txt" similarity index 100% rename from "08_pycharm/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2012.txt" rename to "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2012.txt" diff --git "a/08_pycharm/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2013.txt" "b/99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2013.txt" similarity index 100% rename from "08_pycharm/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2013.txt" rename to "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/\346\277\200\346\264\273\347\240\2013.txt" diff --git "a/08_pycharm/\346\277\200\346\264\273\347\240\201/\351\235\236\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/Pycharm\346\226\271\345\274\217\344\270\200\346\277\200\346\264\273\347\240\201\346\261\207\346\200\273.docx" "b/99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\351\235\236\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/Pycharm\346\226\271\345\274\217\344\270\200\346\277\200\346\264\273\347\240\201\346\261\207\346\200\273.docx" similarity index 100% rename from "08_pycharm/\346\277\200\346\264\273\347\240\201/\351\235\236\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/Pycharm\346\226\271\345\274\217\344\270\200\346\277\200\346\264\273\347\240\201\346\261\207\346\200\273.docx" rename to "99_pycharm_archive/\346\277\200\346\264\273\347\240\201/\351\235\236\346\260\270\344\271\205\346\277\200\346\264\273\347\240\201/Pycharm\346\226\271\345\274\217\344\270\200\346\277\200\346\264\273\347\240\201\346\261\207\346\200\273.docx" From 3f3d074e63d09a6c280c42d08cc11b40e2422e9e Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Fri, 24 May 2024 09:47:42 +0800 Subject: [PATCH 26/41] delete ds --- .DS_Store | Bin 6148 -> 0 bytes .gitignore | 2 +- 08_vscode/.DS_Store | Bin 6148 -> 0 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 .DS_Store delete mode 100644 08_vscode/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index cd8207aa8514e6a2e27fe576e39f3bff0524d46f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKUrWO<5Wmc+Eg}q2*ki!gfph*HzLYt?fE9gEsjV$qtj$;0eC%U(t&)6`}Pl>Sbv$Xg1$PWudybwCpT9E6%lluSWhL91M$2 z*uSLKnNnHwSr4Q0G#Lf8^<$L}!Zc6%Iv|Y`bh)}n^H_~KYM94`j`fYfaUD0P)yLyj zYo{Swd(BBhj@t+AhTPxTolIP3V{_~1GS5Z<*_w-vDm!5;VGt%sJXISC=wgEt|f2bDH4#Rg(hn$)7PlGo5T@(Fw$ zXLh$@u?J5gb_RC8nVp&4%m>*Y#u#_TL5r~(V@yCpww>0VnY_P8-Mck`=c<;n$35mtqV~V)y?X)J4hyO=4Ip5@kWofYxh$x`rTLMuU zv<(&-!2`l|Dxgl~=83^|I*dybXB#Xu>U74{$}o>vdG>hWYIPWwDx7g!BlW}pF)+_S zNt-o1|BvC9S@_7GPa%sKAO`*!1H9aEI}Q|O&em_`;aMx8^`N0(T!9J*=yR6 Date: Fri, 24 May 2024 10:29:56 +0800 Subject: [PATCH 27/41] update vscode vsix --- 08_vscode/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/08_vscode/README.md b/08_vscode/README.md index 1ede547..8006363 100644 --- a/08_vscode/README.md +++ b/08_vscode/README.md @@ -71,6 +71,7 @@ https://update.code.visualstudio.com/commit:903b1e9d8990623e3d7da1df3d33db3e42d8 ---- [vscode历史版本下载地址](https://code.visualstudio.com/updates/v1_86)
+[vscode扩展应用市场vsix文件手动下载安装](https://marketplace.visualstudio.com/search?target=VSCode&category=All%20categories&sortBy=Installs)
[在VScode中添加Linux中的Docker容器中的Python解释器](https://blog.csdn.net/weixin_43268590/article/details/129244984)
[VSCode连不上远程服务器](https://blog.csdn.net/qq_42610612/article/details/132782965)
- +[无网机的vscode中怎么使用jupyter notebook](https://www.bilibili.com/read/cv34411972/?jump_opus=1)
From 3e0c6cbe0d524a11df90fc0e3f260ee3e8578a37 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Fri, 24 May 2024 11:05:54 +0800 Subject: [PATCH 28/41] update vscode --- 08_vscode/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/08_vscode/README.md b/08_vscode/README.md index 8006363..c7d9474 100644 --- a/08_vscode/README.md +++ b/08_vscode/README.md @@ -72,6 +72,7 @@ https://update.code.visualstudio.com/commit:903b1e9d8990623e3d7da1df3d33db3e42d8 [vscode历史版本下载地址](https://code.visualstudio.com/updates/v1_86)
[vscode扩展应用市场vsix文件手动下载安装](https://marketplace.visualstudio.com/search?target=VSCode&category=All%20categories&sortBy=Installs)
+[vscode扩展应用市场vsix文件手动下载历史版本插件包](https://blog.csdn.net/qq_15054345/article/details/133884626)
[在VScode中添加Linux中的Docker容器中的Python解释器](https://blog.csdn.net/weixin_43268590/article/details/129244984)
[VSCode连不上远程服务器](https://blog.csdn.net/qq_42610612/article/details/132782965)
[无网机的vscode中怎么使用jupyter notebook](https://www.bilibili.com/read/cv34411972/?jump_opus=1)
From 33412ea2ef636dc85276f9982739df33c19357c4 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Fri, 24 May 2024 12:57:27 +0800 Subject: [PATCH 29/41] update vscode --- 08_vscode/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/08_vscode/README.md b/08_vscode/README.md index c7d9474..5787f3e 100644 --- a/08_vscode/README.md +++ b/08_vscode/README.md @@ -32,7 +32,7 @@ docker exec -it [容器ID] /bin/bash PubkeyAuthentication yes PermitRootLogin yes -# 第四步 重启ssh服务 +# 第四步 重启ssh服务(好像每次停止容器后重启都需要运行下) /etc/init.d/ssh restart 或 service ssh restart From 6377901fc49baf09b4308609a089967857a9d2c7 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Mon, 27 May 2024 17:20:31 +0800 Subject: [PATCH 30/41] update vscode debugging --- 08_vscode/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/08_vscode/README.md b/08_vscode/README.md index 5787f3e..63f8f97 100644 --- a/08_vscode/README.md +++ b/08_vscode/README.md @@ -64,8 +64,9 @@ https://update.code.visualstudio.com/commit:903b1e9d8990623e3d7da1df3d33db3e42d8 ``` +## 2.Debugging - +在Visual Studio Code(VSCode)中,[Debug Console](https://code.visualstudio.com/Docs/editor/debugging)是一个用于查看程序调试信息的窗口。它通常用于查看程序在调试过程中输出的日志信息、变量的值等。Debug Console提供了一个方便的方式来查看和分析程序的执行过程,帮助开发人员定位和解决代码中的问题。 ---- From acf3b72c26cd962a58540e5f5a9efce0da341824 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Mon, 27 May 2024 17:21:40 +0800 Subject: [PATCH 31/41] update vscode debugging --- 08_vscode/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/08_vscode/README.md b/08_vscode/README.md index 63f8f97..5856921 100644 --- a/08_vscode/README.md +++ b/08_vscode/README.md @@ -1,6 +1,6 @@ # vscode使用(版本1.86.2) -## 1.在VScode中添加远程Linux服务器中Docker容器中的Python解释器 +## 1. 在VScode中添加远程Linux服务器中Docker容器中的Python解释器 **以dgx.6机器为例**
```shell @@ -64,7 +64,7 @@ https://update.code.visualstudio.com/commit:903b1e9d8990623e3d7da1df3d33db3e42d8 ``` -## 2.Debugging +## 2. Debugging 在Visual Studio Code(VSCode)中,[Debug Console](https://code.visualstudio.com/Docs/editor/debugging)是一个用于查看程序调试信息的窗口。它通常用于查看程序在调试过程中输出的日志信息、变量的值等。Debug Console提供了一个方便的方式来查看和分析程序的执行过程,帮助开发人员定位和解决代码中的问题。 From 45d93dfa0cd477b888e725b6d653e01504e03603 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Mon, 27 May 2024 17:37:13 +0800 Subject: [PATCH 32/41] update vscode debugging --- 08_vscode/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/08_vscode/README.md b/08_vscode/README.md index 5856921..16cecbd 100644 --- a/08_vscode/README.md +++ b/08_vscode/README.md @@ -64,7 +64,7 @@ https://update.code.visualstudio.com/commit:903b1e9d8990623e3d7da1df3d33db3e42d8 ``` -## 2. Debugging +## 2. Debugging(自带,不需要额外安装插件) 在Visual Studio Code(VSCode)中,[Debug Console](https://code.visualstudio.com/Docs/editor/debugging)是一个用于查看程序调试信息的窗口。它通常用于查看程序在调试过程中输出的日志信息、变量的值等。Debug Console提供了一个方便的方式来查看和分析程序的执行过程,帮助开发人员定位和解决代码中的问题。 From beab51d6c61440cbcaa332abb7cf5407ca77be00 Mon Sep 17 00:00:00 2001 From: binzhouchn Date: Mon, 12 Aug 2024 15:57:28 +0800 Subject: [PATCH 33/41] update mysql --- 01_basic/arg_test.py | 1 + 03_pandas/README.md | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/01_basic/arg_test.py b/01_basic/arg_test.py index 0e65c6b..85f8a82 100644 --- a/01_basic/arg_test.py +++ b/01_basic/arg_test.py @@ -28,3 +28,4 @@ print(opt.dev_path) print('done.') + diff --git a/03_pandas/README.md b/03_pandas/README.md index 28ec9e1..f1c7f58 100644 --- a/03_pandas/README.md +++ b/03_pandas/README.md @@ -52,6 +52,8 @@ [**24. 2个pandas EDA插件**](#eda插件) +[**25. python批量插入mysql数据库**](#python批量插入mysql数据库) + --- ### 数据平行处理 @@ -398,4 +400,32 @@ pandas_profiling.ProfileReport(df) import sweetviz as sv report = sv.analyze(df) report.show_html() +``` + +### python批量插入mysql数据库 + +```python +df.to_numpy()[:5].tolist() +''' +[['25_B', 25, 'B', 0.6, '2024-08-12'], + ['23_C', 23, 'C', 2.2, '2024-08-12'], + ['24_D', 24, 'D', 3.8, '2024-08-12'], + ['29_E', 29, 'E', 1.5, '2024-08-12'], + ['22_F', 22, 'F', 4.1, '2024-08-12']] +''' + +import pymysql +MYSQL_W_CONFIG = {'host':'10.xx.xxx.xx', + 'port':3306, + 'user':'user', + 'password':'passwd', + 'database':'mydatabase', + 'charset':'utf8'} +conn = pymysql.connect(autocommit=True, **MYSQL_W_CONFIG) +cursor = conn.cursor() +sql = "insert into xx_table(id,cust_id,agcode,score,s_time) values(%s,%s,%s,%s,%s)" +cursor.executemany(sql, df_final.to_numpy().tolist()) +conn.commit() +conn.close() +#1w条数据批量插入大概0.45s左右 ``` \ No newline at end of file From 63ae7ad524f15b174f2e611160b5ca0b10498a7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E5=BD=AC?= Date: Tue, 15 Apr 2025 15:41:03 +0800 Subject: [PATCH 34/41] update readme --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ba458d9..561cd7a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Analytics](https://ga-beacon.appspot.com/GA-80121379-2/notes-python)](https://github.com/binzhouchn/feature_engineering) # python笔记 -> 版本:0.4
+> 版本:0.5
> 作者:binzhou
> 邮件:binzhouchn@gmail.com
@@ -14,9 +14,9 @@ ## 简介 -默认安装了 `Python 3.9`,以及相关的第三方包 `gensim`, `tqdm`, `flask` +默认安装了 `Python 3.10`,以及相关的第三方包 `gensim`, `tqdm`, `flask` -anaconda 虚拟环境创建python版本降级命令:conda create -n tableqa python=3.8 +anaconda 虚拟环境创建python版本降级命令:conda create -n tableqa python=3.9 > life is short.use python. @@ -65,18 +65,18 @@ trusted-host = mirrors.aliyun.com ```
-## 使用conda升级到python3.8 +## 使用conda升级到python3.12 方法一
https://qa.1r1g.com/sf/ask/4099772281/)
```shell conda update -n base -c defaults conda -conda install -c anaconda python=3.8 +conda install -c anaconda python=3.12 #然后再重新安装下依赖包 ``` 方法二(或使用虚拟环境)
``` -$ conda create -p /your_path/env_name python=3.8 +$ conda create -p /your_path/env_name python=3.12 # 激活环境 $ source activate /your_path/env_name # 关闭环境 From 3d50672908b28f0000a6f0b3b37da3f033948477 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E5=BD=AC?= Date: Tue, 15 Apr 2025 15:46:04 +0800 Subject: [PATCH 35/41] update database --- 07_database/README.md | 2 ++ {16_databases => 07_database}/redis_pic.png | Bin 16_databases/README.md | 7 ------- 3 files changed, 2 insertions(+), 7 deletions(-) rename {16_databases => 07_database}/redis_pic.png (100%) delete mode 100644 16_databases/README.md diff --git a/07_database/README.md b/07_database/README.md index 11f962f..31a1c67 100644 --- a/07_database/README.md +++ b/07_database/README.md @@ -32,6 +32,8 @@ db.commit() ``` ## 2. Redis(docker version) + +![redis](redis_pic.png) ``` # 启动redis命令 docker run --name docker-redis-test -p 6379:6379 -d redis:latest --requirepass "123456" diff --git a/16_databases/redis_pic.png b/07_database/redis_pic.png similarity index 100% rename from 16_databases/redis_pic.png rename to 07_database/redis_pic.png diff --git a/16_databases/README.md b/16_databases/README.md deleted file mode 100644 index b00cd2d..0000000 --- a/16_databases/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 各种存储数据库笔记 - -## redis - -![redis](redis_pic.png) - -## \ No newline at end of file From 0c9520fb840e0356c45dc609b133aeb7b80a78b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E5=BD=AC?= Date: Tue, 15 Apr 2025 15:47:24 +0800 Subject: [PATCH 36/41] update database --- 07_database/README.md | 2 +- 07_database/{ => imgs}/redis_pic.png | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename 07_database/{ => imgs}/redis_pic.png (100%) diff --git a/07_database/README.md b/07_database/README.md index 31a1c67..124cdb9 100644 --- a/07_database/README.md +++ b/07_database/README.md @@ -33,7 +33,7 @@ db.commit() ## 2. Redis(docker version) -![redis](redis_pic.png) +![redis](imgs/redis_pic.png) ``` # 启动redis命令 docker run --name docker-redis-test -p 6379:6379 -d redis:latest --requirepass "123456" diff --git a/07_database/redis_pic.png b/07_database/imgs/redis_pic.png similarity index 100% rename from 07_database/redis_pic.png rename to 07_database/imgs/redis_pic.png From 12df1fec9d74e2ab3bff405e1c5c28f386c65484 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E5=BD=AC?= Date: Tue, 15 Apr 2025 16:12:04 +0800 Subject: [PATCH 37/41] add debugpy --- 01_basic/README.md | 73 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/01_basic/README.md b/01_basic/README.md index d287bce..97b2a1a 100644 --- a/01_basic/README.md +++ b/01_basic/README.md @@ -86,19 +86,21 @@ [**43. joblib Parallel并行**](#joblib_parallel) -[**44. 调试神器 - 丢弃print**](#调试神器) +[**44. 调试神器pysnooper - 丢弃print**](#调试神器pysnooper) -[**45. 分组计算均值并填充**](#分组计算均值并填充) +[**45. 调试神器debugpy**](#调试神器debugpy) -[**46. python日期处理**](#python日期处理) +[**46. 分组计算均值并填充**](#分组计算均值并填充) -[**47. dataclass**](#dataclass) +[**47. python日期处理**](#python日期处理) -[**48. md5 sha256**](#md5_sha256) +[**48. dataclass**](#dataclass) -[**49. 查看内存**](#查看内存) +[**49. md5 sha256**](#md5_sha256) -[**50. __slots__用法**](#slots用法) +[**50. 查看内存**](#查看内存) + +[**51. __slots__用法**](#slots用法) ---
@@ -1325,7 +1327,7 @@ for i in range(10,7000): res = Parallel(n_jobs = -1, verbose = 1)(delayed(ff)(i) for i in range(10,7000)) ``` -### 调试神器 +### 调试神器pysnooper ```python #pip install pysnooper @@ -1343,6 +1345,61 @@ if os.environ['pysnooper'] == '0': return wrapper ``` +### 调试神器debugpy + +安装:pip install debugpy -U
+在python代码里面(最前面加上这句话)
+```python +import debugpy +try: + # 5678 is the default attach port in the VS Code debug configurations. Unless a host and port are specified, host defaults to 127.0.0.1 + debugpy.listen(("localhost", 9501)) + print("Waiting for debugger attach") + debugpy.wait_for_client() +except Exception as e: + pass + +``` + +在vscode软件中项目下新建一个.vscode目录,然后创建launch.json,看9501端口那个配置
+```python +{ + // 使用 IntelliSense 了解相关属性。 + // 悬停以查看现有属性的描述。 + // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "torchr_ex2", + "type": "python", + "request": "launch", + "program": "/Users/zb/anaconda3/envs/rag/bin/torchrun", + "console": "integratedTerminal", + "justMyCode": true, + "args": [ + "--nnodes", + "1", + "--nproc-per-node", + "2", + "${file}", + "--model_name_or_path", + "my_model_bz" + ] + }, + { + "name": "sh_file_debug", + "type": "debugpy", + "request": "attach", + "connect": { + "host": "localhost", + "port": 9501 + } + }, + ] +} +``` + + ### 分组计算均值并填充 ```python From 52b87285c4147cc2bd43d69d0243a2d6357f4183 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E5=BD=AC?= Date: Tue, 15 Apr 2025 16:13:50 +0800 Subject: [PATCH 38/41] add debugpy --- 01_basic/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/01_basic/README.md b/01_basic/README.md index 97b2a1a..54419b6 100644 --- a/01_basic/README.md +++ b/01_basic/README.md @@ -1399,6 +1399,7 @@ except Exception as e: } ``` +上面的端口号都写一样比如9501,别搞错了! ### 分组计算均值并填充 From 08ef71cc15f7a01bf9dcef334d1a17ab5c7281a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B0=8F=E4=BF=A1=E5=8F=B7?= Date: Fri, 15 Aug 2025 10:47:15 +0800 Subject: [PATCH 39/41] Update README.md update https://open-vsx.org/ --- 08_vscode/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/08_vscode/README.md b/08_vscode/README.md index 16cecbd..1118417 100644 --- a/08_vscode/README.md +++ b/08_vscode/README.md @@ -73,6 +73,7 @@ https://update.code.visualstudio.com/commit:903b1e9d8990623e3d7da1df3d33db3e42d8 [vscode历史版本下载地址](https://code.visualstudio.com/updates/v1_86)
[vscode扩展应用市场vsix文件手动下载安装](https://marketplace.visualstudio.com/search?target=VSCode&category=All%20categories&sortBy=Installs)
+[vscode插件历史版本下载https://open-vsx.org](https://open-vsx.org/)
[vscode扩展应用市场vsix文件手动下载历史版本插件包](https://blog.csdn.net/qq_15054345/article/details/133884626)
[在VScode中添加Linux中的Docker容器中的Python解释器](https://blog.csdn.net/weixin_43268590/article/details/129244984)
[VSCode连不上远程服务器](https://blog.csdn.net/qq_42610612/article/details/132782965)
From aa7e31570e2ef6f59944a4c46265aab4d5de7eae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B0=8F=E4=BF=A1=E5=8F=B7?= Date: Thu, 13 Nov 2025 21:24:51 +0800 Subject: [PATCH 40/41] Update README.md --- 07_database/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/07_database/README.md b/07_database/README.md index 124cdb9..67670a6 100644 --- a/07_database/README.md +++ b/07_database/README.md @@ -5,7 +5,7 @@ # 先下载镜像 docker pull mysql:5.5 # 运行容器 可以先把-v去掉 -docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.5 +docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.5 -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。 -v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。 @@ -36,7 +36,7 @@ db.commit() ![redis](imgs/redis_pic.png) ``` # 启动redis命令 -docker run --name docker-redis-test -p 6379:6379 -d redis:latest --requirepass "123456" +docker run --name docker-redis-test -p 6379:6379 -v redis_data:/data -d redis:latest --requirepass "123456" # redis客户端连接命令 docker exec -it redis-cli # 进去以后的操作 From 16b66c80af57d29c3ab454a99a0daec14a1258c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=91=E9=80=81=E5=B0=8F=E4=BF=A1=E5=8F=B7?= Date: Thu, 13 Nov 2025 21:25:44 +0800 Subject: [PATCH 41/41] Update README.md --- 07_database/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/07_database/README.md b/07_database/README.md index 67670a6..92f8bd9 100644 --- a/07_database/README.md +++ b/07_database/README.md @@ -36,7 +36,7 @@ db.commit() ![redis](imgs/redis_pic.png) ``` # 启动redis命令 -docker run --name docker-redis-test -p 6379:6379 -v redis_data:/data -d redis:latest --requirepass "123456" +docker run --name docker-redis-test -p 6379:6379 -v $PWD/redis_data:/data -d redis:latest --requirepass "123456" # redis客户端连接命令 docker exec -it redis-cli # 进去以后的操作