服务器搭建参考

阿里云的服务器被入侵,系统卡死。重新搭建服务器,为了防止再出问题记录一下:

JDK安装:http://www.linuxidc.com/Linux/2014-03/98320.htm
Mysql安装:(1)http://www.linuxidc.com/Linux/2013-01/78716p3.htm
(2) http://blog.csdn.net/jiangnan_java/article/details/39255349
MySQL数据乱码的解决方法:http://blog.csdn.net/jiangnan_java/article/details/39255371
root密码重置: http://blog.csdn.net/jiangnan_java/article/details/39255323
tomcat: tomcat-users.xml中

1
2
3
4
<tomcat-users>
<role rolename="manager-gui"/>
<user username="jiangnan05" password="****" roles="manager-gui"/>
</tomcat-users>

Java 多线程<三> 线程栈模型与线程的变量&线程状态的转换(转载)

一、 线程栈模型与线程的变量

要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型。(线程调用start()方法之后会启动新的执行线程,他具有新的调用栈)
线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶。线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运行的时刻(实际上指代码运行到什么地方)。

下面通过一个示例性的代码说明线程(调用)栈的变化过程。

Java 多线程<二> 创建与启动(转载)

一、定义线程

1、扩展java.lang.Thread类。

此类中有个run()方法,应该注意其用法:

1
public void run()

如果该线程是使用独立的 Runnable 运行对象构造的,启动该线程则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。(怎么样算使用非独立的 Runnable 运行对象构造?

Java 多线程<一> 概念与原理(转载)

一、操作系统中线程和进程的概念

现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。

进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。

线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。“同时”执行是人的感觉,在线程之间实际上轮换执行。

Future、FutureTask、Callable

1. Future接口

JDK API中的说明

1
public interface Future <V>

Future表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 get 方法来获取结果,如有必要,计算完成前可以阻塞此方法。取消则由cancel方法来执行。还提供了其他方法,以确定任务是正常完成还是被取消了。一旦计算完成,就不能再取消计算。如果为了可取消性而使用 Future 但又不提供可用的结果,则可以声明 Future<?> 形式类型、并返回 null 作为底层任务的结果。

leetCode系列<一>

1. Two Sum

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.util.HashMap;

/**
*
* @ClassName: TwoSumTest
* @add date 2011-03-13
* @Description: Given an array of integers, find two numbers such that they add up to a specific target number.
* The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.
* You may assume that each input would have exactly one solution.
* Input: numbers={2, 7, 11, 15}, target=9
* Output: index1=1, index2=2
* @author jiangnan04
* @date 2014-10-22 下午08:44:15
*
*/

public class TwoSumTest {


public int[] twoSum(int[] numbers, int target) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
int n = numbers.length;
int[] result = new int[2];
for (int i = 0; i < numbers.length; i++)
{
if (map.containsKey(target - numbers[i]))
{
result[0] = map.get(target-numbers[i]) + 1;
result[1] = i + 1;
break;
}
else
{
map.put(numbers[i], i);
}
}
return result;
}
public static void main(String[] args) {
TwoSumTest t1 = new TwoSumTest();
//int []numbers={2, 7, 11, 15};
int []numbers={0, 4, 3, 0};
//int [] numbers={5,75,25};
int target=0;
int[] reslut = t1.twoSum(numbers,target);
System.out.println(reslut[0]+" "+ reslut[1]);

}

}

Thrift java 使用实例(修改版)

1. Thirft简介

根据Apache Thrift的官方站点的描述,Thrift是一个:
software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages.
安装Thrift比较的烦,但是在Windows下官方编译了一个thrift.exe,下载就行了。点击一闪即逝 ,木有关系。
拷贝到c:\windows目录下(或者任何目录下),然后就可以在dos环境下使用了

2. 写Thrift定义文件(.thrift file)

示例定义文件(add.thrift)