JS的一些小方法

/**
 * 工具类
 * @author pengliang create data 2018-06-05
 */
!function ($) {

    this.arrayUtils = {
        /**
         * @author pengliang
         * @param array
         * @returns {Array}
         * 如果参数非数组类型,直接返回一个空数组
         * 如果是数组类型返回源数组
         */
        getArray: function (array) {
            return this.isArray(array) ? array : [];
        }
        /**
         * @author pengliang
         * @param o
         * @returns {boolean}
         * 判断当前是否为数组
         */
        , isArray: function (o) {
            return Object.prototype.toString.call(o) == '[object Array]';
        }
        /**
         * @author pengliang
         * @param array 数组
         * @param symbol 符号
         * @param field 字段
         * 将当前数组以自定符号连接
         * 如果array是非数组类型直接返回一个空的字符串
         */
        , join: function (array, symbol, field) {
            symbol = symbol || "";
            if (!this.isArray(array) || array.length == 0) {
                return "";
            }
            var len = array.length;
            var resultData = [];
            for (var index = 0; index < len; index++) {
                var data = array[index];
                resultData.push((field ? data[field] : data));
            }
            return resultData.join(symbol);
        },
        /**
         * @author pengliang
         * @param array
         * @returns {boolean}
         * 是否为空数组
         */
        isEmpty: function (array) {
            return !array || array.length == 0;
        }

    }

    this.objectUtils = {
        /**
         * @author pengliang
         * @param array
         * @returns {object}
         * 获取一个不为空的对象
         */
        getObject: function (obj) {
            return obj || {};
        },
        /**
        * 克隆一个对象
        * @author pengliang
        * @param obj
        * @returns {*}
        */
        cloneObject: function (obj) {
            return $.extend(true, {}, obj);
        }
    }
    this.strUtils = {
        /**
         * @author pengliang
         * @param source 原字符
         * @param newStr 替换字符
         * @returns {*}
         * 获取一个正确的字符的字符串
         * 排除null,undefined非法字符
         */
        getStr: function (source, newStr) {
            newStr = newStr || "";
            return (!source || source == 'null' || source == 'NULL' || source == 'undefined') ? newStr : source;
        }
        /**
     * 字符是否为空
     * @author pengliang
     * @param str
     * @returns {*}
     */
        , isEmpty: function (str) {
            return !str || str == 'null' || str == 'NULL' || str == 'undefined';
        }

        /**
         * 替换所有出现字符,返回一个新的字符
         * @author pengliang
         * @param str 被替换字符
         * @param symbol 出现字符
         * @param data 替换字符
         * @returns {*}
         */
        , replaceAll: function (str, symbol, data) {
            return str.replace(/-/g, data || '');
        }
        ,
        /**
         * 去掉左空格
         */
        ltrim: function (s) {
            if (!s) return "";
            return s.replace(/(^\s*)/g, "");
        }
        /**
         * 去掉右空格
         */
        , rtrim: function (s) {
            if (!s) return "";
            return s.replace(/(\s*$)/g, "");
        }
        /**
         * 去掉左右空格
         * @param s 字符
         * @param isCleanExpression 是否清空表情符号
         */
        , trim: function (s, isCleanExpression) {
            if (!s) return "";
            if (isCleanExpression === true) {
                s = s.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, "");
            }
            return s.replace(/(^\s*)|(\s*$)/g, "");
        }
    }

    this.jsonUtils = {
        /**
         * @author pengliang
         * @param strJson
         * @returns {*}
         * 将json字符串转为对象
         */
        parseJson: function (strJson) {
            return typeof strJson === 'string' ? eval('(' + strJson + ')') : strJson;
        },
        /**
         * @author pengliang
         * @param json
         * @returns {string}
         * 将json对象转为字符
         */
        toJsonStr: function (json) {
            return typeof json === 'object' ? JSON.stringify(json) : json;
        }
    }

    this.validateUtils = {
        /**
         * 验证是否是int类型参数值
         * @author pengliang
         * @param numbStr
         * @returns {boolean}
         */
        isInt: function (numbStr) {
            return /^\d+$/.test(numbStr);
        }
    }

    this.dateUtils = {

        /**
         * 获取本月第一天
         * @param pattern 指定日期格式,否则返回日期对象
         */
        thisMonthFirstDay: function (pattern) {
            var date = new Date(), y = date.getFullYear(), m = date.getMonth();
            var firstDay = new Date(y, m, 1);
            //var lastDay = new Date(y, m + 1, 0);
            return pattern ? firstDay.format(pattern) : firstDay;
        }

        /**
         * 获取本月最后一天
         * @param pattern 指定日期格式,否则返回日期对象
         * @returns {Date}
         */
        , thisMonthLastDay: function (pattern) {
            var date = new Date(), y = date.getFullYear(), m = date.getMonth();
            var lastDay = new Date(y, m + 1, 0);
            return pattern ? lastDay.format(pattern) : lastDay;
        }
        /**
        * 日期格式化 刚刚、分钟、小时、天、月日时分
        * @param date 指定日期格式,否则返回日期对象
        * 
        * @returns {Date}
        */
        , formatTime: function (date) {
            if (!date) {
                return "";
            }
            if (typeof date === "string") {
                date = date.replace(/\-/g, "/");
            }
            const d = new Date(date);
            const dTime = d.getTime();
            const now = new Date().getTime();

            const diff = (now - dTime) / 1000;
            if (diff < 30) {
                return "刚刚";
            } else if (diff < 3600) {
                // less 1 hour
                return Math.ceil(diff / 60) + "分钟前";
            } else if (diff < 3600 * 24) {
                return Math.ceil(diff / 3600) + "小时前";
            } else if (diff < 3600 * 24 * 2) {
                return "1天前";
            }
            return (
                d.getMonth() +
                1 +
                "月" +
                d.getDate() +
                "日" +
                d.getHours() +
                "时" +
                d.getMinutes() +
                "分"
            );
        },
        /**
         * 格式化日期
         * @param time 日期
         * @param format 格式默认 yyyy-MM-dd HH:mm:ss
         */
        formatDate: function (time, format) {
            if (!time) {
                return "";
            }
            if (!format) {
                format = "yyyy-MM-dd HH:mm:ss";
            }
            if (typeof time === "string") {
                time = time.replace(/-/g, "/");
            }
            var date = new Date(time);
            var tf = function (i) {
                return (i < 10 ? "0" : "") + i;
            };
            return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function (a) {
                switch (a) {
                    case "yyyy":
                        return tf(date.getFullYear());
                        break;
                    case "MM":
                        return tf(date.getMonth() + 1);
                        break;
                    case "mm":
                        return tf(date.getMinutes());
                        break;
                    case "dd":
                        return tf(date.getDate());
                        break;
                    case "HH":
                        return tf(date.getHours());
                        break;
                    case "ss":
                        return tf(date.getSeconds());
                        break;
                }
            });
        },
        /**
         * 获取指定日期星期几
         */
        getWeekday: function (dateStr) {
            if (typeof dateStr === "string") {
                dateStr = dateStr.replace(/-/g, "/");
            }
            let date = dateStr ? new Date(dateStr) : new Date();
            return ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"][
                date.getDay()
            ];
        },
        /**
         * 获取当前日期对象,主要信息
         */
        getDateNowData: function () {
            var date = new Date();
            return {
                date: date,
                year: date.getYear(),
                fullYear: date.getFullYear(),
                month: date.getMonth() + 1,
                day: date.getDate(),
                weekday: [
                    "星期日",
                    "星期一",
                    "星期二",
                    "星期三",
                    "星期四",
                    "星期五",
                    "星期六"
                ][date.getDay()],
                time: date.getTime(),
                hours: date.getHours(),
                minutes: date.getMinutes(),
                seconds: date.getSeconds()
            };
        }
    }

    this.urlUtils = {
        /**
        * 将对象转为浏览器的url参数类型 key=value&key=value...
        * @author pengliang
        * @param obj
        * @param prefix
        * @returns {string}
        */
        toSimpleUrlParameter: function (obj, prefix) {
            var nullStr = '';
            if (!obj) {
                return nullStr;
            }
            var params = [];
            for (var key in obj) {
                var value = obj[key];
                if (value && typeof value != 'object') {
                    params.push(key + '=' + value);
                }
            }
            return params.length == 0 ? nullStr : (prefix === true ? '?' : '') + params.join("&");
        },

        /**
               * 解析浏览器参数,如果name参数为空则返回解析后的所有参数,否则name匹配后的value
               * @author pengliang
               * @param name
               * @return {null}
               */
        getQueryParameter: function (name) {
            var search = location.search.length > 0 ? location.search.substr(1) : '';
            if (!search) return null;
            var Query = {};
            var value = null;
            if (search.indexOf('&') >= 0) {
                var strArray = search.split('&');
                $.each(strArray, function (i, item) {
                    if (item.indexOf('=') >= 0) {
                        var arr = item.split('=');
                        var pName = decodeURIComponent(arr[0]);
                        var pValue = decodeURIComponent(arr[1]);
                        if (name && name == pName) {
                            value = pValue;
                            return false
                        } else {
                            Query[pName] = pValue;
                        }
                    }
                });
            } else {
                if (search.indexOf("=") >= 0) {
                    var arr = search.split('=');
                    var pName = decodeURIComponent(arr[0]);
                    var pValue = decodeURIComponent(arr[1]);
                    if (name && name == pName) {
                        value = pValue;
                    } else {
                        Query[pName] = pValue;
                    }
                }
            }
            return name ? value : Query;
        }
    }

    var mathUtils = {
        //加 console.log( 0.1 + 0.2 );  //输出 0.30000000000000004
        floatAdd: function (arg1, arg2) {
            var r1, r2, m;
            try {
                r1 = arg1.toString().split(".")[1].length;
            } catch (e) {
                r1 = 0;
            }
            try {
                r2 = arg2.toString().split(".")[1].length;
            } catch (e) {
                r2 = 0;
            }
            m = Math.pow(10, Math.max(r1, r2));
            return (arg1 * m + arg2 * m) / m;
        },

        //减 console.log( 1 - 0.8 );  //输出 0.19999999999999996
        floatSub: function (arg1, arg2) {
            var r1, r2, m, n;
            try {
                r1 = arg1.toString().split(".")[1].length;
            } catch (e) {
                r1 = 0;
            }
            try {
                r2 = arg2.toString().split(".")[1].length;
            } catch (e) {
                r2 = 0;
            }
            m = Math.pow(10, Math.max(r1, r2));
            //动态控制精度长度
            n = r1 >= r2 ? r1 : r2;
            return ((arg1 * m - arg2 * m) / m).toFixed(n);
        }

        //乘 console.log( 6 * 0.7 );  //输出 4.199999999999999
        , floatMul: function (arg1, arg2) {
            var m = 0,
                s1 = arg1.toString(),
                s2 = arg2.toString();
            try {
                m += s1.split(".")[1].length;
            } catch (e) { }
            try {
                m += s2.split(".")[1].length;
            } catch (e) { }
            return (
                (Number(s1.replace(".", "")) * Number(s2.replace(".", ""))) /
                Math.pow(10, m)
            );
        }

        //除  console.log( 1.2 / 0.2 );  //输出 5.999999999999999
        , floatDiv: function (arg1, arg2) {
            var t1 = 0,
                t2 = 0,
                r1,
                r2;
            try {
                t1 = arg1.toString().split(".")[1].length;
            } catch (e) { }
            try {
                t2 = arg2.toString().split(".")[1].length;
            } catch (e) { }

            r1 = Number(arg1.toString().replace(".", ""));

            r2 = Number(arg2.toString().replace(".", ""));
            return (r1 / r2) * Math.pow(10, t2 - t1);
        }
    }
}(jQuery);

Date.prototype.format = function (fmt) {
    var o = {
        "M+": this.getMonth() + 1,                 //月份
        "d+": this.getDate(),                    //日
        "h+": this.getHours(),                   //小时
        "m+": this.getMinutes(),                 //分
        "s+": this.getSeconds(),                 //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds()             //毫秒
    };
    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        }
    }
    return fmt;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值