温州网站排名优化东莞软件开发公司

bicheng/2026/1/22 19:07:34/文章来源:
温州网站排名优化,东莞软件开发公司,鹤壁做网站公司哪家好,租域名多少钱1、创建MyMutexLED目录 输入“cd /home/zgq/linux/Linux_Drivers/回车” 切换到“/home/zgq/linux/Linux_Drivers/”目录 输入“mkdir MyMutexLED回车”#xff0c;创建“MyMutexLED”目录 输入“ls回车”查看“/home/zgq/linux/Linux_Drivers/”目录下的文件和文件夹 2、…1、创建MyMutexLED目录 输入“cd /home/zgq/linux/Linux_Drivers/回车” 切换到“/home/zgq/linux/Linux_Drivers/”目录 输入“mkdir MyMutexLED回车”创建“MyMutexLED”目录 输入“ls回车”查看“/home/zgq/linux/Linux_Drivers/”目录下的文件和文件夹 2、添加gpio_led节点 若在stm32mp157d-atk.dts文件中的根节点下没有gpio_led节点则添加gpio_led节点 3、编译设备树 1)、在VSCode终端输入“make dtbs回车”执行编译设备树 2)、输入“ls arch/arm/boot/uImage -l” 查看是否生成了新的“uImage”文件 3)、输入“ls arch/arm/boot/dts/stm32mp157d-atk.dtb -l” 查看是否生成了新的“stm32mp157d-atk.dtb”文件 拷贝输出的文件 4)、输入“cp arch/arm/boot/uImage /home/zgq/linux/atk-mp1/linux/bootfs/ -f回车”执行文件拷贝准备烧录到EMMC 5)、输入“cp arch/arm/boot/dts/stm32mp157d-atk.dtb /home/zgq/linux/atk-mp1/linux/bootfs/ -f回车”执行文件拷贝准备烧录到EMMC 6)、输入“cp arch/arm/boot/uImage /home/zgq/linux/tftpboot/ -f回车”执行文件拷贝准备从tftp下载 7)、输入“cp arch/arm/boot/dts/stm32mp157d-atk.dtb /home/zgq/linux/tftpboot/ -f回车”执行文件拷贝准备从tftp下载 8)、输入“ls -l /home/zgq/linux/atk-mp1/linux/bootfs/回车”查看“/home/zgq/linux/atk-mp1/linux/bootfs/”目录下的所有文件和文件夹 9)、输入“ls -l /home/zgq/linux/tftpboot/回车”查看“/home/zgq/linux/tftpboot/”目录下的所有文件和文件夹 输入“chmod 777 /home/zgq/linux/tftpboot/stm32mp157d-atk.dtb回车” 给“stm32mp157d-atk.dtb”文件赋予可执行权限 输入“chmod 777 /home/zgq/linux/tftpboot/uImage回车” ,给“uImage”文件赋予可执行权限 输入“ls /home/zgq/linux/tftpboot/回车”查看“/home/zgq/linux/tftpboot/”目录下的所有文件和文件夹 4、创建LED.c #include LED.h #include linux/gpio.h //使能gpio_request(),gpio_free(),gpio_direction_input(), //使能gpio_direction_output(),gpio_get_value(),gpio_set_value() #include linux/of_gpio.h //使能of_gpio_named_count(),of_gpio_count(),of_get_named_gpio() struct MyMutexLED_dev  strMyMutexLED; int Get_gpio_num(void); int led_GPIO_request(void); void led_switch(u8 sta,struct MyMutexLED_dev *dev); int Get_gpio_num(void) { int ret 0; const char *str; /* 设置LED所使用的GPIO */ /* 1、获取设备节点strMyMutexLED */ strMyMutexLED.nd of_find_node_by_path(/gpio_led); //path/gpio_led使用“全路径的节点名“在“stm32mp157d-atk.dts“中查找节点“gpio_led” //返回值:返回找到的节点如果为NULL表示查找失败。 if(strMyMutexLED.nd NULL) { printk(gpio_led node not find!\r\n); return -EINVAL; } /* 2.读取status属性 */ ret of_property_read_string(strMyMutexLED.nd, status, str); //在gpio_led节点中status okay; //指定的设备节点strMyMutexLED.nd //pronamestatus给定要读取的属性名字 //out_stringstr:返回读取到的属性值 //返回值:0读取成功负值读取失败。 if(ret 0) return -EINVAL; if(strcmp(str, okay)) return -EINVAL; //strcmp(s1,s2),当s1s2时返回值为负数 //strcmp(s1,s2),当s12时返回值为正数 //strcmp(s1,s2),当s1s2时返回值为0 /* 3、获取compatible属性值并进行匹配 */ ret of_property_read_string(strMyMutexLED.nd, compatible, str); //在gpio_led节点中compatible zgq,led; //指定的设备节点strMyMutexLED.nd //pronamecompatible给定要读取的属性名字 //out_stringstr:返回读取到的属性值 //返回值:0读取成功负值读取失败。 if(ret 0) { printk(gpio_led node: Failed to get compatible property\n); return -EINVAL; } if (strcmp(str, zgq,led)) { printk(gpio_led node: Compatible match failed\n); return -EINVAL; } /* 4、 根据设备树中的led-gpio属性得到LED所使用的LED编号 */ strMyMutexLED.led_gpio of_get_named_gpio(strMyMutexLED.nd, led-gpio, 0); //在gpio_led节点中led-gpio gpioi 0 GPIO_ACTIVE_LOW //npstrMyMutexLED.nd,指定的“设备节点” //propnameled-gpio给定要读取的属性名字 //Index0,给定的GPIO索引为0 //返回值正值获取到的GPIO编号负值失败。 if(strMyMutexLED.led_gpio 0) { printk(cant get led-gpio); return -EINVAL; } printk(led-gpio num %d\r\n, strMyMutexLED.led_gpio); //打印结果为“led-gpio num 128“ //因为GPIO编号是从0开始的GPIOI端口的序号是8每个端口有16个IO口因此GPIOI0的编号为8*16128 return 0; } int led_GPIO_request(void) { int ret 0; /* 5.向gpio子系统申请使用“gpio编号” */ ret gpio_request(strMyMutexLED.led_gpio, LED-GPIO); //gpiostrMyMutexLED.led_gpio指定要申请的“gpio编号” //IabelLED-GPIO给这个gpio引脚设置个名字为LED-GPIO //返回值0申请“gpio编号”成功;其他值申请“gpio编号”失败 if (ret) { printk(KERN_ERR strMyMutexLED: Failed to request led-gpio\n); return ret; } /* 6、设置PI0为输出并且输出高电平默认关闭LED灯 */ ret gpio_direction_output(strMyMutexLED.led_gpio, 1); //gpiostrMyMutexLED.led_gpio,指定的“gpio编号”这里是128对应的是GI0引脚 //value1设置引脚输出高电平 //返回值0设置“引脚输出为vakued的值”成功;负值设置“引脚输出为vakued的值”失败。 if(ret 0) { printk(cant set gpio!\r\n); } return 0; } void led_switch(u8 sta,struct MyMutexLED_dev *dev) { if(sta LEDON) { gpio_set_value(dev-led_gpio, 0); /* 打开LED灯 */ } else if(sta LEDOFF) { gpio_set_value(dev-led_gpio, 1); /* 关闭LED灯 */ } } 5、创建LED.h #ifndef __LED_H #define __LED_H #include linux/types.h /* 数据类型重命名 使能bool,u8,u16,u32,u64, uint8_t, uint16_t, uint32_t, uint64_t 使能s8,s16,s32,s64,int8_t,int16_t,int32_t,int64_t */ #include linux/cdev.h //使能cdev结构 #include linux/cdev.h //使能class结构和device结构 #include linux/of.h   //使能device_node结构 #include linux/mutex.h//使能互斥体结构mutex #define LEDOFF 0 /* 关灯 */ #define LEDON 1 /* 开灯 */ struct MyMutexLED_dev{ dev_t devid; /*声明32位变量devid用来给保存设备号*/ int major;   /*主设备号*/ int minor;   /*次设备号*/ struct cdev  cdev; /*字符设备结构变量cdev */ struct class *class;     /*类*/ struct device *device;  /*设备*/ struct device_node *nd; /*设备节点*/ int led_gpio;   /*led所使用的GPIO编号*/ struct mutex mutex; /* 定义互斥体 */ }; extern struct MyMutexLED_dev strMyMutexLED; extern int Get_gpio_num(void); extern int led_GPIO_request(void); extern void led_switch(u8 sta,struct MyMutexLED_dev *dev); #endif 6、创建LEDInterface.c #include LED.h #include linux/types.h //数据类型重命名 //使能bool,u8,u16,u32,u64, uint8_t, uint16_t, uint32_t, uint64_t //使能s8,s16,s32,s64,int8_t,int16_t,int32_t,int64_t #include linux/ide.h //使能copy_from_user(),copy_to_user() #include linux/module.h //使能MyMutexLED_init(),MyMutexLED_exit() #include linux/gpio.h //使能gpio_request(),gpio_free(),gpio_direction_input(), //gpio_direction_output(),gpio_get_value(),gpio_set_value() #include linux/mutex.h //使能互斥体结构mutex //使能DEFINE_MUTEX(),mutex_init(),mutex_lock(),mutex_lock() //使能mutex_trylock(),mutex_is_locked(),mutex_lock_interruptible() #define MyMutexLED_CNT    1   //定义设备数量为1 #define MyMutexLED_NAME  MyMutexLEDName  //定义设备的名字 #define MY_TEST 1 /* 打开设备 */ static int MyMutexLED_open(struct inode *inode, struct file *filp) { filp-private_data strMyMutexLED; /*设置私有数据*/ #if MY_TEST 0 if (mutex_lock_interruptible(strMyMutexLED.mutex)) {/* 如果获取mutex互斥体失败则令当前线程进入休眠 当其它线程释放mutex互斥体后则会令当前线程退出睡眠,接着继续执行程序 可以被信号打断 */ return -ERESTARTSYS; } #elif MY_TEST1 mutex_lock(strMyMutexLED.mutex); /* 如果获取mutex互斥体失败则令当前线程进入休眠 当其它线程释放mutex互斥体后则会令当前线程退出睡眠,接着继续执行程序 不能被信号打断; */ #endif printk(MyMutexLED_open!\r\n); return 0; } /* 从设备读取数据保存到首地址为buf的数据块中长度为cnt个字节 */ //file结构指针变量flip表示要打开的设备文件 //buf表示用户数据块的首地址 //cnt表示用户数据的长度单位为字节 //loff_t结构指针变量offt表示“相对于文件首地址的偏移” static ssize_t MyMutexLED_read(struct file *filp, char __user *buf, size_t cnt, loff_t *offt) { return 0; } /* 向设备写数据将数据块首地址为buf的数据长度为cnt个字节发送给用户 */ //file结构指针变量flip表示要打开的设备文件 //buf表示用户数据块的首地址 //cnt表示用户数据的长度单位为字节 //loff_t结构指针变量offt表示“相对于文件首地址的偏移” static ssize_t MyMutexLED_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *offt) { int ret 0; unsigned char databuf[1]; unsigned char ledstat; ret copy_from_user(databuf, buf, cnt); //将buf[]中的前cnt个字节拷贝到databuf[]中 if(ret 0){ printk(kernel write failed!\r\n); ret -EFAULT; } ledstat databuf[0];/*获取到应用传递进来的开关灯状态*/ led_switch(ledstat,filp-private_data);/*执行开灯或执行关灯*/ return ret; } /* 关闭/释放设备 */ static int MyMutexLED_release(struct inode *inode, struct file *filp) { struct MyMutexLED_dev *dev filp-private_data; mutex_unlock(dev-mutex); /* 释放互斥锁 如果有其他线程在等待“获取互斥锁“则会唤醒第1个等待的线程接着工作 */ return 0; } /*声明file_operations结构变量MyCharDevice_fops*/ /*它是指向设备的操作函数集合变量*/ const struct file_operations MyMutexLED_fops { .owner THIS_MODULE, .open MyMutexLED_open, .read MyMutexLED_read, .write MyMutexLED_write, .release MyMutexLED_release, }; /*驱动入口函数 */ static int  __init MyMutexLED_init(void) { int ret; mutex_init(strMyMutexLED.mutex); /*初始化互斥体*/ retGet_gpio_num();//读引脚编号 if(ret 0) return ret; /* 1、申请“gpio编号”*/ retled_GPIO_request();//申请“gpio编号”  if(ret 0) return ret;//向gpio子系统申请使用“gpio编号” 失败 /*2、申请设备号*/ strMyMutexLED.major0; if(strMyMutexLED.major)/*如果指定了主设备号*/ { strMyMutexLED.devid MKDEV(strMyMutexLED.major, 0); //输入参数strMyMutexLED.major为“主设备号” //输入参数0为“次设备号”大部分驱动次设备号都选择0 //将strMyMutexLED.major左移20位再与0相或就得到“Linux设备号” retregister_chrdev_region( strMyMutexLED.devid,\ MyMutexLED_CNT, \ MyMutexLED_NAME ); //strMyMutexLED.devid表示起始设备号 //MyMutexLED_CNT表示次设备号的数量 //MyMutexLED_NAME表示设备名 if(ret 0) goto free_gpio; } else { /* 没有定义设备号 */ retalloc_chrdev_region( strMyMutexLED.devid,\ 0, \ MyMutexLED_CNT,\ MyMutexLED_NAME); /* 申请设备号 */ //strMyMutexLED.devid保存申请到的设备号 //0次设备号的起始地址 //MyMutexLED_CNT要申请的次设备号数量 //MyMutexLED_NAME表示“设备名字” if(ret 0) goto free_gpio; strMyMutexLED.major MAJOR(strMyMutexLED.devid); /* 获取分配号的主设备号 */ //输入参数strMyMutexLED.devid为“Linux设备号” //将strMyMutexLED.devid右移20位得到“主设备号” strMyMutexLED.minor MINOR(strMyMutexLED.devid); /* 获取分配号的次设备号 */ //输入参数strMyMutexLED.devid为“Linux设备号” //将strMyMutexLED.devid与0xFFFFF相与后得到“次设备号” } /*3、注册字符设备*/ strMyMutexLED.cdev.owner THIS_MODULE; //使用THIS_MODULE将owner指针指向当前这个模块 cdev_init(strMyMutexLED.cdev,MyMutexLED_fops); //注册字符设备初始化“字符设备结构变量strMyMutexLED.cdev” //strMyMutexLED.cdev是等待初始化的结构体变量 //MyMutexLED_fops就是字符设备文件操作函数集合 /*4、添加字符设备*/ retcdev_add(strMyMutexLED.cdev,strMyMutexLED.devid,MyMutexLED_CNT); //添加字符设备 /*strMyMutexLED.cdev表示指向要添加的字符设备即字符设备结构strMyMutexLED.cdev变量*/ //strMyMutexLED.devid表示设备号 //MyMutexLED_CNT表示需要添加的设备数量 if(ret 0 ) //添加字符设备失败 goto del_register; printk(dev id major %d,minor %d\r\n, strMyMutexLED.major, strMyMutexLED.minor); printk(MyMutexLED_init is ok!!!\r\n); /*5、自动创建设备节点 */ strMyMutexLED.class class_create(THIS_MODULE, MyMutexLED_NAME); if (IS_ERR(strMyMutexLED.class)){ goto del_cdev; } /*6、创建设备 */ strMyMutexLED.device device_create(strMyMutexLED.class, NULL, strMyMutexLED.devid, NULL, MyMutexLED_NAME); //创建设备 //设备要创建在strMyMutexLED.class类下面 //NULL表示没有父设备 //strMyMutexLED.devid是设备号; //参数drvdataNULL设备没有使用数据 //MyMutexLED_NAME是设备名字 //如果设置fmtMyMutexLED_NAME 的话就会生成/dev/MyMutexLED_NAME设备文件。 //返回值就是创建好的设备。 if (IS_ERR(strMyMutexLED.device)){ goto destroy_class; } return 0; destroy_class: class_destroy(strMyMutexLED.class); //删除类 //strMyMutexLED.class就是要删除的类 del_cdev: cdev_del(strMyMutexLED.cdev); //删除字符设备 //strMyMutexLED.cdev表示指向需要删除的字符设备即字符设备结构strMyMutexLED.cdev变量 del_register: unregister_chrdev_region(strMyMutexLED.devid, MyMutexLED_CNT); /* 释放设备号 */ //strMyMutexLED.devid需要释放的起始设备号 //MyMutexLED_CNT需要释放的次设备号数量 free_gpio://申请设备号失败 /*释放gpio编号*/ gpio_free(strMyMutexLED.led_gpio); return -EIO; } /*驱动出口函数 */ static void __exit MyMutexLED_exit(void) { /*1、删除字符设备*/ cdev_del(strMyMutexLED.cdev); /*删除字符设备*/ /*strMyMutexLED.cdev表示指向需要删除的字符设备即字符设备结构strMyMutexLED.cdev变量*/ /*2、 释放设备号 */ unregister_chrdev_region(strMyMutexLED.devid, MyMutexLED_CNT); /*释放设备号 */ //strMyMutexLED.devid需要释放的起始设备号 //MyMutexLED_CNT需要释放的次设备号数; /*3、 删除设备 */ device_destroy(strMyMutexLED.class, strMyMutexLED.devid); //删除创建的设备 //strMyMutexLED.class是要删除的设备所处的类 //strMyMutexLED.devid是要删除的设备号 /*4、删除类*/ class_destroy(strMyMutexLED.class); //删除类 //strMyMutexLED.class就是要删除的类 /*5、释放gpio编号*/ gpio_free(strMyMutexLED.led_gpio); } module_init(MyMutexLED_init); //指定MyMutexLED_init()为驱动入口函数 module_exit(MyMutexLED_exit); //指定MyMutexLED_exit()为驱动出口函数 MODULE_AUTHOR(Zhanggong);//添加作者名字 MODULE_LICENSE(GPL);//LICENSE采用“GPL协议” MODULE_INFO(intree,Y); //去除显示“loading out-of-tree module taints kernel.” 7、LED_APP.c如下 //添加延时程序导致关闭文件推迟为了是演示互斥访问共享资源的效果 #include stdio.h #include unistd.h #include sys/types.h #include sys/stat.h #include fcntl.h #include stdlib.h #include string.h //APP运行命令:./LED_APP filename 1|0如果是1表示打开LED如果是0表示关闭LED #define LEDOFF 0 /* 关灯 */ #define LEDON 1 /* 开灯 */ /* 参数argc: argv[]数组元素个数 参数argv[]:是一个指针数组 返回值: 0 成功;其他 失败 */ int main(int argc, char *argv[]) { int fd, retvalue; char *filename; unsigned char databuf[1]; unsigned char cnt 0; if(argc ! 3) { printf(Error Usage!\r\n); return -1; } //argv[]是指向输入参数“./LED_App” “/dev/LED” “1” filename argv[1]; //argv[1]指向字符串“/dev/LED” fd open(filename, O_RDWR); //如果打开“/dev/LED”文件成功则fd为“文件描述符” //fd0表示标准输入流 fd1表示标准输出流fd2表示错误输出流 if(fd 0) { printf(Cant open file %s\r\n, filename); return -1; } databuf[0] atoi(argv[2]); /* 写入的数据是数字的表示打开或关闭 */ retvalue write(fd, databuf, 1); //将databuf[]中前1个字节发送给用户 //返回值大于0表示写入的字节数 //返回值等于0表示没有写入任何数据 //返回值小于0表示写入失败 if(retvalue 0) { printf(write file %s failed!\r\n, filename); close(fd); //fd表示要关闭的“文件描述符” //返回值等于0表示关闭成功 //返回值小于0表示关闭失败 printf(close file %s\r\n, filename); return -1; } /* 模拟占用10S LED */ //添加延时程序导致关闭文件推迟为了是演示互斥访问共享资源的效果 while(1) { sleep(5); cnt; printf(App running times:%d\r\n, cnt); if(cnt 2) break; } /* 关闭设备 */ retvalue close(fd); //fd表示要关闭的“文件描述符” //返回值等于0表示关闭成功 //返回值小于0表示关闭失败 if(retvalue 0) { printf(Cant close file %s\r\n, filename); return -1; } else printf(close file %s\r\n, filename); return 0; } 8、创建Makefile KERNELDIR : /home/zgq/linux/atk-mp1/linux/my_linux/linux-5.4.31 #使用“:”将其后面的字符串赋值给KERNELDIR CURRENT_PATH : $(shell pwd) #采用“shell pwd”获取当前打开的路径 #使用“$(变量名)”引用“变量的值” MyAPP : LED_APP MyMutexLED_Module-objs LEDInterface.o LED.o obj-m : MyMutexLED_Module.o CC : arm-none-linux-gnueabihf-gcc drv: $(MAKE) -C $(KERNELDIR) M$(CURRENT_PATH) modules app: $(CC)  $(MyAPP).c  -o $(MyAPP) clean: $(MAKE) -C $(KERNELDIR) M$(CURRENT_PATH) clean rm $(MyAPP) install: sudo cp *.ko $(MyAPP) /home/zgq/linux/nfs/rootfs/lib/modules/5.4.31/ -f 9、添加“c_cpp_properties.json” 按下“CtrlShiftP”,打开VSCode控制台然后输入“C/C:Edit Configurations(JSON)”,打开以后会自动在“.vscode ”目录下生成一个名为“c_cpp_properties.json” 的文件。 修改c_cpp_properties.json内容如下所示: { configurations: [ { name: Linux, includePath: [ ${workspaceFolder}/**, /home/zgq/linux/atk-mp1/linux/my_linux/linux-5.4.31, /home/zgq/linux/Linux_Drivers/MyMutexLED, /home/zgq/linux/atk-mp1/linux/my_linux/linux-5.4.31/arch/arm/include, /home/zgq/linux/atk-mp1/linux/my_linux/linux-5.4.31/include, /home/zgq/linux/atk-mp1/linux/my_linux/linux-5.4.31/arch/arm/include/generated ], defines: [], compilerPath: /usr/bin/gcc, cStandard: gnu11, cppStandard: gnu14, intelliSenseMode: gcc-x64 } ], version: 4 } 10、编译 输入“make clean回车” 输入“make drv回车” 输入“make app回车” 输入“make install回车” 输入“ls /home/zgq/linux/nfs/rootfs/lib/modules/5.4.31/ -l回车”产看是存在“LED_APP和MyMutexLED_Module.ko” 11、测试 启动开发板从网络下载程序 输入“root” 输入“cd /lib/modules/5.4.31/回车” 切换到“/lib/modules/5.4.31/”目录 注意“lib/modules/5.4.31/”在虚拟机中是位于“/home/zgq/linux/nfs/rootfs/”目录下但在开发板中却是位于根目录中。 输入“ls -l”查看“MyMutexLED_Module.ko和LED_APP”是否存在 输入“depmod”,驱动在第一次执行时需要运行“depmod” 输入“modprobe MyMutexLED_Module.ko”加载“MyMutexLED_Module.ko”模块 输入“lsmod”查看有哪些驱动在工作 输入“ls /dev/MyMutexLEDName -l回车”发现节点文件“/dev/MyMutexLEDName” 输入“./LED_APP /dev/MyMutexLEDName 1 回车”先执行开灯; 注意“ ”表示在后台运行LED_APP这个软件。 等待出现“close file /dev/MyMutexLEDName” 输入“./LED_APP /dev/MyMutexLEDName 0回车”先执行关灯; 输入“rmmod MyMutexLED_Module.ko”卸载“MyMutexLED_Module.ko”模块 注意:输入“rmmod MyMutexLED_Module”也可以卸载“MyMutexLED_Module.ko”模块 输入“lsmod”查看有哪些驱动在工作。 输入“ls /dev/MyMutexLEDName -l回车”查询节点文件“/dev/MyMutexLEDName”是否存在

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

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

