色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

寫一個比ChatGPT還牛的CRUD代碼生成器

jf_ro2CN3Fa ? 來源:稀土掘金 ? 2023-02-20 13:58 ? 次閱讀

最近在做一個項目,需要新建20多張表

相信大多數同學應該和我一樣,都是比較討厭創建新表這個工作的,因為每創建一張表,都要去創建實體類、創建增刪改查的接口、編寫增刪改查的SQL代碼等等,把這些事情做完,2個小時也就過去了

我就在思考啊,每一張表,就要耗費兩個小時,20多張表,那就是40多個小時,一周的時間就這樣過去了。

思考

這誰受得了呀,所以我打算寫一個工具,把這些代碼都自動生成出來!

代碼都自動生成出來

在連續爆肝了5個晚上之后,我做出了這款自動生成業務代碼的工具!

9418f320-b04f-11ed-bfe3-dac502259ad0.jpg

自動生成業務代碼

我把它放在了我的工具站上,大家可以訪問這個域名直接使用https://utilsbox.cn/?app=bizcode

使用演示

下面給大家演示一下

假設我們現在創建一個商品

首先填寫表名和表的中文名稱

然后我們添加商品表對應的字段,這些操作和我們日常使用的數據庫工具差不多

把字段填寫好了之后,點擊“一鍵生成代碼”

942cbaea-b04f-11ed-bfe3-dac502259ad0.jpg

完成表信息編輯

高潮的地方來了

DB層、業務層、甚至是controller層的代碼,工具都幫我們自動生成了!

來看下代碼,建表sql、增刪改查sql、表對應的實體類、DB層的接口類、業務層的實體類、業務層的接口類、業務接口的實現類、業務層實體類和db層實體類的轉換器,最后是controller層,這些代碼全都幫我們生成好了。

943eb524-b04f-11ed-bfe3-dac502259ad0.gif

代碼全都幫我們生成好了

這是什么概念呢

現在我們只需要把這些代碼拷貝到項目里,簡單設置一下類的引用,增刪改查這些基本功能,就已經可以直接給前端去調用了。

CRUD

很多同學可能會問,如果是現有的數據表,再來這里添加一次感覺太麻煩了

這個問題我也遇到了,所以我做了一個識別建表SQL的功能,常見的數據庫工具對于已經創建好的表,都提供建表語句的復制功能,只需要把建表SQL粘貼到這個文本框里。

點擊“識別”按鈕,這個SQL的信息會自動識別過來,這時候只需要把表的中文名稱填寫上去,點擊“一鍵生成代碼”,就可以馬上得到這個表的業務代碼。

94ecd6c2-b04f-11ed-bfe3-dac502259ad0.jpg

業務代碼生成器

通用性的思考

不知道大家覺得怎么樣哈,如果只是我自己用,我覺著已經非常好了,但既然是開放出來給大家用,通用性肯定還是不夠的。

因為現在看到的這一套自動生成的代碼,可能只是適合我,但不同的人、不同的公司,它們項目結構的分層、代碼的細節,都是不一樣的

所以,我還開發了代碼模版配置的功能

點擊“代碼模版配置”按鈕,在這個彈窗里,我們可以新增、刪除代碼的分類。同樣的,也可以新增、刪除和編輯具體的代碼模版。

95017136-b04f-11ed-bfe3-dac502259ad0.jpg

代碼模版

代碼生成的原理

在說代碼模版具體怎么配置之前,先給大家講一下代碼自動生成的原理

它由代碼模版和動態參數組成,核心就是匹配 - 替換

首先,工具提供了很多動態參數,這些動態參數,對應的是我們填寫的表名、字段名等等這些信息的原始值,或者處理過后的值。

然后,代碼模版由用戶自行定義,在代碼的關鍵位置,插入動態參數,即可形成一份代碼模版。

最后,工具通過匹配和替換動態參數,最終生成了代碼。

理論上,不論什么語言,你都可以配置專屬于你自己的代碼模版。

舉個簡單的栗子:

我們配置了一份這樣的代碼模版,如下:

