>判断邮箱规则的正则表达式:
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
--大型网站系统架构演化
https://www.cnblogs.com/leefreeman/p/3993449.html
//listagg超出4000长度替换方法
select xmlagg(xmlparse(content rt.extracted_person_ids||','wellformed) orderby rt.extracted_person_ids).getclobval() from abc;
idea plugin:
a>Rainbow Brackets:彩虹颜色的括号,看着很舒服,敲代码效率变高
b>Nyan progress bar:将所有的进度条都变成萌新动画的小插件
c>activate-power-mode:这是一款让你在编码的时候,整个屏幕都为之颤抖的插件。
d>Background image Plus:这是一款可以设置idea背景图片的插件,不但可以设置固体的图片,还可以设置一段时间后随机变化背景图片,以及设置图片的透明度等等。