当前位置: 首页 > news >正文

树莓派入门

目录

  • 前言
  • 系统烧录
    • 使用官方烧录工具
      • 选择操作系统
      • 选择存储卡
      • 配置
    • Win32DiskImager
  • 有屏幕树莓派开机
  • 树莓派关机
  • 无屏幕树莓派开机
    • 获取树莓派IP地址
      • 通过路由器获取
      • 共享网络方式获取
      • 给树莓派配置静态IP地址
        • 查找默认网关
        • 分盘给树莓派的IP地址
        • 修改树莓派DHCP配置文件
    • ssh登录
  • 让树莓派连接指定的网络
  • windows远程桌面连接
    • 树莓派新操作系统xrdp远程桌面黑屏的问题
  • VNC远程连接树莓派
    • VNC服务器
      • 图形界面打开
      • 命令行打开
      • 运行VNC服务器
      • VNC服务器开机自启
    • VNC查看器
    • 更改vnc分辨率
  • 文件传输
    • 使用U盘
    • VNC传输
      • vnc viewer 传输到 vnc server
      • vnc server传输到vnc viewer
  • python配置开发环境
    • thonny
  • C++配置编译环境
    • WiringPi库
      • 安装
        • deb安装在64系统上有错误
      • 命令使用
    • geany
    • 参考资料
  • linux操作系统命令和编辑器的使用
    • nano 编辑器
  • 系统备份和还原
    • 全卡备份
      • Win32DiskImager
      • 树莓派自带SD Card Copier
        • 查看块设备
      • 终端命令
    • 压缩备份
    • 系统还原
  • GPIO
    • 树莓派引脚编码
      • 板载编码
      • BCM编码
      • WiringPi编码
    • 查看引脚编码
    • 控制GPIO
  • GPIO多种控制方式
    • 1 使用GPIO命令
    • 2 直接通过终端命令进行控制
      • 步骤1:选定GPIO引脚
      • 步骤2: 使用GPIO开始控制
      • 步骤3: 注销GPIO引脚
    • 3 使用 Python 来控制LED灯
    • 4 使用C语言控制LED灯
  • 串口
    • 硬件上分类
    • 软件上分类
    • 硬件和软件对应关系
    • 串口通信步骤
      • 准备待调试的硬件串口
      • 安装minicom串口助手
      • 电脑安装串口调试工具
      • 使用USB转TTL工具连接电脑和树莓派, 开始通讯
  • 串口登录
    • 配置
    • 串口默认参数
    • 登录log

前言

最近发生了很多事情,很懈怠,由于时间不够用,没有继续研究树莓派,把前段时间研究树莓派的入门资料整理了一下,大多数是抄袭网上的.本来打算研究完树莓派,然后研究ARM64体系结构和汇编语言,然后再研究一下linux内核0.11版本.把内核0.11版本移植到树莓派上,然后在0.11版本的基础上直接升级到最新版本内核,保持功能和0.11版本基本相同,
这样能让后来学习linux内核的朋友少走弯路,理想很宏大,现实很残酷,时间不够用,希望以后有时间能实现这样的理想.
现在时间是2023年9月9日,其实树莓派看官网的资料是最好的学习资料.我主要参考B站和官网.
正式开始吧.兴趣是最好的老师,热爱是最好的动力,不要为了金钱和利益而损耗兴趣和热爱.

系统烧录

使用官方烧录工具

下载Raspberry Pi Imager工具.

选择操作系统

在这里插入图片描述

选择存储卡

在这里插入图片描述

配置

开启SSH,设置SSH登录方式
在这里插入图片描述在这里插入图片描述

Win32DiskImager

有屏幕树莓派开机

先连接HDMI显示器,再打开树莓派电源.

树莓派关机

#关闭电源
sudo poweroff
#立刻关机
sudo shutdown -h now
#立刻重启
sudo shutdown -r now
#2分钟之后关机
sudo shutdown -h +2

无屏幕树莓派开机

获取树莓派IP地址

通过路由器获取

把树莓派连接到路由器上,登录路由器可以获得树莓派的IP地址.

共享网络方式获取

  • 1.用网线连接笔记本和树莓派

  • 2.共享笔记本的wifi给树莓派

在这里插入图片描述

  • 3.查找树莓派IP地址
