Page 55 of 61« First...5354555657...Last »

C、传统 C++

#include     //设定插入点
#include      //字符处理
#include      //定义错误码
#include      //浮点数处理
#include     //文件输入/输出
#include     //参数化输入/输出
#include    //数据流输入/输出
#include     //定义各种数据类型最值常量
#include     //定义本地化函数
#include      //定义数学函数
#include      //定义输入/输出函数
#include     //定义杂项函数及内存分配函数
#include     //字符串处理
#include    //基于数组的输入/输出
#include      //定义关于时间的函数
#include      //宽字符处理及输入/输出
#include     //宽字符分类

//////////////////////////////////////////////////////////////////////////

标准 C++ (同上的不再注释)

#include     //STL 通用算法
#include      //STL 位集容器
#include
#include
#include
#include
#include      //复数类
#include
#include
#include
#include
#include       //STL 双端队列容器
#include     //异常处理类
#include
#include    //STL 定义运算函数(代替运算符)
#include

#include       //STL 线性列表容器
#include
       //STL 映射容器
#include
#include        //基本输入/输出支持
#include      //输入/输出系统使用的前置声明
#include
#include      //基本输入流
#include      //基本输出流
#include       //STL 队列容器
#include        //STL 集合容器
#include      //基于字符串的流
#include       //STL 堆栈容器
#include     //标准异常类
#include     //底层输入/输出支持
#include      //字符串类
#include      //STL 通用模板类
#include      //STL 动态数组容器
#include
#include
using namespace std;

//////////////////////////////////////////////////////////////////////////

C99 增加

#include    //复数处理
#include     //浮点环境
#include   //整数格式转换
#include    //布尔环境
#include    //整型环境
#include    //通用类型数学宏



前几天帮研究室内的先辈编了一个VB程序。先辈的研究课题有一个工作台、员工的一个组合方案。要求输入初始值后能自动生成组合结果,也就是工作台和 员工的具体安排方法。也是属于最优化管理里面一个内容吧。自己以后也有可能用上,并且自己目前为止还没实际运用过VB的数组运算还有排列组合,通过这个编 程,对数组操作也实际运用了下。还想有时间作个矩阵的加减乘除算法吧。行列数相等的矩阵算法应该是很简单的,运用2个循环就可以解决了。现在问题是如 m*n和n*k之类的行列数目不相等矩阵的算法还不明白,过几天有空看下矩阵运算的书后再编吧。这东西我想以后自己的研究肯定会用的上的。其实对于编程, 我觉得关键是掌握算法,对于具体用什么语言来编,这都无所谓。因为语言只是算法的一个表现而已了。各个语言的区别只是在于语法的不同,他们实现的功能都是 一样的(就是你的目的)。具体内容就是一个2维数组的排列组合问题。
有这个一个2×5数组,如
1 1 1 1 0
1 0 0 1 1,初始值可任意输入,元素全部由0和1组成。上下行中可允许存在1和1,但不允许同时有0和0存在。求这个数组的排列组合。
条件,
a.上下2个元素的和必须为1,即上行为1,下行必须为0,或下行为1,上行必须为0。
b.初始值为0的列,不能变化,如初始值为
1 1 1 1 0
1 0 0 1 1,意味,第2,3,5列的位置不能变化,该数组的有效组合有4个。分别为:
1 1 1 1 0
0 0 0 0 1

1 1 1 0 0
0 0 0 1 1

0 1 1 1 0
1 0 0 0 1

0 1 1 0 0
1 0 0 1 1
换句话说,初始值中0的位置,决定了可产生有效组合的数量,有效组合数量=2^(5-0的个数)。如,初始值中有2个0,则可产生排列数组有8个,1个0的话,可产生16个,如果没有0的话,产生32个。

目的是就是求给定一个初始值,能产生多少个数组。
如给定初始值为:
11011
01111或
01111
10111之类的,求能产生多少个类似
11011
00100的组合,条件就是
a.上下2个元素的和必须为1,即上行为1,下行必须为0,或下行为1,上行必须为0。
b.初始值为0的列,不能变化,如初始值为
1 1 1 1 0
1 0 0 1 1,意味,第2,3,5列的位置不能变化,该数组的有效组合有4个。

虽然还是自己弄出来了。但是觉得算法不是很好。个人感觉这个不是计算机在算,是自己算好后,强加上去的。没法了,先凑合吧。
思路是,先判断列中1的位置,然后用几个变量记住。并获得总数。然后将原始数据(可能包括非法数据),格式成上1,下0,用一个数组存放。接着判断1的总数,然后在这个数组基础上输出可变组合。判断可变列的总数;
如果是0,无可变列,代表输入初始值有问题,
如果是1,代表有2个可变组合。用一个循环获得含1的列号,然后输出1,0和0,1,2个组合变化。
如果是2,代表有4个可变组合。用2个循环来解决,第一循环找第一个可变列1的列号,然后在此基础上进行第二个循环找第二个可变列1的列号,分别变化,输出可变数组。
如果是3,代表有8个可变组合。如果用循环,判断就太罗嗦复杂了。于是简单点,设置n1,n2,n3分别代表3个可变列的列号,然后设置一个循环从1-5,分别设置3个判断,当循环到n1,n2,n3的时候分别设置变化,输出可变数组。
如果是4,代表有16个可变组合。用上面的方法解决。
如果是5,则是全变化,32个可变组合。由于不存在不可变列。就分别对元素进行变化,输出。

具体代码:

Option Explicit
Dim Oarray(1, 4) As Integer ‘original array value
Dim Sarray() As String ‘set of combined array
Dim n As Integer ‘number of combinability array
Dim x As Integer ‘number of original array value 0
Dim z(4) As Integer ‘set of position of 0 in original array, use as hand

Private Sub cmdinput_Click()
Dim i As Integer
Dim j As Integer

For i = 0 To 4 ‘get original value
Oarray(0, i) = Val(Text1(i).Text)
Oarray(1, i) = Val(Text2(i).Text)
Next i

For i = 0 To 4 ‘set z()=1
z(i) = 1
Next i

x = 0
For i = 0 To 1
For j = 0 To 4
If Oarray(i, j) = 0 Then
z(j) = Oarray(i, j)
x = x + 1
End If
Next j
Next i

If x < 5 Then
n = 2 ^ (5 – x)
Label3.Caption = n ‘calculate number of combinability arrays
Else
n = 0
Label3.Caption = n
MsgBox (“no combinability arrays, input error. Please check data.”)
Exit Sub
End If

ReDim Sarray(n – 1) ‘redim Sarray
For i = 0 To n – 1
Sarray(i) = “”
Next i

End Sub

Private Sub cmdcalculate_Click()
Dim one As Integer
Dim i As Integer
Dim j As Integer
Dim m As Integer ‘Sarray(m)
Dim n1 As Integer
Dim n2 As Integer
Dim n3 As Integer
Dim n4 As Integer
Dim T1(1, 4) As Integer
Dim T2(1, 4) As Integer
Dim tz(4) As Integer

one = 5 – x

Call value2(z(), tz(), 4)
Call value1(Oarray(), T1(), 1, 4)
For i = 0 To 4
If tz(i) = 1 Then
T1(0, i) = 1
T1(1, i) = 0
End If
Next i
Call value1(T1(), T2(), 1, 4)
‘MsgBox (output1(1, 4, T2()))

Select Case one
Case 0
MsgBox (“no combinability arrays, input error. Please check data.”)

Case 1
For i = 0 To 4
If tz(i) = 1 Then
Sarray(0) = output1(1, 4, T2())
T2(0, i) = 0
T2(1, i) = 1
Sarray(1) = output1(1, 4, T2())
‘MsgBox (output3(1, Sarray()))
End If
Next i

Case 2
‘MsgBox (output2(4, tz()))
m = 0
Sarray(m) = output1(1, 4, T2())
m = m + 1
For i = 0 To 4
If tz(i) = 1 Then
n1 = i
For j = n1 + 1 To 4
If tz(j) = 1 Then
T2(0, j) = 0
T2(1, j) = 1
Sarray(m) = output1(1, 4, T2())
‘MsgBox (m & vbCrLf & output1(1, 4, T2()))
Call value1(T1(), T2(), 1, 4)
m = m + 1
End If
Next j

