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

网站开发用jquery吗/推广引流的10个渠道

网站开发用jquery吗,推广引流的10个渠道,怎么给网站做外链邵连虎,网站的大图传不上去是怎么回事定时器溢出时间计算方法: Tout ((arr 1) * (psc 1)) / Ft us arr:自动重装载值 psc:时钟预分频数 定时器相关实验通用步骤 1.定时器初始化 a.定义结构体句柄 b.设基地址 c.设分频系数 d.设自动重装载值 e. 设计数模式 f.初始化定时器 2.外设模式配置 a.设置模式 d.映…
定时器溢出时间计算方法: Tout = ((arr + 1) * (psc + 1)) / Ft us
arr:自动重装载值        psc:时钟预分频数

定时器相关实验通用步骤

1.定时器初始化
a.定义结构体句柄
b.设基地址
c.设分频系数
d.设自动重装载值
e. 设计数模式
f.初始化定时器
2.外设模式配置
a.设置模式
d.映射通道
c.
3.Msp硬件配置
a.使能定时器,GPIO时钟
b.设置GPIO模式,引脚,上下拉,高低速
c.初始化GPIO
d.使能中断,设置中断优先级
4.使能计数器,中断,定时器中断服务函数,回调函数等

通用定时器相关代码如下

//gtim.c#include "./BSP/TIMER/gtim.h"
#include "./BSP/LED/led.h"
#include "./SYSTEM/usart/usart.h"TIM_HandleTypeDef g_timx_handle;             /* 定时器x句柄 *//*** @brief       通用定时器TIMX定时中断初始化函数* @note*              通用定时器的时钟来自APB1,当PPRE1 ≥ 2分频的时候*              通用定时器的时钟为APB1时钟的2倍, 而APB1为42M, 所以定时器时钟 = 84Mhz*              定时器溢出时间计算方法: Tout = ((arr + 1) * (psc + 1)) / Ft us.*              Ft=定时器工作频率,单位:Mhz** @param       arr: 自动重装值* @param       psc: 预分频系数* @retval      无*/
void gtim_timx_int_init(uint16_t arr, uint16_t psc)
{GTIM_TIMX_INT_CLK_ENABLE(); /* 使能TIMx时钟 */g_timx_handle.Instance = GTIM_TIMX_INT;                 /* 通用定时器x */g_timx_handle.Init.Prescaler = psc;                     /* 预分频系数 */g_timx_handle.Init.CounterMode = TIM_COUNTERMODE_UP;    /* 递增计数模式 */g_timx_handle.Init.Period = arr;                        /* 自动装载值 */HAL_TIM_Base_Init(&g_timx_handle);HAL_NVIC_SetPriority(GTIM_TIMX_INT_IRQn, 1, 3);         /* 设置中断优先级,抢占优先级1,子优先级3 */HAL_NVIC_EnableIRQ(GTIM_TIMX_INT_IRQn);                 /* 开启ITMx中断 */HAL_TIM_Base_Start_IT(&g_timx_handle);                  /* 使能定时器x和定时器x更新中断 */
}/*** @brief       定时器中断服务函数* @param       无* @retval      无*/
void GTIM_TIMX_INT_IRQHandler(void)
{/* 以下代码没有使用定时器HAL库共用处理函数来处理,而是直接通过判断中断标志位的方式 */if(__HAL_TIM_GET_FLAG(&g_timx_handle, TIM_FLAG_UPDATE) != RESET){LED1_TOGGLE();__HAL_TIM_CLEAR_IT(&g_timx_handle, TIM_IT_UPDATE);  /* 清除定时器溢出中断标志位 */}
}/*********************************以下是通用定时器PWM输出实验程序*************************/TIM_HandleTypeDef g_timx_pwm_chy_handle;     /* 定时器x句柄 *//*** @brief       通用定时器TIMX 通道Y PWM输出 初始化函数(使用PWM模式1)* @note*              通用定时器的时钟来自APB1,当PPRE1 ≥ 2分频的时候*              通用定时器的时钟为APB1时钟的2倍, 而APB1为42M, 所以定时器时钟 = 84Mhz*              定时器溢出时间计算方法: Tout = ((arr + 1) * (psc + 1)) / Ft us.*              Ft=定时器工作频率,单位:Mhz** @param       arr: 自动重装值。* @param       psc: 预分频系数* @retval      无*/
void gtim_timx_pwm_chy_init(uint16_t arr, uint16_t psc)
{TIM_OC_InitTypeDef timx_oc_pwm_chy = {0};                       /* 定时器输出句柄 */g_timx_pwm_chy_handle.Instance = GTIM_TIMX_PWM;                 /* 定时器x */g_timx_pwm_chy_handle.Init.Prescaler = psc;                     /* 预分频系数 */g_timx_pwm_chy_handle.Init.CounterMode = TIM_COUNTERMODE_UP;    /* 递增计数模式 */g_timx_pwm_chy_handle.Init.Period = arr;                        /* 自动重装载值 */HAL_TIM_PWM_Init(&g_timx_pwm_chy_handle);                       /* 初始化PWM */timx_oc_pwm_chy.OCMode = TIM_OCMODE_PWM1;                       /* 模式选择PWM1 */timx_oc_pwm_chy.Pulse = arr / 2;                                /* 设置比较值,此值用来确定占空比 */timx_oc_pwm_chy.OCPolarity = TIM_OCPOLARITY_LOW;                                        /* 输出比较极性为低 */HAL_TIM_PWM_ConfigChannel(&g_timx_pwm_chy_handle, &timx_oc_pwm_chy, GTIM_TIMX_PWM_CHY); /* 配置TIMx通道y */HAL_TIM_PWM_Start(&g_timx_pwm_chy_handle, GTIM_TIMX_PWM_CHY);                           /* 开启对应PWM通道 */
}/*** @brief       定时器底层驱动,时钟使能,引脚配置*              此函数会被HAL_TIM_PWM_Init()调用* @param       htim:定时器句柄* @retval      无*/
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{if (htim->Instance == GTIM_TIMX_PWM){GPIO_InitTypeDef gpio_init_struct;GTIM_TIMX_PWM_CHY_GPIO_CLK_ENABLE();                            /* 开启通道y的CPIO时钟 */GTIM_TIMX_PWM_CHY_CLK_ENABLE();                                 /* 使能定时器时钟 */gpio_init_struct.Pin = GTIM_TIMX_PWM_CHY_GPIO_PIN;              /* 通道y的CPIO口 */gpio_init_struct.Mode = GPIO_MODE_AF_PP;                        /* 复用推完输出 */gpio_init_struct.Pull = GPIO_PULLUP;                            /* 上拉 */gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;                  /* 高速 */gpio_init_struct.Alternate = GTIM_TIMX_PWM_CHY_GPIO_AF;         /* IO口REMAP设置, 是否必要查看头文件配置的说明! */HAL_GPIO_Init(GTIM_TIMX_PWM_CHY_GPIO_PORT, &gpio_init_struct);}
}/*********************************以下是通用定时器输入捕获实验程序*************************/TIM_HandleTypeDef g_timx_cap_chy_handle;   /* 定时器x句柄 *//*** @brief       通用定时器TIMX 通道Y 输入捕获 初始化函数* @note*              通用定时器的时钟来自APB1,当PPRE1 ≥ 2分频的时候*              通用定时器的时钟为APB1时钟的2倍, 而APB1为42M, 所以定时器时钟 = 84Mhz*              定时器溢出时间计算方法: Tout = ((arr + 1) * (psc + 1)) / Ft us.*              Ft=定时器工作频率,单位:Mhz** @param       arr: 自动重装值* @param       psc: 预分频系数* @retval      无*/
void gtim_timx_cap_chy_init(uint32_t arr, uint16_t psc)
{TIM_IC_InitTypeDef timx_ic_cap_chy = {0};g_timx_cap_chy_handle.Instance = GTIM_TIMX_CAP;                /* 定时器5 */g_timx_cap_chy_handle.Init.Prescaler = psc;                    /* 预分频系数 */g_timx_cap_chy_handle.Init.CounterMode = TIM_COUNTERMODE_UP;   /* 向上计数模式 */g_timx_cap_chy_handle.Init.Period = arr;                       /* 自动重装载值 */HAL_TIM_IC_Init(&g_timx_cap_chy_handle);                       /* 初始化定时器 */timx_ic_cap_chy.ICPolarity = TIM_ICPOLARITY_RISING;     /* 上升沿捕获 */timx_ic_cap_chy.ICSelection = TIM_ICSELECTION_DIRECTTI; /* 映射到TI1上 */timx_ic_cap_chy.ICPrescaler = TIM_ICPSC_DIV1;           /* 配置输入分频,不分频 */timx_ic_cap_chy.ICFilter = 0;                           /* 配置输入滤波器,不滤波 */HAL_TIM_IC_ConfigChannel(&g_timx_cap_chy_handle, &timx_ic_cap_chy, GTIM_TIMX_CAP_CHY); /* 配置TIM5通道1 */__HAL_TIM_ENABLE_IT(&g_timx_cap_chy_handle, TIM_IT_UPDATE);         /* 使能更新中断 */HAL_TIM_IC_Start_IT(&g_timx_cap_chy_handle, GTIM_TIMX_CAP_CHY);     /* 开始捕获TIM5的通道1 */}/*** @brief       通用定时器输入捕获初始化接口*              HAL库调用的接口,用于配置不同的输入捕获* @param       htim:定时器句柄* @note        此函数会被HAL_TIM_IC_Init()调用* @retval      无*/
void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim)
{if (htim->Instance == GTIM_TIMX_CAP)                        /* 输入通道捕获 */{GPIO_InitTypeDef gpio_init_struct;GTIM_TIMX_CAP_CHY_CLK_ENABLE();                         /* 使能TIMx时钟 */GTIM_TIMX_CAP_CHY_GPIO_CLK_ENABLE();                    /* 开启捕获IO的时钟 */gpio_init_struct.Pin = GTIM_TIMX_CAP_CHY_GPIO_PIN;      /* 输入捕获的GPIO口 */gpio_init_struct.Mode = GPIO_MODE_AF_PP;                /* 复用推挽输出 */gpio_init_struct.Pull = GPIO_PULLDOWN;                  /* 下拉 */gpio_init_struct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;     /* 高速 */gpio_init_struct.Alternate = GTIM_TIMX_CAP_CHY_GPIO_AF; /* 复用为捕获TIM5的通道1 */HAL_GPIO_Init(GTIM_TIMX_CAP_CHY_GPIO_PORT, &gpio_init_struct);HAL_NVIC_SetPriority(GTIM_TIMX_CAP_IRQn, 1, 3);         /* 抢占1,子优先级3 */HAL_NVIC_EnableIRQ(GTIM_TIMX_CAP_IRQn);                 /* 开启ITMx中断 */}
}/* 输入捕获状态(g_timxchy_cap_sta)* [7]  :0,没有成功的捕获;1,成功捕获到一次.* [6]  :0,还没捕获到高电平;1,已经捕获到高电平了.* [5:0]:捕获高电平后溢出的次数,最多溢出63次,所以最长捕获值 = 63*65536 + 65535 = 4194303*       注意:为了通用,我们默认ARR和CCRy都是16位寄存器,对于32位的定时器(如:TIM5),也只按16位使用*       按1us的计数频率,最长溢出时间为:4194303 us, 约4.19秒**      (说明一下:正常32位定时器来说,1us计数器加1,溢出时间:4294秒)*/
uint8_t g_timxchy_cap_sta = 0;    /* 输入捕获状态 */
uint16_t g_timxchy_cap_val = 0;   /* 输入捕获值 *//*** @brief       定时器中断服务函数* @param       无* @retval      无*/
void GTIM_TIMX_CAP_IRQHandler(void)
{HAL_TIM_IRQHandler(&g_timx_cap_chy_handle);        /* 定时器共用处理函数 */
}/*** @brief       定时器输入捕获中断处理回调函数* @param       htim:定时器句柄指针* @note        该函数在HAL_TIM_IRQHandler中会被调用* @retval      无*/
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{if (htim->Instance == GTIM_TIMX_CAP){if ((g_timxchy_cap_sta & 0X80) == 0)         /* 还没成功捕获 */{if (g_timxchy_cap_sta & 0X40)            /* 捕获到一个下降沿 */{g_timxchy_cap_sta |= 0X80;           /* 标记成功捕获到一次高电平脉宽 */g_timxchy_cap_val = HAL_TIM_ReadCapturedValue(&g_timx_cap_chy_handle, GTIM_TIMX_CAP_CHY); /* 获取当前的捕获值 */TIM_RESET_CAPTUREPOLARITY(&g_timx_cap_chy_handle, GTIM_TIMX_CAP_CHY);                     /* 一定要先清除原来的设置 */TIM_SET_CAPTUREPOLARITY(&g_timx_cap_chy_handle, GTIM_TIMX_CAP_CHY, TIM_ICPOLARITY_RISING);/* 配置TIM5通道1上升沿捕获 */}else                                     /* 还未开始,第一次捕获上升沿 */{g_timxchy_cap_sta = 0;               /* 清空 */g_timxchy_cap_val = 0;g_timxchy_cap_sta |= 0X40;           /* 标记捕获到了上升沿 */__HAL_TIM_DISABLE(&g_timx_cap_chy_handle);      /* 关闭定时器5 */__HAL_TIM_SET_COUNTER(&g_timx_cap_chy_handle,0);/* 定时器5计数器清零 */TIM_RESET_CAPTUREPOLARITY(&g_timx_cap_chy_handle, GTIM_TIMX_CAP_CHY);   /* 一定要先清除原来的设置!! */TIM_SET_CAPTUREPOLARITY(&g_timx_cap_chy_handle, GTIM_TIMX_CAP_CHY, TIM_ICPOLARITY_FALLING);/* 定时器5通道1设置为下降沿捕获 */__HAL_TIM_ENABLE(&g_timx_cap_chy_handle);       /* 使能定时器5 */}}}
}/*** @brief       定时器更新中断回调函数* @param       htim : 定时器句柄指针* @note        此函数会被定时器中断函数共同调用的* @retval      无*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if (htim->Instance == GTIM_TIMX_CAP){if ((g_timxchy_cap_sta & 0x80) == 0)               /* 还没成功捕获 */{if (g_timxchy_cap_sta & 0x40)                  /* 已经捕获到高电平了 */{if ((g_timxchy_cap_sta & 0x3F) == 0x3F)    /* 高电平太长了 */{TIM_RESET_CAPTUREPOLARITY(&g_timx_cap_chy_handle, GTIM_TIMX_CAP_CHY);                     /* 一定要先清除原来的设置 */TIM_SET_CAPTUREPOLARITY(&g_timx_cap_chy_handle, GTIM_TIMX_CAP_CHY, TIM_ICPOLARITY_RISING);/* 配置TIM5通道1上升沿捕获 */g_timxchy_cap_sta |= 0x80;             /* 标记成功捕获了一次 */g_timxchy_cap_val = 0xFFFF;}else  /* 累计定时器溢出次数 */{g_timxchy_cap_sta++;}}}}
}/*********************************以下是通用定时器脉冲计数实验程序*************************/TIM_HandleTypeDef g_timx_cnt_chy_handle;        /* 定时器x句柄 *//* 记录定时器计数器的溢出次数, 方便计算总脉冲个数 */
uint32_t g_timxchy_cnt_ofcnt = 0 ;              /* 计数溢出次数 *//*** @brief       通用定时器TIMX 通道Y 脉冲计数 初始化函数* @note*              本函数选择通用定时器的时钟选择: 外部时钟源模式1(SMS[2:0] = 111)*              这样CNT的计数时钟源就来自 TIMX_CH1/CH2, 可以实现外部脉冲计数(脉冲接入CH1/CH2)**              时钟分频数 = psc, 一般设置为0, 表示每一个时钟都会计数一次, 以提高精度.*              通过读取CNT和溢出次数, 经过简单计算, 可以得到当前的计数值, 从而实现脉冲计数** @param       arr: 自动重装值 * @retval      无*/
void gtim_timx_cnt_chy_init(uint16_t psc)
{GPIO_InitTypeDef gpio_init_struct;TIM_SlaveConfigTypeDef tim_slave_config = {0};GTIM_TIMX_CNT_CHY_CLK_ENABLE();                                        /* 使能TIMx时钟 */GTIM_TIMX_CNT_CHY_GPIO_CLK_ENABLE();                                   /* 开启GPIOA时钟 */g_timx_cnt_chy_handle.Instance = GTIM_TIMX_CNT;                        /* 定时器x */g_timx_cnt_chy_handle.Init.Prescaler = psc;                            /* 预分频系数 */g_timx_cnt_chy_handle.Init.CounterMode = TIM_COUNTERMODE_UP;           /* 递增计数模式 */g_timx_cnt_chy_handle.Init.Period = 65535;                             /* 自动重装载值 */HAL_TIM_IC_Init(&g_timx_cnt_chy_handle);gpio_init_struct.Pin = GTIM_TIMX_CNT_CHY_GPIO_PIN;                     /* 输入捕获的GPIO口 */gpio_init_struct.Mode = GPIO_MODE_AF_PP;                               /* 复用推挽输出 */gpio_init_struct.Pull = GPIO_PULLDOWN;                                 /* 下拉 */gpio_init_struct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;                    /* 高速 */gpio_init_struct.Alternate = GTIM_TIMX_CNT_CHY_GPIO_AF;                /* 复用为捕获TIMx的通道 */HAL_GPIO_Init(GTIM_TIMX_CNT_CHY_GPIO_PORT, &gpio_init_struct);/* 从模式:外部触发模式1 */tim_slave_config.SlaveMode = TIM_SLAVEMODE_EXTERNAL1;                  /* 从模式:外部触发模式1 */tim_slave_config.InputTrigger = TIM_TS_TI1FP1;                         /* 输入触发:选择 TI1FP1(TIMX_CH1) 作为输入源 */tim_slave_config.TriggerPolarity = TIM_TRIGGERPOLARITY_RISING;         /* 触发极性:上升沿 */tim_slave_config.TriggerPrescaler = TIM_TRIGGERPRESCALER_DIV1;         /* 触发预分频:无 */tim_slave_config.TriggerFilter = 0x0;                                  /* 滤波:本例中不需要任何滤波 */HAL_TIM_SlaveConfigSynchronization(&g_timx_cnt_chy_handle, &tim_slave_config);HAL_NVIC_SetPriority(GTIM_TIMX_CNT_IRQn, 1, 3);                        /* 设置中断优先级,抢占优先级1,子优先级3 */HAL_NVIC_EnableIRQ(GTIM_TIMX_CNT_IRQn);                                /* 开启ITMx中断 */__HAL_TIM_ENABLE_IT(&g_timx_cnt_chy_handle, TIM_IT_UPDATE);            /* 使能更新中断 */HAL_TIM_IC_Start(&g_timx_cnt_chy_handle, GTIM_TIMX_CNT_CHY);           /* 开始捕获TIMx的通道y */
}/*** @brief       通用定时器TIMX 通道Y 获取当前计数值 * @param       无* @retval      当前计数值*/
uint32_t gtim_timx_cnt_chy_get_count(void)
{uint32_t count = 0;count = g_timxchy_cnt_ofcnt * 65536;                    /* 计算溢出次数对应的计数值 */count += __HAL_TIM_GET_COUNTER(&g_timx_cnt_chy_handle); /* 加上当前CNT的值 */
//    printf("gtim_timx count %d \r\n", count);return count;
}/*** @brief       通用定时器TIMX 通道Y 重启计数器* @param       无* @retval      当前计数值*/
void gtim_timx_cnt_chy_restart(void)
{__HAL_TIM_DISABLE(&g_timx_cnt_chy_handle);          /* 关闭定时器TIMX */g_timxchy_cnt_ofcnt = 0;                            /* 累加器清零 */__HAL_TIM_SET_COUNTER(&g_timx_cnt_chy_handle, 0);   /* 计数器清零 */__HAL_TIM_ENABLE(&g_timx_cnt_chy_handle);           /* 使能定时器TIMX */
}/*** @brief       通用定时器TIMX 脉冲计数 更新中断服务函数* @param       无* @retval      无*/
void GTIM_TIMX_CNT_IRQHandler(void)
{/* 以下代码没有使用定时器HAL库共用处理函数来处理,而是直接通过判断中断标志位的方式 */if(__HAL_TIM_GET_FLAG(&g_timx_cnt_chy_handle, TIM_FLAG_UPDATE) != RESET){g_timxchy_cnt_ofcnt++;          /* 累计溢出次数 */}__HAL_TIM_CLEAR_IT(&g_timx_cnt_chy_handle, TIM_IT_UPDATE);
}

