安丘做网站的公司社区服务流程的文献

bicheng/2026/1/16 23:59:17/文章来源:
安丘做网站的公司,社区服务流程的文献,蒙古语网站建设,国内大型电子网站建设个人名片#xff1a; #x1f981;作者简介#xff1a;一名喜欢分享和记录学习的在校大学生 #x1f42f;个人主页#xff1a;妄北y #x1f427;个人QQ#xff1a;2061314755 #x1f43b;个人邮箱#xff1a;2061314755qq.com #x1f989;个人WeChat#xff1a;V… 个人名片 作者简介一名喜欢分享和记录学习的在校大学生 个人主页妄北y 个人QQ2061314755 个人邮箱2061314755qq.com 个人WeChatVir2021GKBS 本文由妄北y原创首发CSDN 座右铭大多数人想要改造这个世界但却罕有人想改造自己。 专栏导航 妄北y系列专栏导航: C/C的基础算法C/C是一种常用的编程语言可以用于实现各种算法这里我们对一些基础算法进行了详细的介绍与分享。 QT基础入门学习对QT的基础图形化页面设计进行了一个简单的学习与认识利用QT的基础知识进行了翻金币小游戏的制作 Linux基础编程初步认识什么是Linux为什么学Linux安装环境进行基础命令的学习入门级的shell编程。 Linux应用开发基础开发分享Linux的基本概念、命令行操作、文件系统、用户和权限管理等网络编程相关知识TCP/IP 协议、套接字Socket编程等可以实现网络通信功能。 Linux项目开发Linux基础知识的实践做项目是最锻炼能力的一个学习方法这里我们会学习到一些简单基础的项目开发与应用而且都是毕业设计级别的哦。 非常期待和您一起在这个小小的互联网世界里共同探索、学习和成长。 ✨✨ 欢迎订阅本专栏 ✨✨  文章介绍 本篇文章对Linux驱动基础学习的相关知识进行分享 如果您觉得文章不错期待你的一键三连哦你的鼓励是我创作动力的源泉让我们一起加油一起奔跑让我们顶峰相见 感谢大家点赞收藏⭐评论✍️ 目录 目录 一、怎么写 LED 驱动程序 1.1 ioremap 函数的使用 1.1.1 函数原型 1.1.2 作用 1.1.3 不再使用该段虚拟地址时要 iounmap(virt_addr) 1.1.4为什么需要映射为虚拟地址  1.2 volatile 函数的使用  二、IMX6ULL 的 LED 驱动程序  2.1 led 原理图 2.2 所涉及的寄存器操作  2.3 代码操作硬件 ​编辑  2.3.1使能 GPIO5 2.3.2 设置 GPIO5_IO03 为 GPIO 模式  2.3.3 设置 GPIO5_IO03 为输出引脚设置其输出电平  三、写程序 3.1 led_opr.h 3.2 board_100ask_imx6ull.c 3.3 leddrv.c 3.4 ledtest.c 3.5 Makefile 四、上机测试 4.1编译 4.2 挂载到开发板  4.3 测试   4.4 实验效果 一、怎么写 LED 驱动程序 详细步骤如下 1看原理图确定引脚确定引脚输出什么电平才能点亮/熄灭 LED 2看主芯片手册确定寄存器操作方法哪些寄存器哪些位地址是 3编写驱动先写框架再写硬件操作的代码 注意在芯片手册中确定的寄存器地址被称为物理地址在 Linux 内核中无法直接使用。 需要使用内核提供的 ioremap 把物理地址映射为虚拟地址使用虚拟地址。 1.1 ioremap 函数的使用 1.1.1 函数原型 void __iomem *ioremap(resource_size_t res_cookie, size_t size)使用时要包含头文件  #include asm/io.h 1.1.2 作用 把物理地址 phys_addr 开始的一段空间(大小为 size)映射为虚拟地址返回值是该段虚拟地址的首地址。 virt_addr ioremap(phys_addr, size); 实际上它是按页(4096 字节)进行映射的是整页整页地映射的。 假设 phys_addr 0x10002size4ioremap 的内部实现是  1 phys_addr 按页取整得到地址 0x10000 2 size 按页取整得到 4096 3把起始地址 0x10000大小为 4096 的这一块物理地址空间映射到虚拟地址空间 假设得到的虚拟空间起始地址为 0xf0010000 4 那么 phys_addr 0x10002 对应的 virt_addr 0xf0010002 1.1.3 不再使用该段虚拟地址时要 iounmap(virt_addr) void iounmap(volatile void __iomem *cookie)1.1.4为什么需要映射为虚拟地址  1.2 volatile 函数的使用  编译器很聪明会帮我们做些优化比如 int a; a 0; // 这句话可以优化掉不影响 a 的结果 a 1;有时候编译器会自作聪明比如  int *p ioremap(xxxx, 4); // GPIO 寄存器的地址 *p 0; // 点灯但是这句话被优化掉了 *p 1; // 灭灯 对于上面的情况为了避免编译器自动优化需要加上 volatile告诉它 “这是容易出错的别乱优化”  volatile int *p ioremap(xxxx, 4); // GPIO 寄存器的地址 *p 0; // 点灯这句话不会被优化掉 *p 1; // 灭灯 二、IMX6ULL 的 LED 驱动程序  2.1 led 原理图 LED 原理图它使用 GPIO5_IO03引脚输出低电平时 LED 被点亮 输出高电平时 LED 被熄灭 2.2 所涉及的寄存器操作  2.3 代码操作硬件 2.3.1使能 GPIO5 设置 b[31:30]就可以使能 GPIO5  注意在 imx6ullrm.pdf 中CCM_CCGR1 的 b[31:30]是保留位 不去设置 b[31:30]GPIO5 也是默认使能的。 设置为 0b11 00该 GPIO 模块全程被关闭 01该 GPIO 模块在 CPU run mode 情况下是使能的在 WAIT 或 STOP 模式下关闭 10保留  11该 GPIO 模块全程使能 /* GPIO5_IO03 */ /* a. 使能 GPIO5 * set CCM to enable GPIO5 * CCM_CCGR1[CG15] 0x20C406C * bit[31:30] 0b11 */ 2.3.2 设置 GPIO5_IO03 为 GPIO 模式  设置如下寄存器 /* b. 设置 GPIO5_IO03 用于 GPIO * set IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 * to configure GPIO5_IO03 as GPIO * IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 0x2290014 * bit[3:0] 0b0101 alt5 */ 2.3.3 设置 GPIO5_IO03 为输出引脚设置其输出电平 设置 GPIO5_IO03 为输出引脚寄存器地址为 设置方向寄存器方向寄存器把引脚设置为输出引脚  设置数据寄存器设置引脚的输出电平  /* c. 设置 GPIO5_IO03 作为 output 引脚 * set GPIO5_GDIR to configure GPIO5_IO03 as output * GPIO5_GDIR 0x020AC000 0x4 * bit[3] 0b1 */ /* d. 设置 GPIO5_DR 输出低电平 * set GPIO5_DR to configure GPIO5_IO03 output 0 * GPIO5_DR 0x020AC000 0 * bit[3] 0b0 */ /* e. 设置 GPIO5_IO3 输出高电平 * set GPIO5_DR to configure GPIO5_IO03 output 1 * GPIO5_DR 0x020AC000 0 * bit[3] 0b1 */ 三、写程序 3.1 led_opr.h #ifndef _LED_OPR_H #define _LED_OPR_Hstruct led_operations {int num;int (*init) (int which); /* 初始化LED, which-哪个LED */ int (*ctl) (int which, char status); /* 控制LED, which-哪个LED, status:1-亮,0-灭 */ };struct led_operations *get_board_led_opr(void);#endif 3.2 board_100ask_imx6ull.c #include linux/module.h#include linux/fs.h #include linux/errno.h #include linux/miscdevice.h #include linux/kernel.h #include linux/major.h #include linux/mutex.h #include linux/proc_fs.h #include linux/seq_file.h #include linux/stat.h #include linux/init.h #include linux/device.h #include linux/tty.h #include linux/kmod.h #include linux/gfp.h #include asm/io.h#include led_opr.hstatic volatile unsigned int *CCM_CCGR1 ; static volatile unsigned int *IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3; static volatile unsigned int *GPIO5_GDIR ; static volatile unsigned int *GPIO5_DR ;static int board_demo_led_init (int which) /* 初始化LED, which-哪个LED */ {unsigned int val;//printk(%s %s line %d, led %d\n, __FILE__, __FUNCTION__, __LINE__, which);if (which 0){if (!CCM_CCGR1){CCM_CCGR1 ioremap(0x20C406C, 4);IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 ioremap(0x2290014, 4);GPIO5_GDIR ioremap(0x020AC000 0x4, 4);GPIO5_DR ioremap(0x020AC000 0, 4);}/* GPIO5_IO03 *//* a. 使能GPIO5* set CCM to enable GPIO5* CCM_CCGR1[CG15] 0x20C406C* bit[31:30] 0b11*/*CCM_CCGR1 | (330);/* b. 设置GPIO5_IO03用于GPIO* set IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3* to configure GPIO5_IO03 as GPIO* IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 0x2290014* bit[3:0] 0b0101 alt5*/val *IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3;val ~(0xf);val | (5);*IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 val;/* b. 设置GPIO5_IO03作为output引脚* set GPIO5_GDIR to configure GPIO5_IO03 as output* GPIO5_GDIR 0x020AC000 0x4* bit[3] 0b1*/*GPIO5_GDIR | (13);}return 0; }static int board_demo_led_ctl (int which, char status) /* 控制LED, which-哪个LED, status:1-亮,0-灭 */ {//printk(%s %s line %d, led %d, %s\n, __FILE__, __FUNCTION__, __LINE__, which, status ? on : off);if (which 0){if (status) /* on: output 0*/{/* d. 设置GPIO5_DR输出低电平* set GPIO5_DR to configure GPIO5_IO03 output 0* GPIO5_DR 0x020AC000 0* bit[3] 0b0*/*GPIO5_DR ~(13);}else /* off: output 1*/{/* e. 设置GPIO5_IO3输出高电平* set GPIO5_DR to configure GPIO5_IO03 output 1* GPIO5_DR 0x020AC000 0* bit[3] 0b1*/ *GPIO5_DR | (13);}}return 0; }static struct led_operations board_demo_led_opr {.num 1,.init board_demo_led_init,.ctl board_demo_led_ctl, };struct led_operations *get_board_led_opr(void) {return board_demo_led_opr; } 它首先构造了一个 led_operations 结构体用来表示 LED 的硬件操作 static struct led_operations board_demo_led_opr {.num 1,.init board_demo_led_init,.ctl board_demo_led_ctl, }; led_operations 结构体中有init函数指针 它指向board_demo_led_init 函数在里面将会初始化 LED 引脚使能、设置为 GPIO 模式、设置为输出引脚。         第 3538 行对于寄存器要先使用 ioremap 得到它的虚拟地址以后使用虚拟地址访问寄存器 static volatile unsigned int *CCM_CCGR1 ; static volatile unsigned int *IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3; static volatile unsigned int *GPIO5_GDIR ; static volatile unsigned int *GPIO5_DR ;static int board_demo_led_init (int which) /* 初始化LED, which-哪个LED */ {unsigned int val;//printk(%s %s line %d, led %d\n, __FILE__, __FUNCTION__, __LINE__, which);if (which 0){if (!CCM_CCGR1){CCM_CCGR1 ioremap(0x20C406C, 4);IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 ioremap(0x2290014, 4);GPIO5_GDIR ioremap(0x020AC000 0x4, 4);GPIO5_DR ioremap(0x020AC000 0, 4);}/* GPIO5_IO03 *//* a. 使能GPIO5* set CCM to enable GPIO5* CCM_CCGR1[CG15] 0x20C406C* bit[31:30] 0b11*/*CCM_CCGR1 | (330);/* b. 设置GPIO5_IO03用于GPIO* set IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3* to configure GPIO5_IO03 as GPIO* IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 0x2290014* bit[3:0] 0b0101 alt5*/val *IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3;val ~(0xf);val | (5);*IOMUXC_SNVS_SW_MUX_CTL_PAD_SNVS_TAMPER3 val;/* b. 设置GPIO5_IO03作为output引脚* set GPIO5_GDIR to configure GPIO5_IO03 as output* GPIO5_GDIR 0x020AC000 0x4* bit[3] 0b1*/*GPIO5_GDIR | (13);}return 0; }          led_operations 结构体中有 ctl 函数指针它指向 board_demo_led_ctl 函数在里面将会根据参数设置 LED 引脚的输出电平 static int board_demo_led_ctl (int which, char status) /* 控制LED, which-哪个LED, status:1-亮,0-灭 */ {//printk(%s %s line %d, led %d, %s\n, __FILE__, __FUNCTION__, __LINE__, which, status ? on : off);if (which 0){if (status) /* on: output 0*/{/* d. 设置GPIO5_DR输出低电平* set GPIO5_DR to configure GPIO5_IO03 output 0* GPIO5_DR 0x020AC000 0* bit[3] 0b0*/*GPIO5_DR ~(13);}else /* off: output 1*/{/* e. 设置GPIO5_IO3输出高电平* set GPIO5_DR to configure GPIO5_IO03 output 1* GPIO5_DR 0x020AC000 0* bit[3] 0b1*/ *GPIO5_DR | (13);}}return 0; }下面的 get_board_led_opr 函数供上层调用 给上层提供led_operations 结构体 struct led_operations *get_board_led_opr(void) {return board_demo_led_opr; } 3.3 leddrv.c #include linux/module.h#include linux/fs.h #include linux/errno.h #include linux/miscdevice.h #include linux/kernel.h #include linux/major.h #include linux/mutex.h #include linux/proc_fs.h #include linux/seq_file.h #include linux/stat.h #include linux/init.h #include linux/device.h #include linux/tty.h #include linux/kmod.h #include linux/gfp.h#include led_opr.h/* 1. 确定主设备号 */ static int major 0; static struct class *led_class; struct led_operations *p_led_opr;#define MIN(a, b) (a b ? a : b)/* 3. 实现对应的open/read/write等函数填入file_operations结构体 */ static ssize_t led_drv_read (struct file *file, char __user *buf, size_t size, loff_t *offset) {printk(%s %s line %d\n, __FILE__, __FUNCTION__, __LINE__);return 0; }/* write(fd, val, 1); */ static ssize_t led_drv_write (struct file *file, const char __user *buf, size_t size, loff_t *offset) {int err;char status;struct inode *inode file_inode(file);int minor iminor(inode);printk(%s %s line %d\n, __FILE__, __FUNCTION__, __LINE__);err copy_from_user(status, buf, 1);/* 根据次设备号和status控制LED */p_led_opr-ctl(minor, status);return 1; }static int led_drv_open (struct inode *node, struct file *file) {int minor iminor(node);printk(%s %s line %d\n, __FILE__, __FUNCTION__, __LINE__);/* 根据次设备号初始化LED */p_led_opr-init(minor);return 0; }static int led_drv_close (struct inode *node, struct file *file) {printk(%s %s line %d\n, __FILE__, __FUNCTION__, __LINE__);return 0; }/* 2. 定义自己的file_operations结构体 */ static struct file_operations led_drv {.owner THIS_MODULE,.open led_drv_open,.read led_drv_read,.write led_drv_write,.release led_drv_close, };/* 4. 把file_operations结构体告诉内核注册驱动程序 */ /* 5. 谁来注册驱动程序啊得有一个入口函数安装驱动程序时就会去调用这个入口函数 */ static int __init led_init(void) {int err;int i;printk(%s %s line %d\n, __FILE__, __FUNCTION__, __LINE__);major register_chrdev(0, 100ask_led, led_drv); /* /dev/led */led_class class_create(THIS_MODULE, 100ask_led_class);err PTR_ERR(led_class);if (IS_ERR(led_class)) {printk(%s %s line %d\n, __FILE__, __FUNCTION__, __LINE__);unregister_chrdev(major, led);return -1;}p_led_opr get_board_led_opr();for (i 0; i p_led_opr-num; i)device_create(led_class, NULL, MKDEV(major, i), NULL, 100ask_led%d, i); /* /dev/100ask_led0,1,... */return 0; }/* 6. 有入口函数就应该有出口函数卸载驱动程序时就会去调用这个出口函数 */ static void __exit led_exit(void) {int i;printk(%s %s line %d\n, __FILE__, __FUNCTION__, __LINE__);for (i 0; i p_led_opr-num; i)device_destroy(led_class, MKDEV(major, i)); /* /dev/100ask_led0,1,... */device_destroy(led_class, MKDEV(major, 0));class_destroy(led_class);unregister_chrdev(major, 100ask_led); }/* 7. 其他完善提供设备信息自动创建设备节点 */module_init(led_init); module_exit(led_exit);MODULE_LICENSE(GPL); 第98~101行获取灯的个数             p_led_opr get_board_led_opr(); //获得单板提供的结构体for (i 0; i p_led_opr-num; i) //获取灯的个数device_create(led_class, NULL, MKDEV(major, i), NULL, 100ask_led%d, i); /* /dev/100ask_led0,1,... */3.4 ledtest.c #include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h #include stdio.h #include string.h/** ./ledtest /dev/100ask_led0 on* ./ledtest /dev/100ask_led0 off*/ int main(int argc, char **argv) {int fd;char status;/* 1. 判断参数 */if (argc ! 3) {printf(Usage: %s dev on | off\n, argv[0]);return -1;}/* 2. 打开文件 */fd open(argv[1], O_RDWR);if (fd -1){printf(can not open file %s\n, argv[1]);return -1;}/* 3. 写文件 */if (0 strcmp(argv[2], on)){status 1;write(fd, status, 1);}else{status 0;write(fd, status, 1);}close(fd);return 0; } 3.5 Makefile # 1. 使用不同的开发板内核时, 一定要修改KERN_DIR # 2. KERN_DIR中的内核要事先配置、编译, 为了能编译内核, 要先设置下列环境变量: # 2.1 ARCH, 比如: export ARCHarm64 # 2.2 CROSS_COMPILE, 比如: export CROSS_COMPILEaarch64-linux-gnu- # 2.3 PATH, 比如: export PATH$PATH:/home/book/100ask_roc-rk3399-pc/ToolChain-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin # 注意: 不同的开发板不同的编译器上述3个环境变量不一定相同, # 请参考各开发板的高级用户使用手册KERN_DIR /home/book/100ask_imx6ull-sdk/Linux-4.9.88all:make -C $(KERN_DIR) Mpwd modules $(CROSS_COMPILE)gcc -o ledtest ledtest.c clean:make -C $(KERN_DIR) Mpwd modules cleanrm -rf modules.orderrm -f ledtest# 参考内核源码drivers/char/ipmi/Makefile # 要想把a.c, b.c编译成ab.ko, 可以这样指定: # ab-y : a.o b.o # obj-m ab.o# leddrv.c board_100ask_imx6ull.c 编译成 100ask_led.ko 100ask_led-y : leddrv.o board_100ask_imx6ull.o obj-m 100ask_led.o内核路径 四、上机测试 4.1编译 编译程序把代码上传代服务器后执行 make 命令。 cp 100ask_led.ko ledtest.c ~/nfs_rootfs/4.2 挂载到开发板  在开发板上挂载 NFS  4.3 测试  注意如果要使用板子自带的系统需要关闭原有 LED 驱动也是进 入开发板/sys/class/leds/目录对于每一个 LED 在该目录下都有一个子目录 假设某个子目录名为 XXX则执行如下命令 [root100ask:~]# echo none /sys/class/leds/XXX/trigger 使用我们的系统时要先禁止内核中原来的 LED 驱动把“heatbeat”功能关闭执行以下命令即可 [root100ask:~]# echo none /sys/class/leds/cpu/trigger 这样就可以使用我们的驱动程序做操作了  [root100ask:~]#insmod 100ask_led.ko [root100ask:~]#/ledtest /dev/100ask_led0 on [root100ask:~]#/ledtest /dev/100ask_led0 off 如果想恢复原来的心跳功能可以执行  [root100ask:~]#echo heartbeat /sys/class/leds/cpu/trigger [root100ask:/mnt]# ls /dev/100ask_led0* -l //查询驱动 crw------- 1 root root 240, 0 Jan 1 00:08 /dev/100ask_led0 //查询结果 [root100ask:/mnt]# ./ledtest /dev/100ask_led0 on //打开灯 [root100ask:/mnt]# ./ledtest /dev/100ask_led0 off //关闭灯4.4 实验效果 点亮的是红灯旁边的黄色灯照片可能看的效果不是很明显 执行/mnt/ledtest /dev/myled on 这里有一个黄色小灯会亮起来 执行/mnt/ledtest /dev/myled off 这里有一个黄色小灯会熄灭 大佬觉得有用的话点个赞 呗。 ❤️❤️❤️本人水平有限如有纰漏欢迎各位大佬评论批评指正 如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! 任务在无形中完成价值在无形中升华,让我们一起加油吧

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

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

