- 博客(54)
- 收藏
- 关注
原创 spring架构分析(一)
一、spring架构 Spring IOC :包含了最为基本的IOC容器备案factory的接口与实现,它是spring框架的核心 Spring AOP: 它是spring的另一个核心,是围绕着AOP的增强功能,集成了AspectJ作为AOP的一个特定实现,同时还在JVM动态代理/CGLIB的基础上,视线里声明式事务处理,就是通过AOP集成的。 Spring MVC:...
2014-07-01 20:05:47
140
原创 java 实践中的一些问题(2)
问题四、java中对象相等的判断——equals 在平常编写代码的过程中,我们经常会需要判断2个对象是否相等,下面就谈谈如何实现满足需求的对象相等方法。 1> 一般自己来实现equals方法可以按照以下几个步骤去实现 1、如果某个class的2个对象占据不同的内存空间,也可以逻辑上认为相等,那就得为这个class定义equals()...
2014-04-14 16:44:28
105
原创 详细分析java中断机制
1. 引言当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务。Java没有提供一种安全直接的方法来停止某个线程,但是Java提供了中断机制。如果对Java中断没有一个全面的了解,可能会误以为被中断的线程将立马退出运行,但事实并非如此。中断机制是如何工作的?捕获或检测到中断后,是抛出Int...
2014-04-01 20:02:35
103
原创 java中的进程与线程及java对象的内存结构
1、实现线程的三种方式: 使用内核线程实现 内核线程(Kernel Thread, KLT)就是直接由操作系统内核支持的线程,这种线程由内核来完成线程切换,内核通过操作调度器对线程进行调度,并负责将线程的任务映射到各个处理器上。程序一般不会直接去使用内核线程,而是去使用内核线程的一种高级接口——轻量级进程(Light Weight Process,LWP),轻量级进...
2014-04-01 15:33:36
373
原创 java 类文件加载
一、类加载器基本概念 类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,然后重新解析成JVM统一要求的格式,最终转换成java.la...
2014-02-26 18:16:21
161
原创 JVM内存结构
1、JVM的概念 虚拟机是模拟执行某种指令集体系结构(ISA)的软件,是对操作系统和硬件的一种抽象。java虚拟机就是对计算机系统结构的一种简单模拟。 Java虚拟机(JVM)是由Java虚拟机规范定义的,其上运行的是字节码指令集。这种字节码指令集包含一个字节的操作码(opcode),零至多个操作数(oprand),虚拟机规范明确定义了每种字节码指令完成...
2014-02-19 15:23:45
105
原创 Java多线程-工具篇-BlockingQueue
在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据...
2014-02-18 14:31:02
87
原创 Java多线程之同步器基础:AQS框架深入分析
一、什么是同步器 多线程并发的执行,之间通过某种共享状态来同步这个共同的语义可以称之为同步器。可以认为以上所有的锁机制都可以基于同步器定制来实现的。 而juc(java.util.concurrent)里的思想是将这些场景抽象出来的语义通过统一的同步框架来支持。juc 里所有的这些锁机制都是基于 AQS ( AbstractQueuedSynchronizer )...
2014-02-18 14:07:37
121
原创 java并发编程实践
一、基础概念总结1.多线程程序可能存在的风险:(1)安全性问题:多线程程序在没有充足同步的情况下,在特定的线程执行时序下,多个线程同时操作一块共享资源时,可能引发错误。(2)活跃性问题:当多个线程存在竞争共享资源时,可能会引发死锁,饥饿(线程长时间得不到执行)及活锁(定义:不断的重复相同的操作,而且永远不会成功)或死循环等问题。(3)性能问题:引入多线程后,如果设置...
2014-02-18 11:51:38
173
原创 java 实践中的一些问题(1)
问题一、java的by value而非by reference传递方式 java中的数据类型分为两大类:基础类型和引用类型,基础类型的值传递很容易理解,它被作为参数传递并修改后,并不会影响它原来的值,而引用类型,它传的是它引用的地址,即使被传到方法内被修改后,直接会影响这个对象本身的值。举例如下public static void modifyPoint(Point p,...
2014-01-14 11:20:58
97
原创 JVM参数设置、性能监控及gc分析
一、JVM参数的使用1、Xms与XmxXms:JVM启动时初始化堆内存的大小Xmx:JVM分配的堆内存的最大值Xms设置的值过小,可能会导致应用启动时内存不够,从而应用启动失败,Xmx值过小,可能会导致应用启动后运行一段时间,内存不够用,一般设置Xmx大小为总机器内存的80%。同时将Xms的值和Xmx的值设置为一样,从而减少系统新增heap内存带来的性能损耗。 错误:j...
2013-12-23 10:46:51
651
原创 谈谈JAVA的字符串
1、String类String是一个特殊的类,它自带的方法里面看起来修改字符串内容的实际上都是返回一个新的字符串,而原来的字符串从未被改变过。2、重载操作符(在特定的类操作中,操作符的含义被重新定义过)“+”操作符被用作连接字符串对象是,它底层会创建一个StringBuider对象,然后调用append方法来连接字符串。3、toString方法当“+”号连接的对象不是一个S...
2013-09-25 10:39:39
96
原创 说一说java集合类
1、java集合类的结构图: 2、List、Set、Map各种实现的差别: List:用于存放可重复的对象Set:用于存放不可重复的对象Map:存放键值对ArrayList适合随机访问;LinkedList适合插入和删除;HashSet使用散列,查询速度较快;TreeSet使用红黑树存储,默认按字典顺序排序;LinkedHashSet按插入顺序保存元素;HashMap快速访...
2013-09-23 19:40:16
504
原创 java编码与protobuf使用
1、为什么需要编码 计算机中存储信息的最小单元是一个字节即 8 个 bit,所以能表示的字符范围是 0~255 个;人类要表示的符号太多,无法用一个字节来完全表示;要解决这个矛盾必须需要一个新的数据结构 char,从 char 到 byte 必须编码。2、各种常见编码的简介ASCII 码学过计算机的人都知道 ASCII 码,总共有 128 个,用一个字节的低 7 位表...
2013-08-15 17:11:02
685
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人