main.c

//通用定时器脉冲计数实验#include "./SYSTEM/sys/sys.h"
#include "./SYSTEM/usart/usart.h"
#include "./SYSTEM/delay/delay.h"
#include "./BSP/LED/led.h"
#include "./BSP/KEY/key.h"
#include "./BSP/TIMER/gtim.h"int main(void)
{uint32_t curcnt = 0;uint32_t oldcnt = 0;uint8_t key = 0;uint8_t t = 0;HAL_Init();                                 /* 初始化HAL库 */sys_stm32_clock_init(336, 8, 2, 7);         /* 设置时钟,168Mhz */delay_init(168);                            /* 延时初始化 */usart_init(115200);                         /* 串口初始化为115200 */led_init();                                 /* 初始化LED */key_init();                                 /* 初始化按键 */gtim_timx_cnt_chy_init(0);                  /* 定时器计数初始化, 不分频 */gtim_timx_cnt_chy_restart();                /* 重启计数 */while (1){key = key_scan(0);                      /* 扫描按键 */if (key == KEY0_PRES)                   /* KEY0按键按下,重启计数 */{printf("key0 press \r\n");gtim_timx_cnt_chy_restart();        /* 重新启动计数 */}curcnt = gtim_timx_cnt_chy_get_count(); /* 获取计数值 */if (oldcnt != curcnt){oldcnt = curcnt;printf("CNT:%d\r\n", oldcnt);       /* 打印脉冲个数 */}t++;if (t > 40)                             /* 200ms进入一次 */{t = 0;LED0_TOGGLE();                      /* LED0闪烁, 提示程序运行 */}delay_ms(10);}
}

