IdiotSky


  • Home

  • Categories

  • About

  • Archives

  • Tags

  • Books

  • Search

curl 命令

Posted on 24 Apr 16 | In linux命令

mark一下,当笔记,以后忘了查看

描述

命令:curl
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。

1
语法:# curl [option] [url]

常见参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-A/--user-agent <string>              设置用户代理发送给服务器
-b/--cookie <name=string/file> cookie字符串或文件读取位置
-c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中
-C/--continue-at <offset> 断点续转
-D/--dump-header <file> 把header信息写入到该文件中
-e/--referer 来源网址
-f/--fail 连接失败时不显示http错误
-o/--output 把输出写到该文件中
-O/--remote-name 把输出写到该文件中,保留远程文件的文件名
-r/--range <range> 检索来自HTTP/1.1或FTP服务器字节范围
-s/--silent 静音模式。不输出任何东西
-T/--upload-file <file> 上传文件
-u/--user <user[:password]> 设置服务器的用户和密码
-w/--write-out [format] 什么输出完成后
-x/--proxy <host[:port]> 在给定的端口上使用HTTP代理
-#/--progress-bar 进度条显示当前的传送状态

Read more »

redis cluster管理工具redis-trib.rb详解

Posted on 22 Apr 16 | In redis

redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集群命令封装成简单、便捷、实用的操作工具。redis-trib.rb是redis作者用ruby完成的。为了看懂redis-trib.rb,我特意花了一个星期学习了ruby,也被ruby的简洁、明了所吸引。ruby是门非常灵活的语言,redis-trib.rb只用了1600行左右的代码,就实现了强大的集群操作。本文对redis-trib.rb的介绍是基于redis 3.0.6版本的源码。阅读本文需要对redis集群功能有一定的了解。关于redis集群功能的介绍,可以参考本人的另一篇文章《redis3.0 cluster功能介绍》。

Read more »

route 命令

Posted on 24 Mar 16 | In linux命令

mark一下,当笔记,以后忘了查看

概述

使用下面的 route 命令可以查看 Linux 内核路由表。

1
2
3
4
5
$ route  
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0

route 命令的输出项说明
输出项 说明
Destination 目标网段或者主机
Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由
Genmask 网络掩码
Flags 标记。一些可能的标记如下:
U — 路由是活动的
H — 目标是一个主机
G — 路由指向网关
R — 恢复动态路由产生的表项
D — 由路由的后台程序动态地安装
M — 由路由的后台程序修改
! — 拒绝路由
Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用)
Ref 路由项引用次数(linux 内核中没有使用)
Use 此路由项被路由软件查找的次数
Iface 该路由表项对应的输出接口

Read more »

在Java中怎样把数组转换为ArrayList?

Posted on 09 Feb 16 | In java

先来一个数组

1
Element[] array = {new Element(1),new Element(2),new Element(3)};

方法一

1
ArrayList<Element> arrayList = new ArrayList<Element>(Arrays.asList(array));

首先,我们来看下ArrayList的构造方法的文档。
ArrayList(Collection < ? extends E > c) : 构造一个包含特定容器的元素的列表,并且根据容器迭代器的顺序返回。
所以构造方法所做的事情如下:

  1. 将容器c转换为一个数组
  2. 将数组拷贝到ArrayList中称为”elementData”的数组中

ArrayList的构造方法的源码如下:

1
2
3
4
5
6
7
public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
size = elementData.length;

if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
}

Read more »

用Maven跑Java main的3种方法

Posted on 06 Feb 16 | In java

概述

Maven exec plugin可以使我们运行自己工程的Java类的main方法,并在classpath里自动包含工程的dependencies。本文用示例代码展示了使用maven exec plugin来运行java main方法的3种方法。

Read more »

linux Make 命令教程

Posted on 03 Jan 16 | In linux命令

Make的概念

Make这个词,英语的意思是”制作”。Make命令直接用了这个意思,就是要做出某个文件。比如,要做出文件a.txt,就可以执行下面的命令。

1
$ make a.txt

