奇技淫巧第9期

今天回顾一下 5~12 月所遇到的零碎知识点。

文章目录

  • 歪门邪道
    • 优雅删除“学习资料”
    • 快速下载 vscode
    • 两种硬盘格式
    • zotero在word中插入参考文献
    • markdown 下划线
    • 查看 CPU Linux 命令
    • postgres 无法通过 root 用户操作
    • bash 初学者礼包
    • git
    • win 11 edge 浏览器0x80190001 报错
  • python 强化
    • python 中的省略号
    • 捕获 warning 输出日志
    • CPU 资源不够
    • 安全创建目录
    • sys.argv
    • argparse
    • wandb
    • pip 源更换
    • 无损迁移 conda 环境
    • 关于matplotlib legend的一些参数
    • 极坐标系下的等高热力图
    • seaborn set 参数
    • matplotlib 保存图片防止截断
    • conda 初始化
    • conda 安装小窍门
    • cudnn 下载
    • 安装 pytorch
    • cuda 和 cudnn 联系和区别
    • npz 文件
    • numpy 向量补充知识
    • 查看模型参数
    • tensorboard 小知识
    • torch_scatter.scatter()的使用方法
    • cycle_momentum 报错 (一些废话)
    • 模型跑崩的表现 (一些废话)
    • python 路径搜索相关知识
    • seed(42)
    • EMA
    • segmentation error
    • dataloader 报错
    • pytorch lightning 单机多卡报错
  • Latex
    • 超大写
    • 抽象字体
  • 领域知识
    • ase.db
    • 贝塞尔函数可视化方法
    • 格式转换

歪门邪道

那些不知道什么时候能再次用上,但确实好用的知识点

优雅删除“学习资料”

