欢迎光临
我们一直在努力

双工检查是什么Java研发工程师知识点总结

注:Fast-fail机制:在使用迭代器的过程中有其它线程修改了集合对象结构或元素数量,都将抛出ConcurrentModifiedException,但是抛出这个异常是不保证的,我们不能编写依赖于此异常的程序。

Collection - List - ArrayList
Collection - List - LinkedList
Collection - List - Vector
Collection - List - Vector - Stack
Collection - Set - HashSet
Collection - Set - TreeSet
Collection - List - LinkedHashSet
Map - HashMap
Map - TreeMap
Map - HashTable
Map - LinkedHashMap
Map - ConcurrentHashMap

final修饰的变量是常量,必须进行初始化,可以显示初始化,也可以通过构造进行初始化,如果不初始化编译会报错。

抽象类是否可以有构造函数?答案是可以有。抽象类的构造函数用来初始化抽象类的一些字段,而这一切都在抽象类的派生类实例化之前发生。不仅如此,抽线类的构造函数还有一种巧妙应用:就是在其内部实现子类必须执行的代码
修饰符             类内部     同一个包        子类      任何地方
private yes
default         yes yes
protected yes yes yes
public yes yes yes yes
public class Enclosingone {
public class Insideone {}
public static class Insideone{}
}

public class Test {
public static void main(String[] args) {
// 构造内部类对象需要外部类的引用
Enclosingone.Insideone obj1 = new Enclosingone().new Insideone();
// 构造静态内部类的对象
Enclosingone.Insideone obj2 = new Enclosingone.Insideone();
}
}
* 0或多次
+ 1或多次
?0或1次
{n} 恰n次
{n,m} 从n到m次
d      [0-9]
D     [^0-9]  
w [a-zA-Z_0-9]
W [^a-zA-Z_0-9]
s [ f]
S [^ f]
. 任何字符
字符              描述                  匹配对象
. 单个任意字符
[...] 字符组 列出的任意字符
[^...] 未列出的任意字符
^ caret 行的起始位置
$     dollar 行的结束位置
<   单词的起始位置
> 单词的结束位置
b   单词边界
B 非单词边界
(?=Expression) 顺序肯定环视 成功,如果右边能够匹配
(?!Expression) 顺序否定环视 成功,如果右边不能够匹配
(?<=Expression) 逆序肯定环视 成功,如果左边能够匹配
(?<!Expression) 逆序否定环视 成功,如果左边不能够匹配
  1. S单一职责SRP:Single-Responsibility Principle

  2. O开放封闭原则OCP:Open-Closed Principle

  3. L里氏替换原则LSP:Liskov-Substitution Principle

  4. I接口隔离原则ISP:Interface-Segregation Principle

  5. D依赖倒置原则DIP:Dependency-Inversion Principle

  1. << :左移运算符,x << 1,相当于x乘以2(不溢出的情况下),低位补0

  2. >> :带符号右移,x >> 1,相当于x除以2,正数高位补0,负数高位补1

  3. >>> :无符号右移,忽略符号位,空位都以0补齐


byte a = 127;
byte b = 127;
b = a + b; // error : cannot convert from int to byte
b += a; // ok
// from ArrayList.java JDK 1.7
private static final int DEFAULT_CAPACITY = 10;

//from HashMap.java JDK 7
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

pattern中加z yyyy-MM-dd HH:mm:ss.SSS Z

public static int dateDiff(Date d1, Date d2) throws Exception 
Servlet (接口)            -->      init|service|destroy方法
GenericServlet(抽象类)  -->     与协议无关的Servlet
HttpServlet(抽象类) --> 实现了http协议
自定义Servlet --> 重写doGet/doPost
  1. init:仅执行一次,负责装载servlet时初始化servlet对象

  2. service:核心方法,一般get/post两种方式

  3. destroy:停止并卸载servlet,释放资源

