用java程序來做限速,方向就有問題,如果大并發(fā)量,都要控制速度你程序早就掛了。應(yīng)該用應(yīng)用服務(wù)器(我想你用的tomcat吧)+http服務(wù)器控制,這里用apache就可以了。用apache來做限速才是正確的,用程序代碼幾乎是沒法限速,http 協(xié)議是無狀態(tài)的協(xié)議。
創(chuàng)新互聯(lián)建站是一家專業(yè)從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計(jì)公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,創(chuàng)新互聯(lián)建站依托強(qiáng)大的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!
當(dāng)然你一定要做, 那就是寫一定數(shù)量流,拿這個(gè)數(shù)據(jù)流的大小與你限速的平均量比,如果超過了就程序暫停一會(huì)。(這樣設(shè)計(jì)很不合理,但可以達(dá)到你的要求)
還有兩個(gè),快了
我沒加注釋,你有什么就直接問吧。
import?java.io.BufferedWriter;
import?java.io.File;
import?java.io.FileWriter;
import?java.io.IOException;
public?class?Cource?{
private?int?cNumber;
private?String?cName;
private?int?cUnit;
public?Cource(int?cNumber,?String?cName,?int?cUnit)?{
super();
this.cNumber?=?cNumber;
this.cName?=?cName;
this.cUnit?=?cUnit;
}
public?int?getcNumber()?{
return?cNumber;
}
public?void?setcNumber(int?cNumber)?{
this.cNumber?=?cNumber;
}
public?String?getcName()?{
return?cName;
}
public?void?setcName(String?cName)?{
this.cName?=?cName;
}
public?int?getcUnit()?{
return?cUnit;
}
public?void?setcUnit(int?cUnit)?{
this.cUnit?=?cUnit;
}
public?void?printCourceInfo(){
try?{
File?file=new?File("out.txt");
if?(!file.exists())?{
file.createNewFile();
}
BufferedWriter?a=new?BufferedWriter(new?FileWriter(file));
a.write("課程編號(hào),課程名,學(xué)分?jǐn)?shù)");
a.newLine();
a.write(this.cNumber+","+this.cName+","+this.cUnit);
a.close();
System.out.println("輸出成功");
}?catch?(IOException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
}
}
import?test.Cource;
public?class?Test?{
public?static?void?main(String[]?args)?{
Cource?test=new?Cource(121227,?"課程名為Java程序設(shè)計(jì)",?3);
test.printCourceInfo();
}
}
具體如下:
連連看的小源碼
package Lianliankan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class lianliankan implements ActionListener
{
JFrame mainFrame; //主面板
Container thisContainer;
JPanel centerPanel,southPanel,northPanel; //子面板
JButton diamondsButton[][] = new JButton[6][5];//游戲按鈕數(shù)組
JButton exitButton,resetButton,newlyButton; //退出,重列,重新開始按鈕
JLabel fractionLable=new JLabel("0"); //分?jǐn)?shù)標(biāo)簽
JButton firstButton,secondButton; //
分別記錄兩次62616964757a686964616fe59b9ee7ad9431333335326239被選中的按鈕
int grid[][] = new int[8][7];//儲(chǔ)存游戲按鈕位置
static boolean pressInformation=false; //判斷是否有按鈕被選中
int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戲按鈕的位置坐標(biāo)
int i,j,k,n;//消除方法控制
代碼(code)是程序員用開發(fā)工具所支持的語言寫出來的源文件,是一組由字符、符號(hào)或信號(hào)碼元以離散形式表示信息的明確的規(guī)則體系。
對(duì)于字符和Unicode數(shù)據(jù)的位模式的定義,此模式代表特定字母、數(shù)字或符號(hào)(例如 0x20 代表一個(gè)空格,而 0x74 代表字符“t”)。一些數(shù)據(jù)類型每個(gè)字符使用一個(gè)字節(jié);每個(gè)字節(jié)可以具有 256 個(gè)不同的位模式中的一個(gè)模式。
在計(jì)算機(jī)中,字符由不同的位模式(ON 或 OFF)表示。每個(gè)字節(jié)有 8 位,這 8 位可以有 256 種不同的 ON 和 OFF 組合模式。對(duì)于使用 1 個(gè)字節(jié)存儲(chǔ)每個(gè)字符的程序,通過給每個(gè)位模式指派字符可表示最多 256 個(gè)不同的字符。2 個(gè)字節(jié)有 16 位,這 16 位可以有 65,536 種唯一的 ON 和 OFF 組合模式。使用 2 個(gè)字節(jié)表示每個(gè)字符的程序可表示最多 65,536 個(gè)字符。
單字節(jié)代碼頁是字符定義,這些字符映射到每個(gè)字節(jié)可能有的 256 種位模式中的每一種。代碼頁定義大小寫字符、數(shù)字、符號(hào)以及 !、@、#、% 等特殊字符的位模式。每種歐洲語言(如德語和西班牙語)都有各自的單字節(jié)代碼頁。
雖然用于表示 A 到 Z 拉丁字母表字符的位模式在所有的代碼頁中都相同,但用于表示重音字符(如"é"和"á")的位模式在不同的代碼頁中卻不同。如果在運(yùn)行不同代碼頁的計(jì)算機(jī)間交換數(shù)據(jù),必須將所有字符數(shù)據(jù)由發(fā)送計(jì)算機(jī)的代碼頁轉(zhuǎn)換為接收計(jì)算機(jī)的代碼頁。如果源數(shù)據(jù)中的擴(kuò)展字符在接收計(jì)算機(jī)的代碼頁中未定義,那么數(shù)據(jù)將丟失。
如果某個(gè)數(shù)據(jù)庫為來自許多不同國家的客戶端提供服務(wù),則很難為該數(shù)據(jù)庫選擇這樣一種代碼頁,使其包括所有客戶端計(jì)算機(jī)所需的全部擴(kuò)展字符。而且,在代碼頁間不停地轉(zhuǎn)換需要花費(fèi)大量的處理時(shí)間。
最好不要用java寫秒殺器,因?yàn)槟憔退阌?httpclient 拿到的也是未經(jīng)過渲染的html頁面,很多頁面js都沒有加載,你根本不知道渲染之后的頁面長(zhǎng)什么樣子,你最好學(xué)學(xué)木魚的火車票搶票助手,他用的是 firefox 的插件 scriptish 來寫搶票腳本,其實(shí)搶票跟秒殺是一個(gè)原理的,我第一個(gè)秒的程序就是照著他的程序改的,用這個(gè)上手也比較容易,但是要求你對(duì)javascript比較熟悉,不過比用java實(shí)現(xiàn)靠譜多了
下載JMF(java media framework)
下面是一個(gè)例子
import?java.awt.BorderLayout;
import?java.awt.Component;
import?java.net.MalformedURLException;
import?java.net.URL;
import?javax.media.Manager;
import?javax.media.MediaLocator;
import?javax.media.Player;
import?javax.swing.JFileChooser;
import?javax.swing.JFrame;
public?class?MediaPlayer?extends?javax.swing.JPanel?{
public?MediaPlayer(URL?mediauUrl)?{???????
initComponents();
setLayout(new?BorderLayout());
try?{
Player?mediaPlayer?=?Manager.createRealizedPlayer(new?MediaLocator(mediauUrl));
Component?video?=?mediaPlayer.getVisualComponent();
Component?control?=?mediaPlayer.getControlPanelComponent();
if?(video?!=?null)?{
add(video,?BorderLayout.CENTER);??????????//?place?the?video?component?in?the?panel
}
add(control,?BorderLayout.SOUTH);????????????//?place?the?control?in??panel
mediaPlayer.start();
}?catch?(Exception?e)?{
}
}
private?void?initComponents()?{
javax.swing.GroupLayout?layout?=?new?javax.swing.GroupLayout(getTopLevelAncestor());
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,?720,?Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0,?480,?Short.MAX_VALUE)
);
}
public?static?void?main(String[]?args)?{
JFileChooser?fileChooser?=?new?JFileChooser();
fileChooser.showOpenDialog(null);
URL?mediaUrl?=?null;
try?{
mediaUrl?=?fileChooser.getSelectedFile().toURI().toURL();
}?catch?(MalformedURLException?ex)?{
System.out.println(ex);
}
JFrame?mediaTest?=?new?JFrame("Movie?Player");
mediaTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MediaPlayer?mediaPanel?=?new?MediaPlayer(mediaUrl);
mediaTest.add(mediaPanel);
mediaTest.setSize(800,?700);?//?set?the?size?of?the?player
mediaTest.setLocationRelativeTo(null);
mediaTest.setVisible(true);
}
}