相关文章

团购机票网站建设免费的网页制作软件

有一个环形的公路,上面共有n站,现在给定了顺时针第i站到第i1站之间的距离(特殊的,也给出了第n站到第1站的距离),小*想着沿着公路第x站走到第y站,她想知道最短的距离是多少? 输入描述…

wordpress数据库和网站文件下载wordpress后台开发

一、emptyDir存储卷 当Pod被分配给节点时,首先创建emptyDir卷,并且只要该Pod在该节点上运行,该卷就会存在。正如卷的名字所述,它最初是空的。Pod 中的容器可以读取和写入emptyDir卷中的相同文件,尽管该卷可以挂载到每…

怎么建设宣传网站黄冈论坛遗爱湖

一、安装目录介绍 其中:bin 目录下: 二、配置信息目录结构 这是 IDEA 的各种配置的保存目录。这个设置目录有一个特性,就是你删除掉整个目录之后,重新启动 IntelliJ IDEA 会再自动帮你生成一个全新的默认配置,所以很多…

深圳市城乡住房和建设局网站wordpress加载速度

连更!! 0 Abstract 先前的姿势引导图像合成方法简单的将人的外观与目标姿势进行对齐,这容易导致过拟合,因为缺乏对source person image的high-level semantic understanding;文章开发了一种新的训练范式:…

