开发必备小知识

Posted 袁义锐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发必备小知识相关的知识,希望对你有一定的参考价值。

1. Git代码无法上传的解决办法

git pull origin ipaas_config
git pull
git push --force origin ipaas_config

2.本地springboot项目启动,端口被占用的解决办法:

taskkill /im java.exe /f

3.sql里的inner join和=等号有区别
join是基于hashtable连接比较,而=直接就是取笛卡尔集再过滤,所以后者效率低,是O(N^2),前者是O(LogN)

4.transient 关键字总结
1)transient修饰的变量不能被序列化;

2)transient只作用于实现 Serializable 接口;

3)transient只能用来修饰普通成员变量字段;

4)不管有没有 transient 修饰,静态变量都不能被序列化;

原因:
序列化保存的是对象的状态,静态变量数以类的状态,因此序列化并不保存静态变量

==添加如下两行代码就可以序列化transient 关键字修饰的成员变量

private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException 
	s.defaultWriteObject();
	s.writeObject(name2);

private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException 
	s.defaultReadObject();
	name2=String.valueOf(s.readObject());

5.Thread.yield( )
Java线程中的Thread.yield( )方法,译为线程让步。就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,让自己或者其它的线程运行,注意并不是单纯的让给其他线程。

yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行!

6. Unsafe

Java不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别的原子操作,主要提供了以下功能:

1、通过Unsafe类可以分配内存,可以释放内存;
类中提供的3个本地方法allocateMemory、reallocateMemory、freeMemory分别用于分配内存,扩充内存和释放内存,与C语言中的3个方法对应
2、可以定位对象某字段的内存位置,也可以修改对象的字段值,即使它是私有的;
3、挂起与恢复
将一个线程进行挂起是通过park方法实现的,调用 park后,线程将一直阻塞直到超时或者中断等条件出现。unpark可以终止一个挂起的线程,使其恢复正常。
4、CAS操作:是通过compareAndSwapXXX方法实现的
CAS操作有3个操作数,内存值M,预期值E,新值N,如果M==E,则将内存值修改为N,否则啥都不做;

7.redis分布式连接池同步调用

如果分布式调用代码是运行在线程中,那么直连调用方式就不合适了,因为直连方式是非线程安全的,
这个时候,你就必须选择连接池调用。连接池的调用方式,适合大规模的redis集群,并且多客户端的操作。

8.StringBuffer或StringBuilder
建议用非线程安全的StringBuilder;用ThreadLocal 给StringBuilder加上线程安全的条件;

9.进程
 进程里面第一个启动的线程,通常称为主线程;守护进程是一种特殊的后台进程,通常由操作系统启动,然后一直保持运行,
作为一个永久服务,除非系统关机,否则永远不会死亡。

10.Map类集合K/V能不能存储null值的情况
Hashtable                         :key不允许为null  value不允许为null
ConcurrentHashMap        :key不允许为null  value不允许为null
TreeMap                           :key不允许为null  value允许为null
HashMap                          :key允许为null      value允许为null

11.

以上是关于开发必备小知识的主要内容,如果未能解决你的问题,请参考以下文章

小程序 小知识总结

python 开发必备知识

移动端H5网页开发必备知识

高阶前端开发人员必备工具-Node.JS知识讲解

开发必备:HTTP 及 TLS

自定义博客cnblogs样式的必备前端小知识——jsjq