/**
*$table_desc$Model模型
*Createdby創建人on$current_time$.
*/
publicclass$table_name_hump_A$ModelextendsToString{
}

可以看到,模版里分別使用了$table_desc$(表中文名)、$current_time$(當前時間)、$table_name_hump_A$(表名轉首字母大寫駝峰) 這三個動態參數。

當我們設置 表名 = goods_order、表中文名 = 商品訂單 時,代碼生成的結果如下所示:

/**
*商品訂單Model模型
*Createdby創建人on2023-02-051732.
*/
publicclassGoodsOrderModelextendsToString{
}

動態參數部分,全部替換成了我們輸入的表信息。

最后希望這個項目對大家有用,之后我會開發更多有意思的項目。

由于這個項目都是晚上加班肝出來的,可能會存在一些BUG,發現了我會盡快修復的,也請大家多多包涵。

代碼模版參考

以下是當前工具里默認的代碼模版,你可以通過參考這些模版,舉一反三,配置出專屬于你自己的代碼模版。

工具提供了模版的導入和導出功能,如果你創建好了一份非常滿意的模版,可以導出,然后發給你的同事直接使用,這樣它就不用重復創建了,你也可以忽悠你的同事來創建,然后分享給你。

建表SQL模版

CREATETABLE`$table_name$`(
$create_table_field_list$
PRIMARYKEY(`$primary_key$`)
)ENGINE=$db_engine$DEFAULTCHARSET=$db_encoded$;

實體類模版

主體

/**
*$table_desc$DTO模型
*Createdby創建人on$current_time$.
*/
publicclass$table_name_hump_A$DO{
$member_param_list$
$get_set_method_list$
}

成員代碼塊 成員變量列表(member_param_list)

/**$field_comment$*/
private$field_type_java$$field_name_hump$;

成員代碼塊 GetSet方法列表(get_set_method_list)

public$field_type_java$get$field_name_hump_A$(){
return$field_name_hump$;
}

publicvoidset$field_name_hump_A$($field_type_java$$field_name_hump$){
this.$field_name_hump$=$field_name_hump$;
}

接口類模版(DB層)

importorg.apache.ibatis.annotations.Mapper;
importorg.apache.ibatis.annotations.Param;

importjava.util.List;
importjava.util.Map;

/**
*$table_desc$DB接口
*Createdby創建人on$current_time$
*/
@Mapper
publicinterface$table_name_hump_A$DAO{

/**
*添加
*@paramdata
*return影響行數
*/
intinsert($table_name_hump_A$DOdata);

/**
*修改
*@paramdata
*return影響行數
*/
intupdate($table_name_hump_A$DOdata);

/**
*分頁查詢
*@paramparam
*return結果列表
*/
List<$table_name_hump_A$DO>pageQuery(Mapparam);

/**
*查詢count
*@paramparam
*returncount條數
*/
LongpageQueryCount(Mapparam);

/**
*根據ID查詢
*@paramid
*return結果DO對象
*/
$table_name_hump_A$DOqueryById(@Param("$primary_key_hump$")$primary_key_type_java$$primary_key_hump$);

/**
*根據ID查詢(帶鎖)
*@paramid
*return結果DO對象
*/
$table_name_hump_A$DOqueryByIdLock(@Param("$primary_key_hump$")$primary_key_type_java$$primary_key_hump$);
}

CRUD SQL模版


 




INSERTINTO$table_name$($insert_field_name_list$)
VALUES($insert_field_value_list$);



UPDATE$table_name$SET
$update_field_list$
WHERE$primary_key$=#{$primary_key_hump$};



SELECT$select_field_list$FROM$table_name$
WHERE1=1
$while_field_list$

ORDERBY$primary_key$DESC


LIMIT#{offset},#{rows}




SELECTCOUNT(1)astotalFROM$table_name$
WHERE1=1
$while_field_list$



SELECT$select_field_list$FROM$table_name$
WHERE$primary_key$=#{$primary_key_hump$};



SELECT$select_field_list$FROM$table_name$
WHERE$primary_key$=#{$primary_key_hump$}FORUPDATE;



模型轉換器模版

