- 博客(62)
- 收藏
- 关注
原创 Linux驱动开发 块设备
通过对块设备的深入研究,我们对其工作原理、数据传输方式以及在多核系统中的并发性能有了更清晰的认识。块设备以固定大小的扇区为单位进行数据读写,块设备驱动程序负责响应文件系统的I/O请求,将数据准确地读写到设备的存储区域。在多核系统中,采用blk-mq(Block Multi-Queue)接口可以提高并发性能,利用多个硬件队列来分发和处理I/O请求。在块设备的实现过程中,gendisk结构体用于描述设备的基本信息,如主次设备号、设备名称和容量等。request。
2025-03-30 23:18:05
1025
原创 Linux驱动开发 中断处理
设备初始化在驱动的 probe() 中,根据平台数据或设备树获取中断号,调用或注册中断处理函数。中断处理上半部 ISR 快速响应中断,必要时调度下半部处理(如 tasklet 或工作队列)完成复杂操作。数据传输根据设备特性,中断处理可能涉及读取硬件数据,将数据存入驱动内部缓冲区,等待用户空间通过 read() 接口获取。资源释放在设备关闭或驱动卸载时,调用free_irq()释放中断资源,并确保下半部任务(如 tasklet 或工作队列)已结束。具体的调试需要查看。
2025-03-28 18:06:09
928
原创 Linux驱动开发(1.基础创建)
Bjarne Stroustrup(C++之父)曾言:“The Web is a flea on the tail of the dog called IT.”(万维网不过是信息技术狗尾巴上的一只跳蚤)。键盘驱动(机制)提供按键扫描码,窗口管理器(策略)决定如何响应快捷键(如Ctrl+C)。GPU驱动(机制)实现图形渲染,桌面环境(策略)管理窗口布局。:将硬件操作(如寄存器读写、中断处理)封装为统一接口。:由上层决定如何使用这些接口(如权限管理、数据调度)。:定制硬件支持(如为嵌入式设备编写专用驱动)。
2025-03-05 15:10:30
773
原创 C++中& 左值引用(Lvalue Reference)
引用传递的核心价值提升性能(避免拷贝)允许函数修改外部变量代码更简洁安全(相比指针)典型场景函数参数传递大型对象需要修改外部变量操作符重载、链式调用范围 for 循环修改容器元素。
2025-02-25 09:02:30
498
原创 Mybatis写入字符串过长抛出 Data truncation: Data too long for column ‘xxxx‘
控制存储引擎替换行为,确保指定存储引擎不可用时抛出错误。:禁用 JDBC 规范中规定的数据截断异常,允许数据被截断插入。这两项设置改变了数据库和应用程序如何处理存储引擎替换和数据截断异常,允许更灵活的错误处理。
2024-09-25 17:43:29
580
原创 Java17-Sealed Classes(密封类)
乘积类型:多个字段的组合,表示的是“并存的多个属性”。求和类型:多个可能的类型选择,表示的是“互斥的可能性”。这两者的组合可以帮助设计清晰且结构化的数据模型,使程序的逻辑和数据表示更具可读性和安全性。Sealed类提供了一种更细粒度的控制机制,允许开发者限制继承的范围,从而实现更安全、更明确的类层次设计。安全性提升:通过对继承进行控制,Sealed类提高了系统的安全性,减少了意外扩展和子类滥用。简化代码:通过限定子类,Sealed类可以让编译器更好地处理模式匹配、类型推断等操作,简化代码逻辑。
2024-09-24 15:05:34
1361
原创 Netty网络编程
在本章中,我们快速浏览了Netty,并演示了如何使用Netty编写一个完全可用的网络应用程序。在接下来的章节中会有更多关于Netty的详细信息。我们还鼓励您查看包中的Netty示例。本文章是为学习Netty网络编程所写,根据项目需求会时不时更新。参考Netty官方手册。
2024-09-19 16:40:22
1162
原创 Java22-匿名变量/模式(Unnamed Variables & Patterns)
每个通过语句声明的和final字段在访问其值时都必须具有。包括变量的简单名称(或者,对于字段,由限定的字段的简单名称)出现在表达式中的任何位置,除了作为简单赋值运算符,this的左边操作数 "=".如果右侧操作数的类型与变量的类型不兼容,则会发生编译时错误。否则,在运行时,将按以下三种方式之一评估表达式。概括。
2024-09-17 16:34:47
880
原创 SpringSecurity如何正确的设置白名单
在SpringSecurity中,往往需要对部分接口白名单访问,而大部分在使用Security中就有一个误区,那就是免鉴权访问和白名单的区别。大部分的Security文章包括官方文档给出免鉴权访问都是使用去对相应路径进行免鉴权访问,但实际上这仅仅只表示该资源不需要相应的权限访问,但是用户还需要认证.也就是Securityd的认证/授权两个概念.
2024-07-23 15:23:14
1736
1
原创 SpringDoc2问题汇总
当我调用 /v3/api-docs接口时,Swagger显示如下:这段话一开始令我费解,因为依赖包中的版本都是对应的,通过各种问题查询我意识到这应该是Swagger未接收到返回数据,无法展示API界面,后来看到一篇解决文章,然后自己去调试解决了问题,问题文章在此,有兴趣的可以看下问题文章。这个问题挺有意思的,我来进行更详细的分析和解决方案.原因就是调换了MVC原始的报文解析顺序,导致SpringDoc返回的byte[]被Jackson2报文解析器将其解析成了Base64,然后swagger无法解析。
2024-07-19 10:14:04
926
原创 阿里云RDS云数据库库表恢复操作
所以恢复数据从被删除时间点6-21 15:30 ~ 6-27 9:00,当然如果在需恢复时间点并没有备份,则只能寻找最近的备份点恢复了,如果无法接受数据的部分丢失,我认为需要去通过undo日志来进行恢复,但是阿里云不是自己服务器大部分都是收费功能,所以仁者见仁智者见智了.2.进入实例后 ,点击右侧的备份恢复,然后看一下备份时间点,中间这边都是阿里云自动备份的备份集,基本都是7天一备份,保留7天(可以延长但要加钱)可以在阿里云的监控与报警中查看近7天的磁盘使用情况,可以知晓数据被删除的大致时间。
2024-07-05 17:14:32
1049
原创 Mybatis分页查询,同时返回total
在垃圾项目中一般都是使用mybatis plus自动返回Page,但是涉及到多表联合或者等等情况最终还是要使用mybatis进行手写sql查询,所以有此文章以便后续使用查询.至此可实现mybatis plus的Page查询,mysql中执行查询total并不会再次查询,而是获取到对应的分页查询到数据的结果.Mapper查询数据的返回值用Object接收。mapper xml语句。
2024-06-20 16:17:44
1250
5
原创 SpringSecurity request过滤问题
这里写的就有问题,好久没搞,bean命名还以为是路径映射了,请求的就是/user/register,然后在security中把这个请求路径给免授权了,结果访问的时候就被未授权处理器抛出了未授权的信息,看的我一头雾水.然后跟着一步步调试,发现在DispatcherServlet 处理请求时并没找到handler,同时modeAndView也为null然后进入报错,被SecurityContext中的处理器给捕获然后从这抛出了异常。使用RequestMapping来添加映射,不知道有没有更加好用的方式。
2024-02-20 11:43:20
462
1
原创 Qt学习(2)
QWidget是用户界面的原子类。它接收鼠标、键盘和来自系统的其他事件,并在屏幕上将它们绘制出来。每个Widget都是矩形的,并按照Z-order(Z轴)进行排序。一个Widget夹在它的Parent和它前面的Widget之间。没有嵌入parent widget中的Widget称为Window。通常情况下,Windows有一个Frame和标题栏(当然也可以通过window flags来取消这些项)。Qt中,QMainWindow和QDialog的多种多样的子类是最常见的Window类型.
2023-11-24 20:29:50
1084
原创 Qt框架学习(1)
可以在帮助中使用查找,寻找需要的包文件, 然后导入到CMakeLists中,将find_package部分放入对应位置,target_link_libraries放入对应位置。CMakeLists.txt:这个文件相当于Java中的pom文件,用于管理项目的库和文件的。Source Files:里面放的都是源文件。Hander Files:里面放的都是头文件。4.导入需要的Qt模块。
2023-11-23 11:12:27
511
原创 C++中类和动态内存分配
在C++中,内存分为栈和堆。栈中的对象生命周期较短,往往在作用域结束后就会销毁,而堆中的对象生命周期较长,只有当使用delete或者程序结束时才会销毁。而new则是将我们创建的对象分配到堆中,使对象可以跨作用域使用。
2023-11-21 10:17:46
120
原创 C++对象和类
1.cpp中对象默认访问权限都是private的2.私有成员只能通过公有函数访问使用3.类方法名称需包含类名,为函数的限定名在头文件中定义类,同时将公有方法原型声明(类似Java接口道理).在同名源文件中实现公有函数定义.在其他源文件中使用类和类方法.小细节:1.如果是短小的成员函数,将被作为内联函数。2.两个不同的对象,类成员和变量都是自己的,但是共享同一组类方法。3.如果拥有有参构造器,必须声明无参构造器原型,通常应提供对类成员隐式初始化的默认构造函数。
2023-11-01 13:42:14
145
原创 C++名称空间
至此我们可以有一个初步对头文件和命名空间的认识了,我们将在头文件中定义命名空间,声明对应空间中的变量信息,同时可以定义函数原型(类似于接口),然后通过同名源文件去实现命名空间中的函数定义,或者定义外部变量,最后在main文件中引入头文件,使用using声明或者using namespace编译命令来使用该命名空间中声明的变量和函数。1.声明区域:声明区域是指可以在其中声明的区域,例如可以在函数外部声明全局变量(区域为所在的文件),在函数块内声明局部变量(区域为所在的块),其声明区域就为其声明位置。
2023-10-30 10:51:31
127
原创 C++头文件定义变量
1.在进行头文件学习时,犯了不少错误,记录一下,先贴代码..h头文件#ifndef MY_FIRST_H_#define MY_FIRST_H_struct Person{ std::string name; int age; char8_t gender;};//需要使用extern来声明,否则在多个文件中引入该头文件会出现重定义错误extern int x;extern int y;void kickUser(int x);void lookLookMe(int y
2023-10-29 10:07:37
1442
原创 3.流的输入/输出
这里cout是一个输出流的对象(工具),Cpp中引入的iosteam头文件并不包含该函数的原型,而是将其原型放入到了一个叫std的空间中,std中包含了很多头文件中的对象原型,而如果要使用其中的对象原型和其函数就必须声明,最简单的就是上面一种方法.endl:输出流有一个输出槽,里面存放的待输出的数据,而当我们使用endl的时候就会将输出槽中的所有数据发送到设备(控制台),这就是清槽,然后会换行.\n:它是一个转义字符,当被输出时会被转换成\xxxx,然后被一起放入到输出槽中,等待输出.
2023-10-06 19:25:56
111
原创 2.基本数据类型
/#定义 标识符 内容return;#define预处理,可以定义一个,会在程序中所有NUM替换为100,不同于const常量,define其实本质上对文本内容的替换。define和const的区别define是宏定义,程序在预处理阶段将用define定义的内容进行了 替换。因此在程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。而const定义的常量,在程序运行时,存在常量表中,且系统为它分配内存。
2023-09-28 09:14:08
144
原创 List的学习笔记
List中主要有ArrayListLinkedList两个实现类,在Collection中,List集合是有序的,可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍历元素。
2023-09-23 21:54:47
85
原创 MyBatis递归查询学习
上面都不符合要求,那就自己写吧,自己写了一套递归,但是又感觉不合适,因为如果要在程序中进行递归查询必须要读取数据库中所有用户数据到服务器中,如果数据量大的话服务器就崩了(而且我就是个后台程序啊!我们的这个需求符合树形结构,所以树状查询才符合业务要求(之前找到过一篇自己写的树状结构工具的文章找不到了,写的挺好的可惜的是他是查询父级和下面子集的,不符合业务要求),我们需要的是向下树状查找.这样就也是使用递归进行查询了,以前也没用过mybatis递归查询过,一条sql有时候确实感觉挺爽的,所以深入学习一下.
2023-09-22 20:28:52
1296
原创 SpringBoot项目创建jar包
SpringBoot中开发,我们的maven依赖的都是jar包,而Java不支持加载嵌套jar包,这时候就要使用Springboot的功能,可以让我们嵌套使用jar包。在maven中添加如下的依赖:<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId&
2022-05-21 07:23:50
613
原创 关于Security oauth2 +Sso整合出现的问题
当搭建好security授权服务器,资源服务器,和单点登录客户端的时候,挺开心的,基本上都是使用注解写的,也没啥多大的变动.但是在我使用ResponseBodyAdvice包装类统一返回响应请求的时候,问题就来了,再进行统一包装的时候也会将通过授权后返回的token信息进行包装,可是当客户端对返回的response进行解析的时候死活解析不出来,会把返回的信息全部放入到增强内容additionallnformation当中这就令我很苦恼,也算没吃透security就开始写带来的问题,找了很多方法,
2022-05-09 10:17:57
899
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人