arp -a
ping 192.168.137.115

给树莓派配置静态IP地址

查找默认网关

ipconfig
#无线网络

分盘给树莓派的IP地址

hostname -I

两个条件:

  • 静态IP地址与路由器网段保持一致
  • 与路由器自动分配的IP地址不能冲突

当前给树莓派分配的IP地址就是满足条件的IP地址.

修改树莓派DHCP配置文件

#sudo nano /etc/dhcpcd.confinterface eth0
static ip_address=192.168.0.10 
static routers=192.168.0.1
static domain_name_servers=192.168.1.1 192.168.0.1

ssh登录

ssh pi@192.168.137.115

让树莓派连接指定的网络

windows10共享热点

在sd卡根目录下,新建wifi配置文件wpa_supplicant.conf。如果用windows系统编辑这个文件,需要选择采用Linux/Unix style格式的行结尾,例如用Notepad++,需要选择 “Edit” > “EOL Conversion” > “UNIX/OSX Format”。然后写入:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
network={ssid="USER-20230430HW"psk="12345678"priority=1id_str="notebook1"
}

在共享热点界面可以查看IP地址

在这里插入图片描述

windows远程桌面连接

sudo apt install xrdp

在这里插入图片描述

sudo raspi-config
#修改分辨率

树莓派新操作系统xrdp远程桌面黑屏的问题

这个问题我今天自己解决了,因为树莓派的新操作系统基于Debian bullseye. 对于bullseye默认的root用户(也就是pi)不能同时登录本地和远程桌面,这个和原来的操作系统是不一样的,所以用用户pi登录就会导致黑屏。解决方法是为远程桌面增加一个新的用户,用这个新的用户登录xrdp远程桌面就没有问题了。

先远程桌面登录,然后再使用SSH登录.

Linux下如何创建新用户

使用win10工具远程连接树莓派

VNC远程连接树莓派

VNC服务器

树莓派默认自带VNC服务器,默认关闭

图形界面打开

在这里插入图片描述
在这里插入图片描述

命令行打开

sudo raspi-config
#Interface Options -> VNC -> Yes

运行VNC服务器

vncserver-virtual

VNC服务器开机自启

sudo nano /etc/init.d/vncserver

#!/bin/sh
export USER='pi'eval cd ~$USERcase "$1" instart)#启动命令行.此处自定义分辨率,控制台号码或其它参数.su $USER -c 'vncserver-virtual -geometry 1920x1080 :1'echo "Starting VNCServer-virtual for $USER";;
stop)
su $USER -c 'vncserver-virtual -kill :1'
echo "VNCServer-virtual stopped"
;;
esac
exit 0
sudo chmod 755 /etc/init.d/vncserver
#脚本正常,但是这样开机不会自动运行
sudo update-rc.d vncserver defaults

VNC查看器

官网

VNC-Viewer-7.5.1-Windows.exe

更改vnc分辨率

树莓派VNC分辨率,修改无效的解决方案

#!/bin/sh
vncserver-virtual -geometry 1920x1080 :1

/etc/rc.local

su pi -c "exec /home/pi/Scripts/vncserver.sh"

文件传输

使用U盘

VNC传输

vnc viewer 传输到 vnc server

最上面图标tansfer files

vnc server传输到vnc viewer

python配置开发环境

默认安装python3

print("hello world")
exit()
pip install pandas

thonny

option修改中午界面

C++配置编译环境

WiringPi库

安装

WiringPi 官网上说明,只提供deb安装包,但是这个安装包只支持32位系统,使用动态库编程时,会有问题.

建议源码安装

#deb安装
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb#源码安装
git clone https://github.com/WiringPi/WiringPi.git
cd WiringPi
./build

deb安装在64系统上有错误

gcc -o led led.c /usr/lib/libwiringPi.so
/usr/bin/ld: /usr/lib/libwiringPi.so: error adding symbols: file in wrong formatfile /usr/lib/libwiringPi.so.2.52 
/usr/lib/libwiringPi.so.2.52: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV)

命令使用

gpio -v
gpio readall

geany

在树莓派上使用geany集成开发环境

参考资料

wiringpi 官网

树莓派4B-WiringPi库的安装和使用 (C和Python版)

linux操作系统命令和编辑器的使用

#切换为超级用户身份
sudo su
#切换为普通用户pi
su pi