T2(0, i) = 0
T2(1, i) = 1
Sarray(m) = output1(1, 4, T2())
‘MsgBox (m & vbCrLf & output1(1, 4, T2()))
m = m + 1
End If
Next i

Case 3
n1 = 0
n2 = 0
n3 = 0

For i = 0 To 4
If tz(i) = 1 Then
If n1 = 0 Then
n1 = i + 1
Else
If n2 = 0 Then
n2 = i + 1
Else
n3 = i + 1
End If
End If
End If
Next i
n1 = n1 – 1
n2 = n2 – 1
n3 = n3 – 1

m = 0
Sarray(m) = output1(1, 4, T2())
m = m + 1

For i = 0 To 4
If i = n1 Then
Call value1(T1(), T2(), 1, 4)
T2(0, i) = 0
T2(1, i) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n2) = 0
T2(1, n2) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n3) = 0
T2(1, n3) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n2) = 1
T2(1, n2) = 0
Sarray(m) = output1(1, 4, T2())
m = m + 1
End If

If i = n2 Then
Call value1(T1(), T2(), 1, 4)
T2(0, i) = 0
T2(1, i) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n3) = 0
T2(1, n3) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1
End If

If i = n3 Then
Call value1(T1(), T2(), 1, 4)
T2(0, i) = 0
T2(1, i) = 1
Sarray(m) = output1(1, 4, T2())
End If
Next i

Case 4
n1 = 0
n2 = 0
n3 = 0
n4 = 0

For i = 0 To 4
If tz(i) = 1 Then
If n1 = 0 Then
n1 = i + 1
Else
If n2 = 0 Then
n2 = i + 1
Else
If n3 = 0 Then
n3 = i + 1
Else
n4 = i + 1
End If
End If
End If
End If
Next i
n1 = n1 – 1
n2 = n2 – 1
n3 = n3 – 1
n4 = n4 – 1
m = 0
Sarray(m) = output1(1, 4, T2())
m = m + 1

For i = 0 To 4
If i = n1 Then
Call value1(T1(), T2(), 1, 4)
T2(0, i) = 0
T2(1, i) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n2) = 0
T2(1, n2) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n3) = 0
T2(1, n3) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n4) = 0
T2(1, n4) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n3) = 1
T2(1, n3) = 0
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n2) = 1
T2(1, n2) = 0
T2(0, n3) = 0
T2(1, n3) = 1
T2(0, n4) = 1
T2(1, n4) = 0
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n4) = 0
T2(1, n4) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n3) = 1
T2(1, n3) = 0
Sarray(m) = output1(1, 4, T2())
m = m + 1
End If

If i = n2 Then
Call value1(T1(), T2(), 1, 4)
T2(0, i) = 0
T2(1, i) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n3) = 0
T2(1, n3) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n4) = 0
T2(1, n4) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n3) = 1
T2(1, n3) = 0
Sarray(m) = output1(1, 4, T2())
m = m + 1
End If

If i = n3 Then
Call value1(T1(), T2(), 1, 4)
T2(0, i) = 0
T2(0, i) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1

T2(0, n4) = 0
T2(1, n4) = 1
Sarray(m) = output1(1, 4, T2())
m = m + 1
End If

If i = n4 Then
Call value1(T1(), T2(), 1, 4)
T2(0, i) = 0
T2(1, i) = 1
Sarray(m) = output1(1, 4, T2())
End If
Next i
Case 5
Sarray(0) = “1,1,1,1,1″ & vbCrLf & “0,0,0,0,0″
Sarray(1) = “0,1,1,1,1″ & vbCrLf & “1,0,0,0,0″
Sarray(2) = “0,0,1,1,1″ & vbCrLf & “1,1,0,0,0″
Sarray(3) = “0,0,0,1,1″ & vbCrLf & “1,1,1,0,0″
Sarray(4) = “0,0,0,0,1″ & vbCrLf & “1,1,1,1,0″
Sarray(5) = “0,0,0,0,0″ & vbCrLf & “1,1,1,1,1″
Sarray(6) = “0,0,0,1,0″ & vbCrLf & “1,1,1,0,1″
Sarray(7) = “0,0,1,0,1″ & vbCrLf & “1,1,0,1,0″
Sarray(8) = “0,0,1,1,0″ & vbCrLf & “1,1,0,0,1″
Sarray(9) = “0,0,1,0,0″ & vbCrLf & “1,1,0,1,1″
Sarray(10) = “0,1,0,1,1″ & vbCrLf & “1,0,1,0,0″
Sarray(11) = “0,1,0,0,1″ & vbCrLf & “1,0,1,1,0″
Sarray(12) = “0,1,0,0,0″ & vbCrLf & “1,0,1,1,1″
Sarray(13) = “0,1,0,1,0″ & vbCrLf & “1,0,1,0,1″
Sarray(14) = “0,1,0,1,1″ & vbCrLf & “1,0,1,0,0″

Sarray(15) = “0,1,1,1,0″ & vbCrLf & “1,0,0,0,1″
Sarray(16) = “0,1,1,0,1″ & vbCrLf & “1,0,0,1,0″

Sarray(17) = “1,0,1,1,1″ & vbCrLf & “0,1,0,0,0″
Sarray(18) = “1,0,0,1,1″ & vbCrLf & “0,1,1,0,0″
Sarray(19) = “1,0,0,0,1″ & vbCrLf & “0,1,1,1,0″
Sarray(20) = “1,0,0,0,0″ & vbCrLf & “0,1,1,1,1″
Sarray(21) = “1,0,0,1,0″ & vbCrLf & “0,1,1,0,1″
Sarray(22) = “1,0,1,0,1″ & vbCrLf & “0,1,0,1,0″
Sarray(23) = “1,0,1,0,0″ & vbCrLf & “0,1,0,1,1″
Sarray(24) = “1,0,1,1,0″ & vbCrLf & “0,1,0,0,1″

Sarray(25) = “1,1,0,1,1″ & vbCrLf & “0,0,1,0,0″
Sarray(26) = “1,1,0,0,1″ & vbCrLf & “0,0,1,1,0″
Sarray(27) = “1,1,0,0,0″ & vbCrLf & “0,0,1,1,1″
Sarray(28) = “1,1,0,1,0″ & vbCrLf & “0,0,1,0,1″

Sarray(29) = “1,1,1,0,1″ & vbCrLf & “0,0,0,1,0″
Sarray(30) = “1,1,1,0,0″ & vbCrLf & “0,0,0,1,1″

Sarray(31) = “1,1,1,1,0″ & vbCrLf & “0,0,0,0,1″

End Select
End Sub
Private Sub cmddisplay_Click()
Dim b As String
b = output3(n – 1, Sarray())
MsgBox (b)
End Sub

Private Sub cmdtofile_Click()
Dim i As Integer
Dim a, b
Open App.Path & “\output.txt” For Output As 1#
For i = 0 To n – 1 Step 1
a = “No.” & i + 1 & vbCrLf & Sarray(i) & vbCrLf
Print #1, a
Next i
b = “Total output ” & n & ” arrays”
MsgBox b
Close #1
End Sub

Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 49 Then
MsgBox (“input 0 or 1″)
KeyAscii = 0
End If
End Sub

