自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 VxWorks驱动编写流程(非VxBus模式下)

整理了一下排版,方便学习参考代码。

2024-06-21 15:26:42 916

原创 C/C++结构体给函数传参

都用于操作结构体的成员变量,区别在于:点操作符是对结构体本身进行操作,而箭头操作符是对结构体的引用进行操作。2.引用传递(传的是地址,修改形参会改变原值)1.值传递(修改形参不改变原值)

2023-11-22 15:04:01 361

原创 yuv图像格式存储方式

(图像相邻像素点的色度都差不多除了边界,舍弃后用相邻的值来填充,因此基本上是看不出来的,不得不说发明这个的真是天才)那么每像素去掉一个u或者v,就是yu_ yv_ yu_ yv_(4:2:2),然后显示的时候填充隔壁的u或者v分量即可。yuv420则是每两排中一排去掉所有u,一排去掉所有v,然后显示时上下相邻填充,最后yuv的采用比例就是4:2:0,即yuv420格式。但和rgb不同的是,yuv支持一些不同的压缩格式!如一个yuv图像的数据帧为:yuv yuv yuv yuv(4:4:4)

2023-11-09 16:00:11 240

原创 c语言之volatile关键字

例如:公共变量volatile int camera_type(表示可见光or红外)是由串口接收的数据来改变的,如果不加volatile,那么串口把它的值改变后,其他程序访问这个变量时可能还是之前的变量(因为存在寄存器里的值没变)导致异常。关于编译器优化:这个坑挺大的,简单说就是:假设要对一个设备进行初始化,此设备的某一个寄存器为0xff800000。编译器就会优化前面的循环,把它等效为把output这个指针赋值为9,省略了对该硬件IO端口反复读的操作。

2023-11-09 15:58:33 118

原创 memcpy()之小端模式

所以拷贝后输出顺序是反着的。而字符串的存储则是正常顺序(1a到4d从左往右依次存放),所以输出也是正常顺序。由src指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始地址的空间内。其原因在于,计算机在存储整形数0x1a2b3c4d时,采用的小端模式,即。例2:如果用来复制整形(多字节数据),输出结果是逆向的。例1:如果用来复制字符串,输出的顺序是正常的。函数返回一个指向dest的指针。

2023-11-04 16:09:26 356

原创 【Modbus通信实验五】Modbus TCP协议 双层网络 以及常见问题

PLC:可编程逻辑控制器(Programmable Logic Controller),专门用于工业自动化领域。它的主要功能是对生产过程进行控制和监控,以实现对工业生产过程的自动化控制。PLC采用一种可编程的存储器,在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,通过数字式或模拟式的输入输出来控制各种类型的机械设备或生产过程。单片机(Microcontrollers,MCU)又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

2023-09-09 22:05:06 854

原创 【Modbus通信实验四】Modbus RTU协议

Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。传统Modbus 是一个请求/应答协议,由于485为单工,1个服务器为主,多个客户机为从,从设备只能应答。Modbus消息桢包括RTU、ASCII、TCP。RTU、ASCII消息桢用于异步串行传输通信。TCP消息桢应用于网络传输通信(本文暂不考虑)。ASCII模式:消息以冒号字符(:对应ASCII码3aH)开始,以回车换行符。

2023-09-03 23:20:04 1039

原创 【Modbus通信实验三】数据切片问题

第一种是在报文前后加上固定的包头包尾,当数据断开时,响应函数分别会收到一个带包头的和一个带包尾的数据,将它们拼在一起即可。但这种方法的问题是,有可能被截断的数据刚好也同时带有包头包尾,因此还需要加一步CRC校验,比较麻烦。真正的原因出在MFC的COMM组件的OnComm响应函数上,即一次发送的报文会被响应两次(检测阈值时先会响应,阈值后面的数据再次响应)。第二种方法比较简便,思路是延迟接收,即OnComm一旦响应后不急着接收数据,而是过一段时间再接收,则可以保证延迟接收的数据是完整的。

2023-08-24 00:44:52 115

原创 【Modbus通信实验二】VC++编写串口调试助手

编写串口调试助手并能在虚拟机中实现虚拟端口通信。m_mscomm_motor为设置的变量名,SetCommPort()传入的变量为端口号需要参考设备管理器中的可用虚拟端口号(COM3或COM5)。

2023-08-17 17:33:29 533

原创 【Modbus通信实验一】查表法实现CRC16校验

循环冗余校验(CRC)是奇偶校验码的改进,又称为多项式编码,其原理为:发送方与接收方约定一个相同的多项式(POLY),如多项式x6+x4+x2+x+1对应的二进制码为1010111,然后将发送报文对改二进制码进行异或运算(即做除法),得到的余数则为CRC校验码,并附带在发送报文之后。字节型算法的一般描述为:本字节的CRC码,等于上一字节CRC码的低8位左移8位,与上一字节CRC右移8位同本字节异或后所得的CRC码异或。1.取上字节的CRC码的低八位,与本字节进行异或,得到下标index。

