Swift Dictionary数据结构
Dictionary是除了Array之外的另一种非常重要的数据结构,它用于把某种形式的key,关联到某种形式的value。我们来看一个例子。
定义Dictionary假设我们要定义一个数据结构,用来保存用户在泊学对某个视频的观看情况。可以这样:
假设我们要定义一个数据结构,用来保存用户在泊学对某个视频的观看情况。可以这样:enum RecordType { case bool(Bool) case number(Int) case text(String)}let record11: [String: RecordType] = [ "uid": .number(11), "exp": .number(100), "favourite": .bool(true), "title": .text("Dictionary basics")]
在上面代码里,我们用[KeyType: ValueType]的形式来定义一个Dicti ...
Swift:Array
Swift官方API文档
对任何一门现代化编程语言来说,集合类型都是非常重要的组成部分。这一类数据类型的设计,很大程度上决定了开发者对某种编程语言的使用体验以及代码执行效率。因此,Swift在集合类型的设计和实现上,进行了诸多的考量,让它兼具易用性、高性能以及扩展性。
但是这样做也是有代价的,在Swift里,集合是个复杂的类型家族,它是由多个protocol形成的,因此当我们想深入其中一探究竟的时候,并不那么容易。
最简单也最常用的一个集合类型:Array。
创建一个ArrayArray表示一组有序(ordered)的数据集合,所谓有序,并不是指大小排序,而是指Array中的元素有先后的位置关系,稍后我们会看到,这个位置关系可以用来访问Array中的元素。在此之前,先来看了解如何定义Array对象。首先,我们可以通过下面三种方法定义一个空的Array:
var array1: Array<Int> = Array<Int>()var array2: [Int] = []var array3 = array2
在上面的代码中,前两种使用了type annota ...
Swift中String
忘了String是字符数组在Swift里,String已经彻底不再是一个集合类型。而是一个提供了从多个维度展现一个Unicode视图的类型。你可以得到它的多个Characters,可以看到它的UTF-8 / UTF-16 / Unicode scalar值等等。
String和NSString处理Unicode时的差异unicode长度是可变的,我们将看到unicode另外一个可变的特性,即组成同一个字符的code unit组合也是可变的。而区分String和NSString的一个重要方式,就是它们对unicode的这个特性的处理方式,是不同的。为了理解这个事情,我们从unicode grapheme clusters说起。
Unicode grapheme clusters首先,我们定义一个字符串:
let cafe = "Caf\u{00e9}"
返回
Café
Swift里,我们可以使用\u{}这样的方式使用unicode scalar定义unicode字符。
对于单词Café中的最后一个字符来说,它的unico ...
Vapor 用于处理异步事件的非阻塞架构
Vapor中使用Future和Promise几乎任何一个有可能带来请求延迟的操作,Vapor都会采用Future来处理,例如:
返回渲染过的页面,会用Future<View>;
返回HTTP状态码,会用Future<HTTPStatus>;
返回HTTP请求,会用Future<Response>;
在Vapor里,只要返回来自Model中的内容,它就一定是一个Future<T>
修改EpisodeVapor中的做法。为了表示某个在未来会返回的值,我们要使用Future<T>来表示。例如,在未来会得到一个Int就是Future<Int>,在未来会得到一个String,就是Future<String>,以此类推。
因此,对于上一节的/episodes/id这个API,如果Episode对象是通过数据库查询而来,我们最先要修改的,是遵从protocol Parameter时实现的resolveParameter,它返回的,应该是一个Future<Episode?>,而不 ...
Jmeter性能测试
启动Jmeter
终端下,直接输入jmeter命令,启动Jmeter
CLI模式对于负载测试,您必须在此模式下运行JMeter(不含GUI),才能从中获得最佳结果。为此,请使用以下命令选项:
jmeter -n -t [脚本文件] -l [报告文件] -e -o [报告路径]
jmeter -n -t Script.jmx -Jconcurrent_number=50 -Jduration=120 -Jcycles=-1 -l report.jtl -e -o C:\Users\Test\
字段
说明
-n
这指定JMeter要在cli模式下运行
-t
[包含测试计划的JMX文件的名称]。
-l
记录测试结果的 jtl 文件名称
-j
[JMeter运行日志文件的名称]。
-r
指定所有远程服务器中运行测试(所有)
-R
[远程服务器列表]在指定的远程服务器中运行测试(指定)
-g
生成测试报表(CSV)
-e
生成测试报表(HTML)
-o
生成测试报表(HTML) 文件夹不得存在或为空
字 ...
API测试中Github工具
Api测试工具Paw
自动化工具: Apifox
Mock框架Java 框架: MocoNode.Js框架: Yapi
抓包工具Charles
Vapor 通过URL返回自定义类型
自定义参数类型首先,在Sources/App/Models中,我们新建一个文件Episode.swift,在这里,定义一个类型Episode,表示数据库中的视频对象:
struct Episode { var id: Int var desc: String init(id: String) { if let eid = Int(id) { self.id = eid self.desc = "Description of episode \(self.id)" } else { self.id = 0 self.desc = "Invalid episode" } }}
定义路由/routers
router.get("episodes", Epi ...
设计HTTP API的最佳实践
HTTP 请求方法当客户端向服务器发起HTTP请求的时候,请求的Header中会有一个字段叫Request Method,也叫做HTTP verb,不同的HTTP verbs表达了不同的HTTP请求意图,而我们常用的,有下面这几种:
GET:表示客户端需要请求服务器的某个资源。简单来说,就是当我们需要给用户显示某些保存在服务器上的内容时,都会向服务器发起GET请求
POST:表示向服务器提交数据,例如用户注册时填写的信息、登录时填写的用户名/密码等。简单来说,就是当我们需要根据用户输入在服务器上创建新记录的时候,都会向服务器发起POST请求
PUT:表示根据用户提供的内容,修改服务器上的特定资源;PUT请求修改要求提供的数据是全量的,例如当我们修改某条数据库记录时,使用PUT请求,应该包含这条记录的所有字段,这种修改更像是覆盖
PATCH:使用PATCH请求提交的内容则是有针对性的,只要提供需要的部分就好了
DELETE: 请求服务器删除指定的页面
CONNECT: HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器
OPTIONS: 允许客户端查看 ...
Github修改下载Host
github上面有许多公开项目资源有的下载很慢,有时候挂VPN也解决不了;这时候需要修改git clone 使用的域名IP,解决办法可以从git clone的域名入手,实际上用git clone下载项目文件时使用的域名是http://github.global.ssl.fastly.net ,而非http://github.com/ 。因此,我们可以修改本地的host文件,在host文件中增加域名及域名解析对应的ip,给该域名指定ip。
利用第三方DNS域名解析网站,查询响应ip,常用的第三方DNS域名解析网站如http://tool.chinaz.com/dns ,如图 不同地方对应该域名的响应ip不一样,网页解析速度也就不一样。选择TTL值最小的ip即可。
参考文章Github上项目文件上传、下载速度慢的问题及解决方法
Hexo 生成 sitemap 站点地图
百度+谷歌搜索博客
创建站点地图文件站点地图是一种文件,您可以通过该文件列出您网站上的网页,从而将您网站内容的组织架构告知Google和其他搜索引擎。搜索引擎网页抓取工具会读取此文件,以便更加智能地抓取您的网站。
先安装一下,打开你的hexo博客根目录,分别用下面两个命令来安装针对谷歌和百度的插件
npm install hexo-generator-sitemap --savenpm install hexo-generator-baidu-sitemap --save
在博客目录的config.yml中添加如下代码Plugins:- hexo-generator-baidu-sitemap- hexo-generator-sitemapbaidusitemap: path: baidusitemap.xmlsitemap: path: sitemap.xml
在你的博客根目录的public下面发现生成了sitemap.xml以及baidusitemap.xml就表示成功了
让百度收录我们的博客参考文章生成sitemap站点地图