Private Sub Text2_KeyPress(Index As Integer, KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 49 Then
MsgBox (“input 0 or 1″)
KeyAscii = 0
End If
End Sub

Private Function output1(i As Integer, j As Integer, a() As Integer) As String
Dim b As String ‘ output i*j matric to string
Dim m, n As Integer
For m = 0 To i
For n = 0 To j
If m > 0 And n = 0 Then
b = b & vbCrLf & a(m, n)
Else
If b = “” Then
b = a(m, n)
Else
b = b & “,” & a(m, n)
End If
End If
Next n
Next m
output1 = b
End Function
Private Function output2(i As Integer, a() As Integer) As String
Dim b As String ‘output array(i) to string
Dim m As Integer
For m = 0 To i
If m = 0 Then
b = a(m)
Else
b = b & “,” & a(m)
End If
Next m
output2 = b
End Function

Private Function output3(i As Integer, a() As String) As String
Dim b As String ‘output array(i) to string
Dim m As Integer
For m = 0 To i
If m = 0 Then
b = a(m)
Else
b = b & vbCrLf & vbCrLf & a(m)
End If
Next m
output3 = b
End Function

Private Function value1(a() As Integer, b() As Integer, i As Integer, j As Integer) As Integer
Dim m, n As Integer
For m = 0 To i
For n = 0 To j
b(m, n) = a(m, n)
Next n
Next m
End Function

Private Function value2(a() As Integer, b() As Integer, i As Integer) As Integer
Dim m As Integer
For m = 0 To i
b(m) = a(m)
Next m
End Function

开头万能公式
1. 开头万能公式一:名人名言
有人问了,“我没有记住名言,怎么办?尤其是英语名言?”,很好办:编!
原理:我们看到的东西很多都是创造出来的,包括我们欣赏的文章也是,所以尽管编,但是一定要听起来很有道理呦!而且没准将来我们就是名人呢!对吧?
经典句型:
A proberb says, “ You are only young once.” (适用于已记住的名言)
It goes without saying that we cannot be young forever. (适用于自编名言)
更多经典句型:
As everyone knows, No one can deny that…
2. 开头万能公式二:数字统计
原理:要想更有说服力,就应该用实际的数字来说明。
原则上在议论文当中十不应该出现虚假数字的,可是在考试的时候哪管那三七二十一,但编无妨,只要我有东西写就万事大吉了。所以不妨试用下面的句型:
According to a recent survey, about 78.9% of the college students wanted to further their study after their graduation.
看起来这个数字文邹邹的,其实都是编造出来的,下面随便几个题目我们都可以这样编造:
Honesty:根据最近的一项统计调查显示,大学生向老师请假的理由当中78%都是假的。
Travel by Bike:根据最近的一项统计调查显示,85%的人在近距离旅行的时候首选的交通工具是自行车。
Youth:根据最近的一项统计调查显示,在某个大学,学生的课余时间的70%都是在休闲娱乐。
Five-day Work Week Better than Six-day Work?:根据最近的一项统计调查显示,98%的人同意每周五天工作日。
更多句型:
A recent statistics shows that …

结尾万能公式
1. 结尾万能公式一:如此结论
说完了,毕竟要归纳一番,相信各位都有这样的经历,领导长篇大论,到最后终于冒出个“总而言之”之类的话,我们马上停止开小差,等待领导说结束语。也就是说,开头很好,也必然要有一个精彩的结尾,让读者眼前一亮,这样,你就可以拿高分了!比如下面的例子:
Obviously(此为过渡短语), we can draw the conclusion that good manners arise from politeness and respect for others.
如果读者很难“显而见之”,但说无妨,就当读者的眼光太浅罢了!
更多过渡短语:
to sum up, in conclusion, in brief, on account of this, thus
更多句型:
Thus, it can be concluded that…, Therefore, we can find that…
2. 结尾万能公式二:如此建议
如果说“如此结论”是结尾最没用的废话,那么“如此建议”应该是最有价值的废话了,因为这里虽然也是废话,但是却用了一个很经典的虚拟语气的句型。拽!
Obviously, it is high time that we took some measures to solve the problem.
这里的虚拟语气用得很经典,因为考官本来经常考这个句型,而如果我们自己写出来,你说考官会怎么想呢?
更多句型:
Accordingly, I recommend that some measures be taken.
Consequently, to solve the problem, some measures should be taken.

写作的“七项基本原则”
一、 长短句原则
工作还得一张一驰呢,老让读者读长句,累死人!写一个短小精辟的句子,相反,却可以起到画龙点睛的作用。而且如果我们把短句放在段首或者段末,也可以揭示主题:
As a creature, I eat; as a man, I read. Although one action is to meet the primary need of my body and the other is to satisfy the intellectual need of mind, they are in a way quite similar.
如此可见,长短句结合,抑扬顿挫,岂不爽哉?牢记!
强烈建议:在文章第一段(开头)用一长一短,且先长后短;在文章主体部分,要先用一个短句解释主要意思,然后在阐述几个要点的时候采用先短后长的句群形式,定会让主体部分妙笔生辉!文章结尾一般用一长一短就可以了。
二、 主题句原则
国有其君,家有其主,文章也要有其主。否则会给人造成“群龙无首”之感!相信各位读过一些破烂文学,故意把主体隐藏在文章之内,结果造成我们稀里糊涂!不知所云!所以奉劝各位一定要写一个主题句,放在文章的开头(保险型)或者结尾,让读者一目了然,必会平安无事!
特别提示:隐藏主体句可是要冒险的!
To begin with, you must work hard at your lessons and be fully prepared before the exam(主题句). Without sufficient preparation, you can hardly expect to answer all the questions correctly.
三、 一二三原则
领导讲话总是第一部分、第一点、第二点、第三点、第二部分、第一点… 如此罗嗦。可毕竟还是条理清楚。考官们看文章也必然要通过这些关键性的“标签”来判定你的文章是否结构清楚,条理自然。破解方法很简单,只要把下面任何一组的词汇加入到你的几个要点前就清楚了。
1)first, second, third, last(不推荐,原因:俗)
2)firstly, secondly, thirdly, finally(不推荐,原因:俗)
3)the first, the second, the third, the last(不推荐,原因:俗)
4)in the first place, in the second place, in the third place, lastly(不推荐,原因:俗)
5)to begin with, then, furthermore, finally(强烈推荐)
6)to start with, next, in addition, finally(强烈推荐)
7)first and foremost, besides, last but not least(强烈推荐)
8)most important of all, moreover, finally
9)on the one hand, on the other hand(适用于两点的情况)
10)for one thing, for another thing(适用于两点的情况)
建议:不仅仅在写作中注意,平时说话的时候也应该条理清楚!
四、 短语优先原则
写作时,尤其是在考试时,如果使用短语,有两个好处:其一、用短语会使文章增加亮点,如果老师们看到你的文章太简单,看不到一个自己不认识的短语,必然 会看你低一等。相反,如果发现亮点—精彩的短语,那么你的文章定会得高分了。其二、关键时刻思维短路,只有凑字数,怎么办?用短语是一个办法!比如:
I cannot bear it.
可以用短语表达:I cannot put up with it.
I want it.
可以用短语表达:I am looking forward to it.
这样字数明显增加,表达也更准确。
五、 多实少虚原则
原因很简单,写文章还是应该写一些实际的东西,不要空话连篇。这就要求一定要多用实词,少用虚词。我这里所说的虚词就是指那些比较大的词。比如我们说一 个很好的时候,不应该之说nice这样空洞的词,应该使用一些诸如generous, humorous, interesting, smart, gentle, warm-hearted, hospital 之类的形象词。再比如:
走出房间,general的词是:walk out of the room
但是小偷走出房间应该说:slip out of the room
小姐走出房间应该说:sail out of the room
小孩走出房间应该说:dance out of the room
老人走出房间应该说:stagger out of the room
所以多用实词,少用虚词,文章将会大放异彩!
六、 多变句式原则
1)加法(串联)
都希望写下很长的句子,像个老外似的,可就是怕写错,怎么办,最保险的写长句的方法就是这些,可以在任何句子之间加and, 但最好是前后的句子又先后关系或者并列关系。比如说:
I enjor music and he is fond of playing guitar.
如果是二者并列的,我们可以用一个超级句式:
Not only the fur coat is soft, but it is also warm.
其它的短语可以用:
besides, furthermore, likewise, moreover
2)转折(拐弯抹角)
批评某人缺点的时候,我们总习惯先拐弯抹角说说他的优点,然后转入正题,再说缺点,这种方式虽然阴险了点,可毕竟还比较容易让人接受。所以呢,我们说话的时候,只要在要点之前先来点废话,注意二者之间用个专这次就够了。
The car was quite old, yet it was in excellent condition.
The coat was thin, but it was warm.
更多的短语:
despite that, still, however, nevertheless, in spite of, despite, notwithstanding
3)因果(so, so, so)
昨天在街上我看到了一个女孩,然后我主动搭讪,然后我们去咖啡厅,然后我们认识了,然后我们成为了朋友…可见,讲故事的时候我们总要追求先后顺序,先什么,后什么,所以然后这个词就变得很常见了。其实这个词表示的是先后或因果关系!
The snow began to fall, so we went home.
更多短语:
then, therefore, consequently, accordingly, hence, as a result, for this reason, so that
4)失衡句(头重脚轻,或者头轻脚重)
有些人脑袋大,身体小,或者有些人脑袋小,身体大,虽然我们不希望长成这个样子,可如果真的是这样了,也就必然会吸引别人的注意力。文章中如果出现这样的句子,就更会让考官看到你的句子与众不同。其实就是主语从句,表语从句,宾语从句的变形。
举例:This is what I can do.
Whether he can go with us or not is not sure.
同样主语、宾语、表语可以改成如下的复杂成分:
When to go, Why he goes away…
5)附加(多此一举)
如果有了老婆,总会遇到这样的情况,当你再讲某个人的时候,她会插一句说,我昨天见过他;或者说,就是某某某,如果把老婆的话插入到我们的话里面,那就是定语从句和同位语从句或者是插入语。
The man whom you met yesterday is a friend of mine.
I don’t enjoy that book you are reading.
Mr liu, our oral English teacher, is easy-going.
其实很简单,同位语–要解释的东西删除后不影响整个句子的构成;定语从句—借用之前的关键词并且用其重新组成一个句子插入其中,但是whom or that 关键词必须要紧跟在先行词之前。
6)排比(排山倒海句)
文学作品中最吸引人的地方莫过于此,如果非要让你的文章更加精彩的话,那么我希望你引用一个个的排比句,一个个得对偶句,一个个的不定式,一个个地词,一个个的短语,如此表达将会使文章有排山倒海之势!
Whether your tastes are modern or traditional, sophisticated or simple, there is plenty in London for you.
Nowadays, energy can be obtained through various sources such as oil, coal, natural gas, solar heat, the wind and ocean tides.
We have got to study hard, to enlarge our scope of knowledge, to realize our potentials and to pay for our life. (气势恢宏)
要想写出如此气势恢宏的句子非用排比不可!
七、 挑战极限原则
既然是挑战极限,必然是比较难的,但是并非不可攀!
原理:在学生的文章中,很少发现诸如独立主格的句子,其实也很简单,只要花上5分钟的时间看看就可以领会,它就是分词的一种特殊形式,分词要求主语一致,而独立主格则不然。比如:
The weather being fine, a large number of people went to climb the Western Hills.
Africa is the second largest continent, its size being about three times that of China.
如果您可一些出这样的句子,不得高分才怪!