相关文章

建站公司用的开源框架在自己的电脑做网站空间

https://stackoverflow.com/questions/33527653/babel-6-regeneratorruntime-is-not-defined 移动端 px2rem-loader 转载于:https://www.cnblogs.com/smzd/p/10560176.html

网站导航栏不显示国内做的比较好的网站是什么

首先定义一个定时任务函数tasks.py(见文章末尾示例),编写函数,然后在setting.py中配置定时任务 1、首先安装django-crontab pip install django-crontab 2、在setting.py中添加应用 (在所有自定义注册app之上) INSTALLED_APPS …

成都装修设计公司网站怎么做互联网营销推广

目录 边缘计算简介任务卸载简介边缘存储系统 边缘计算简介 边缘计算是指利用靠近数据生成的网络边缘侧的设备(如移动设备、基站、边缘服务器、边缘云等)的计算能力和存储能力,使得数据和任务能够就近得到处理和执行。 一个典型的边缘计算系…

网站开发面试建英文网站有用吗

老师您好,有两个关于系统GMM的问题想请教一下:(1)在所学的教程里,系统GMM没有引入时间,我目前是分行业分国家的时间为T年的面板数据,请问时间应该放入xtdpdsys的命令中的哪个位置?代码是写作i.year吗&#…

企业网站怎么收录房屋设计装修公司