国内移动端网站做的最好的福田网站设计

您现在可以使用 MinIO 批处理框架执行 S3 删除操作,以通过单个 API 请求删除大量对象。借助 MinIO 批处理框架,可以快速轻松地在 MinIO 部署中执行重复或批量操作,例如批量复制和批量密钥轮换。MinIO 批处理框架处理所有手动工作,…

石家庄站列车时刻表wordpress数据库注入

RevCol:解决深度学习信息从低层(输入)传递至高层(输出)的过程中,信息会逐层丢失问题 学习解耦表示可逆列网络(RevCol)子特征1:多级可逆单元子特征2:可逆列架构…

400网站建设推广如何开一个微信公众号

本实验讲述ArcGIS Pro中人工智能深度学习应用之–汽车检测。 文章目录 一、学习效果二、工具介绍三、案例实现四、注意事项一、学习效果 采用深度学习工具,可以很快速精准的识别汽车。 案例一: 案例二: 下面讲解GIS软件实现流程。 二、工具介绍 该案例演示的是ArcGIS Pro中…

sae做的网站备份别人做的网站自己想更新

文章目录 概要背景解决方法技术细节小结 概要 关于kafka重平衡问题在实践工作的应用 背景 重平衡包括以下几种场景: 消费者组内成员发生变更,这个变更包括了增加和减少消费者。注意这里的减少有很大的可能是被动的,就是某个消费者崩溃退出了主题的分…

