iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >IDEA必备开发神器之EasyCode
  • 828
分享到

IDEA必备开发神器之EasyCode

2024-04-02 19:04:59 828人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

1、打开IntelliJ IDEA 新建一个maven工程 2、选择工程存放目录 3、下载安装EasyCode插件 file->settings->plugins 搜

1、打开IntelliJ IDEA 新建一个maven工程

2、选择工程存放目录

3、下载安装EasyCode插件

file->settings->plugins 搜索Easy Code

搜索到后点击Install 我这里安装过了 安装完成会让你重启idea

如何判断是否安装成功 file->settings->Other settings 看是否有Easy Code这个选项

4、引入Easy Code模板 (可以根据个人情况定制 也可以使用默认的)

5、创建数据库,数据表

6、配置数据源(需要指定数据库名称,要生成数据表)

点击IDEA右侧的Datbase->点击上方的加号->选择Data Source.->Mysql

7、配置数据源

注意:连接方式需要采用mysql8的连接方式,不然可能连接失败jdbc:mysql://localhost:3306/table?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=false

8、连接成功如图所示

9、引入springboot的相关pom.xml依赖


<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-WEB</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
         <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
    </dependencies>

需要用到mybatis的启动器,所以也一起引用

10、打开Easy Code插件 选要生成的entity,controller,service,serviceimpl,dao

右击表名->Easy Code->Generate Code

Module:当前项目模块

package:生成代码存放包的位置

Template:生成的模板

11、勾选All表示生成所有,勾选禁止提示,防止弹出很多个提示信息,点击OK

12、生成模板

entity.java代码:


##引入宏定义
$!define
$!init
##使用宏定义设置回调(保存位置与文件后缀)
#save("/entity", ".java")
##使用宏定义设置包后缀
#setPackageSuffix("entity")
##使用全局变量实现默认包导入
$!autoImport
import java.io.Serializable;
import lombok.Data;
##使用宏定义实现类注释信息
#tableComment("实体类")
@Data
public class $!{tableInfo.name} implements Serializable {
    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
    #if(${column.comment})#end
 
    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end
}

controller接口:controller.java代码如下:


##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Controller"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/controller"))
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end
 
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}controller;
 
import lombok.extern.slf4j.Slf4j;
import com.GitHub.pagehelper.PageInfo;
import $!{tableInfo.savePackageName}.response.PageResult;
import $!{tableInfo.savePackageName}.response.Result;
import $!{tableInfo.savePackageName}.response.StatusCode;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.web.bind.annotation.*;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
 

@RestController
@Slf4j
@RequestMapping("/$!tool.firstLowerCase($tableInfo.name)")
public class $!{tableName} {
    
