`
greemranqq
  • 浏览: 972134 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论
文章列表
一、序言           我们群里发了了一个挑战,题目大概是:2亿随即字符串,在一个txt 文本里面,找出出现频率最高的前100 个字符串,双核CPU,4G 内存,当然JVM 只开了1G。          其实类似的题目,很多公司也都有了,但是可能思想说得多,实战稍微少点,这里我抽空也写了一种通用的,凡是上诉题目都可以按方法进行处理,也做可以做其他扩展和优化。   二、设计原理        1.我用他们提供的字符串生产文件,接近3G,肯定不能全部放入内存        2.我创建了一个2亿的int 数组,但是由于想hash 分布均匀,采用hashMap的算法模式,需要额外 ...
一、序言        这里会分析ThreadLocal 源码以及原理,和它的正确使用原则,还有我们应用过的地方,帮助大家更深刻的理解这个类的使用。        ThreadLocal  在JDK1.2的版本的就提供的一个类,它提供了一种新的思路去解决多线程问题,同时ThreadLocal  不是线程类,仅仅是一个线程的变量副本,他是如何来实现这个功能的呢,我们从源码进行分析。     二、源码分析         // 仅仅是一个单独的类,没有除Object外的其他父类 public class ThreadLocal<T> {...}         ...
一、序言        前面我们提到的synchronized  等锁机制是一种阻塞同步,虽然它完成了我们的原子性操作,和线程安全,但是这种阻塞同步机制是比较耗费性能的,因为在阻塞和唤醒等状态转换中,是需要CPU指令进行帮忙实现 ...
 一、引言:         JAVA 是一个多线程并发的语言,现在只要有点经验的JAVA程序员,对于多线程、并发等词汇相信并不陌生,但是对于具体的运行原理,很多也都没深入,这里我也分享一部分自己的经验,主要对于线程安全 ...
        最近临时做个PDF 生成预览 下载的一些东西,了解了下,发现itext 这个插件包 和spring 是已经集成在一起的,其实itext 已经很强大了,普通的servlet 也够了,这里先大概介绍一下吧!        spring mvc 里面的视图结构很多,这里我转载一下:               可以看到其中有AbstractPdf 的类,这里简单介绍它,如果你要用其他的视图,可以参考该图,是否已经实现。       // 可以看出 是继承的抽象视图,可以参考上面图例,具体内容我们这里不探讨,直接看方法 public abstract class Abstra ...
   JAVA 反射的应用还是比较多,这里会对反射的一些原理进行介绍,然后我们才知道如何使用和优化。至   于反射的使用介绍,这里就不在过多叙述了,API 上都介绍得有。    要了解JAVA 反射的原理,我们还得对类在虚拟机 ...
     那天有人问我:“IOC到底啥用,感觉用处不大,还特麻烦!”那天有人问我:“IOC到底啥用,感觉用处不大,还多一些麻烦!”      关于IOC的话题,已经很多很多了,但是很多都处于了解,或者仅仅使用于框架上,这里 ...
    volatile 关键字是JAVA虚拟机提供的最轻量级的同步机制,在了解volatile的特性后,会让我们在多线程数据竞争方面更准确的使用。    一、概念解释     一个volatile 变量,具备两种特性,第一是保证此变量多所有线程的可见性,这里的“可见性”是指当一个线程修改了该变量之后,新值对其他线程来说是可以立即得知的,而普通变量做不到,普通变量需要传递和主内存来完成,比如:线程A修改了普通变量的值,然后向主内存进行回写,另一条线程B在A线程回写完成之后再从主内存进行读取操作,变量的新值才会对线程B可见。(参考上一篇内存模型图)       volatitle 变 ...
           关于上一篇数据去重复的问题,在结尾的时候提到,另一种思路:在url-->hashCode 根据范围写入文件的时候,不用迭代二分法,采用平均算法,也就是说根据url的大概行数,设置一个单位区间,循环遍历行的时候, ...
      学习JAVA内存模型,可以帮助我们理解数据在内存中的分布、变化等细节,让我们在多线程开发中,拥有 对数据更强的掌控力,能让我们开发出更稳定、更优秀的程序。   一、内存模型定义      A memory model describes, gi ...
          最近快过年了,来了一个紧急任务,加班加点的一周,终于上线了。也没多少时间去研究出去重复数据的算法,上一篇文章的算法,理论是可以的!但是由于我采用的行迭代的方式,JVM 会出现栈的深度溢出,我就换了一种方式,这里再次介绍给大家:           回顾一下题目:超过内存限制的URL,去除重复数据!               我的方法是根据hashCode 范围进行分组。比如文件A,假设有1亿行,A作为原始文件,然后循环读取每一行,根据hashCode 值分成两部分文件。初始我以int 的最大值和最小值为边界,0 作为分界线开始分,hashCode 大于0的放右边A ...
         很高兴能介绍阿里的面试电话,本来计划是年后5月份左右的时候投简历参加面试的,因为我一直做企业系统,虽然也自己一直学习技术,但是感觉还是有所欠缺,准备花几个月的时间,把互联网的东西,以及一些基础 ...
前天接到电话面试,有一个url 去除重复的问题,场景大概是: 公司获取了大量url,肯定是超过内存了,按行存放,现在目的想剔除重复的数据 比如:一个5G 的txt 文件,url 一行一行的存放,而我们的内存只限制1G   我当时首 ...
         关于JVM 的垃圾回收机制,我们一般都没过多深入,因为JAVA 和 C++ 的一个很大区别就是,JAVA 帮我们做了垃圾回收,而不用像C++ 那么样手动进行回收,当然任何自动的东西都存在一定弊端,比如机器人,即使自动程度很高,但是在处理某些感情问题上,肯定处理上就会有遗漏,开个玩笑啦,下面我们先来了解一下JVM 的垃圾回收是怎么回事。   一、如何判断对象已经死亡       JVM 会回收那些不在使用的对象,或者说是已经死亡的对象,从而达到节省空间的目的,那么我们肯定的判断哪些对象已经死了,不在使用呢?       1 引用计数算法:       这算法原理很简 ...
我一直不喜欢hibernate ,但是框架是spring mvc + hibernate 搭建,而且我喜欢自己写SQL,数据层 是自己封装的也写东西,没用hql 语句,也就没用他那些缓存,自己也想缓存一部分数据,所以就想自己写个缓存,或者用现成的缓存,通过spring 拦截,实现颗粒度比较细,容易控制的缓存。了解了下,spring 3.0 以后,应该从3.1 以后吧,注解方式的缓存就已经实现,下面是我自己做的例子,分享给大家:   例子内容介绍: 1.没用数据库,用的集合里面的数据,也就没事务之类的,完成的一个CRUD操作 2.主要测试内容,包括第一次查询,和反复查询,缓存是否生效,更 ...
Global site tag (gtag.js) - Google Analytics