不同層級間,可能會有不同的實體類,那么它們相互之間的數據轉換,也是一個重復且浪費時間的工作,所以也可以配置一個模版。

importorg.springframework.util.CollectionUtils;

importjava.util.ArrayList;
importjava.util.List;

/**
*$table_desc$模型轉換器
*Createdby創建人on$current_time$
*/
publicclass$table_name_hump_A$Converter{

/**
*dto轉do
*@paramsource
*returndo模型
*/
publicstatic$table_name_hump_A$DOtoDo($table_name_hump_A$DTOsource){
$table_name_hump_A$DOtarget=new$table_name_hump_A$DO();
$converter_source_to_target_params_list$
returntarget;
}

/**
*do轉dto
*@paramsource
*returndto模型
*/
publicstatic$table_name_hump_A$DTOtoDto($table_name_hump_A$DOsource){
$table_name_hump_A$DTOtarget=new$table_name_hump_A$DTO();
$converter_source_to_target_params_list$
returntarget;
}

/**
*dolist轉dto
*@paramdata
*returnlistdto模型
*/
publicstaticList<$table_name_hump_A$DTO>toDtoList(List<$table_name_hump_A$DO>data){
if(CollectionUtils.isEmpty(data)){
returnnull;
}
List<$table_name_hump_A$DTO>list=newArrayList<>();
for($table_name_hump_A$DOitem:data){
list.add($table_name_hump_A$Converter.toDto(item));
}
returnlist;
}
}

成員代碼塊 模型轉換器參數列表(converter_source_to_target_params_list)

target.set$field_name_hump_A$(source.get$field_name_hump_A$());

業務接口實現類模版

importcom.alibaba.fastjson.JSONObject;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importorg.springframework.stereotype.Service;

/**
*$table_desc$業務實現
*Createdby創建人on$current_time$
*/
@Service
publicclass$table_name_hump_A$ServiceImplimplements$table_name_hump_A$Service{

privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger($table_name_hump_A$ServiceImpl.class);

@Resource
private$table_name_hump_A$DAO$table_name_hump$DAO;

@Override
publicCommonResultcreate(JSONObjectrequest){

//入參轉成對應類型
CommonAssert.isNoEmptyObj(request,"請求參數不可空");
$table_name_hump_A$DTOdto=JSON.toJavaObject(request,$table_name_hump_A$DTO.class);

//參數校驗
$biz_check_required_params$

//轉成do模型
$table_name_hump_A$DOdataDo=$table_name_hump_A$Converter.toDo(dto);

//落庫
intcount=$table_name_hump$DAO.insert(dataDo);
CommonAssert.isTrue(count>0,"創建失敗,請重試");

//返回創建成功的ID數據
returnnewCommonResult(dataDo.get$primary_key_hump_A$());
}

@Override
publicCommonResultmodify(JSONObjectrequest){

//入參轉成對應類型
CommonAssert.isNoEmptyObj(request,"請求參數不可空");
$table_name_hump_A$DTOdto=JSON.toJavaObject(request,$table_name_hump_A$DTO.class);

//參數校驗
$biz_check_required_params$

//轉成do模型
$table_name_hump_A$DOdataDo=$table_name_hump_A$Converter.toDo(dto);

//落庫
intcount=$table_name_hump$DAO.update(dataDo);
CommonAssert.greaterThanZero(count,"修改失敗,請重試");

//返回修改成功的ID數據
returnnewCommonResult(dataDo.get$primary_key_hump_A$());
}

@Override
publicCommonResultpageQuery(JSONObjectrequest){

//入參基本校驗
CommonAssert.isNoEmptyObj(request,"請求參數不可空");

//分頁信息校驗
PaginationDOpagination=PaginationDO.setRequestOffsetAndRows(request);
CommonAssert.isNoEmptyObj(pagination,"分頁參數$pageIndex、$pageSize不可空");
CommonAssert.isTrue(pagination.getPageSize()<=?100,?"單次查詢條數不可超過100條");

????????//?取分頁列表數據
????????List<$table_name_hump_A$DO>dbResult=$table_name_hump$DAO.pageQuery(request);

//取count數據
longcount=$table_name_hump$DAO.pageQueryCount(request);

//空返回
if(CollectionUtils.isEmpty(dbResult)){
returnnewCommonResult(newPaginationResult(null,request,count));
}

//模型轉換
List<$table_name_hump_A$DTO>list=$table_name_hump_A$Converter.toDtoList(dbResult);

//返回分頁結果
returnnewCommonResult(newPaginationResult(list,request,count));
}

@Override
publicCommonResultqueryById(JSONObjectrequest){

//取入參
CommonAssert.isNoEmptyObj(request,"請求參數不可空");

//根據ID獲取數據
$primary_key_type_java$$primary_key_hump$=request.get$primary_key_type_java$("$primary_key_hump$");
CommonAssert.isNoEmptyObj($primary_key_hump$,"參數錯誤,無法執行查詢");
$table_name_hump_A$DOdbResult=$table_name_hump$DAO.queryById($primary_key_hump$);

//未查詢到結果,返回
if(null==dbResult){
returnnewCommonResult();
}

//模型轉換
$table_name_hump_A$DTOresult=$table_name_hump_A$Converter.toDto(dbResult);

//返回結果對象
returnnewCommonResult(result);
}
}

