皮皮网
皮皮网

【arduino智能小车源码】【疯狗助手系统源码】【手机视讯棋牌源码】agg 源码

来源:thinkphp5 源码分析 发表时间:2024-11-30 00:29:43

1.MyBatis-Plus中如何使用ResultMap
2.如何学习别人的程序代码
3.VCF计算机术语
4.GSDS基因结构图的绘制

agg 源码

MyBatis-Plus中如何使用ResultMap

       MyBatis-Plus 对 MyBatis 基本零侵入,完全可以与 MyBatis 混合使用,这点很赞。

        在涉及到关系型数据库增删查改的业务时,我比较喜欢用 MyBatis-Plus ,开发效率极高。具体的使用可以参考官网,或者自己上手摸索感受一下。

        下面简单总结一下在 MyBatis-Plus 中如何使用 ResultMap 。

        先看个例子:

        有如下两张表:

        其中, tb_hero 中的 bid 关联 tb_book 表的 id 。

        下面先看 Hero 实体类的代码,如下:

        注意了,我特地把 tb_hero 表中的 bid 字段映射成实体类 Hero 中的 bookId 属性。

        MyBatis-Plus 打印出的 SQL 为:

        没毛病, MyBatis-Plus 会根据 @TableField 指定的映射关系,生成对应的 SQL 。

        MyBatis-Plus 打印出的 SQL 为:

        也没毛病,可以看到生成的 SELECT 中把 bid 做了别名 bookId 。

        比如现在我想连接 tb_hero 与 tb_book 这两张表,如下:

        查询 MyBatis-Plus 打印出的 SQL 为:

        SQL没啥问题,过滤与分页也都正常,但是此时你会发现 bookId 属性为 null ,如下:

        为什么呢?

        调用 BaseMapper 中内置的 selectById() 方法并没有出现这种情况啊???

        回过头来再对比一下在 HeroMapper 中自己定义的查询与 MyBatis-Plus 自带的 selectById() 有啥不同,还记得上面的刚刚的测试吗,生成的SQL有啥不同?

        原来, MyBatis-Plus 为 BaseMapper 中内置的方法生成SQL时,会把 SELECT 子句中 bid 做别名 bookId ,而自己写的查询 MyBatis-Plus 并不会帮你修改 SELECT 子句,也就导致 bookId 属性为 null 。

        在这里就是 tb_hero 表中的 bid 字段映射成实体类 Hero 中的 bid 属性。这样当然可以解决问题,但不是本篇讲的重点。

        在 @TableName 设置 autoResultMap = true

        然后在自定义查询中添加 @ResultMap 注解,如下:

        这样,也能解决问题。

        下面简单看下源码, @ResultMap("mybatis-plus_实体类名") 怎么来的。

        详情见: com.baomidou.mybatisplus.core.metadata.TableInfo#initResultMapIfNeed()

        注意看上面的字符串 id 的构成,你应该可以明白。

        思考: 这种方式的 ResultMap 默认是强绑在一个 @TableName 上的,如果是某个聚合查询或者查询的结果并非对应一个真实的表怎么办呢?有没有更优雅的方式?

        基于上面的思考,我做了下面简单的实现:

        关键代码其实没有几行,耐心看下应该不难懂。

        还是用例子来说明更直观。

        下面是一个聚合查询:

        其中 BookAgg 的定义如下,在实体类上使用了 @AutoResultMap 注解:

如何学习别人的程序代码

       å¦‚何学习别人的程序代码

        åªè¦æ˜¯ä¸ªç¨‹åºå‘˜å°±ä¼šçœ‹ä»£ç ï¼Œä½†æ˜¯å¾ˆå¤šäººï¼ŒåŒ…括我在内,在看一些开源代码的时候往往一头雾水,不知从何看起。

           è¶Šæ˜¯ç»“构好的代码,如果不理解它的思想越是难得看懂,例如Qt、Agg、CryptPP等。这里我将我的一些经验写在这里,留个记录吧。

           å®Œå–„的开源工程都会有文档,即使没有文档也应当有api-guid,那么我们先找到它们,这时我们不要管它是怎么设计的,先编译一个,照着例子写个程序运行一下吧,再试试一些高级功能。这时我们在心中先猜猜它应当是怎样设计的(大多数情况是没有想法)。好吧,我们再来看文档,文档中一般有静态结构的说明,如模块划分、类列表、每个类的成员列表。嗯,还是一头雾水啊,没办法,我们打开源码所在的文件夹,看看源码的组织方式。嗯,有点头绪了,大多数情况下,目录结构与工程结构是一致的,而我们编写例子程序的时候使用的接口一般在源码的include目录下。那好吧,我们根据头文件名和目录结构去找相应的实现文件吧,但这往往相当困难,因为你会发现它根本就不是你所想的那样。一个类或一个外部变量,你想找到它往往会动用Windows的搜索。看了几个小时还没有太大的进展,仍然不知道它的头(高层的入口)在哪,尾(底层的具体实现)在哪,不过你至少对那些地方有哪些文件都熟悉了,那些零星的注释也被你看了一遍。这时该把你写的例子程序拿出来了,我们单步跟进去,跟的同时我们也注意一下所跟到的文件的物理位置、它附近都有哪些文件、哪些类或结构。一直跟下去,这样我们往往会顺藤摸瓜找到最底层的实现,并发现一条执行路径(太变态的或用了一堆模板的除外)。由于你已经对工程的结构有了一定了解,这时你可以从头和尾一起开始看代码(前提是你已经找到了一个头和一个尾),将一条线弄清楚,那么这个工程的其他线也应该是差不多的设计思路。

           æœ‰äº›å¼€æºå·¥ç¨‹é‡Œé¢çš„宏特别多,那你要当心,首先搞清楚这些宏吧。

           ç”¨C写的工程往往比用C++写的容易懂,因为它最多有很多函数指针和extern变量,而后者则令人头疼得多,如果你实在没有办法,那么上网搜吧,很多著名的开源工程一般会有一些人将其研究心得放到blog上,看一看,说不定一下豁然开朗。

           å¥½å§ï¼Œå°±å†™è¿™ä¹ˆå¤šï¼ŒçœŸæ˜¯ä¹±ä¸ƒå…«ç³Ÿã€‚

