工作中常用的100个知识点

1. Permission deniedGit解决Permission denied, please try again问题_git permission denied, please try again.-CSDN博客

cd ~/.ssh/ 回车,进入.ssh路径下;

接下来在.ssh路径下配置全局的name和email,输入以下命令:
git config --global user.name “xxxxx”
git config --global user.email “xxxxx@xx.com”

ssh-keygen -t rsa -C “xxxx@xxxx.com”

就生成了两个文件:id_rsa和id_rsa.pub

在SSH Keys页面里,在页面的右上角点击添加add SSH keys,将之前生成的两个文件中的id_rsa.pub文件里的内容粘贴到key文本框里

2. conda 会安装对应的依赖深度学习基础——pip和conda - 知乎

Pip install 和Conda install 的区别和使用场景_conda install和pip install-CSDN博客

Pip 只能安装 python 语言写的包,而 conda 可以安装任何语言写的包

sudo apt-get install python3-opencv
# or
conda install -n your-env-name opencv

3. 没有CXXABI1.3.8CXXABI_1.3.8 not found-腾讯云开发者社区-腾讯云

strings /usr/lib64/libstdc++.so.6|grep CXXABI

4. opencv版本

5.pip freeze >requirements.txt,conda list也可以看到当前环境的安装包

conda create -n demo python==3.10.8

conda activate your_env_name

pip install -r requirements.txt #根据文件类安装包

conda deactivate

6. torchrun命令进行容错处理Pytorch 多卡并行(2)—— 使用 torchrun 进行容错处理_51CTO博客_pytorch多gpu并行

7. vim 大写G跳转到最后一行。

8.利用卷积实现ssim计算。https://github.com/Po-Hsun-Su/pytorch-ssim/blob/master/pytorch_ssim/__init__.py

类似于协方差

9. 把laplace,sobel,

roberts图像分析:边缘检测中的梯度算子 - 简书

sobel

laplace

