- 博客(176)
- 问答 (3)
- 收藏
- 关注
mysql 分段统计数据
一、序言 数据库用了很久了,期间也遇到过很多麻烦的SQL,以前一直没好好记录,自己也记不住,挺遗憾的,这次分享的是一个简单的分段统计的问题:student 表{id,name,score} 字段,统计各个分数段的人数。 规则:60以下不及格,60-70差,70-80中,80-90良,90-100优。(好熟悉的感觉....) 二、代码: ...
2014-06-15 22:21:32
1163
原创 一致性 hash 算法( consistent hashing )
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在cache 系统中应用越来越广泛;1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 obje...
2014-05-30 14:45:50
136
Mysql -- 执行计划介绍
一、序言 作为程序员,难免要和数据库打交道,一般情况下,我们不是DBA ,但是又要写很多SQL,因此SQL效率就成了很大的问题。关于SQL效率优化,除了要掌握一定优化技巧外, 还得有很多经验的积累,但是这里我们可以通过执行计划对SQL进行分析,能快速找到优化的地方,这是一种很不错的方式,介绍给大家,大部分我是翻译而来,原文地址:http://dev.mysql.com/doc/r...
2014-05-28 19:06:28
243
面试经验分享--业务真的比技术重要?
一、序言 每一次面试都能看到自己的不足,能让自己的视野变得开阔,能让自己在前进的路上看得很清晰,同时我也希望这些能点亮我生活的经验,能给予大家一些光和热。 二、面试过程 曾经:我参加过几家公司的面试,具体的名字我就不介绍,基本上的过程都是先大概介绍一些自己,介绍一下自己的项目信息,然后就对技术的狂轰乱砸,直到你头晕眼花!我相信很多人和我的经历差不多,然后我...
2014-05-23 10:39:51
829
百度一道面试题
那天看朋友提了一个百度面试的题目:怎么找出{1,1,2,3,3,4,4,4,5,5,5,5} 找出出现次数为奇数的数字. 我这里复制的是原话,当然顺序是不一定的,很多拿到题目第一反应就是用map,当然可以解决,但是效率不高。 还有人觉得应该用算法xxx,我是没想到用啥算法好...! 还有觉得应该先排序... 还有觉得用位图....bitmap 等等方法! ...
2014-05-21 11:43:00
170
原创 nio ---基本概念和使用
一、序言 关于NIO 相关介绍也很多了,这里主要目的还是通过自己的学习,分享一部分自己的理解,计划从基本概念到原理、到使用、到一些源码底层的分析,也回顾和总结自己的学习历程,今天先介绍概念。 二、NIO介绍 NIO 从JDK1.4 提出的,介绍是为了弥补IO的不足,提供了更高效的方式,提出一个通道(channel)的概念。源于IO的不足,还在在于...
2014-05-13 13:52:30
288
原创 java底层是怎样对文件操作的
一、序言 IO操作,才程序中比较普遍,JAVA 中提出了IO/NIO 的概念,也一直在说NIO 比IO快,一直不知道原因,就想memcache 和ehcache 比较优劣一样,这些东西得自己看看如何实现的,才 知道区别,从而才知道优劣以及试用范围,而不仅仅是“听说”!这里我可以先了解下JAVA 如何操作IO的。 二、代码示例 我们先看看简单文件操作:...
2014-05-08 14:06:29
484
数据结构--简单链表
一、序言 数据结构在大学都学过,由于大学认识不够,对这个有点酱油了,很多东西都是知道其概念,当然基本的应用也会,但是偶尔的面试等一些地方的应用,还是不够,这里再复习一些知识,给大家分享,知识来源于数据结构的书和网上的东西。 二、抽象数据类型 ADT(abstract data type)是带有一组操作的的的一些对象的集合。对于集合的ADT,我的理解是:拥有...
2014-05-06 18:06:30
214
available 的理解和一些使用
一、序言 这里主要介绍一下我们在读文件流,如何转换成byte[],从而引出这几种写法的一些原理和应用场景的区别。 二、测试代码 2.1 我们先看代码,代码的作用是获得将文件流转换成byte 数组,我们暂时不管它的正确性,代码也精简了很多。 // 这个用缓冲流 public static byte[] getByte1(String n...
2014-04-21 18:49:01
3005
1
自定义加载器,加载重复的calss和rt.jar 下的class
一、序言 先啰嗦一下,上次,阿里面试的时候问到能否加载一个java.lang.xx 的类,我的回答的是不能- -!当然答案是正确的,但是不知道为什么。 还有一个问题:如果加载两个jar,里面含有相同路径的类,是可以的吗?我还是回答不能- -,估计会冲突,但是原因也是模模糊糊,这里我再回顾一自定义加载类的方法吧,至于原理和细节的介绍,在JVM 目录下有。 ...
2014-04-10 19:38:05
1495
ThreadPoolExecutor 源码分析(二)--- 队列的应用
一、序言 上一篇,介绍了线程池的基本工作原理,这里会介绍一些里面的一些饱和策略和几个常用的线程池方法的实现原理。 二、源码分析 线程池极力推荐我们用Executors 提供车的各种工厂,来创建我们的线程池,提供了我们常用的几种创建线程池的方式: newCachedThreadPool():无界线程池,可以自己进行回收。 newFixedT...
2014-04-08 18:34:28
120
原创 ThreadPoolExecutor 源码分析(一)-- 线程工作流程
一、序言 关于“池”的概念,我的理解是它是为了让我们更快的获得资源,节省时间,在我所知的所有池(线程池、连接池、常量池、缓存池、对象池等等),都是这个作用,这里我们仅仅分享线程池的相关理解。 1.我们什么时候要用线程池? 在JAVA 里面我们一切都是对象,线程(Thread)同样也是对象,只要是对象那么就要涉及创建、使用、回收等三个主要步骤。通常...
2014-04-04 13:57:56
179
大数据高频词算法实战(一)
一、序言 我们群里发了了一个挑战,题目大概是:2亿随即字符串,在一个txt 文本里面,找出出现频率最高的前100 个字符串,双核CPU,4G 内存,当然JVM 只开了1G。 其实类似的题目,很多公司也都有了,但是可能思想说得多,实战稍微少点,这里我抽空也写了一种通用的,凡是上诉题目都可以按方法进行处理,也做可以做其他扩展和优化。 二、设计原理...
2014-03-30 19:49:20
934
源码分析--ThreadLocal
一、序言 这里会分析ThreadLocal 源码以及原理,和它的正确使用原则,还有我们应用过的地方,帮助大家更深刻的理解这个类的使用。 ThreadLocal 在JDK1.2的版本的就提供的一个类,它提供了一种新的思路去解决多线程问题,同时ThreadLocal 不是线程类,仅仅是一个线程的变量副本,他是如何来实现这个功能的呢,我们从源码进行分析。 ...
2014-03-23 22:15:05
110
原创 多线程(四)--非阻塞同步,CAS 原理分析
一、序言 前面我们提到的synchronized 等锁机制是一种阻塞同步,虽然它完成了我们的原子性操作,和线程安全,但是这种阻塞同步机制是比较耗费性能的,因为在阻塞和唤醒等状态转换中,是需要CPU指令进行帮忙实现,这要的调度是比较耗时的,因此这种策略是一种悲观策略,当然我们需要线程安全,又要高效,在一定情况下我们会采用非阻塞同步机制。 二、非阻塞同...
2014-03-17 09:20:01
426
多线程(三)--线程安全与锁
一、引言: JAVA 是一个多线程并发的语言,现在只要有点经验的JAVA程序员,对于多线程、并发等词汇相信并不陌生,但是对于具体的运行原理,很多也都没深入,这里我也分享一部分自己的经验,主要对于线程安全以及锁的一些机制原理,进行介绍。关于线程的基本知识点,前面也说过了,可以了解一下。 1.1 什么是线程安全? 这里我借“JAVA 并发实践”里面的话:当多...
2014-03-13 00:03:20
647
spring mvc 集成itext 生成PDF
最近临时做个PDF 生成预览 下载的一些东西,了解了下,发现itext 这个插件包 和spring 是已经集成在一起的,其实itext 已经很强大了,普通的servlet 也够了,这里先大概介绍一下吧! spring mvc 里面的视图结构很多,这里我转载一下: 可以看到其中有AbstractPdf 的类,这里简单介绍它,如果你要用其...
2014-03-10 17:37:22
525
反射(一)----原理机制和基本运用
JAVA 反射的应用还是比较多,这里会对反射的一些原理进行介绍,然后我们才知道如何使用和优化。至 于反射的使用介绍,这里就不在过多叙述了,API 上都介绍得有。 要了解JAVA 反射的原理,我们还得对类在虚拟机中的一些知识做简要介绍... 一、类文件的结构: 1.1 虚拟机加载Class文件过程: 在JVM 类加载机制的博客里面我介绍过整体流...
2014-02-27 20:26:42
195
IOC 概论和实现流程
那天有人问我:“IOC到底啥用,感觉用处不大,还特麻烦!”那天有人问我:“IOC到底啥用,感觉用处不大,还多一些麻烦!” 关于IOC的话题,已经很多很多了,但是很多都处于了解,或者仅仅使用于框架上,这里我分享一些自己的理解,然后实现一个类似spring ioc 的东西。 一、什么是IOC 维基百科上说到:2004年Martin Fowler 提出了“控制反...
2014-02-23 12:28:55
350
原创 JAVA 内存模型(二) volatile理解
volatile 关键字是JAVA虚拟机提供的最轻量级的同步机制,在了解volatile的特性后,会让我们在多线程数据竞争方面更准确的使用。 一、概念解释 一个volatile 变量,具备两种特性,第一是保证此变量多所有线程的可见性,这里的“可见性”是指当一个线程修改了该变量之后,新值对其他线程来说是可以立即得知的,而普通变量做不到,普通变量需要传递和主内存来完成,...
2014-02-13 17:07:32
147
原创 大数据去除重复--实战(二)
关于上一篇数据去重复的问题,在结尾的时候提到,另一种思路:在url-->hashCode 根据范围写入文件的时候,不用迭代二分法,采用平均算法,也就是说根据url的大概行数,设置一个单位区间,循环遍历行的时候,根据hashCode 值,放入不同的空间,然后再放入内存去除重复,写入汇总文件。 去个例子,我文件数据2G,1.5亿行,自己设定一个区间...
2014-01-28 15:10:50
847
原创 JAVA 内存模型(一) 概念理解
学习JAVA内存模型,可以帮助我们理解数据在内存中的分布、变化等细节,让我们在多线程开发中,拥有对数据更强的掌控力,能让我们开发出更稳定、更优秀的程序。 一、内存模型定义 A memory model describes, given a program and an execution trace of that program, whether the ...
2014-01-27 22:27:18
137
原创 大数据去除重复--实战(一)
最近快过年了,来了一个紧急任务,加班加点的一周,终于上线了。也没多少时间去研究出去重复数据的算法,上一篇文章的算法,理论是可以的!但是由于我采用的行迭代的方式,JVM 会出现栈的深度溢出,我就换了一种方式,这里再次介绍给大家: 回顾一下题目:超过内存限制的URL,去除重复数据! 我的方法是根据hashCode 范围进行分...
2014-01-25 13:09:15
3724
1
阿里面试的感悟
很高兴能介绍阿里的面试电话,本来计划是年后5月份左右的时候投简历参加面试的,因为我一直做企业系统,虽然也自己一直学习技术,但是感觉还是有所欠缺,准备花几个月的时间,把互联网的东西,以及一些基础更加的深入透析,结果这次比较意外,有点突然,下面分享一下感受吧! 阿里是国内很重视技术的公司,这次电话面试也是以技术为主,包括spring 、JAVA 基础、一些网络...
2014-01-20 00:22:47
220
原创 大数据url 去除重复
前天接到电话面试,有一个url 去除重复的问题,场景大概是:公司获取了大量url,肯定是超过内存了,按行存放,现在目的想剔除重复的数据比如:一个5G 的txt 文件,url 一行一行的存放,而我们的内存只限制1G 我当时首先考虑分拆文件,然后hash,然后想排序比较,当时没想到好的办法,这里先说第一种: 方案一:1.拆分文件,A B C D E, 条件:...
2014-01-19 23:33:32
1455
JVM 垃圾回收机制( 一) 回收对象的判定
关于JVM 的垃圾回收机制,我们一般都没过多深入,因为JAVA 和 C++ 的一个很大区别就是,JAVA 帮我们做了垃圾回收,而不用像C++ 那么样手动进行回收,当然任何自动的东西都存在一定弊端,比如机器人,即使自动程度很高,但是在处理某些感情问题上,肯定处理上就会有遗漏,开个玩笑啦,下面我们先来了解一下JVM 的垃圾回收是怎么回事。 一、如何判断对象已经死亡 ...
2014-01-15 16:14:52
274
spring3.2+ehcache 注解使用
我一直不喜欢hibernate ,但是框架是spring mvc + hibernate 搭建,而且我喜欢自己写SQL,数据层 是自己封装的也写东西,没用hql 语句,也就没用他那些缓存,自己也想缓存一部分数据,所以就想自己写个缓存,或者用现成的缓存,通过spring 拦截,实现颗粒度比较细,容易控制的缓存。了解了下,spring 3.0 以后,应该从3.1 以后吧,注解方式的缓存就已经实现,下...
2014-01-10 18:14:46
163
原创 ehcache memcache redis 差异
转自:http://blog.csdn.net/jationxiaozi/article/details/8509732在java项目广泛的使用。它是一个开源的、设计于提高在数据从RDBMS中取出来的高花费、高延迟采取的一种缓存方案。正因为Ehcache具有健壮性(基于java开发)、被认证(具有apache 2.0 license)、充满特色(稍后会详细介绍),所以被用于大型复杂分布式...
2014-01-10 18:05:37
158
原创 大型网站架构的演变
大型网站架构演变转自:http://wenku.baidu.com/view/52b477b765ce0508763213c8.html今天我们来谈谈一个网站一般是如何一步步来构建起系统架构的,虽然我们希望网站一开始就能有一个很好的架构,但告诉我们事物是在发展中不断前进的,网站架构也是随着业务的扩大、用户的需求不断完善的,下面是一个网站架构逐步发展的基本过程,读完后,请思考,你...
2014-01-02 11:01:59
96
自己实现一个内存缓存
最近了解了下缓存技术,主要分为内存缓存 和磁盘缓存,然后分布式里面有一些消息的推送,节点的一些处理。现在很多的用OSCache,EhCache 等等,资料很多,暂时就不多说了,我这里仅仅为了了解缓存框架的的知识,自己临时写一个缓存,后面可以实现AOP 和spring 结合。 实现功能:1.数据都缓存到内存中2.实现对每个元素Element的缓存时间进行控制3.对...
2013-12-30 18:39:42
410
原创 Java程序员应该了解的10个设计原则
转自:http://www.cnblogs.com/leehongee/archive/2012/03/18/2404760.html 面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton、Decorator、Observer这样的...
2013-12-30 18:09:22
109
JVM 类加载器介绍
通过一个类的全限定名来获取描述此类的二进制字节流,这个动作放到虚拟机外部去实现,以便让程序自己决定如何去获取所需要的类。这个模块的动作成为“类加载器”。 唯一性:对于任意一个类,必须类的加载器和类本身,同时来确立其唯一性,每一个类加载器,都拥有一个独立的类的名称空间。 比较两个类是否相等,只有在两个类是由同一个类加载器加载的前提下才有意义,否则即使两个类来源于同一个class 文...
2013-12-24 09:45:03
122
JVM 类加载过程
这里简单记录一下JVM 的一些知识,参考来源于《深入理解JVM》 的书,具体的例子部分做了实验,但是不保证所有理论正确,仅仅做一个参考。以下所有说明,均来自于JDK 1.6 版本,特殊情况会特殊说明。先说明一下类的生命周期:加载->验证->准备->解析(可以再次验证)->初始化->使用-回收一、 加载 1.类加载第一步是先加载,在加载阶段有3件事情...
2013-12-19 16:16:23
167
SOA/CXF 文件传输方案
最近使用webservice 做平台接口,SOA那边要求有有文件传输的东西,类型javax.activation.DataHandler我数据库用的oracle ,类型blob.orm 框架 是hibernate . 文件对应的字段是:private Blob fileContent;@Lob @Column(name = "FILE_CONTENT") public Bl...
2013-12-09 17:53:01
235
原创 spring mvc - 源码解析(一) 初始化
了解spring 的原理,一般从 官方提供的运行机制的图,然后根据代码 进行源码分析,就可以了,这里先从spring mvc 启动开始分析。先来看看web.xml 的配置吧。这里基于spring 3.2 <!-- 启动监听 --><listener><listener-class>org.springframework.web...
2013-12-09 17:25:58
98
静态方法加锁,和非静态方法加锁区别
今天看了到有意思的题:在静态方法上加锁 和 非静态方法加锁 有什么区别,从而再次引出锁机制的一些理解。先看方法: // 这是一个很简单的类,里面共享静态变量 num,然后一个静态 和 非静态方法,都加上锁// 我们假设有两个线程同时操作这两个方法,那么数据能互斥吗? public class Walk { public static int num = 100; ...
2013-11-13 09:43:51
809
webservice (二) 初次尝试
前面简单介绍了一下webservice ,这里快速建立一个例子学习。这是我用到的jar:可能版本有差异,主要包括 cxf,jetty 服务 io http util ,xml规范等cxf 可以去:http://cxf.apache.org/download.html 下载,注意版本匹配 cxf-2.3.11.jarjetty-continuation-7.4.5.v20110...
2013-11-07 16:57:13
215
JAVA数据库连接池实现
连接池的管理用了了享元模式,这里对连接池进行简单设计。一、设计思路 1.连接池配置属性DBbean:里面存放可以配置的一些属性 2.连接池接口IConnectionPool:里面定义一些基本的获取连接的一些方法 3.接口实现ConnectionPool:对上面操作进行实现,并加入一些其他方法 4.连接池管理ConnectionPoolManag...
2013-11-03 01:14:44
449
1
原创 设计模式-享元模式
一、介绍 享元模式,英文(Flyweight),这个翻译还是比较OK的。网上解释比较多,也比较抽象,用我的话来说这个模式就是一个公共,共享的区域,里面放了一些大家可以共用的对象。因为我们知道,创建对象是需要花费时间,占用内存的,但是有些对象常常不需要那么多,仅仅需要一个,或者多个就足够了,也就是不需要到哪儿使用就开始创建。上面解释有点像单例模式,其实单例也是享元 特殊的一种,都...
2013-10-19 11:59:35
105
原创 生产者与消费者 模型理解,与简单设计
题外话:从中秋请假到现在,接近20天的假期,让我彻底耍晕了,现在来写代码,发现始终没进入状态。以后建议大家没特殊事情,还是别请这么久啦,分开耍,有利于放松,也不至于耍得忘乎所以。我是一直想做互联网 并发 大数据方面的工作,有兴趣才有动力嘛,企业开发感觉活力不强,太多重复的劳动,还是喜欢研究 解决问题,有挑战的东东。线程这块,生产者与消费者模型一直是很经典的东东,这里我用自己的理解分享一下,有误...
2013-10-13 23:17:36
640
空空如也
springmvc 入门 问题
2013-04-26
strust2 通过 属性赋予值,action 想获得list 对象集合,怎么获取
2012-11-06
父类 静态方法 如何知道 是哪个从哪个子类进行调用?
2015-08-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