一

{"type":"编程笔记"}


  • Home

  • Archives
  • Search

tcp connection open and close

Posted on 2016-08-06   |   In linux

wireshark install and usage

下面示例中会用到wireshark抓包工具,安装wireshark并且通过一个 http 访问来查看 TCP 连接打开关闭请求的过程。

 brew install wireshark --with-qt sudo wireshark-qt

wireshark显示过滤规则(display filter)简单示例,更多使用说明可查阅参考链接:

host 10.1.2.3ip.addr == 10.1.1.1ip.addr eq 10.1.1.1ip.src != 10.1.2.3 and ip.dst != 10.4.5.6tcp.port == 25tcp.dstport == 25http.request.method == "POST"http.host == "www.google.com"

注意与tshark抓包的过滤规则-f的区别,显示过滤规则是对抓包结果展示时使用的,数据包可能是完整的完全抓取,在tshark里使用参数-Y控制显示过滤规则。

tshark抓包过滤规则示例:

ip src host 10.1.1.1src host 10.7.2.12 and not dst net 10.200.0.0/16tcp dst port 3128

在wireshark中打开有数据流量的那个网络设备,并打开新的Terminal输入以下命令,发起一个 http 请求:

 curl -o index.html http://www.baidu.com

请求完成将wireshark监控暂停,并保存结果到文件,方便重新分析使用。

Read more »

java object serialization

Posted on 2016-07-27   |   In java

Java 序列化简介

Java对象序列化是JDK 1.1中引入的一组开创性特性之一,是Java语言内建的一种对象持久化方式,用于作为一种将Java对象的状态转换为字节数组,以便存储或传输的机制,以后仍可以将字节数组转换回Java对象原有的状态。

实际上,序列化的思想是冻结对象状态,传输对象状态,如写到磁盘或者通过网络使用RMI远程方法调用等,然后解冻对象状态,重新获得可用的Java对象。

相关接口及类

Java为了方便开发人员将Java对象进行序列化及反序列化提供了一套方便的API来支持,其中包括以下接口和类:

  1. java.io.Serializable
  2. java.io.Externalizable
  3. java.io.ObjectOutput
  4. java.io.ObjectInput
  5. java.io.ObjectOutputStream
  6. java.io.ObjectInputStream
  7. javax.crypto.SealedObject
  8. java.security.SignedObject

如何对Java对象进行序列化与反序列化

在Java中,只要一个类实现了java.io.Serializable接口,那么它就可以被序列化,这个接口属于标记接口,源码如下:

/* * @see java.io.ObjectOutputStream * @see java.io.ObjectInputStream * @see java.io.ObjectOutput * @see java.io.ObjectInput * @see java.io.Externalizable * @since   JDK1.1 */public interface Serializable {}
Read more »

ansible simple tutorial

Posted on 2016-07-24   |   In linux

ANSIBLE

Simple, agentless and powerful open source IT automation.

ansible是一个轻量级的自动化运维工具,学习门槛低,安装简单,执行方便,它基于ssh,远程服务器上不需要安装客户端agent,利用推送方式对客户系统加以配置,这样所有工作都可在主服务器端完成,不需要维护远程服务器上的客户端agent。

ansible中的概念

  1. 任务task:多个task顺序执行,在每个task执行结束可以通知hanlder触发新操作。
  2. 变量variable:用户定义的变量。
  3. 环境facts:facts从每台服务器上收集得到,可以用作变量。
  4. 模块module:比如shell,ping,apt,git,copy,默认的command等等。
  5. 操作hanlder:任务执行后的回调任务,通过task中的notify配置关联handler,不管有多少个通知,handler在所有任务运行后,按照配置的先后顺序只运行一次。

使用前提

ansible基于ssh操作远程服务器,所以要求远程服务器提供:

  1. remote_user能够通过ssh公钥无密码登录到所管理的远程服务器。
  2. remote_user执行sudo的时候不需要密码,配置如下说明。
 sudo chmod +w /etc/sudoers visudo

或者是用vim直接编辑此文件:

 sudo vim /etc/sudoers

找到root ALL=(ALL:ALL) ALL,在下面添加一行,username为ssh远程登陆用户的用户名:

username    ALL=(ALL:ALL) NOPASSWD:ALL

保存退出,然后恢复为只读。

Read more »

serve current directory from command line

Posted on 2016-07-23   |   In linux

在当前目录下,用简单的命令行启动一个web服务器。

python版本最常用

 python -m SimpleHTTPServer 9090

Serving HTTP on 0.0.0.0 port 9090 ...

127.0.0.1 - - [23/Jul/2016 14:48:09] "GET / HTTP/1.1" 200 -

127.0.0.1 - - [23/Jul/2016 14:48:09] "GET /css/main.css HTTP/1.1" 200 -

127.0.0.1 - - [23/Jul/2016 14:48:09] "GET /favicon.ico HTTP/1.1" 200 -

ruby版本

 ruby -run -e httpd . -p 9090

[2016-07-23 14:40:23] INFO WEBrick 1.3.1

[2016-07-23 14:40:23] INFO ruby 2.0.0 (2014-05-08) [universal.x86_64-darwin14]

[2016-07-23 14:40:23] INFO WEBrick::HTTPServer#start: pid=39145 port=9090

localhost - - [23/Jul/2016:14:40:32 CST] "GET / HTTP/1.1" 200 5002

--> /

localhost - - [23/Jul/2016:14:40:32 CST] "GET /css/main.css HTTP/1.1" 200 4123

http://localhost:9090/ -> /css/main.css

localhost - - [23/Jul/2016:14:40:33 CST] "GET /favicon.ico HTTP/1.1" 200 6518

http://localhost:9090/ -> /favicon.ico

Read more »

vim killer plugin surround.vim

Posted on 2016-07-17   |   In vim

What's surround.vim

这个插件主要可以用来处理一些标点和标签配对相关的删除(Delete)、修改(Change)和复制(Yank)操作,如``,"",'',<>,(),{},[],<p></p>和<div></div>,所以在HTML、XML的配对标签编辑处理时尤其方便。

Install surround.vim

建议使用pathogen.vim或者是vundle.vim来管理vim插件:

 cd ~/.vim/bundle git clone git://github.com/tpope/vim-surround.git

Help manual

可以通过:h surround命令查看帮助手册,其中有在普通模式中命令操作举例说明,*是指光标所在字母上:

Old text Command New text
"Hello *world!" ds" Hello world!
[123+4*56]/2 cs]) (123+456)/2
if *x>3 { ysW( if ( x>3 ) {

Normal mode

当光标位于Hello world!的Hello这个单词字母上时,按组合命令ysiw]或者是ysiw[,iw是一个text-object,下面另详细说明。结果分别如下,用[生成的配对标点带有空格:

[Hello] world![ Hello ] world!

在如上结果上执行命令cs]}或者是cs]{,cs命令可以理解为Change Surround,结果如下,用{生成的配对标点带有空格:

Read more »
1…181920…99
yuweijun

yuweijun

492 posts
12 categories
RSS
GitHub Twitter
© 2021 yuweijun
Powered by Hexo
Theme - NexT.Mist.KISS