成員代碼塊 必填項業務校驗(biz_check_required_params)

CommonAssert.$java_type_adapter_assert_method$(dto.get$field_name_hump_A$(),"$field_comment$不可空");

Controller模版

importcom.alibaba.fastjson.JSONObject;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importorg.springframework.web.bind.annotation.*;

importjavax.annotation.Resource;

/**
*$table_desc$HTTP請求控制器
*Createdby創建人on$current_time$.
*/
@CrossOrigin
@RestController
@RequestMapping(value="/$table_name_hump$/")
publicclass$table_name_hump_A$Controller{

privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger($table_name_hump_A$Controller.class);

@Resource
private$table_name_hump_A$Service$table_name_hump$Service;

/**
*創建
*@paramrequest
*@return
*/
@RequestMapping(value="create.json",method={RequestMethod.GET,RequestMethod.POST})
@ResponseBody
publicObjectcreate(@RequestBodyJSONObjectrequest){
returnCommonTemplate.run(LOGGER,newCommonTemplate(){
@Override
protectedObjectbusiness(){
return$table_name_hump$Service.create(request);
}
},request);
}

/**
*修改
*@paramrequest
*@return
*/
@RequestMapping(value="modify.json",method={RequestMethod.GET,RequestMethod.POST})
@ResponseBody
publicObjectmodify(@RequestBodyJSONObjectrequest){
returnCommonTemplate.run(LOGGER,newCommonTemplate(){
@Override
protectedObjectbusiness(){
return$table_name_hump$Service.modify(request);
}
},request);
}

/**
*分頁查詢
*@paramrequest
*@return
*/
@RequestMapping(value="pageQuery.json",method={RequestMethod.GET,RequestMethod.POST})
@ResponseBody
publicObjectpageQuery(@RequestBodyJSONObjectrequest){
returnCommonTemplate.run(LOGGER,newCommonTemplate(){
@Override
protectedObjectbusiness(){
return$table_name_hump$Service.pageQuery(request);
}
},request);
}

/**
*通過主鍵查詢
*@paramrequest
*@return
*/
@RequestMapping(value="queryById.json",method={RequestMethod.GET,RequestMethod.POST})
@ResponseBody
publicObjectqueryById(@RequestBodyJSONObjectrequest){
returnCommonTemplate.run(LOGGER,newCommonTemplate(){
@Override
protectedObjectbusiness(){
return$table_name_hump$Service.queryById(request);
}
},request);
}
}

動態參數

原始表名 $table_name$

?

用戶輸入的表名,不做任何處理。

?

表名駝峰首字母小寫 $table_name_hump$

?

用戶輸入的表名,經過駝峰處理。例如輸入:goods_order ,輸出:goodsOrder

?

表名駝峰首字母大寫 $table_name_hump_A$

?