    @Resource
    private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)ServiceImpl;
 
    
    @GetMapping(value = "/get/{$!pk.name}")
    public Result selectOne(@PathVariable("$!pk.name") $!pk.shortType $!pk.name) {
        $tableInfo.name result = $!{tool.firstLowerCase($tableInfo.name)}ServiceImpl.selectById(id);
        if(Objects.nonNull(result)){
            return new Result<>(true,StatusCode.OK,"查询成功",result);
        }
        return new Result<>(true,StatusCode.ERROR,"查询失败");
    }
    
    
    @PostMapping(value = "/insert")
    public Result insert(@RequestBody $tableInfo.name $!tool.firstLowerCase($tableInfo.name)) {
        int result = $!{tool.firstLowerCase($tableInfo.name)}ServiceImpl.insert($!tool.firstLowerCase($tableInfo.name));
        if (result > 0) {
          return new Result<>(true,StatusCode.OK,"新增成功",result);
        }
        return new Result<>(true,StatusCode.ERROR,"新增失败"); 
    }
 
    
    @PutMapping(value = "/update")
    public Result update(@RequestBody $tableInfo.name $!tool.firstLowerCase($tableInfo.name)) {
        $tableInfo.name result = $!{tool.firstLowerCase($tableInfo.name)}ServiceImpl.update($!tool.firstLowerCase($tableInfo.name));
        if (Objects.nonNull(result)) {
          return new Result<>(true,StatusCode.OK,"修改成功",result);
        }
        return new Result<>(true,StatusCode.ERROR,"修改失败");
    }
 
    
    @DeleteMapping(value = "/delete/{$!pk.name}")
    public Result delete(@PathVariable("$!pk.name") $!pk.shortType $!pk.name) {
        int result = $!{tool.firstLowerCase($tableInfo.name)}ServiceImpl.deleteById($!pk.name);
        if (result > 0) {
          return new Result<>(true,StatusCode.OK,"删除成功",result);
        }
        return new Result<>(true,StatusCode.ERROR,"删除失败");
    }
 
    
    @GetMapping(value = "/selectAll")
    public Result<List<$tableInfo.name>> selectAll() {
        List<$tableInfo.name> $!tool.firstLowerCase($tableInfo.name)s = $!{tool.firstLowerCase($tableInfo.name)}ServiceImpl.selectAll();
        if (CollectionUtils.isEmpty($!tool.firstLowerCase($tableInfo.name)s)) {
            return new Result<>(true,StatusCode.ERROR,"查询全部数据失败");       
        }
        return new Result<>(true,StatusCode.OK,"查询全部数据成功",$!tool.firstLowerCase($tableInfo.name)s);
        
    }
 
    
    @GetMapping(value = "/selectPage/{current}/{size}")
    public Result selectPage(@PathVariable("current") Integer current,@PathVariable("size") Integer size) {
        PageInfo<$tableInfo.name> page = $!{tool.firstLowerCase($tableInfo.name)}ServiceImpl.selectPage(current, size);
        if (Objects.nonNull(page)) {
            return new Result<>(true,StatusCode.OK,"分页条件查询成功",new PageResult<>(page.getTotal(),page.getList()));
        }
        return new Result<>(true,StatusCode.ERROR,"分页查询数据失败");
    }
    
}

service接口:service.java 代码如下:


##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Service"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service"))
 
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end
 
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;
 
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import java.util.List;
import com.github.pagehelper.PageInfo;
 

public interface $!{tableName} {
 
    
    $!{tableInfo.name} selectById($!pk.shortType $!pk.name);
 
    
    PageInfo<$!{tableInfo.name}> selectPage(int current, int size);
 
    
    List<$!{tableInfo.name}> selectAll();
    
    
    List<$!{tableInfo.name}> selectList($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
 
    
    int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
    
    
    int batchInsert(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s);
    
    
    $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
 
    
    int deleteById($!pk.shortType $!pk.name);
    
    
    int count();
}

serviceImpl 实现类:serviceImpl .java代码如下:


##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "ServiceImpl"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service/impl"))
 
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end
 
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;
 
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
 
import javax.annotation.Resource;
import java.util.List;
 
 

@Service("$!tool.firstLowerCase($!{tableInfo.name})ServiceImpl")
public class $!{tableName} implements $!{tableInfo.name}Service {
    @Resource
    private $!{tableInfo.name}Dao $!tool.firstLowerCase($!{tableInfo.name})Dao;
 
    
    @Override
    public $!{tableInfo.name} selectById($!pk.shortType $!pk.name) {
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectById($!pk.name);
    }
 
    
    @Override
    public PageInfo<$!{tableInfo.name}> selectPage(int current, int size) {
        PageHelper.startPage(current,size);
        List<$!{tableInfo.name}> dataList = $!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectAll();
        return new PageInfo<>(dataList);
    }
 
    
     @Override
     public List<$!{tableInfo.name}> selectAll() {
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectAll();
     }
     
    
    @Override
    public List<$!{tableInfo.name}> selectList($!{tableInfo.name} $!{tool.firstLowerCase($!{tableInfo.name})}) {
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.selectList($!{tool.firstLowerCase($!{tableInfo.name})});
    }
    
    
    @Override
    @Transactional
    public int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.insert($!tool.firstLowerCase($!{tableInfo.name}));
    }
 
    
    @Override
    @Transactional
    public int batchInsert(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s) {
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.batchInsert($!tool.firstLowerCase($!{tableInfo.name})s);
    }
 
    
    @Override
    @Transactional
    public $!{tableInfo.name} update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.update($!tool.firstLowerCase($!{tableInfo.name}));
        return this.selectById($!{tool.firstLowerCase($!{tableInfo.name})}.get$!tool.firstUpperCase($pk.name)());
    }
 
    
    @Override
    @Transactional
    public int deleteById($!pk.shortType $!pk.name) {
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.deleteById($!pk.name);
    }
    
    
     @Override
     public int count(){
        return this.$!{tool.firstLowerCase($!{tableInfo.name})}Dao.count();
     }
}

