1.å¼è¿ä½ä»£ç å¦ä½
2.MyBatis-Plus代码生成器(3.5.1版本)
3.NAV2-Velocity Smoother 速度平滑器理解
4.VELOCITYJava模板引擎
å¼è¿ä½ä»£ç å¦ä½
å¼è¿ä½ä»£ç å¦ä½ï¼æä¹æ ·ï¼å¥½ä¸å¥½ç¨ï¼ä¸é¢è¯´è¯´ä¸ªäººæäºè§£çã
å¼è¿ä½ä»£ç ï¼å称为JNPFï¼å ¶å身æ¯ä¸å®¶å¿«éå¼åå¹³å°ï¼åé¢éæ¸è½¬åæ为ä½ä»£ç 产åãç±ç¦å»ºå¼è¿ä¿¡æ¯ææ¯æéå ¬å¸ç åèæï¼è¯¥å ¬å¸æç«äºå¹´ï¼æ³å®ä»£è¡¨äººä½èµéï¼æ³¨åèµæ¬ä¸ï¼äººåè§æ¨¡äººãæ¯ä¸æ¬¾åºäºä»£ç çæå¨çä½ä»£ç å¼åå¹³å°ï¼æçè§èçå¼åæµç¨åçµæ´»çä¸å¡é»è¾ãéç¨çææ¯æ2ç§ï¼ä¸ç§æ¯NETCoreï¼ä¸ç§æ¯JAVAå¼åï¼æ¥æå¯è§åå¼åç¯å¢ï¼ææ½å¼å¿«é设计表åï¼PCãPadãææºç«¯éé ï¼æéé ç½®ãSaaSæå¡ï¼æ¥å£å¯¹æ¥ï¼å·¥ä½æµå¼æï¼å¤ç«¯ä½¿ç¨WebãAndroidãIOSã微信å°ç¨åºï¼å¹¶ä¸æ以æ建ä¸å¡æµç¨ãé»è¾åæ°æ®æ¨¡åçæéçåè½ã为ä¼ä¸é¡¹ç®èçé¨åéå¤å·¥ä½ï¼è®©å¼åè å°éå¿æ¾å¨ä¸å¡é»è¾ï¼ä¸å¿ ç¦æ¼åºå±æ¶æ设计ã
å¼è¿ä½ä»£ç åè½ï¼
1ãé¶ä»£ç å¼åï¼æ é代ç ï¼ææ½å¼æä½ï¼èªå¨çæå¯è§ååºç¨ï¼çµæ´»æ建ä¸å¡ç®¡çç³»ç»ï¼å å¿«ä¸å¡é¨ç½²ã
2ãä½ä»£ç å¼åï¼åºäºä»£ç çæå¨ï¼ä»£ç èªå¨çæåå¯ä»¥ä¸è½½æ¬å°ï¼è¿è¡äºæ¬¡å¼åï¼æææé«æ´ä½å¼åæçã
3ãæ¥è¡¨å¯è§åï¼æä½çé¢å¯è§åï¼éè¿ç®æé ç½®å³å¯èªå¨çæåç§ç±»åçæ¥è¡¨ï¼ä¸ºä¼ä¸èç大éçéå¤å¼åå·¥ä½ã
4ã大å±å¯è§åï¼ä¸°å¯ç交äºæ§ä»¶åå¾è¡¨ç»ä»¶ï¼æä¾æºè½å¾å½¢æ¨èï¼æ¥è¡¨å¾å½¢ä»»æåæ¢ï¼ä¸ä¸å维度ã度éçéå¶ã
5ãå·¥ä½æµå¼æï¼å®ç°äºçé¢åæµç¨ç建模ï¼ä½¿å¾æµç¨è®¾è®¡åå¾ç®ååå¯æä½ï¼ç¨æ·éè¿æãæãç¹ãæ½å³å¯å¿«éå®ç°æµç¨è®¾è®¡ã
6ã移å¨ç«¯APPï¼ç§»å¨ç«¯æ°æ®æéï¼å¯ä¸é®åå¸å°APPãå°ç¨åºãH5ç移å¨å¹³å°ä¸ï¼å®ç°äºèäºéãé«æåå ¬ã
å¼è¿ä½ä»£ç ç¹ç¹ï¼
1ãææ¯åå¼æï¼éç¨.NET/JAVAææ¯
2ãå ¨æºç 交ä»ï¼å¯äºæ¬¡å¼åçå ¨æºç 交ä»
3ãéä½é¡¹ç®ææ¬ï¼%åºç¡ä»£ç æ éç¼å
4ãè·å¾åä¸ææï¼ä¿æ¤å®¢æ·çåæ³æç
5ãæé«å¼åæçï¼åºç¡åè½æ éå¼å
å¼è¿ä½ä»£ç ææ¯æ ï¼
主æ¡æ¶ï¼Spring Boot + Spring Frameworkãæä¹ å±æ¡æ¶ï¼Mybatis-plusãHibernate ValidationãAlibaba DruidãJSONåºåå: Jacksonã
æ°æ®ç¼åï¼Redisã项ç®æ建ï¼Mavenãå®å ¨æ¡æ¶ï¼Spring Security Oauth2+JWTã模æ¿å¼æï¼Velocityãå³æ¶é讯ï¼spring-boot-starter-websocketãAOP: spring-boot-starter-aopçã
æ¡é¢æä½ç³»ç»ï¼
Windows 7+ãMacOSãUbuntu Desktop(æ¡é¢ç)ãDeepin(深度æä½ç³»ç»)ãç»ä¿¡UOSæ¡é¢(ä¸ä¸)çãä¸æ éºéºæ¡é¢çãä¸ç§æ¹å¾·æ¡é¢ççã
å½å è¿æåªäºå¥½ç¨çä½ä»£ç å¼åå¹³å°ï¼
æè¿éçä½ä»£ç ççç«ï¼å½å å·²ç»åºç°äºå¾å¤ä½ä»£ç å¼åå¹³å°ï¼èä¸JNPFä½ä»£ç 产å类似çä½ä»£ç å¹³å°ï¼å½å ä¹æå¾å¤ï¼æ¯å¦ï¼ééå®æãå为åºç¨éæ¹ãç±éæãClickPaaSãç»ä¿¡Informatçã
ä»æ°æ®å®å ¨è§åº¦èèï¼è¿æ¯ç§æåé¨ç½²çä½ä»£ç å¹³å°æ´é è°±ï¼æ¯å¦ç»ä¿¡Informatä¼ä¸çº§ä½ä»£ç å¹³å°ï¼å¯ä»¥æ»¡è¶³ç¨æ·æ´å¤å®å¶åéæ±ï¼åæ¶æ°æ®æ´å®å ¨ãç§æåé¨ç½²å¯ä»¥ä¸ºä¼ä¸å¸¦æ¥å¾å¤å¢çï¼
1ãå®å¶å¼å
ç§æåé¨ç½²å¯ä»¥æ ¹æ®å®¢æ·èªå·±çéæ±åæ åµï¼å®å¶ä½¿ç¨åè½ãä¸åè¡ä¸ãä¸åç±»åçä¼ä¸ç¨æ·å¯¹è½¯ä»¶éæ±æ¯ä¸ä¸æ ·çï¼éç¨è½¯ä»¶å¹¶ä¸è½æ»¡è¶³ä¸åç±»åç管çéæ±ãè对äºä¸ä¸ªä¼ä¸æ¥è¯´ï¼æå¤çåå±é¶æ®µä¸ä¸æ ·ï¼å°±åå¨äºä¸ä¸æ ·ç管çéæ±ãå¾å¤ä¼ä¸å¯¹è½¯ä»¶æäºä¸ªæ§åå®å¶çéæ±ï¼éè¦å¼åä¸å±åè½ï¼ç§æåé¨ç½²å¹³å°å¯ä»¥æ´å¥½å°æ»¡è¶³è¿ç±»éæ±ã
2ãæ°æ®å®å ¨
ä¸äºå¯¹æ°æ®ææçè¡ä¸ï¼æ¯å¦æ¿ä¼åä½ãéèãåå·¥çè¡ä¸ï¼æ 论æ¯å¤å æ°æ®åå¨è¿æ¯ä½¿ç¨æµè¡çäºè®¡ç®SaaSåºç¨ç¨åºï¼é½å°ä½¿ä¼ä¸æ°æ®çå®å ¨æ§åéå¯æ§é¾ä»¥ä¿è¯ï¼ç»ä¼ä¸å¸¦æ¥æ æ³é¢æçé£é©ï¼ç§æåé¨ç½²å¹³å°æ´å®å ¨ã
3ã对æ¥å·²æç³»ç»
ä¼ä¸ç³»ç»éç使ç¨æ¶é´è¶é¿ãå¤ææ§è¶é«ï¼è°æ´ä¼åè½åè¶æ¥è¶å·®ï¼ä½ä¼ä¸åä¸æ³éæ°æ´ä½å¼å以è´äºå½¢æåµå±ï¼å¯¹æ¤ï¼å¯ç§æåé¨ç½²çä½ä»£ç å¼åå¹³å°å¯ä»¥å©ç¨å¼æ¾çæ¥å£å°æ°ç³»ç»éæå°ä¼ä¸å·²æç³»ç»ä¸ï¼ä»¥æå°çè°æ´ææ¬å®ç°å¯¹åæç³»ç»æ¹é å级ãåæ¶ï¼ç§æåé¨ç½²çå¹³å°æå±æ§å¼ºï¼å¯å¨åæåè½ä¸äºæ¬¡å¼åè¿è¡èªä¸»å级ï¼è®©äº§åæ´å¥½çæå¡äºä¼ä¸ï¼å»¶é¿è½¯ä»¶ä½¿ç¨å¯¿å½ã
MyBatis-Plus代码生成器(3.5.1版本)
MyBatis-Plus(简称 MP)是源码Mybatis的增强工具,在 MyBatis 下载的基础上只做增强不做改变,为简化开发、源码提高效率而生。下载
特性:pom配置,源码依赖准备好后,下载prolog程序源码创建Java类,源码在main()方法中:配置连接mysql数据库信息+调用自动生成API并设置各类参数,下载根据自定义策略,源码执行自动生成代码操作。下载这里新建一个MpGenerator.java,源码提供主方法main()。下载
templateConfig我禁用了MP提供的源码模板,设置成了自己定义的下载。先看下MP自带的源码yandex源码模板。
包路径,一共支持三种引擎,Velocity对应vm后缀;Beetl对应btl后缀;Freemarker对应ftl后缀
MP自带的模板service,controller等太简单,只是一个文件并没有提供增删改查功能,可以自己配置一个模板替换到自带的。就需要在templateConfig中配置一下。(自带的模板就不贴代码了,有兴趣的自己看一下)
拿controller举例,贴一下我自己配置的。
其实就是把增删改查的外壳设置好,把参数配置成动态的。$ 里面这些参数是哪里来的呢?接下来分析一下
由于我用的是Velocity,看一下它的libvert 源码引擎源码
一共4个方法,看名字大概分析一下,大概率是writer这个方法是主要功能,接下来断点看一下。
模板中配置的动态参数,都是从objectMap取的。
table数据格式,可以看到生成的entity,mapper,service,controller名称,fields取的数据库中字段信息。
是否为主键,字段类型,名称等等。drawingmanager源码可以根据这些参数来配置我们需要的模板样式。
如果objectMap中的参数不满足我们的要求,可以自己写一个引擎继承VelocityTemplateEngine重写他的writer方法。
我把主键的信息单独取出来了,避免每次循环调用。
自定义配置模板文件,根据MP提供的功能,可以生成entity,mapper,mapperXML,service,serviceImpl,controller。我们可能还需要用到BO,说说 源码VO等,这时候就需要自定义配置模板了。
模板的定义跟上面说的一样。
简单记录一下自己使用过程的学习,大家有啥想法互相学习。
各个参数详细说明: mybatis-plus代码生成器及配置 - BlogMemory - 博客园
NAV2-Velocity Smoother 速度平滑器理解
NAV2 Velocity Smoother 是一个用于平滑由 NAV2 框架发送给机器人控制器速度的功能包。主要目的是通过平滑加速减少机器人电机和硬件控制器的磨损。平滑处理包括对速度、加速度和死区的控制。个人理解其核心功能有以下几点:
1. 确保发布的速度在容许的速度区间内。
2. 保证指令速度与机器人当前速度所计算得到的加速度在容许的区间内。
3. 在[x, y, theta]坐标轴上考虑同比例变化。
4. 考虑闭环控制,通过使用 odometry 数据来保证平滑过程的准确性。
Velocity Smoother 参数设定如下:
1. **smoothing_frequency**:设置平滑频率(Hz),决定如何使用最后接收到的速度命令进行速度、加速度和死区约束的平滑处理。根据局部轨迹规划器的速率调整平滑效果,设置较高频率时进行插值并提供平滑的硬件控制命令。
2. **scale_velocities**:是否按照同比例调整其他速度组件,以适应加速限制带来的变化。确保所有组件方向一致,同时严格遵守加速限制,即使这意味着稍微偏离命令轨迹。
3. **feedback**:使用当前状态反馈,OPEN_LOOP 模式下使用上一次发布的速度作为当前速度,适合开环控制;CLOSED_LOOP 模式下使用 odometry 信息估计速度,要求 odometry 高速率低延迟。
4. **max_velocity**:在[x, y, theta]轴上的最大速度。
5. **min_velocity**:在[x, y, theta]轴上的最小速度,且为负值,表示逆向。
6. **deadband_velocity**:发送给硬件控制器的最小速度,防止由于无法达到该速度而损坏硬件控制器的情况。
7. **velocity_timeout**:速度接收的超时时间,即原始速度接收频率。
8. **max_accel**:每个轴[x, y, theta]上的最大加速度。
9. **max_decel**:每个轴[x, y, theta]上的最小减速度,应为负值。
. **odom_topic**:用于闭环控制的 odometry 主题。
. **odom_duration**:在闭环模式下,缓冲 odometry 命令以估计机器人速度的时间。
源码注解涉及的主要函数为 void VelocitySmoother::smootherTimer(),该函数接收由局部路径规划器或运动控制器发布的速度指令,并发布经过平滑处理后的速度。
VELOCITYJava模板引擎
Velocity是一个基于Java的模板引擎,具备强大的灵活性和适应性,为开发者提供了一种简洁且高效的方式来进行模板设计和代码整合。它允许用户仅通过模板语言引用由Java代码定义的对象,从而在Web开发中实现界面设计人员与Java程序开发人员的协作,构建遵循MVC架构的Web站点。
在Web开发场景下,Velocity能显著简化开发流程。界面设计人员专注于页面的显示效果,而Java程序开发人员则负责业务逻辑的编码。通过将Java代码与Web页面分离,Velocity为Web站点的长期维护提供了便利,同时也为开发者提供了JSP和PHP之外的另一种可选方案。
Velocity的适用范围远不止于Web开发领域。它还能够生成SQL、PostScript和XML等不同类型的文件,作为独立工具产生源代码和报告,或作为其他系统的集成组件使用。更进一步,Velocity还能为Turbine Web开发架构提供模板服务,使Web应用以真正的MVC模型进行开发成为可能。通过Velocity+Turbine的组合,开发者能够获得一个强大的模板服务,从而实现更高效、更灵活的Web应用开发。
总的来说,Velocity是一个功能丰富、高度可定制的模板引擎,它在Web开发、数据处理、代码生成等领域展现出强大的能力。无论是在简化Web开发流程、提升开发效率,还是在扩展应用功能方面,Velocity都是一个值得考虑的有力工具。