HttpSession session = request.getSession(boolean create)
返回当前请求的会话
1. out              ->      response.getWriter
2. request -> Service方法中的req参数
3. response -> Service方法中的resp参数
4. session -> request.getSession
5. application -> getServletContext
6. exception -> Throwable
7. page -> this
8. pageContext -> PageContext
9. Config -> getServletConfig
1)应用广泛,可扩展性强,被广泛应用各种场合
2)读取、解析没有JSON快
3)可读性强,可描述复杂结构
1)结构简单,都是键值对
2)读取、解析速度快,很多语言支持
3)传输数据量小,传输速率大大提高
4)描述复杂结构能力较弱

JavaScript、PHP等原生支持,简化了读取解析。成为当前互联网时代普遍应用的数据结构。

Java 语言提供了一种稍弱的同步机制,即volatile变量。但是volatile并不容易完全被正确、完整的理解。

Java 语言提供了一种稍弱的同步机制,即volatile变量.用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新。 当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的。volatile修饰变量,每次被线程访问时强迫其从主内存重读该值,修改后再写回。保证读取的可见性,对其他线程立即可见。volatile的另一个语义是禁止指令重排序优化。但是volatile并不保证原子性,也就不能保证线程安全。

4. volatile 禁止指令重排序的底层原理 指令重排序,是指CPU允许多条指令不按程序规定的顺序分开发送给相应电路单元处理。但并不是说任意重排,CPU需要能正确处理指令依赖情况以正确的执行结果。volatile禁止指令重排序是通过内存屏障实现的,指令重排序不能把后面的指令重排序到内存屏障之前。由内存屏障保证一致性。注:该条语义在JDK1.5才得以修复,这点也是JDK1.5之前无法通过双重检查加锁来实现单例模式的原因。


// The standard idiom for using the wait method
synchronized (obj) {
while (condition does not hold)
obj.wait(); // (Releases lock, and reacquires on wakeup)
... // Perform action appropriate to condition
}
  • run方法

  • start方法

  1. Semaphore Java并发库的Semaphore可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。

  2. CyclicBarrier 主要的方法就是一个:await()。await()方法每被调用一次,计数便会减少1,并阻塞住当前线程。当计数减至0时,阻塞解除,所有在此CyclicBarrier上面阻塞的线程开始运行。

  3. CountDownLatch 直译过来就是倒计数(CountDown)门闩(Latch)。倒计数不用说,门闩的意思顾名思义就是阻止前进。在这里就是指 CountDownLatch.await() 方法在倒计数为0之前会阻塞当前线程。

public synchrnozied void test() {
   xxxxxx;
   test2();
}

public synchronized void test2() {
   yyyyy;
}
public interface CallableStatement extends PreparedStatement 
public interface PreparedStatement extends Statement
Statement statement = conn.createStatement();
PreparedStatement preStatement = conn.prepareStatement(sql);
ResultSet rSet = statement.executeQuery(sql);
ResultSet pSet = preStatement.executeQuery();
  • 直接定址法:f(key) = a*key+b

  • 除留余数法:f(key) = key mod p (p<=m) p取小于表长的最大质数 m为表长

  • DJBX33A算法(time33哈希算法hash = hash*33+(unsigned int)str[i];

20 FTP数据连接 
21 FTP控制连接
22 SSH
23 TELNET
25 SMTP
53 DNS
69 TFTP
80 HTTP
161 SNMP
100 continue 初始请求已接受,客户端应继续发送请求剩余部分
200 OK
202 Accepted 已接受,处理尚未完成
301 永久重定向
302 临时重定向
400 Bad Request
401 Unauthorized
403 Forbidden 资源不可用
404 Not Found
500 Internal Server Error 服务器错误
502 Bad Gateway
503 Service Unavailable 服务器负载过重
504 Gateway Timeout 未能及时从远程服务器获得应答
赞(0)
未经允许不得转载:上海聚慕医疗器械有限公司 » 双工检查是什么Java研发工程师知识点总结

登录

找回密码

注册