nano 编辑器

nano 编辑器常用快捷键

ctrl + o #保存当前文档(也可用ctrl+s)
esc+u #撤销上次操作
ctrl+u #粘贴
ctrl+g #打开nano帮助文档

系统备份和还原

树莓派官方系统raspberry Pi OS有两个分区boot分区和root分区.

全卡备份

Win32DiskImager

1.在电脑中新建一个文件,后缀名为"*.img"
2.打开文件
3.设备选择root分区
4.读取

在这里插入图片描述

树莓派自带SD Card Copier

查看块设备

lsblk
#或者
fdisk -l

终端命令

# if 表示要复制的内容
# of 表示要复制到哪里去
sudo dd if=/dev/mmcblk0 of=dev/sda#新终端窗口中查看dd命令的进程号
sudo ps -ef | grep dd#注意pid需要换成查到的进程号
#发送USR1(用户自定义信号),查看copy进度
#结合watch就可以实时刷新
sudo watch -n 3 kill -USR1 pid

或者

sudo dd if=/dev/mmcblk0 of=dev/sda status=progress

备份到文件

压缩备份

df -hgit clone https://github.com/nanhantianyi/rpi-backup.git && cd rpi-backupsudo ./back.sh 备份镜像名字.img

系统还原

直接使用
全卡备份方式二:树莓派桌面系统自带SD Card Copier
全卡备份方式三:终端命令复制全卡

烧录使用
全卡备份方式一:第三方软件Win32DiskImager
压缩备份: rpi-backup脚本

GPIO

树莓派引脚编码

树莓派的引脚共有三种编码:
1.板载编码
2.BCM编码
3.WiringPi编码

板载编码

板载编码:这种编码方式是按照树莓派主板上引脚排针编号。分别对应1~40号排针。能够直接看见

在这里插入图片描述

BCM编码

  • 这种方式是参考 Broadcom SOC 的通道编号侧重CPU寄存器。
  • 使用 Python 控制树莓派引脚时,使用的是BCM编码。
    在这里插入图片描述

WiringPi编码

  • WiringPi编码,把扩展GPIO端口从0开始编码。
  • 使用 C语言 控制树莓派引脚时,使用的是WiringPi编码。
    在这里插入图片描述

查看引脚编码

#板载编码
pinout
#查看全部编码
gpio readall

控制GPIO

我们可以直接使用gpio命令操作树莓派GPIO 引脚来控制LED

#设置管脚为输出模式,-g表示是以BCM编码
#如果去掉这个参数表示以wiringPi编码方式
gpio -g mode 4 out# 读取管脚当前状态
gpio -g read 4 
# 设置管脚为高电平
gpio -g write 4 1
# 设置管脚为低电平
gpio -g write 4 0

GPIO多种控制方式

1 使用GPIO命令

gpio -g write 4 1
gpio -g write 4 0

2 直接通过终端命令进行控制

从内核空间找到引脚直接控制GPIO引脚

步骤1:选定GPIO引脚

cd /sys/class/gpio/
ls
export  gpiochip0  gpiochip504  unexport#BCM编码
echo 引脚编码 > export
gpio readall
echo 26 > export 
ls
export  gpio26  gpiochip0  gpiochip504  unexportcd gpio26

步骤2: 使用GPIO开始控制

echo out >direction
echo 1 > value
echo 0 > value

步骤3: 注销GPIO引脚

cd ..
echo 26 > unexport

3 使用 Python 来控制LED灯

使用RPi.GPIO库,编辑文件 led.py

import RPi.GPIO as GPIO 
from time import sleep
GPIO.setmode(GPIO.BCM) # 采用bcm编号方式
GPIO.setup(26,GPIO.OUT)# 指定使用26号端口
for i in range(1,10):GPIO.output(26,GPIO.HIGH) sleep(1)GPIO.output(26,GPIO.LOW) sleep(1)
GPIO.cleanup()

运行程序

python3 led.py

4 使用C语言控制LED灯

使用 WiringPi.h 库

#include <wiringPi.h>
#define Pin 25
int main()
{if (wiringPiSetup() < 0)return 1;pinMode(Pin, OUTPUT);for (int i = 0; i < 10; i++){digitalWrite(Pin, 1);delay(200);digitalWrite(Pin, 0);delay(200);}return 0;
}
gcc -o led lec.c -lwiringPi
sudo ./led

