04 2017 档案

摘要:补充: 管道符号: | 含义: 命令1 的正确输出作为命令2的输出对象. 格式: 命令1 | 命令2 举例: ls -ctrl | more 常用命令: netstat -an | grep ESTABLISHED 查看正在连接的端口 netstat -an | grep LISTEN find . 阅读全文
posted @ 2017-04-14 23:17 WakamiyaShinobu 阅读(382) 评论(0) 推荐(0)
摘要:阻塞:用户进程访问数据时,如果未完成IO,等待IO操作完成或者进行系统调用来判断IO是否完成非阻塞:用户进程访问数据时,会马上返回一个状态值,无论是否完成 同步:用户进程发起IO(就绪判断)后,轮询内核状态异步:用户进程发起IO后,可以做其他事情,等待内核通知 介绍一下IO模型 网络IO模型和文件I 阅读全文
posted @ 2017-04-14 23:13 WakamiyaShinobu 阅读(482) 评论(0) 推荐(0)
摘要:三次握手 第一次握手:主机A发送位码为syn=1,随机产生seq number=10001的数据包到服务器,主机B由SYN=1知道,A要求建立联机,此时状态为SYN_SENT; 第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1, 阅读全文
posted @ 2017-04-14 18:05 WakamiyaShinobu 阅读(8846) 评论(0) 推荐(0)
摘要:阅读目录 1.4.1 单例模式 1.4.2 抽象工厂模式 1.4.3 观察者模式 1.4.4 装饰模式 1.4.5 适配器模式 1.4.6 外观模式 阅读目录 1.4.1 单例模式 1.4.2 抽象工厂模式 1.4.3 观察者模式 1.4.4 装饰模式 1.4.5 适配器模式 1.4.6 外观模式 阅读全文
posted @ 2017-04-14 17:43 WakamiyaShinobu 阅读(1107) 评论(0) 推荐(0)
摘要:概述:设计模式是一套被反复使用、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,下面为大家介绍几种常用的设计模式。 概述:设计模式是一套被反复使用、经过分类编目的、代码设计经验的总结。使用设计模 阅读全文
posted @ 2017-04-14 17:37 WakamiyaShinobu 阅读(2234) 评论(0) 推荐(0)
摘要:1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql中 阅读全文
posted @ 2017-04-14 17:32 WakamiyaShinobu 阅读(258) 评论(0) 推荐(0)
摘要:1.1 什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。 mybaits提供一级缓存,和二级缓存。 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据。不同的s 阅读全文
posted @ 2017-04-14 17:31 WakamiyaShinobu 阅读(14172) 评论(2) 推荐(0)
摘要:写在前面 正本文参考了《spring技术内幕》和spring 4.0.5源码。本文只描述原理流程的主线部分,其他比如验证,缓存什么可以具体参考源码理解。 Spring IOC 一、容器初始化 容器的初始化首先是在对应的构造器中进行,在applicationContext的实现类构造器中,首先对参数路 阅读全文
posted @ 2017-04-14 17:27 WakamiyaShinobu 阅读(19287) 评论(1) 推荐(1)
摘要:AOP:面向切面、面向方面、面向接口是一种横切技术横切技术运用:1.事务管理: (1)数据库事务:(2)编程事务(3)声明事物:Spring AOP-->声明事物 2.日志处理:3.安全验证: Spring AOP OOP升级 静态代理原理:目标对象:调用业务逻辑 代理对象:日志管理表示层调用 >代 阅读全文
posted @ 2017-04-14 17:26 WakamiyaShinobu 阅读(11149) 评论(0) 推荐(0)
摘要:从web.xml中 servlet的配置开始, 根据servlet拦截的url-parttern,来进行请求转发 Spring MVC工作流程图 图一 图二 Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; 2 阅读全文
posted @ 2017-04-14 17:18 WakamiyaShinobu 阅读(503) 评论(0) 推荐(0)
摘要:阅读目录 开发servlet的三种方式 理解实现servlet接口的方式,理解servlet生命周期 Servlet接口有五个方法 继承GenericServlet 继承HttpServlet 现在很多的开发都是用的框架,然后很多同学学习的时候又是直接接触的框架,对于底层的一些开发,完全没有任何的了 阅读全文
posted @ 2017-04-14 17:11 WakamiyaShinobu 阅读(1505) 评论(0) 推荐(1)
摘要:一、架构 下面谈谈我对Tomcat架构的理解 总体架构: 1、面向组件架构 2、基于JMX 3、事件侦听 1)面向组件架构 tomcat代码看似很庞大,但从结构上看却很清晰和简单,它主要由一堆组件组成,如Server、Service、Connector等,并基于JMX管理这些组件,另外实现以上接口的 阅读全文
posted @ 2017-04-14 17:07 WakamiyaShinobu 阅读(494) 评论(0) 推荐(0)
摘要:我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! 我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按 阅读全文
posted @ 2017-04-09 17:51 WakamiyaShinobu 阅读(391) 评论(0) 推荐(1)
摘要:数据库索引类型及实现方式 1、索引定义 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引是对数据库表中一个或多个列(例如,employee 表的姓氏 (lname) 列)的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。 2、建 阅读全文
posted @ 2017-04-09 17:06 WakamiyaShinobu 阅读(252) 评论(0) 推荐(0)
摘要:Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比 MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件。第一个 文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩 展名为.MYD (MYData)。索引文件的 阅读全文
posted @ 2017-04-09 16:46 WakamiyaShinobu 阅读(296) 评论(0) 推荐(0)
摘要:读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 为什么要分库、分表、读写分? 单表的数据量限制,当单表数据量到一定条数之后数据库性能会显著下降。数 阅读全文
posted @ 2017-04-08 17:58 WakamiyaShinobu 阅读(172) 评论(0) 推荐(0)
摘要:读写分离的意思是,写入的时候向 a 服务器写入,而读出的时候从 b c d 甚至更多的服务器读出;这样的架构适合于读多写少的应用,最典型的就是火车购票系统,一般我们买票的时候要先查询好多次,包括车次啊,时间啊,这都是读操作,而最后可能只买一张车票,这是写操作;做了读写分离之后,可以将资源分配到最合理 阅读全文
posted @ 2017-04-06 19:29 WakamiyaShinobu 阅读(484) 评论(0) 推荐(0)
摘要:0.参考文献: http://jacki6.iteye.com/blog/774866 http://baike.baidu.com/view/402020.htm 1.范式说明 1.1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能同 阅读全文
posted @ 2017-04-06 17:40 WakamiyaShinobu 阅读(232) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/guchuanyun111/article/category/6335900 (1)什么是redis? Redis 是一个基于内存的高性能key-value数据库。 (有空再补充,有理解错误或不足欢迎指正) (2)Reids的特点 Redis本质上是一个Ke 阅读全文
posted @ 2017-04-06 17:33 WakamiyaShinobu 阅读(820) 评论(0) 推荐(0)
摘要:Hadoop是什么?Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算. Hadoop框架中最核心设计就是:HDFS和MapReduce.HDFS提供了海量数据的存储,MapReduce提供了 阅读全文
posted @ 2017-04-06 17:05 WakamiyaShinobu 阅读(265) 评论(0) 推荐(0)
摘要:Hadoop历史 雏形开始于2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。 随后在2003年Google发表了一篇技术学术论文谷歌文件系统(GFS)。GFS也就是google File Sy 阅读全文
posted @ 2017-04-06 11:21 WakamiyaShinobu 阅读(160) 评论(0) 推荐(0)
摘要:NIO 概述 NIO有三个核心组件: 通道(Channels) 缓存(Buffers) 选择器(Selectors) 实际上,NIO的组件和类远不止这三个,但这个三个组件是核心。至于其它组件,例如Pipe和FileLock只不过是围绕在三大核心组件旁的实用工具类。因此,本文将重点关注这三个组件。其它 阅读全文
posted @ 2017-04-05 11:07 WakamiyaShinobu 阅读(781) 评论(0) 推荐(0)
摘要:Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 IO流的分类 根据处理数据类型的不同分为:字符流和 阅读全文
posted @ 2017-04-05 11:04 WakamiyaShinobu 阅读(773) 评论(0) 推荐(0)
摘要:摘要: 关于BIO和NIO的理解 最近大概看了ZooKeeper和Mina的源码发现都是用Java NIO实现的,所以有必要搞清楚什么是NIO。下面是我结合网络资料自己总结的,为了节约时间图示随便画的,能达意就行。 简介: BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求 阅读全文
posted @ 2017-04-04 23:36 WakamiyaShinobu 阅读(65289) 评论(4) 推荐(9)
摘要:(1)参数 -Xms:初始堆大小 -Xmx :最大堆大小 此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存 -Xmn :年轻代大小 整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大, 阅读全文
posted @ 2017-04-04 23:26 WakamiyaShinobu 阅读(1209) 评论(0) 推荐(0)
摘要:JVM垃圾回收与性能调优总结 JVM调优的几种策略 一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,P 阅读全文
posted @ 2017-04-04 23:20 WakamiyaShinobu 阅读(306) 评论(0) 推荐(0)
摘要:JVM调优总结 一、相关概念 基本回收算法 引用计数(Reference Counting)比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 标记-清除(Mark-Sweep)此算法执 阅读全文
posted @ 2017-04-04 23:19 WakamiyaShinobu 阅读(354) 评论(0) 推荐(0)
摘要:堆 所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由FromSpace和ToSpace组成,结构图如下所示: 新生代。新建的对象都是用新生代分配内存,Eden空间不 阅读全文
posted @ 2017-04-04 23:13 WakamiyaShinobu 阅读(577) 评论(0) 推荐(0)
摘要:堆内存的结构: 垃圾收集器就是垃圾收集算法的具体实现了。不同虚拟机所提供的垃圾收集器可能会有很大差别,我们使用的是HotSpot,HotSpot这个虚拟机所包含的所有收集器如图: 上图展示 了7种作用于不同分代的收集器,如果两个收集器之间存在连线,那说明它们可以搭配使用。虚拟机所处的区域说明它是属于 阅读全文
posted @ 2017-04-04 23:05 WakamiyaShinobu 阅读(1612) 评论(0) 推荐(0)
摘要:出处:博客园左潇龙的技术博客--http://www.cnblogs.com/zuoxiaolong,多谢分享 GC策略解决了哪些问题? 既然是要进行自动GC,那必然会有相应的策略,而这些策略解决了哪些问题呢,粗略的来说,主要有以下几点。 1、哪些对象可以被回收。 2、何时回收这些对象。 3、采用什 阅读全文
posted @ 2017-04-04 22:58 WakamiyaShinobu 阅读(285) 评论(0) 推荐(0)
摘要:在上一篇JVM类加载机制详解(一)JVM类加载过程中说到,类加载机制的第一个阶段加载做的工作有: 1、通过一个类的全限定名(包名与类名)来获取定义此类的二进制字节流(Class文件)。而获取的方式,可以通过jar包、war包、网络中获取、JSP文件生成等方式。 2、将这个字节流所代表的静态存储结构转 阅读全文
posted @ 2017-04-04 18:31 WakamiyaShinobu 阅读(658) 评论(0) 推荐(0)
摘要:ThreadPoolExecutor机制 ThreadPoolExecutor机制 一、概述 1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务; 2、Executors方法提供 阅读全文
posted @ 2017-04-04 16:26 WakamiyaShinobu 阅读(68962) 评论(5) 推荐(8)
摘要:JAVA并发编程——EXECUTORS 线程池的思想是一种对象池的思想,开放一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完毕,对象归还给池。这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。 代码: http://w 阅读全文
posted @ 2017-04-04 13:06 WakamiyaShinobu 阅读(1466) 评论(0) 推荐(0)
摘要:原文地址 原文作者:Benjamin Winterberg 译者:张坤 欢迎阅读我的Java8并发教程的第一部分。这份指南将会以简单易懂的代码示例来教给你如何在Java8中进行并发编程。这是一系列教程中的第一部分。在接下来的15分钟,你将会学会如何通过线程,任务(tasks)和 exector se 阅读全文
posted @ 2017-04-04 13:04 WakamiyaShinobu 阅读(557) 评论(0) 推荐(0)
摘要:Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release 阅读全文
posted @ 2017-04-04 12:30 WakamiyaShinobu 阅读(350) 评论(0) 推荐(0)
摘要:上一篇讲述了并发包下的Lock,Lock可以更好的解决线程同步问题,使之更面向对象,并且ReadWriteLock在处理同步时更强大,那么同样,线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。 那么引入本篇的主角,Condition,Condition 将 阅读全文
posted @ 2017-04-04 11:37 WakamiyaShinobu 阅读(674) 评论(0) 推荐(0)
摘要:Java 理论与实践: JDK 5.0 中更灵活、更具可伸缩性的锁定机制 新的锁定类提高了同步性 —— 但还不能现在就抛弃 synchronized Java 理论与实践: JDK 5.0 中更灵活、更具可伸缩性的锁定机制 新的锁定类提高了同步性 —— 但还不能现在就抛弃 synchronized 阅读全文
posted @ 2017-04-04 11:04 WakamiyaShinobu 阅读(7369) 评论(0) 推荐(2)
摘要:FutureTask 源码解析 版权声明:本文为本作者原创文章,转载请注明出处。感谢 码梦为生| 刘锟洋 的投稿 站在使用者的角度,future是一个经常在多线程环境下使用的Runnable,使用它的好处有两个:1. 线程执行结果带有返回值2. 提供了一个线程超时的功能,超过超时时间抛出异常后返回。 阅读全文
posted @ 2017-04-04 10:48 WakamiyaShinobu 阅读(449) 评论(0) 推荐(0)
摘要:我是分割线 java多线程-概念&创建启动&中断&守护线程&优先级&线程状态(多线程编程之一)java多线程同步以及线程间通信详解&消费者生产者模式&死锁&Thread.join()(多线程编程之二)java&android线程池-Executor框架之ThreadPoolExcutor&Sched 阅读全文
posted @ 2017-04-04 10:43 WakamiyaShinobu 阅读(933) 评论(0) 推荐(0)
摘要:Callable 和 Runnable 的使用方法大同小异, 区别在于: 1.Callable 使用 call() 方法, Runnable 使用 run() 方法 2.call() 可以返回值, 而 run()方法不能返回。 3.call() 可以抛出受检查的异常,比如ClassNotFoundE 阅读全文
posted @ 2017-04-04 10:14 WakamiyaShinobu 阅读(301) 评论(0) 推荐(0)
摘要:CyclicBarrier和CountDownLatch一样,都是关于线程的计数器。 用法略有不同,测试代码如下: 阅读全文
posted @ 2017-04-04 09:57 WakamiyaShinobu 阅读(1728) 评论(0) 推荐(0)
摘要:Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我们拿Java线程(二)中的一个例子简单的实现一下和sychronized一样的效果,代码如下: [j 阅读全文
posted @ 2017-04-03 22:58 WakamiyaShinobu 阅读(827) 评论(0) 推荐(0)
摘要:前言 早在去年就简单的使用了一下Spring Boot,当时就被其便捷的功能所震惊。但是那是也没有深入的研究,随着其在业界被应用的越来越广泛,因此决定好好地深入学习一下,将自己的学习心得在此记录,本文主要围绕以下几点进行说明: Spring Boot 简介 使用Spring Boot快速搭建一个We 阅读全文
posted @ 2017-04-03 22:48 WakamiyaShinobu 阅读(2244) 评论(1) 推荐(1)
摘要:转自:http://www.xiaoyaochong.net/wordpress/?p=354 ArrayBlockingQueue是Java并发框架中阻塞队列的最基本的实现,分析这个类就可以知道并发框架中是如何实现阻塞的。 笔者工作了一两年之后,还不知道阻塞是如何实现的,当然有一个原因是前期学习的 阅读全文
posted @ 2017-04-03 22:47 WakamiyaShinobu 阅读(332) 评论(0) 推荐(0)
摘要:Java并发编程:并发容器之CopyOnWriteArrayList(转载) 原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个 阅读全文
posted @ 2017-04-03 22:09 WakamiyaShinobu 阅读(162) 评论(0) 推荐(0)
摘要:原文 http://blog.csdn.net/chdjj/article/details/38782221 主题 源码分析 红黑树 原文 http://blog.csdn.net/chdjj/article/details/38782221 主题 源码分析 红黑树 注:以下源码基于jdk1.7.0 阅读全文
posted @ 2017-04-03 21:44 WakamiyaShinobu 阅读(320) 评论(0) 推荐(0)
摘要:java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap. Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 HashMap是一个最常用的Map, 阅读全文
posted @ 2017-04-03 18:49 WakamiyaShinobu 阅读(243) 评论(0) 推荐(0)
摘要:今天来介绍下HashSet。前面,我们已经系统的对List和Map进行了学习。接下来,我们开始可以学习Set。相信经过Map的了解之后,学习Set会容易很多。毕竟,Set的实现类都是基于Map来实现的(HashSet是通过HashMap实现的)。 构造图如下: 蓝色线条:继承 绿色线条:接口实现 今 阅读全文
posted @ 2017-04-03 18:32 WakamiyaShinobu 阅读(2045) 评论(0) 推荐(1)
摘要:HashSet,TreeSet和LinkedHashSet的区别 Set接口Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Se 阅读全文
posted @ 2017-04-03 18:25 WakamiyaShinobu 阅读(303) 评论(0) 推荐(0)
摘要:概要 学完ArrayList和LinkedList之后,我们接着学习Vector。学习方式还是和之前一样,先对Vector有个整体认识,然后再学习它的源码;最后再通过实例来学会使用它。第1部分 Vector介绍第2部分 Vector数据结构第3部分 Vector源码解析(基于JDK1.6.0_45) 阅读全文
posted @ 2017-04-03 16:31 WakamiyaShinobu 阅读(3779) 评论(0) 推荐(1)
摘要:Java集合 LinkedList源码解析 一、源码解析1、 LinkedList类定义2、LinkedList数据结构原理3、私有属性4、构造方法5、元素添加add()及原理6、删除数据remove()7、数据获取get()8、数据复制clone()与toArray()9、遍历数据:Iterato 阅读全文
posted @ 2017-04-03 16:21 WakamiyaShinobu 阅读(235) 评论(0) 推荐(0)
摘要:写在前面 本文是针对Java 1.8的源代码进行解析的,可能会和其他版本有所出入。 全局变量 1. 默认容量 [java] view plain copy print? private static final int DEFAULT_CAPACITY = 10; [java] view plain 阅读全文
posted @ 2017-04-03 16:18 WakamiyaShinobu 阅读(305) 评论(0) 推荐(0)
摘要:线程间的通信、同步方式与进程间通信方式 说到线程之间通信方式:依据我的理解 主要是有两种吧 1.是通过共享变量,线程之间通过该变量进行协作通信; 2.通过队列(本质上也是线程间共享同一块内存)来实现消费者和生产者的模式来进行通信; 1.通过线程之间共享变量的方式 这个就有必要说下 wait(),no 阅读全文
posted @ 2017-04-03 15:37 WakamiyaShinobu 阅读(1133) 评论(0) 推荐(0)
摘要:volatile synschonized的区别 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同一时刻只能有一个线程能够用 synchronized 修饰的方法 或者 代码块。 vol 阅读全文
posted @ 2017-04-03 12:27 WakamiyaShinobu 阅读(551) 评论(0) 推荐(0)
摘要:Stringbuffer与Stringbuilder源码学习和对比 String/StringBuffer/StringBuilder的异同 (1)相同点观察源码会发现,三个类都是被final修饰的,是不可被继承的。(2)不同点String的对象是不可变的;而StringBuilder和String 阅读全文
posted @ 2017-04-03 12:02 WakamiyaShinobu 阅读(231) 评论(0) 推荐(0)