文章主体段落三大杀手锏
一、举实例
思维短路,举实例!提出一个观点,举实例!提出一个方案,举实例!而且者也是我们揭示一个观点最好的方式,任何情况下,只要我们无法继续文章,不管三七二十一,尽管举例子!
In order to attract more customers, advertisers have adopted every possible stimulative factor in making ads, such as sound, light, colours, cartoon films and human performance. For instance, to advertise a certain food, advertisers will ask an actor or actress to sit at a table and devour the seemingly delicious food while they fime him or her.
更多句型:
To take … as an example, One example is…, Another example is…, for example
二、做比较
方法:写完一个要点,比较与之相似的;又写完一个要点,再比较与之相反的;
世界上没有同样的指纹,没有相同的树叶,文章亦同,只有通过比较,你才会发现二者的相同点(through comparison)和不同点(through contrast)。下面是一些短语:
相似的比较:
in comparison, likewise, similarly, in the same manner
相反的比较:
on the other hand, conversely, whereas, while, instead, nevertheless, in contrast, on the contrary, compared with …, …
三、换言之
没话说了,可以换一句话再说,让你的文章在多一些字,或者文邹邹地说,是让读者更充分的理解你的观点。
实际就是重复重复再重复!下面的句子实际上就三个字 I love you!
I am enthusiastic about you. That is to say, I love you.
I am wild about you. In other words, I have fallen in love with you.
或者上面我们举过的例子:
I cannot bear it.
可以用短语表达:I cannot put up with it.
因此可以这样说:I cannot bear it. That is to say, I cannot put up with it or I am fed up with it.
更多短语:
in more difficult language, in simpler words, put it more simply

网上看到的一篇介绍java的文章,很不错。很适合像我这样的初学者看的。本想从VB转.net的,后来想想干脆还是学java吧了,就因为它是free software。通过这次的information experiment里面的B2C课题。对于java+tomcat+database已经有了点概念了。这学期还学了不少东西,从simulation 课程中学了点C++,还好有了这点C++基础,学java入门起来就快多了。

Java学习从入门到精通

一、 JDK (Java Development Kit)
JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握 JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发 的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。

1、 JDK的下载和安装
JDK又叫做J2SE (Java2 SDK Standard Edition),可以从Sun的Java网站上下载到,http://java.sun.com/j2se/downloads.html ;,JDK当前最新的版本是J2SDK1.4.2,建议下载该版本的JDK,下载页面在这里:http: //java.sun.com/j2se/1.4.2/download.html。

下载好的JDK是一个可执行安装程序,默认安装 完毕后会在C:\Program Files\Java\目录下安装一套JRE(供浏览器来使用),在C:\j2sdk1.4.2下安装一套JDK(也包括一套JRE)。然后我们需要在环 境变量PATH的最前面增加java的路径C:\j2sdk1.4.2\bin。这样JDK就安装好了。

2、 JDK的命令工具
JDK的最重要命令行工具:
java: 启动JVM执行class
javac: Java编译器
jar: Java打包工具
javadoc: Java文档生成器
这些命令行必须要非常非常熟悉,对于每个参数都要很精通才行。对于这些命令的学习,JDK Documentation上有详细的文档。

二、 JDK Documentation

Documentation 在JDK的下载页面也有下载连接,建议同时下载Documentation。Documentation是最最重要的编程手册,涵盖了整个Java所有方 面的内容的描述。可以这样说,学习Java编程,大部分时间都是花在看这个Documentation上面的。我是随身携带的,写Java代码的时候,随 时查看,须臾不离手。

三、 应用服务器(App Server)

App Server是运行Java企业组件的平台,构成了应用软件的主要运行环境。当前主流的App Server是BEA公司的Weblogic Server和IBM公司的Websphere以及免费的Jboss,选择其中一个进行学习就可以了,个人推荐Weblogic,因为它的体系结构更加干 净,开发和部署更加方便,是Java企业软件开发人员首选的开发平台。下面简要介绍几种常用的App Server:

1、 Tomcat
Tomcat 严格意义上并不是一个真正的App Server,它只是一个可以支持运行Serlvet/JSP的Web容器,不过Tomcat也扩展了一些App Server的功能,如JNDI,数据库连接池,用户事务处理等等。Tomcat被非常广泛的应用在中小规模的Java Web应用中,因此本文做一点下载、安装和配置Tomcat的介绍:

Tomcat是Apache组织下Jakarta项目下的一个子 项目,它的主网站是:http://jakarta.apache.org/tomcat/ ;,Tomcat最新版本是Tomcat4.1.27,软件下载的连接是:http: //www.apache.org/dist/jakarta/tomcat-4/binaries/ ;。

下载Tomcat既可以直接下载zip包,也可以下载exe安装包(个人建议zip更干净些),不管哪种情况,下载完毕安装好以后(zip直接解压缩就可以了)。需要设置两个环境变量:

JAVA_HOME=C:\j2sdk1.4.2
CATALINA_HOME=D:\tomcat4 (你的Tomcat安装目录)

这 样就安装好了,启动Tomcat运行CATALINA_HOME\bin\startup.bat,关闭Tomcat运行shutdown.bat脚本。 Tomcat启动以后,默认使用8080端口,因此可以用浏览器访问http://localhost:8080来测试Tomcat是否正常启动。