10.torch.nn.functional.interpolate(

基本等效于opencv中的resize,可以选择放大系数,也可以指定放大到的尺寸。

但是需要注意的是tensor中的尺寸一般是四维,NCHW,interpolate也只是对后面的两个维度操作。

此外还有一个align_corners参数:F.interpolate——数组采样操作-CSDN博客

11. state_dict,保存模型结构信息,比如卷积权重和偏置。optimizer对象也会有它自己的state_dict

【PyTorch技巧1】详解pytorch中的state_dict - 知乎

比如conv1这个结构,

self.conv1 = nn.Conv2d(3, 6, 5)

输入通道3,输出通道6,那么就意味着有6个卷积,每个卷积有三个通道,尺寸是(5,5).

不光是模型,模型训练相关的配置文件parse也可以以字典的形式,使用torch.save进行保存

torch.save(parse.__dict__,"./xxx.pkl")

12. pkl和pth

本质没什么区别,主要看保存的时候是否连同模型结构一起保存了,还是说只保存了参数。

torch.save(model.state_dict(), 'mymodel.pth')
torch.save(model, mymodel.pth)

只保存了参数便于灵活加载部分参数。如果只保存了参数,就要先实例化一个模型,然后再load参数。load参数后再用load_state_dict加载参数:PyTorch框架训练的几种模型区别_.pth.tar-CSDN博客

import torch
model = MyModel() # init your model class, build the graph shape
state_dict = torch.load('model_state_dict.pth')  // 先load字典
model.load_state_dict(state_dict,strict=True)    // 再更新到模型中,要求模型和参数严格对应
torch.save(model.state_dict(), 'model_state_dict1.pth')

13.optimizer = torch.optim.Adam(model.parameters(), lr=args.lr, weight_decay=args.weight_decay)

14.lsb_release -a,可以看到linux的发型版本是centos,使用yum安装,而不上apt-get

15. docker run --gpus all 时提示unknown flags,docker -v查看版本,发现clinet版本是17.12.1-ce,server版本是24.0.5,然后sudo apt-get install docker-ce安装最新的社区版,这时两个版本都是24.0.2,这时就可以在docker中使用gpu了

16.服务器往本机传输数据。先在本机上开启ssh服务。

sudo apt-get install openssh-server

sudo service ssh start

在本机上测试ssh 可以连接本机,

然后在服务器上使用scp传输到本机。

17.  nohup command > output.log 2>&1 &

其中 2>&1是用来将标准错误2重定向到标准输出1中。1前面的&是为了让bash将1解释成标准输出而不是文件1。而最后一个&是为了让bash在后台执行。

18.把已有的conda虚拟环境打包成docker

将conda环境打包成docker步骤_将conda环境打包成docker镜像-CSDN博客

19.make命令和makefile

【Linux】 自动化编译工具make_make编译-CSDN博客

makefile文件使得文件之间的依赖关系更清楚,使用make编译时可以高效地重新编译改动的文件。

make -j8会以8个线程编译,make会在当前目录下找名字叫“Makefile”或“makefile”。

依赖关系以冒号的形式指定,依赖关系的下一行tab之后通常就是调用gcc的依赖方法,是真正要执行的动作。

Android底层开发(4)_android底层开发所需资源-CSDN博客

https://www.cnblogs.com/fog2012/p/5849207.html

如果是使用NDK编译,需要android.mk文件,这个本质也是makefile文件?

分析一个最简单的Android.mk;

LOCAL_PATH := $(call my-dir) # 定义了当前模块的相对路径;include $(CLEAR_VARS)  # 清空当前环境变量LOCAL_MODULE := test  # 编译生成的目标名称LOCAL_SRC_FILES :=test.c  # 编译该模块需要的源文件include$(BUILD_EXECUTABLE) # 编译所生成的目标文件格式

makefile可能包含多个目标,如target1,target2,make target1可以指定只编译target1.

20.Python中subprocess和os.system

Python中subprocess和os.system的差异及用途_Python 笔记_设计学院

后者是系统自带的,一般只原来实现文件删除等操作。

21. subprocess.run时遇到"("unexpected,因为转义没有识别,可以在shell脚本指定解释器为base:#!/bin/bash,也可以通过replace把(替换为\(,)替换为\)

22. 计算直方图,hist = cv2.calcHist([img],[0],None,[16],[0,255]),注意第一个参数必需是[]括起来,因为第二个参数是第一个参数的索引,当直接传入img作为第一个通道时,直方图计算的是第一行的统计。可以np.sum(hist)计算直方图的总数。

23. python中使用字符串string,前面会有r或者f作为前缀,前者表示不会被转义,后者表明是格式化字符串,这样的字符串里可以使用{}直接嵌入值。

python 字符串前加f、r、b、u 分别代表什么?_python路径前面加f-CSDN博客

24.字典的键和集合的元素必须是不可变的(hashable)类型,因为它们需要保持唯一性和不变性。列表是可变的,因此不能被哈希(即不能保证其唯一性和不变性),所以不能用作字典键或集合元素。否则会遇到TypeError: unhashable type: 'list' 

25.collections模块常用类型有:默认字典(defaultdict),双向队列(deque),有序字典(OrderedDict)。defaultdict和dict比,会为一个不存在的键提供默认值,从而避免KeyError异常。如果使用dict,,就要额外用一个表来判断字典里是否有这个key。

26.str被sorted之后,返回的是字符组成的list

eat ['a', 'e', 't'] tea ['a', 'e', 't'] tan ['a', 'n', 't'] ate ['a', 'e', 't']

27. 多线程操作时,文件夹最好每个进程使用自己的。os.getpid()得到进程号

28.Python字符串index()函数将引发ValueError,而find()函数将返回-1。 这是这些功能之间的唯一区别。

s ='abcd1234dcba'
print(s.index('a'))
print(s.index('cd'))
print(s.index('1', 0, 5))

29.rgb到bgr,就是最后一个维度的逆序,所以可以得到bgr=rgb[:,:,::-1]

30.python函数中的*,**分别将参数解包成元组和字典。*号的作用在于收集参数或者分配参数

31. 把字典写入txt时,使用for循环,把每一个item按照冒号写成一行:

for key,value in dict.items():f.write(f"{key}:{value}")

32. 读取图像imread和imdecode,使用imdecode的优点在于可以从内存中直接解码图像数据,而不需要将数据保存到磁盘再进行读取。在某些场景中是有用的,如网络传输的数据源,摄像头捕获的图像数据。

33. lmdb读取图像得到的是rgb通道的数据?和opencv读出来的bgr不一样?

34.头文件循环包含

35.

position = s.find("jk");
13     if (position != s.npos)

36. lmdb写入时的key和val都需要是baye类型,所以需要使用encode().

import lmdbenv = lmdb.open("./students")       # 打开数据库txn = env.begin(write=True)         # 开启事务
txn.put(str(1).encode(), "xiaoming".encode())       # put 可以写入数据,也可以修改数据
txn.put(str(2).encode(), "xiaogang".encode())
txn.put(str(3).encode(), "xiaohong".encode())txn.commit()        # 提交更改
env.close()

37.python输出固定长度的整数

{:05}.format(42)--->00042

"%05d" % number

38.在JSON文件中添加注释通常不被推荐,因为JSON格式本身不支持注释。

39.img = np.rot90(img, k=n) # n=0,1,2,3,... 即旋转0,90,180,270,正数代表逆时针旋转,负数代表顺时针旋转

import cv2
import numpy as npimg = cv2.imread(image_path)
img = np.rot90(img, k=n) # n=0,1,2,3,... 即旋转0,90,180,270,m = np.arange(8).reshape((2,2,2))
np.rot90(m, 1, (1,2))
#array([[[1, 3],
#        [0, 2]],
#       [[5, 7],
#        [4, 6]]])

40.在 PyTorch 中,ConcatDataset 是一个用来组合多个数据集的工具,把多个数据集合并在一起。因为dataset主要的几个函数是get_item,get_len等,其实就是重写了这几个函数。要注意几个数据集需要是相同结构的,如图像尺寸,如果不一致的话就要进行数据预处理,或者是在get_item的时候进行处理。

41.np.arange([start, ]stop, [step, ]dtype=None)

42. which python或者whereis python,得到解释器的路径

43. ubunti终端中:docker search ubuntu2就可以搜索到ubuntu20的相关docker,选择一个,执行:docker pull xxxxx就可以安装成功,这时候docker images就可以看到了。

docker pull 命令来载入 ubuntu 镜像

docker run -it --gpus all xxxx,找不到gpu:

nvidia-container-cli: initialization error:loadlibrary failed: libnvidia-ml.so.1: cannot open shared object file: no such file or director

首先, 需要确保你的docker是使用apt安装的

输入sudo systemctl status docker.

如果是apt安装的会显示docker的详细信息, 如果是snap安装的会报错

docker load -i xxx.tar
docker import xx.tar xx:xxx  // 加载的同时指定镜像名和版本号
docker tar xx xx:xxx // 更改原来的镜像名和版本号

44.np.prod(),计算数组中所有数字的乘积。

45. tensor和array都是共享内存的,b=a这样的赋值,改变其中一个会y影响另外一个。

a.numpy()把tensor转换为array,内存仍然是共享的;使用b = torch.from_numpy(a),内存也是共享的。

46.学习率和batsize有线性相关,同比例设置,和模型大小无关?常见的学习率是分段的,余弦退火不需要设置参数;CV算法工程师面试 高频基础知识点-CSDN博客

47.getattr() 是 Python 内置的一个函数,可以用来获取一个对象的属性值或方法。相当于返回那个值或者调用那个函数。

48.docker ps查看运行中的容器

49. sudo su切换到超级用户身份

50.nvidia-smi -pm ENABLED

export PATH=/home/yan/share/usr/local/arm/3.4.1/bin:$PATH
source .bashrc

docker -ce

docker commit命令的使用-CSDN博客

docker build -t xxx.

sudo systemctl restart docker

51.https://www.cnblogs.com/shine-lee

52.Python3二分查找库函数bisect(),二分查找要求序列是有序的。bisect.bisect_right(lut_list,i)

53.np.var(arr)算出来的方差是MSE的公式算出来的,是高斯分布下的最大似然估计,为了无偏,需要修正分母,np.var(arr,ddof=1),分母就会减1.What is the difference between numpy var() and statistics variance() in python? - Stack Overflow

54.rgb2hsv,要注意取值范围rgb应该是0~255的。必需乘完awb之后再转换颜色空间,因为转换的过程中会涉及到rgb相对大小。

55.https://en.wikipedia.org/wiki/Floyd%E2%80%93Steinberg_dithering

56.leakey relu比relu更耗时,而relu因为梯度可能为0,方向传播造成神经元失活,效果可能会差。leakey relu的负数部分的斜率一般为0.01,即两段斜率是1:100

relu的实现就是一个max函数。

57.batch normaliztion有scale and shift两个可学习参数。这两个参数平衡了两个极端,即原始分布和标准方差分布,有利于权重和分布相互协调,增强了网络的表达能力。否则后面一层的分布要依赖于前面所学习的参数。

预测阶段的均值和方差使用收敛阶段的mini-batch的统计值。

Batch Normalization(BN)超详细解析_batchnorm在预测阶段需要计算吗-CSDN博客

58.self attention中QKV都来源于同一个数据集,那么对于encoder-decoder attention是encoder-decoder之间的,

59.处理JSON文件写入换行问题,

# 将学生信息写入文件
with open('data.json', 'w') as file:
    json.dump(student_info, file, indent=4)

60.x = np.full(shape=[3, 3], fill_value=2)

x = np.ones([3, 3]) * 2

61. 绘制棋盘格,要遍历一遍,可以以(x+y)%2==0判断是黑色还是白色。两个反色的棋盘格图像的ssim是-1.

62. torch.bmm(tensor_a, tensor_b),bmm 是 batched matrix multiple 的简写,即批量矩阵乘法

63. 细节增强,将blur前后的差加在原始图像上。图像增强:多尺度的图像细节提升(multi-scale detail boosting)实现方法_多尺度增强-CSDN博客

借鉴了多层的思路,并使用sign函数减少了异常情况。这里的异常情况是,左黑右白的图减去blur之后的diff是左负右正,直接加diff的话会导致灰度饱和,所以就把diff大于0的地方的权重降低,把黑色更黑?

64. 符号函数的实现,就是判断正负。可以借鉴补码的首位就表示了正负,对int型向右移动31位。

基于bit操作https://www.cnblogs.com/xyd-/p/14641948.html

65. 使用docker训练的时候,报错bus error,out of shared memory。使用shm查看容器共享内存的大小,docker run的时候加上--shm-size 8G或者--ipc=host,后者是让容器与主机之间共享内存

66. docker: Error response from daemon: No command specified.解决docker run报错:Error response from daemon: No command specified.-CSDN博客

67.可以在行尾使用反斜杠 \ 来表示代码行的延续

68. docker run /bin/bash -c "echo Hello && echo world"可以在创建容器后进入执行指令。-c是把多个指令合并成一个字符串,使用bash来执行。

69.

clang-format 可用于格式化(排版)多种不同语言的代码, 其自带的排版格式主要有: LLVM, Google, Chromium, Mozilla, WebKit。但是自带的这几种排版格式可能并不满足个人编码习惯的全部要求, clang-format 也提供了使用自定义排版格式的功能。Ubuntu 上可以使用以下命令导出上述 5 种自带的排版格式, 并且可以对其中某一个导出的文件进行修改, 实现自定义格式化:

clang-format -style=格式名 -dump-config > 文件名
其中, 格式名的取值可以为 llvm, google, chromium, mozilla, webkit 中的任一种; 文件名可以取任何名字, 一般取.clang-format 或_clang-format, 因为自定义的排版格式文件只有取这两种名字之一, 才能被 clang-format 识别。

70.

clang --version版本对应不上,则会报错,unknown key 'AfterCasesLabel'

sudo apt-get install clang-10遇到了依赖问题,the following packages have unmet dependencies

ubuntu - How do I resolve `The following packages have unmet dependencies` - Stack Overflow

install的时候直接-f也无法解决,尝试apt-get替换为aptitude,没有这个指令,先apt-get install aptitude,aptitude会自动解决依赖问题,只要输入y确认就可以了。

成功安装clang-format-10,位置在/usr/bin/下

为了直接在命令行中使用clang-format,使用软连接替换:

link /usr/bin/clang-format-13 /usr/bin/clang-format

71.torch.save(module.state_dict(),"./state_dict.pkl")

torch.save:将一个序列化的对象保存到磁盘; torch.load:将 pickled 对象文件反序列化到内存

state_dict 是一个 Python dictionary object

注意:只有含有可学习参数的层 (convolutional layers, linear layers),或者含有 registered buffers 的层 (batchnorm's running_mean) 才有 state_dict。

PyTorch 83. PyTorch 模型的保存与加载 - 知乎

72. __dict__是大部分python对象的一种属性,就是一个字典,然后可以继续使用torch.save存储成文件。torch.load再恢复成dict。

73. dict转换为Namespace

import argparse

ns = argparse.Namespace(**dic)

dic = vars(ns)  # namespace转换为字典【python】dict 和 Namespace 之间的转换_dict 转namespace-CSDN博客

74. 改写windows中的bat文件,在ubuntu中出错。因为换行符不一样。在vscode中右下角选择LF/CRLF

75.pwd是“print working directory”的缩写,意为打印当前工作目录。

76.RuntimeError: CUDA out of memory,RuntimeError: CUDA out of memory. Tried to allocate 144.00 MiB (GPU 0; 2.00 GiB total capacity; 1.29 GiB already allocated; 79.00 MiB free; 1.30 GiB reserved in total by PyTorch)

对应方法有清空缓存torch.cuda.empty_cache(),

减小batchsize,

指定其他卡os.environ['CUDA_VISIBLE_DEVICES'] = '1',

修改最大碎片参数os.environ['PYTORCH_CUDA_ALLOC_CONF'] = 'max_split_size_mb:256'。

77. 下载人造数据集,Home,Unreal Dataset | ISARLab

ISAR得到的数据集格式是bag文件,包含了IMU,GPS,双目图像等

参考这个脚本进行解析。解析rosbag文件,得到带有时间戳的.jpg图片数据和.pcd点云数据_ros接收点云的时间戳-CSDN博客

安装rosbag,pip3 install bagpy,

注意topic要选对,否则会报错没有encoding。topic通过下面命令得到:

rosbag info *.bag   //*为你自己的数据包的名称

78. 计算模型结构参数量,可以使用summarytorch-summary · PyPI

会得到参数个数和对应所需要的内存。因为每个参数是float,需要占4个Byte。

可以得到每一层的参数量。但是有的模型结构不支持,如MIRnet使用了列表而不是concate,这时可以使用

total_params = sum(p.numel() for p in model.parameters())
print("Total parameters:", total_params)

79.使用rename批量修改文件名:Ubuntu中rename命令和批量重命名_ubuntu rename-CSDN博客

rename -n 's/^/test_/' *.jpg解释:
s-替换
^-在文件名称开头加字符,“^”开头;以“$”结尾
test_-将名称前面添加上test_
-n表示只是模拟运行,会把重命名前后的文件名都打印出来rename 's/.png/xx.png/' *.png  // 把所有png结尾的替换为xx.png结尾
rename 's/ /_/g' * // 把文件名中的空格替换为下划线

80.

在大多数Unix和Linux shell环境中,可以使用上下箭头键来浏览输入的命令历史记录。此外,还可以使用以下命令查看和搜索历史命令:

  • history:显示所有历史命令列表。

  • history | grep 搜索词:搜索与“搜索词”相关的命令历史

81.

random_array = np.random.randn(3, 4)  # float64

random_array = torch.randn((3, 4)).numpy() #随机生成0~1浮点数构成的二维数组,float32

82.pycharm或者idea中Run/Debug Python项目报错 Argument for @NotNull parameter ‘module‘ of …

删除项目根目录的 idea 文件夹
随后重启,重新配置即可

83. rgb向raw退化,可以提前用list存好一个uint的通道情况,如[0,0,1,1, 0,0,1,1,   1,1,2,2,1,1,2,2,]

遍历时使用enumrate,返回是i取整除结果和余数得到坐标,返回的x表示通道情况:

for i,x in enumrate(list):

        raw[j//4::4,j%4::4]=rgb[j//4::4,j%4::4,x]

84. export ANDROID_NDK_PATH=""

printenv查看所有环境变量

echo $ANDROID_NDK_PATH查看指定环境变量

85. linux中运行bash脚本,报错$'\r':command not found. 这是因为此脚本直接复制自windows下的脚本,换行有差异。可以使用命令去除\r:

sed -i 's/\r//' one-more.sh

86. 打开开发者选项,可以继续打开显示触控和坐标位置,或者使用命令:

adb shell getevent -p | grep -e "0035" -e "0036"  #获取事件体系里的宽高
adb shell getevent | grep -e "0035" -e "0036" #获取点击的事件坐标
adb shell input tap <x> <y> # 点击屏幕指定位置
adb shell input keyevent 26 # 按电源键锁屏/解锁
adb shell input swipe 500 1500 500 500 500 # 滑动解锁

但adb模拟点击的坐标貌似adb捕捉不到坐标。截图后图像的坐标和点击的坐标是一致的。

要获得adb shell的返回值,可以使用subprocess来替换os.system()

command=adb shell sumpsys window policy |grep screenState
subprocess.sun(command,shell=True,capture_output=True,Text=True)

87. 给定一个有序lits和一个数字,找到离这个数最近的索引:

np.argmin(np.ads(list-a))

88.对list排序,list.sort(),没有返回值

89. 除了mipi格式都是unpacked的格式,但是要区分大端还是小端。大端(Big-Endian)和小端(Little-Endian)是以字节为单位。这时有可能要交换位置。

使用Image.frombytes按字节读取数据。切片得到奇数和偶数位置的数据。对second_byte左移之后和first_byte按位求或。

    raw16bit = np.zeros([height, width])file = open(rawPath, 'rb')rawdata = file.read()file.close()stride = (width * 2)rawdata = Image.frombytes('L', (int(stride), int(height)), rawdata)rawdata = np.asarray(rawdata)data_per_line = int(width * 2)first_byte = np.uint16(rawdata[:, 0:data_per_line:2])second_byte = np.uint16(rawdata[:, 1:data_per_line:2])# get 10bit datafirst_pixel = np.bitwise_or(np.left_shift(second_byte, 8), first_byte)raw16bit[:, 0:width] = first_pixel

90.cv2 interpolate插值-align_corners

91. windows下cd到其他盘符:

直接cd d:不管用,应该cd /d d:或者直接d:

92.Windows Docker 安装 | 菜鸟教程

Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。

Docker Desktop 是 Docker 在 Windows 10 和 macOS 操作系统上的官方安装方式,这个方法依然属于先在虚拟机中安装 Linux 然后再安装 Docker 的方法。

93.

Shell 既是一种命令语言,又是一种程序设计语言。

sh(Bourne Shell)是一个早期的重要shell,1978年由史蒂夫·伯恩编写,并同Version 7 Unix一起发布。

bash(Bourne-Again Shell)是一个为GNU计划编写的Unix shell。1987年由布莱恩·福克斯创造。主要目标是与POSIX标准保持一致,同时兼顾对sh的兼容,是各种Linux发行版标准配置的Shell,在Linux系统上/bin/sh往往是指向/bin/bash的符号链接。

#!是一个特殊标记,说明这是一个可执行的脚本。除了第一行,其他以#开头的都不再生效,为注释。

94.linux上执行os.system(bash ./a.sh),但是在windows上会出错,因为没有bash。可以统一使用sub。subprocess,把.sh改成.bat文件。

95. c语言中没有string,所以通过string的成员函数.c_str()转换为char*,这样就能使用c函数如sprintf,否则报错cannot pass object non-trivial type

96.vim中复制

  • 按 v 进入 Visual Mode (按 V 为 Visual Line Mode,可以选择整行)

  • 使用方向键选中需要复制的文本

  • 按 y 复制选中的文本。

97. python中的list完全可以直接充当stack。由list可以再包装成stack类:

python 栈的简单实现-阿里云开发者社区

98.Python的`heapq`模块提供了优先队列(Priority Queue)的实现。这个模块使用堆(一种特殊的完全二叉树)来实现优先队列,因此它也被称为堆队列。在`heapq`模块中,最小的元素具有最高的优先级,最小的元素始终位于根节点 heap[0]。https://docs.python.org/zh-cn/3/library/heapq.html

那么堆排序就是heappush把所有数字放到优先级队列之后,再不停地heappop

入队的对象还可以是可以为元组。元组的第一个元素用于排序。

99。字典用来计数。Counter 是 dict 的子类

cnt = Counter()
>>> for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
...     cnt[word] += 1

100.Deque 队列是对栈或 queue 队列的泛化(该名称的发音为 "deck",是 "double-ended queue" 的简写形式)。一旦限定长度的deque满了,当新项加入时,同样数量的项就从另一端弹出。

appendleft(x) #添加 x 到左端。 popleft()

append(x) #添加 x 到右端。 pop()

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql-labs41-45关通关攻略

第41关 一.查询数据库 http://127.0.0.1/Less-41/?id-1%20union%20select%201,2,database()--http://127.0.0.1/Less-41/?id-1%20union%20select%201,2,database()-- 二.查表 http://127.0.0.1/Less-41/?id-1%20union%20select%201,2,(select%20group_concat(table_name)…

青岛实训day33(8/21)

1、配置一主二从mysql 1. mycat对mysql8不完全支持 2. mysql8主从问题不大get_pub_key1 3. gtids事务复制 4. 删除/etc/my.cnf 5. 同步data文件需要先停用mysql服务,删除data目录中的auto.cnf 6. gtid模式以及经典模式都需要锁表 flush tables with read lock;unlock tables;…

想学gis开发,java和c++哪个比较好?

java与C的应用场景不同&#xff0c;究竟选择谁&#xff0c;应该由开发者的兴趣方向来决定。 你选择Java&#xff0c;意味着以后的业务方向就是偏后台服务开发&#xff0c;如果你非得说我用java也可以写界面&#xff0c;对不起&#xff0c;别人不会。不管是从项目还是产品的角度…

【Redis】Redis 的消息队列 List、Streams—(六)

目录 一、消息队列二、List 方案三、Streams 方案 一、消息队列 我们一般把消息队列中发送消息的组件称为生产者&#xff0c;把接收消息的组件称为消费者&#xff0c;下图是一个通用的消息队列的架构模型&#xff1a; 消息队列在存取消息时&#xff0c;必须要满足三个需求&…

超详细超实用!!!java开发之IntelliJ IDEA下载与安装破解以及汉化教程(三)

云风网 云风笔记 云风知识库 一、安装包下载 1、官网下载 2、ideaIU-2024.2.0.2.exe 百度网盘资源 安装包下载完成后进行傻瓜式下一步安装就可以了 二、破解激活 由于IntelliJ IDEA可免费一个月&#xff0c;后续需要付费购买激活码&#xff0c;这里采用破解激活的方式 将…

从零上手CV竞赛Task2 # Datawhale AI夏令营

文章目录 平台参赛平台云平台 Task 1 从零上手CV竞赛下载baseline相关文件一键运行baseline&#xff01;&#xff08;大约需要25分钟&#xff09;赛题解析数据集提交结果违法标准注意事项 下载生成的文件结果如图最后要记得关机 不然一直消耗算力 Task 2 建模方案解读与进阶物体…

从 0 到 1 的Prompt 教程,来自Claude 官方,不会写 prompt的看这个足够

Claude 的强大&#xff0c;最近得到了很多网友的验证&#xff0c;甚至效果上面大有超越 GPT的许多声音。 所以从优秀的 Claude 中学习&#xff0c;将会是一个很好的起点。 这里&#xff0c;Claude 的开发者们提供了一个相当详细的 Prompt Engineering 教程。 这个教程能够全面…

若依后端 MyBatis改为MyBatis-Plus

引用 1.引入MyBatis-Plus依赖 在总目录的pom.xml&#xff0c;导入依赖 <mybatis-plus.version>3.4.3</mybatis-plus.version> <!-- mybatis-plus 增强CRUD --> <dependency> <groupId>com.baomidou</groupId> <artifactId>…

计算机毕业设计选题推荐-医院门诊预约-医院预约挂号微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Unity(2022.3.41LTS) - 着色器

目录 一、着色器的基本概念 二、表面着色器 一、着色器的基本概念 定义与作用&#xff1a; 着色器是一种在图形硬件上运行的程序&#xff0c;用于控制物体的颜色、纹理、光照、透明度等视觉属性。它通过对输入的几何数据&#xff08;如顶点位置、法线、纹理坐标等&#xff09…

项目:基于TCP的文件传输系统

项目介绍: 模拟FTP原理&#xff1a;客户端连接服务器后&#xff0c;向服务器发送一个文件。文件名可以通过参数指定&#xff0c;服务器端接收客户端传来的文件&#xff08;文件名随意&#xff09;&#xff0c;如果文件不存在自动创建文件&#xff0c;如果文件存在&#xff0c;…

代码随想录Day 23|回溯Part02,39.组合总和、40.组合总和Ⅱ、131.分割回文串

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 第七章 回溯算法part03一、题目题目一&#xff1a; 39. 组合总和解题思路&#xff1a;回溯三部曲剪枝优化小结&#xff1a; 题目二&#xff1a;40.组合总和Ⅱ解题思路&#xff1a;回溯三部曲 题目…

【项目源码】终于有人将打字游戏和编程英语结合起来啦!编程初学者的福音

Hello&#xff01;各位彦祖&#xff0c;亦菲们&#xff01;又是美好的一天&#xff01;今天给大家分享一个Java项目源码&#xff1a;Java打字游戏项目源码&#xff01; 看到这里&#xff0c;你可能会说&#xff01; 一个破打字游戏有什么可神气的&#xff01;&#xff01;&…

Leetcode面试经典150题-28.找出字符串第一个匹配项的下标

解法都在代码里&#xff0c;不懂就留言或者私信&#xff0c;比第一题稍微难点 用KMP解这个题简直就像大炮打蚂蚁&#xff0c;但是没办法&#xff0c;现在都是这么卷 package dataStructure.bigFactory;public class _28Strstr {public static int strStr(String s1, String s…

springboot3.x入门系列【5】支持unix sock 套接字服务

目录 一、简介 二、springBoot3.x 套接字的支持 1. 环境要求 2. springboot内置tomcat 2.1 支持unix 设置 unixDomainSocketPath 2.2 windows 下unix服务测试 3. springboot外置tomcat 3.1 tomcat 配置unix socket 套接字 3.2 启动tomcat 服务 3.3 nginx 支持unix…

android13固定app方向 强制app方向

总纲 android13 rom 开发总纲说明 1.前言 经常遇到客户有固定或者设置应用方向,不让他们改成其他方向的需求。今天我们就来处理这种问题。 2.问题分析 在 Android 10 之前,显示旋转的处理逻辑分散在多个类和模块中,Android 10 统一了这些逻辑,集中在 DisplayRotation.ja…

MATLAB 沿任意方向分层点云(82)

MATLAB 沿任意方向分层点云(82) 一、算法介绍二、算法实现1.代码2.效果更多内容参考: MATLAB点云处理学习 一、算法介绍 沿着某个方向,将点云分割为多层,每层点云使用不同颜色进行可视化显示,具体代码和不同方向的分层效果如下: 二、算法实现 1.代码 % Load point c…

【文档合集】软件类常用文档整理大全,软件工程,软件项目管理,技术标书方案,模

目的&#xff1a;规范系统开发流程&#xff0c;提高系统开发效率。 立项申请需求分析方案设计方案评审开发调整测试阶段系统培训试运行测试验收投入使用 所有文档过去进主页获取。 获取方式&#xff1a;本文末个人名片直接获取。 软件资料清单列表部分文档清单&#xff1a;工作…

【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch12 随机森林(Random Forest)

系列文章目录 监督学习&#xff1a;参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归&#xff08;SAheart.csv&#xff09; 【学习笔记】 陈强-机器学习-Python-…

(三)、软硬件全开源手表,具有Wi-Fi和蓝牙LE连接,并可连接互联网,超多表盘。(Watchy)

Watchy 是一款具有开源硬件和软件的 E-Ink watch。它采用准系统设计&#xff0c;利用 PCB 作为表身&#xff0c;可以原样佩戴&#xff0c;或进一步定制不同的 3D 打印表壳和表带。这是一款独特的设计&#xff0c;也是一个可穿戴开发平台&#xff0c;让用户可以创造自己的应用。…