Zigbee课程设计前后端说明文档 发表于 2023-08-09 更新于 2022-12-28 分类于 课设 环境说明: 开发软件环境:IDEA 2022.2.3+Postman+MicroSoft Sqlserver Manager 2015 数据库:Sqlserver 后端: Springboot+mybatis+maven 前端: jQuery ajax+Echart可视化图表库 功能说明: 接收来自下位机的心率、体温等数据,将其存入Sqlserver数据库中 处理来自前端获取数据的请求,将数据以json的形式返回给前端 数据库建表语句:123456789101112use hello_worldgocreate table endDeviceData( id int identity primary key, temperature float default 0 not null, heartbeat_rate smallint default 0 not null, oxygen_saturation float default 0 not null)go 阅读全文 »
蓝桥杯Java赛道备赛规划 发表于 2023-08-09 更新于 2022-12-28 分类于 蓝桥杯 蓝桥杯Java赛道备赛规划不知不觉已经接近大三上学期的尾声了,不得不感慨时光过的好快啊! 今年的蓝桥杯变数很大,首先,本来已经被我稳稳拿捏的物联网赛道突然更换了开发板,但是学校的实验室资金不足,所以没有办法给我们购买开发板学习,如果自己买的话一个板子就要花400多大洋。再加上蓝桥杯本来就有300块报名费,更不用提实验室的负责老师今年不准备报销个人赛道的报名费了。所以说报名物联网赛道性价比大大降低,单片机和嵌入式赛道虽然也可以一试,但是奈何还是需要自购开发板,所以就打消了报名电子类赛道的念头。 目光只能放到软件类的赛道,由于C/C++赛道较为拥挤,最后在同学的推荐下报名了Java赛道。那么现在就开始刷题吧!干就完事了! 对于刷题的方法,我找到了网上的一些资源,这里先mark一下: 阅读全文 »
初探国产RISC-V架构32位MCU--CH32V303 发表于 2023-01-19 概述CH32V303系列是基于32位RISC-V设计的工业级通用微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度。CH32V303系列搭载V4F内核。加入单精度浮点指令集,扩充堆栈区,具有更高的运算性能,扩展串口UART数量到8组,电机定时器到4组。 阅读全文 »
剑指Offer04:二维数组中的查找 发表于 2022-12-26 更新于 2022-12-28 分类于 Leetcode 剑指 Offer 04. 二维数组中的查找 - 力扣(Leetcode)解题思路: 若使用暴力法遍历矩阵 matrix ,则时间复杂度为 O(NM) 。暴力法未利用矩阵 “从上到下递增、从左到右递增” 的特点,显然不是最优解法。 这道题我首先想到的就是暴力解法,时间复杂度最大: 123456789public boolean findNumberIn2DArray(int[][] matrix, int target) { for(int [] list : matrix){ for(int n : list){ if(n == target)return true; } } return false;} 当然有更好的解法,比如说,我们利用题目中二维数组每行递增的特点,每行都进行二分查找。这种方法的时间复杂度为O(mlogn),因为每次二分的时间复杂度为logn. 遍历二维数组的每一行,调用二分查找方法: 阅读全文 »
LeetCode第47题:全排列II 发表于 2022-01-18 更新于 2023-01-19 分类于 Leetcode LeetCode第47题: 全排列II题目描述: 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums = [1,1,2]输出: [[1,1,2], [1,2,1], [2,1,1]] 题目链接:47. 全排列 II - 力扣(Leetcode) 解题思路:这道题跟46题类似,用深度优先遍历,暴力搜索nums数组,然后回溯时恢复标记数组的原状。对于递归函数,其函数出口应当为:在判断递归深度等于nums数组的长度时,将path序列添加到结果集中并返回。我们可以画出树形结构来帮助理解: 1234if(depth==len){ result.add(new ArrayList(path)); return;} 函数体中,遍历nums数组的每一个元素,对其进行标记后,将其添加至path序列中: 12345678910for(int i = 0;i<len;i++){ if(!used[i]){ path.add(nums[i]); used[i]=true; dfs(len,nums,depth+1,path,used); //回溯 path.remove(path.size()-1); used[i] = false; }} 阅读全文 »