dao层:dao.java代码如下


##定义初始变量
#set($tableName = $tool.append($tableInfo.name, "Dao"))
##设置回调
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/dao"))
 
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end
 
#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dao;
 
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
 

 @Mapper
public interface $!{tableName} {
 
    
    $!{tableInfo.name} selectById($!pk.shortType $!pk.name);
    
    
    List<$!{tableInfo.name}> selectAll();
    
    
    List<$!{tableInfo.name}> selectList($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
 
    
    int insert($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
    
    
    int batchInsert(List<$!{tableInfo.name}> $!tool.firstLowerCase($!{tableInfo.name})s);
    
    
    int update($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));
 
    
    int deleteById($!pk.shortType $!pk.name);
 
    
    int count();
}

mapper.xml代码如下:


##引入mybatis支持
$!mybatisSupport
 
##设置保存名称与保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Dao.xml"))
$!callback.setSavePath($tool.append($modulePath, "/src/main/resources/mapper"))
 
##拿到主键
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "Http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="$!{tableInfo.savePackageName}.dao.$!{tableInfo.name}Dao">
    <!-- 结果集 -->
    <resultMap type="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" id="$!{tableInfo.name}Map">
#foreach($column in $tableInfo.fullColumn)
        <result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/>
#end
    </resultMap>
    
    <!-- 基本字段 -->
    <sql id="Base_Column_List">
        #allSqlColumn()
    </sql>
    
    <!-- 查询单个 -->
    <select id="selectById" resultMap="$!{tableInfo.name}Map">
        select
          <include refid="Base_Column_List" />
        from $!tableInfo.obj.name
        where $!pk.obj.name = #{$!pk.name}
    </select>
 
    <!-- 查询全部 -->
    <select id="selectAll" resultMap="$!{tableInfo.name}Map">
        select
        <include refid="Base_Column_List" />
        from $!tableInfo.obj.name
    </select>
 
    <!--通过实体作为筛选条件查询-->
    <select id="selectList" resultMap="$!{tableInfo.name}Map">
        select
        <include refid="Base_Column_List" />
        from $!tableInfo.obj.name
        <where>
        #foreach($column in $tableInfo.fullColumn)
            <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                and $!column.obj.name = #{$!column.name}
            </if>
        #end
        </where>
    </select>
 
