1.部署步骤 1.1 100%可生产使用. 1.2 导入到idea时候选择maven项目 1.3 修改demo里面子项目resources/application.yml的redis地址为自己服务器地址,执行 mvn package -Dmaven.test.skip=true 打包后;直接运行demo/下的 ClickCaptchaApplication为启动点击文字验证码demo;直接运行demo/下的 DraggedCaptchaApplication为启动滑动验证码demo。 2.运行环境支持 2.1 JDK1.8 2.2. MAVEN-3.3 2.3. spring-boot-2.1.17.RELEASE 2.4. Redis 3. 核心技术要点 3.1.JAVA掌握AWT的BufferedImage、Graphics2D、Font;Redis;图片生成随机位置 随机中文文字、随机抠图、拼图都只需要用到BufferedImage和Graphics2D。 3.2.前端熟悉点击事件,根据点击事件的坐标位置、图片的位置、浏览器的滚动位置算 出点击图片的相对位置;熟悉拖动原理。 3.3.坐标信息传输用AES或DES进行加密。 4.实现思路 4.1点击文字图片验证码:https://blog.csdn.net/m0_38138879/article/details/117552010 4.2拖动图片验证码:https://blog.csdn.net/m0_38138879/article/details/117559456
流程梳理思路和要求.pptx
2021-06-02 17:01:01 254KB 流程梳理
1
1、CAN收发队列 使用内存FIFO缓冲CAN帧,适合大数据量通信;并使用内部软中断处理CAN数据,相当于事件响应,综合应该比查询方式节省不少时间,也应该比OS调度省点时间。Can.C:底层处理,Communi.C:与应用层高相关。 应用层处理流程用函数指针表的方式调用减少代码量及阅读整齐;实现CAN各种错误记录机制。已初步测试,该机制可用。 CAN处理流程: 接收:CAN1_RX0_IRQHandler_Name (void), CAN1_RX1_IRQHandler(void) 接收中断,CAN_QueueWriteQuick()将当前的有效报文压入内存FIFO,压入的数据为整个CAN邮箱数据,所以后续的处理函数可以分辨出完整的数据。 void CAN1_RX0_IRQHandler_Name (void) // CAN1_RX0_IRQHandler_Name { /* FIFO从空状态开始,在接收到第一个有效的报文后,FIFO状态变为挂号_1(pending_1), 硬件相应地把CAN_RFR寄存器的FMP[1:0]设置为’01’(二进制01b)。 软件可以读取FIFO输出邮箱来读出邮箱中的报文,然后通过对CAN_RFR寄存器的RFOM位 设置’1’来释放邮箱,这样FIFO又变为空状态了。如果在释放邮箱的同时, 又收到了一个有效的报文,那么FIFO仍然保留在挂号_1状态,软件可以读取FIFO 输出邮箱来读出新收到的报文。 如果应用程序不释放邮箱,在接收到下一个有效的报文后,FIFO状态变为 挂号_2(pending_2),硬件相应地把FMP[1:0]设置为’10’(二进制10b)。 重复上面的过程,第三个有效的报文把FIFO变为挂号_3状态(FMP[1:0]=11b)。 此时,软件必须对RFOM位设置1来释放邮箱,以便FIFO可以有空间来存放下一个有效的 报文;否则,下一个有效的报文到来时就会导致一个报文的丢失。 */ while (CAN1->RF0R & CAN_RF0R_FMP0) // message pending ? { CAN_QueueWriteQuick(&CanRxQueue;, (T_CanFrame *)&CAN1;->sFIFOMailBox[CAN_FIFO0]); CAN1->RF0R |= CAN_RF0R_RFOM0; // Release FIFO 0 output mailbox #if CAN1_SWI_HANDLE_EN > 0 /* Add by Xsky 2011-06-18 15:48 */ EXTI->SWIER |= CAN1_SWI_EXTI_LINE; /* Add by Xsky 2011-06-18 15:47 */ #endif } } void CAN1_RX1_IRQHandler (void) { while (CAN1->RF1R & CAN_RF1R_FMP1) // message pending ? { CAN_QueueWriteQuick(&CanRxQueue;, (T_CanFrame *)&CAN1;->sFIFOMailBox[CAN_FIFO1]); CAN1->RF1R |= CAN_RF1R_RFOM1; // Release FIFO 1 output mailbox #if CAN1_SWI_HANDLE_EN > 0 /* Add by Xsky 2011-06-18 15:48 */ EXTI->SWIER |= CAN1_SWI_EXTI_LINE; /* Add by Xsky 2011-06-18 15:47 */ #endif } } 接收中断响应后,触发STM32的内部软中断(EXTI->SWIER |= CAN1_SWI_EXTI_LINE;), 实现当CAN硬件中断响应完成后,触发更低优先级的中断去处理内存中的CAN数据队列,如果处理时再发生新的CAN硬件接收中断,则会先响应硬件中断,以减少或不丢失CAN FIFO邮箱数据。处理函数在Communi.C中实现。 发送,CAN_SendFrame(): 发送时如果邮箱有空则直接将数据压入邮箱,否则将数据压入内存发送队列。等待上一次数据发送完成时,在发送中断中提取FI
2021-06-01 16:38:23 1.27MB STM32 CAN UART uCOS
1
这个计算器设计利用了VC++6.0的MFC框架实现了windows窗口程序的多样性和实用性,巧妙地展现了C++程序语言的面向对象性,程序简洁但功能齐全。 关键算法为实现加减乘除等算法以及调用了开方函数和科学计算方法等。
2021-05-31 00:25:42 4.49MB vc++ MFC 计算器 代码和文档
1
qt_上下左右控制模拟人思路的实现+实例源代码,仅限于qt使用,因为使用了qt的库,不过思想是对的。
2021-05-30 20:13:17 568KB qt 上下左右 模拟人思路
1
代码审计思路总结.xmind
2021-05-30 18:00:12 36KB 代码审计
1
产品开发设计中基于产品外延定义的设计思路探讨
学生信息管理系统 内容如下: 1)设计Student类,该类继承于Person类。Person类有成员变量姓名、性别、年龄、身高、体重和职业等。 2)Person类重写toString方法查看实例对象的属性;有setName方法修改姓名;有setAge方法修改年龄;有setJob方法修改职业信息。 3)Student类有成员变量学号、选课科目、GPA、年级、学院等。 4)Student类重写toString方法查看实例对象的属性;有setGPA方法修改绩点、有setGrade方法修改年级、有addCourse方法为实例对象添加选的课程、有deleteCourse方法删除实例对象选的课程。 5)编写一个测试类Test,在该类中提供验证以下功能的操作菜单:可以创建任意多个Student对象、可选择对实例对象进行修改姓名操作、修改年龄操作、设置绩点操作、可对于同一学院的同学按GPA排序,并输出排序后的所有的学生信息(GPA排名)、为某个同学添加一门选课、为某个同学退掉一门选课。
2021-05-29 14:04:28 113KB java 代码
1
智慧医疗是智慧城市的一个重要组成部分,是综合应用医疗物联网、数据融合传输交换、云计算、城域网等技术,通过信息技术将医疗基础设施与IT基础设施进行融合,以“医疗云数据中心”为核心,跨越原有医疗系统的时空限制,并在此基础上进行智能决策,实现医疗服务最优化的医疗体系。城镇化促进了医疗卫生信息化建设,在不断增加医疗卫生资源的同时,也使得医疗卫生资源不断集中到大医院,并且发生连锁反应。挂不上号、看病距离远、紧急病情无法得到及时救治等“看病难”问题,从本质上,没有得到有效解决。机构与机构之间信息孤立、患者对医疗业务不熟悉等问题使得患者医疗费用重复开销或者不能有效使用,“看病贵”的问题日渐明显。
2021-05-29 14:03:35 18.8MB 智慧医院 智慧医疗 医疗数字化 物联网
根据现场数据统计医院每天停车达XXXX辆/d以上,从医院停车需求角度,医院停车人群可分为:门诊就诊人员停车、住院患者停车、探视人员停车、工作人员停车、出租车等几类需求。其中住院患者停车特点为需求量较小,多为过夜停车,探视人员、工作日停车特点位需求量较小,多为短期临时是停车,门诊就诊人员停车特点为对停车设施量需求最大,多为短期临时停车。根据数据统计医院内过夜停车了较少,多为工作时间短期临时停车,平均停车时长在3-4个小时左右,因此白天医院区内停车位严重不足,同时院内停车位分布松散,用停车找车位麻烦,导致院内交通指挥压力巨大。
2021-05-29 14:03:14 5.41MB 智慧医院