java基础
口怪物口
这个作者很懒,什么都没留下…
展开
-
list,map,set,queue容器汇总介绍
1.ArrayList(非线程安全)ArrayList 是一个数组队列,实现了动态数组功能,继承了AbstractList,提供了相关的添加、删除、修改、遍历等功能,可以通过序号随机访问对应数值.对接访问时,效率较高,效率的主要开销在数组数据的预留空间开销.ArrayList包含了两个重要的对象:elementData 数组和size。一个用来储存数据,一个用来统计大小.新建一个Arra...原创 2019-03-11 14:34:14 · 808 阅读 · 0 评论 -
用@resource注入的bean和容器中的bean不是同一个bean
开发中遇到问题:在spring默认的单例模式下,发现事件监听类中用@resource注入的bean和action层@resource注入的类不是同一个类,事件监听类是运用spring-jms包中的消息接收方法,将监听类,监听类中的监听方法,和消息转换类传入MessageListenerAdapter类,而MessageListenerAdapter是通过反射的方法,执行了我的监听方法,原码...原创 2019-05-14 00:15:11 · 1127 阅读 · 0 评论 -
网络I/O优化
网络I/O优化的基本原则:1.减少网络交互的次数在网络交互两端设置缓存,发起交互的一端设置缓存,如优秀的数据库框架hibernate,mybatis都有一级缓存和二级缓存,有效的减少了数据库的访问次数,即减少了网络链接的次数,在接收端设置缓存可以减少数据的处理时长,使ESTABLISHED状态缩短,加快链接释放速度,链接状态转换如下图:也可以通过合并的方式减少交互次数,即批量请求,比...原创 2019-04-26 19:17:50 · 820 阅读 · 0 评论 -
BIO,NIO,AIO原理详解以及代码实现,结果证明
一.BIOBIO是java1.4之前唯一的IO逻辑,在客户端通过socket向服务端传输数据,服务端监听端口,由于传统io读数据的时候,如果数据没有传达,IO会一直等待输入传入,所以当有请求过来的时候,新起一条线程对数据进行等待,处理.导致每一个链接都对应着服务器的一个线程.可以看出,BIO是同步阻塞的BIO实现代码如下:public class BIO { public...原创 2019-03-06 17:13:02 · 1712 阅读 · 0 评论 -
java锁相关介绍与分析
本文主要介绍两种锁:synchronized和lock,以及锁相关比较重要的知识:volatile,atomic,锁的升级1.synchronized三种同步形式同步静态方法时,锁住的是类实例,因为类信息存放在方法区,是全局共享的,所以会将所有调用该方法的线程全部锁住.同步普通方法,锁住的是对象的实例(this)同步一个对象实例(同步代码块)时,以该对象为锁的代码块.syn...原创 2019-03-21 10:20:16 · 176 阅读 · 0 评论 -
线程池工作原理,功能介绍以及原码分析
代码中运用线程池有两个步骤:创建线程池和线程池中运行线程1.创建线程池创建线程池的方法以及实现原码:Executors.newSingleThreadExecutor();public static ExecutorService newSingleThreadExecutor() { return new FinalizableDelegatedExecutor...原创 2019-03-14 12:08:04 · 171 阅读 · 0 评论 -
java虚拟机类加载以及class中字节码的执行
一.jvm类加载class的文件结构:1.文件头(版本和class标志).2.常量池(类名,方法名称类型,属性名称类型,并均为索引)3.类信息.4.方法和属性信息java类在遇到1.类似new指令;2.反射调用;3.子类加载;4包含main函数;的时候会在虚拟机中加载该类,加载的大体步骤为:加载->验证->准备->解析->初始化1.加载加载类主要完成的工...原创 2019-03-04 20:23:06 · 841 阅读 · 0 评论 -
jvm内存相关详解
一.内存区域分配jvm内存简单分为程序计数器,栈,堆,以及方法区便于理解,这里通过创建实例变量对象以及调用来讲一下各个区域的分工.先列举下程序中一个类需要加载的数据:类的基本信息(包括代码),常量(final修饰,不可改变),局部变量,静态变量,native方法(调用底层方法的非java方法),以及方法信息1.场景:代码中new一个新对象a.先加载这个类,类的信息,常量,静...原创 2019-03-02 13:51:39 · 165 阅读 · 0 评论 -
java编码问题
首选需要理解unicode:为了把全世界人民所有的所有的文字符号都统一进行编码,于是制定了UNICODE标准字符集,没有什么编码规则,只是编码和字符一一对应,在java内存中,string类型的字符就是以unicode的形式存在内存中,所以,在debug的时候,string既不属于gbk,也不属于utf-8和其他的编码格式。知道这个问题以后,很多编码问题就可以迎刃而解:既然知道java内存...原创 2019-05-12 20:59:22 · 204 阅读 · 0 评论 -
重新整理一遍java相关,从java最基本的jdk开始
重新整理一遍java相关,从java最基本的jdk开始:java安装后有jdk和jrejre为java运行时环境,即如果你想运行Java程序,安装jre即可jdk为程序员用的开发环境,即如果你想开发java程序,则需要安装jdk,jre包括虚拟机jvm和java自带sdk,jdk中包括虚拟机jvm,自带sdk,编译器javac,和一些调试工具,如命令行形式的jps,jstat,ji...原创 2019-02-28 19:59:07 · 111 阅读 · 0 评论 -
hashCode()和equals()的区别和联系
equals()是对象类object的基础方法,可以被重写,如果不重写,意义和==没有区别(string类默认重写了equals方法和hashCode方法).hashCode()生成的是散列值,在散列表中有用,散列表通过散列值可以快速的定位数据位置,支持散列表的集合像HashMap.HashSet等.散列表判断相等是hashCode和equal都相等的对象才为相等下面用代码证明:pu...原创 2019-03-07 13:43:24 · 312 阅读 · 0 评论