作者:王建乐1前言在日常开发工作中,我们经常用MybatisGenerator根据表结构生成对应的实体类和Mapper文件。但是MybatisGenerator默认生成的代码中,注释并不是我们想要的,所以一般在Generator配置文件中,会设置不自动生成注释。带来的问题就是自动生成代码之后,我们还要自己去类文件中把注释加上,如果生成的类较少还好,如果有生成很多类文件,自己加注释是一件繁琐的工作。通过重写MybatisGenerator的CommentGenerator接口,可以方便地生成自己想要的注释,减少重复工作。2使用Java方式执行MybatisGenerator2.1IDEA中新建M
文章目录一、使用express-generator创建项目1.1安装express-generator模块1.2生成express项目结构1.3启动项目1.4设置nodemon自启项目二、手动创建一个Express项目2.1创建项目文件夹并初始化2.2安装express模块2.3创建项目主文件2.4编辑app.js文件2.5启动项目2.6使用nodemon启动项目三、项目代码一、使用express-generator创建项目构建Express项目最快捷方式,莫过于使用express-generator模块自动生成,这也是本文推荐的方式。1.1安装express-generator模块npmie
文章目录一、使用express-generator创建项目1.1安装express-generator模块1.2生成express项目结构1.3启动项目1.4设置nodemon自启项目二、手动创建一个Express项目2.1创建项目文件夹并初始化2.2安装express模块2.3创建项目主文件2.4编辑app.js文件2.5启动项目2.6使用nodemon启动项目三、项目代码一、使用express-generator创建项目构建Express项目最快捷方式,莫过于使用express-generator模块自动生成,这也是本文推荐的方式。1.1安装express-generator模块npmie
前言 在基于Mybatis的开发模式中,很多开发者还会选择Mybatis-Plus来辅助功能开发,以此提高开发的效率。虽然Mybatis也有代码生成的工具,但Mybatis-Plus由于在Mybatis基础上做了一些调整,因此,常规的生成工具生成的代码还有一些不太符合预期。而且对于多数据库的支持不是很好。因此,我们需要一款支持高度定制化,带图形UI页面,能适配多数数据库的基础程序生成框架。本文就介绍这款基于Mybatis-Plus的代码自助生成器,github地址:mybatis-plus-generator-ui。文章通过实例集成的方式来详细讲解mybatis-plus-generat
前言 在基于Mybatis的开发模式中,很多开发者还会选择Mybatis-Plus来辅助功能开发,以此提高开发的效率。虽然Mybatis也有代码生成的工具,但Mybatis-Plus由于在Mybatis基础上做了一些调整,因此,常规的生成工具生成的代码还有一些不太符合预期。而且对于多数据库的支持不是很好。因此,我们需要一款支持高度定制化,带图形UI页面,能适配多数数据库的基础程序生成框架。本文就介绍这款基于Mybatis-Plus的代码自助生成器,github地址:mybatis-plus-generator-ui。文章通过实例集成的方式来详细讲解mybatis-plus-generat
普遍意义上讲,生成器是一种特殊的迭代器,它可以在执行过程中暂停并在恢复执行时保留它的状态。而协程,则可以让一个函数在执行过程中暂停并在恢复执行时保留它的状态,在Python3.10中,原生协程的实现手段,就是生成器,或者说的更具体一些:协程就是一种特殊的生成器,而生成器,就是协程的入门心法。协程底层实现我们知道,Python3.10中可以使用async和await关键字来实现原生协程函数的定义和调度,但其实,我们也可以利用生成器达到协程的效果,生成器函数和普通函数的区别在于,生成器函数使用yield语句来暂停执行并返回结果。例如,下面是一个使用生成器函数实现的简单协程:defmy_corout
普遍意义上讲,生成器是一种特殊的迭代器,它可以在执行过程中暂停并在恢复执行时保留它的状态。而协程,则可以让一个函数在执行过程中暂停并在恢复执行时保留它的状态,在Python3.10中,原生协程的实现手段,就是生成器,或者说的更具体一些:协程就是一种特殊的生成器,而生成器,就是协程的入门心法。协程底层实现我们知道,Python3.10中可以使用async和await关键字来实现原生协程函数的定义和调度,但其实,我们也可以利用生成器达到协程的效果,生成器函数和普通函数的区别在于,生成器函数使用yield语句来暂停执行并返回结果。例如,下面是一个使用生成器函数实现的简单协程:defmy_corout
Generator异步方案相比于传统回调函数的方式处理异步调用,Promise最大的优势就是可以链式调用解决回调嵌套的问题。但是这样写依然会有大量的回调函数,虽然他们之间没有嵌套,但是还是没有达到传统同步代码的可读性。如果以下面的方式写异步代码,它是很简洁,也更容易阅读的。//likesyncmodetry{constvalue1=ajax('/api/url1')console.log(value1)constvalue2=ajax('/api/url1')console.log(value2)constvalue3=ajax('/api/url1')console.log(value3)c
Generator异步方案相比于传统回调函数的方式处理异步调用,Promise最大的优势就是可以链式调用解决回调嵌套的问题。但是这样写依然会有大量的回调函数,虽然他们之间没有嵌套,但是还是没有达到传统同步代码的可读性。如果以下面的方式写异步代码,它是很简洁,也更容易阅读的。//likesyncmodetry{constvalue1=ajax('/api/url1')console.log(value1)constvalue2=ajax('/api/url1')console.log(value2)constvalue3=ajax('/api/url1')console.log(value3)c
IteratorIterator概念Iterator提供了一种统一的接口机制,为各种不同数据结构提供统一的访问机制。定义Iterator就是提供一个具有next()方法的对象,每次调用next()都会返回一个结果对象,该结果对象有两个属性,value表示当前的值,done表示遍历是否结束。functionmakeIterator(Array){letindex=0;return{next:function(){return(Array.length>index?{value:Array[index++]}:{done:true})}}}letiterator=makeIterator(['1'