分页: 5/220 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]
代码非原创,fix了bug,完善的还是需要再思量:
/**
* 通过拼接的方式构造请求内容,实现参数传输以及文件传输
* @param actionUrl
* @param params
* @param files
* @return
* @throws IOException
*/
public static String post(String actionUrl, Map<String, String> params,
    Map<String, File> files) throws IOException {

  String BOUNDARY = java.util.UUID.randomUUID().toString();
  String PREFIX = "--" , LINEND = "\r\n";
  String MULTIPART_FROM_DATA = "multipart/form-data";
  String CHARSET = "UTF-8";

  URL uri = new URL(actionUrl);
  HttpURLConnection conn = (HttpURLConnection) uri.openConnection();
  conn.setReadTimeout(5 * 1000); // 缓存的最长时间
  conn.setDoInput(true);// 允许输入
  conn.setDoOutput(true);// 允许输出
  conn.setUseCaches(false); // 不允许使用缓存
  conn.setRequestMethod("POST");
  conn.setRequestProperty("connection", "keep-alive");
  conn.setRequestProperty("Charsert", "UTF-8");
  conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA + ";boundary=" + BOUNDARY);

  // 首先组拼文本类型的参数
  StringBuilder sb = new StringBuilder();
  for (Map.Entry<String, String> entry : params.entrySet()) {
    sb.append(PREFIX);
    sb.append(BOUNDARY);
    sb.append(LINEND);
    sb.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"" + LINEND);
    sb.append("Content-Type: text/plain; charset=" + CHARSET+LINEND);
    sb.append("Content-Transfer-Encoding: 8bit" + LINEND);
    sb.append(LINEND);
    sb.append(entry.getValue());
    sb.append(LINEND);
  }

  DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());
  outStream.write(sb.toString().getBytes());
  // 发送文件数据
  if(files!=null){
    int i = 0;
    for (Map.Entry<String, File> file: files.entrySet()) {
      StringBuilder sb1 = new StringBuilder();
      sb1.append(PREFIX);
      sb1.append(BOUNDARY);
      sb1.append(LINEND);
      sb1.append("Content-Disposition: form-data; name=\"file"+(i++)+"\"; filename=\""+file.getKey()+"\""+LINEND);
      sb1.append("Content-Type: application/octet-stream; charset="+CHARSET+LINEND);
      sb1.append(LINEND);
      outStream.write(sb1.toString().getBytes());

      InputStream is = new FileInputStream(file.getValue());
      byte[] buffer = new byte[1024];
      int len = 0;
      while ((len = is.read(buffer)) != -1) {
        outStream.write(buffer, 0, len);
      }

      is.close();
      outStream.write(LINEND.getBytes());
    }
  }
  
  //请求结束标志
  byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();
  outStream.write(end_data);
  outStream.flush();

  //得到响应码
  int res = conn.getResponseCode();
  InputStream in = null;
  if (res == 200) {
    in = conn.getInputStream();
    int ch;
    StringBuilder sb2 = new StringBuilder();
    while ((ch = in.read()) != -1) {
      sb2.append((char) ch);
    }
  }
  return in == null ? null : in.toString();
}
Tags: ,
刚弄了个70-300的,特意跑公园逛逛,拍了几张感觉还是不错
不过光线不好就不太行了,平民镜头就是如此这般了。。抖了就不行啊

点击在新窗口中浏览此图片
长焦拍细节很有优势

点击在新窗口中浏览此图片
拍小鸟是个好工具

点击在新窗口中浏览此图片
随便往草丛里一照,似乎也能出个相片,哎。。

点击在新窗口中浏览此图片
叶子脉络清晰,锐度还是可以

点击在新窗口中浏览此图片
拍小花很方便,背景一下子就糊了
主要是另外增加一个HOST节点即可,便捷的查找方式:

找到以下节点
</Engine>

在前面加上:

<Host name="www.aslibra.com" debug="0" appBase="/home/jsp/www.aslibra.com" unpackWARs="true" autoDeploy="true">
  <Context path="" docBase="."/>      
  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  prefix="aslibra_access_log."
  suffix=".txt" pattern="common" resolveHosts="false"/>
  <Logger className="org.apache.catalina.logger.FileLogger" directory="logs"  prefix="aslibra_log." suffix=".txt" timestamp="true"/>
</Host>


name 是域名,appBase是根目录
日志选项也可以定义。
Tags: ,
Android崛起 Google未必