但是,如果你真的输入这条命令,它并不会起作用。因为Make命令本身并不知道,如何做出a.txt,需要有人告诉它,如何调用其他命令完成这个目标。
比如,假设文件 a.txt 依赖于 b.txt 和 c.txt ,是后面两个文件连接(cat命令)的产物。那么,make 需要知道下面的规则。

1
2
a.txt: b.txt c.txt
cat b.txt c.txt > a.txt

也就是说,make a.txt 这条命令的背后,实际上分成两步:第一步,确认 b.txt 和 c.txt 必须已经存在,第二步使用 cat 命令 将这个两个文件合并,输出为新文件。
像这样的规则,都写在一个叫做Makefile的文件中,Make命令依赖这个文件进行构建。Makefile文件也可以写为makefile, 或者用命令行参数指定为其他文件名。

1
2
3
$ make -f rules.txt
# 或者
$ make --file=rules.txt

上面代码指定make命令依据rules.txt文件中的规则,进行构建。
总之,make只是一个根据指定的Shell命令进行构建的工具。它的规则很简单,你规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。

Read more »

JVM监控与调优

Posted on 12 Sep 15 | In java

JVM监控与调优主要的着眼点在于如何配置、如何监控、如何优化3点上。下面就将针对这3点进行学习

Read more »

java的内存分配和回收

Posted on 12 Aug 15 | In java

java的内存分配和回收,主要都在堆中分配和回收,所以堆内存是本文讲解的重点。

Read more »

java泛型擦除

Posted on 14 May 15 | In java

对泛型擦除讲解非常不错的文章

java泛型的实现:类型擦除

前面已经说了,Java的泛型是伪泛型。为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉。正确理解泛型概念的首要前提是理解类型擦出(type erasure)。
Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型的时候加上的类型参数,会在编译器在编译的时候去掉。这个过程就称为类型擦除。
如在代码中定义的List和List等类型,在编译后都会编程List。JVM看到的只是List,而由泛型附加的类型信息对JVM来说是不可见的。Java编译器会在编译时尽可能的发现可能出错的地方,但是仍然无法避免在运行时刻出现类型转换异常的情况。类型擦除也是Java的泛型实现方法与C++模版机制实现方式之间的重要区别。
可以通过两个简单的例子,来证明java泛型的类型擦除。
例1:
1
2
3
4
5
6
7
8
9
public class Test4 {  
public static void main(String[] args) {
ArrayList<String> arrayList1=new ArrayList<String>();
arrayList1.add("abc");
ArrayList<Integer> arrayList2=new ArrayList<Integer>();
arrayList2.add(123);
System.out.println(arrayList1.getClass()==arrayList2.getClass());
}
}

Read more »

java类加载机制

Posted on 13 May 15 | In java

代码

先用代码开个头先

爷爷类

1
2
3
4
5
6
7
8
9
package com.sky.code.classloader;

public class Grandfather
{
static
{
System.out.println("Grandfather");
}
}

爸爸类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.sky.code.classloader;

public class Father extends Grandfather
{
static
{
System.out.println("Father init!");
}

public static int value = 123;

public Father()
{
System.out.println("init Father");
}
}

小孩类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.sky.code.classloader;

public class Child extends Father
{
static
{
System.out.println("Child init");
}

static int a;

public Child()
{
System.out.println("init Child");
}
}

main

1
2
3
4
5
6
7
8
9
package com.sky.code.classloader;

public class TestStatic
{
public static void main(String[] args)
{
System.out.println(Child.value);
}
}

执行结果

1
2
3
Grandfather
Father init!
123

为什么没有输出 Child init。解释一下:对于静态字段,只有直接定义这个字段的类才会被初始化,因此通过其子类来引用父类中定义的静态字段,只会触发父类的初始化而不会触发子类的初始化。
上面就牵涉到了虚拟机类加载机制。如果有兴趣,可以继续看下去。

Read more »
1…121314…17
ejunjsh

ejunjsh

code freak

164 posts
25 categories
154 tags
RSS
GitHub Weibo Email FB Page
0%
© 2014 — 2019 ejunjsh
Powered by Hexo
|
Theme — NexT.Gemini