自己网站如何做关键词东莞免费网站制作

文章目录 引言依赖注入基础依赖注入的基本概念依赖注入的原理 依赖注入实践依赖注入注意事项 引言 Angular作为一款流行的前端框架,提供了许多优秀的功能和特性,其中之一就是依赖注入(Dependency Injection)。依赖注入是一种设计…

全栈工程师是做网站吗html网站的直播怎么做

索引类型 索引可以提升查询速度,会影响where查询,以及order by排序。MySQL索引类型如下: 从索引存储结构划分:B Tree索引、Hash索引、FULLTEXT全文索引、R Tree索引 从应用层次划分:普通索引、唯一索引、主键索引、复…

做网站建设的价格建立网站赚钱 优帮云

Title: [科普] 无刷直流电机驱动控制原理图解 文章目录 I. 引言II. 直流电机的原理1. 有刷直流电机和无刷直流电机的区别2. 有刷直流电机的运行原理3. 既是电动机又是发电机 III. 无刷直流电机的原理1. 无刷直流电机与永磁同步电机的区别2. 无刷直流电机的换向控制原理3. 无刷直…

网站制作公司北京网站建设公司哪家好拼车网站的建设雨实现

CrossOver Mac 使用特点 • 免费试用 14 天,可使用 CrossOver Mac 全部功能,• 试用过期会保留之前安装的 Windows 软件• 使 Mac 运行 Windows 程序 使用CrossOver在Mac上运行Windows软件是一个方便且无需安装完整Windows操作系统的解决方案。CrossOve…