串口

硬件上分类

树莓派4B包括两个串口:

硬件串口/dev/ttyAMA0

mini串口 /dev/ttyS0

硬件串口,引脚8 TXD,引脚10 RXD

软件上分类

主串口-------->可以通过引脚实现通讯

辅助串口 --------> 不能使用GPIO引脚通信默认被分配给蓝牙端

注意:默认情况下,mini串口是禁用的,无论将它指定为主 UART 还是辅助 UART。

硬件和软件对应关系

在这里插入图片描述

串口通信步骤

  1. 准备待调试的硬件串口
  2. 安装minicom串口助手
  3. 电脑安装串口调试工具
  4. 使用USB转TTL工具连接电脑和树莓派, 开始通讯

准备待调试的硬件串口

1、使用命令 Is/dev -al 查看串口打开情况

ls /dev -al
#主串口没有打开
serial1 -> ttyAMA0

2、打开 mini URAT
在这里插入图片描述

ls /dev -al
lrwxrwxrwx   1 root root           5 Aug  9 00:27 serial0 -> ttyS0
lrwxrwxrwx   1 root root           7 Aug  9 00:27 serial1 -> ttyAMA0

3、将硬件串口设置为主串口

sudo nano /boot/config.txt
dtoverlay=pi3-miniuart-bt
force_turbo=1
#重启树莓派
sudo rebootls /dev -al
#硬件串口变成了主串口
lrwxrwxrwx   1 root root           7 Aug  9 00:33 serial0 -> ttyAMA0
lrwxrwxrwx   1 root root           5 Aug  9 00:33 serial1 -> ttyS0

安装minicom串口助手

在树莓派上安装 minicom

sudo apt install minicom

电脑安装串口调试工具

在这里插入图片描述

使用USB转TTL工具连接电脑和树莓派, 开始通讯

minicom -D /dev/ttyAMA0 -b 115200#在PC端串口调试助手发送数据
#在minicom发送数据到PC端串口调试助手#退出minicom
ctrl+a
z
x
yes

串口登录

串口登录特别重要,可能忘记IP地址和联网方式.使用串口登录可以设置IP地址和联网方式.

配置

#/boot/config.txt
[all]
enable_uart=1
dtoverlay=pi3-miniuart-bt
force_turbo=1
uart_2ndstage=1

在这里插入图片描述

串口默认参数

115200,8,1,N

登录log

输入用户名和密码登录到系统

Read start4.elf bytes  2251392 hnd 0x0000167f 
Read fixup4.dat bytes     5399 hnd 0x00000108 
Firmware: 82f3750a65fadae9a38077e3c2e217ad158c8d54 Mar 17 2023 10:50:39
0x00c03112 0x00000000 0x00001fff
MEM GPU: 76 ARM: 948 TOTAL: 1024
Starting start4.elf @ 0xfec00200 partition 0
PCI reset
+MESS:00:00:04.673007:0: arasan: arasan_emmc_open
MESS:00:00:04.674667:0: arasan: arasan_emmc_set_clock C0: 0x00800000 C1: 0x000e0047 emmc: 200000000 actual: 390625 div: 0x00000100 target: 400000 min: 400000 max: 400000 delay: 5
MESS:00:00:04.794894:0: arasan: arasan_emmc_set_clock C0: 0x00800000 C1: 0x000e0047 emmc: 200000000 actual: 390625 div: 0x00000100 target: 400000 min: 400000 max: 400000 delay: 5
MESS:00:00:04.807765:0: arasan: arasan_emmc_set_clock C0: 0x00800f00 C1: 0x000e0047 emmc: 200000000 actual: 390625 div: 0x00000100 target: 400000 min: 390000 max: 400000 delay: 5
MESS:00:00:04.841659:0: arasan: arasan_emmc_set_clock C0: 0x00800f06 C1: 0x000e0207 emmc: 200000000 actual: 50000000 div: 0x00000002 target: 50000000 min: 0 max: 50000000 delay: 1
MESS:00:00:04.861470:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:04.864976:0: brfs: File read: 2180 bytes
MESS:00:00:04.890168:0: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.894676:0: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:04.911424:0: HDMI1:EDID error reading EDID block 0 attempt 0
MESS:00:00:04.915927:0: HDMI1:EDID giving up on reading EDID block 0
MESS:00:00:04.923076:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:05.687574:0: gpioman: gpioman_get_pin_num: pin DISPLAY_DSI_PORT not defined
MESS:00:00:05.694884:0: *** Restart logging
MESS:00:00:05.696289:0: brfs: File read: 2180 bytes
MESS:00:00:05.706323:0: hdmi: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:05.711346:0: hdmi: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:05.721969:0: hdmi: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:05.726999:0: hdmi: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:05.732597:0: hdmi: HDMI:hdmi_get_state is deprecated, use hdmi_get_display_state instead
MESS:00:00:05.746386:0: hdmi: HDMI1:EDID error reading EDID block 0 attempt 0
MESS:00:00:05.751416:0: hdmi: HDMI1:EDID giving up on reading EDID block 0
MESS:00:00:05.762037:0: hdmi: HDMI1:EDID error reading EDID block 0 attempt 0
MESS:00:00:05.767057:0: hdmi: HDMI1:EDID giving up on reading EDID block 0
MESS:00:00:05.772656:0: hdmi: HDMI:hdmi_get_state is deprecated, use hdmi_get_display_state instead
MESS:00:00:05.781420:0: HDMI0: hdmi_pixel_encoding: 300000000
MESS:00:00:05.786888:0: HDMI1: hdmi_pixel_encoding: 300000000
MESS:00:00:05.792687:0: kernel=
MESS:00:00:05.800156:0: dtb_file 'bcm2711-rpi-4-b.dtb'
MESS:00:00:05.808788:0: brfs: File read: /mfs/sd/bcm2711-rpi-4-b.dtb
MESS:00:00:05.812036:0: Loaded 'bcm2711-rpi-4-b.dtb' to 0x100 size 0xcd71
MESS:00:00:05.831619:0: brfs: File read: 52593 bytes
MESS:00:00:05.850660:0: brfs: File read: /mfs/sd/overlays/overlay_map.dtb
MESS:00:00:05.928256:0: brfs: File read: 2347 bytes
MESS:00:00:05.932930:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:05.935871:0: dtparam: audio=on
MESS:00:00:05.943709:0: brfs: File read: 2180 bytes
MESS:00:00:05.969638:0: brfs: File read: /mfs/sd/overlays/vc4-kms-v3d-pi4.dtbo
MESS:00:00:06.034773:0: Loaded overlay 'vc4-kms-v3d'
MESS:00:00:06.185696:0: dtwarn: overlay 'pi3-miniuart-bt' has been renamed 'miniuart-bt'
MESS:00:00:06.191173:0: brfs: File read: 3913 bytes
MESS:00:00:06.210444:0: brfs: File read: /mfs/sd/overlays/miniuart-bt.dtbo
MESS:00:00:06.235223:0: Loaded overlay 'pi3-miniuart-bt'
MESS:00:00:06.292653:0: brfs: File read: 1819 bytes
MESS:00:00:06.296699:0: brfs: File read: /mfs/sd/cmdline.txt
MESS:00:00:06.299831:0: Read command line from file 'cmdline.txt':
MESS:00:00:06.305700:0: 'console=tty1 console=serial0,115200 root=PARTUUID=e413b287-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles'
MESS:00:00:06.433770:0: brfs: File read: 147 bytes
MESS:00:00:07.161984:0: brfs: File read: /mfs/sd/kernel8.img
MESS:00:00:07.164537:0: Loaded 'kernel8.img' to 0x80000 size 0x7d6bd0
MESS:00:00:08.344064:0: Kernel relocated to 0x200000
MESS:00:00:08.345920:0: Device tree loaded to 0x2eff2c00 (size 0xd3e4)
MESS:00:00:08.353794:0: uart: Set PL011 baud rate to 103448.300000 Hz
MESS:00:00:08.361242:0: uart: Baud rate change done...
MESS:00:00:08.363264:0: uart: Baud rate change done...
MESS:00:00:08.369681:0: gpioman: gpioman_get_pin_num: pin SDCARD_CONTROL_POWER not defined
RealVNC(R) Server 7.5.1 (r50075) ARMv8-A (May 30 2023 13:27:57)
Copyright (C) RealVNC Ltd.
RealVNC and VNC are trademarks of RealVNC Ltd and are protected by trademark
registrations and/or pending trademark applications in the European Union,
United States of America and other jurisdictions.
Protected by UK patent 2481870; US patent 8760366; EU patent 2652951.
See https://www.realvnc.com for information on VNC.
For third party acknowledgements see:
https://www.realvnc.com/docs/7/foss.html
OS: Debian GNU/Linux 11, Linux 6.1.21, aarch64On some distributions (in particular Red Hat), you may get a better experience
by running vncserver-virtual in conjunction with the system Xorg server, rather
than the old version built-in to Xvnc. More desktop environments and
applications will likely be compatible. For more information on this alternative
implementation, please see: https://www.realvnc.com/doclink/kb-546Running applications in /etc/vnc/xstartupVNC Server catchphrase: "Observe street private. Polaris Italian magnum."signature: ef-88-9e-5e-6a-a7-b1-42Log file is /home/pi/.vnc/raspberrypi:1.log
New desktop is raspberrypi:1Debian GNU/Linux 11 raspberrypi ttyAMA0raspberrypi login: pi
Password: 
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Aug  9 03:04:44 BST 2023 on ttyAMA0SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.pi@raspberrypi:~$ 