VCF计算机术语

       在Outlook中,文件扩展名为.vcf的文件通常包含了联系人信息,可以方便地复制粘贴到联系人列表中,用于发送邮件时作为收件人的地址。

       VCF,全称为Visual Component Framework,arduino智能小车源码是一个基于C++的开源项目,旨在简化高性能应用程序的开发。它借鉴了现代C++设计,并内置了Rapid Application Development(RAD)支持,旨在跨多个平台和编译器保持兼容性,避免为单一平台重写大量代码的困扰。

       框架库在软件开发中扮演重要角色,疯狗助手系统源码它们提供固化编程方式,简化系统编程。比如早期的Borland公司推出的OWL库,后来的MFC(Microsoft Foundation Classes)和C++Builder中的VCL,都是经典案例。侯捷对MFC和VCL的评价深入浅出,揭示了它们各自的优缺点。

       随着技术进步,框架库种类繁多,如WTL(Windows Template Library)和STL(Standard Template Library)等,这些库的界限有时变得模糊。AGG、手机视讯棋牌源码LOKI库和CPPUNIT库等特定功能库,如2D图形处理、设计思维和单元测试,也值得提及。

       对于VCF,我特别关注其RTTI(Run-Time Type Information)功能和采用的高级C++编程技术。在开发一个工控软件时,我原本遇到困难,后来发现VCF的RTTI功能恰好能满足需求,尤其是其类信息查找、属性和事件等功能。然而,医院网站源码ideaVCF尚在开发阶段,帮助文档不完整;虽然源码清晰,但RTTI实现方法需要优化,例如提供更便捷的属性操作和性能提升,如直接通过编号访问属性,而非名称。

扩展资料

       五子棋术语VCF:(Victory of Continuous Four的缩写) 五子棋中引入的英文名称,即利用连续不断冲四这种绝对先手,直至最终成五而取得胜利的一种技巧。简称“连续冲四胜”或“连冲胜”。 常为五子棋残局排局解题的一种取胜技巧。另外还是开泰YL系统源码一种计算机术语、通讯录格式

GSDS基因结构图的绘制

       GSDS 2.0,一款强大的基因结构可视化工具,让你的基因标注和图表生成如虎添翼。它的设计巧妙地整合了多种数据格式,包括BED、GTF/GFF3、GenBank Accession Number/GI和FASTA,满足不同研究需求。亮点功能如下:

       直观展示: GSDS将外显子/CDS的精确坐标呈现,同时揭示了保守元件和结合位点等重要信息,帮助你深入理解基因功能。

       统一格式转换: 无论你的原始数据是何种格式,GSDS都能无缝转换为统一的图形生成格式,让数据处理变得更加便捷。

       个性化定制: 用户可以自由调整特征显示,轻松导出高质量的SVG、PNG或PDF图,甚至利用SVG-edit进行后期编辑,细节把控无遗漏。

       在数据输入方面,BED格式支持如geneID/transcriptID、起始和结束位置,以及可选的相位信息。GTF/GFF3格式则需提供geneID/transcriptID,其他字段则可根据需要自选。

       对于GenBank Accession Number/GI,GSDS能帮您提取和整合CDS信息,而FASTA则支持CDS序列输入,并与基因组进行精确映射,挖掘序列背后的生物学含义。

       使用GSDS时,只需准备所需的格式化数据,剩下的工作就交给这款强大的工具去处理。对于那些寻求深度定制体验的用户,GSDS提供了本地安装源代码(gsds_v2.tar.gz)的选项,让你拥有更灵活的使用环境。

       安装准备: GSDS 2.0的安装需要具备Apache2、Perl 5.8+、SVG、Bio-Phylo、Bedtools、EMBOSS(est2genome、seqretsplit)以及LibRSVG等软件环境。具体步骤包括解压文件、设置权限,并将bedtools和rsvg-convert链接到系统路径。

       例如,你可以执行以下命令将bedtools和rsvg-convert添加到系统路径:

ln -s -fbedtools

ln -s -frsvg-convert

       在讨论非编码区域时,我们不能忽视UTR(Untranslated Regions)。在成熟mRNA中,它位于编码区域(CDS)上游,常常携带着调控基因表达的关键元件。在原核生物中,5'UTR内含 Shine-Dalgarno序列(AGGAGGU),而在真核生物中,5'UTR的平均长度约为nt,极端情况下可达数千bp,这些细节对于理解基因表达调控至关重要。

       总而言之,GSDS 2.0为基因结构分析提供了一站式的解决方案,无论是数据处理还是图形生成,都能满足专业研究人员的高效需求。

相关栏目:热点