月黑风高,当你进入“贤者时间”后,如何删除“学习资料”以消灭作案证据?
简单使用 delete 会将文件移至回收站,需要手动再次清空回收站才能彻底删除,存在一定风险。优雅的老贼则常常采用 shift + delete 的方式一劳永逸。这种方式更适用于批量删除大量小文件,效率高。
(见 https://www.knowbaike.com/it/14929.html )

快速下载 vscode

复制下载链接后,修改服务器地址至国内源即可
https://blog.csdn.net/weixin_46621570/article/details/128007351

两种硬盘格式

修复移动硬盘报错的时候遇到了GPT和MBR两种硬盘格式
https://www.disktool.cn/content-center/difference-between-mbr-and-gpt-1016.html
https://www.knowbaike.com/it/26421.html
省流版:GPT方式更加先进,是MBR迭代后的产物
性能区别:
MBR分区表最多只能识别2TB左右的空间,大于2TB的容量将无法识别从而导致硬盘空间浪费,而GPT分区表则能够识别2TB以上的硬盘空间。

zotero在word中插入参考文献

正确的插入格式:
https://zhuanlan.zhihu.com/p/570641329
注意到,zotero默认的添加文献的方式(在网页PDF上直接点收藏)容易漏时间,出版号等关键信息,最完备的方式是去到文献刊发的网站,找其对应的 bibtex,然后再添加
https://blog.csdn.net/aiboom/article/details/128651501
https://blog.csdn.net/aiboom/article/details/128651501

markdown 下划线

https://www.zhihu.com/question/28375977
markdown 并无原生的下划线语法,可使用斜体替代

查看 CPU Linux 命令

https://zhuanlan.zhihu.com/p/372564248
查看物理 CPU,每个 CPU 的核数
查看逻辑 CPU(线程数)

postgres 无法通过 root 用户操作

https://blog.csdn.net/li_101357/article/details/69367457
Linux 创建新用户
postgres 等数据库不能在 root 用户下操作


https://zhuanlan.zhihu.com/p/205217949
创建新用户后shell无法自动补全命令或使用基本的shell命令
使用root用户查看passwd文件,可以发现默认的shell 是/bin/sh,将其修改为/bin/bash 后即可


su postgres -c “echo $original_user > new.txt”
使用 su 切换用户
使用 -c 在切换用户之后执行一条命令
两个引号将将要执行的命令裹起来
感谢llm
在这里插入图片描述

bash 初学者礼包

如果你是 bash 初学者,发现网上的简单 bash 脚本均无法运行,此时你需要检查测试文件是否是 unix 文件
修改文件为 unix 文件的命令:
https://blog.csdn.net/HYZX_9987/article/details/120061672
‘.sh’文件是如何运行的
https://baijiahao.baidu.com/s?id=1773849793111298095&wfr=spider&for=pc
${} 是如何运行的
https://blog.csdn.net/qq_25518029/article/details/119564512
bash和shell的区别
https://blog.csdn.net/qq_28284627/article/details/124509159
bash语言中的 if else 语句
https://zhuanlan.zhihu.com/p/649417352
冷知识:
在Linux 和 UNIX系统里可以使用多种不同的shell可以使用。最常用的几种是 Bourne shell (sh), C shell (csh), 和 Korn shell (ksh)。
Bourne Again shell ( bash), 正如它的名字所暗示的,是 Bourne shell 的扩展。
https://blog.csdn.net/wenlifu71022/article/details/4069929

git

懒人用 git desktop
但 github desktop 不能指定分支clone
这个问题似乎并没有解决方案
最后是使用命令行的git clone加上-b参数,克隆指定分支,然后打开github desktop添加local仓库

另外,github在和私人仓库进行交互时,有可能会弹出账户密码的对话框。对此,一定要检查,自己想要clone的仓库的地址,注意要去掉特定分支后缀(为此折腾了快一小时)


使用代理 https://ghproxy.com/ 加速 github clone 的速度

注意,第一次使用命令行 git 时需要配置链接秘钥。
https://blog.csdn.net/qq_35206244/article/details/97698815
如果是私密仓库,需要配置一个 personal token
https://github.com/settings/tokens


修改远程仓库地址

git remote set-url origin URL

https://blog.csdn.net/yihanzhi/article/details/78801027

win 11 edge 浏览器0x80190001 报错

https://zhuanlan.zhihu.com/p/632718025
使用 Fiddler 解决win11 edge 登录时报错08x…1的问题
注意,这个fiddler似乎只会捕捉一次报错,每次输完密码,点击继续等等之后,fiddler页面会出现一个 error 的 banner,在报错前即时点一下这个banner就可以了

python 强化

python 中的省略号

https://zhuanlan.zhihu.com/p/489862322
省略号在 Python 中的应用:

  1. 类型提示。
  2. 相当于 pass。
  3. numpy 中做索引

捕获 warning 输出日志

使用 contextlib.redirect_stdout 或 contextlib.redirect_stderr 能够捕获异常和输出,并将其输出至指定位置
https://stackoverflow.com/questions/22822267/how-to-capture-print-output-of-another-module

CPU 资源不够

The paging file is too small for this operation to complete. Error loading “C:\Users\16608\AppData\Roaming\Python\Python310\site-packages\torch\lib\cufft64_10.dll” or one of its dependencies.

网络太大,限制num_workers=1即可
num_workers 指 cpu 并行处理数据的线程数,num_workers 设置过大会占用过多 CPU 资源。因此,限制num_workers=1可以大幅减轻 CPU 压力

上述报错是 CPU 资源不够,GPU 资源不够一般是 memory, cuda 报错

在这里插入图片描述

安全创建目录

https://zhuanlan.zhihu.com/p/317254621
使用 pathlib 安全的创建目录

mkdir(parents=True, exist_ok=True)

sys.argv

https://blog.csdn.net/fancynthia/article/details/126271660
Python 中 sys.argv 用法详解
sys.argv[]是一个列表
sys.argv[0]是被调用的脚本文件名或全路径
sys.argv[1:]之后的元素就是我们从程序外部输入的,而非代码本身的,想要看到它的效果,就要将程序保存,从外部运行程序并给参数,这也是我们在cmd里面运行的原因。

argparse

用来做简易接口
https://blog.csdn.net/feichangyanse/article/details/128559542


metavar 和 action 在 argparse 中的含义
https://blog.csdn.net/FelixHe_FelixHe/article/details/130498476

https://stackoverflow.com/questions/19124304/what-does-metavar-and-action-mean-in-argparse-in-python


parser.add_argument 中 nargs 用法

nargs=N,一个选项后可以跟多个参数(action='append’时,依然是一个选项后跟一个参数,只不过选项可以多次出现),参数的个数必须为N的值,这些参数会生成一个列表,当nargs=1时,会生成一个长度为1的列表。

nargs=?,如果没有在命令行中出现对应的项,则给对应的项赋值为default。特殊的是,对于可选项,如果命令行中出现了此可选项,但是之后没有跟随赋值参数,则此时给此可选项并不是赋值default的值,而是赋值const的值。

nargs=*,和N类似,但是没有规定列表长度。

nargs=+,和*类似,但是给对应的项当没有传入参数时,会报错error: too few arguments。

wandb

https://zhuanlan.zhihu.com/p/493093033
wandb
weights and biases
是用来存模型参数、记录实验参数的工具,还能输出视频,GIF 图片等
类似tensorboard,但没有 tensorboard 用起来方便


https://blog.csdn.net/qq_42312574/article/details/132662921
wandb offline 模式 sync
https://zhuanlan.zhihu.com/p/493093033
wandb 基本用法

pip 源更换

我们常常使用 pip 源去加速软件包的安装。有时,pip 源网址本身可能会发生更换,比如半年前,我在使用西交源的时候就遇到了更换:
从原先的: https://mirrors.xjtu.edu.cn/pypi/simple
更换为了:https://mirrors.xjtu.edu.cn/pypi/web/simple
学到的知识点是:
源更换不可怕,因为一般源作者会在原来的地方留下新源的信息。就好比饭店搬迁,会在原址留下新饭店的位置。我们可以登录源网址查看变更信息。一般来说,不会整个源丢掉,大概率是换了链接,耐心一点总能找到。

无损迁移 conda 环境

如果你想要无损搬迁自己的conda环境,不妨了解一下 pip freeze
https://blog.csdn.net/qq_44886601/article/details/129933666

关于matplotlib legend的一些参数

columnspacing, labelspacing, handletextpad, borderpad
这几个参数指定了 legend 中的一些细节
ncols 可以指定 legend 有几列
在 matplotlib < 3.6 版本中,这一参数叫 ncol
在 matplotlib >= 3.6 版本中,这一参数叫 ncols
在这里插入图片描述
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html

极坐标系下的等高热力图

https://www.youtube.com/watch?v=DyPjsj6azY4&ab_channel=HagesLab
contour 是 绘制等高线的函数
contourf 是 填充等高线间的空隙的函数

contour中的linewidth调节成None即可获得光滑过度的热力图
ax.set_rticks([])
ax.set_xticks([])
去掉等高线和刻度的正确方法
https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.contourf.html#matplotlib.axes.Axes.contourf

seaborn set 参数

https://www.statology.org/seaborn-title/
seaborn 绘图中使用 set 设置标题和 xlabel, ylabel 等

matplotlib 保存图片防止截断

在 savefig 中使用 bbox_inches=‘tight’ 可以解决
https://stackoverflow.com/questions/35992492/savefig-cuts-off-title

conda 初始化

win下初始化conda环境,是使用conda可执行文件,地址在script目录下
https://blog.csdn.net/u010984516/article/details/125517492

在新进入镜像时,一般来说,是没有一个conda shell环境的
此时需要用命令 conda init bash 来初始化一个环境(不是 conda init )
初始完后再次进入该镜像即有初始的 conda 环境

conda 安装小窍门

conda install -y -c conda-forge rdkit==2021.09.5

-y 指 Sets any confirmation values to ‘yes’ automatically. Users will not be asked to confirm any adding, deleting, backups, etc.
-c 是选择安装的源

cudnn 下载

更换国内源加速下载(com改成cn即可):
https://blog.csdn.net/HunterMiki/article/details/122738632

安装 pytorch

我们可以使用 -i & -f 两个参数指定下载源,虽然有博客认为,使用 -f 会影响下载速度
https://blog.csdn.net/WannaSeaU/article/details/102830613
但我这边实测没有感受到。反而,二者同时用可以避免“镜像源配置错误”的问题。
也有博客认为二者同时使用比较好
https://blog.csdn.net/uflexnihao/article/details/113244103

我这边无痛安装 cu117 版本的 pytorch 以及一些附属的库:

pip install -i http://mirrors.aliyun.com/pypi/simple/  --trusted-host mirrors.aliyun.com torch==2.0.0+cu117 torchvision==0.15.1+cu117 torchaudio==2.0.1 -f https://download.pytorch.org/whl/cu117/torch_stable.html
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  torch_geometric torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.0.0+cu117.html

注意:-i 和 --trusted-host 放在包前面较为合适, -f 是在指定链接里去找想要的包


requirements.txt 里的空行会先对空行前的包build dependency,然后再接着安装剩余的包
requirements编写时考虑CPU和GPU的不同
https://stackoverflow.com/questions/72720235/requirements-txt-for-pytorch-for-both-cpu-and-gpu-platforms
苹果用户:
http://www.360doc.com/content/23/0701/13/54508727_1086924383.shtml
如果机器是cuda版本,需要先在conda里安装cuda和cudann
https://blog.csdn.net/qq_43705697/article/details/121618276
最后,安装完cuda可能检测不到
https://blog.csdn.net/weixin_43301333/article/details/128911561

cuda 和 cudnn 联系和区别

CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。
https://www.jianshu.com/p/622f47f94784
更详细的工具的汇总可以参见:
https://blog.csdn.net/qq_42406643/article/details/109545766

npz 文件

split.npz 文件常用来存储训练集、验证集、测试集中每个样本在原数据集中的位置。
我们可以使用 np.load 载入该文件,并使用 test = info['test_idx'] 的方式查看文件内容
在存的时候,与 npy 不同的是,我们需要用 np.savez 函数


使用npz存字典时会遇到一个问题,在不知道字典的键值情况下,可以尝试将整个字典写到一个条目下,但在取数据时会遇到格式问题。
在解决上述问题时,无意间翻到了一个回答,答主指出,可以使用kwargs语法,在不知道键值的情况下将字典以键值对的形式写入

https://stackoverflow.com/questions/52996433/loading-dictionary-stored-as-npz-fails

numpy 向量补充知识

使用 type 查看类型,使用 ndim 查看维度,使用 shape 查看维度
(22, 0) 这样子是一维
round 相关知识
np.ndarray 类型数据在round以后,确实是变成了四舍五入的格式
但是输出的时候,如果不变成str,输出时小数点后好几位会有数字
如果变成了str,输出时会保留截取的形式

float形式的数据,round以后直接输出,会自动保持截取的形式
(这个事情还不好下定论,养成输出时加str的习惯是对的)

查看模型参数

num_params = sum(p.numel() for p in model.parameters())
print(f'#Params: {num_params}')

tensorboard 小知识

同时观察多个 event 文件
我们在主文件夹下建立多个子文件夹,每个子文件夹放入一个 event 文件,这样在 logdir=主文件夹 的时候会同时打开多个子文件夹中的 event,且曲线图中每条曲线的名字就是子文件夹的名字。

torch_scatter.scatter()的使用方法

scatter函数的作用就是将index中相同索引对应位置的src元素进行某种方式的操作,例如sum、mean等,然后将这些操作结果按照索引顺序进行拼接
https://blog.csdn.net/Cyril_KI/article/details/125908710

cycle_momentum 报错 (一些废话)

pytorch CyclicLR momentum 参数仅在优化器支持 momentum 的情况下有效
https://blog.csdn.net/weixin_43002433/article/details/104969477

模型跑崩的表现 (一些废话)

验证集和训练集均出现了nan值
在这里插入图片描述

python 路径搜索相关知识

Python import module 的搜索路径由sys.path指定,实质为一个列表,列表索引先后决定搜索优先级。
我们可以人为补充某些路径,从而可以直接索引
如下:

import sys
sys.path.append('.')

from sub_image.pyG_infer import leftnet_dpdispatcher
from sub_image.postgres import postgres_interaction
from sub_image.cgleftnet import cgleftnet_dpdispatcher

这样我们可以在不安装包的情况下将当前目录补充到包搜索列表中
该实例中 sub_image 是当前目录下一个文件夹,我们需要在该文件夹下填入一个 _init_ 文件才能将该文件夹转换成可以被搜索的模块(module
下图是示例中提到的三个模块
在这里插入图片描述

seed(42)

np.random.seed(42) 的用法

https://stackoverflow.com/questions/21494489/what-does-numpy-random-seed0-do

If you set the np.random.seed(a_fixed_number) every time you call the numpy’s other random function, the result will be the same

EMA

https://testerhome.com/topics/10996
指数加权平均(EMA)稳定训练的原理:
EMA 可以让梯度下降更加稳定

segmentation error

指你的程序波及到了本该不属于它的范围
就好比,每个程序对应现实世界一个人,程序运行时,这个人的活动范围局限在特定的街区。如果程序因为特别的错误,比如除零等,导致其占用了过多的资源,以至于跑到了其他街区。此时会报错 segmentation error
segmentation 还用于种族隔离等语境。

python 中无法捕获因C子程序导致的 segmentation error (极难捕获)
遇到类似的问题只能想方设法解决造成 error 的原因,而不是做 try catch

dataloader 报错

raise RuntimeError(‘DataLoader worker (pid(s) {}) exited unexpectedly‘.format(pids_str))RuntimeErro
原因是程序运行需要在一个主程序下,把

if __name__ == "__main__":

添加到主程序目录下即可

pytorch lightning 单机多卡报错

跟slurm系统
RuntimeError: You set --ntasks=40 in your SLURM bash script, but this variable is not supported. HINT: Use --ntasks-per-node=40 instead.

网上也有很多讨论:
https://github.com/Lightning-AI/lightning/pull/16955/files
一般是让自己新建一个 slurm 脚本 & 修改任务名称
在提交任务的 command 里加上两句 unset 即可:
unset SLURM_NTASKS && unset SLURM_JOB_NAME && python train_homo_lumo_ddp.py > tmp_log 2>&1

Latex

超大写

经常阅读计算机系算法论文的同学可能会看到同一个单词里出现了大小不一的大写字母。
如下:
在这里插入图片描述
这种单词可以通过 latex (\textsc{} 或者 \scshape)超大写格式实现。U 是超大写,NIFIED 大写
此外,我们可以使用 \textsuperscript{} 实现上标,\textsubscript{} 实现下标
\textregistered 是带圆圈的R

抽象字体

读论文时,可能会遇到一些抽象的字体,例如Fraktur字体。这种字体常用于表示集合等,曾广泛应用于德国、东欧国家
https://en.wikipedia.org/wiki/Mathematical_Alphanumeric_Symbols
在latex里,使用 \mathfrak{} 可以轻松打出 Fraktur 字体

领域知识

ase.db

ase.db 有一个默认的 id 参数,该参数记录了当前条目在 db 中的位置,是创建 db 时自动赋值的,不能手动赋值
我们可以通过新建 id 名的方式手动赋值新的 id,比如,ep_id


ase.db select 时候不是一个atoms对象,往往需要根据某个 id 重新 select
一个相对优雅的方式是将 row 对象一步转成 atoms 对象

with connect('new.db') as db:
    for a_row in db.select():
        an_atoms = a_row.toatoms()
        view(an_atoms)

数据库操作应该注意,删除一行,会造成数据库的不连续( id 的不连续)
可行(但有点笨拙)的方法是重新写一个数据库,跳过待删除行

贝塞尔函数可视化方法

https://www.youtube.com/watch?v=DyPjsj6azY4&ab_channel=HagesLab
make a 2D contour plot in Python in polar coordinates.
炫酷的贝塞尔函数可视化方法

格式转换

pyG object 和 ase object 的相互转换:

https://ulissigroup.cheme.cmu.edu/ml_catalysis_tutorials/notes/custom_datasets/data_preprocessing.html

lmdb 和 ase object 的相互转换:

https://ulissigroup.cheme.cmu.edu/ml_catalysis_tutorials/notes/custom_datasets/lmdb_dataset_creation.html

xyz 2 mol 的标准操作:
https://github.com/jensengroup/xyz2mol

熵,交叉熵,KL散度公式与计算实例
https://finisky.github.io/2020/07/09/crossentropyloss/

相对熵=KL散度,描述了两个概率分布间的相对大小
如果两个分布完全相同,则相对熵为0

相对熵+目标函数本身的熵=交叉熵
由于目标函数本身的熵是固定的,因此在训练网络时,选择交叉熵作为损失函数与相对熵等同
https://finisky.github.io/2020/07/09/crossentropyloss/

nllloss,negative log likelihood loss 负对数似然损失函数,常用于分类问题中,是CrossEntropyLoss的其中一个吧步骤
NLLloss+log+softmax=CrossEntropyLoss

https://pytorch.org/docs/stable/generated/torch.nn.NLLLoss.html
https://zhuanlan.zhihu.com/p/570118948


nll loss 本应该处于 0~1 之间,但前提是 predicted distribution 也处于 0~1 之间,即 normalize 过

如果没有 normalize 过,也可能会出现 nll loss 取负的现象,这些都是正常的行为

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/213644.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pycharm调用Conda虚拟环境

参考这个链接的评论区回答&#xff1a;Pycharm调用Conda虚拟环境 笑死&#xff0c;我之前也是这样的&#xff0c;不过好像也能用&#xff0c;搞不懂~

蓝桥杯每日一题2023.12.2

题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 答案&#xff1a;3598180 由题目分析可以知道&#xff0c;给小明发的牌一共有13种类型&#xff0c;每种类型的牌一共有四张。对于每种牌&#xff0c;我们都有5种选择&#xff0c;不拿、拿一张、…

WebGL笔记:矩阵缩放的数学原理和实现

矩阵缩放的数学原理 和平移一样&#xff0c;以同样的原理&#xff0c;也可以理解缩放矩阵让向量OA基于原点进行缩放 x方向上缩放&#xff1a;sxy方向上缩放&#xff1a;syz方向上缩放&#xff1a;sz 最终得到向量OB 矩阵缩放的应用 比如我要让顶点在x轴向缩放2&#xff0c;y轴…

ArrayList 与 顺序表 (附洗牌算法)!

曾经我也是一枚学霸&#xff0c;直到有一天想去学渣的世界看看&#xff0c;结果就找不到回去的路了。 目录 1. 线性表 2.顺序表 2.1 接口的实现 3. ArrayList简介 4. ArrayList使用 4.1 ArrayList的构造 4.2 ArrayList常见操作 4.3 ArrayList的遍历 4.4 ArrayList的扩…

分享66个焦点幻灯JS特效,总有一款适合您

分享66个焦点幻灯JS特效&#xff0c;总有一款适合您 66个焦点幻灯JS特效下载链接&#xff1a;https://pan.baidu.com/s/10bqe09IAZt_hbsZlXaxkxw?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;…

万能的视频格式播放器

今天博主给大家带来一款“万能”的视频播放器——VLC Media Player&#xff0c;支持的文件格式非常多&#xff0c;大家快来一起看看吧&#xff01; VLC Media Player 是一款可播放大多数格式&#xff0c;而无需安装编解码器包的媒体播放器。可以播放 MPEG-1、MPEG-2、MPEG-4、D…

Tektronix泰克示波器

一、what’s the oscilloscope&#xff1f; 【ref】https://www.tek.com.cn/blog/what-is-an-oscilloscope 二、基础知识 1、带宽&#xff1a;100Mhz&#xff1b;采样率&#xff1a;2.5GS/s 1GS/s指的是采样率&#xff0c;前面大写的S是sample采样的意思 后面的s是秒 也就是示波…

粉丝提问:岗位与描述不一致,小公司感觉学不到东西,工作内容就是调试,想辞职

0、粉丝问题&#xff1a; 大哥&#xff0c;我毕业已经工作两个月了&#xff0c;在一家小公司&#xff0c;岗位和描述的不一致&#xff0c;感觉就像调试一样&#xff0c;写代码的机会很少也没人带&#xff0c; 我想转嵌入式&#xff0c;您有什么建议的方向吗&#xff0c;或者是…

MathType公式编辑器安装教程

一、下载 MathType7是一款可以帮助用户快速完成数学公式编辑的应用软件&#xff0c;这款软件适合在进行教育教学、科研机构、论文写作的时候使用。我们可以直接通过这款软件来获取到大量数学上使用到的函数、数学符号等内容&#xff0c;然后使用这些内容来完成公式编辑。 …

玩转大数据4:大数据的崛起与应用领域探索

图片来源网络 引言 在当今数字化时代&#xff0c;大数据正以前所未有的速度和规模崛起。大数据的出现不仅改变了企业和组织的经营模式&#xff0c;也对我们的社会生活带来了深刻的影响。Java作为一种广泛使用的编程语言&#xff0c;在大数据领域发挥着重要的作用。本文将重点…

自动驾驶学习笔记(十三)——感知基础

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 传感器 测距原理 坐标系 标定 同…

初识Linux:保姆级教学,让你一秒记住Linux中的常用指令!

文章目录 前言一、LInux的背景及发展史二、Linux下的基本指令1、ls指令2、pwd指令3、cd指令4、touch指令5、mkdir指令&#xff08;重要&#xff09;6、tree指令7、rmdir指令和rm指令&#xff08;重要&#xff09;8、man指令&#xff08;重要&#xff09;9、cp指令&#xff08;重…

操作PDF相关的工具,EPUB转PDF,golang

unipdf 安装依赖 go get github.com/unidoc/unipdf/v3 示例代码 https://github.com/unidoc/unipdf-examples 获取KEY 登录 https://cloud.unidoc.io/ 注册账号&#xff0c;生成 KEY&#xff0c;但是需要收费。 chromedp 使用Golang编写&#xff0c;主要功能是调用浏览器内…

【面试攻略】Oracle中blob和clob的区别及查询修改方法

大家好&#xff0c;我是小米&#xff0c;欢迎来到小米的技术小屋&#xff01;今天我们要一起来聊聊一个在面试中常常被问到的问题——“Oracle中Blob和Clob有啥区别&#xff0c;在代码中怎么查询和修改这两个类型的字段里的内容&#xff1f;”别急&#xff0c;跟着小米一步步揭…

Android11适配已安装应用列表

Android11适配已安装应用列表 之前做过已安装应用列表的适配&#xff0c;最近国内版SDK升级到33和隐私合规遇到很多问题&#xff0c;于是把已安装应用列表记录一下&#xff1a; 1、在Android11及以上的适配&#xff1a; package com.example.requestinsttallapplistdemoimpo…

K210开发板之VSCode开发环境使用中添加或删除文件(编译失败时)需要注意事项

在最初开始接触&#xff0c;将VScode和编译环境搭载好后&#xff0c;就开始运行第一个程序了&#xff0c;为了后续方便开发测试&#xff0c;这里我自己对照官方提供的例子&#xff0c;自己调试&#xff0c;写了一个简单的文件系统 后续&#xff0c;所有关于开发的源文件都在...…

Sun Apr 16 00:00:00 CST 2023格式转换

Date date new Date(); log.info("当前时间为:{}",date); //yyyy-MM-dd HH:mm:ss SimpleDateFormat sdf new SimpleDateFormat(DateUtils.YYYY_MM_DD_HH_MM_SS); String dateTime s…

Git Bash环境下用perl脚本获取uuid值

在Linux环境下&#xff0c;比如在ubuntu就直接有uuidgen命令直接获取uuid值。在Windows环境下常用的git bash中没有对应的命令&#xff0c;略有不便。这里用脚本写一个uuidgen&#xff0c;模拟Linux环境下的uuidgen命令。 #! /usr/bin/perl use v5.14; use Win32;sub uuidGen {…

Springboot启动原理解析

我们开发任何一个Spring Boot项目&#xff0c;都会用到如下的启动类 SpringBootApplication public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);} } 从上面代码可以看出&#xff0c;Annotation定义&#x…

大数据技术学习笔记(七)—— Zookeeper

目录 1 Zookeeper 概述1.1 Zookeeper 定义1.2 Zookeeper 工作机制1.3 Zookeeper 特点1.4 数据结构1.5 应用场景 2 Zookeeper 安装3 客户端命令行操作4 Zookeeper 的 Java 客户端操作4.1 IDEA 环境搭建4.2 初始化 ZooKeeper 客户端4.3 创建子节点4.4 获取子节点4.5 判断Znode是否…