苹果ios同步icloud照片到新手机

2017年11月15日 没有评论

换了个新手机,想把icloud里面的照片下来。一直也没搞懂苹果的更新机制。

设置的是通过icloud恢复,结果发现没有可用备份。那只能设置为新手机了。

设为新手机后使用已有的icloud账户登录后,以前通讯录,照片会自动恢复。

设置方式是:照片需要打开 设置->照片->icloud照片图库

打开照片后发现里还是没有照片,网上查了查也看不到什么原理。

最后无意间发现照片有了。

原来是要想同步照片需要三个条件:
1.需要打开icloud照片图库
2.手机接入wifi
3.手机充电状态是。

才会下载照片到新手机。

分类: iOS/Mac 标签: ,

git skip worktree文件恢复

2017年10月20日 没有评论

从远程pull文件一致报error: Your local changes to the following files would be overwritten by merge:
提示有文件未commit,可是本地已经无文件可,后来发现提示未提交这些文件都是skip worktre文件,需要恢复取消skipwork状态,然后暂存本地的修改,再进行pull远程文件就可以了。

把所有标记为skip worktree的问价取消标记命令:

git ls-files -v 显示所有文件的状态
grep -i ^S cut -c 3- 提取从第三个字符开始到结尾,去掉状态只保留路径
tr '\012' '\000'替换换行符 (\012) 为 (\000)
xargs -0 git update-index --no-skip-worktree 把以0分割的路径字符传给 git update-index --no-skip-worktree 取消

忽略修改,从而不用提交到库里面。
git update-index --assume-unchanged /path/file

如果想恢复该文件,可以用
git update-index --no-assume-unchanged /path/file 来恢复跟踪

分类: 小技巧 标签:

TCP连接建立的三次握手与连接断开四次挥手

2017年9月4日 没有评论

TCP三次握手

一、什么是三次握手

三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

二、三次握手的目的

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。客户端执行连接请求时。将触发三次握手。

三、三次握手过程

第一次握手:
客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。
第二次握手:
服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的ISN加1以.即X+1。
第三次握手.
客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1。如果正确则连接建立成功,客户端和服务器进入ESTABLISHED状态,完成三次握手,随后客户端与服务器之间可以开始传输数据了。把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1。

TCP四次挥手

一、什么是四次挥手

TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,任何一方执行close操作即可产生挥手操作。

二、四次挥手过程

第一次挥手:

客户端发送一个FIN,用来关闭客户端到服务器的数据传送,客户机进入FIN_WAIT_1状态。
第二次挥手:

服务器收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务器进入CLOSE_WAIT状态。
第三次挥手:

服务器发送一个FIN,用来关闭服务器到客户端的数据传送,服务器进入LAST_ACK状态。
第四次挥手:

客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务器,确认序号为收到序号+1,服务器进入CLOSED状态,完成四次挥手。

有限状态机FSM:Finite State Machine
1、CLOSED 没有任何连接状态
2、LISTEN 侦听状态,等待来自远方TCP端口的连接请求
3 、SYN-SENT 在发送连接请求后,等待对方确认
4、SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
5、ESTABLISHED 代表传输连接建立,双方进入数据传送状态
6、FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
7 、FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
8、 TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
9、CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
10、LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失

11、CLOSING 双方同时尝试关闭传输连接,等待对方确认

附加问题:

【问题1】为什么连接的时候是三次握手,关闭的时候却是四次挥手?
答:因为当服务器收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来回应的,SYN报文是用来同步的。但是关闭连接时,当服务器收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,”发送的FIN报文已经收到”。只有等到客户端所有的报文都发送完了,客户端才能发送FIN报文,因此不能一起发送。故需要四步挥手。
【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
答:四个报文都发送完毕,客户端和服务器可以直接进入CLOSE状态了,但有可能最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文,确保之前的数据不会丢失后再进入close状态。

原文:http://www.178linux.com/85976

分类: 网络编程 标签:

tcpdump抓取http的请求头和响应信息

2017年8月21日 没有评论

tcpdump过滤HTTP的GET请求:

sudo tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'

tcpdump过滤HTTP的POST请求:

sudo tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'

tcpdump过滤HTTP的请求和响应头信息,以及请求和响应消息体信息:

tcpdump -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
tcpdump -X -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

分类: linux 标签:

The listener supports no services

2017年8月14日 1 条评论

[oracle@localhost ~]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 14-AUG-2017 13:56:45