相关文章:

树莓派入门

目录 前言系统烧录使用官方烧录工具选择操作系统选择存储卡配置 Win32DiskImager 有屏幕树莓派开机树莓派关机无屏幕树莓派开机获取树莓派IP地址通过路由器获取共享网络方式获取给树莓派配置静态IP地址查找默认网关分盘给树莓派的IP地址修改树莓派DHCP配置文件 ssh登录 让树莓派…...

算法模型嵌入式 Mendix应用的开发示例

一、前言 根据埃森哲最新一项调查&#xff0c;2023年67%的企业持续加大在技术方面的投入&#xff0c;其中数据和AI应用是重中之重。AI在企业内部应用这个话题已经保持了十多年的热度&#xff0c;随着ChatGPT为代表的生成式AI技术的出现&#xff0c;这一话题迎来又一波的高潮。…...

如何使用Cygwin编译最新版的Redis源码,生成适用于Windows的Redis

文章目录 一、准备Cygwin环境二、下载Redis源码三、编译redis-7.2.01. 执行make命令2. 重新执行make命令3. 再次执行make命令4. 将编译后的可执行文件及依赖放到同一个文件夹5. 测试编译生成的可执行程序 四、换其他redis版本重新编译1. 编译redis-7.0.122. 编译redis-6.2.133.…...

Linux 修改SSH端口

如果防火墙&#xff0c;或防火墙已经开启&#xff0c;需要先开放2222端口 firewall-cmd --add-port2222/tcp --permanent --zonepublic firewall-cmd --reload编辑文件 vim /etc/ssh/sshd_config&#xff1a; #Port 22 Port 2222 # 打开注释&#xff0c;并修改为以下值 Clien…...

Redis经典问题:缓存穿透

&#xff08;笔记总结自《黑马点评》项目&#xff09; 一、产生原因 用户请求的数据在缓存中和数据库中都不存在&#xff0c;不断发起这样的请求&#xff0c;给数据库带来巨大压力。 常见的解决方式有缓存空对象和布隆过滤器。 二、缓存空对象 思路&#xff1a;当我们客户…...

DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION (论文解析)

DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION 摘要1 介绍2 相关工作3 重新审视 Transformers 和 DETR4 方法4.1 用于端到端目标检测的可变形transformer4.2 Deformable Detr的其他改进和变型5 实验5.1 和DETR 比较5.2 消融实验5.3 与最先进方法的…...

网络连接评分机制之NetworkFactory

在开机时,各个提供网络连接的对象需要向ConnectivityService注册自己,并把自己所提供的网络的分值告诉ConnectivityService。 为了ConnectivityService便于统一管理,每一个具备提供网络服务的对象都需要创建一个NetworkFactory的子类对象,并利用该对象注册自己,以及提供自…...

极致精细的jmeter+ant+jenkins 搭建接口自动化测试

