企业网站报价方案/竞价推广代运营企业
1、安装交叉编译器:
ARM交叉编译器的官网:交叉编译器
a、使用wget下载:
wget https://releases.linaro.org/components/toolchain/binaries/latest/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
b、解压安装:
tar xvf gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz //解压交叉编译器
mv gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf /opt/ //将交叉编译器移至opt文件下
vim ~/.bashrc //使用vim配置文件
# add: export PATH=$PATH:/opt/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin //在文件末尾添加交叉编译器路径
source ~/.bashrc //重新加载用户的 Bash 配置文件
c、查看版本:
arm-linux-gnueabihf-gcc -v
结果如图所示:
d、安装设备树编译器:
sudo apt-get install device-tree-compiler
device-tree-compiler
是一个用于编译和反编译设备树(Device Tree)的工具。
2、编译U-Boot:
U-Boot的官网:U-Boot官网,从上面可以下载所有版本的U-Boot。也可以去荔枝派的网站下载V3s的U-Boot:V3s的U-Boot。
a、使用Git下载U-Boot源代码:
git clone https://github.com/Lichee-Pi/u-boot.git -b v3s-current
b、编译生成二进制文件:
cd u-boot
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- LicheePi_Zero_defconfig
make ARCH=arm menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
//如果需要保存编译日志则使用以下指令:
time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 2>&1 | tee build.log
3、设置U-Boot从TF卡启动:
a、修改 include/configs/sun8i.h
, 使u-boot可以直接从tf卡启动:
#define CONFIG_BOOTCOMMAND "setenv bootm_boot_mode sec; " \"load mmc 0:1 0x41000000 zImage; " \"load mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-dock.dtb; " \"bootz 0x41000000 - 0x41800000;"#define CONFIG_BOOTARGS "console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw vt.global_cursor_default=0"
b、在U-Boot中设置:
setenv bootargs 'cconsole=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw vt.global_cursor_default=0'
setenv bootcmd 'fatload mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero.dtb;fatload mmc 0:1 0x41000000 zImage;bootz 0x41000000 - 0x41800000'
saveenv
4、烧录到TF卡中:
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
在当前目录下生成了u-boot-sunxi-with-spl.bin
,将其烧录到8K偏移处启动。
5、U-Boot文件结构:
├── api 存放uboot提供的API接口函数
├── arch 平台相关的部分我们只需要关心这个目录下的ARM文件夹
│ ├──arm
│ │ └──cpu
│ │ │ └──armv7
│ │ └──dts
│ │ │ └──*.dts 存放设备的dts,也就是设备配置相关的引脚信息
├── board 对于不同的平台的开发板对应的代码
├── cmd 顾名思义,大部分的命令的实现都在这个文件夹下面。
├── common 公共的代码
├── configs 各个板子的对应的配置文件都在里面,我们的Lichee配置也在里面
├── disk 对磁盘的一些操作都在这个文件夹里面,例如分区等。
├── doc 参考文档,这里面有很多跟平台等相关的使用文档。
├── drivers 各式各样的驱动文件都在这里面
├── dts 一种树形结构(device tree)这个应该是uboot新的语法
├── examples 官方给出的一些样例程序
├── fs 文件系统,uboot会用到的一些文件系统
├── include 头文件,所有的头文件都在这个文件夹下面
├── lib 一些常用的库文件在这个文件夹下面
├── Licenses 这个其实跟编译无关了,就是一些license的声明
├── net 网络相关的,需要用的小型网络协议栈
├── post 上电自检程序
├── scripts 编译脚本和Makefile文件
├── spl second program loader,即相当于二级uboot启动。
├── test 小型的单元测试程序。
└── tools 里面有很多uboot常用的工具。
6、U-Boot配置:
a、U-Boot配置:
make ARCH=arm menuconfig
b、Architecture select架构选择:
c、ARM architecture:
d、LCD配置:
[*] Enable graphical uboot console on HDMI, LCD or VGA 这个就是在显示设备上使能串口控制
[ ] VGA via LCD controller support 使能支持VGA通过LCD的控制器,就是LCD和VAG转换需要的控制器
(x:800,y:480,depth:18,pclk_khz:33000,le:87,ri:40,up:31,lo:13,hs:1,vs:1,sync:3,vmode:0) LCD pane
> 该选项就是配置LCD的分辨率的配置选项可以看到x是800 y是480 等等一些关于LCD的配置内容,点击回车进去可以对其进行修改。
(1) LCD panel display clock phase 这个是LCD的显示时钟相位
() LCD panel power enable pin LCD的电源使能引脚
() LCD panel reset pin LCD的复位引脚
(PB4) LCD panel backlight pwm pin 背光PWN引脚 这个应该是调节亮度的引脚PB4
[*] LCD panel backlight pwm is inverted 反转PWN背光引脚
[ ] LCD panel needs to be configured via i2c LCD panel support (Generic parallel interface LCD panel) ---> 这个选择支持的LCDpanel(X) Generic parallel interface LCD panel 这里选择支持通用的并行的LCD接口( ) Generic lvds interface LCD panel 这个是LVDS接口( ) MIPI 4-lane, 513Mbps LCD panel via SSD2828 bridge chip ( ) eDP 4-lane, 1.62G LCD panel via ANX9804 bridge chip ( ) Hitachi tx18d42vm LCD panel ( ) tl059wv5c0 LCD panel
(0) GMAC Transmit Clock Delay Chain
e、时钟频率设置:
f、开机等待时间设置(以s为单位):
g、SPL设置:
SPL / TPL ---> 这个就是SPL相关的配置了
[*] MMC raw mode: by sector 按扇区
(0x50) Address on the MMC to load U-Boot from mmc加载uboot的地址
[*] Support GPIO 支持GPIO
[*] Support I2C 支持I2C
[*] Support common libraries 支持通用lib
[*] Support disk paritions 支持分区
[*] Support generic libraries 支持一般lib库
[*] Support MMC 支持MMC
[*] Support power drivers 支持电源驱动
[*] Support serial 支持串口
7、U-Boot适配Ethernet:
a、配置菜单:
Device Drivers ---->
[* ]Network device suppoty ------>
[*] Allwinner Sun8i Ethernet MAC support
b、修改设备树文件:
sun8i-v3s-licheepi-zero.dts:
/dts-v1/;
#include "sun8i-v3s.dtsi"
#include "sunxi-common-regulators.dtsi"/ {model = "Lichee Pi Zero";compatible = "licheepi,licheepi-zero", "allwinner,sun8i-v3s";aliases {/**添加以下程序**/ethernet0 = &emac;serial0 = &uart0;};chosen {stdout-path = "serial0:115200n8";};
};&mmc0 {pinctrl-0 = <&mmc0_pins_a>;pinctrl-names = "default";broken-cd;bus-width = <4>;vmmc-supply = <®_vcc3v3>;status = "okay";
};&uart0 {pinctrl-0 = <&uart0_pins_a>;pinctrl-names = "default";status = "okay";
};/**添加以下程序**/
&emac{phy = <&phy0>;phy-mode = "mii";allwinner,use-internal-phy;allwinner,leds-active-low;status = "okay";phy0: ethernet-phy@0 {reg = <1>;};
};&usb_otg {dr_mode = "otg";status = "okay";
};&usbphy {usb0_id_det-gpio = <&pio 5 6 GPIO_ACTIVE_HIGH>;status = "okay";
};
sun8i-v3s.dtsi:
#include <dt-bindings/clock/sun8i-v3s-ccu.h>
#include <dt-bindings/reset/sun8i-v3s-ccu.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/pinctrl/sun4i-a10.h>/ {#address-cells = <1>;#size-cells = <1>;interrupt-parent = <&gic>;cpus {#address-cells = <1>;#size-cells = <0>;cpu@0 {compatible = "arm,cortex-a7";device_type = "cpu";reg = <0>;clocks = <&ccu CLK_CPU>;};};timer {compatible = "arm,armv7-timer";interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;};clocks {#address-cells = <1>;#size-cells = <1>;ranges;osc24M: osc24M_clk {#clock-cells = <0>;compatible = "fixed-clock";clock-frequency = <24000000>;clock-output-names = "osc24M";};osc32k: osc32k_clk {#clock-cells = <0>;compatible = "fixed-clock";clock-frequency = <32768>;clock-output-names = "osc32k";};};soc {compatible = "simple-bus";#address-cells = <1>;#size-cells = <1>;ranges;/**添加以下程序**/syscon: syscon@01c00000 {compatible = "allwinner,sun8i-h3-syscon","syscon";reg = <0x01c00000 0x34>;};mmc0: mmc@01c0f000 {compatible = "allwinner,sun7i-a20-mmc";reg = <0x01c0f000 0x1000>;clocks = <&ccu CLK_BUS_MMC0>,<&ccu CLK_MMC0>,<&ccu CLK_MMC0_OUTPUT>,<&ccu CLK_MMC0_SAMPLE>;clock-names = "ahb","mmc","output","sample";resets = <&ccu RST_BUS_MMC0>;reset-names = "ahb";interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; status = "disabled";#address-cells = <1>;#size-cells = <0>;};mmc1: mmc@01c10000 {compatible = "allwinner,sun7i-a20-mmc";reg = <0x01c10000 0x1000>;clocks = <&ccu CLK_BUS_MMC1>,<&ccu CLK_MMC1>,<&ccu CLK_MMC1_OUTPUT>,<&ccu CLK_MMC1_SAMPLE>;clock-names = "ahb","mmc","output","sample";resets = <&ccu RST_BUS_MMC1>;reset-names = "ahb";interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;status = "disabled";#address-cells = <1>;#size-cells = <0>;};mmc2: mmc@01c11000 {compatible = "allwinner,sun7i-a20-mmc";reg = <0x01c11000 0x1000>;clocks = <&ccu CLK_BUS_MMC2>,<&ccu CLK_MMC2>,<&ccu CLK_MMC2_OUTPUT>,<&ccu CLK_MMC2_SAMPLE>;clock-names = "ahb","mmc","output","sample";resets = <&ccu RST_BUS_MMC2>;reset-names = "ahb";interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;status = "disabled";#address-cells = <1>;#size-cells = <0>;};usb_otg: usb@01c19000 {compatible = "allwinner,sun8i-h3-musb";reg = <0x01c19000 0x0400>;clocks = <&ccu CLK_BUS_OTG>;resets = <&ccu RST_BUS_OTG>;interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;interrupt-names = "mc";phys = <&usbphy 0>;phy-names = "usb";extcon = <&usbphy 0>;status = "disabled";};usbphy: phy@01c19400 {compatible = "allwinner,sun8i-v3s-usb-phy";reg = <0x01c19400 0x2c>,<0x01c1a800 0x4>;reg-names = "phy_ctrl","pmu0";clocks = <&ccu CLK_USB_PHY0>;clock-names = "usb0_phy";resets = <&ccu RST_USB_PHY0>;reset-names = "usb0_reset";status = "disabled";#phy-cells = <1>;};ccu: clock@01c20000 {compatible = "allwinner,sun8i-v3s-ccu";reg = <0x01c20000 0x400>;clocks = <&osc24M>, <&osc32k>;clock-names = "hosc", "losc";#clock-cells = <1>;#reset-cells = <1>;};rtc: rtc@01c20400 {compatible = "allwinner,sun6i-a31-rtc";reg = <0x01c20400 0x54>;interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,<GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;};pio: pinctrl@01c20800 {compatible = "allwinner,sun8i-v3s-pinctrl";reg = <0x01c20800 0x400>;interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,<GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&osc32k>;clock-names = "apb", "hosc", "losc";gpio-controller;#gpio-cells = <3>;interrupt-controller;#interrupt-cells = <3>;/**添加以下程序**/emac_rgmii_pins: emac0@0 {allwinner,pins = "PD0", "PD1", "PD2", "PD3","PD4", "PD5", "PD7","PD8", "PD9", "PD10","PD12", "PD13", "PD15","PD16", "PD17";allwinner,function = "emac";allwinner,drive = <SUN4I_PINCTRL_40_MA>;allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;};uart0_pins_a: uart0@0 {pins = "PB8", "PB9";function = "uart0";bias-pull-up;};mmc0_pins_a: mmc0@0 {pins = "PF0", "PF1", "PF2", "PF3","PF4", "PF5";function = "mmc0";drive-strength = <30>;bias-pull-up;};};timer@01c20c00 {compatible = "allwinner,sun4i-a10-timer";reg = <0x01c20c00 0xa0>;interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,<GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;clocks = <&osc24M>;};wdt0: watchdog@01c20ca0 {compatible = "allwinner,sun6i-a31-wdt";reg = <0x01c20ca0 0x20>;interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;};uart0: serial@01c28000 {compatible = "snps,dw-apb-uart";reg = <0x01c28000 0x400>;interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;reg-shift = <2>;reg-io-width = <4>;clocks = <&ccu CLK_BUS_UART0>;resets = <&ccu RST_BUS_UART0>;status = "disabled";};uart1: serial@01c28400 {compatible = "snps,dw-apb-uart";reg = <0x01c28400 0x400>;interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;reg-shift = <2>;reg-io-width = <4>;clocks = <&ccu CLK_BUS_UART1>;resets = <&ccu RST_BUS_UART1>;status = "disabled";};uart2: serial@01c28800 {compatible = "snps,dw-apb-uart";reg = <0x01c28800 0x400>;interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;reg-shift = <2>;reg-io-width = <4>;clocks = <&ccu CLK_BUS_UART2>;resets = <&ccu RST_BUS_UART2>;status = "disabled";};/**添加以下程序**/emac: ethernet@1c30000 {compatible = "allwinner,sun8i-h3-emac";reg = <0x01c30000 0x104>, <0x01c00030 0x4>;reg-names = "emac", "syscon";interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;resets = <&ccu RST_BUS_EMAC>, <&ccu RST_BUS_EPHY>;reset-names = "ahb", "ephy";clocks = <&ccu CLK_BUS_EMAC>, <&ccu CLK_BUS_EPHY>;clock-names = "ahb", "ephy";#address-cells = <1>;#size-cells = <0>;status = "disabled";};gic: interrupt-controller@01c81000 {compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";reg = <0x01c81000 0x1000>,<0x01c82000 0x1000>,<0x01c84000 0x2000>,<0x01c86000 0x2000>;interrupt-controller;#interrupt-cells = <3>;interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;};};
};
编译之后出现以下,则代表网卡可以使用:
c、设置网络:
setenv ipaddr 192.168.1.50 //开发板 ip 地址,可以不设置,使用 dhcp 命令来从路由器获取 IP 地址。
setenv ethaddr b8:ae:1d:01:00:00 //开发板的 MAC 地址,一定要设置。
setenv gatewayip 192.168.1.1 //网关地址。
setenv netmask 255.255.255.0 //子网掩码。
setenv serverip 192.168.1.4 //服务器 IP 地址,也就是 Ubuntu 主机 IP 地址,用于调试代码。
saveenv
8、小问题:
当出现以下情况,则说明网络正常:
当出现以下情况,则说明网络异常:
出现异常的原因之一是,当时使用的虚拟机,没有将网络设置为桥接模式,但是板子连接的是外部的路由器,由于网关不通,造成的网络不通,将虚拟机改成桥接模式之后,再进行ping,即可联通。
相关文章:

全志V3s之U-Boot
1、安装交叉编译器: ARM交叉编译器的官网:交叉编译器 a、使用wget下载: wget https://releases.linaro.org/components/toolchain/binaries/latest/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xzb、解…...

【华为OD】依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列
题目描述主管期望你来实现英文输入法单词联想功能需求如下:依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列,如果联想不到,请输出用户输入的单词前缀注意1.英文单词联想时,区分大小写2.缩略形式如"dont",判定…...

CentOS 7.9安装宝塔面板,安装gitlab服务器
docker安装方式比较慢,安装包1.3GB 安装后启动很慢 docker logs q18qgztxdvozdv_gitlab-ce-gitlab-1 docker ps docker exec -it q18qgztxdvozdv_gitlab-ce-gitlab-1 sh cd /etc/gitlab cat initial_root_password 软件商店安装方式,失败了2023.12…...

AutoGen多代理对话项目示例和工作流程分析
在这篇文章中,我将介绍AutoGen的多个代理的运行。这些代理将能够相互对话,协作评估股票价格,并使用AmCharts生成图表。 我们创建对话的目的是要求代理分析特定公司的股票价格,并制作股票价格图表。 为了实现这一目标,…...

多维时序 | MATLAB实现RIME-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测
多维时序 | MATLAB实现RIME-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现RIME-CNN-LSTM-Multihead-Attention多头注意力机制多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现RIME-CNN-…...

