DNS 域名解析
一、应用层的常用协议
超文本传输:http,https
文件传输:FTP
电子邮件:SMPT、POP3、IMAP
动态主机配置:DHCP
域名系统:DNS
二、域名由于IP地址不方便记忆,并且不能表达组织的名称和性质,人们设计出了域名。但实际上,为了能够访问到具体的主机,最终还是得知道目标主机的IP地址
域名根据级别分为顶级域名、二级域名、三级域名等
0.根域名根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有13个不同IP地址的根域名服务器。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。这就加快了DNS的查询过程,同时也更合理地利用了因特网的资源。
1.顶级域名
通用顶级域名
.com 公司
.net, 网络
.org 组织机构
.edu 教育
.gov 政府部门
国家及地区顶级域名
.cn 中国
.jp 日本
2.二级域名二级域名是指顶级域名之下的域名
在通用顶级域名下,它一般指域名注册人的名称,例如google、baidu、micro ...
iOS Widget(3):App与Widget数据共享
一、引言 Widget是一个迷你版的App,iOS有沙盒机制,不同App之间无法直接共享数据。组件和主App之间其实就是不同App的关系,所以也无法通过userdefaults.standard来传数据,苹果为了在不打破沙盒的前提下能够传数据,就想出了App Group的方法。
二、数据共享方式 可以通过网络和本地数据两种方式进行数据的共享,本地数据共享可以通过 App Groups。
四、App Groups 原理 它是 iOS 8 之后推出的在 App 之间共享数据的方式,只需要简单的配置就可以实现数据的共享。它主要用于同一group下的app共享同一份读写空间,以实现数据共享。编码 App Groups只能异步同步数据,当Widget读取数据的时候,只能读之前手机App保存的数据,相反也是如此。当手机App有新的数据保存时,不能及时的通知Widget更新数据,只能是Widget下次去主动获取数据。
五、配置证书 由于widget项目和主项目其实是两个独立的appID,因为需要单独给widget配置证书,配置证书的过程参考APP证书配置;
开启APP Groups 开 ...
iOS Widget(2):小组件刷新机制
引言 前面的章节学完已经让我们可以顺利实现一个小组件了,但是小组件里面的数据如何刷新的呢,本节内容将讲解IOS的刷新机制。
大纲
系统如何管理小组件刷新
Timeline刷新机制
Timeline刷新机制代码实现
刷新策略建议
时钟刷新策略(只有小时分钟,没有秒)
主动请求重新刷新
系统如何管理小组件刷新
WidgetKit在一个单独的进程中渲染小组件视图
即使小组件窗口显示在屏幕上,widget extension 也不会持续处于活动状态
为了管理系统负载,WidgetKit使用预算来分配一天中的窗口小组件重载
WidgetKit为用户添加到其设备的每个活动小组件维护不同的预算
每日预算通常包括40到70次刷新。该速率大致可转换为小组件每15至60分钟重新加载一次,但是由于涉及到许多因素,因此这些时间间隔是不固定的。
综上所述,小组件的刷不能由开发者自由控制,官方建议如下:
如果您的小组件可以预测应重新加载的时间点,则最好的方法是为尽可能多的将来日期生成时间线。
时间轴中的条目间隔应保持尽可能大。
时间轴应创建至少相隔5分钟的时间轴条目。
WidgetKit可能会在多个窗口小 ...
iOS Widget(1):小组件框架解析
引言 看了小组件的概述,你肯定想马上搞一个小组件出来试试,实践中学习效果更佳
本文大纲
创建小组件
认识小组件框架各个组成部分
创建小组件
第一步:先创建好一个App,步骤省略
第二步:在App中创建小组件 1. 在Xcode中打开您的应用程序项目,然后选择 File > New > Target。 2. 从“Application Extension”组中,选择“Widget Extension”,然后单击“Next”。 3. 输入小组件的名称。 4. 如果需要给小组件提供用户可配置的属性,请选中“Include Configuration Intent”复选框。 5. 单击 Finish。
认识小组件框架各个组成部分 如果没有勾选“Include Configuration Intent”,默认生成如下代码,这里新建的时候小组件的名字是 “Widget1”
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555 ...
XCode14.3打包错误
在有pods的项目中,xcode14.3之后打包出现如下错误
1command phasescriptexecution failed with a nonzero exit code
原因及解决方法如下
There is an issue with Cocoapods now, because Xcode 14.3 is now using a relative path in its symlink for frameworks.
Either wait for release of Cocoapods version 1.12.1 or make this simple change in your Pods-APPNAME-frameworks.sh file:
Replace:
1234if [ -L "${source}" ]; then echo "Symlinked..." source="$(readlink "${source}")" ...
grep用法
grep用法1.参数解析
-E 使用正则表达式选项grep -E "[1-9]" 匹配数字1-9中的任意一个
-n 显示匹配行及行号(number)
-c 只输出匹配行的计数(count)
-r 递归搜索,会搜索子目录
-d skip 忽略子目录
-i 忽略大小写(ignore)
-v 显示不包含匹配文本的行(取反)
-l 只列出匹配的文件名
-L 列出不匹配的文件名
grep -w pattern files 只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’)
< 和 > 分别标注单词的开始与结尾。grep ‘<man>’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
-o 只显示匹配行中匹配正则表达式的那部分
只显示匹配行中匹配正则表达式的那部分
2.正则表达式1.主要参数
\ 正则中的转义符号
. 表示单个字符 * 0个或者多个 + 1个或者多个
.* 表示0个或者多个字符(可以没有字符,也s可以多个字符)
.+ 表示1 ...
5.jQuery过滤
缩小搜索元素的范围三个最基本的过滤方法是:first(), last() 和 eq(),它们允许您基于其在一组元素中的位置来选择一个特定的元素。
其他过滤方法,比如 filter() 和 not() 允许您选取匹配或不匹配某项指定标准的元素。
jQuery first() 方法first() 方法返回被选元素的首个元素。
下面的例子选取首个 元素内部的第一个 元素:
123$(document).ready(function(){ $("div p").first();});
jQuery last() 方法last() 方法返回被选元素的最后一个元素。
下面的例子选择最后一个 元素中的最后一个 元素:
123$(document).ready(function(){ $("div p").last();});
jQuery eq() 方法eq() 方法返回被选元素中带有指定索引号的元素。
索引号从 0 开始,因此首个元素的索引号是 0 而不是 1。下面的例子选取第二个 元素(索引号 1) ...
4.CSS类和css()方法
一、获取并设置 CSS 类jQuery 拥有若干进行 CSS 操作的方法。我们将学习下面这些:
addClass() - 向被选元素添加一个或多个类
removeClass() - 从被选元素删除一个或多个类
toggleClass() - 对被选元素进行添加/删除类的切换操作
下面的样式表将用于本页的所有例子:
12345678.important { font-weight:bold; font-size:xx-large;} .blue { color:blue;}
jQuery addClass() 方法下面的例子展示如何向不同的元素添加 class 属性。当然,在添加类时,您也可以选取多个元素:
1234$("button").click(function(){ $("h1,h2,p").addClass("blue"); $("div").addClass("important"); ...
3.jQuery添加和删除元素
一、添加元素添加新的 HTML 内容我们将学习用于添加新内容的四个 jQuery 方法:
append() - 在被选元素的结尾插入内容(仍然在该元素的内部)
123456<p> <span class="s1">s1</span></p><script>$("p").append('<span class="s2">s2</span>');</script>
追加后结果如下
1234<p> <span class="s1">s1</span> <span class="s2">s2</span></p>
prepend() - 在被选元素的开头插入内容
1$("p").prepend("在开头追加文本");
after() - 在被选元素之 ...
2.jQuery获取和设置内容
一、jQuery捕获1.获得内容 - text()、html() 以及 val()三个简单实用的用于 DOM 操作的 jQuery 方法:
text() - 设置或返回所选元素的文本内容
html() - 设置或返回所选元素的内容(包括 HTML 标签)
val() - 设置或返回表单字段的值
下面的例子演示如何通过 jQuery text() 和 html() 方法来获得内容:
1234567891011121314151617<script>$(document).ready(function(){ $("#btn1").click(function(){ alert("Text: " + $("#test").text()); }); $("#btn2").click(function(){ alert("HTML: " + $("#test").html()); }); ...