Tomcat提供了两个Web界面的管理工具,URL分别是:
http://localhost:8080/admin/index.jsp ;
http://localhost:8080/manager/html ;
在启用这两个管理工具之前,先需要手工配置一下管理员用户和口令。用一个文本工具打开CATALINA_HOME\conf\tomcat-users.xml这个文件,加入如下几行:



这样用户“robbin”就具备了超级管理员权限。重新启动Tomcat以后,你就可以使用该用户来登陆如上的两个管理工具,通过Web方式进行Tomcat的配置和管理了。

2、 BEA Weblogic
Weblogic 可以到BEA的网站上免费注册之后下载到最新的Weblogic8.1企业版,License可以免费使用1年时间,其实这已经完全足够了。 Weblogic的下载连接:http://commerce.bea.com/index.jsp,Weblogic的在线文档:http: //edocs.bea.com/ ;。

3、 IBM Webshpere
Websphere同样可以下载到免费的试用版 本,到IBM的developerWorks网站可以看到Websphere试用产品的下载和相关的Websphere的资料, developerWorks中文网站的连接是:http://www-900.ibm.com/developerWorks/cn/wsdd/ ;,Websphere的下载连接:http: //www7b.software.ibm.com/wsdd/downloads/WASsupport.html ;。

4、 Jboss
Jboss 是免费开源的App Server,可以免费的从Jboss网站下载:http://www.jboss.org/index.html,然而Jboss的文档是不免费,需要 花钱购买,所以为我们学习Jboss设置了一定的障碍。在Jdon上有几篇不错的Jboss配置文档,可以用来参考:http: //www.jdon.com/idea.html ;

四、 Java应用的运行环境

Java的应用可以简单分为以下几个方面:

1、 Java的桌面应用
桌面应用一般仅仅需要JRE的支持就足够了。

2、 Java Web应用
Java的Web应用至少需要安装JDK和一个web容器(例如Tomcat),以及一个多用户数据库,Web应用至少分为三层:
Browser层:浏览器显示用户页面
Web层:运行Servlet/JSP
DB层:后端数据库,向Java程序提供数据访问服务

3、 Java企业级应用
企业级应用比较复杂,可以扩展到n层,最简单情况会分为4层:
Browser层:浏览器显示用户页面
Client层:Java客户端图形程序(或者嵌入式设备的程序)直接和Web层或者EJB层交互
Web层:运行Servlet/JSP
EJB层:运行EJB,完成业务逻辑运算
DB层:后端数据库,向Java程序提供数据访问服务

4、 Java嵌入式应用
Java嵌入式应用是一个方兴未艾的领域,从事嵌入式开发,需要从Sun下载J2ME开发包,J2ME包含了嵌入式设备专用虚拟机KVM,和普通的JDK中包含的JVM有所不同。另外还需要到特定的嵌入式厂商那里下载模拟器。

Java Learning Path(二)、书籍篇

学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握。需要有一个循序渐进的阅读过程。我推荐Oreilly出版的Java系列书籍。

在 这里我只想补充一点看法,很多人学习Java是从《Thinking in Java》这本书入手的,但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物。《Thinking in Java》并不是在完整的介绍Java的整个体系,而是一种跳跃式的写作方法,是一种类似tips的方法来对Java很多知识点进行了深入的分析和解释。

对于初学者来说,最好是找一本Java入门的书籍,但是比较完整的循序的介绍Java的语法,面向对象的特性,核心类库等等,在看这本书 的同时,可以同步来看《Thinking in Java》,来加深对Java的理解和原理的运用,同时又可以完整的了解Java的整个体系。

对 于Java的入门书籍,蔡学镛推荐的是Oreilly的《Exploring Java, 2nd Edition》 或者《Java in a Nutshell,2nd Edition(针对C++背景)》,我并没有看过这两本书。其实我觉得电子工业出版社的《Java 2编程详解》或者《Java 2从入门到精通》就很不错。

在所有的Java书籍当中,其实最最有用的,并不是O′reilly的 Java Serials,真正最最有用处是JDK的Documentation!几乎你想获得的所有的知识在Documentation里面全部都有,其中最主要 的部分当然是Java基础类库的API文档,是按照package来组织的,对于每一个class都有详细的解释,它的继承关系,是否实现了某个接口,通 常用在哪些场合,还可以查到它所有的public的属性和方法,每个属性的解释,意义,每个方法的用途,调用的参数,参数的意义,返回值的类型,以及方法 可能抛出的异常等等。可以这样来说,所有关于Java编程方面的书籍其实都不过是在用比较通俗易懂的语言,和良好的组织方式来介绍 Documentation里面的某个package里面包含的一些类的用法而已。所以万变不离其宗,如果你有足够的能力来直接通过 Documentation来学习Java的类库,那么基本上就不需要看其他的书籍了。除此之外,Documentation也是编程必备的手册,我的桌 面上有三个Documentation的快捷方式,分别是J2SDK1.4.1的Documentation,Servlet2.3的 Documentation和J2SDKEE1.3.1的Documentation。有了这个三个Documentation,什么其他的书籍都不需要 了。

对于Java Web 编程来说,最核心的是要熟悉和掌握HTTP协议,这个就和Java无关了,在熟悉HTTP协议之后,就需要熟悉Java的实现HTTP协议的类库,也就是 Servlet API,所以最重要的东西就是Servlet API。当然对于初学者而言,直接通过Servlet API来学习Web编程有很大的难度,我推荐O′reilly的《Java Server Pages 》这本书来学习Web 编程。

EJB 的书籍当中,《Enterprise JavaBeans, 2nd Edition》是一本很不错的书, EJB的学习门槛是比较高,入门很难,但是这本书完全降低了学习的难度,特别重要的一点是,EJB的学习需要结合一种App Server的具体实现,所以在学习EJB的同时,必须同步的学习某种App Server,而这本书相关的出了三本书,分别是Weblogic6.1,Websphere4.0和JBoss3.0上面部署书中例子的实做。真是既有 理论,又有实践。在学习EJB的同时,可以边看边做,EJB的学习会变得很轻松。

但是这本书也有一个问题,就是版本比较旧,主要讲 EJB1.1规范和部分EJB2.0的规范。而Ed Roman写的《Mastering EJB 2.0》这本书完全是根据EJB2.0规范写的,深入浅出,覆盖了EJB编程的各个方面,并且还有很多编程经验tips,也是学习EJB非常推荐的书籍之 一。

如果是结合Weblogic来学习J2EE的话,《J2EE应用与BEA Weblogic Server》绝对是首选读物,虽然是讲述的Weblogic6.0,仍然值得购买,这本书是BEA官方推荐的教材,作者也是BEA公司的工程师。现在中 文版已经随处可见了。这本书结合Weblogic介绍了J2EE各个方面的技术在Weblogic平台上的开发和部署,实践指导意义非常强。

在 掌握了Java平台基础知识和J2EE方面的知识以后,更进一步的是学习如何运用OO的方法进行软件的设计,那么就一定要学习“设计模式”。Sun公司出 版了一本《J2EE核心模式》,是每个开发Java企业平台软件的架构师必备的书籍。这本书全面的介绍了J2EE体系架构的各种设计模式,是设计师的必读 书籍。

Java Learning Path(三)过程篇

每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法。因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基本上完全是自己摸索出来的。我也不知道这种方法是否是比较好的方法,只能给大家提供一点参考了。

学 习Java的第一步是安装好JDK,写一个Hello World,? 其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞 清楚JRE的ClassLoader是如何加载Class的;另一个问题是package和import问题,如何来寻找类的路径问题。把这两个问题摸索 清楚了,就扫除了学习Java和使用JDK的最大障碍。推荐看一下王森的《Java深度历险》,对这两个问题进行了深入的探讨。

第二 步是学习Java的语法。Java的语法是类C++的,基本上主流的编程语言不是类C,就是类C++的,没有什么新东西,所以语法的学习,大概就是半天的 时间足够了。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么 要用,怎么用,这可能需要有人来指点一下,我当初是完全自己琢磨出来的,花了很久的时间。不过后来我看到《Thinking in Java》这本书上面是讲了这些概念的。

