首页 文章 精选 留言 我的

精选列表

搜索[AI功能],共10000篇文章
优秀的个人博客,低调大师

PHPRAP 2.0.1 发布,界面优化和新增项目动态功能

PHPRAP,是一个PHP轻量级开源API接口文档管理系统,致力于减少前后端沟通成本,提高团队协作开发效率,打造PHP版的RAP。如果您觉得PHPRAP对您有用的话,别忘了给点个赞哦^_^ ! 官方网站www.phprap.com/ 演示地址demo.phprap.com/ 帮助文档www.phprap.com/wiki/index.html 更新记录 【新增】支持项目整体导出为JSON文档 【新增】支持单个接口导出为JSON文档 【新增】项目动态,随时掌握项目的动态 【新增】添加、编辑会员时项目权限新增是否可查看项目动态权限配置 【修复】创建项目时提示updater_id不能为空的BUG 【修复】修复不同模块相同接口名提示接口已存在的BUG 【优化】分页数字导航按钮增加hidden-xs类,以便手机端访问时隐藏数字导航按钮,只显示上一页和下一页按钮 【优化】界面优化,右侧下拉菜单未登录时显示登录、注册菜单,登录时显示个人中心、修改密码菜单 【优化】项目搜索页必须登录才可以访问,我的身份文案改成我的角色 【优化】接口字段主页没有header参数时不显示header表头 【优化】项目导出的HTML页面没有header参数时不显示header表头 【优化】接口导出的HTML页面没有header参数时不显示header表头 【优化】退出项目、转让项目、删除项目后默认跳转到项目选择页面

优秀的个人博客,低调大师

七牛云存储开发图片上传功能

