随着互联网的日益壮大,网站的pv和uv成线性或者指数倍的增加.单服务器单数据库早已经不能满足实际需求.比如像盛大,淘宝这样的大型网络公司,更是如此.
集群,也就是让一组计算机服务器协同工作,达解决大并发,大数据量瓶颈问题.但是在群集中,session往往是一个比饺头疼的问题.一般情况下,session不可跨服务器而存在.下面给出几种session共享的解决方案.
第一种,客户端解决方法.把session加密后存在cookie中,每次session信息被写在客服端,然后经浏览器再次提交到服务器.即使两次请求在集群中的两台服务器上完成,也可以到达session共享.这种解决方法的优点是session信息不用存放在服务器端,大大减轻了服务器的压力.另一个优点是一个session中的两次或多次请求可以在一个群集中的多个服务器上完成,可以避免单端故障.目前,淘宝是采用的这种解决方案.
第二种,提供一个群集保存session共享信息.其他应用统统把自己的session信息存放到session群集服务器组.当应用系统需要session信息的时候直接到session群集服务器上读取.这种方式具有第一种方式的第二个优点.
第三种,配置负载 ......
1:用http协议上传更适合web编程的方便;传小于1M文件速度要比用ftp协议上传文件略快。安全性好;不像ftp那样;必须要启动一个ftp服务才行。
2:用ftp协议上传文件大于1M的文件速度比http快;文件越大;上传的速度就比http上传快的倍数越大。而且用java编写程序;ftp比http方便。好,废话少说;我们先搭建一个实例来理性认识一下用java编写ftp上传文件的技术。
首先在本机启动一个ftp服务,ftp的用户:"IUSR_ZJH"
密码:"123";随后在ftp主目录下建一个名为upftp的子目录;下面有4个文件就可启动这个例题了。
文件1:MainCtrl.java(servlet文件)内容如下:
import javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
javax.servlet.ServletException;
import java.io.FileInputStream;
import
java.io.IOException;
import sun.net.TelnetOutputStream;
import
sun.net.ftp.FtpClient;
public class MainCtrl extends HttpServlet
{
private FtpClient ftpClient;
public void
doPost(HttpServletRequest re ......
如何取的Java源代码文件中文件名和行号:)
在C/C++的程序,编译器提供了两个宏来支持取得源文件中的行号和文件名,这两个宏是__FILE__,__LINE__
你可以如下的方法打印行号和文件名
查看源代码
打印帮助
1 #include <stdio.h>
2 int main()
3 {
4 fprintf(stdout,"[%s:%d] Hello World!",__FILE__,__LINE__);
5 return 0;
6 }
但是在JAVA下没有这两个宏,那么我们如何来取得文件名和行号,翻阅JDK,我们找到StackTraceElement这个类。这个类可以从Throwable取得,另外也可以从Thread类取得,通过这些我写如下的一个打印行号的测试程序:
查看源代码
打印帮助
01 public class LineNo {
02 public static int getLineNumber() {
03 return Thread.currentThread().getStackTrace()[2].getLineNumber();
04 }
05
06 public static String getFileName() {
07&n ......
总共两个文件TaxTest.java与Tax.java
---------------------------------------------------------------------------------------
TaxTest.java
===========================================
import javax.swing.JOptionPane;
public class TestTax{
public static void main(String[] args){
String yearString = JOptionPane.showInputDialog("Enter the year ,etc 2001 or 2002");
int year = Integer.parseInt(yearString);
Tax change = new Tax();
change.setBrackets(year);
change.setRates(year);
int[][] brackets = change.getBrackets();
double[] rates = change.getRates();
double taxableIncome = change.getTaxableIncome();
double tax = 0;
System.out.println(year + " year Ameica duty of four persons");
System.out.println("-----------------------------------------------------");
System.out.println("taxableIncome SINGLE_FILER MARRIED_JOINTLY MARRIED_SEPARATELY HEAR_OF_HOUSHOLD");
System.out.println("----------------------------------------------- ......
最近开始在看java,对Applet这节比较感兴趣,改了改书上的代码,权当留个印记
import java.awt.*;
import java.applet.*;
public class HelloApplet extends Applet
{
Font f1 = new Font("Times New Roman", Font.PLAIN, 12);
Font f2 = new Font("宋体", Font.BOLD, 24);
Font f3 = new Font("黑体", Font.BOLD, 36);
Color c1 = new Color(255,0,0);
Color c2 = new Color(0,255,0);
Color c3 = new Color(0,0,255);
public void paint(Graphics g)
{
g.setFont(f1);
g.setColor(c1);
g.drawString("Hello, world!",20,30);
g.setFont(f2);
g.setColor(c2);
g.drawString("My name is Zhou Xiaojian",20,60);
g.setFont(f3);
g.setColor(c3);
g.drawString("This is my first Applet",20,120);
}
}
<HTML>
<TITLE>HelloApplet</TITLE>
<APPLET CODE="HelloApplet.class" WIDTH=600 HEIGHT=400>
</APPLET>
</HTML> ......
第一节 数据流的基本概念
理解数据流
流一般分为输入流(Input Stream)和输出流(Output Stream)两类,但这种划分并不是绝对的。比如一个文件,当向其中写数据时,它就是一个输出流;当从其中读取数据时,它就是一个输入流。当然,键盘只是一个数人流,而屏幕则只是一个输出流。
Java的标准数据流
标准输入输出指在字符方式下(如DOS),程序与系统进行交互的方式,分为三种:
标准输入studin,对象是键盘。
标准输出stdout,对象是屏幕。
标准错误输出stderr,对象也是屏幕。
例 8.1 从键盘输入字符。
本例用System.in.read(buffer)从键盘输入一行字符,存储在缓冲区buffer中,count保存实际读入的字节个数,再以整数和字符两种方式输出buffer中的值。Read方法在java.io包中,而且要抛出IOException异常。程序如下:
import java.io.*;
public class Input1
{
public static void main(String args[]) throws IOException
{
System.out.println("Input: ");
byte buffer[] = new byte[512]; //输入缓冲区
int count = System.in.read(buffer); //读取标准输入流
System.ou ......