实现了购物基本功能,那来修改一下就可以用,app,h5,小程序都可以 购物车插件 - DCloud 插件市场

做网站学哪方面知识购物帮做特惠的网站

第二批本科(院校代码:1301)序号专 业 名 称学制科类计划数1汉语言文学(师范)四文科552汉语言文学(高级文秘)四文科803广播电视新闻学四文科304对外汉语四文科285历史学(师范)四文科306思想政治教育(师范)四文科207社会工作四文科258行政管理四文科459公共事业管理四…

nas可以做网站服务器小程序模板下载安装

在持续的试错和进步之间发布过下面内容: TFT屏幕在arduino (esp 32)下的驱动,汉字显示和字库比较_arduino gc9a01显示汉字-CSDN博客 在esp32(esp8266) 提供软字库显示中文的解决方案_tft_espi汉字-CSDN博客 单片机上软字库换32进…

杭州网站建设杭州手机网站建设wordpress文章打不开

业务背景 很久以前开源了一款 auto-log 自动日志打印框架。 其中对于 spring 项目,默认实现了基于 aop 切面的日志输出。 但是发现一个问题,如果切面定义为全切范围过大,于是 v0.2 版本就是基于注解 AutoLog 实现的。 只有指定注解的类或…

网站页面优化技巧越秀网站建设推广

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

