java基础知识
文章平均质量分 83
王晓之_技术之路
专注spring,一步一步成长为技术大牛
展开
-
集合类说明及区别
Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些C转载 2015-04-20 22:43:44 · 322 阅读 · 0 评论 -
HttpClient使用详解
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会转载 2017-04-26 08:51:30 · 355 阅读 · 0 评论 -
session原理及实现共享
最近,在工作中遇到一个问题,问题描述:一个用户在登录成功以后会把用户信息存储在session当中,这时session所在服务器为server1,那么用户在session失效之前如果再次使用app,那么可能会被路由到server2,这时问题来了,server没有该用户的session,所以需要用户重新登录,这时的用户体验会非常不好,所以我们想如何实现多台server之间共享session,让用户状态转载 2017-04-26 08:57:44 · 3415 阅读 · 0 评论 -
Java基础之集合
最近看泛型的时候,刚好看到集合相关的,所以想把一些常用集合类型的思路理清一下。参考文章: http://android.blog.51cto.com/268543/400557/ http://www.cnblogs.com/xwdreamer/archive/2012/05/30/2526822.html http://blog.csdn.net/softwave/artic转载 2017-04-26 08:59:17 · 295 阅读 · 0 评论 -
Linux负载均衡软件LVS之一(概念篇)
一、 LVS简介LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能转载 2017-04-26 09:00:41 · 417 阅读 · 0 评论 -
Java开发中的23种设计模式详解
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式转载 2017-04-26 09:02:13 · 556 阅读 · 0 评论 -
成为java高手必读的11本书
“学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会。个人认为看书有两点好处:1.能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料2.对着书上的代码自己敲的时候方便“看完书之后再次提升自我的最好途径是看一些相关的好博文“,我个人认为这是学习的第二步,因为一本书往往有好几百页,好的博文是自己看书学习之后的一些总结转载 2017-06-07 11:38:56 · 2645 阅读 · 1 评论 -
http响应状态码大全
http状态返回代码 1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。http状态返回代码代码 说明100 (继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。http状态返回代码 2xx(成功)表示成功处理了请求的状态代码。原创 2017-06-20 14:10:38 · 504 阅读 · 0 评论 -
Servlet 生命周期、工作原理
Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。service():它是S原创 2017-06-20 14:12:09 · 269 阅读 · 0 评论 -
forward和redirect的区别
SetCookie、GetCookie自行设定有效日期:Response.Cookies(CookieName).Expires=#日期# 页面转发区别:在Servlet中两种实现: forward方式:request.getRequestDispatcher("/somePage.jsp").forward原创 2017-06-20 14:13:18 · 272 阅读 · 0 评论 -
Java中ArrayList和LinkedList区别
ArrayList和LinkedList的大致区别如下:1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。原创 2017-06-20 14:14:26 · 270 阅读 · 0 评论 -
Java Volatile(包含对volatile数组和对象的理解)
1.多线程中重要概念1.1 可见性也就说假设一个对象中有一个变量i,那么i是保存在main memory中的,当某一个线程要操作i的时候,首先需要从main memory中将i 加载到这个线程的working memory中,这个时候working memory中就有了一个i的拷贝,这个时候此线程对i的修改都在其working memory中,直到其将i从working memory写转载 2017-04-26 08:49:06 · 4242 阅读 · 1 评论 -
simpledateformat线程不安全解决方案
1 出现原因代码功能性测试和低并发测试时一切正常,但是高并发多线程性能测试时出现Java.lang.NumberFormatException: multiplepoints错误,排查原因发现是SimpleDateFormat线程不安全引起。2 网上解决方案1. 局部变量,每次new SimpleDateFormat,这样开销过大,对性原创 2017-04-26 08:46:27 · 405 阅读 · 0 评论 -
线程池的原理及实现
1、线程池简介: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。 一个线程转载 2017-04-26 08:45:52 · 554 阅读 · 0 评论 -
map和list遍历测试和遍历map的四种方法
public static void main(String[] args) { Map map = new HashMap(); map.put("1", "value1"); map.put("2", "value2"); map.put("3", "value3"); //第一种:普遍使用,二次取值 System.out.println("通过原创 2015-04-20 22:45:24 · 438 阅读 · 0 评论 -
正则表达式30分钟入门教程
首页 | 常用正则表达式 | 正则表达式测试工具正则表达式30分钟入门教程版本:v2.33 (2013-1-10) 作者:deerchao 转载请注明来源目录跳过目录本文目标如何使用本教程正则表达式到底是什么东西?入门测试正则表达式元字符字符转义重复字符类分枝条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西没提到联系作转载 2015-10-30 15:18:00 · 320 阅读 · 0 评论 -
最近5年133个Java面试问题列表
Java 面试随着时间的改变而改变。在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入。 在我初入职场的时候,类似于 Vector 与 Array 的区别、HashMap 与 Hashtable 的区别是最流行的问题,只需要记住它们,就能在面试中获得更好的机会,但这种情形已经不复存在。如今,你转载 2017-04-24 10:05:46 · 583 阅读 · 0 评论 -
HashMap和Hashtable的区别
HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题。HashMap的工作原理、ArrayList与Vector的比较以及这个问题是有关Java 集合框架的最经典的问题。Hashtable是个过时的集合类,存在于Java API中很久了。在Java 4中被重写了,实现了Map接口,所以自此以后也成了Java转载 2017-04-26 08:33:25 · 209 阅读 · 0 评论 -
GC的三大基础算法
1. 垃圾(Garbage)就是需要回收的对象。作为编写程序的人,是可以做出“这个对象已经不再需要了”这样的判断,但计算机是做不到的。因此,如果程序(通过某个变量等等)可能会直接或间接地引用一个对象,那么这个对象就被视为“存活”;与之相反,已经引用不到的对象被视为“死亡”。将这些“死亡”对象找出来,然后作为垃圾进行回收,这就是GC的本质。2、根(Root)就是判转载 2017-04-26 08:34:36 · 1336 阅读 · 0 评论 -
TCP/IP四层模型
TCP/IP参考模型 ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。如图2-1所示,是TCP/IP参考模型和OSI参考模型的对比示意图。 图2-1 TCP/IP参考模型 2.1 TCP/IP参考模型的层次结构 TCP/IP协议栈是美国国防部高级研究计划局计转载 2017-04-26 08:37:01 · 534 阅读 · 0 评论 -
实现Http Server的三种方法
一、使用SUN公司在JDK6中提供的新包com.sun.net.httpserver JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,它支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现,程序员必须自己实现HttpHandler接口,H转载 2017-04-26 08:39:33 · 36117 阅读 · 0 评论 -
Java内存区域划分、内存分配原理
运行时数据区域 Java虚拟机在执行Java的过程中会把管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,而有的区域则依赖线程的启动和结束而创建和销毁。 Java虚拟机包括下面几个运行时数据区域: 程序计数器 程序计数器是转载 2017-04-26 08:40:56 · 245 阅读 · 0 评论 -
ArrayList自动扩容解析
探索ArrayList自动改变size真相ArrayList的列表对象实质上是存储在一个引用型数组里的,有人认为该数组有“自动增长机制”可以自动改变size大小。正式地说,该数组是无法改变大小的,实际上它只是改变了该引用型数组的指向而已。下面,让我们来看看java是怎样实现ArrayList类的。一、ArrayList类的实质 ArrayList底层采用Ob转载 2017-04-26 08:41:45 · 225 阅读 · 0 评论 -
JVM性能调优
最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录。一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过转载 2017-04-26 08:43:38 · 239 阅读 · 0 评论