2023-08-15 01:56:50 3415

原创 MySQL8.0 窗口函数一:排序函数

以下功能仅MySQL 8.0以上版本支持参考:https://help.aliyun.com/document_detail/158532.html?spm=a2c4g.11186623.6.863.4aaa6cb2k9RpeD窗口函数:排序假设一张表存储了学生的成绩,使用order by可以对查询结果进行排序。但如果想获得排序的序号,则需要使用这些函数:row_number(),rank(),dense_rank(),ntile()等等,其特点是都用在SELECT的字段里,输出顺序默认按照序号由

2020-12-23 20:54:26 949

原创 一个复杂的sql查询案例

有两张表——user_module和user。user为学生表,user_module为学生选课的中间表(module表本题中不涉及,就不展示了),结构如下:题目是:查询1601041班选课人数大于10人的课程,展示出课程编号和该班级的选课人数。题解:第一步:先查询课程的选课人数,并按课程编号展示出来:使用聚合函数GROUP BY语句,可以将结果按照某一字段坍缩,此时便可使用count()来统计该字段的重复次数:SELECT module_id,count(*) FROM user_module

2020-08-21 16:28:24 472

原创 Java:数据精确计算

使用BigDecimal类的方法进行数学计算注意两点:构造方法传参使用字符串,因为直接传递小数的话会被当作Double型浮点数处理,造成精度误差。使用除法时,除了传入被除数外还有两个参数:保留小数点位数以及近似规则(四舍五入、向上取整、向下取整等等)。代码如下:BigDecimal a = new BigDecimal("12.3");//这里要传入字符串,不能传入小数BigDecimal b = new BigDecimal("45.6");System.out.println("a+b

2020-08-13 10:52:22 164

原创 解决finally与return一起出现时的问题

参考:https://www.jianshu.com/p/705faad2c33f总结return语句在执行时会将结果存放在栈顶,程序结束时返回的也就是栈顶的值。finally语句在执行时不会去动用栈顶的数据,因此:顺序上:先finally再return。结果上:return该是什么结果就是什么结果,不会被finally中的操作所影响。...

2020-08-12 11:23:13 153

原创 SpringBoot:Token登录、认证、授权

Session、Cookie、Token的区别网上这部分的资料很多。比如可以参考https://www.cnblogs.com/moyand/p/9047978.html等等。对于一些概念简单归纳一下:由于HTTP都是无状态请求,这些都是为了让服务端“记住”用户而发明出来的方法。为确保用户会话的独立性和安全性,不能使用明文保存用户信息(如userId),而应使用加密后的信息储存。Sessi...

2020-04-26 22:08:42 6236 1

原创 SpringBoot:文件下载、pdf预览、文件压缩

文件下载编写工具类,编辑http响应体格式。其中Content-type为application/octet-stream代表二进制流,为下载文件的格式。详见对照表:https://tool.oschina.net/commons/Utils:public class FileExporter{ public static ResponseEntity<FileSystemR...

2020-04-17 22:42:22 2014

原创 MyBatis:动态SQL(非xml方法)

SQL语句构建器参考MyBatis官方中文文档:https://mybatis.org/mybatis-3/zh/statement-builders.html1.Mapperpackage com.example.mapper;import com.example.config.sql.StudentProvider;import com.example.config.sql.User...

2020-04-17 21:36:35 976

原创 SpringMVC:线程安全性

线程安全:多个线程访问同一个变量/对象,得到的结果相同,那么是线程安全的。线程不安全:多个线程访问同一个变量/对象,得到的结果不相同,那么是线程不安全的。Spring在创建Bean默认是单例模式。所以Controller、Service、Dao等在创建后只会使用原来的实例。相比之下,Struts2不是单例,request来了就实例化一个Controller,因此是线程安全。而SpringMVC...

2020-02-18 01:32:30 317

原创 Java Regex 小记

正则表达式入门以及参考手册:https://deerchao.cn/tutorials/regex/regex.htm#grouping反斜杠与转义字符在其他语言中,转义字符是 \ ,反斜杠是 \\ 。在 Java 中,转义字符是 \\ ,反斜杠是 \\\\ 。所以,在其他的语言中,一个反斜杠 \ 就足以具有转义的作用,而在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语...

2020-02-14 21:04:45 205 1

原创 Java:使用位操作实现单表多对多存储

需求:建立Course表(等)与Teacher表的关联分析: 当两个实体之间存在着多对多的映射关系时,往往需要一张中间表来存放。但是,多一张表就会多一个实体类、Mapper、Dao等等,就需要更多的代码去维护。因此我们需要尽量减少数据库的复杂度。在这个例子中,我们就可以避免使用中间表,原因在于:老师的数量有限,(和需求方沟通后确定)不会多于30位老师使用本系统。除了Course外还有诸如...

2020-01-15 17:14:39 359

原创 SpringBoot:简单实现事务回滚