第三步是学习Java的面向对象的编程语言的特性的地方。比如继承,构造器,抽象类,接口, 方法的多态,重载,覆盖,Java的异常处理机制。对于一个没有面向对象语言背景的人来说,我觉得这个过程需要花很长很长时间,因为学习Java之前没有 C++的经验,只有C的经验,我是大概花了一个月左右吧,才彻底把这些概念都搞清楚,把书上面的例子反复的揣摩,修改,尝试,把那几章内容反复的看过来, 看过去,看了不下5遍,才彻底领悟了。不过我想如果有C++经验的话,应该一两天时间足够了。那么在这个过程中,可以多看看《Thinking in Java》这本书,对面向对象的讲解非常透彻。可惜的是我学习的时候,并没有看到这本书,所以自己花了大量的时间,通过自己的尝试和揣摩来学会的。

第四步就是开始熟悉Java的类库。Java的基础类库其实就是JDK安装目录下面jre\lib\rt.jar这个包。学习基础类库就是学习rt.jar。基础类库里面的类非常非常多。据说有3000多个,我没有统计过。但是真正对于我们来说最核心的只有4个,分别是
java.lang.*;
java.io.*;
java.util.*;
java.sql.*;

这四个包的学习,每个包的学习都可以写成一本厚厚的教材,而O′reilly也确实是这样做的。我觉得如果时间比较紧,是不可能通过读四本书来学习。我觉得比较好的学习方法是这样的:
首先要通读整个package的框架,了解整个package的class,interface,exception的构成,最好是能够找到介绍整个包框架的文章。这些专门介绍包的书籍的前几章应该就是这些总体的框架内容介绍。

对 包整体框架的把握并不是要熟悉每个类的用法,记住它有哪些属性,方法。想记也记不住的。而是要知道包有哪些方面的类构成的,这些类的用途是什么,最核心的 几个类分别是完成什么功能的。我在给人培训的时候一般是一次课讲一个包,所以不可能详细的介绍每个类的用法,但是我反复强调,我给你们讲这些包的不是要告 诉你们类的方法是怎么调用的,也不要求你们记住类的方法调用,而是要你们了解,Java给我们提供了哪些类,每个类是用在什么场合,当我遇到问题的时候, 我知道哪个类,或者哪几个类的组合可以解决我的问题,That′all!,当我们具体写程序的时候,只要你知道该用哪个类来完成你的工作就足够了。编码的 时候,具体的方法调用,是边写代码,边查Documentation,所有的东西都在Documentation里面,不要求你一定记住,实际你也记不住 3000多个类的总共将近10万个方法调用。所以对每个包的总体框架的把握就变得极为重要。

第五步,通过上面的学习,如果学的比较扎 实的话,就打好了Java的基础了,剩下要做的工作是扫清Documentation里面除了上面4个包之外的其他一些比较有用处的类。相信进展到这一 步,Java的自学能力已经被培养出来了,可以到了直接学习Documentation的水平了。除了要做GUI编程之外,JDK里面其他会有用处的包是 这些:
java.text.*;
java.net.*;
javax.naming.*;
这些包里面真正用的比较多的类其实很少,只有几个,所以不需要花很多时间。

第六步,Java Web 编程
Web 编程的核心是HTTP协议,HTTP协议和Java无关,如果不熟悉HTTP协议的话,虽然也可以学好Servlet/JSP编程,但是达不到举一反三, 一通百通的境界。所以HTTP协议的学习是必备的。如果熟悉了HTTP协议的话,又有了Java编程的良好的基础,学习Servlet/JSP简直易如反 掌,我学习Servlet/JSP就用了不到一周的时间,然后就开始用JSP来做项目了。

在Servlet/JSP的学习中,重头仍 然是Servlet Documentation。Servlet API最常用的类很少,花比较少的时间就可以掌握了。把这些类都看一遍,多写几个例子试试。Servlet/JSP编程本质就是在反复调用这些类来通过 HTTP协议在Web Server和Brower之间交谈。另外对JSP,还需要熟悉几个常用JSP的标记,具体的写法记不住的话,临时查就是了。

此 外Java Web编程学习的重点要放在Web Application的设计模式上,如何进行业务逻辑的分析,并且进行合理的设计,按照MVC设计模式的要求,运用Servlet和JSP分别完成不同 的逻辑层,掌握如何在Servlet和JSP之间进行流程的控制和数据的共享,以及Web Application应该如何配置和部署。

第七步,J2EE编程
以上的学习过程如果是比较顺利的话,进行到这一步,难度又陡然提高。因为上面的知识内容都是只涉及一个方面,而像EJB,JMS,JTA等核心的J2EE规范往往是几种Java技术的综合运用的结晶,所以掌握起来难度比较大。

首 先一定要学习好JNDI,JNDI是App Server定位服务器资源(EJB组件,Datasouce,JMS)查找方法,如果对JNDI不熟悉的话,EJB,JMS这些东西几乎学不下去。 JNDI其实就是javax.naming.*这个包,运用起来很简单。难点在于服务器资源文件的配置。对于服务器资源文件的配置,就需要看看专门的文档 规范了,比如web.xml的写法,ejb-jar.xml的写法等等。针对每种不同的App Server,还有自己的服务资源配置文件,也是需要熟悉的。

然后可以学习JTA,主要是要理解JTA对于事务的控制的方法,以及该 在什么场合使用JTA。这里可以简单的举个例子,我们知道一般情况可以对于一个数据库连接进行事务控制(conn.setAutoCommit (false),….,conn.commit()),做为一个原子操作,但是假设我的业务需求是要把对两个不同数据库的操作做为一个原子操作,你能 做的到吗?这时候只能用JTA了。假设操作过程是先往A数据库插一条记录,然后删除B数据库另一个记录,我们自己写代码是控制不了把整个操作做为一个原子 操作的。用JTA的话,由App Server来完成控制。

在学习EJB之前要学习对象序列化和RMI,RMI是EJB的基础。接着学习JMS和EJB,对于EJB来说,最关键是要理解EJB是如何通过RMI来实现对远端对象的调用的,以及在什么情况下要用到EJB。

在 学习完EJB,JMS这些东西之后,你可能会意识到要急不可待学习两个领域的知识,一个是UML,另一个是Design Pattern。Java企业软件的设计非常重视框架(Framework)的设计,一个好的软件框架是软件开发成功的必要条件。在这个时候,应该开始把 学习的重点放在设计模式和框架的学习上,通过学习和实际的编程经验来掌握EJB的设计模式和J2EE的核心模式。

J2EE规范里面,除了EJB,JMS,JTA,Servlet/JSP,JDBC之外还有很多很多的企业技术,这里不一一进行介绍了。

另 外还有一个最新领域Web Services。Web Services也完全没有任何新东西,它像是一种黏合剂,可以把不同的服务统一起来提供一个统一的调用接口,作为使用者来说,我只要获得服务提供者给我 的WSDL(对服务的描述),就够了,我完全不知道服务器提供者提供的服务究竟是EJB组件,还是.Net组件,还是什么CORBA组件,还是其他的什么 实现,我也不需要知道。Web Services最伟大的地方就在于通过统一的服务提供方式和调用方式,实现了整个Internet服务的共享,是一个非常令人激动的技术领域。Web Services好像目前还没有什么很好的书籍,但是可以通过在网络上面查资料的方式来学习。

Java Learning Path(四) 方法篇

Java 作为一门编程语言,最好的学习方法就是写代码。当你学习一个类以后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然后再多调用几个类的方 法,看看运行结果,这样非常直观的把类给学会了,而且记忆非常深刻。然后不应该满足把代码调通,你应该想想看如果我不这样写,换个方式,再试试行不行。记 得哪个高人说过学习编程就是个破坏的过程,把书上的例子,自己学习Documentation编写的例子在运行通过以后,不断的尝试着用不同的方法实现, 不断的尝试破坏代码的结构,看看它会有什么结果。通过这样的方式,你会很彻底的很精通的掌握Java。