哈铁工程建设公司网站桓台做网站

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 公有云时序数据库SLA 运营商产品每服务周期服务可用率不低于99.9%衡量服务不可用数据指标从采…

wordpress程序增大网站代码在线优化

Java的市场情况 需求减少 人员增加 面试难度增加 1、Java高级开发,100份简历,筛选了20份,邀约20个人面试 面试机会:录取人数20:1 充分准备通过面试的前提 不要裸面!!! 背葵花宝典(…

多语言网站(如何实现网站的多语言版本 )岳阳公司网站开发

Go语言中的加密艺术:深入解析crypto/subtle库 引言crypto/subtle库概览ConstantTimeCompare函数深入解析ConstantTimeSelect函数应用详解ConstantTimeLessOrEq函数实践指南安全编程实践性能优化与最佳实践与其他加密库的比较总结 引言 在当今快速发展的互联网时代&…

阿里云的虚拟主机用什么做网站android手机软件开发教程

其他数据库对象 视图: 常见数据库对象——视图:从表中抽出的逻辑上相关的数据集合。 所以:1. 视图基于表。2. 视图是逻辑概念。3. 视图本身没有数据。 创建视图 创建语法与创建表类似,只需要将table → view即可: SQL> …

怎么做直播网站超管网站策划书3000

目录 1 数据的传输方式1.1 并行传输1.2 串行传输 2 同步传输和异步传输2.1 同步传输2.2 异步传输2.3 同步和异步传输对比 1 数据的传输方式 在数据通信中,数据传输方式有并行传输和串行传输两种 1.1 并行传输 定义:并行传输是指数据以成组的方式在多个…

腾讯企业邮箱域名可以做网站吗怎么上不到建设银行网站

上一个说软件测试简单的,已经被面试官问死了。。。 现在已经过了 ”不会但我会学“ 就能感动面试官的时代,随着供需关系的变化,不论是对于面试官还是面试者,面试的成本越来越高。为了筛选到更优秀的程序员,面试官们可谓…

网站新闻页设计肇庆网站建设方案维护

目录 01 ​​​​​​​路由器越用越慢很平常 02 国区设置不要乱用 03 很容易被遗忘的IPv6设置 04 学会自我检查掉线问题 05 番外篇:测试自己的网速 “耳机、音箱通过一定时间的煲机,表现效果会变好,可为何家里WiFi网络却老是给人越用越慢、越…

外包网站问些什么问题展厅设计平面布置图

最优队列有多种叫法,什么小根堆,大根堆,小顶堆,大顶堆。 队列分多种,线性队列(简单队列),循环队列,最优队列等等。 最优队列,可以看作堆叠箱子,…

云盘网站如何做网站制作要求

作者通过SimpleSSD仿真模型,采用SLCQLC混合模式来开展进一步的验证工作。评估过程中,当写入请求到达固态硬盘时,首先会被写入缓存(DRAM),然后才被回写到NAND。文中引入了一个名叫做LRU(Least Recently Used…

工商网站查询企业信息官网全国静态化网站的缺点

第一个版本 对android中MIME类型的理解 初始MIME类型,是在学习ContentProvider的时候。 当在创建自己的ContentProvider的时,需要从抽象类ContentProvider中派生出自己的子类,并实现其中5个抽象方法: query(Uri, String[], Strin…

网站建设评比细则wordpress公式 插件

目录 HTTP GET 和 POST 的区别 GET 和 POST 方法都是安全和幂等的吗 接口幂等实现方式 说说 post 请求的几种参数格式是什么样的? HTTP特性 HTTP(1.1) 的优点有哪些? HTTP(1.1) 的缺点有哪些&#x…