python初认识


python安装

www.python.org下载python

安装python,安装时后续add path
Eclipse中安装python环境:点击help,点击install software,add 名称pyDev,链接,python4.5.5是JDK7支持的最高版本, pydev安装跟jdk版本、eclipse版本要一致,否则安装完成后,在preference中不能找到pydev.

阅读全文 »


Linux Vsftpd


b— layout: post category: “linux” title: “linux下安装vsftpd” tags: [Linux] — 安装vsftpd

yum -y install vsftpd  

在根目录创建ftpfile

mkdir ftpfile

在ftpfile目录下创建ftp用户

useradd ftpuser -d /ftpfile/ -s /sbin/nologin

阅读全文 »


IDEA配置及使用


通过project structure配置JDK

配置maven

阅读全文 »


线程锁-生产消费


关于方法上加锁

  • 当一个线程访问一个类中的同步静态方法时,获取的但是CLASS类本身锁,其他线程不能访问该类的其他同步静态方法
  • 当一个线程访问同一个实例中同步方法时,获取的但是CLASS类本身锁,其他线程不能访问该实例中其他同步方法
  • 当一个线程访问该类的不同实例的同步方法时,其他线程可以访问其他同步方法
  • 非同步方法都可以访问
    ddd

阅读全文 »


ajax登录


jsp:

    <label>用户名</label><input id="username" name="username" value="${u.username}">
	<label>密码</label><input id="password" name="password" value="${u.password}">
	<span id="error"></span>
	<br><br><br><br><br>
	<input type="button" value="登录" onclick="return loginyz(this)"/> 

阅读全文 »


多线程顺序打印ABC


创建一个线程,实现Runnable接口,按顺序打印ABC

  • wait() 与 notify/notifyAll()与synchronized搭配使用
  • 当线程执行wait()时,会把当前的锁释放,然后让出CPU,进入等待状态。
  • 当执行notify/notifyAll方法时,会唤醒一个处于等待该 对象锁 的线程 然后继续往下执行,直到执行完退出对象锁锁住的区域(synchronized修饰的代码块)后再释放锁。

代码

public class MyThreadPrinter2 implements Runnable {     
    
    private String name;     
    private Object prev;     
    private Object self;     
    
    private MyThreadPrinter2(String name, Object prev, Object self) {     
        this.name = name;     
        this.prev = prev;     
        this.self = self;     
    }     

    @Override    
    public void run() {     
        int count = 10;     
        while (count > 0) {     
            synchronized (prev) {     
                synchronized (self) {
                	if(name.equals("C")){
                		System.out.print(name+" "); 
                	}else{
                		System.out.print(name); 
                	}
                    count--;    
                      
                    self.notify();     
                }     
                try {     
                    prev.wait();     
                } catch (InterruptedException e) {     
                    e.printStackTrace();     
                }     
            }     
    
        }     
    }     
    
    public static void main(String[] args) throws Exception {     
        Object a = new Object();     
        Object b = new Object();     
        Object c = new Object();     
        MyThreadPrinter2 pa = new MyThreadPrinter2("A", c, a);//打印完A,唤醒需要a对象的线程pb去执行打印B,并释放c    
        MyThreadPrinter2 pb = new MyThreadPrinter2("B", a, b);//打印完B,唤醒需要b对象的线程pc去执行打印C,并释放a      
        MyThreadPrinter2 pc = new MyThreadPrinter2("C", b, c);//打印完C,唤醒需要c对象的线程pa去执行打印A,并释放b      
             
        new Thread(pa).start();  
        Thread.sleep(100);  //确保按顺序A、B、C执行  
        new Thread(pb).start();  
        Thread.sleep(100);    
        new Thread(pc).start();     
        Thread.sleep(100);    
        }     
	}    

阅读全文 »