你引用的應(yīng)該是帶源碼的jar包,
為南雄等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及南雄網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站建設(shè)、南雄網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
想解鎖就用winrar解壓jar包,把解壓后的代碼復(fù)制到你的src目錄下才能改.
打jar包鎖定代碼的本意是避免代碼被改得不能用,你寫的代碼沒必要鎖定,非要鎖定的話自己打jar包,不過這樣你自己也改不了了
//看注釋!
class?TestLock
{
//非靜態(tài)方法,默認(rèn)鎖是this
synchronized?void?show1()
{
}
//非靜態(tài)方法,如果方法沒有鎖,里面同步代碼塊!
void?show2()
{
//這里可以填寫this,填什么都可以,只要是唯一,對(duì)象,類,都可以!
synchronized(this)
{
//這個(gè)同步代碼塊,如果不和上面方法進(jìn)行同鎖,填什么都可以,包括class文件都可以
//但是為了和上面方法同步的話,就必須this了,因?yàn)榉椒ǖ逆i此刻默認(rèn)就是this!
}
}
//靜態(tài)方法看這里!
static?synchronized?void?method1()
{
//注意這個(gè)同步方法的鎖,這會(huì)默認(rèn)就不在是this了,而是(TestLock.class)了;
}
//靜態(tài)同步代碼塊!
static?void?method2()
{
synchronized(TestLock.class)
{
//這里建議這么寫,該方法所屬的class文件,當(dāng)然,寫其他類的字節(jié)碼文件也是可以的!
//但是這里絕對(duì)不可以this
//如果和該上買呢靜態(tài)方法同步的話,必須TestLock.class
}
}
}
針對(duì)登錄功能,先在數(shù)據(jù)庫(kù)中新建一張關(guān)于登錄 的數(shù)據(jù)表,這表的作用就是用于記錄登錄錯(cuò)誤的次數(shù),如果有需求的話,還可以新建一個(gè)字段用于記錄登錄錯(cuò)誤時(shí)間,用于隔多少時(shí)間后自動(dòng)解鎖?有了這么一張表后,每次登錄前在這個(gè)表中先查詢一下是否有登錄錯(cuò)誤次數(shù)查過五次,有的話,則不做登錄校驗(yàn)了,直接界面提示用戶,若沒則進(jìn)行登錄校驗(yàn),通過進(jìn)入系統(tǒng),不通過記錄錯(cuò)誤次數(shù)
用While和一個(gè)計(jì)數(shù)變量,以下是偽代碼
定義計(jì)數(shù)變量并歸零
定義狀態(tài)變量并歸零
while(計(jì)數(shù)變量3且狀態(tài)變量為真)
{
輸入密碼
if(密碼正確)
{
狀態(tài)變量設(shè)定為真
}
else
{
計(jì)數(shù)變量+1
密碼框清空
}
}
if(狀態(tài)變量不為真) /說明前面的循環(huán)結(jié)束是因?yàn)檩斿e(cuò)了三次
{
提示:請(qǐng)管理員解鎖
【密碼輸入過程與上方用while循環(huán)類似】
}
else
{
(剩余操作)
}
實(shí)現(xiàn)UI界面嗎?
用一個(gè)VECTOR保存密碼,程序下次運(yùn)行不就又不可以了嗎?
package chen.util.algorithm;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;
public class Test2 {
public static void main(String[] args) throws IOException {
VectorString v = new VectorString(1);
v.add(0, "123"); // 設(shè)置出示密碼
// 利用控制臺(tái)來設(shè)置我們需要打印的值。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 程序要一直執(zhí)行。如果程序重新運(yùn)行就會(huì)把密碼更改為123。建議你吧密碼保存到本地文件或者數(shù)據(jù)庫(kù)。
while(true){
String mima;
mima = br.readLine();
System.out.println("更改密碼請(qǐng)輸入321");
// 用戶更改密碼
if(mima.equals("321")){
String mima1 = br.readLine();
v.add(0, mima1);
}
// 密碼正確后執(zhí)行
if(mima.equals(v.get(0))){
System.out.println("正確");
}
// 初始密碼 123
if(mima.equals(v.get(0))){
System.out.println("用戶使用初始化密碼進(jìn)入系統(tǒng)");
}
}
}
}
public Object getObject(String key,Object o) {
synchronized (map) {
if(map.get(key)==null) {
map.put(key,o)
}else {
return map.get(key);
}}// 格式?jīng)]法弄,自己弄一下
}
// demol0326 的回答意思使用MyTest的實(shí)例來加鎖,但是map是static的,無法鎖住
// MyTest的多個(gè)實(shí)例在多個(gè)線程中的請(qǐng)求
//禾木雙子 :如果A線程在getObject方法的第二行停止,此時(shí)B線程進(jìn)入getObject后執(zhí)行部分代碼, 此時(shí)B線程停止,A線程啟動(dòng),他不會(huì)執(zhí)行'多線程處理', 仍然有線程線程安全問題,(想像一下更多的線程進(jìn)入該方法的情況,num甚至?xí)玫截?fù)值)
網(wǎng)頁(yè)標(biāo)題:java自動(dòng)鎖代碼 java實(shí)現(xiàn)死鎖代碼
當(dāng)前URL:http://chinadenli.net/article42/hpeiec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、自適應(yīng)網(wǎng)站、搜索引擎優(yōu)化、云服務(wù)器、虛擬主機(jī)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)