举个例子,我们都编过Hello World

public class HelloWorld {
public static void main(String[] args) {
System.out.println(“Hello World”);
}
}

很 多初学者不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写?包括我刚学习Java的时候也有这样的疑问。想知道答案吗?很简单,你把main改个名字运行一下,看看报什么错误,然后根 据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个 String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成 别的名字,看看运行结果如何。

我当初学习Java的时候就是这样做的,把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。

此 外,我对于staic,public,private,Exception,try{ }catch {}finally{}等等等等一开始都不是很懂,都是把参考书上面的例子运行成功,然后就开始破坏它,不断的根据自己心里面的疑问来重新改写程序,看看 能不能运行,运行出来是个什么样子,是否可以得到预期的结果。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识彻底学通 了。有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编程的掌握是及其深刻的。

其中特别值得一提的是JDK有一个非常棒的调试功能,-verbose
java ?Cverbose
javac ?Cverbose 以及其它很多JDK工具都有这个选项
-verbose 可以显示在命令执行的过程中,JVM都依次加载哪里Class,通过这些宝贵的调试信息,可以帮助我们分析出JVM在执行的过程中都干了些什么。

另 外,自己在学习过程中,写的很多的这种破坏例程,应该有意识的分门别类的保存下来,在工作中积累的典型例程也应该定期整理,日积月累,自己就有了一个代码 库了。遇到类似的问题,到代码库里面 Copy & Paste ,Search & Replace,就好了,极大提高了开发速度。最理想的情况是把一些通用的例程自己再抽象一层,形成一个通用的类库,封装好。那么可复用性就更强了。

所 以我觉得其实不是特别需要例程的,自己写的破坏例程就是最好的例子,如果你实在对自己写的代码不放心的话,我强烈推荐你看看JDK基础类库的Java源代 码。在JDK安装目录下面会有一个src.zip,解开来就可以完整的看到整个JDK基础类库,也就是rt.jar的Java源代码,你可以参考一下 Sun是怎么写Java程序的,规范是什么样子的。我自己在学习Java的类库的时候,当有些地方理解的不是很清楚的时候,或者想更加清晰的理解运作的细 节的时候,往往会打开相应的类的源代码,通过看源代码,所有的问题都会一扫而空。

Java Learning Path(五)资源篇

1、 http://java.sun.com/ ;(英文)
Sun的Java网站,是一个应该经常去看的地方。不用多说。

2、 http://www-900.ibm.com/developerWorks/cn/ ;
IBM的developerWorks网站,英语好的直接去英文主站点看。这里不但是一个极好的面向对象的分析设计网站,也是Web Services,Java,Linux极好的网站。强烈推荐!!!

3、 http://www.java-cn.com/ ;(中文)
JAVA 中文站,目前国内资料最全、会员最多的JAVA技术网站,人气极高。有《JAVA电子书库》、《JAVA视频库》(国内唯一)、《JAVA技术文摘库》、 《JAVA源代码库》、《JAVA工具库》、《招聘求职广场》等主要栏目,还有一些专家栏目。目前会员有5万多,VIP会员近1000人。无论是菜鸟还是 老鸟,都能在此网站中找到自己所需要的东东!! 最强烈推荐!!!!!!

4、 http://www.javaworld.com/ ;(英文)
关于Java很多新技术的讨论和新闻。想多了解Java的方方面面的应用,这里比较好。

5、 http://dev2dev.bea.com.cn/index.jsp ;
BEA的开发者园地,BEA作为最重要的App Server厂商,有很多独到的技术,在Weblogic上做开发的朋友不容错过。

6、 http://www.huihoo.com/ ;
灰狐动力网站,一个专业的中间件网站,虽然不是专业的Java网站,但是在J2EE企业应用技术方面有深厚的造诣。

7、 http://www.theserverside.com/home/ ;(英文)
TheServerSide是一个著名的专门面向Java Server端应用的网站。

8、 http://www.javaresearch.org/ ;
Java研究组织,有很多优秀的Java方面的文章和教程,特别是在JDO方面的文章比较丰富。

9、 http://www.cnjsp.org/ ;
JSP技术网站,有相当多的Java方面的文章和资源。

10、 http://www.jdon.com/ ;
Jdon论坛,是一个个人性质的中文J2EE专业技术论坛,在众多的Java的中文论坛中,Jdon一个是技术含量非常高,帖子质量非常好的论坛。

11、 http://sourceforge.net/ ;
SourgeForge是一个开放源代码软件的大本营,其中也有非常非常丰富的Java的开放源代码的著名的软件。

一、~~~ the + ~ est + 名词 + (that) + 主词 + have ever + seen (
known/heard/had/read, etc)
~~~ the most + 形容词 + 名词 + (that) + 主词 + have ever + seen (
known/heard/had/read, etc)
例句:Helen is the most beautiful girl that I have ever seen.
海伦是我所看过最美丽的女孩。
Mr. Chang is the kindest teacher that I have ever had.
张老师是我曾经遇到最仁慈的教师。

二、Nothing is + ~~~ er than to + V
Nothing is + more + 形容词 + than to + V
例句:Nothing is more important than to receive education.
没有比接受教育更重要的事。