使用高防IP防护有哪些优势
高防IP是针对互联网服务器在遭受大流量的DDoS攻击后导致服务不可用的情况下,推出的付费增值服务,用户可以通过配置高防IP,将攻击流量引流到高防IP,确保源站的稳定可靠。高防IP相当于搭建完转发的服务器。 高防IP有两种接入方式&a…...

android-xml语法
xml解析器 Android的XML文件语法是由Android系统中的解析器解析的。具体来说,Android使用了一个名为"Android Asset Packaging Tool (AAPT)"的工具来解析和处理XML文件。AAPT负责将XML文件编译为二进制格式,并在构建过程中将其打包到Android应…...

【银行测试】第三方支付平台业务流,功能/性能/安全测试方法...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、第三方支付平台…...

全志V3s之显示当前文件路径
新移植的kernel和根文件系统,其终端显示只有一个#号,不方便查看,更改以下配置,使得可以显示全路径。修改如下: export PS1[\u\h \w]\$这个是即时生效的,所以如果要重启或者重新打开窗口也生效的话就要把这…...

小程序跳转tabbar,tabbar页面不刷新
文章地址:12.小程序 之切换到tabBar页面不刷新问题_360问答 解决办法备份: wx.switchTab:跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面 wx.reLaunch:关闭所有页面,打开到应用内的某个页面。 wx.reLa…...

