随笔分类 - java 基础
平常遇到自己不知道的知识
摘要:删除数组中的某些元素,需要注意删除后,整个数据的大小会变化。如果以元素下标删除就会出错。 错误示范: 那么,我重新new一个数组,将原来的数据复制到新数组中,总可以吧。但是似乎有点浪费内存,大规模数据或者请求的时候就不适合了。换个思路:既然数据index会变小。那么我重后遍历并删除,这样就可以了吧
阅读全文
摘要:代理模式是基础的代理模式之一。常用的AOP,日志都是代理模式现象的。在不改变原来的类或者方法的前提下,对外提供增值服务。 java 实现代理的方式 1)代理分静态代理, 2)jdk动态代理, 3)Cglib动态代理。 静态代理实现方式 代码静态代理,主要通过继承相同的接口, java jdk 动态代
阅读全文
摘要:现在已经出java 10了。之前趁java8出来的那段时间学习了lambda表达式,最近项目中需要用到在数组中寻找重复数据,按照以前的思维,就是写循环!能解决这个问题,旧的技术确实能解决这个问题,但代码行数和性能不一定有这么好。这就是学习新技术的动力所在吧,不然老是用旧技术,总会有一天发现,旧技术解
阅读全文
摘要:通过debug发现,float 直接转换double会出现误差。数据类型需要通过String转一道 结果 如例子所示,2.8转为double 成了2.799999952316284。,失去精度。 结果
阅读全文
摘要:从学习java开始就知道,hashCode()方法是object类本身就有的方法,所有的类都继承了object,也就了hashCode()这个方法。 在学java的时候,就被告知在重写equals方法时,也要重写hashCode方法。当时没细想,以为这个是语法规定。 后来了解到,这个确实java规定
阅读全文
摘要:线程的同步与协作,这个概念很普通就是说,一个线程需要等另一个线程完成或者完成某部分时才能继续工作。 线程之间的同步与协作,有一个经典的场景:生产者与消费者。如库存不足,那么消费者线程需要等待,生产者生产出足够的物品。生产者和消费者都需要访问物品库,同一时刻(在某个操作下)只能有一个线程占用。 既然是
阅读全文
摘要:虚拟机内存划分: PC寄存器:线程独有 记录着线程当地运行java方法的地址,如果是本地方法,则为空。主要作用支持多线程,线程阻塞,挂起,恢复等一系列操作 Java虚拟机栈:线程独有,java虚拟机在创建线程时,同时创建,用于保存线程栈帧 栈帧:简单点说,可以解释为是一个方法运行时,临时数据的存储区
阅读全文
摘要:List是常用的一种数据集合,默认size值是10.如果增加的数据超过默认值,会扩大到原来数据长度的一半。原来是N,那么扩大后N+N/2 采用>>进行除于2,实际上是二进制向右移动一位。相当高明。 ArrayList长度是有限制的,最长是:Integer.MAX_VALUE - 8=21474836
阅读全文
摘要:static:可以修饰方法,也可以是方法块,方法块的好处在于,只要一块,只占一个内存。只运行一次。优先运行父类的static方法。初始化比较复杂并且可以重用 final:修饰的方法 最终的方法 子类不可以重写。修饰类 最终类 不能被继承。 continue:回到一个块的开始处;不运行这块代码的以下语
阅读全文
摘要:对于一些业务逻辑。需要用到超时处理的,在规定时间内没有得到回复,那么就需要处理。 比如:转账服务, 1)A转100给B。 2)B收到100后,回复A说,已经收到了。(这里就有时间限制) 3)A收到B的回复 对于操作1)是否有效需要操作3)来确定。操作1)是一个单独的请求。这个请求完了就完了。 核心是
阅读全文
摘要:在Java的世界里,万物皆为对象,那么Map是一个接口!哈哈 举个例子: 其中User类 运行 得到输出 HashMap--hash 就是每个对象都拥有的一个方法, Map默认长度是16,通过key的hash值得到它所在的位置。如果值相同则放在之前值的后面,是一个链表结构 利用debug模式,选择“
阅读全文
摘要:起因: 之前利用反射生成excel导出,这个组件本来挺好用的,结果,坑爹的本地研发没有问题,生产环境却有问题。不知道什么原因直接导致服务重启,还重新加载类,直接导致jvm的永久区内存溢出。 异常: java.lang.OutOfMemoryError: PermGen space 说明: Perm空
阅读全文
摘要:枚举,就是保存着原始的《key,value》 在代码中会经常用到。为了不坑自己,记录一下笔记
阅读全文
摘要:JVM运行时的内存块 在jvm中gc(垃圾回收机制)是Java立足点之一。垃圾自动回收可以让Java程序员减少与内存打交道,更专注于业务的开发与实现。 垃圾回收需要实现如下几点 关于垃圾回收的对象定义,主要有两种: 检查这个对象是否有引用 比如:a =new A(); 那么对象A是有引用的。但这种方
阅读全文
摘要:在写代码中经常会遇到需要在数组循环中删除数组元素的情况,但删除会导致数组长度变化。 运行结果是: 这是运行异常 解决方法是,将数组转换为Iterator<> 并且应用Iterator的删除方法,Iterator.remove 运行结果是: 总结:在循环中删除数组,会导致数组长度变化,这样导致出现异常
阅读全文
摘要:可以用 StringUtils.isBlank()函数;
阅读全文
摘要:这是常用的request获取服务地址的常用方式。 源请求服务地址:http://localhost/api-server/1/forum/thread/hot_topic?sex=1 String path = request.getContextPath(); String basePath =
阅读全文
摘要:本文是转载的,原文网址:http://www.cnblogs.com/zhaozhan/archive/2010/01/17/1650242.html 字符串函数主要用来处理字符串。字符串函数主要包括以下:concat(),contains(),normalize-space(),substing(
阅读全文
摘要:java.lang.NoClassDefFoundError 是运行时jvm找不到对应类。这种情况是少包的导致的。根据提示语添加对应的jar包就可以、 感叹一下:maven真是一个伟大的东西,在包的依赖方面它做得很好值得我们拥有。
阅读全文
摘要:在json转换成对象时,json的key会与java 类的字段一一对应。如果没有映射上的java字段会在该数据类型上填充默认值,如int 0,String null 等。 没有映射的json key在程序结束后会用警告显示出来,告知程序员那个key值没有被映射上 import net.sf.json
阅读全文