- Crtl Shift L Eclipse快捷键列表
- java 中路径符号/和Linux相同 与Windows是反的
- HashSet 没有set方法
- Object…做为形参的时候,代表该函数可以接受零个或者多个参数。
- 比较字符串和变量时使用,字符串.equals(变量),而不是使用变量.equals(字符串),这样可以防止变量为空时,抛空指针异常。
- java.util.date精确到日期时分秒,而java.sql.date只精确到年月日。
- 在调试前端页面的时候,一定要打开浏览器的开发工具,将缓存禁用,以免页面不刷新,具体在什么情况下不刷新缓存待考证。
- 如果想用MySQL存储emoji表情,使用utf8mb4数据库编码。
- &&逻辑与和||逻辑或,两个运算符的优先级是不同的。
- Java中transient关键字,让某些被修饰的成员属性变量不被序列化。
- @RequestParam必须要加上参数名,很多地方说可以不加,可以自动匹配注解后的参数,但其实是仅在DeBug模式下生效而已。
- AMQP:高级消息队列协议使得遵从该规范的客户端应用和消息中间件服务器的全功能互操作成为可能。
- 拼接字符串的时候一定要注意是否存在Null,假如直接使用“+”进行拼接,或者append方法,会将null作为字符串拼接。
- js或者ts中,没有直接从数组中移除某一项的方法,但是可以使用filter来实现,例如this.nodes = this.nodes.filter(item => item !== node);
- 在left join中可以使用on增加连接条件,连接条件中,不能存在对于左表的约束,左表的约束要写到where条件中才能生效。right join亦然。
- Srpingboot中在启动时指定配置文件:java -jar spring-boot-application-properties-sample-1.0.0.jar --spring.profiles.active=dev
- 批量更新、删除,必须对集合进行排序,否则可能导致死锁
- 日志打印需要使用logger.error(“property [key:{},value:{}] reset error”, code, value);的方式进行拼接。
- 包名一定要小写,不能存在大写以及大小写混用,因为某些平台可能对于大小写敏感,某些不敏感。
- 批量更新、删除等操作不要多次操作数据库,要使用批量更新方法。
- UTF-8中汉字占三个字节,GBK中汉字占两个字节。
- FileInputStream,Stream(流),实际并不存储文件内容,只是提供了一个获取文件的管道。可以理解为从水池里取水,流就是水管,只是取水的方式。
- 其实并不是所有的流都需要关闭,只有那种会一直占用被获取资源的流的才需要关闭。
- 在线程不作为参数传入另一个线程时,this和Thread.currentThread()【表面上】代表的是同一个对象。而当线程作为参数传入时,this指向当前对象,即内部线程,而Thread.currentThread()指向当前方法被哪个线程调用的那个对象,即外部线程。
- 多线程中,使用while条件来校验wait(),而不是使用if。因为notifyAll会唤醒所有该锁上的线程,这样所有线程收到notify信号的时候,都会直接从wait()之后的代码开始执行,假如用if就不会再次判断条件是否满足。就是为了避免错误唤醒线程。
- Spring事务中,直接throw new Exception不会导致事务回滚,要使用RuntimeException
- IE会缓存Ajax请求,开发过程中切记。
- null + ""会输出null字符串。
- WebService接口测试工具:soapUI。
- 红黑树与平衡二叉树的主要区别:红黑树并不追求完全的平衡,减少了旋转节点而带来的消耗。
- @ConditionalOnClass(*.class),意思是存在某类则加载此配置类
实用编程技巧
最新推荐文章于 2021-11-22 11:30:18 发布