在SpringData JPA 中实现对持久层的操作
1.导入依赖 hibernate 这个依赖自带实现JPA接口 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><depen…...

C++ SEH结构化异常捕获处理(双平台支持 Linux、Windows)。
测试: try_ctor();try_call([](){printf("1111111111111111111111\r\n");int* p NULL;*p 100;throw 1;// try_eeh();}, [](){printf("2222222222222222222222\r\n");}); 设置NULL指针P的值引发程式崩溃,可以被正确捕获࿰…...

jvm-sandbox-repeater 精简版部署之standalone模式
jvm-sandbox-repeater 仅仅提供了录制回放的能力,如果需要完成业务回归、实时监控、压测等平台,后面须要有一个数据中心负责采集数据的加工、存储、搜索,repeater-console提供了简单的demo示例;一个模块管理平台负责管理JVM-Sandb…...

【JavaWeb笔记】单选框,结合Servlet
各个部分的作用 jsp部分 form action"...":表单标签,供用户提交数据。内部的submit点击之后相当于是点action的URL input type"radio":输入类型为单选框。把name设置为一样的,这样效果上就是单选ÿ…...

Docker 与 Podman:揭示容器编排的最佳 25 大常见问题解答
让我们告诉你一件事。 这不仅仅是这两个强大平台之间的普通比较。 相反,我们分析并列出了有关 Docker 与 Podman 的最紧迫问题。 但这里有一件事——这些问题不仅被技术角度所包围。 我们还深入研究了业务环境,因为我们知道这不仅仅是关于代码。这是…...

Spark分布式内存计算框架
目录 一、Spark简介 (一)定义 (二)Spark和MapReduce区别 (三)Spark历史 (四)Spark特点 二、Spark生态系统 三、Spark运行架构 (一)基本概念 &#x…...

安装python第三方库后,在pycharm中不能正常导入
python小白学习opencv,使用pip安装完opencv库后import cv2报错,按照如下设置解决: 需要正确设置python解释器路径...

从“食”到“用”,燕之屋的未来增长价值几何?
12月12日,燕窝行业头部企业燕之屋在港交所上市。 作为新消费的热门赛道,近年滋补品的关注度一直比较高。“领头燕”登陆资本市场,是消费者健康养生意识不断提高,滋补品成为营养补充主流的一个积极信号。 长期以来,中…...

C++使用策略模式,减少使用switch...case...
目录 原理函数类模板函数使用switch...case...不使用switch...case... 知识点decltypestd::remove_reference 原理 函数 #include <iostream> #include <functional> #include <map>void fun1(int a, int b) {std::cout << "fun1 : a "<…...

.NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
WebAppDbTest 项目准备 项目准备1、.net cli 创建项目2、nuget 包引用和项目结构2.1、项目添加相关 nuget 包2.2、WebAppDbTest 项目结构 3、项目代码说明3.1、CSharp/C# 类文件说明3.2、json 配置文件说明 4、项目运行预览 数据库 .db 文件准备1、创建 SQLite 数据库1.1、在 W…...

2024 年,新程序员如何与AI共赢!!
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

Debian 系统镜像下载
最近在看一些网络相关的文章需要用到 debian 11.x 的系统网上找了好多都发下载,在官网看一下 有个 11.8 的版本我无法下载,提示被最新的 debian-12.4.0 所代替,于是找到了这个链接 Index of /cdimage/unofficial/non-free/cd-including-fi…...

数据结构和算法(全)
1.了解数据结构和算法 1.1 二分查找 二分查找(Binary Search)是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,然后比较目标值与中间元素的大小关系,从而确定应该在左半部分还是右半部分继续查找。这个…...

Vue项目中WebSocket封装
WEBSOCKET 封装引入初始化使用 封装 utils下建立WebSocketManager.js class WebSocketManager {constructor() {this.url null;this.websocket null;this.isConnected false;this.listeners {onopen: [],onmessage: [],onclose: [],onerror: [],};this.reconnectionOptio…...

018 OpenCV 人脸检测
目录 一、环境 二、分类器原理 2.1、概述 2.2、工作原理 三、人脸检测代码 一、环境 本文使用环境为: Windows10Python 3.9.17opencv-python 4.8.0.74 二、分类器原理 CascadeClassifier是OpenCV(开源计算机视觉库)中的一个强大的类…...

Etcd实战(一)-部署etcd集群
1 概述 etcd是一个高可用的分布式键值存储系统,是CoreOS(现在隶属于Red Hat)公司开发的一个开源项目。它提供了一个简单的接口来存储和检索键值对数据,并使用Raft协议实现了分布式一致性。etcd广泛应用于Docker、Kubernetes等分布…...

Python绘制一个简单的圣诞树
在Python中,你可以使用基本的打印语句和循环来绘制一个简单的圣诞树。以下是一个例子: def draw_christmas_tree(height):for i in range(height):print( * (height - i - 1) +...

【CANoe】CANoe中使用RS232
文章目录 1、CANoe中自带示例2、示例讲解2.1CANoe自带Port A和Port B通讯2.2CANoe自带Port A和串口助手通讯 1、CANoe中自带示例 我使用的事CANoe12,RS232路径如下: C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 12.0.75\IO_HIL\RS23…...

Springboot内置Tomcat线程数优化
Springboot内置Tomcat线程数优化 # 等待队列长度,默认100。队列也做缓冲池用,但也不能无限长,不但消耗内存,而且出队入队也消耗CPU server.tomcat.accept-count1000 # 最大工作线程数,默认200。(4核8g内存…...

vue+django 开发环境跨域前后端联调配置
vue环境是127.0.0.1:8080,django环境是127.0.0.1:8000 要解决url相对路径和Axios跨域权限问题。 注意:程序发起了一个 POST 请求,但请求的 URL 没有以斜杠结尾。Django 默认设置是无法执行重定向到带斜杠 URL的。例如:url http:/…...