学无止境。
下面是对去年11月至今年5月的零散知识点总结。
春节期间好好放松了一两个月,来校后又懒散的度过了一两个月,直到论文评审意见下来,才开启冲刺模式狂干了一两个月。总的来说,这半年来摸的时间比较多。好,不废话了,开始。

文章目录

  • python 强化
  • 继承
  • 设计模式
  • args, kwargs
  • 装饰器
  • 异步 I/O
  • viztracer
  • 注释中 noqa 含意
  • dpdispatcher 大坑
  • 获取文件大小
  • 热图
  • matplotlib
  • 控制图例的列数
  • 画出空心圆
  • python 项目管理
  • pip 安装报错
  • pip show
  • pip 项目搭建
  • release please tag版本
  • conda clone
  • pyinstaller
  • C语言
  • 编译过程
  • zlib
  • cygwin
  • gcc flag
  • -O flag
  • -m flag
  • 单引号和双引号
  • vscode
  • cmake
  • Linux
  • 权限
  • 软链接
  • ;&& || 区别
  • linux 命令格式
  • 论文撰写 & Latex
  • 英文论文查重
  • 图片增强 & 灵感来源
  • 模板
  • latex 编译报错
  • latex引用
  • 特殊符号输入
  • vscode 中 latex workshop 很实用的功能
  • 表格和图片的标题居中
  • 乱码包
  • 中文
  • 英文
  • xjtu thesis
  • J/OL
  • 化学
  • rdkit
  • 自旋和未配对电子数
  • 波函数中各个量子数
  • KS方程的误差
  • 阴阳极
  • Dalton
  • gaussian install
  • 快捷键
  • read the docs
  • sphinx
  • myst_parser
  • 文档中图片不居中的问题
  • markdown
  • note 模块
  • 分页
  • 图片居中,调整大小
  • python 强化

    继承

    https://zhuanlan.zhihu.com/p/459504171
    python 的多类继承
    省流版本:

    1. python 中一个类可以同时继承多个父类
    2. 当同一方法同时出现在两个父类中时,调用该方法按照继承时从左向右的顺序遍历。
    3. 当存在多级继承时,遍历顺序为深度优先。
    4. 如果多级继承叠加了共同的根节点,特别复杂时,使用.mro()得出遍历路径

    设计模式

    https://www.jb51.net/article/217067.htm
    python 中实现依赖倒置原则,受益匪浅


    https://blog.csdn.net/frank_haha/article/details/127949025?spm=1001.2014.3001.5501
    python视角下的6大程序设计原则


    5种方法实现设计模式中的单例模式
    http://www.coolpython.net/informal_essay/20-09/five-methods-to-achieve-singleton.html
    清晰简洁,暂存

    args, kwargs

    https://zhuanlan.zhihu.com/p/50804195
    Python中使用 *args 和 **kwargs 来隐式传递参数
    *args 以元组的形式传递参数列表,注意元组中的顺序是固定的
    **kwargs 以字典形式传递参数,键对应参数名,键值对应参数值
    *args 只能在 **kwargs 前面,按顺序 assign 值,**kwargs 按字典 assign 值

    装饰器

    https://www.runoob.com/w3cnote/python-func-decorators.html
    一篇关于 python 装饰器非常全面的报道


    http://c.biancheng.net/view/4561.html
    Python 中使用 @property 可以将一个方法变为类的属性(方法返回值即为属性值)
    值得注意的是,该属性处于只读模式,无法通过重新赋值修改。(还可以通过修改方法返回值修改,这种情况可以通过改进装饰器至 lazy_property 来实现)
    除非加上新的装饰器——setter
    此外,该属性的删除可以用 deleter 实现

    异步 I/O

    python 使用 asyncio 实现 异步 I/O,适合 I/O 密集型任务,链接:https://zhuanlan.zhihu.com/p/59621713

    viztracer

    使用 viztracer 能够轻松分析 Python 中的函数调用关系,其中 vizviewer 提供了一键式可视化服务,这对高并发任务的分析调试很有帮助,链接:https://www.bilibili.com/video/BV1d34y1C78W?p=1&vd_source=4a5ba2714e3b8655fcf531740196c200

    注释中 noqa 含意

    https://blog.csdn.net/xiaodongxiexie/article/details/80970336
    Python 注释中 noqa 的含义,no quality assurance

    dpdispatcher 大坑

    对于torque集群
    管理节点向其他节点提交任务时需要有一个pbs的命令
    #PBS -l nodes=node03:ppn=24
    中间的’node03’对应number_node关键词

    此外,在local context下,‘remote_profile’: None,不是其他

    获取文件大小

    https://www.cnblogs.com/hider/p/15261801.html
    os.path.getsize() 获取文件大小
    os.stat().st_size 也可以

    热图

    使用pandas+seaborn+matplotlib绘制相关性矩阵热图
    https://itslinuxfoss.com/how-to-create-a-correlation-matrix-using-pandas

    matplotlib

    控制图例的列数

    https://stackoverflow.com/questions/73836503/in-matplotlib-legend-how-to-define-number-of-columns-in-horizontal-legend-ncol
    随手记:
    matplotlib 在绘制图例时使用函数 legend
    在 matplotlib 3.6.0 版本以前,可以通过参数 ncols 去控制图例的栏数
    在2022年九月份更新的 3.6.0 版本以后,这个参数修改成了 ncol
    省流:新版本中ncols参数变成了ncol

    画出空心圆

    scatter , c=‘none’
    https://blog.csdn.net/cfjcyc0301/article/details/109066555

    python 项目管理

    pip 安装报错

    LookupError: setuptools-scm was unable to detect version for H:\fullnet\fullnet-main\fullnet-main.

    Make sure you’re either building from a fully intact git repository or PyPI tarballs. Most other sources (such as GitHub’s tarballs, a git checkout without the .git folder) don’t contain the necessary metadata and will not work.

    For example, if you’re using pip, instead of https://github.com/user/proj/archive/master.zip use git+https://github.com/user/proj.git#egg=proj

    一种可能的报错原因是,本来是一个github项目,没有git clone到本地,而是直接打包到了本地,再直接安装。解决方法是git clone到本地,再用 python setup.py install 安装

    pip show

    https://blog.csdn.net/sinat_29158315/article/details/81813556
    如果你的环境中同一个包安装了多次,而你又不知道正在使用的是哪一个,那么一个很简单的方法是,用 pip show package 即可查看正在使用包的位置

    pip 项目搭建

    1. setup.py 和 setup.cfg
      后者是前者的简易形式。主要内容存放在后者,前者只是个壳。
      这两个文件是在
      python setup.py install
      这样的命令下使用的
      不涉及pip
      setup.cfg 的官方教程
      https://setuptools.pypa.io/en/latest/userguide/declarative_config.html

    2. pyproject.toml
      该文件是近几年引入的更完善的包管理机制
      如果你使用pip,例如,你需要向pypi发布包,在github的自动化工作流里,按照pyproject.toml进行项目安装。或者下载完源码后,使用 pip install . 命令安装。
      这两种情况下:
      pyproject.toml override setup.cfg
      https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html
      ===============================================
      事实上,很多人在讨论,两个配置文件,功能一致,能否只保留 pyproject.toml

    我认为,为了能同时使用pip和python setup.py命令安装,我们需要整理 setup.cfg 和 pyproject.toml 两个文件。这并不矛盾。每个配置文件都有其适用的场景。

    注意:如果你使用了setuptools_scm。默认情况下,pypi 的 source distribution 是项目里的所有文件。为了能在发布时跳过一些文件,我们可以在根目录上添加MANIFEST.in,这会override setuptools_scm
    https://packaging.python.org/en/latest/guides/using-manifest-in/

    release please tag版本

    github release please 修改tag版本

    1. 事先用命令行push上一个版本号
    2. 再从本地push(可以用github desktop)上要修改的东西
      https://www.conventionalcommits.org/en/v1.0.0/#summary
      git commit 要遵循特定的格式,如上

    如果不是第一次的话,后续会自动进行版本更新

    conda clone

    使用 conda 克隆已有的仓库

    conda create -n auto10 --clone torch1.10-cu102-py38
    

    删除旧环境

    conda remove -n conda-old --all    
    

    pyinstaller

    使用 pyinstaller 能够将一个 python 项目打包成一个可执行文件
    https://blog.csdn.net/m0_48692571/article/details/107020772

    C语言

    编译过程

    https://zhuanlan.zhihu.com/p/371323950
    https://blog.csdn.net/Utotao/article/details/95755916
    c语言编译过程及工程下的.c文件.h文件.o文件.so文件.a文件
    https://blog.csdn.net/weixin_46919419/article/details/112550651
    一个 .c 文件是一个编译单元,编译器每次编译只能处理一个编译单元
    最后再把编译好的文件链接起来

    zlib

    C 程序中使用 zlib 步骤:
    下载源文件 https://zlib.net/
    解压缩
    编译
    创建 libz.a 软链接到目标库
    目标库编译
    命令行执行目标时加上输出 > xxx.gz
    输出的是 gzip 格式的压缩文件
    使用 gzip 进行解压 gzip -dv xxx.gz

    https://www.runoob.com/linux/linux-comm-gzip.html
    linux gzip命令教程,对应格式为 .gz

    cygwin

    https://blog.51cto.com/u_15244533/2845242
    使用 cygwin 能够在 win 下创建一个UNIX环境,并编译C文件

    gcc flag

    -O flag

    gcc -O3
    gcc 在编译过程中对代码进行优化,使其运行速度更快。
    gcc 深不见底,类似的功能还有 -O2(适合生产的), -Os(代码体积更小的) 等等
    https://www.linuxtopia.org/online_books/an_introduction_to_gcc/gccintro_49.html#:~:text=It%20is%20the%20default%20optimization,levels%20%2DO2%20and%20%2DO1%20.
    https://stackoverflow.com/questions/11546075/is-optimisation-level-o3-dangerous-in-g

    https://stackoverflow.com/questions/3399821/gcc-o4-optimization-flag
    -O4 optimization 应该是和 -O3 一样的,可以通过
    gcc -c -Q -O3 –help=optimizers | grep enabled
    查询

    -m flag

    gcc 使用 -march=native -mtune=native 来针对个人电脑平台对代码进行自动化优化。
    “-march=native” 告诉 gcc 本机CPU的型号
    “-mtune=native” 告诉 gcc 根据CPU型号进行代码优化
    虽然二包含了一,但最好还是二者同时出现,相关讨论可见这篇很详细的博客↓
    https://lemire.me/blog/2018/07/25/it-is-more-complicated-than-i-thought-mtune-march-in-gcc/
    官方文档↓
    https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html#:~:text=Using%20%2Dmarch%3Dnative%20enables%20all,CPU%20with%2064%2Dbit%20extensions.

    但是这个 flag 对生产有一定的风险,因为程序性能无法在不同平台上做到统一:
    https://stackoverflow.com/questions/52653025/why-is-march-native-used-so-rarely

    单引号和双引号

    https://blog.csdn.net/u013541620/article/details/43172891
    随手记:
    C语言的单引号和双引号是不同的
    单引号引起是的字符
    双引号是字符串

    vscode

    https://zhuanlan.zhihu.com/p/77074009
    https://zhuanlan.zhihu.com/p/85273055?utm_campaign=shareopn&utm_medium=social&utm_oi=64477496082432&utm_psn=1579616044616003585&utm_source=wechat_session
    使用 vs code 配置 c/c++ 环境

    cmake

    https://www.jetbrains.com/help/clion/quick-cmake-tutorial.html#new-project
    学习 cmake 的 clion 教程
    https://blog.csdn.net/weixin_42660446/article/details/119650036
    cmake 没有生成 Makefile。原因是选错了编译器。
    https://www.jianshu.com/p/07acea4e86a3
    Cmake命令之add_subdirectory介绍
    使用 add_subdirectory 可以编译子目录,子目录的 Makefile 和主目录一致。

    Linux

    权限

    https://blog.csdn.net/zhangvalue/article/details/84979635
    linux 给文件或文件夹加权限
    chmod 777 xxx
    开放所有权限
    chmod a+x xxx
    给所有人可执行权限
    https://blog.csdn.net/u012106306/article/details/80436911
    可执行文件的颜色是绿色的
    https://www.cnblogs.com/tonyauto/p/8085551.html
    chmod +x 和 chmod u+x的区别:chmod +x somefile 和 chmod a+x somefile 是一样的
    给文件所有者添加可执行权限:chmod u+x 文件名

    软链接

    https://www.cnblogs.com/sueyyyy/p/10985443.html
    linux 创建软链接
    ln -s 源文件(或原文件夹文件夹) 目标文件(或目标文件夹)

    ;&& || 区别

    https://www.cnblogs.com/lizhouwei/p/9991635.html
    Linux中分号、&&和||的区别
    分号,命令之间没有联系,顺序执行
    &&,命令1正确执行,命令2才会执行,否则命令2不会执行
    ||,命令1错误执行,命令2才执行。
    此外还有管道命令 |
    命令 1 的输出是命令 2 的输入

    linux 命令格式

    command [option] [arguments]

    论文撰写 & Latex

    英文论文查重

    crosscheck 和 turnitin
    (只要是自己写的,没必要查重)

    图片增强 & 灵感来源

    https://github.com/xinntao/Real-ESRGAN
    使用 Real-ESRGAN 可以进行图片增强等

    https://blog.csdn.net/frank_haha/article/details/127913618?spm=1001.2014.3001.5502
    高质量科研绘图工作流,博客

    https://github.com/xinntao/HandyFigure
    HandyFigure 提供了众多论文插图的PPT原件,方便个人使用

    模板

    acs 的 SI 如果使用 acs 的模板(\documentclass[manuscript=article]{achemso}),不会出现目录页
    一种解决方案是,从 模板网站 https://www.latextemplates.com/ 里挑选一个
    需要注意的是,参考文献需要设成 acs 格式。
    \bibliographystyle{achemso}
    \bibliography{ref.bib}
    但是这样没有参考文献的序号。
    解决方案是调整 natbib 包的设置
    \usepackage[numbers,super]{natbib}

    latex 编译报错

    https://blog.csdn.net/qq_38522564/article/details/128630936
    编译bibtex时报错“I couldn’t open file name `xxxx.aux’.”
    原因是,我们通常需要
    pdflatex -> bibtex -> pdflatex2
    或者,中文的情况
    xelatex -> bibtex -> xelatex
    2
    这一过程中每编译一次会删掉编译过程中的中间文件,而 .aux 文件就很可能在此时被删掉。
    解决方法就是找到设置,搜索aux,进入 Clean: File Types 选项,删掉 .aux 文件即可

    latex引用

    最好是引用相对路径
    https://blog.csdn.net/OOFFrankDura/article/details/91345321

    特殊符号输入

    大部分是加 \ 形成转义字符
    https://blog.csdn.net/m0_37149062/article/details/108240050
    latex 特殊符号输入

    vscode 中 latex workshop 很实用的功能

    在miscellaneous目录下
    open citation browser 可以打开文件关联的参考文献文件
    reveal output folder 可以打开编译输出文件所在的目录

    count words可以查询文件中有效字数 ( 并非实时的,编辑后需要保存才能查 )
    注意:
    latex workshop中查字数的功能其实也是调用的texcount
    texcount详细功能参照:https://www.ctan.org/pkg/texcount

    表格和图片的标题居中

    latex 中使用 \usepackage[justification=centering]{caption}

    乱码包

    中文

    latex 一个非常有意思的包: zhlipsum
    链接:https://ctan.org/pkg/zhlipsum
    这个包支持随机生成中文乱码,常用来测试排版效果。
    常用使用命令是 \zhlipsum[⟨段落⟩][⟨选项⟩]
    选项可以选择乱文的来源,在encoding=utf8 时,默认使用name=simp的乱文。这些乱文是提前准备好的,所以选项这个空可以不用管。
    下面就是指定乱文所在的段落。
    比如:\zhlipsum[2,5] 指原文(提前设计好的)的第 2 和 5 段
    \zhlipsum[1] 指原文第1段

    英文

    英文 latex 随机文本生成器:blindtext
    使用方法:\blindtext 生成一段随机文字,\Blindtext 生成一大段文字(其实就是将\blindtext 文字乘以 5)还支持德文、法文等,详细功能看链接:https://www.ctan.org/pkg/blindtext

    xjtu thesis

    https://github.com/obster-y/XJTU-thesis
    注意,参考文献跟Word差异特别大
    需要如下改动:

    % gbnamefmt=lowercase 将姓名除首字母外小写
    \RequirePackage[hyperref=true,backend=biber,style=gb7714-2015,gbalign=left,gbnamefmt=lowercase,gbpub=false]{biblatex}
    \renewcommand{\bibfont}{\zihao{5}}
    \setlength{\bibitemindent}{1pt}
    
    \setlength{\bibnamesep}{-0.05pt}
    \setlength{\bibinitsep}{-0.05pt} 
    \setlength{\biblabelsep}{2pt} %缩序号和条目间的距离
    \setlength{\bibparsep}{-3pt} %缩条目间的距离
    

    由于biblatex是嵌入到程序中的,有一些关键词莫名其妙丧失了功能,例如调整条目内行距的 \bibitemsep ,不起作用。
    关于biblatex的各种关键词,可以查文档,链接在:
    https://ctan.org/pkg/biblatex?lang=en

    J/OL

    参考文献中 [J/OL] 的含意:
    OL 表示电子期刊 (online?)
    如果你的 bibtex 中包含了 doi, url 等信息,编译后会在 J 后面加 OJ
    https://www.zhihu.com/question/436028611
    如果是Word手动敲参考文献,可以留意一下该参考文献是否有具体的页数,如果页数、卷目等信息残缺,可以甩一个doi,加上OL,代表虽然我不知道具体页数,但你可以通过这个链接访问到

    化学

    rdkit

    使用 rdkit.Chem.Draw 可以友好绘制分子二维图像。
    批量绘制时通过将核心稳定,可以获得整齐划一的图像。
    http://rdkit.org/docs/GettingStartedInPython.html#drawing-molecules

    自旋和未配对电子数

    https://zhuanlan.zhihu.com/p/550366136
    https://zhuanlan.zhihu.com/p/102774303
    随手记
    自旋多重度,未配对电子数,(总)自旋(磁量子数,电子自旋角动量)之间的关系
    (下述暂不考虑带电体系)

    1. 每个 alpha 电子是 正1/2,每个 beta 电子是负1/2
    2. 体系内所有电子中和以后,净自旋就是通常意义上的自旋 S
    3. 一般情况下(不考虑那么细,认为两类轨道是等能的,匹配的),净自旋就是未配对电子个数的二分之一(xtb 的 –uhf 标签)
    4. 自旋多重度(这个概念一般 gaussian 用的多)是 2S+1,不知道为什么是这个公式,但记着就行。(也可以是,未配对电子数加1)
    5. 我们常说的,单线态就是2S=0,没有孤电子的情况;双线态是2S=1,一个孤电子;以此类推,加1即可

    波函数中各个量子数

    主量子数为电子的层数,表示电子层,电子层符号K、L、M、N、O、P、Q主量子数n是决定电子能量高低的主要因素。角量子数l决定电子空间运动的角动量,以及原子轨道或电子云的形状,在多电子原子中与主量子数n共同决定电子能量高低。磁量子数m是描述原子轨道或电子云在空间的伸展方向。

    n, l, m 描述的是电子所处的轨道的特征,更多是相对原子核而言的 。对应波函数的空间部分。

    自旋量子数m_s
    原子中电子除了以极高速度在核外空间运动之外,也还有自旋运动。电子有两种不同方向的自旋,即顺时针方向和逆时针方向的自旋。通常用向上和向下的箭头来代表,即↑代表正方向自旋电子,↓代表逆方向自旋电子。
    (可以类比地球绕太阳转,同时地球也有自转)

    m_s 更多是描写电子本身的运动状态。对应波函数的自旋部分。

    二者乘一起得到完整的波函数

    KS方程的误差

    KS方程中引入了单电子近似,即,不考虑电子间任何相互作用。
    这种近似使得求解变成了可能。但引入了两种误差:

    1. 两电子交换,根据泡利不相容原理,整个体系的波函数应该加一个负号,是会改变的。但这种单电子近似+以电子密度为变量的波函数考虑不到这一点。我们称这部分误差为交换误差。Ex
    2. 两电子之间的库伦排斥力被完全忽略掉了。真实情况的电子由于相互之间的斥力,可能会保持一定的距离,但在单电子近似下甚至会出现两电子完全重合的情况。由于这种情况下体系能量较高,在平均势场的思想下,引入这部分误差会使得结果相对真实体系偏高。这部分误差被称作关联误差 Ec.

    DFT 理论中为了对冲近似带来的误差,引入了交换关联(交换+关联)算符。Exc

    值得注意的是,HF方程中也引入了单电子近似。但由于基函数 slater 行列式的交换反对称性,HF的求解中是没有交换误差的。但是HF的平均力场思想导致其完全忽视了关联误差。

    DFT以电子密度为主变量的设定导致其难以弥补交换误差,但通过设计合理算符能够很好弥补关联误差。为了综合HF和KS的优点,发展出了杂化泛函,其中最有名的当属B3LYP

    近年来发展出的scan泛函通过合理设计交换关联算符,在不涉及HF的情况下也取得了不错的精度,值得注意。
    https://zhuanlan.zhihu.com/p/382698569

    阴阳极

    电池中的阴阳极和电路中的正负极不一样。
    电池中的阴阳极这个概念是法拉第提出来的,阳极指获得电子发生还原反应的一极(anode) 阴极指失去电子发生氧化反应的一极(cathode)
    阳极获得电子对应电路中的负极,是外电路中电流流入的一极
    阴极失去电子对应电路中的正极,是外电路中电流流出的一极

    Dalton

    The dalton (symbol: Da), also known as an atomic mass unit(non-SI), is a unit of mass that is equal to one twelfth of the mass of a free carbon-12 atom at rest. Its value is approximately equal to 1.660 x 10−27 kg.

    gaussian install

    集群普通用户安装高斯:

    1. 自己账号下用 cp 命令把文件从根目录转移至自己的目录
    2. 添加环境变量
    3. 登录root账号为文件夹添加权限 sudo chmod -R 750 g16

    第三步可以尝试自己加权限(不带sudo)
    不行再上root
    注意:必须用自己的账号cp,这样文件所有者是个人的

    快捷键

    微软官方的快捷键大全:
    https://support.microsoft.com/zh-cn/microsoft-edge/microsoft-edge-%E4%B8%AD%E7%9A%84%E9%94%AE%E7%9B%98%E5%BF%AB%E6%8D%B7%E6%96%B9%E5%BC%8F-50d3edab-30d9-c7e4-21ce-37fe2713cfad

    比如 ctrl+shift+k 是复制当前标签页

    read the docs

    sphinx

    https://sphinx-rtd-trial.readthedocs.io/en/latest/markup/toctree.html
    read the docs toc 注意事项:

    1. maxdepth 必须要赋值,如果不赋值的话。当出现两个 toctree 时,会自动将二者合并。
    2. toc 的标题是由索引文件的最大标题决定的

    myst_parser

    我们可以通过 myst_parser 在 read the docs 的 CI/CD 工作流中自动转化markdown文件
    跟模板不同之处是:

    1. 需要修改 requirements.txt
    2. 需要修改 conf.py

    markdown 什么都好,在测试过程中发现不能实现 rst 格式中便利的 notes 和 warning
    https://sublime-and-sphinx-guide.readthedocs.io/en/latest/notes_warnings.html

    对此没有什么好的解决方案,只能将 markdown 转化为 rst ,再进行修改(注意,转化过程中图片的相对路径会变成绝对路径,要进行修改)

    如果对这些feature没有强烈的欲望的话,使用本文最后提到的 note 符号也可以

    文档中图片不居中的问题

    read the docs 网页渲染时,图片不居中的问题
    可能的原因:
    所使用的rst是pandoc从md格式转过去的,虽然写了一些小脚本,加上了
    :align: center 但仍然无法解决图片无法居中的问题

    read the docs 用户那么多,应该不会犯这么低级的错误。一定是我的格式有问题。
    在 问答https://stackoverflow.com/questions/4963546/how-to-center-align-the-image-with-rerestructuredtext 里,一位答主提到,
    … image:: some_pic.png
    :alt: some_pic
    :align: center
    就可以实现居中

    在仔细对比后,我发现pandoc在进行图片格式转换时,输出格式为 figure ,不是image。将figure replace成image以后,问题顺利解决。

    markdown

    note 模块


    📝 Note

    It works with almost all markdown flavours (the blank line below this line and above the top horizontal line matter).


    Note: The note content.

    https://stackoverflow.com/questions/25654845/how-can-i-create-a-text-box-for-a-note-in-markdown

    分页

    https://blog.csdn.net/wyll19980812/article/details/107424344

    markdown 使用 <div STYLE=“page-break-after: always;”></div> 进行分页

    图片居中,调整大小

    注意,这句话前后两行应该空下,不然不能正确显示

    <img src=“./fig/customized_figure.png” width=“400px” height=“400px” align=“center” />

    物联沃分享整理
    物联沃-IOTWORD物联网 » 奇技淫巧第8期

    发表评论