
javase
文章平均质量分 75
翁英健啊
博客用来打脸
展开
-
面试题 java垃圾回收机制
前几天面试的时候被问到垃圾回收机制的时候,心里还庆幸这个之前看过,可是答完后就傻了,面试官竟然问还有没有。好吧,我一直以为面试官是懂我说什么的,加上说的有点快,有点乱,很多东西都省略掉了,估计是我省略掉的被认为是我不懂的了。所以组织一下语言,下次尽量说的清楚一点。。内存回收机制:内存回收就是释放掉在内存中已经没用的对象。首先,要判断怎样的对象是没用的对象。这里有2种方法原创 2015-04-18 17:46:39 · 19467 阅读 · 2 评论 -
剑指offer面试题3-二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该函数: public boolean find(int[][] args,int key){ if(args==null ) throw new IllegalArgumentException(); int l原创 2015-04-28 00:08:34 · 961 阅读 · 0 评论 -
HashMap源码分析(三)hash
这个方法的移位太复杂,有些难看懂,就看看文档上是怎么说的: /** * Applies a supplemental hash function to a given hashCode, which * defends against poor quality hash functions. This is critical * because H原创 2015-07-05 14:16:22 · 1042 阅读 · 0 评论 -
HashMap源码分析(二)get
有了之前put的基础,再看get的代码应该就很简单了 //获取指定key的值 public V get(Object key) { //key为null,执行getForNullKey方法 if (key == null) return getForNullKey(); //计算一下键的hash,以免就用这个来比较是不是一个k原创 2015-07-05 13:15:15 · 695 阅读 · 0 评论 -
堆排序-java
堆的定义:对于所有的节点,均满足其子节点元素小于(大于)改节点元素的值根据根节点元素的大小,可以分为:小顶堆:节点的子元素比该节点元素要大。大顶堆:节点的子元素比该节点元素要小。堆排序的原理(以小顶堆为例):对于满足堆结构的数组,其最小的元素为根元素,即数组的第一个。在操作的时候,先从一个堆结构中取出最小的一个,与堆中最末尾的元素交换位置,将堆的容量减一,然后重构堆。原创 2015-07-18 18:03:04 · 694 阅读 · 0 评论 -
HashMap源码分析(一)
//预先了解HashMap中元素的是以Entry的形式存在的,他是一个key value的封装类HashMap中的逻辑结构:链表数组??可以把他看做是一个数组,数组的每一个元素,可以是空,可以是单个元素,也可以是一个(单向)链表(的一头)逻辑结构基本是这样的:在插入元素的时候,首先要计算一下hash值,估计一下在数组层面,这个keyvalue得放在那个位置,然后判断这个位置上是不是“已原创 2015-07-05 01:03:15 · 704 阅读 · 0 评论 -
HashMap源码分析(四)put-jdk8-红黑树的引入
HashMapjdk8以后他的逻辑结构发生了一点变化:大概就是这个意思:当某一个点上的元素数量打到一定的阈值的时候,链表会变成一颗树,这样在极端情况下(所有的元素都在一个点上,整个就以链表),一些操作的时间复杂度有O(n)变成了O(logn)。分析源代码;一.还是先看下put方法,证明一下上面的图基本是对的: public V put(K key原创 2015-07-08 00:20:01 · 6776 阅读 · 0 评论 -
快速排序-java
1.快速排序采用分治的方法,将一个数组按一定的值划分比比他大的,比他小的两段,然后以这样的方式一直划分,直到每段的数量都小于2,这样就形成了一个有序的数组。2.具体排序时的操作可以想象成是一个“挖坑填数的操作”这里一升序排序为例,给定一个数组,我们的目标是将数组分为两组,一组比x大,一组比x小。1.挖出第一个数,用x记录当前这个数,这样第一个坑就被挖出来了,原创 2015-07-18 18:31:59 · 636 阅读 · 0 评论 -
自定义struts(二)--FakeStruts实现@Transaction 注解事务控制
接着前两篇的:现在结合之前写的简单struts以及transactionManager,完成一个能够通过@Transaction完成事务控制的功能。我的想法是这样的:随便写个action类,里面的方法只要加上了@Transaction注解,在里面调用dao的方法,执行的就是事务的处理。如果没加,那就正常处理。实现原理:1.将action中的方法进行代理,查看注解原创 2015-07-22 18:55:37 · 3036 阅读 · 0 评论 -
项目收获-手动写个线程池。。
项目中有个自动归档的功能,自动给过期的个人单位等数据进行归档处理。基本的思路是这样的:使用另外一个线程,专门处理定时归档这件事,但是看了一下Timer实现,发现有好多缺点。测试1:public static void main(String[] args) { Timer timer = new Timer(); timer.schedule(new TimerTask()原创 2015-07-07 22:22:06 · 2853 阅读 · 0 评论 -
慎用Finalize方法以及Finalize方法的妙用
首先,要知道finalize方法跟c++的析构函数不一样,jvm并不保证会执行。一、慎用finalize方法finalize方法在什么时候被调用:在垃圾回收的时候,某个对象要被回收的时候,会先进行一次标记,并且将该对象的finalize放到一个低优先级的线程中去执行。等到下一次垃圾回收的时候再把这个对象回收。jvm并不保证在垃圾回收之前能够执行他的finalize方法,原创 2015-07-29 20:14:18 · 5660 阅读 · 0 评论 -
AtomicInteger分析--自实现无锁并发
前两天面试被问到“不用锁实现一个多线程并发访问不会造成资源共享问题的方法”当时我就傻眼了,不用锁怎么做。想到android中有一个looper就说了用队列,不过这答案并不是面试官满意的,也对,用队列不也要用到锁吗?这几天看了编程思想上的共享资源那节,以及好多博客上对volatile与Atomic*类的描述,算是懂了一些了,感觉收获很大。关于原子性,可视性,有序性这里就不说了原创 2015-07-23 11:26:07 · 2777 阅读 · 0 评论 -
LocalThread分析
LocalThread源码分析:一、首先看看LocalThread是干嘛的外面能够看到的方法就以下四个:get() protected T initialValue() 。 void remove() void set(T value) 可以猜测这是一个管理集合的类。二、再看看里面的一些方法1.构造方法:空的,那就不管2.getpubli原创 2015-07-22 11:19:20 · 6320 阅读 · 1 评论 -
JVM原理和优化
JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境.1.创建JVM装载环境和配置2.装载JVM.dll3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例4.调用JNIEnv实例装载并处理class类。在我们运行和调试Java程序的时候,经常会提到一个JVM的概念.JVM是J转载 2015-07-10 20:24:13 · 1041 阅读 · 1 评论 -
Java并发编程:volatile关键字解析
一个原子操作(atomic operation)是个不能分割的整体,没有其它线程(thread)能够中断或检查正在原子操作中的变量。一个原子(atomic)类型就是一个原子操作可用的类型,它可以在基本上没有锁(lock)的情况下做到线程安全(thread-safe)。java.util.concurrent.atomic包就是提供原子操作的类的小工具包,支持在单个变量上解除锁定的线程安全编程。转载 2015-07-22 23:52:23 · 1168 阅读 · 0 评论 -
项目收获-多表查询的sql语句的拼接+反射
在项目中,涉及到了多表查询,总共有6张表,在前端页面中显示的输入框的又多,获得的参数不一定是有值的,语句拼接非常麻烦。在编写项目代码的时候,我们已经给各个实体类写好了一一对应的dao,为了拼接sql语句,我也写好了单个对象拼接sql语句的工具方法。在多表多条件查询的时候,我们之前的做法是从第一个类开始,查出符合该类约束的所有对象,然后通过已知的对象集合,查出与之相关的数据(约束条件原创 2015-07-05 18:24:13 · 2322 阅读 · 0 评论 -
Singleton的三种形式+怎么实现真正的单例
以前用singleton的时候就接触过饿汉懒汉两种最近书上看到一个对于我来说是新的方法,感觉还是很不错的这里将三种方法放一起,比较总结一下一、饿汉式package com.aii.algorithm;public class HungrySingleton { private HungrySingleton() { } private static Hungr原创 2015-08-19 19:57:06 · 1160 阅读 · 0 评论