引用
基于Linux的Google手机平台Android正在全球范围内快速扩张。最近的报告显示,在手机互联网用户众多、商业增长潜力巨大的中国,Android有望成为主导的手机操作系统。

  乍一看,这无疑是Google的胜利,然而情况并不如此简单。这里有很重要的一点,就是理解中国手机市场的状况——他们在制造自己的Android变体Ophone。这个平台架空了Google中间者的身份。传统上Google用来执行平台控制的许可政策以及技术机制,都被Ophone提供给手机生产商和使用者的自治权绕过了。

  像大多数基于Linux的手机平台一样,Android并非完全开源。它的核心操作系统包含GPL授权的Linux内核以及Apache授权的中间设备和用户空间堆栈。平台高层的几个关键部分——尤其是Android市场(下载应用程序之地——译注)和几个Google品牌的软件是有专利的。设备制造者如果需要在自己产品中包含以上部分,需要得到Google的软件商业许可。

。。。

  实际上,OPhone背后的公司和其他定制版在扩大其份额的过程中,也可能为Google自己的代码库(甚至是上游的Linux内核本身)的改进作出贡献。Google决定使用更自由的Apache许可证就意味着OPhone开发者不必公开自己用户空间的改进,不过开发者会想得到上游代码,减少对维护的担忧。

随着中国移动互联网用户的增长,我们可以看到,Android日渐成为焦点,并在塑造这个国家移动科技方面扮演了重要角色。在中国,Android注定是要普及的,但发号施令的,明显不会是Google。
Tags:
Dnsmasq是一个很实用的小工具,解决局域网的需求看来非常合适,特别是网关和防火墙上。

它可以提供如下几个实用的功能:
1 提供dns服务
2 优先使用本地自定义dns
3 提供dhcp服务

一般情况下,我们可以用bind解决dns的问题,dhcpd解决dhcp的问题,另外,还可以用ypbind解决自定义hostname解析的ip(当然还有用户的功能),它都解决了!很实用吧?这真的很吸引人,况且它一直在更新维护,最新版本是6月份的。

安装过程很简单:

wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.55.tar.gz
tar xfz dnsmasq-2.55.tar.gz
cd dnsmasq-2.55
make
make install
cp dnsmasq.conf.example /etc/dnsmasq.conf


运行起来就可以解决第一个问题:

[root@aslibra dnsmasq-2.55]# dnsmasq
[root@aslibra dnsmasq-2.55]# netstat -nlp|grep dnsmasq
tcp        0      0 0.0.0.0:53                  0.0.0.0:*                   LISTEN      25584/dnsmasq      
tcp        0      0 :::53                       :::*                        LISTEN      25584/dnsmasq      
udp        0      0 0.0.0.0:53                  0.0.0.0:*                               25584/dnsmasq      
udp        0      0 :::53                       :::*                                    25584/dnsmasq      


默认情况下,作为dns服务,第一个问题解决了。

我们尝试解决第二个问题,可以说是dns劫持?没有那么严重,用好了其实很实用。
有如下几个问题比较棘手:

1 局域网有很多机器希望使用一份一样的hosts定义一批名称对应的ip,你需要经常维护这份列表
2 你希望局域网的人访问某个域名时,拦截下来到指定的ip,做缓存节省带宽或者其它用途都可以
3 禁止某个域名的正常解析

这个更改涉及两个文件:
1 /etc/hosts
2 /etc/dnsmasq.conf

我们先在hosts文件里加入两行:

192.168.1.3     server1
192.168.1.2     www.aslibra.com


编辑dnsmasq.conf,找到如下代码:

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/localnet/

# Add domains which you want to force to an IP address here.
# The example below send any host in doubleclick.net to a local
# webserver.
#address=/doubleclick.net/127.0.0.1
address=/baidu.com/127.0.0.1


重启dnsmasq即可,下面我们在局域网另外一个机器用dig命令测试一下:
Tags: , ,


看这些视频还真的了解把车子开好不容易,要专心
目的:对某些用户进行登录ip限制

proftp配置:
限制以下两个用户只能从某两个ip段登录

<IfUser user1 user2>
  <Limit LOGIN>
    Order allow,deny
    Allow from 1.2.3.0/24 2.3.4.0/24
    DenyAll
  </Limit>
</IfUser>


默认情况下proftp没有这个模块,会提示出错:

Checking syntax of configuration file
- Fatal: unknown configuration directive '<IfUser>' on line 24 of '/Data/apps/proftpd/etc/proftpd.conf'


从源码编译,可以选择编译进来的,比如可以类似这样:

./configure --prefix=/Data/apps/proftpd \
--enable-shadow \
--enable-autoshadow   \
--with-modules=mod_ratio:mod_readme:mod_wrap:mod_ifsession \
&& make && make install


参考:http://blog.chinaunix.net/u/6098/showart_237162.html
Tags: , ,
分页: 5/220 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