雄县做网站的网站开发模板教务管理

ElasticSearch是广受欢迎的NoSQL数据库,其分布式架构提供了极佳的数据空间的水平扩展能力,同时保障了数据的可靠性;反向索引技术使得数据检索和查询速度非常快。更多功能参见官网介绍 https://www.elastic.co/cn/elasticsearch/ 下面简单罗列…

做外贸网站的价格高清不卡二卡三卡四卡免费下载

Chat2DB:开源多数据库客户端的AI革新 Chat2DB使用教程:Chat2DB使用教程_哔哩哔哩_bilibili 引言: 随着企业数据的快速膨胀,数据库管理的复杂性也在增加。此时,一个能够跨越数据库边界、并且集成先进的AI功能的工具,不…

查询自己网站外链网站制作整个的流程是什么

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Django实现信号与消息通知系统 在Web应用程序中,实现消息通知系统是至关重…

建设银行网站信息补充做网站v赚钱

文章目录 第一种:直接与1判断第二种:与EOF判断第三种:巧用按位取反符号“~”写在最后 在代码的实际运用中,我们经常会遇到需要多组输入的情况,那么今天博主就带大家一起盘点三种常见的多组输入的写法 第一种&#xff1…

网页设计与网站建设全攻略华为十大外包公司排名

