Java学习笔记
jzlcheng
个人学习记录
展开
-
Java访问权限修饰词
1.private 仅其修饰class可访问。2.(default) 同一个package内class可访问。3.protected 允许其派生class访问、4.public 允许其他class访问 当前类 同一package 派生类原创 2017-11-01 17:46:59 · 154 阅读 · 0 评论 -
泛型
本质:参数化类型伪泛型: 只在程序源码中存在,在编译后的字节码文件中,已经被替换为原始类型原始类型: 擦去了泛型信息,最后在字节码中的类型变量的真正类型类型擦除: 使用泛型时加上的类型参数,会在编译中去掉,对运行时期的Java来说, ArrayList<Integer>与ArrayList<String>就是同一个类要求及规则:不能使用基本...转载 2018-06-26 10:28:44 · 182 阅读 · 0 评论 -
java异常
Java异常机制:运行时异常(RuntimeException),不必处理,虚拟机接管 检查异常(checkedExecption),必须处理常见运行时异常:NullPointerException ClassCastException IllgalArgu...原创 2018-06-26 09:35:22 · 190 阅读 · 0 评论 -
抽象类与接口
语法层面:1 抽象类可以提供成员方法实现细节,而接口中只有public abstract方法 2 抽象类中成员变量可以是各种类型,而借接口中成员变量只能是public static final 3 接口中不能有静态代码块及静态方法 4 一个类只能继承一个抽象类,而可以实现多个接口设计层面:1 抽象类是对事物的...转载 2018-06-16 10:24:20 · 113 阅读 · 0 评论 -
重载、重写
重载1 方法名必须相同2 参数列表必须不同3 返回值类型可同可不同方法的重载与返回值无关,只与参数个数,参数类型和参数排列顺序有关重写1 子类方法名,返回类型,参数签名必须与父类完全一致2 子类方法不能缩小父类方法的访问权限3 静态不能重写为非静态,非静态不能重写为静态4 子类方法不能抛出比父类方法更多的异常5 父类中的私有方法不能被子类重写6 父类抽象方法可实现7 父类中非抽象方法可重写为抽象方...原创 2018-06-12 17:10:26 · 126 阅读 · 0 评论 -
final与static
1、final类不能被继承,final类中方法默认是final的2、final方法不能被覆盖、可被继承3、final成员变量只能被赋值一次4、final不能修饰构造方法5、final参数,可读取,不可更改参数值1、static修饰的成员变量和成员方法独立于该类的任何对象2、public static 成员变量、成员方法→全局变量、全局方法3、静态方法:可直接通过类名调用,任何实例均可调用4、sta...原创 2018-06-12 10:32:47 · 105 阅读 · 0 评论 -
如何获取客户端真实ip地址
在项目中需要获取客户端的真实IP地址,原本使用的是request.getRemoteAddr(),后来发布到服务器上时发现取到的值一直是127.0.0.1 原因是,在部署时用了nginx进行反向代理,(小插曲:配nginx的时候一定要记得配 X-Real-IP和 X-Forwarded-For如下,不然还是取不到啊)解决办法: 经过代理以后,由于在客户端和服务之间增加了...转载 2018-04-17 18:42:23 · 3332 阅读 · 0 评论 -
内存屏障、volatile、锁、final
1. 硬件层的内存屏障:Load Barrier 和 Store Barrier作用:阻止屏障两侧的指令重排序; 强制把写缓冲区/高速缓存中的脏数据等写回主内存,让缓存中相应的数据失效。对于Load Barrier来说,在指令前插入Load Barrier,可以让高速缓存中的数据失效,强制从新从主内存加载数据;对于Store Barrier来说,在指令后插入Store Barri...原创 2018-04-16 16:49:00 · 758 阅读 · 0 评论 -
偏向锁、 轻量级锁 、 重量级锁
锁的4种状态 无锁状态 偏向锁 轻量级锁 重量级锁 一个对象刚开始实例化的时候,没有任何线程来访问它,处于无锁状态。当第一个线程来访问它,它会偏向这个线程,此时,对象持有偏向锁。这个线程在修改对象头成为偏向锁时使用CAS操作,并将对象头中的ThreadID改成自己的ID,之后再次访问这个对象时,只需要对比ID,不需要再使用CAS在进行操作。因为偏向锁不...转载 2018-04-16 16:44:38 · 120 阅读 · 0 评论 -
QueryRunner类
QueryRunner类 该类简单化了SQL查询,它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。QueryRunner类提供了两个构造方法:默认的构造方法需要一个 javax.sql.DataSource 来作参数的构造方法。 QueryRunner类的主要方法 public Object query(Connection conn, Stri...转载 2018-04-16 16:35:31 · 2743 阅读 · 0 评论 -
XML DOM
摘自慕课网xml dom 定义了访问和处理xml文档的标准方法。获取xml文件内容的四种解析方式:DOM SAX DOM4J JDOM基础方法:DOM(平台无关的官方解析方式)、SAX(基于事件驱动的解析方式)扩展方法:JDOM、DOM4J(在基础的方法上扩展出的,只有在java中能够使用的解析方法)DOM4J 解析 xml 文件1、创建一个 SAXReader 对象SAXReader saxRe...转载 2018-03-01 10:35:34 · 129 阅读 · 0 评论 -
Cookie和Session机制
摘自http://blog.csdn.net/fangaoxin/article/details/6952954web应用程序基于HTTP协议传输数据,而HTTP协议是无状态协议,当一次数据交换完成后,客户端和服务器端会关闭连接,当再次交换数据时需重建连接,因此无法从连接上跟踪会话。Cookie实质是存储在客户端的一段小文本信息。当客户端向服务器端发起请求,如服务器端需要记录用户状转载 2018-02-06 17:10:50 · 105 阅读 · 0 评论 -
Synchronized
摘自http://blog.csdn.net/luoweifu/article/details/46613015 1.修饰代码块,作用范围{},作用对象,调用此代码块的对象2.修饰方法,作用范围,整个方法,作用对象,调用此方法的对象3.修饰静态方法,作用范围,整个静态方法,作用对象,这个类的所有对象4.修饰一个类,作用范围{},作用对象,这个类的所有对象注:synchronized关键字不能继承A...转载 2018-02-11 18:51:26 · 123 阅读 · 0 评论 -
Java获取时间戳
时间戳 指的就是Unix时间戳(Unix timestamp)。它也被称为Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。System.currentTimeMillis();Calendar.getInstance().getTimeInMillis();new Da...原创 2018-02-11 18:02:20 · 223 阅读 · 0 评论 -
用于精确计算的BigDecimal
float和double类型主要为了科学计算和工程计算而设计。它们执行二进制浮点运算,提供较为精确的快速近似计算。float和double尤其不适用于货币计算。解决办法:使用BigDecimal、int或long进行货币计算使用int或者long时,以分位单位进行计算,而不是以元为单位。BigDecimal: 构造器 BigDecimal(int) BigDec...原创 2018-02-11 17:04:44 · 161 阅读 · 0 评论 -
将本地Java程序发布到Linux服务器上
注:记录自己在发布日志分析程序中遇到的问题1.将程序导出成jar包,执行java -jar XXX.jar 即可运行 Export》JAR file》Next...》选择Main Class作为程序入口2.第三方引用问题 eclipse在打包时不会将第三方jar包一并打包,如数据库驱动器。解决办法可用fatjar插件,但fatjar不适应版本较高的eclipse。但我们原创 2018-01-16 17:17:58 · 4714 阅读 · 0 评论