重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你引用的应该是带源码的jar包,
为南雄等地区用户提供了全套网页设计制作服务,及南雄网站建设行业解决方案。主营业务为做网站、成都网站建设、南雄网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
想解锁就用winrar解压jar包,把解压后的代码复制到你的src目录下才能改.
打jar包锁定代码的本意是避免代码被改得不能用,你写的代码没必要锁定,非要锁定的话自己打jar包,不过这样你自己也改不了了
//看注释!
class TestLock
{
//非静态方法,默认锁是this
synchronized void show1()
{
}
//非静态方法,如果方法没有锁,里面同步代码块!
void show2()
{
//这里可以填写this,填什么都可以,只要是唯一,对象,类,都可以!
synchronized(this)
{
//这个同步代码块,如果不和上面方法进行同锁,填什么都可以,包括class文件都可以
//但是为了和上面方法同步的话,就必须this了,因为方法的锁此刻默认就是this!
}
}
//静态方法看这里!
static synchronized void method1()
{
//注意这个同步方法的锁,这会默认就不在是this了,而是(TestLock.class)了;
}
//静态同步代码块!
static void method2()
{
synchronized(TestLock.class)
{
//这里建议这么写,该方法所属的class文件,当然,写其他类的字节码文件也是可以的!
//但是这里绝对不可以this
//如果和该上买呢静态方法同步的话,必须TestLock.class
}
}
}
针对登录功能,先在数据库中新建一张关于登录 的数据表,这表的作用就是用于记录登录错误的次数,如果有需求的话,还可以新建一个字段用于记录登录错误时间,用于隔多少时间后自动解锁?有了这么一张表后,每次登录前在这个表中先查询一下是否有登录错误次数查过五次,有的话,则不做登录校验了,直接界面提示用户,若没则进行登录校验,通过进入系统,不通过记录错误次数
用While和一个计数变量,以下是伪代码
定义计数变量并归零
定义状态变量并归零
while(计数变量3且状态变量为真)
{
输入密码
if(密码正确)
{
状态变量设定为真
}
else
{
计数变量+1
密码框清空
}
}
if(状态变量不为真) /说明前面的循环结束是因为输错了三次
{
提示:请管理员解锁
【密码输入过程与上方用while循环类似】
}
else
{
(剩余操作)
}
实现UI界面吗?
用一个VECTOR保存密码,程序下次运行不就又不可以了吗?
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"); // 设置出示密码
// 利用控制台来设置我们需要打印的值。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 程序要一直执行。如果程序重新运行就会把密码更改为123。建议你吧密码保存到本地文件或者数据库。
while(true){
String mima;
mima = br.readLine();
System.out.println("更改密码请输入321");
// 用户更改密码
if(mima.equals("321")){
String mima1 = br.readLine();
v.add(0, mima1);
}
// 密码正确后执行
if(mima.equals(v.get(0))){
System.out.println("正确");
}
// 初始密码 123
if(mima.equals(v.get(0))){
System.out.println("用户使用初始化密码进入系统");
}
}
}
}
public Object getObject(String key,Object o) {
synchronized (map) {
if(map.get(key)==null) {
map.put(key,o)
}else {
return map.get(key);
}}// 格式没法弄,自己弄一下
}
// demol0326 的回答意思使用MyTest的实例来加锁,但是map是static的,无法锁住
// MyTest的多个实例在多个线程中的请求
//禾木双子 :如果A线程在getObject方法的第二行停止,此时B线程进入getObject后执行部分代码, 此时B线程停止,A线程启动,他不会执行'多线程处理', 仍然有线程线程安全问题,(想像一下更多的线程进入该方法的情况,num甚至会得到负值)