相关文章:

STM32 基础知识(探索者开发板)--103讲 通用定时器

定时器溢出时间计算方法: Tout ((arr 1) * (psc 1)) / Ft us arr:自动重装载值 psc:时钟预分频数 定时器相关实验通用步骤 1.定时器初始化 a.定义结构体句柄 b.设基地址 c.设分频系数 d.设自动重装载值 e. 设计数模式 f.初始化定时器 2.外设模式配置 a.设置模式 d.映…...

mysqld_exporter使用

下载自己解压好 https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz在需要监控的数据库上执行 CREATE USER monit_test* IDENTIFIED BY Sfn4ZCHsK WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATI…...

Java 解决远程调用 ssl 证书认证问题

Java 解决远程调用 ssl 证书认证问题 方法 1方法 2方法 3 方法 1 在 jdk 目录导入证书。 首先要下载 服务器 ssl 证书,下载完成之后。把它命名成 Root.cer 后面使用 cmd 命令行 在 jdk 目录导入。 例如 : jdk 的目录为:D:\JetBranins\Intel…...

kubernetes(k8s) Yaml 文件详解

YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化,较易读。 1、查看API 资源版本标签 kubectl api-versions 2、编写资源配置清单 kubectl create -f nginx-test.yaml --validatefalse 2.3 查看创建的po…...