Copyright (c) 1991, 2013, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 14-AUG-2017 13:54:44
Uptime 0 days 0 hr. 2 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/oracle/product/11gR2/network/admin/listener.ora
Listener Log File /home/oracle/product/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

tlister启动没有服务

#netmgr
在database services下增加实例名配置,替换红色部分为你的实例名。

客户端连接报错:
ORA-12541:TNS:no listener
把127.0.0.1 替换为你机器的ip

分类: oracle 标签:

oralce删除数据库

2017年8月14日 没有评论

sqlplus / as sysdba
SQL> startup
ORACLE instance started.

Total System Global Area 2.0176E+10 bytes
Fixed Size 2261928 bytes
Variable Size 2818575448 bytes
Database Buffers 1.7314E+10 bytes
Redo Buffers 41463808 bytes
Database mounted.
Database opened.
SQL> alter database close;

Database altered.

SQL> alter system enable restricted session;

System altered.

SQL> drop database;

Database dropped.

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With

删除 /etc/oratab
删除 rm -rf product/
删除 rm -rf oraInventory/

未关闭的进程杀掉
[root@localhost ~]# ps -ef|grep ora
root 4736 3961 0 13:17 pts/2 00:00:00 su - oracle
oracle 4737 4736 0 13:17 pts/2 00:00:00 -bash
oracle 4763 1 0 13:18 ? 00:00:00 /home/oracle/product/11gR2/bin/tnslsnr LISTENER -inherit
root 5482 3790 0 13:36 pts/1 00:00:00 grep ora
[root@localhost ~]# kill -9 4763

这样重新安装数据库,不会报实例冲突

分类: oracle 标签:

eclipse工程有红色叹号

2017年7月11日 没有评论

eclipse有红色叹号;

一般情况可以这样处理,处理方法来自网络

1,右键项目名称 BuildPath ---> Configure Build Paht...中,然后上面有几个选项卡找到 Libraries中出现红色叉号的包为路径错误的包。到classpath中修改相应包的当前路径。然后回到eclipse中F5刷新工程。

不行的话可以试试clean项目;

project--->clean

如果你的eclipse项目有红色叹号,而Libraries中没有出现红色叉号的包,我是这样做的。

1,先把eclipse转换到Markers视图,windows---->show view ---->markers

你会发现这些报错内容,
Archive for required library: ‘XXXXXXXX001’ in project ‘xxxxxxxxx’ cannot be read or is not a valid ZIP file
2,用记事本打开项目根目录的.classpath文件,找到“”这一行,删掉

保存,刷新后,这个报错就没有了,从而红色叹号也没有了。

分类: java 标签:

word按tab不能多级标题

2017年7月5日 没有评论

使用word 2010 ,经常用到tab键进行列表等级变换,但是在某些情况下,tab键不能回退到下一级,那么就需要修复word此功能。
1第一步,打开word 2010 ,选择“文件”-> “选项”:
2第二步,在弹出框中选择“校对”,然后选择“自动更正选项(A)...”:
3第三步,在弹出框中选择“键入时自动套用格式”标签卡,在“用Tab和Backspace设置左缩进和首行缩进”前打勾:
4最后,保存退出

分类: 小技巧 标签:

nginx的location、root、alias指令用法和区别

2017年4月4日 5 条评论

nginx指定文件路径有两种方式root和alias,指令的使用方法和作用域:
[root]
语法:root path
默认值:root html
配置段:http、server、location、if
[alias]
语法:alias path
配置段:location

root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径
alias是一个目录别名的定义,root则是最上层目录的定义。
还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~

root实例:

如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。

alias实例:

如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。

注意:
1. 使用alias时,目录名后面一定要加"/"。
3. alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
4. alias只能位于location块中。(root可以不放在location中)

分类: nginx 标签:

git master origin HEAD的区别

2017年3月29日 没有评论

HEAD :当前活跃分支的游标,可以用 checkout 命令改变 HEAD 指向的位置。形象的记忆就是:你现在在哪儿,HEAD 就指向哪儿,所以 Git 才知道你在那儿!

master: 首次创建仓库时默认分支的名字,在大多数情况下,master是指主干分支。

origin: 默认的远程仓库的名字。

HEAD是git内置的定义好的特定含义功能,不可以修改。master,origin都是常用的公共命名方式,可以有自己的定义。

ps:
FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本

参考
http://marklodato.github.io/visual-git-guide/index-zh-cn.html

分类: linux 标签: