最近开始用GitHub了

之前用过SVN,最近想换换口味,就用GitHub了。

安装参照博客园某博友的方法,不过后面有那么一步就是在bash环境下进行命令。我很是郁闷 …

Win下面装好GitHub后出现一个GitBash的程序,双击开后是PowerShell,不是参考文章中的Bash。

后来发现GitHubGUI中需要设置,Bash默认程序为GitBash才可以使用GitBash。

而且最新版本的GitHub For Win中可以直接使用GitHub GUI来设置user.name 和 user.email。

嗯,Eclipse下面的EGit不支持保存用户名和密码还有Patch,我是不是哪里设置错了呢?

写给大学生的程式技能Cheatsheets

昨天去参加HappyDeisgner Mini #5听到Caesar Chi在讲他跑校园传道(提倡OpenSource)的故事,Caesar Chi说他会这么做是受到Jserv南下传道的启发。

为什么要深入校园传道。我想其中最大的问题是:大家都已经深刻发现了「校园的资讯教育」与「现行职场」、甚至与「国际技术圈」上的巨大​​差距。已经大到一个相当难以扭转的状态。其实,任何技术,在写下来制成纸本教材并且搬到课堂的那一刻,就过时了。只是现在速度更快到,当你今年写下来准备开课,明年这套技艺就已经有可能过时了。真的很难期待,从传统学校传授知识的过程中去介入什么。

所以唯有提倡学生尽量跳脱只能在学校学习的思考框架。在线上学习( Online School )。多多参与接触开源社群。

But, How?

Continue reading

Java-Servlet中get请求和post请求的区别

在学习JavaWeb最初的开始阶段,大家都会遇到HttpServlet中的doGet和doPost方法。前两天看《Head First Servlets & JSP》看到其中讲关于Servlet中get请求和post请求的区别,现总结如下:

1:请求数据的大小不同。

因为get请求的数据是要追加到URL中,而URL的数据量一般不能超过2K,所以用get请求的方法对数据的大小有限制。而post请求方法是把数据放在消息体中,所以理论上对数据量没有限制。(但是实际操作中也不能能太大)

2:安全性不一样

因为get请求的数据是追加在URL中,外部用户能很方便的看到,从这个角度上来讲不安全。而post方法因为是讲请求放在消息体中,不会直接在URL中显示所以从这个角度来说数据会比较安全。

3:书签建立

get请求可以建立书签;post请求则不能。例如:假设你有一个页面允许用户指定搜索规则。用户可能一个星期之后才回来,想要得到原来的数据,但此时服务器上已经有新的数据了。

4:方法的使用

get用于得到某些东西,只是简单的获取,不会对服务器做任何的改变。post则用户发送数据来进行处理,可以修改服务器上的数据。

5:请求是否幂等

get请求是幂等的,它只是要得到一些东西,不会修改服务器上的内容。它能执行多次,而且不会产生任何不好的副作用。而post不是幂等的,post体中的提交的数据可能用于不可逆转的事务。所以从这个角度上来看的话要慎重使用doPost()功能。

若表单中未指出method=“POST”,就会默认为HTTPGET请求。即缺省状态是调用get请求。

 

在学习JavaWeb最初的开始阶段,大家都会遇到HttpServlet中的doGet和doPost方法。
(1)doGet方法:主要是处理Http中的Get请求
(2)doPost方法:主要是处理Http中的Post请求
那么Get请求和Post请求到底有什么样的区别
(1)get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串
例如,http://localhost:8888/javaweb/getServlet?name=123
(2)post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传
什么时候使用doGet和doPost方法
1.通过表单提交到的servlet,看form的method是get还是post  
2.通过链接<a  href…>访问的servlet,doGet  
3.直接在ie地址栏中键入的servlet地址,doGet

菠萝菠萝蜜 – 坑爹的作业从大一到大三一直TM是这个

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Calculator implements ActionListener{

TextField CalculatorTextField = new TextField(30);
public static Frame Calculator = new Frame(“Calculator Test Windows”);
String[] NumButtonArrays = new String[12];
Panel PanelTop = new Panel();
Panel PanelButtom = new Panel();
Panel PanelOperation = new Panel();
GridLayout NumButtonLayout = new GridLayout(4,4);
GridLayout OperButtonLayout = new GridLayout(1,4);
Button[] NumButtonObjArrays = new Button[12];
Button[] OperObjButtonArrays = new Button[4];
String pre = “0”;
String tmp = “0”;
String next = “0”;

public Calculator()
{

PanelButtom.setLayout(NumButtonLayout);
PanelOperation.setLayout(OperButtonLayout);

PanelTop.add(CalculatorTextField);

for(int i = 0;i < 10;i ++)
{
NumButtonArrays[i] =String.valueOf(i);
}

NumButtonArrays[10] = “.”;
NumButtonArrays[11] = “=”;

String[] OperButtonArrays = {“+”,”-“,”*”,”/”};

for(int i = 0;i < 12;i ++)
{
NumButtonObjArrays[i] = new Button(NumButtonArrays[i]);
PanelButtom.add(NumButtonObjArrays[i]);
NumButtonObjArrays[i].addActionListener(this);
}

for(int i = 0;i < 4;i ++)
{
OperObjButtonArrays[i] = new Button(OperButtonArrays[i]);
PanelOperation.add(OperObjButtonArrays[i]);
OperObjButtonArrays[i].addActionListener(this);
}

Calculator.add(PanelTop,BorderLayout.NORTH);
Calculator.add(PanelButtom,BorderLayout.CENTER);
Calculator.add(PanelOperation,BorderLayout.SOUTH);

Calculator.pack();
Calculator.setVisible(true);

}

public void actionPerformed(ActionEvent e) {

String cmd = e.getActionCommand();
if(cmd.equals(“.”))
{
if(“.”.indexOf(pre) == -1)
pre = pre + “.”;
else pre = “Fuck You”;
}
else
{
if(cmd.equals(“+”) || cmd.equals(“-“) || cmd.equals(“*”) || cmd.equals(“/”))
{
next = pre;
OperatorAchtion(cmd);
pre = cmd;
next = cmd;
}
else
{
if(cmd.equals(“=”))
{
OperatorAchtion(next);
pre = tmp;
next = cmd;
}
else
{
if(pre.equals(“+”) || pre.equals(“-“) || pre.equals(“*”) || pre.equals(“/”) || pre.equals(“0”))
{
pre = cmd;
}
else pre = pre + cmd;
}
}
}

this.CalculatorTextField.setText(pre);
}

public void OperatorAchtion(String Operator)
{
if(“+”.equals(Operator))
tmp = String.valueOf(Double.parseDouble(tmp) + Double.parseDouble(pre));
else if(“-“.equals(Operator))
tmp = String.valueOf(Double.parseDouble(tmp) – Double.parseDouble(pre));
else if(“*”.equals(Operator))
tmp = String.valueOf(Double.parseDouble(tmp) * Double.parseDouble(pre));
else if(“/”.equals(Operator))
tmp = String.valueOf(Double.parseDouble(tmp) / Double.parseDouble(pre));
else;

}

public static void main(String args[]){
new Calculator();
}
}