>判断邮箱规则的正则表达式:

var patt = /^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/;

patt.test("The best things in life are free!")

>如果桌面的编程环境比较多,用ubuntu

>如果网络编程很多,对网络要求比较高,scientific linux(redhat )

>如果喜欢自己折腾,对速度要求比较bt,使用gentoo,arch

>如果对响应速度和资源占用要求更高,freebsd

>如果能忍受速度慢,又喜欢牌子,用solaris

>如果喜欢折腾自己,用lfs,或者嵌入式环境

Linux程序员有两个发展方向:一是软件层面,网络层面;二是硬件层面,嵌入式系统。网络方面应该要学会PHP,python之类的语言,要会建站,LAMP,维护。嵌入式则要精通C语言,精通Linux系统结构,懂得硬件知识

Stack Overflow因使用Windows系统而著称,现在他们使用越来越多的Linux服务器,比如HAProxy(负载均衡), Redis(NoSQL数据库), Bacula(数据备份系统), Nagios(远程监控软件), 日志, 路由器都运行于Linux系统,几乎所有需要并行处理的功能都是由Linux处理

Hadoop

https://pan.baidu.com/s/1bSCj3S

t9hn

Thread

>synchronized(this)以及非static的synchronized方法,只能防止多个线程同时执行同一个对象的同步代码段

>static synchronized方法,static方法可以直接类名加方法名调用,方法中无法使用this,所以它锁的不是this,而是类的Class对象,所以,static synchronized方法也相当于全局锁,相当于锁住了代码段

>synchronized(className.class)实现了全局锁的效果

synchronized同步锁原理:

>对于每一个对象,有且仅有一个同步锁;不同的线程能共同访问该同步锁。但是,在同一个时间点,该同步锁能且只能被一个线程获取到。这样,获取到同步锁的线程就能进行CPU调度,从而在CPU上执行;而没有获取到同步锁的线程,必须进行等待,直到获取到同步锁之后才能继续运行。这就是,多线程通过同步锁进行同步的原理

ThreadLocal

>最常见的ThreadLocal使用场景为 用来解决 数据库连接、Session管理

yield只能让是同级,或者高级其他线程优先执行

sleep可以让低级,同级其他线程都可以有优先执行机会

Interrupt:

Interrupt方法设置线程的中断标记,当对处于阻塞状态的线程调用interrupt方法时(处于阻塞状态的线程是调用sleep,wait,join的线程),会抛出InterruptException异常,而这个异常会清除中断标记。

wait

>只能在synchronized方法或者synchronized块中使用

>获取锁方法

#nodify()方法

#wait(longtimeout):longtimeout时间到了以后,不会立即醒来,而是要看那个正在使用这把锁的线程是否结束

>释放线程锁

join:可实现同步顺序执行线程作用

>t.join//使调用线程t在此之前执行完毕

>t.join(1000)//等待t线程,等待时间1000毫秒,时间结束后线程竞争

>t.join方法紧跟t.start方法之后

值传递与引用传递

>值传递的时候,将实参的值,copy一份给形参

>引用传递的时候,将实参的地址值,copy一份给形参

也就是说,不管是值传递还是引用传递,形参拿到的仅仅是实参的副本,而不是实参本身

String:

>>只要是用new()来新建对象的(形如:new String("abc")),都会在堆中创建,而且字符串是单独存值得,即使与栈中的数据相同,也不会与栈中数据共享。

>>直接赋值来新建对象的,会在栈中查找是否存在该字符串,存在则指向对应的内存地址至变量;不存在则开辟新的地址,并将内存地址指向变量名。

==和equals

>>当比较包装类里面的数值是否相等时,用equals

>>当比较两个包装类的引用是否指向同一个对象时,用==

VBA获取字符串长度

Function xLenB(strInput As String)
Dim arr() As Byte
arr = StrConv(strInput, vbFromUnicode)
xLenB = UBound(arr) + 1
End Function
//JS:输出字符串长度
var str = "啊a吧b查c";
var twoLen = str.match(/[^x00-xff]/ig);//输出:啊,吧,查
var totalLen = str.length + (twoLen==null?0:twoLen.length);//输出:总长度
//#CSV START
//记录CSV中双引号个数,规避CRLF换行情况
public static int cntChar(String str, char c, int fromIndex){
int idx = str.indexOf(c, fromIndex);
return idx == -1 ? 0 : cntChar(str, c, idx + 1) + 1;
}
//当双引号为奇数时循环读取
String strLine = "";
while (cntChar(strLine, '"', 0) % 2 == 1) strLine = strLine + bfReader.readLine();
//#CSV END

--大型网站系统架构演化