Spring Data JPA 的最大特色是利用方法名定义查询方法(Defining Query Methods)来做 CRUD 操作,这一课时我将围绕这个内容来详细讲解。 在工作中,你是否经常为方法名的语义、命名规范而发愁?是否要为不同的查询条件写…

网站建设加关键词是什么意思网站大全下载软件安装

避开-转义字符 python文件路径导致的错误常常与“\”有关,因为在路径中的“\”常会被误认为转义字符。 所以在上述路径中,\table\name\rain中的\t,\n,\r都易被识别为转义字符。 解决的办法主要由以下三种: #1 前面加r表示不转义 pathr&quo…

长泰网站建设深圳营销网站建设模板

到了年底,今年不管经济如何,形势多么不好,这个月也要结束2023年了,在这个阶段最关键的是做好今年的总结以及明年的计划。 总结是为了更好地做明年的计划和形势的预判。 借用数据表作为工具,科学理性地对自身公司的经…

河南网站建设培训建一个网络商城的网站素材搜集预算是什么

C++ 标准库里的容器是线程不安全的,在多线程下使用容器时,需要实现线程安全的容器。本篇博客介绍C++实现线程安全的map。 在C++中实现一个线程安全的map通常涉及到使用互斥锁(例如std::mutex)来确保在多线程环境中对map的访问是串行化的,从而避免竞态条件和数据损坏。以下…