事务回滚当我们一个方法里面有多个数据库保存操作的时候,中间的数据库操作发生的错误。比如:public method() { Dao1.save(1+0); Dao1.save(1-0); //错误 Dao1.save(1/0);//假如这句发生了错误,前面的两个对象会被保存到数据库中 Dao1.save(1*0);}我们希望整个方法中的步骤都不要执...

2020-01-14 14:44:34 842

原创 SpringBoot:文件上传与导入excel

需求:要将一张excel表格的数据批量导入数据库的user表中。Excel:user表结构:实现:分两步1、文件上传SpringMVC中用的是MultipartFile对象作为参数传入。代码: @RequestMapping(value = "test/upload",method = RequestMethod.POST) public void excelToData...

2020-01-10 11:30:09 384

原创 MyBatis:使用Insert添加一行数据后返回自增主键id的值

关于这点不多说了,直接说使用方法:使用@Option注解,返回的仍然是成功添加的记录条数。而想自增主键的值保留在相应实体类下的id属性中。Dao错误用例:@Override public int createTeam(Long num,Integer courseId,Integer maxNum) { Team team = new Team(); ...

2019-12-12 15:08:28 153

原创 MyBatis:使用注解实现多表联查

一个简单的多表联查需求:user表字段:username(主键), name, school, qq等等。。team表字段:leader(主键), members1, members2等等。。然后team表的leader字段与user表的username字段相关联。同时每一个team都只对应一个user(一对一)现在要查询team的信息并同时返回leader所属的user表的信息。实现方...

2019-11-26 16:45:11 939 1

原创 Java爬虫+springboot+微信小程序实践

做了一个Java爬虫小项目,使用了开源的Java爬虫框架WebMagic。官方文档:http://webmagic.io/docs/zh/1.创建springboot工程,pom里导入WebMagic相关依赖:<dependency> <groupId>us.codecraft</groupId> <a...

2019-11-17 22:04:04 1283

原创 Java网络通信实验小记四:Swing聊天软件

Swing聊天软件前面做了Tcp和Udp的基本通信以及文件传输实验,是时候把这些内容整合在一起了。。Swing就不介绍了,需要用到什么api都可以直接查。一、基本聊天功能(服务端作中介,udp实现)软件能够实现Windows主机和一台Linux虚拟机的通信。除此之外还需要一台Linux虚拟机作为服务端起到二者中介的作用。两个客户端与服务器的通信采用无连接的udp协议,服务器收到udp包直接...

2019-09-23 12:03:23 644

原创 Java网络通信实验小记三:IO流与文件传输

IO流与文件传输前面的实验完成了TCP和UDP的通信实验。在TCP通信里我们用到了这样两句代码://通过BufferedReader获取socket套接字的输入流BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));//通过PrintWriter获取客socket套接字的...

2019-09-12 20:56:08 297

原创 Java网络通信实验小记二:Socket编程

Socket编程——TCP&UDP一、Socket套接字概述网络上具有唯一标识符的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。通信的两端都有Socket。网络通信其实就是Socket通信。数据在两个Socket之间通过IO流传输。Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己IP和端口号可以把主机当做港口,Socket就是码头,...

2019-09-10 22:18:39 327

原创 Java网络通信实验小记一 :基础知识

基础知识——网络编程三要素1.IPIpv6的简写:(1)各个4位16进制数的段中的高位0允许省略例如:1000:0000:0000:0000:000A:000B:000C:000D,可以缩写成:1000:0:0:0:A:B:C:D。(2)可以在一个IPv6地址中最多使用一次双冒号(::)来取代IPv6地址中紧密相连的多个全0的16进制数的段因此,1000:0:0:0:A:B:C:D还...

2019-09-10 19:15:46 265

原创 关于Ubuntu的一些安装、配置的记录

做了一个学校的java项目,其中涉及到多台Linux间的相互通信。此贴记录一下遇到的坑点。。。一、Linux环境下配置jdk的简便方法方法一:Terminal中输入sudo gedit /etc/profile,在配置文件后加上JAVA_HOME、CLASSPATH的路径并保存,然后使用java -version即可验证。方法二:以上方法我反复操作后都没有成功???很纳闷,所以我直接使用了s...

2019-09-09 21:32:51 115

转载 浅析JdbcTemplate中的BeanPropertyRowMapper

在思考JdbcTemplate在进行query时是怎么讲数据表映射到实体类上的时候,发现了这篇文章:https://blog.csdn.net/qq_22339269/article/details/82978717以下是正文:我们在使用BeanPropertyRowMapper时,是给query()方法传递一个BeanPropertyRowMapper对象,让JdbcTemplate帮我们...

2019-08-07 10:37:31 985 1

原创 spring+springMVC配置时发生 org.apache.catalina.core.StandardContext.startInternal Context [] startup fail

spring+springMVC配置时发生 org.apache.catalina.core.StandardContext.startInternal Context [] startup failed due to previous errors错误在启动Tomcat时没有响应,错误信息如下:严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.c...

2019-07-31 17:46:51 3196

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除