    <!-- 新增所有列 -->
    <insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true">
        insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end)
        values ( #foreach($column in $tableInfo.fullColumn)#{$!{column.name}}#if($velocityHasNext), #end#end)
    </insert>
    
    <!-- 批量新增 -->
    <insert id="batchInsert">
        insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.fullColumn)$!column.obj.name#if($velocityHasNext), #end#end)
        values 
        <foreach collection="$!tool.firstLowerCase($!{tableInfo.name})s" item="item" index="index" separator=",">
        (
            #foreach($column in $tableInfo.fullColumn)
            #{item.$!{column.name}}#if($velocityHasNext), #end
#end
         )
         </foreach>
    </insert>
 
    <!-- 通过主键修改数据 -->
    <update id="update">
        update $!{tableInfo.obj.parent.name}.$!{tableInfo.obj.name}
        <set>
        #foreach($column in $tableInfo.otherColumn)
            <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                $!column.obj.name = #{$!column.name},
            </if>
        #end
        </set>
        where $!pk.obj.name = #{$!pk.name}
    </update>
 
    <!--通过主键删除-->
    <delete id="deleteById">
        delete from $!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name}
    </delete>
    
    <!-- 总数 resultType="int">
        select count(*) from $!{tableInfo.obj.name}
    </select>
</mapper>

测试成功!

代码就全部生成出来了!

到此这篇关于Java必备开发神器之EasyCode的文章就介绍到这了,更多相关开发神器EasyCode内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: IDEA必备开发神器之EasyCode

