Eric 发布的文章

busybox sendmail 例子

  1. 首先创建一个纯文本, 写入一下内容:

Subject: Restart due to high load
CC:tian@gmail.com
To:admin@tianxiaohui.com
From:test@tianxiaohui.com

Restart due to high load on router

  1. 发送email的命令

cat var/test/routerRestartMail.txt | sendmail -S"smtp.163.com" -au"我的163邮箱用户名" -ap"163邮箱密码" -f"发送者邮箱名@163.com"

  1. sendmail 的详细说明文档:

root@home:/opt/var/eric# sendmail
BusyBox v1.18.4 (2013-05-26 18:44:50 CST) multi-call binary.

Usage: sendmail [OPTIONS] [RECIPIENT_EMAIL]...

Read email from stdin and send it

Standard options:

    -t              Read additional recipients from message body
    -f sender       Sender (required)
    -o options      Various options. -oi implied, others are ignored
    -i              -oi synonym. implied and ignored

Busybox specific options:

    -w seconds      Network timeout
    -H 'PROG ARGS'  Run connection helper
                    Examples:
                    -H 'exec openssl s_client -quiet -tls1 -starttls smtp
                            -connect smtp.gmail.com:25' <email.txt
                            [4<username_and_passwd.txt | -au<username> -ap<password>]
                    -H 'exec openssl s_client -quiet -tls1
                            -connect smtp.gmail.com:465' <email.txt
                            [4<username_and_passwd.txt | -au<username> -ap<password>]
    -S server[:port] Server
    -au<username>   Username for AUTH LOGIN
    -ap<password>   Password for AUTH LOGIN
    -am<method>     Authentication method. Ignored. LOGIN is implied

Other options are silently ignored; -oi -t is implied

home.tianxiaohui.com 更换新的免费证书

之前一直使用的是startSSL的证书, 这个证书是免费的, 虽然startSSL 宣称它的证书浏览器都认, 不过发现在有些浏览器上面, 还是不认这个, 我的Android 手机上面就不认, 公司里面的IE 浏览器也不认, 所以就投靠了新的免费证书: 沃通.

沃通的免费证书很容易申请, 申请之后几分钟就可以下载了. 并且不需要注册.

替换: 因为之前已经设置过证书, 只要替换一把, 全都可以用.

Java 引用 Reference 和 C 的指针 Pointer

指针 (Pointer): 指向内存的一个地址, 在C 里面, 可以对指针进行加减运算, 其实是内存地址的向前或向后, 它比较灵活, 也可以对俩个指针直接进行对比. 在内存里面, 直接对这个指针做加减运算, 就又可能到了一块无法预知的地址.

引用 (Reference): 较指针而言, 引用可以认为是一个抽象的指针, 在JVM的具体实现里面, 有的JVM可能指向的就是一块内存地址, 当然你不能对引用进行加减运算. 有的JVM里面的引用可能是只想的一个Map, 这个Map里面的值再具体指向内存的一块空间.

java servlet 笔记

Java Servlet 是 Java 的一个 web 组件, 用来产生动态内容, 必须在 Servlet container 里面运行. Servlet container 又叫 Servlet 引擎, 是 web Server的扩展, 提供了 Servlet 运行的环境. 它通过 request/response 报文与客户端通信. request/response 都是基于 MIME 的. Servlet container 必须支持Http (1.0 & 1.1) 协议, https 可选支持.

Servlet 有它的生命周期, Servlet container 负责它生命周期的管理. Servlet 接口中定义了 init, service, destroy 这些方法来诠释它的生命周期.
Servlet 被load 和实例化可能在 container 初始化的时候, 可有可能在第一次这个Servlet 被调用的时候, 据配置/Annotation 而定.
Servlet 通过init 方法被初始化, GenericServlet 实现了 ServletConfig 接口, 这个接口能提供Servlet的一些配置信息和Container的一些相关信息.
Servlet interface 有2个实现类: GenericServlet & HttpServlet.
Servlet 定义了一个service 方法, 用来处理客户的请求. Servlet container 通过多线程并发调用 service 方法来处理并发请求.
在非分布式的环境中, Servlet 在 container 中默认只有一个instance. 如果Servlet 实现了 javax.servlet.SingleThreadModel 接口, 那么为了支持更多的请求, 可能是多个instances. javax.servlet.SingleThreadModel 接口在最新版本中被逐渐废弃.

未完待续