java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
Failed to convert from type [java.lang.String] to type [java.util.Date] Failed to convert from type [java.lang.String] to type [java.util.Date]
常见的java集合类有哪些 线程不安全,HashMap存储的值是没有顺序的,根据key的HashCode值来存储数据,根据key来获取他的value值,具有很快的访问速度。:所有方法都加了synchronized关键字,线程安全,Key和value的值都不能为null,支持线程的同步,也就是任意一个时刻只能有一个线程写HashTable,这也导致了HashTable写入数据的时候会比较慢。:数组列表,或者说是动态数组,底层数据结构是数组,查询快,增删慢,:保存了记录的插入顺序,key和value都可以为空,是非同步的。
代码命名规范 下面正例中的数字就是延伸信息,表示星期几:public Enum { MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7);long 或者 Long 初始赋值时,使用大写的 L,不能是小写的 l,小写容易跟数字 1 混淆,造成误解。相同参数类型,相同业务含义,才可以使用 Java 的可变参数,避免使用 Object。所有的相同类型的包装类对象之间值的比较,全部使用 equals 方法比较。
并发情况下分配内存引发的线程不安全的解决办法 把内存分配的动作按照线程划分在不同的空间之中进行,即每个线程在Java堆中预先分配一小块内存,哪个线程要分配内存,就在哪个线程的本地缓冲区中分配,只有本地缓冲区用完了,分配新的缓存区时才需要同步锁定。:并发情况下,可能出现正在给对象A分配内存,指针还没来得及修改,对象B又同时使用了原来的指针来分配内存的情况。加上失败重试的方法保证更新操作的原子性,比较和交换;不加锁,通过while(true)死循环来判断对象新的地址。本地线程分配缓冲(TLAB 默认开启)
如果java程序变慢了,应该怎样去解决呢? 如果我们在运行的过程中发现java程序变慢了,一般来说都是内存不够了,这个时候可以去查看是否有大对象,资源连接是否释放掉,网络io,或者磁盘io链接释放不掉,也会出现变慢的情况,还有的时候是因为操作系统慢了,jvm运行程序本地方法栈也可能会消耗操作系统的本地内存(磁盘、网络io,需要缓冲区)两个独立的硬件之间想要通信需要建立连接,相当于建立了一个钥匙通道,存对方的钥匙需要占据内存空间,一般有close操作(比如jdbc,上传下载),如果不关闭的话,内存就会消耗越来越多,导致内存不够。
java异常相关 在java语言中,将程序执行中发生的不正常情况称为异常,会导致JVM非正常停止,语法错误并不是异常,语法错误编译就不会通过,不能执行。所有异常都有一个共同的祖先,就是java.lang包下的Throwable类,Throwable类中两个重要子类就是Exception(异常)和Error(错误)。