用戶輸入的表名,經過駝峰處理。例如輸入:goods_order ,輸出:GoodsOrder

?

原始字段名 $field_name$

?

用戶輸入的表字段名,不做任何處理。

?

字段名駝峰首字母小寫 $field_name_hump$

?

用戶輸入的表字段名,經過駝峰處理。例如輸入:order_number ,輸出:orderNumber

?

字段名駝峰首字母大寫 $field_name_hump_A$

?

用戶輸入的表字段名,經過駝峰處理。例如輸入:order_number ,輸出:OrderNumber

?

字段說明 $field_comment$

?

用戶輸入的表字段說明,不做任何處理。

?

字段數據類型(對應DB)$field_type_db$

?

用戶選擇的表字段類型,不做任何處理。

?

字段數據類型(對應Java)$field_type_java$

?

用戶選擇的表字段類型,會自動匹配對應的Java類型。例如輸入:VARCHAR(),輸出:String

?

主鍵字段名 $primary_key$

?

用戶選擇的主鍵字段,不做任何處理。例如用戶定義的主鍵是id,那么輸出就是:id

?

主鍵字段名駝峰首字母小寫 $primary_key_hump$

?

用戶選擇的主鍵字段,經過駝峰處理。例如輸入:order_number ,輸出:orderNumber

?

主鍵字段名駝峰首字母大寫 $primary_key_hump_A$

?

用戶選擇的主鍵字段,經過駝峰處理。例如輸入:order_number ,輸出:OrderNumber

?

主鍵字段數據類型(對應Java)$primary_key_type_java$

?

用戶選擇的主鍵字段類型,會自動匹配對應的Java類型。例如輸入:VARCHAR(),輸出:String

?

插入數據sql,字段名列表 $insert_field_name_list$

?

例如表中有三個字段:id(主鍵)、goods_name、price,輸出:goods_name,price 。會自動排除主鍵 不僅插入數據時可用,任何需要排除ID,然后使用英文逗號拼接表所有字段信息的地方,都可以使用它

?

插入數據sql,字段值列表 $insert_field_value_list$

?

例如表中有三個字段:id(主鍵)、goods_name、price,輸出:#{goodsName},#{price} 。會自動排除主鍵 不僅插入數據時可用,任何需要排除ID,然后使用英文逗號拼接表所有字段信息的地方,都可以使用它

?

修改數據sql,字段名列表 $update_field_list$

?

例如表中有三個字段:id(主鍵)、goods_name、price 輸出(會自動換行,會攜帶以下縮進,會自動排除主鍵):

?

goods_name=#{goodsName},
price=#{price}

查詢數據sql,字段名列表 $select_field_list$

?

例如表中有三個字段:id(主鍵)、goods_name、price,輸出:id,goods_name,price 。帶主鍵

?

whele字段條件sql,字段名列表 $whele_field_list$

?

例如表中有三個字段:id(主鍵)、goods_name、price, 輸出(會自動換行,會攜帶以下縮進):

?


ANDid=#{id}


ANDgoods_name=#{goodsName}


ANDprice=#{price}

創建表-表字段列表 $create_table_field_list$

?

例如表中有三個字段:id(自增主鍵)、goods_name、price 輸出(會自動換行,會攜帶以下縮進):

?

`id`INT(11)NOTNULLAUTO_INCREMENT,
`goods_name`VARCHAR(128)NOTNULLDEFAULT'NULL',
`price`DECIMAL(10,2)NOTNULLDEFAULT'NULL'

當前時間 $current_time$

?

自動獲取當前時間,格式:yyyy-MM-DD hhss,示例值:2023-02-05 1718

?

自動根據數據類型,匹配斷言方法 $java_type_adapter_assert_method$

?

對于Java數據類型等于String的字段,使用isNoBlankStr方法,其他的類型都使用isNoEmptyObj方法 這是一個定制化很高的動態參數,可忽略它。

?

動態代碼塊

動態代碼塊由用戶自行定義,代碼塊中也可以設置動態參數,目前僅提供4種明確的動態代碼塊

成員變量列表 $member_param_list$