手拉手后端Springboot整合JWT

环境介绍 技术栈 springbootmybatis-plusmysqljava-jwt 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 Json Web令牌简称JWT Token是在服务端产生的一串字符串是客户端访问资源接口(AP)时所需要的资源凭证。…...

小狐狸GPT付费2.4.9 去除授权弹窗版

后台安装步骤: 1、在宝塔新建个站点,php版本使用7.2 、 7.3 或 7.4,把压缩包上传到站点根目录,运行目录设置为/public 2、导入数据库文件,数据库文件是 /db.sql 3、修改数据库连接配置,配置文件是/.env 4、…...

Scrapy爬虫中合理使用time.sleep和Request

概述 在Scrapy爬虫中,我们需要深入分析time.sleep和Request对象对并发请求的影响。time.sleep函数用于在发起请求之前等待一段时间,而Request对象用于发送HTTP请求。我们必须仔细考虑这些操作对其他并发请求的潜在影响,以及在异步情况下可能…...

在Spring Cloud中使用Ribbon完成一个简单的负载均衡demo

Spring Cloud系列断更了有一段时间了,这段时间最近都在忙着项目上的事,天天修复bug以及调整需求,反正各种操劳,了解业务需求,然后开发相关功能,很久都没碰Spring Cloud系列的相关文章了,最近回头…...

