我们可以先看看日常开发中会涉及到哪些文档: 需求文档 接口文档 业务词汇表文档 模块业务流程文档 系统间交互文档 系统架构文档 系统依赖文档 发布文档 示例文档(tutorial) 项目进度文档 案例文档 汇报文档 要写的类型文档还是不少的,无论哪种文档,都与项目的代码是脱节的。 所以软件行业以往的文档编写方式有很多缺点: 文档易过时,因为与代码是分开的,改了代码忘改文档是很正常的,代码是新版本,而文档是历史版本 文档误导人,因为前一条,功能上的修改没有反映到文档上,读文档的人会被错误信息所误导 既然代码和文档分开使得两者不易统一,那么我们就去追求把代码与文档写在一起,并通过技术手段把文档从代码中生成出来。 ? 稳定文档 稳定文档指的是那些基本不怎么变动的文档,这种文档和代码分开是可以接受的,为了使我们的文档稳定,应该遵循一些基本的编写原则,比如: 不要带公司的那些容易变化的信息:公司名,子公司,品牌,商标等等
在软件开发之前,有一项非常重要的工作,就是写软件文档,软件文档从形式上看的话,大致分为两类:一类是工作表格,就是开发过程中填写的各种表格;第二类就是编制的技术资料或者管理技术资料。 要是从文档的生产和使用范围来分则分为三类: ? 写好软件文档,一份好的文档相当于一份精美的介绍或者使用手册,让相关的工作人员充分的了解新的软件,从而做出更好地软件。
(这个没什么好说的,注意点就是了) 21-FTP、22-SSH、23-telnet、25-SMTP、80-HTTP、SNMP-161、MySQL数据库服务-3306 6.简单讲讲 ICMP协议(HTTP协议、DHCP协议等)的作用和基本原理(这道题就不说答案了,大家自己去看看之前的博客,最好能再总结其他常见协议的作用和基本原理) 7.如何进行两台电脑ping不通,你觉得可能的原因有哪些 (本段内容引子班里的一位offer大神给我的总结资料。
= 在软件文档中有几个比较重要的文档重点介绍一下 1、软件需求说明书 软件需求主要是从从现实中分离功能,描述软件要“做什么”,在软件需求说明书中,主要的功能和联系如下: ? 概要设计文档最重要的部分是分层数据流图、结构图、数据字典以及相应的文字说明等;详细设计文档最重要的部分是模块的流程图、状态图、局部变量及相应的文字说明等。一个模块一篇详细设计文档。 对于新用户来说基本操作手册是非常重要的,这也是很重要的文档。
如果想更新单独一条文档并且返回给应用层,可以使用 findOneAndUpdate 方法。 六、文档-Documents Mongoose document代表着MongoDB文档的一对一映射。 -SubDocuments 子文档是指嵌套在另一个文档中的文档。 Mongoose子文档有两种不同的概念:子文档数组和单个嵌套子文档 const chidlSchema = new Schema({name:String}) const parentSchema = new Schema({ children:[childSchema], child:childSchema }) 子文档与文档的区别是 子文档不能单独保存,他们会在他们的顶级文档保存时保存 find() 是文档列表 count() 是文档数量 update() 是更新的文档数量 九 中间件–Middleware 中间件(pre 和 post 钩子)是在异步函数执行时函数传入的控制函数
Xcode作为iOS的开发神器,为我们提供了十分丰富的文档提示功能,在开发过程中,我们可以十分方便的按下Option键,选中一个类或者方法查看其文档说明。 本篇主要介绍几种常用的文档注释方法。 多行注释文档 /** 多行注释文档相比于普通多行注释多了一个星号。 这里写图片描述 我们发现一个问题,效果图中前两行并没有换行,我们若是希望换行就需要在之间添加一个空行 ---- 单行注释文档 ///# 标题1 ///## 标题2 ///hello oc,下面的空行是为了换行 这里写图片描述 ---- 算法注释 算法是相对比较复杂的方法,我们通过注释对其进行详尽的说明,其文档注释使用的关键字如下: /// - Precondition: 前置条件 /// -
本文章转自https://blog.csdn.net/zjiang1994/article/details/79809687 Vue.Draggable学习总结 Draggable为基于Sortable.js name: 'd' }, { id: 5, name: 'e' }, { id: 6,
今天帮忙进行pdf转word,折腾半天,最终终于搞定了 这里介绍的方法分为两种,一种是直接转为图片版的word,也就是不可编辑的;另一种就是转为可编辑的word,目前很多软件都是要收费的~ 不可编辑的word文档 上传需要处理的文档后,设定分割方式,或者需要进行格式转换的页面范围,就可以在线处理,之后等待片刻把处理后的文档download就可以了~ https://www.pdftoword.com/ 这个网址也可以进行 有兴趣也可以看看源代码~ 可编辑的word文档的转换。这个找了很久才找到可用的。可以下载此处给出的软件,里边有注册机,可以用于破解软件。 下载地址:http://pan.baidu.com/s/1i5wi6TR。下载安装完成后,直接安装打开。 窗口复制机器码到图3所示窗口,点击计算注册码,复制注册码,然后拷贝到图2所示的注册码位置,点击激活就OK啦~ 现在就可以点击读取,打开你想要转换的PDF,点击识别,识别完毕后点击word就自动可以保存到一个word文档中
6. 数组的扩展 Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似。 Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。 let args = [0, 1, 2]; f(...args); 应用Math.max方法: // ES5 的写法 Math.max.apply(null, [14, 3, 77]) // ES6 / ES5的 写法 var arr1 = [0, 1, 2]; var arr2 = [3, 4, 5]; Array.prototype.push.apply(arr1, arr2); // ES6 arr2 = [3, 4, 5]; arr1.push(...arr2); // ES5 new (Date.bind.apply(Date, [null, 2015, 1, 1])) // ES6
书到用时方恨少啊 于是2022年的规划又多了一项:多看书 不积跬步无以至千里 不积小流无以成江海 只记录对我来说比较陌生的知识点 文章内容来自: https://es6.ruanyifeng.com / 2022 / 1 / 7 变量的解构赋值 1:变量的解构赋值 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 ES6 又提供了三种新方法。 includes():返回布尔值,表示是否找到了参数字符串。 startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。 ; s.startsWith('world', 6) // true s.endsWith('Hello', 5) // true s.includes('Hello', 6) // false 上面代码表示 Number.EPSILON ES6 在Number对象上面,新增一个极小的常量Number.EPSILON。根据规格,它表示 1 与大于 1 的最小浮点数之间的差。
return new Plugin('ast-transform', { visitor: { ... } }); } // Babel 6 export default function ( { types: t} ) { return { visitor: { ... } }; } 1.安装 Babel 6 配置 Babel 6 //.babelrc { "presets": [], "plugins": [] } //or package.json { ... transform-es2015-classes" ["transform-es2015-classes", { "loose": true }] ] } 扩展—— Babel 6
译者:Django 文档协作翻译小组,原文:Overview。 本文以 CC BY-NC-SA 3.0 协议发布,转载请保留作者署名和文章出处。 Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。
; /index/index Request::host(true); 域名:www.baidu.com,默认无参数包含端口:80 Request::url(1); 完整域名和地址 http://tp6. api.shanliwawa.top:80/index/index Request::domain(1) http://tp6.api.shanliwawa.top Request::time() 判断是否某种类型 Request::has('id','get'); 检测变量id是否存在 url('index/hello', ['id'=>5,'name'=>'李白'],'do'); http://tp6. ',1)->paginate(10); 分页每页10条 模型 定义全局常量 define('__URL__',\think\facade\Request::domain(1)); http://tp6. \app::getAppPath() 应用路径 C:\www\tp6\app\index\ \think\facade\app::getConfigPath() 配置路径C:\www\tp6\config
let {name:newName,age: newName} = obj; 总结 解构赋值就是把数据结构分解,然后给变量进行赋值 如果结构不成功,变量跟数值个数不匹配的时候,变量的值为undefined 数组解构用中括号包裹,多个变量用逗号隔开,对象解构用花括号包裹,多个变量用逗号隔开 利用解构赋值能够让我们方便的去取对象中的属性跟方法 箭头函数 ES5 中this指向函数的调用者,ES6中this指向函数定义位置的上下文 [1, 2, 3].includes(2) // true [1, 2, 3].includes(4) // false 模板字符串: ES6中新增字符串的方法。 'x'.repeat(3) // "xxx" 'hello'.repeat(2) // "hellohello" ES6 提供了新的数据结构 Set。 ES6中数组的新方法.png
6大设计原则总结 一、单一职责原则 单一职责原则:英文名称是Single Responsiblity Principle,简称是SRP。定义:应该有且仅有一个原因引起类的变更。 一个展示数据的列表,按照原有的需求是6列,突然有一天要增加1列,而且这一列要跨N张表,处理M个逻辑才能展现出来,这样的变化是比较恐怖的,但还是可以通过扩展来完成变化,这就要看我们原有的设计是否灵活。
---- ES6特性总结 简介 ECMAScript6.0(以下简称ES6,ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是EuropeanComputerManufacturersAssociation )通过ECMA-262标准化的脚本程序设计语言)是JavaScript语言的下一代标准,已经在2015年6月正式发布了,并且从ECMAScript6开始,开始采用年号来做版本。 即ECMAScript2015,就是ECMAScript6。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。每年一个新版本。 ? ES6可以这样: const [x, y, z] = arr; //x,y,z将与arr中的每个位置对应来取值//然后打印 console.log(x, y, z); 对象结构 const person 字符串扩展 几个新的API ES6为字符串扩展了几个新的API: includes():返回布尔值,表示是否找到了参数字符串。
展开运算符 合并功能 例1 let state = {name: "jack"} {...state, {name: "finley"}} // 返回 {name: "finley"} 例2 var arr1 = ['two', 'three']; var arr2 = ['one', ...arr1, 'four', 'five']; // 结果 ["one", "two", "three", "four", "five"] 拷贝功能 var arr = [1,2,3]; var arr2 = [...a
注: 1、ES6的支持性可以查看:http://kangax.github.io/compat-table/es6/ 2、Google V8引擎已经部署了ES6的部分特性,使用Node.js 0.12 3、使用Traceur转码器、Babel转码器等可以将ES6方式编写的程序转为ES5代码。 在ECMAScript6中,增强了对码点大于0xFFFF的字符的整体处理和正则匹配。 六、对象的扩展 6.1 增强的对象写法 ES6允许直接写入变量和函数,作为对象的属性和方法。 (WeakSet的一个用处,是储存DOM节点,而不用担心这些节点从文档移除时,会引发内存泄漏。)
注: 1、ES6的支持性可以查看:http://kangax.github.io/compat-table/es6/ 2、Google V8引擎已经部署了ES6的部分特性,使用Node.js 0.12 3、使用Traceur转码器、Babel转码器等可以将ES6方式编写的程序转为ES5代码。 (WeakSet的一个用处,是储存DOM节点,而不用担心这些节点从文档移除时,会引发内存泄漏。) 13.3 ES6模块的转码 浏览器目前还不支持ES6模块,为了现在就能使用,可以将其转为ES5的写法,目前比较好用的工具有: ES6 module transpiler是square公司开源的一个转码器 ---- 十四、总结 整个ES6的新特性和用法学习下来,觉得比较有用的点如下: 习惯用let取代var,因为两者语义相同,而且let没有副作用。 优先使用const,方便阅读,也防止不小心的串改。
p.is_alive()) # *** 判断子进程 False print(p.name) p.name = 'sb' print(p.name) print('主程序开始') 6. multiprocessing import Queue import random import time def producer(q, name): for i in range(1, 6) True t1.start() t2.start() print("main-------") # 3 # 结果: # 123 # 456 # main------- # end123 # end456 6. ('%s eat 1' % name) # 2 g2.switch('常鑫') # 3 time.sleep(3) print('%s eat 2' % name) # 6