本文链接: https://www.lsjlt.com/news/125958.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • IDEA必备开发神器之EasyCode
    1、打开IntelliJ IDEA 新建一个maven工程 2、选择工程存放目录 3、下载安装EasyCode插件 file->settings->plugins 搜...
    99+
    2024-04-02
  • PHPStorm 入门必备:快速掌握 PHP 开发神器
    初探 PHPStorm PHPStorm 是一款专为 PHP 开发定制的综合开发环境 (IDE)。它提供了丰富的功能,包括代码编辑、调试、重构、版本控制集成和代码分析。通过直观的界面和强大的特性,PHPStorm 可以显著提高 PHP ...
    99+
    2024-03-03
    PHPStorm、PHP、IDE、代码编辑器、调试、重构
  • Serverless Framework 大揭秘:Node.js 开发人员必备的神器
    特性 无服务器应用程序的构建:可以通过 YAML 或 JavaScript 定义应用程序结构、事件处理程序和资源配置。 本地开发:支持本地模拟,以便在部署之前测试和调试应用程序。 部署管理:提供一键部署到 AWS、Azure 和 Goo...
    99+
    2024-03-02
    Serverless Framework, Node.js, 无服务器, 部署, 托管
  • Java开发必备知识之数组详解
    目录一、ASCII码二、为什么需要数组三、什么是数组四、定义数组五、使用数组六、数组的默认值七、数组的遍历八、数组在内存中的分析九、数组的扩容十、数组用在函数的参数上十一、函数可变长...
    99+
    2024-04-02
  • 强烈推荐IDEA提高开发效率的必备插件
    目录前言一、Lombok插件1.1 安装1.2使用1.2.1 常用注解@Data1.2.2 针对方法单独使用1.2.3 有参构造和无参构造二、Vuesion Theme2.1 安装2...
    99+
    2024-04-02
  • python必备库Matplotlib画图神器
    目录1.安装方法2.用好官网的例子最简单的应用-折线图添加注释的方法柱状图-Bar Label折线图之CSD前言: Matplotlib 通常与 NumPy、Pandas 一起使用,...
    99+
    2024-04-02
  • IDEA新手必备之各种快捷键详解
    目录一、快速生成main二、快速生成System.out.print三、文件保存四、删除一行五、新添,新建,添加的快捷键六、切换java程序七、目录显示与关闭八、运行九、提示方法的参...
    99+
    2024-04-02
  • JetBrainsToolbox 软件开发人员必备的工具之一
    JetBrainsToolbox 一款软件开发人员必备的工具 前言如何进行下载、安装工具内部展示、各模块功能介绍使用场景存在的意义扩展 前言 这是一个由JetBrains官方推出的一...
    99+
    2023-09-03
    ide intellij-idea android android studio
  • ASP 容器 API 文件:开发人员必备的工具之一?
    ASP(Active Server Pages)是一种动态网页技术,它使用服务器端脚本语言来生成动态网页内容。ASP 依赖于容器来执行脚本,其中容器是一种提供脚本运行环境的组件。ASP 容器 API 文件是一种开发人员必备的工具,它提供了...
    99+
    2023-08-19
    容器 api 文件
  • 揭秘Golang开发中的必备利器
    Golang开发利器大揭秘:你不容错过的工具 Go语言(Golang)作为一门快速、高效的编程语言,越来越受到开发者们的青睐。然而,要想在Golang开发中发挥出最大的效能,除了熟练掌...
    99+
    2024-02-27
    开发工具 golang 利器 go语言 golang开发
  • JavaScript 浏览器开发者工具,前端开发必备利器
    随着 Web 技术的不断发展,JavaScript 已经成为前端开发中不可或缺的一部分。为了提高开发效率并调试问题,浏览器开发者工具(以下简称 DevTools)应运而生,成为前端开发者必不可少的利器。 DevTools 的主要功能 De...
    99+
    2024-04-02
  • Polycom VVX电话 工作狂必备神器
    随着互联网的快速发展,行业市场竞争日趋激烈。老式电话由于功能单一、费用高昂,严重制约了信息的有效传递。与之相比,IP电话提供了更好的可扩展性和成本优势,正逐渐成为现代企业日常运营中不可或缺的一部分。据ReportLinker数据显示,201...
    99+
    2023-06-03
  • Python必备的debug神器pdb怎么用
    这篇文章给大家介绍Python必备的debug神器pdb怎么用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。学Python 必备的debug 神器-pdb首先,介绍一下 pdb 调试,pdb 是 python 的一个内...
    99+
    2023-06-02
  • 做民营企业SAP项目必备神器之SAP QM FMs(FunctionModules)(QualityManagement)
    http://www.tcodesearch.com/sap-fms/listmodule=qm FmDescriptionQAPP_CUST_IP_F4F4 - Help for the Inspection Point Fie...
    99+
    2023-06-05
  • PHP开发技术的必备利器——Linux+NPM
    PHP开发技术的必备利器——Linux NPM 在PHP开发领域,Linux NPM是一种非常重要的工具,它可以帮助开发者快速地管理和安装依赖包,大大提升了开发效率。本文将介绍Linux NPM的基本用法和实际应用。 一、Linux NPM...
    99+
    2023-10-11
    开发技术 linux npm
  • Spring Boot教程之提高开发效率必备工具lombok
    目录一、前置说明本节大纲二、使用lombok插件的好处三、如何安装lombok插件四、 使用lombok注解简化开发4.1 Data注解4.2 Slf4j注解4.3 Builder注...
    99+
    2024-04-02
  • Vue组件化开发的必备技能之组件递归
    目录前言效果展示渲染完整数据效果如下获取节点数据效果如下动态展开收起效果如下完整代码效果如下总结前言 不知道大家有没遇到过这样的场景:渲染列表数据的时候,列表的子项还是列表。如果层级...
    99+
    2024-04-02
  • 外贸独立站必备神器AB斗篷
    做独立站仿品的都知道,如果需要在FB、Google等平台上打广告,必须先上正品才能通过审核,而且就算通过了审核,后期平台也会不定期地去检查。所以当平台的审核爬虫来,商家必须先跳到正品网页规避审核,当买家过来时,商家就要展示仿牌网页。今天我就...
    99+
    2023-09-05
    php 开发语言
  • 一款懒人必备的Python爬虫神器
    前言今天把最近的一个应用做好了,测试了一下运行没有问题,剩下的就是检验一下结果如何.从光谱到Lab值通常使用matlab中的roo2lab(),不过经过我最近的测试发现转换的结果并不理想,而且这个转化的代码也不是我写的所以另寻他法,找到了下...
    99+
    2023-05-14
    Python 爬虫神器
  • Java并发编程必备之Future机制
    前言 Java 5在concurrency包中引入了java.util.concurrent.Callable 接口,它和Runnable接口很相似,但它可以返回一个对象或者抛出一个...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作