三、~~~ cannot emphasize the importance of ~~~ too much.
(再怎么强调…的重要性也不为过。)
例句:We cannot emphasize the importance of protecting our eyes too
much.
我们再怎么强调保护眼睛的重要性也不为过。
四、There is no denying that + S + V …(不可否认的…)
例句:There is no denying that the qualities of our living have gone
from bad to worse.
不可否认的,我们的生活品质已经每况愈下。
五、It is universally acknowledged that + 句子~~ (全世界都知道…)
例句:It is universally acknowledged that trees are indispensable to
us.
全世界都知道树木对我们是不可或缺的。
六、There is no doubt that + 句子~~ (毫无疑问的…)
例句:There is no doubt that our educational system leaves something
to be desired.
毫无疑问的我们的教育制度令人不满意。
七、An advantage of ~~~ is that + 句子 (…的优点是…)
例句:An advantage of using the solar energy is that it won‘t create
(produce) any pollution.
使用太阳能的优点是它不会制造任何污染。
八、The reason why + 句子 ~~~ is that + 句子 (…的原因是…)
例句:The reason why we have to grow trees is that they can provide
us with fresh air.
The reason why we have to grow trees is that they can supply fresh
air for us.
我们必须种树的原因是它们能供应我们新鲜的空气。
九、So + 形容词 + be + 主词 + that + 句子 (如此…以致于…)
例句:So precious is time that we can‘t afford to waste it.
时间是如此珍贵,我们经不起浪费它。
十、Adj + as + Subject(主词)+ be, S + V~~~ (虽然…)
例句:Rich as our country is, the qualities of our living are by no
means satisfactory.
{by no means = in no way = on no account 一点也不}
虽然我们的国家富有,我们的生活品质绝对令人不满意。
十一、The + ~er + S + V, ~~~ the + ~er + S + V ~~~
The + more + Adj + S + V, ~~~ the + more + Adj + S + V
~~~(愈…愈…)
例句:The harder you work, the more progress you make.
你愈努力,你愈进步。
The more books we read, the more learned we become.
我们书读愈多,我们愈有学问。
十二、By +Ving, ~~ can ~~ (借着…,..能够..)
例句:By taking exercise, we can always stay healthy.
借着做运动,我们能够始终保持健康。
十三、~~~ enable + Object(受词)+ to + V (..使..能够..)
例句:Listening to music enable us to feel relaxed.
听音乐使我们能够感觉轻松。
十四、On no account can we + V ~~~ (我们绝对不能…)
例句:On no account can we ignore the value of knowledge.
我们绝对不能忽略知识的价值。
十五、It is time + S + 过去式 (该是…的时候了)
例句:It is time the authorities concerned took proper steps to solve
the traffic problems.
该是有关当局采取适当的措施来解决交通问题的时候了。
十六、Those who ~~~ (…的人…)
例句:Those who violate traffic regulations should be punished.
违反交通规定的人应该受处罚。
十七、There is no one but ~~~ (没有人不…)
例句:There is no one but longs to go to college.
没有人不渴望上大学。
十八、be + forced/compelled/obliged + to + V (不得不…)
例句:Since the examination is around the corner, I am compelled to
give up doing sports.
既然考试迫在眉睫,我不得不放弃做运动。
十九、It is conceivable that + 句子 (可想而知的)
It is obvious that + 句子 (明显的)
It is apparent that + 句子 (显然的)
例句:It is conceivable that knowledge plays an important role in our
life.
可想而知,知识在我们的一生中扮演一个重要的角色。
二十、That is the reason why ~~~ (那就是…的原因)
例句:Summer is sultry. That is the reason why I don‘t like it.
夏天很燠热。那就是我不喜欢它的原因。
二十一、For the past + 时间,S + 现在完成式…(过去…年来,…一直…)
例句:For the past two years, I have been busy preparing for the
examination.
过去两年来,我一直忙着准备考试。
二十二、Since + S + 过去式,S + 现在完成式。
例句:Since he went to senior high school, he has worked very hard.
自从他上高中,他一直很用功。
二十三、It pays to + V ~~~ (…是值得的。)
例句:It pays to help others.
帮助别人是值得的。
二十四、be based on (以…为基础)
例句:The progress of thee society is based on harmony.
社会的进步是以和谐为基础的。
二十五、Spare no effort to + V (不遗余力的)
We should spare no effort to beautify our environment.
我们应该不遗余力的美化我们的环境。
二十六、bring home to + 人 + 事 (让…明白…事)
例句:We should bring home to people the value of working hard.
我们应该让人们明白努力的价值。
二十七、be closely related to ~~ (与…息息相关)
例句:Taking exercise is closely related to health.
做运动与健康息息相关。
二十八、Get into the habit of + Ving
= make it a rule to + V (养成…的习惯)
We should get into the habit of keeping good hours.
我们应该养成早睡早起的习惯。
二十九、Due to/Owing to/Thanks to + N/Ving, ~~~ (因为…)
例句:Thanks to his encouragement, I finally realized my dream.
因为他的鼓励,我终于实现我的梦想。
三十、What a + Adj + N + S + V!= How + Adj + a + N + V!(多么…!)
例句:What an important thing it is to keep our promise!
How important a thing it is to keep our promise!
遵守诺言是多么重要的事!
三十一、Leave much to be desired (令人不满意)
例句:The condition of our traffic leaves much to be desired.
我们的交通状况令人不满意。
三十二、Have a great influence on ~~~ (对…有很大的影响)
例句:Smoking has a great influence on our health.
抽烟对我们的健康有很大的影响。
三十三、do good to (对…有益),do harm to (对…有害)
例句:Reading does good to our mind.读书对心灵有益。
Overwork does harm to health.工作过度对健康有害。
三十四、Pose a great threat to ~~ (对…造成一大威胁)
例句:Pollution poses a great threat to our existence.
污染对我们的生存造成一大威胁。
三十五、do one‘s utmost to + V = do one‘s best (尽全力去…)
例句:We should do our utmost to achieve our goal in life.
我们应尽全力去达成我们的人生目标。

由于这学期上情报试验,有一个课题是用java和javascript做一个B2C网站。内容也就是客户通过网站购买东西,用的软件是java,服务器用 tomcat,数据库是sql数据库。正好自己没学过java,正好趁这个机会学下java。于是就想在自己的电脑上配置一个实验环境。下载 java1.4.2_09,tomcat5.0和Mysql5.0数据库软件。还有mysql数据库的操作软件sqlyog4.0。这些都是免费软件。在 网上看了些文章,本以为应该是很容易配置的,没想弄来弄去也花了不少功夫。最后还是给自己配置好了。回头看看从对java,mysql,tomcat是一 头雾水到配置成功,自觉的是虽然花了不少精力,但最终是自己掌握了,想想也蛮开心的。

1.安装java
http://java.sun.com/j2se/1.4.2/download.html下 载J2SE v 1.4.2_09 SDK。下载后双击安装。注意java的安装目录(如c:\j2sdk1.4.2_09)。然后右单击我的电脑打开属性–高级–环境变量,在系统变量 下面,看有没有PATH变量,如果没有,新建一个。name:path,value:c:\j2sdk1.4.2_09\bin。如果path变量已存 在,直接双击将c:\j2sdk1.4.2_09\bin值加入。再建立一个变量JAVA_HOME,value:c:\j2sdk1.4.2_09,建 立CLASSPATH变量,value:E:\j2sdk1.4.2_09\lib;E:\j2sdk1.4.2_09\lib\tools.jar。

2.安装tomcat
http://tomcat.apache.org/download-55.cgi#5.0.28下载tomcat5.0.28。双击安装,安装过程中会提示要求输入java虚拟机目录,如果你已经正确配置好java后,软件会自动找到。
启动和关闭tomcat。通过程序菜单上来启动tomcat,启动后,屏幕右下角有个tomcat的连接图标,图标中心点为绿色代表tomcat已启动。 右单击图标,可关闭tomcat服务和配置服务。或者通过右单击我的电脑,打开管理–服务,选择tomcat,来启动和关闭tomcat。
在系统变量CLASSPATH里面增加值:C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib

3.安装mysql
http://dev.mysql.com/downloads/下 载mysql5.0。双击安装。按照默认进行安装即可。安装后可在安装目录下的bin目录下winmysqladmin.exe文件打开数据库服务。这 时,屏幕右下角有个像红绿灯的图标,绿灯代表数据库正在运行,黄灯代表数据库暂停运行,红灯代表数据库停止运行或无法启动。如果出现数据库无法启动的情 况,(我曾多次碰到),大多都是my.ini文件内容配置不当造成的。在windows文件夹下找到这个my.ini文件,手动更改配置。注意更改 my.ini最好找到文件直接更改,不要在winmysqladmin.exe里面更改(好像更改无效)。my.ini文件内容如下:
#This File was made using the WinMySQLAdmin 1.4 Tool
#2005/12/25 1:50:05

#Uncomment or Add only the keys that you know how works.
#Read the MySQL Manual for instructions

[mysqld]
basedir=C:/mysql
#bind-address=192.168.0.2
datadir=C:/mysql/data
#language=C:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=16M
[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-nt.exe
user=123
password=123

这里面basedir=C:/mysql和datadir=C:/mysql/data一定要有。

4.安装sqlyog
该软件是mysql数据库操作软件,如果你对mysql数据库很熟悉,可不安装。到http://www.webyog.com/sqlyog/download_sqlyogent.html下载软件。安装后,双击运行,建立个新的连接。等等,按默认操作就可以了。接着你可以看到数据库内容,通过该软件可以很直观进行数据库建立,表格建立查看更改之类操作。

5.配置tomcat和mysql的连接。
http://dev.mysql.com/downloads/connector/j/3.1.html下 载MySQL Connector/J3.1.12,8M多,下载后,解压,将解压目录下的mysql-connector-java-3.1.12-bin.jar文 件拷贝到C:\Program Files\Apache Software Foundation\Tomcat 5.0\common\lib。这点很重要,如果没有拷贝该文件,在tomcat上运行连接数据库会出错。

至此,操作全部完成。将你所要运行的网站内容拷贝到C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps目录下。如果你的配置没错的话,一切应该是OK了。这些是我自己总结的配置方法,网上也有很多类似的教程。本配置方法在winxp -sp1日文,win-sp2中英文系统下,运行成功。
另外补充下,
1.用java和Mysql连接的时候,最好要注意尽量不要用空帐号密码,最好建立个帐号。然后用这个帐号连接。具体原因,我也不清楚,只是在java网站提供的documents里面是这么说的。
2.mysql 的classname是com.mysql.jdbc.Driver,非org.gjt.mm.mysql.Driver,这点请注意, org.gjt.mm.mysql.Driver是旧版mysql的classname。url:jdbc:mysql: //localhost/***,***是数据库名称。

Page 55 of 61« First...5354555657...Last »