一、jmeter 相信大家对jmeter并不陌生哈&#xff0c;如果没有安装和配置环境的小伙伴&#xff0c;可以直接找到我哈&#xff0c;我发给你。 二、ant 安装ant 第一步&#xff1a;下载ant http://ant.apache.org/ 第二步&#xff1a;配置ant window中设置ant环境变量&…...

Unity物体查找方式

参考资料 cUnity中使用GameObject.Find、Transform.Find查找GameObject_思月行云的博客-CSDN博客 GameObject.Find 通过名字或路径查找游戏对象。 GameObject.Find("GameObject"); GameObject.Find("GameObject/ChildGameObject); 使用规范: 1.无法查找隐藏…...

【Spring容器的启动流程】

Spring容器的启动流程主要分为以下几个步骤&#xff1a; 加载配置文件&#xff1a;Spring容器会从指定的配置文件中读取配置信息&#xff0c;包括bean的定义、依赖关系、AOP切面等。 创建容器&#xff1a;Spring容器启动后会创建一个容器实例&#xff0c;容器负责管理bean的生…...

Python---字符串

字符串特点 1. 只可以存储字符串 2. 长度任意 (取决于内存大小) 3. 支持下标索引 4. 允许重复字符串存在 5. 不可以修改 (增加或删除元素等) 6. 支持for和while循环 字符串的下标索引 # 字符串的下标索引 从前向后&#xff0c;下标从0开始 从后向前&#xff0c;下标从-1开始…...

MySQL数据 - 索引

MySQL数据库 - 索引 1:什么是数据库索引?2:都有哪些类型的索引呢?3:MySQL数据库每种索引的底层实现原理,每种索引为什么这么实现?4:上面索引实现基本上是B+树,为什么不用别的数据结构呢?4-1:那为什么不是二叉树呢?4-2:为什么不是红黑树呢?4-3:为什么不是哈希索引…...

长安链BaaS服务平台调研

目录 一、菜单功能二、其他说明2.1、服务平台的部署方式2.2、链本身2.3、建链流程2.4、支持连接已部署的链2.5、链治理投票2.6、支持动态节点操作2.7、支持应用 长安链ChainMaker管理平台文档地址&#xff1a;https://docs.chainmaker.org.cn 一、菜单功能 菜单子菜单/功能点…...

怎么关闭php错误提示?两者方法分享

PHP程序员在开发过程中经常会遇到各种错误。为了方便查错&#xff0c;PHP默认会输出错误提示。但在生产环境中&#xff0c;这些错误提示信息不仅可能暴露你的代码结构&#xff0c;还会影响网站的性能和安全性。因此&#xff0c;关闭 PHP 的错误提示信息是一个很有必要并且很简单…...

Android Aidl跨进程通讯(三)--进阶使用

学更好的别人&#xff0c; 做更好的自己。 ——《微卡智享》 本文长度为2478字&#xff0c;预计阅读6分钟 前言 Android的AIDL使用和异常报错都已经介绍过了&#xff0c;今天这篇还是在原来的Demo基础上加入几个AIDL的进阶使用方法。 】 AIDL进阶使用 微卡智享 in,out,inout的使…...

vue.js+nodejs家庭个人理财收支管理系统5x6nf

本收支管理系统以vue.js作为框架&#xff0c;nodejs语言&#xff0c;B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块&#xff1a;用户管理、收入分类、支出分类、每日收入、每日支出等模块。 本文的组织结构如下&#xff1a; 1、绪论。综述了本文的研究背景…...

怎样去掉win11快捷方式的小箭头

前有创造注册表新值的方法,现在有了注册表加文件的方法 开始 先下载这个文件,里面有要用到的信息 下载 保存文件到电脑,并解压 有两个文件, 一个是 Remove_shortcut_arrow_icon.reg 一个是blank.ico 把第二个文件移动到 C:\Windows 文件夹, 然后点击打开文件, 如果提示是…...

Django项目如何配置日志文件信息

1、以dict的方式配置在settings.py中 # 日志文件简单配置LOGGING {"version": 1,"disable_existing_loggers": False,"handlers": {"file": {"level": "DEBUG","class": "logging.FileHandler&…...

遇到一个异步任务后是否会直接加入到异步队列当中

在javascript中&#xff0c;异步任务不会立即加入到异步队列&#xff08;任务队列&#xff09;中&#xff0c;而是根据不同的异步操作类型和执行环境&#xff0c;将对应的回调函数函数或事件加入到不同的队列中 javascript中常见的异步操作包括&#xff1a; 定时器&#xff1…...

SUSE Linux文件系统在线扩容

前几天巡检发现&#xff0c;SUSE 12文件系统/vg01下面的某个文件空间不足&#xff0c;挂载点是/oracle,容量不够&#xff0c;需要进行扩容。 新的空间是从一台HP的存储上新映射的。由于映射的LUN是从windows主机上回收&#xff0c;然后直接映射的&#xff0c;所以在linux识别新…...

智能电话机器人的出现,能够解决哪些问题?

经济的繁荣与高速的发展&#xff0c;使得电销这个方式快速地融合在房地产与金融投资等大部分行业上。在电销人员与客户的沟通上&#xff0c;难免会出现很多问题&#xff0c;毕竟所面对的客户都是各行各业&#xff0c;他们有着不同的经历和身份。 对于时常需要处理客户投诉、安…...

16-数据结构-图的存储结构

简介&#xff1a;主要为图的顺序存储和链式存储。其中顺序存储即邻接矩阵的画法以及代码&#xff0c;邻接矩阵又分为有权图和无权图&#xff0c;区别就是有数据的地方填权值&#xff0c;无数据的地方可以填0或者∞&#xff0c;而有权图和无权图&#xff0c;又细分为有向图和无向…...

递推算法及常见示例(C++、Python实现)

递推算法及常见示例&#xff08;C、Python实现&#xff09; 递推算法是一种用若干步可重复运算来描述复杂问题的方法&#xff0c;它是一种序列计算中的常用算法。通常是通过计算前面的一些项来得出序列中的指定项的值。其思想是把一个复杂的庞大的计算过程转化为简单过程的多次…...

vscode调试程序设置

主要设置和json内容如下&#xff1a; cpp_properties.json内容&#xff1a; {"configurations": [ //C intellisense插件需要这个文件&#xff0c;主要是用于函数变量等符号的只能解析{"name": "Win32","includePath": ["${work…...

电商邮件营销攻略:教你如何有效运营邮件营销策略!

作为一种领先的营销渠道&#xff0c;电子邮件营销已被电子商务公司作为推动客户参与度、促进销售和提高ROI的不可或缺的方式。在这篇文章中&#xff0c;我们将深入探讨电子商务公司为什么要做EDM邮件营销&#xff1f;以及电商公司怎么做邮件营销&#xff1f; 一、电子商务公司…...

centos+jenkins+pycharm

思路&#xff1a;架构 一. 在centos上搭建jenkins环境 二. pycharm与gitee建立连接 三. 访问jenkins&#xff0c;添加任务 3.1 添加一个自由风格的任务 3.2 添加git项目路径及访问git的账号和密码 3.3 执行start.sh脚本 四. 浏览器访问jenkins执行任务...

Linux-Centos7安装Docker

文章目录 一、前言二、Docker安装1、Docker及系统版本2、Docker的自动化安装3、Docker手动安装3.1、卸载Docker&#xff08;可选&#xff09;3.2、设置源仓库3.3、Docker安装3.4、Docker启动3.5、验证是否安装成功3.5.1、拉取镜像3.5.2、查看镜像3.5.3、运行镜像 3.6、删除Dock…...

前端Vue入门-day06-路由进阶

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 路由的封装抽离 声明式导航 导航链接 两个类名 自定义高亮类名 跳转传参 1. 查询参数传参 2. 动态…...

数据库服务器是什么意思?数据库服务器有哪些?

数据库服务器是什么意思?现在市场上有很多的服务器的类型&#xff0c;比如数据库服务器&#xff0c;但是很多人对数据库服务器是什么意思?数据库服务器有哪些并不是很熟悉&#xff0c;那么&#xff0c;聚名企服为您详解一下。 一&#xff1a;数据库服务器是什么意思 数据库服…...

配电网智能软开关(sop)规划模型matlab

目录 1 主要内容 2 部分程序 3 程序结果 1 主要内容 该程序参考文献《基于改进灵敏度分析的有源配电网智能软开关优化配置》&#xff0c;采用二阶锥算法&#xff0c;以改进的IEEE33节点配电系统模型作为分析对象&#xff0c;以联络开关位置作为sop安装备选位置&#xff0c;以…...