mysql-5.6.16的内存泄漏问题

一、背景 有一台物理机上一个版本为5.6.16的从库出现了内存的增高,观测其日志可以发现,这台数据库已经oom很多次了,并且stop slave的时候会卡住非常长的时间才能停止 二、根本原因 上述的现象可以看到是一个明显的内存泄漏现象&#xff0c…...

相机内参标定理论篇------相机模型选择

相机种类&#xff1a; 当拿到一款需要标定内参的相机时&#xff0c;第一个问题就是选择那种的相机模型。工程上相机类型的划分并不是十分严格&#xff0c;一般来说根据相机FOV可以把相机大概分为以下几类&#xff1a; 长焦相机&#xff1a;< 标准相机&#xff1a;~&…...

java设计模式学习之【状态模式】

文章目录 引言状态模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用状态示例代码地址 引言 设想你正在使用一个在线视频播放器观看电影。随着你的互动&#xff0c;播放器可能处于不同的状态&#xff1a;播放、暂停、缓冲或结束。每个状态下&#xff0c;播放…...

使用aspose.Words更新表格列宽

public static bool UpdateTableStyle(string filePath) { try { Document doc new Document(); //样式 Style style doc.Styles.Add(StyleType.Paragraph, "cellStyle"); style.Font.Name "simsun"; PageSetup pageSet doc.Sections[0].PageSetup; pa…...

pycharm 工具栏不见了

新版pycharm后&#xff0c; 菜单栏和工具栏不见了 目录 我发现的解决方法&#xff1a; 其他旧版的解决方法&#xff1a; 我发现的解决方法&#xff1a; 其他旧版的解决方法&#xff1a; 另外&#xff0c;一些使用pycharm的新手可能会由于不熟悉软件的功能而误操作&#xff…...

图灵日记之java奇妙历险记--类和对象

目录 类的定义和使用类的定义格式 类的实例化类和对象的说明 this引用this引用的特性 对象的构造及初始化就地初始化构造方法 封装包导入包中的类自定义包 static成员static修饰成员变量static修饰成员方法 代码块代码块概念及分类构造代码块静态代码块 匿名对象 类的定义和使用…...

Kotlin 枚举类

使用 enum 修饰符&#xff1b;每个枚举常量都是一个对象&#xff0c;枚举常量以逗号分隔 // 枚举类 enum class Direction {NORTH, SOUTH, WEST, EAST }// 每一个枚举都是枚举类的实例&#xff0c;所以可以这样初始化 enum class Color(val rgb: Int) {RED(0xFF0000),GREEN(0x…...

可运营的Leadshop开源商城小程序源码 +H5公众号+带视频教程

源码简介 Leadshop是一款出色的开源电商系统&#xff0c;具备轻量级、高性能的特点&#xff0c;并提供持续更新和迭代服务。该系统采用前后端分离架构&#xff08;uniappyii2.0&#xff09;&#xff0c;以实现最佳用户体验为目标。 前端部分采用了uni-app、ES6、Vue、Vuex、V…...

Qt底层机制之对象树总结

Qt对象树是Qt框架中的一个重要概念,它用于管理对象之间的关系和生命周期。除了常规的对象树结构,Qt还提供了一些特殊的用法来扩展对象树的功能和灵活性。 1. 父子关系:Qt对象树通过设置父对象来建立父子关系。父对象负责管理子对象的内存分配和释放。这种关系可以通过`setP…...

QT C++ TCP Socket 请求心知天气

0.0 相关连接代码部分头文件具体实现 相关连接 心知天气官方天气图标 心知天气官网 代码部分 头文件 #include <QtNetwork> #include <QNetworkAccessManager> #include <QDebug> #include <QJsonValue> #include <QJsonArray> #include &l…...

双向链表的实现及头尾插入删除

双链表的增删查改 一.双向链表的初始化二.创建返回链表的头结点三.双向链表销毁四. 双向链表打印五.双向链表尾插六. 双向链表尾删七. 双向链表头插八.双向链表头删九.双向链表的查找十.双向链表在pos的前面进行插入十一. 双向链表删除pos位置的节点 一.双向链表的初始化 Lis…...

C语言—每日选择题—Day62

第一题 1. 在使用标准C库时&#xff0c;下面哪个选项使用只读模式打开文件&#xff1f; A&#xff1a;fopen("foo.txt", "r") B&#xff1a;fopen("foo.txt", "r") C&#xff1a;fopen("foo.txt", "w") D&#xf…...

基于 Sentry 的前端监控系统搭建(Linux)

一、前言 随着技术这几年的发展与沉淀&#xff0c;线上数据指标监控也变得尤为重要&#xff0c;研发人员和运营人员需要对线上的产品指标有所感知&#xff0c;同时风险也需要及时暴露&#xff0c;很多公司开始自建监控系统&#xff0c;但对于一些定制化要求不是特别高的团队&a…...

【C++入门到精通】Lock_guard与Unique_lock C++11 [ C++入门 ]

阅读导航 引言一、RAII机制1. 概念2. 原理3. 优点 二、Lock_guard1. 官方文档2. 概念3. 底层类模版4. 使用示例 三、Unique_lock1. 官方文档2. 概念及底层3. 使用示例 四、总结温馨提示 引言 在C11标准中&#xff0c;为了更方便地使用互斥锁&#xff08;Mutex&#xff09;来保…...

电路设计(8)——计时器的multism仿真

1.功能设计 这是一个计时电路&#xff0c;在秒脉冲的驱动下&#xff0c;计时器开始累加&#xff0c;6个数码管分别显示计时的 时&#xff1a;分&#xff1a;秒。 仿真图如下所示&#xff1a; 左边的运放构成了振荡电路&#xff0c;可以产生脉冲波。这个脉冲波给计时电路提供基准…...

Jmeter测试实践:文件下载接口

一 Jmeter步骤 1.打开jmeter4.0&#xff0c;新建测试计划&#xff0c;添加线程组。根据实际情况配置线程属性。 2.添加HTTP请求。根据接口文档进行配置。 Basic部分修改如下&#xff0c;Advanced部分保持默认。这里的参数id是文件的id&#xff0c;我进行了参数化&#xff0c…...

PyQt5实现学生管理系统第三天(下)

目录 一:学生课程导航 二:搜索框 三:查询 四:页面数据展示逻辑 上一节,我们介绍了课程管理的课程查询导航的功能。这一节我们介绍下学生课程的功能实现,因为学生课程只有一个查询列表,内容相对简单,所以我们在这一节也重点讲述下我们页面的展现逻辑。 一:学生课程…...

第4章 | 安徽某高校《统计建模与R软件》期末复习

第4章 参数估计 参数估计是统计建模的关键步骤之一&#xff0c;它涉及根据样本数据推断总体参数的过程。在统计学中&#xff0c;参数通常用于描述总体的特征&#xff0c;如均值、方差等。通过参数估计&#xff0c;我们可以利用样本信息对这些未知参数进行推断&#xff0c;从而…...

localforage本地存储(融合Web Storage,Web SQL Database,ndexedDB三种前端存储)

介绍 localForage 是一个快速而简单的 JavaScript 存储库。通过使用异步存储&#xff08;IndexedDB 或 WebSQL&#xff09;和简单的类 localStorage 的 API &#xff0c;localForage 能改善 Web 应用的离线体验。 在不支持 IndexedDB 或 WebSQL 的浏览器中&#xff0c;localF…...

【JavaWeb学习笔记】17 - ThreadLocal

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/threadlocal/src/com/yinhai/thread 目录 项目代码 一、什么是ThreadLocal? 二、ThreadLocal快速入门 三、源码解读 一、什么是ThreadLocal? 1. ThreadLocal的作用&#xff0c;可以实现在同一个线…...

【ARMv8M Cortex-M33 系列 1 -- SAU 介绍】

文章目录 Cortex-M33 SAU 介绍SAU 的主要功能包括SAU 寄存器配置示例 Cortex-M33 SAU 介绍 在 ARMv8-M 架构中&#xff0c;SAU&#xff08;Security Attribution Unit&#xff09;是安全属性单元&#xff0c;用于配置和管理内存区域的安全属性。SAU 是 ARM TrustZone 技术的一…...

sklearn 逻辑回归Demo

逻辑回归案例 假设表示 基于上述情况&#xff0c;要使分类器的输出在[0,1]之间&#xff0c;可以采用假设表示的方法。 设 h θ ( x ) g ( θ T x ) h_θ (x)g(θ^T x) hθ​(x)g(θTx)&#xff0c; 其中 g ( z ) 1 ( 1 e − z ) g(z)\frac{1}{(1e^{−z} )} g(z)(1e−z)1​…...