- 博客(44)
- 收藏
- 关注
原创 Deepseek
Deepseek作为一个人工智能应用,可以与用户进行智能对话,根据用户的需求进行文本生成;可以对自然语言进行各方面的分析,智能的识别内容主题进行文本分类;对于一些逻辑性的问题能够进行智能推理,从而给出答案;在编程与代码方面,我们可以把详细的需求告诉它,从而根据需求生成答案,或者进行代码调试,技术文档的处理等等。deepseek是一家人工智能科技公司所开发的能够进行人工智能对话的一个应用,它的主要目标是大规模的研发与应用。deepseek-R1是它的开源推理模型,主要负责处理复杂任务并且可以免费使用。
2025-02-10 21:32:34
298
原创 从入门到精通:如何更好地使用AI
策略五:灵活运用开放式提示与封闭式提示--开放式提示:提出开放性问题,允许AI根据多个角度进行生成--封闭式提示:提出具体问题或设定明确限制,要求AI给出精准回答。非推理模型(GPT-3、GPT-4、BERT(Google))侧重于文本生成、语义理解,文本分类,翻译,缺乏推理模型复杂的推理和决策能力。未来规划是年终总结的重点,目的是在为新的一年设定明确的目标和发展方向,提示语应侧重目标设定,行动计划,个人成长。推理模型的提示语要简洁,不需要分布式的需求,但通用模型的提示语需要分布式的需求。
2025-02-10 21:25:11
1482
原创 Models如何使用Gorm与数据库进行交互?
ORM(Object-RelationalMapping,对象关系映射)是一种技术,它把程序中的对象(比如Go的结构体)和数据库中的表(比如MySQL的表)自动映射起来。通过ORM,你可以用面向对象的方式操作数据库,而不需要直接写SQL。它的作用是把Go语言中的结构体(struct)和数据库中的表(table)对应起来,让你可以用Go代码直接操作数据库,而不需要写复杂的SQL语句。Golang的代码解析成SQL语句,把查到的数据解析成GOlang的数据结构。
2025-01-19 21:02:36
322
原创 Controller-Services-Models
然后Services层在反馈给Controller层,Controller层接收到数据以后显示给在屏幕上;Services:属于中间层,问Models层要符合Controller层的需求的东西;Controller:负责接受任务,然后将需求告诉Services层;Models:该层去数据库找符合要求的数据,反馈给Services层;
2025-01-12 16:05:46
114
原创 获取天气信息
如下所示,在网页中,还会出现城市对应的行政区,例如,“深圳”市中有“福田区。现在我们可以查询到“福田区”的id号是101280603,现在我们把id号复制粘贴到查询天气的网址中,然后复制你的Key到网址中,假设我的key是d5a4d4as4d4f3as4df4sa,那么最终查询天气的网址就是。登录和风天气开发服务平台后,进入“开发服务控制台”,点击左侧“项目管理”,在右侧点击“创建项目”,然后填写“项目名称”,选择“免费订阅”,设置KEY为“Web API”,并给KEY起个名称,最后点击创建。
2025-01-09 22:01:39
412
原创 网络授时笔记
复制到实验文件夹,路径为D:\esp32c3\sntp,不用修改名字,使用VSCode打开sntp文件夹,程序不需要修改,直接配置好串口、目标芯片,menuconfig就可以下载看结果,menuconfig中,除了把flash大小修改为8MB以外,还需要添加你要连接wifi的名称和密码。前面我们已经知道,程序每10秒钟会唤醒一次,每次唤醒后,boot_count值会加1,并使用ESP_LOGI把boot_count的值打印到终端。点击软件最上面的向左的箭头←,回到obtain_time函数中刚才的位置。
2025-01-09 19:04:22
1009
原创 WiFi连接
再往后使用esp_event_handler_instance_register()函数注册了WIFI_EVENT和IP_EVENT事件,并且定义了事件处理函数名称为event_handler。最后一个参数为portMAX_DELAY,表示将一直等待,直到WIFI_CONNECTED_BIT 事件或WIFI_FAIL_BIT事件的发生。然后在wifi_init_sta()函数的最开始处,使用xEventGroupCreate()创建了事件组,并返回给s_wifi_event_group句柄。
2025-01-09 18:19:48
344
原创 WiFi扫描
上述代码中,第4~10行,是wifi初始化阶段。直接复制scan这个例程到你的实验文件夹,该例程位于esp-idf-v5.1.3\examples\wifi\scan,复制过来后,使用VSCode打开工程,直接配置串口号、芯片型号、menuconfig等就可以,不需要修改代码,menuconfig中,除了要修改FLASH大小为8MB之外,还可以修改扫描wifi名称后列出的最大数量,默认是10。在app_main函数,如下代码所示,由两部分代码组成,第一部分是初始化nvs,第二部分是执行wifi_scan。
2025-01-09 17:53:36
1086
原创 LVGL Demo
然后找到example_lvgl_port_update_callback函数,现在的case分别是NONE、90、180、270,默认是NONE,是竖屏,现在需要把默认改成横屏,就是默认是90的样子,所以,现在把90改成NONE,然后把180改成90,把270改成180,把NONE改成270。在app_main函数中,找到esp_lcd_panel_mirror函数,原来的mirror,xy都是false不翻转,从上一个函数中我们知道,y需要翻转,所以把y参数位置变成true。
2025-01-09 17:04:29
871
1
原创 LCD触摸
默认是LV_DISP_ROT_NONE,点击一次按钮后,变成LV_DISP_ROT_90,再点击一次变成LV_DISP_ROT_180,再点击一次变成LV_DISP_ROT_270,再点击一次回到LV_DISP_ROT_NONE,点击了一次,说明函数进LV_DISP_ROT_90进行了处理。第2个if编译是修改的,把鼠标放到esp_lcd_touch_new_i2c_ft5x06上面单击右键选择“转到定义”,会发现这个函数是在esp_lcd_touch_ft5x06.c文件中定义的。
2025-01-09 16:01:33
1001
3
原创 音频-扬声器和麦克风
特别要注意I2S引脚当中的GPIO11,这个引脚目前还是VDD_SPI引脚,默认是一个电源引脚,输出3.3V,需要把它变成GPIO11才可以使用,这个变化是不可逆的,变成GPIO11以后,就不能再变成VDD_SPI引脚,注意,如果这个引脚用作VDD_SPI给外部FLASH供电,千万不要把它搞成GPIO11,否则就得换芯片了,现在用的开发板上只把它用做GPIO11,I2S_DO引脚,把它变成GPIO11,需要调用一个函数即可。第一行语句是提示,第二行代码是把VDD_SPI引脚变成GPIO引脚的函数。
2025-01-09 14:29:09
843
原创 如何将游戏代码的文件夹使用eclipse进行运行
首先,我们打开eclipse这个软件,然后点击左上角的file,点击第三个open projects from system...,接着点击directory,选择你要运行的项目,接着点finish就OK,然后点击src下项目的主代码,右击鼠标,点击run as ,接着点击java application就可以啦。切记不要复制粘贴,不好使,会报错的!
2024-11-19 18:09:57
191
原创 地磁传感器(学习笔记下)
读到后的值,最终传入t_sQMC5883L定义的结构体,注意一下这里面的mag_reg数据变量,定义的时候是16位的3个元素,在读寄存器的时候,强制为8位指针变量,读6个字节。然后我们再写一个计算方位角的函数,使用磁力值计算方位角,最简单的方式,只需要一个公式。咱们接着学习笔记上来学习哈,首先,我们编写读取方位角程序,配置好传感器以后,我们就可以读取磁力值了,我们先定义一个结构体类型,用来存放磁力值以及方位角值。在主函数中,qmc5883l初始化以后,每间隔1秒钟计算1次方位角值,然后通过串口发送到终端。
2024-10-26 22:11:25
798
原创 地磁传感器(学习笔记上)
在这个项目里,我们首先写的是编写QMC5883L驱动程序,我们还是使用sample project作为模板,我们复制esp-idf-v5.1.3\examples\get-started\sample_project这个工程到我们的实验文件夹,然后把这个文件夹的名称修改为azimuth,azimuth是方位角的意思哈,在VSCode软件,然后打开azimuth文件夹。接下来,开始写qmc5883l的驱动函数,我们先写两个读取qmc5883l寄存器的函数和写入qmc5883l寄存器的函数。
2024-10-26 21:43:15
1185
原创 温湿传感器(学习笔记下)
接着我们温湿传感器上半部分的学习,现在我们学习接下来的部分,编写GXHTC3驱动程序,也就是给gxhtc3.c文件添加代码,我们要判断gxhtc3芯片是否存在和正常,就要先读取gxhtc3的ID号,根据gxhtc3的数据手册,读取命令为0xEFC8,发送命令后,可以读出16位的ID号和1个CRC字节。根据gxhtc3的数据手册上介绍,每一次读取数据,都需要经过四组命令,按照执行顺序,分别是唤醒、测量、读出、休眠,我们分别写这四个命令的函数,首先,我们要写一下唤醒的代码,以下是我写的。
2024-10-26 16:53:30
650
原创 姿态传感器(下)
在这里,我们需要注意一下,这里面的buf数据变量,定义的时候是16位的6个元素,在读寄存器的时候,强制为8位指针变量,读12个字节。这里,大家可以看一下寄存器定义,加速度寄存器有6个,陀螺仪寄存器有6个,每个值都是由低字节寄存器和高字节寄存器组成,然后我们再写一个计算姿态的函数,计算姿态,可以单独使用加速度值,可以单独使用陀螺仪值,也可以融合使用,它们各自有优缺点,下面,我们写一个使用加速度值计算姿态的函数。这个函数中用到了atan函数,需要在文件中包含头文件math.h。最后,我们可以编译一下。
2024-10-25 23:53:45
323
原创 姿态传感器(学习笔记上)
接下来,开始写qmi8658c的驱动函数,通过课程视频学习,我们先写两个读取qmi8658c寄存器的函数和写入qmi8658c寄存器的函数,写入函数用于配置传感器的参数,读取函数用于读取传感器的寄存器数据,例如ID号,状态等,这两个函数放入qmi8658c.c文件中。枚举类型的第一个值默认是0,和寄存器WHO_AM_I的地址一样,所以不用标出,然后依次递增,遇到地址不连续的寄存器地址时,单独标出,最后的结果如上代码所示。函数里面用到了ESP_LOGI,用来输出信息,这里的TAG,需要定义。
2024-10-25 23:41:07
1007
原创 Go Web开发登录功能实现
在Go语言中实现Web应用的登录功能,我们通常会涉及到几个技术点:处理HTTP请求、模板渲染、会话管理(如cookie或session)、数据库操作(用于存储和验证用户信息)。这里以Gin为例,执行`go get -u github.com/gin-gonic/gin`来安装。这里假设使用MySQL,并使用`go get -u github.com/go-sql-driver/mysql`安装MySQL驱动。安装Go环境:确保你的计算机上已经安装了Go语言,然后在你的电脑环境配置中加入Go的环境配置。
2024-10-25 23:14:02
525
原创 温湿度传感器(学习笔记上)
第4行定义I2C通信速率,一般情况下,I2C器件的通信速率有3种,100k、400k、1M,速度越大,通信越快,I2C传感器芯片手册上会提到支持的最大速率,温湿度传感器GXHTC3的I2C通信速率可以达到1M,这里写的是400k,不需要修改;跟随老师的步伐,我们接下来在app_main函数中,调用i2c_master_init初始化函数,复制i2c_simple_main.c文件中第85~86行代码,放到main.c文件中的app_main函数中,如下代码所示。
2024-10-25 23:11:03
914
原创 BOOT_KEY按键(学习笔记)
第三条代码,启动GPIO中断服务,其中ESP_INTR_FLAG_DEFAULT的值是0,这个宏定义是在gpio_example_main.c文件中定义的,我们可以直接把这里改成0,也可以把这个宏定义复制到我们的main.c文件中。我们点击gpio_example_main.c打开这个文件,找到app_main函数。接下来,我们在app_main函数的上方添加队列、中断等相关的代码,复制gpio_example_main.c中的第60~76行到我们的main.c文件中,放到app_main函数的上方。
2024-10-25 23:09:03
1305
原创 例程学习(学习笔记)
4.我们需要配置的就是第四个图标menuconfig了,点击图标,接着点击左侧的Serial flasher config,在右侧出现的配置选项里面,我们要把Flash size默认的2MB改成8MB,因为咱们开发板上的FLASH芯片是8MB。点击保存,接着进行关闭即可。2.接下来咱们要进行目标芯片的配置,点击第二个图标,在中间最上方会出现工程路径,点击选择,然后就会出现可选的芯片型号,我们选择esp32c3,点击esp32c3之后,又会弹出下载方式的选择,这里出现三种方式,我们选择第三种下载方式。
2024-10-25 17:27:28
495
原创 Go Web开发使用mode控制日志输出
我们可以通过Gin框架修改“gin.SetMode()”函数来设定运行模式。默认情况下,Gin处于“debug”模式,这会提供更详细的日志信息。在生产环境中,我们应该将其切换到“release”模式以减少日志输出并提高性能。Gin框架允许我们自定义日志处理逻辑,这样就可以根据不同的模式将日志输出到不同的位置,比如控制台、文件等。在生产环境中,我们可以通过创建一个自定义的“Logger”实例来实现将日志写入文件中。如果不做特殊配置,Gin默认使用控制台输出日志,这对于开发环境已经足够了。
2024-05-19 20:19:32
237
原创 GO Web-使用refresh Token 刷新access Token 模式
3. 检测Access Token过期:当客户端收到Access Token过期的响应时(通常是HTTP 401 Unauthorized错误),而不是立即让用户重新登录,客户端将使用Refresh Token来请求新的Access Token。如果Refresh Token有效且未过期,认证服务器验证其有效性,并返回一个新的Access Token(可能还有新的Refresh Token,取决于实现)。特点:有效期较长,通常比Access Token长很多,有时甚至是永久有效的,直到用户注销或被撤销。
2024-05-19 15:23:37
824
原创 GO Web开发-解决代码中循环引用的问题
2.正常的步骤是,请求来了先到router,然后路由这个地方会先去执行我们的middlewares里面的这个中间件(JWT的auth认证的中间件),在这个中间件里面它又调用了controller里面返回响应的方法。我们可以把ctx,就是常量的定义从middlewars这层拿出来,放到controller这层,然后在middlewars这一层把controller同意一下。1.例如a导入b这个包,b导入a这个包,a再导入b这个包,诸如此类的属于循环引用。
2024-05-18 19:56:28
225
原创 二、优化JWT认证中间件
2:重新建立一个middlewares包,在再middlewars包下建立一个关于认证的auth,此中间件用于判断token是否有效,并将有效的Token解析。3.假设在用户登录成功后发放Token,并且使用此Token可以获取用户信息。1:需要引进jwt包。
2024-05-17 20:04:47
187
原创 JWT Token
JWT默认是不加密的,不要把秘密信息放在这部分,JSON对象也要使用Base64URL算法转成字符串。头部和负载以JSON形式存在,三部分内容都经过了Base64编码,以.拼接。也是一个JSON对象,JWT规定了7个官方字段供选用。exp(expirayion time):过期时间。nbf(Not Before):生效时间。iat(Issued At):签发时间。签名是对前两部分的签名,防止数据篡改。iss(issuer):签发人。sub(subject):主题。jti(JWT ID):编号。
2024-05-16 20:07:06
190
原创 初学者学Linux常用命令
rm`:删除文件或目录(使用 `-rf` 参数可递归强制删除)。`touch`:创建新的空文件或更新文件的访问和修改时间。`grep`:在文件中搜索匹配特定模式(字符串)的内容。`find`:按照指定条件在文件系统中查找文件。`mv`:移动或重命名文件和目录。`pwd`:显示当前工作目录。`cd`:改变当前工作目录。`mkdir`:创建新目录。`rmdir`:删除空目录。以上是我初学碰到的Linux的命令。`cp`:复制文件或目录。`ls`:列出目录内容。
2024-04-27 15:24:54
154
原创 基于雪花算法生成用户ID
(1)别人在你的网站注册一下就能知道你的数据库里面到底有多少个用户。(2)在我们使用分库分表的时候,不同库中的userID会有可能重复。
2024-04-27 15:14:47
175
原创 大型Web项目CLD的分层理念
controller:整个Web服务的一个入口,负责处理路由,参数的一些校验,请求的转发等等,然后继续传递给longic这一层。DAO:(reponsitory):下一层的存储的内容,Mysql,redis等等交互的操作对外分装成简单的函数。model(模型):程序员编写应用程序应该具有的功能实现一些算法,与代码作成映射的关系。controller(控制器):控制整个数据的流向,数据变化的时候更新视图。longic:真正处理业务逻辑的地方(调用DAO层的函数或者接口)
2024-04-18 15:19:58
309
原创 使用 go-redis 库操作 zset
库对Redis中的有序集合进行基本操作,包括添加成员、修改成员分数、获取分数最高的成员和查询指定分数范围内的成员。通过使用带有超时的context,代码确保了操作不会无限期地等待Redis的响应,提高了程序的响应速度和稳定性。这段代码展示了如何使用。
2024-04-16 21:32:14
467
原创 redis.Nil
go-redis 库提供了一个 redis.Nil 错误来表示 Key 不存在的错误。因此在使用 go-redis 时需要注意对返回错误的判断。在某些场景下我们应该区别处理 redis.Nil 和其他不为 nil 的错误。
2024-04-16 21:21:44
1062
原创 Go redis执行任意命令
go-redis 还提供了一个执行任意命令或自定义命令的 Do 方法,特别是一些 go-redis 库暂时不支持的命令都可以使用该方法执行。
2024-04-16 21:13:35
180
原创 Mac如何安装redis
可以使用Redis的客户端工具来连接Redis服务器。使用Homebrew安装Redis。Homebrew是Mac上的一个包管理器,可以方便地安装软件。以上就是在Mac上安装Redis的步骤。安装完成后,你可以根据需要配置和使用Redis。如果看到Redis相关的进程正在运行,说明Redis已经成功安装并启动。启动Redis服务。检查Redis是否成功运行。Homebrew会自动下载并安装Redis。,表示已经成功连接到Redis服务器。打开终端(Terminal)。Mac 安装redis。
2024-04-16 17:14:28
259
原创 Mysql与go(预处理查询)
3. Prepare方法会先将sql语句发送给MySQL服务端,返回一个准备好的状态用于之后的查询和命令。返回值可以同时执行多个查询和命令。1. database/sql中使用下面的Prepare方法来实现预处理操作。
2024-04-04 20:30:01
149
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人