例如表中有三個字段:id(主鍵)、goods_name、price

假設用戶定義了如下代碼塊內容:

/**$field_comment$*/
private$field_type_java$$field_name_hump$;

輸出(會自動根據字段數量,累加輸出自定義代碼塊內容):

/**id*/
privateIntegerid;
/**商品名稱*/
privateStringgoodsName;
/**商品價格*/
privateStringprice;

GetSet方法列表 $get_set_method_list$

例如表中有三個字段:id(主鍵)、goods_name、price

假設用戶定義了如下代碼塊內容:

public$field_type_java$get$field_name_hump_A$(){
return$field_name_hump$;
}

publicvoidset$field_name_hump_A$($field_type_java$$field_name_hump$){
this.$field_name_hump$=$field_name_hump$;
}

輸出(會自動根據字段數量,累加輸出自定義代碼塊內容):

publicIntegergetId(){
returnid;
}

publicvoidsetId(Integerid){
this.id=id;
}

publicStringgetGoodsName(){
returngoodsName;
}

publicvoidsetGoodsName(StringgoodsName){
this.goodsName=goodsName;
}

publicStringgetPrice(){
returnprice;
}

publicvoidsetPrice(Stringprice){
this.price=price;
}

模型轉換器參數列表 $converter_source_to_target_params_list$

例如表中有三個字段:id(主鍵)、goods_name、price

假設用戶定義了如下代碼塊內容:

target.set$field_name_hump_A$(source.get$field_name_hump_A$());

輸出(會自動根據字段數量,累加輸出自定義代碼塊內容):

target.setId(source.getId());
target.setGoodsName(source.getGoodsName());
target.setPrice(source.getPrice());

必填項業務校驗 $biz_check_required_params$

例如表中有三個字段:id(主鍵)、goods_name、price

假設用戶定義了如下代碼塊內容:

CommonAssert.$java_type_adapter_assert_method$(dto.get$field_name_hump_A$(),"$field_comment$不可空");

輸出(會自動根據字段數量,累加輸出自定義代碼塊內容):

CommonAssert.isNoBlankStr(dto.getGoodsName(),"goodsName不可空");
CommonAssert.isNoBlankStr(dto.getPrice(),"price不可空");






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 轉換器
    +關注

    關注

    27

    文章

    8742

    瀏覽量

    147863
  • SQL
    SQL
    +關注

    關注

    1

    文章

    773

    瀏覽量

    44231
  • 代碼生成器
    +關注

    關注

    0

    文章

    25

    瀏覽量

    9159

