Java基础
贺爷
朝阳区码农一枚,专注JAVA开发
展开
-
Java多线程 线程安全一本通,线程安全,为什么要用多线程,如何同步,单例模式线程安全
为什么要同步?线程彼此相互独立,对于同一数据,多线程都可以读取,就会产生异常和矛盾;比如LOL:Hero类,一个对象为盖伦Gareen,血量1000,一个线程加血addHp(),一个线程减血reduceHp()正常情况下:血量为1000addHp() +1=1001reduceHp()-1=1000实际上由于线程独立性:两个线程读到的都是1000(在另一原创 2017-08-01 19:07:46 · 366 阅读 · 0 评论 -
JAVA基础:子类、父类继承关系 静态块、非静态块、构造函数初始化顺序性、静态非静态方法覆盖
父类Parent;子类Child 继承Parent;Test类测试;Parent child = new Child();class Parent{ static { System.out.println("P-静态块"); } { System.out.println("P-非静态块"); } public原创 2017-09-21 14:07:24 · 310 阅读 · 0 评论 -
fastjson反序列化嵌套类为对应实体类 ResultObject的反序列化及泛型优化
内部类反序列化问题工程中,常常使用ResultObject类或者Msg类作为通用返回类型@Datapublic class Msg { private String type; //data字段,Object类型,通常需要转换为对应实体类 private Object data;}其中data字段类型为Object类,但是工程中往往需要将其序列化成对...原创 2018-07-24 09:44:15 · 3627 阅读 · 0 评论 -
【JAVA 学习笔记】try catch finally实例详解 如果有return怎么办
try-catch-finally @Test public void testTryCatch(){ try { System.out.println("Try Before"); //发生异常 int a =10/0; System.out.println("Try A...原创 2018-07-25 08:53:46 · 207 阅读 · 0 评论 -
【JAVA学习笔记】JAVA 反编译 JVM指令集
JAVA反编译掌握反编译可以更好的帮助我们理解JVM虚拟机 ,如下是简单的一段try catch代码@Test public void testTryCatch(){ try { System.out.println("Try Before"); int a=10/0; System.out....原创 2018-07-25 09:23:28 · 938 阅读 · 0 评论 -
LocalDateTime序列化反序列化
LocalDateTimeTime序列化与反序列化LocalDateTime时间的序列化和反序列化比较复杂,很多时候无法反序列化成功,主要场景包括springmvc自带的LocalDateTime序列化与反序列化 jackson处理后的LocalDateTime序列化与反序列化Controller层使用的是MVC自带的反序列化工具,使用Jackson序列化后会报如下错误错误很清楚,...原创 2018-08-29 15:43:56 · 11731 阅读 · 0 评论 -
对缓冲区的理解
一、什么是缓冲区缓冲区(buffer),它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,显然缓冲区是具有一定大小的。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。二、为什么要引入缓冲区我们为什么要引入缓冲区呢?高速设备与低速设备的不匹配,势必会让高速设备花时间等待低速设备,我们可...原创 2019-01-31 09:43:21 · 5052 阅读 · 0 评论 -
jmap jinfo报错Operation not permitted
问题jstat -gc 18633 可以jcmd 18633 VM.flags 可以jmap -heap 18633 报错jinfo -flags 18633 报错Caused by: sun.jvm.hotspot.debugger.DebuggerException: Can’t attach to the process: ptrace(PTRACE_ATTACH, …) fai...原创 2019-05-16 10:11:56 · 3480 阅读 · 0 评论 -
查看java程序启动参数
jps查找pid为18633jcmd 18633 VM.flags jmap -heap 18633 jinfo -flags 18633 查看gcjstat -gc 18633原创 2019-05-16 10:13:40 · 3668 阅读 · 0 评论 -
Java反射 类类型就是可以操作的类本身 如何通过反射得到函数 函数返回值 函数参数
Java反射的个人理解:反射就是一种 了解类并使用类 的一套方法;学过Java基础的都知道如何进行类的实例化,也知道通过实例调用变量或者方法; 但很多时候类不是我们自己写的,所以我们对类不是很了解,这个时候可以通过反射来了解或者调用类本身。 假设有个类 名字是AClass A{} 了解这个类我们可以用它创建变量,调用函数,但是当你不知道这个类,那么关于函数本身是不是无从下手,怎么办?原创 2017-07-19 17:08:56 · 2737 阅读 · 0 评论 -
idea 地址正确 sendRedirect和getRequestDispatcher报错,java.lang.IllegalStateException
今天写了一个最简单的Servlet 一直报错,显示请求重定向sendRedirect一直报错,找出原因后真的想骂人java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435) at Servlet.LoginServ原创 2017-07-20 17:13:38 · 1417 阅读 · 1 评论 -
JavaWeb Filter 过滤器的机制 与使用 请求重定向与请求转发的区别 跳转过滤,过滤器dispatcher REQUEST与FORWARD区别
首先要清楚,过滤的是url那么所有页面跳转url都会变吗?不会,比如请求转发,前前后后都是一个url 首先要弄清请求重定向与请求转发的区别; 举例来说有两个网页index.jsp 然后分别通过两种方式跳转到main.jsp请求转发 服务器端行为,可以理解为“内部处理”内容变,url不变 相当于index.jsp说交给我,然后偷偷外包给main.jsp去处理最常见,是用户业务流程的延原创 2017-07-20 15:07:31 · 22189 阅读 · 1 评论 -
Java基本数据类型、引用类对比及实际项目高级应用 使用==与equal的机制与不同
Java编程中常常要用到两个变量或者对象的对比 非常容易入坑 但应用得当会非常给力! 首先,区分两个概念 基本数据类型的对比(对比的是内容) 引用类型(类、接口的对象)的对比(默认对比引用,即地址) 下面用代码举几个例子最直观1.基本数据类型对比 对于基本数据类型,只有==对比,对比的是内容 // 基本数据类型比较 int a=1;原创 2017-06-01 23:36:08 · 341 阅读 · 0 评论 -
Integer等包装类及String类的对比 ==与equals()方法的机制与不同
除了四类八种基本数据类型,还有一些基本数据类型对应引用类型(Integer等包装类和作String类)那么这些引用类型的== equals()方法有什么区别呢?原创 2017-06-02 10:20:52 · 711 阅读 · 0 评论 -
DOM方式解析XML文档 解析器Parser;三种Node区别 ElementNode AttributeNode TextNode
目标:解析books.xml文档并输出图书信息1. 解析器Parser首先解析XML文件之前要理解 解析器Parser是个什么东西 所谓 parser,一般是指把某种格式的文本(字符串)转换成某种数据结构的过程。最常见的> parser,是把程序文本转换成编译器内部的一种叫做“抽象语法树”(AST)的数据结构。2三种类型的Node和差别原创 2017-06-11 16:15:12 · 1343 阅读 · 0 评论 -
java synchronized详解 线程安全与线程非安全
转自 作者:GangWang 出处:http://www.cnblogs.com/GnagWang/Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行转载 2017-06-25 06:30:59 · 312 阅读 · 0 评论 -
try catch finally 返回值问题
结论:1、不管有木有出现异常,finally块中代码都会执行; 2、当try和catch中有return时,会等到finally执行完再返回; 3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的; 4、finall原创 2017-06-25 09:35:16 · 670 阅读 · 0 评论 -
数组长度为零和空引用的区别 files!=null&files.length()>0 空指针或赋空值
在判断非空的时候 常常用到files!=null&files.length()>0 那么很多人好奇长度等于0不就是空吗 言简意赅的说: 数组初始化为总结为两种: 空指针:数组=null 空嘛,是真的空,连地址都没分配 赋空值:数组={}; 就是没内容,但是有分配空间,长度为0,有地址原创 2017-06-06 20:51:11 · 1710 阅读 · 0 评论 -
利器系列-为Tomcat添加User 像easyPHP那样使用Manager App高效管理你的应用
工欲善其事,必先利其器大家使用Tomcat加载网页时 每次都要在地址栏输入精准的位置,但是当文件很多时,不直观,很麻烦,能不能像easyPHP那样可以直观浏览项目文件呢?原创 2017-06-14 10:41:24 · 354 阅读 · 0 评论 -
数据类型范围,有符号类型无符号类型,正负, 反码补码的终极理解,一看就懂
经常看到很多初学者被有符号类型无符号类型,还有什么首位是符号位blablabla弄的云里雾里,下面用特别简单的例子给大家讲一下,瞬间就懂。首先3位2进制数能代表多少,很简单 000~111 0~7 一共8个数 这是最简单的读法,但是咱们又想用同样的东西表示正负可咋整; 简单 对半劈 8分开一办吧 一半正一半负 大家公平OK?原创 2017-06-15 13:53:52 · 1520 阅读 · 0 评论 -
一文读懂锁、CAS、volitale 附赠并发学习神文(英文版)
Disruptor的恐怖性能之前看了很多关于并发的中文文章 感觉没有特别吃透,最近在研究一个高性能消息队列的时候 在具体的场景下关于三者区别有更深的体会 首先介绍一下主角 Disruptor是一个高性能高吞吐低延迟 并发读写队列的实现对比一下官方ArrayBlockingQuene延迟显著减小,那么我想问Disruptor你为何如此优秀?锁的性能开销disruptor做了一个及其简单但及...原创 2019-07-26 16:36:00 · 234 阅读 · 0 评论