1、注册登录七牛云,并实名认证,对象存储控制台,新增bucket存储空间 2、nodejs服务器安装npm install qiniu --save const common = require('../../lib/common.js') const qiniu = require('qiniu') let niu = {} niu.errorHandler = common.errorHandler niu.createToken = function(req, res, next) { let result = req.body.result var accessKey = common.config.qiniuAccessKey var secretKey = common.config.qiniuSecretKey var mac = new qiniu.auth.digest.Mac(accessKey, secretKey) var options = { scope: 'images', // 创建好的bucket expires: 3600 // 过期时间 单位s } var putPolicy = new qiniu.rs.PutPolicy(options) var uploadToken=putPolicy.uploadToken(mac) result.qiniu = uploadToken return common.send(req, res, {status: 0, msg: '登录成功!', data: result}) } module.exports = niu 通过以上方法生产客户端上传图片需要用的token 3、客户端安装npm install qiniu-js --save confirm() { let formData = new FormData(this.$refs.form.$el) let file = formData.get('file') let key = file.name let putExtra = { mimeType: ['image/png', 'image/jpeg'] || null // 前端校验图片格式 } console.log(file) var observable = qiniu.upload(file, key, this.token, putExtra) var observer = { next(res) { console.log(res) }, error(err) { console.log(err) }, complete(res) { console.log(res) } } var subscription = observable.subscribe(observer) // 上传开始 console.log(subscription) // // or // var subscription = observable.subscribe(next, error, complete) // 这样传参形式也可以 // subscription.unsubscribe() // 上传取消 } observer的参数注释 next: 接收上传进度信息,res 参数是一个带有 total 字段的 object,包含loaded、total、percent三个属性,提供上传进度信息。 total.loaded: number,已上传大小,单位为字节。 total.total: number,本次上传的总量控制信息,单位为字节,注意这里的 total 跟文件大小并不一致。 total.percent: number,当前上传进度,范围:0~100。 error: 上传错误后触发,当不是 xhr 请求错误时,会把当前错误产生原因直接抛出,诸如 JSON 解析异常等;当产生 xhr 请求错误时,参数 err 为一个包含 code、message、isRequestError 三个属性的 object: err.isRequestError: 用于区分是否 xhr 请求错误;当 xhr 请求出现错误并且后端通过 HTTP 状态码返回了错误信息时,该参数为 true;否则为 undefined 。 err.reqId: string,xhr请求错误的 X-Reqid。 err.code: number,请求错误状态码,只有在 err.isRequestError 为 true 的时候才有效,可查阅码值对应说明。 err.message: string,错误信息,包含错误码,当后端返回提示信息时也会有相应的错误信息。 complete: 接收上传完成后的后端返回信息,res 参数为一个 object, 为上传成功后后端返回的信息,具体返回结构取决于后端sdk的配置,

优秀的个人博客,低调大师

VS Code 的 python 扩展发布,绘图功能更强大

Visual Studio Code 的 python扩展已发布,可以从Marketplace下载Python扩展,或直接从 Visual Studio Code 中的扩展库安装。如果已经安装了Python 扩展,还可以通过重新启动 Visual Studio Code 获得最新的更新。 在这个版本中,带来了一些特性,主要包括 Python 交互式窗口的绘图查看器、带有 pytest 的并行测试以及在终端中的运行选择的内容。 Python 交互式窗口的绘图查看器 主要的特点是对生成的图形进行更好的操作,例如缩放、平移和导出图像,例如Matplotlib 绘图,通过双击绘图或单击“展开图像”按钮来操作: 新版本的绘图查看器,可以平移、放大/缩小、浏览当前会话中的绘图,并将绘图导出为 PDF、SVG 或 PNG 格式。 带有 pytest 的并行测试 在运行测试显示的信息结果中,新版提高了可靠性,通过安装 pytest-xdist 包并将 “-n<number of CPUs>”添加到配置文件中,例如,对于 4 个 CPU,可以在项目文件夹中创建一个 pytest.ini 文件,然后添加以下内容: [pytest] addopts=-n4 运行和调试测试时,它们就并行执行 在终端中的运行选择的内容 从此版本开始,在运行“Run Selection/Line in Python Terminal”的命令时,该命令将根据其第一个非空行向终端发送所选内容。 其他修改 允许密码使用 jupyter 进行远程身份验证 在调试测试中添加对子进程调试的支持 在 Powershell 中添加对 Conda 环境激活的支持 添加 “ctrl+Enter” 作为运行当前单元格的快捷方式 数据查看器能正确地处理大型数据帧,并支持使用表达式进行筛选 Python 交互窗口中可以预览导入的文件 源码地址 官方文档 信息详情查看https://devblogs.microsoft.com/python/python-in-visual-studio-code-june-2019-release/

优秀的个人博客,低调大师

新功能:日志服务命令行工具ETL发布!

日志服务托管服务数据加工已经发布,参考: https://yq.aliyun.com/articles/704935 背景 使用日志服务,在搜索、分析时是否经常遇到以下数据格式规整的痛点? 1. 采集时ETL的痛点: 交换机、服务器、容器、Logging模块等,通过文件、标准输出、syslog、网络等途径收集时,里面是各种日志格式的混合,只能做部分提取,例如使用logtail先提取某些基础字段,例如时间、log level、IP等,但是日志主体message中很多有价值的信息因为混合了各种日志,无法在导入时提取? 单一场景下的日志,例如NGNIX,的QueryString中的字符串,或者HttpCookie、甚至HttpBody信息等,里面字段内容变化巨大,格式信息复杂度也很高,难以在提取的时候一次性使用正则表达式完成提取。 某些常规日志包含

优秀的个人博客,低调大师

【新功能邀请】Go版本云监控插件开始公测

云监控用Go语言重构了插件,且较目前的Java版本在资源消耗方面有很大节省。您可以根据如下步骤升级插件,升级后版本号为2.1.47。 新版本插件资源消耗情况 CmsGoAgent进程占用15~20M左右内存和单核1~2%的CPU。(Java版本内存消耗在70M左右) CmsGoAgent是便携的无额外依赖Agent,程序大小在15M左右,视处理器不同实际尺寸相差2~3M。(Java版本安装包70M,解压后大小200M) 本地日志最多占用40M空间,超过40M会进行清除。 每15秒发送一次监控数据,约占用内网网络带宽10KB。 每3分钟发送一次心跳数据,约占用内网网络带宽2KB左右。 ECS安装GoAgent 1.1 准备工作 确定需要安装GoAgent的ECS地域ID(RegionID)查询地域的ID 1.2 Linux下安装GoAgent 远程登录e

优秀的个人博客,低调大师

【JavaScript框架封装】数据类型检测模块功能封装

版权声明:本文为博主原创文章,未经博主允许不得转载。更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/80984381 数据类型检测封装后的最终模块代码如下: /*数据类型检验*/ xframe.extend(xframe, { // 鸭子类型(duck typing)如果它走起路来像鸭子,叫起来也是鸭子,那么它就是鸭子。 // 只关注对象的行为,不关注对象本身面向接口编型 ,而不是面向实现编程,是设计模式中最重要的思想。 // 【理解】:一个对象有效的语义,不是由集成自特定的类或实现特定的接口, 而是由当前方法和属性的集合决定的!!! isNumber: function (val) { // 如果这个数字是有限的话, 而且是数字类型 return (typeof val === 'number' && isFinite(val)) && (Object.prototype.toString.call(val) === '[object Number]'); }, /*** * 判断一个变量是不是Boolean类型 * @param val * @returns {boolean} */ isBoolean: function (val) { return (typeof val === 'boolean') && (Object.prototype.toString.call(val) === '[object Boolean]'); }, /** * 判断一个变量是不是字符串类型 * @param val * @returns {boolean} */ isString: function (val) { return (typeof val === 'string') && (Object.prototype.toString.call(val) === '[object String]'); }, /** * 判断一个变量是不是undefined * @param val * @returns {boolean} */ isUndefined: function (val) { // oid 0 is a correct and standard way to produce undefined. return (val === void 0) || (typeof val === 'undefined') && (Object.prototype.toString.call(val) === '[object Undefined]'); }, /** * 判断一个变量是不是为空 * @param val * @returns {boolean} */ isNull: function (val) { return (val === null) && (Object.prototype.toString.call(val) === '[object Null]'); }, /** * 检测 * @param obj * @returns {*} */ isNaN: function (val) { // 只要这个数字通过判断是不是和他自身相同或者使用typef的方式去检测 return val !== val; }, /** * 判断一个变量是不是一个对象类型 * @param val * @returns {boolean} */ isObject: function (val) { if (val !== null && val !== undefined) { if ((typeof val === 'object') && (Object.prototype.toString.call(val))) { return true; } } return false; }, /** * 判断一个对象是不是数组对象 * @param val * @returns {boolean|void|string} */ isArray: function (val) { // 判断上不是一个数组的先判断这个数组对象是不是为空, 因为如果val为空的话,就是val.constructor这个属性实际上是没有的,error if (val !== null || typeof val !== "undefined") { // 注意在使用constructor判断数据类型的时候比较的实际上是他的原型对象的constructor属性, 这个属性指向的实际上是这个变量的原型对象 return (val.constructor === Array) && (Object.prototype.toString.call(val)); } return false; } }); 知识要点总结: 1.判断一个对象的数据类型通常可以使用 Object.prototype.toString.call(val) 这种方式判断数据类型一般对于String,Boolean.Object,Array,NUll都是通用的一种检测方法,首先调用Object的原型对象里面的toString()方法,并使用call方法修改toString()函数中this的指向为val /* * 这是因为toString为Object的原型方法, * 而Array ,function等类型作为Object的实例,都重写了toString方法。 * 不同的对象类型调用toString方法时, * 根据原型链的知识,调用的是对应的重写之后的toString方法(function类型返回内容为函数体的字符串,Array类型返回元素组成的字符串.....), * 而不会去调用Object上原型toString方法(返回对象的具体类型), * 所以采用obj.toString()不能得到其对象类型,只能将obj转换为字符串类型;因此,在想要得到对象的具体类型时,应该调用Object上原型toString方法。 * * */ // 每一个原型都有自己的prototype都有自己的constructor和toString()方法 console.log(Object.prototype.toString.call("jerry"));//[object String] console.log(Object.prototype.toString.call(12));//[object Number] console.log(Object.prototype.toString.call(true));//[object Boolean] console.log(Object.prototype.toString.call(undefined));//[object Undefined] console.log(Object.prototype.toString.call(null));//[object Null] console.log(Object.prototype.toString.call({name: "jerry"}));//[object Object] console.log(Object.prototype.toString.call(function () { }));//[object Function] console.log(Object.prototype.toString.call([]));//[object Array] console.log(Object.prototype.toString.call(new Date));//[object Date] console.log(Object.prototype.toString.call(/\d/));//[object RegExp] 2.call,apply,bind的使用方法总结 // call和apply的使用方法总结----------------------------------------------------------------- window.color = 'red'; document.color = 'yellow'; var s1 = {color: 'blue' }; function changeColor(){ console.log(this.color); } // 注意call()里面传递的参数,就会把这个参数传给调用的函数,此时调用函数的内部里面的this实际上指向了传递过来的这个参数对象 changeColor.call(); //red (默认传递参数) changeColor.call(window); //red changeColor.call(document); //yellow changeColor.call(this); //red changeColor.call(s1); //blue window.firstName = "Cynthia"; window.lastName = "_xie"; var myObject = {firstName:'my', lastName:'Object'}; function getName(){ // 这个函数内部的this默认指向的是window,通过call和apply可以间接修改这个this的指向 console.log(this.firstName + this.lastName); } function getMessage(sex,age){ console.log(this.firstName + this.lastName + " 性别: " + sex + " age: " + age ); } getName.call(window); // Cynthia_xie getName.call(myObject); // myObject getName.apply(window); // Cynthia_xie getName.apply(myObject);// myObject getMessage.call(window,"女",21); //Cynthia_xie 性别: 女 age: 21 getMessage.apply(window,["女",21]); // Cynthia_xie 性别: 女 age: 21 getMessage.call(myObject,"未知",22); //myObject 性别: 未知 age: 22 getMessage.apply(myObject,["未知",22]); // myObject 性别: 未知 age: 22 总结: /* 1. apply()方法 接收两个参数,一个是函数运行的作用域(this),另一个是参数数组。 语法:apply([thisObj [,argArray] ]);,调用一个对象的一个方法,2另一个对象替换当前对象。 说明:如果argArray不是一个有效数组或不是arguments对象,那么将导致一个 TypeError,如果没有提供argArray和thisObj任何一个参数,那么Global对象将用作thisObj。 2. call()方法 第一个参数和apply()方法的一样,但是传递给函数的参数必须列举出来。 语法:call([thisObject[,arg1 [,arg2 [,...,argn]]]]);,应用某一对象的一个方法,用另一个对象替换当前对象。 说明: call方法可以用来代替另一个对象调用一个方法,call方法可以将一个函数的对象上下文从初始的上下文改变为thisObj指定的新对象,如果没有提供thisObj参数,那么Global对象被用于thisObj。 3. bind()方法通常用于修改一个函数内部this的指向,返回的是一个函数,但是不会立即调用,如果需要调用传递参数的话还需要自己手动调用这个函数 * * * */

优秀的个人博客,低调大师

MaxCompute全表扫描新功能,给你“失误”的机会

随着社会数据收集手段的不断丰富及完善,越来越多的行业数据被积累下来。数据规模已经增长到了传统软件行业无法承载的海量数据,达到百GB、TB乃至PB级别。 在分析海量数据场景下,由于单台服务器的处理能力限制,数据分析者通常采用分布式计算模式。但分布式的计算模型对数据分析人员提出了较高的要求,且不易维护。使用分布式模型,数据分析人员不仅需要了解业务需求,同时还需要熟悉底层计算模型。 MaxCompute的目的是为用户提供一种便捷的分析处理海量数据的能力,owner可以不必关心分布式计算细节,便可达到分析大数据的目的,这样一是减轻项目负责人的工作负担,也同时降低了企业对海量数据处理的专业人才成本。 在使用过程中,我们发现用户经常遇到这样的问题,如果一不小心写错了sql,对全表做了扫描,不仅影响效率还会对成本造成损失,因为对全表数据扫描是费用比较

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册