原文標題:非低代碼,我寫了一個比ChatGPT還牛的CRUD代碼生成器

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    介紹下ABOV提供的代碼生成器

    的開發,下面介紹下ABOV提供的代碼生成器,絲毫不輸CUBEMX,且ABOV單片機基本都支持keil開發環境。。2. ABOV的代碼生成器
    發表于 11-19 08:06

    python生成器

    了,但是函數并沒有結束請看如下代碼,我定義了 generator_factory 函數,當我執行 gen = generator_factory() 時,gen 就是
    發表于 02-24 15:56

    利用LabVIEW代碼生成器簡化應用項目

    利用LabVIEW代碼生成器簡化應用項目
    發表于 02-26 14:01 ?24次下載
    利用LabVIEW<b class='flag-5'>代碼</b><b class='flag-5'>生成器</b>簡化應用項目

    代碼生成器的應用

    jeesite框架代碼生成器,可以很方便的生成代碼,挺不錯的。
    發表于 01-14 15:19 ?0次下載

    數碼管代碼生成器

    數碼管代碼生成器,迅速生成數碼管的相應代碼
    發表于 04-25 10:54 ?41次下載

    STM32庫函數代碼自動生成器V1.2

    stm32庫函數代碼自動生成器是STM32學習的小工具。 stm32庫函數代碼自動生成器可以根據你的配置生成相應的庫函數
    發表于 06-17 17:55 ?0次下載

    STM32庫函數代碼自動生成器正式版

    STM32庫函數代碼自動生成器正式版,感興趣的可以看看。
    發表于 07-13 16:55 ?0次下載

    STM32庫函數代碼自動生成器正式版

    STM32庫函數代碼自動生成器正式版 STM32庫函數代碼自動生成器正式版
    發表于 07-25 18:52 ?0次下載

    進位保留加法陣列的HDL代碼生成器

    進位保留加法陣列的HDL代碼生成器,感興趣的小伙伴們可以看看。
    發表于 08-08 18:20 ?10次下載

    python生成器是什么

    python生成器 1. 什么是生成器生成器(英文名 Generator ),是可以像迭代器那樣使用for循環來獲取元素的函數。
    的頭像 發表于 02-24 15:53 ?3708次閱讀

    如何擴展自定義功能塊,以及代碼生成器的用法

    被動代碼生成器 目標代碼生成之后,需要進行修改和完善,然后獨立發展和維護,與代碼生成器再與關系。
    的頭像 發表于 11-02 13:26 ?1179次閱讀

    將使用代碼生成器生成的項目移植到與智能配置器起使用的項目

    將使用代碼生成器生成的項目移植到與智能配置器起使用的項目
    發表于 01-11 19:00 ?0次下載
    將使用<b class='flag-5'>代碼</b><b class='flag-5'>生成器</b><b class='flag-5'>生成</b>的項目移植到與智能配置器<b class='flag-5'>一</b>起使用的項目

    個性化地定制自己的uvm代碼生成器模板和腳本

    使用uvm代碼生成器創建基本的uvm驗證環境框架,然后丟棄代碼生成器模板并擴展和維護生成出來的代碼
    的頭像 發表于 05-14 16:51 ?2162次閱讀
    個性化地定制自己的uvm<b class='flag-5'>代碼</b><b class='flag-5'>生成器</b>模板和腳本

    將使用代碼生成器生成的項目移植到與智能配置器起使用的項目

    將使用代碼生成器生成的項目移植到與智能配置器起使用的項目
    發表于 06-30 20:54 ?0次下載
    將使用<b class='flag-5'>代碼</b><b class='flag-5'>生成器</b><b class='flag-5'>生成</b>的項目移植到與智能配置器<b class='flag-5'>一</b>起使用的項目

    RL78的代碼生成器發布說明

    電子發燒友網站提供《RL78的代碼生成器發布說明.pdf》資料免費下載
    發表于 01-30 09:48 ?0次下載
    RL78的<b class='flag-5'>代碼</b><b class='flag-5'>生成器</b>發布說明
    主站蜘蛛池模板: 国产一区二区三区四区五在线观看 | 嫩草欧美曰韩国产大片 | 国产成人在线免费观看 | 亚洲a视频在线观看 | 日本一本二本三区免费免费高清 | 亚洲无人区码二码三码区别图 | 麻豆AV无码蜜臀AV色哟 | 顶级少妇AAAAABBBBB片 | 亚洲精品久久无码AV片银杏 | jizzjizz丝袜 | a国产成人免费视频 | 国产亚洲精品免费视频 | 手机伊在人线香蕉2 | 成年人免费观看的视频 | 999av视频 | 秘密教学93话恩爱久等了免费 | 无码一卡二卡三卡四卡 | 国产99在线视频 | 老司机福利视频一区在线播放 | 在线观看成人免费视频 | 日日射日日操 | 久久久无码精品亚洲A片猫咪 | 石原莉奈rbd806中文字幕 | 九九热在线视频观看这里只有精品 | 精品一卡2卡三卡4卡乱码精品视频 | 亚洲精品成人a | 97蜜桃网123| 国产三级视频在线 | 俄罗斯人xxx | 无码中文字幕热热久久 | 成人在线视频免费看 | 自拍黄色片 | 国产成人精品免费视频下载 | 艳妇臀荡乳欲伦岳TXT下载 | 一起洗澡的老师免费播放 | 国产人妻人伦精品1国产 | 浪荡受自我调教纯肉BL | 免费看片A级毛片免费看 | 红尘影院手机在线观看 | A级毛片无码久久精品免费 a级毛片黄免费a级毛片 | 欧美熟妇互舔20p |