java
a925907195
best
展开
-
Apache Calcite 简介
1. 什么是Apache Calcite ?Apache Calcite 是一款开源SQL解析工具, 可以将各种SQL语句解析成抽象语法术AST(Abstract Syntax Tree), 之后通过操作AST就可以把SQL中所要表达的算法与关系体现在具体代码之中。Calcite的生前为Optiq(也为Farrago), 为Java语言编写, 通过十多年的发展, 在2013年成为Apach...转载 2020-01-01 22:20:53 · 663 阅读 · 0 评论 -
HashMap Hashtable区别
我们先看2个类的定义[java] view plaincopypublic class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable [java] view plainc转载 2014-11-13 17:32:48 · 546 阅读 · 0 评论 -
Hashtable 的实现原理
在仔细分析源代码之前,我们来看看Hashtable提供的一些接口方法。public int size();public boolean isEmpty() ;public synchronized Enumeration keys();public synchronized Enumeration elements();public synchronized boole转载 2014-11-13 17:27:36 · 584 阅读 · 0 评论 -
HashMap实现原理分析
HashMap实现原理分析1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。转载 2014-11-13 17:08:21 · 634 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355转载 2015-01-06 13:00:28 · 604 阅读 · 0 评论 -
solr在使用solrj操作中的各个操作大全(在solrcores中测试)
package com.fjsh.SearchJobsFirst;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.HashMap;import java.util.I原创 2015-01-07 13:35:08 · 43304 阅读 · 3 评论 -
MapReduce-过程介绍(求温度最大值)
Hadoop的内部工作机制: 分布式系统理论, 实际工程和常识于一体的系统.但是,Hadoop提供的用于构建分布式系统的工具–数据存储, 数据分析,和协调处理–都非常简单.每个阶段都以key/value对作为输入和输出, 类型由程序员选择.程序员需要定义两个函数: map函数和reduce函数.对于map阶段, 输入的是原始的NCDC(国家气候数据中心)数据原创 2014-12-22 21:16:06 · 3842 阅读 · 0 评论 -
IK分词源码讲解(二)-分词器
IK里的分词器主要是三个分词器:CJKSegmenter(中文分词),CN_QuantifierSegmenter(数量词分词),LetterSegmenter(字母分词)。这三个分词器都继承了ISegmenter接口,思路相差不大,其中采用的结构也比较容易理解,采用字典树(CJK使用)或其他简单数据结构(CN_QuantifierSegmenter和LetterSegmenter)匹配文本中的当原创 2014-12-09 17:23:56 · 4595 阅读 · 0 评论 -
IK分词源码讲解(五)-ik配置及在Solr中的配置使用
在solr中配置使用IK很简单下载最新的Ik2012中文分词器。 2.解压IK Analyzer 2012FF_hf1.zip,获得IK Analyzer 2012FF_hf1.将该目录下的IKAnalyzer.cfg.xml,IKAnalyzer2012FF_u1.jar,stopword.dic放到安装TOMCAT_HOME/webapps/solr/WEB-INF/class原创 2014-12-09 17:27:19 · 5439 阅读 · 2 评论 -
IK分词源码讲解(四)-停用词处理
对于停用词以及未切分的词的处理方法:过滤掉CHAR_USELESS字符,包括标点以及无法识别的字符,pathMap中存储的是lexemePath集合,找出相邻的lexemePath,把它们之间未切分的字符逐字符输出,原来的ik源码里面有processUnkownCJKChar(),在IK2012中,这个方法被合并到了outputToResult(), //对分词进行歧义处理原创 2014-12-09 17:26:38 · 4229 阅读 · 0 评论 -
IK分词源码讲解(三)-分词歧义处理(智能分词)
分词的歧义处理是IK分词的一个重要的核心模块,主要使用组合遍历的方式进行处理。从子分词器中取出不相交的分词集合,例如分词结果为abcd(abcd代表词),abcd是按其在文本中出现的位置排序的,从前到后。假如a与b相交,b与c相交,c与d不相交,则将分词结果切成abc和d两个块分别处理当在分词的时候使用的是智能分词,那么便从相交的块中选出最优的结果,这个由judge方法来进行处理/**原创 2014-12-09 17:25:45 · 7058 阅读 · 0 评论 -
IK分词源码讲解(一)-初始篇
IK分词全名为IK Analyzer,是由java编写的中文分词工具包,目前在lucene以及solr中用的比较多,本系列的文章主要对ik的核心源码进行解析讲解,与大家分享,如果有错误的地方还望指教。先来个整体概况:其实从上面的图可以看出,真实的ik的代码其实并不多,这样给我们开始接触心里压力就小的多。先打开IKAnalzyerDemo.java文件,先大体看看IK的工作流原创 2014-12-09 17:15:30 · 14909 阅读 · 0 评论 -
Servlet生命周期与工作原理
Servlet生命周期与工作原理Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法Servlet初始化阶段: 在下列时刻Servlet容器装载Servlet: 1,Servlet容器启动时转载 2014-12-26 23:20:55 · 611 阅读 · 0 评论 -
String,StringBuffer与StringBuilder的区别
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常转载 2014-12-26 23:06:09 · 559 阅读 · 0 评论 -
Java transient关键字使用小记
哎,虽然自己最熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,今天做笔试题时发现有一题是关于这个的,于是花个时间整理下transient关键字的使用,涨下姿势~~~好了,废话不多说,下面开始:1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以转载 2014-12-28 00:47:44 · 542 阅读 · 0 评论 -
IK分词源码讲解(七)-TokenStream以及incrementToken属性处理
首先介绍下在lucene中attributeSource的类层次:org.apache.lucene.util.AttributeSource· org.apache.lucene.analysis.TokenStream (implementsjava.io.Closeable)· org.apache.lucene.analysis.NumericTok原创 2014-12-11 17:26:39 · 6556 阅读 · 0 评论 -
Java垃圾回收机制
1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放转载 2014-12-13 14:03:00 · 686 阅读 · 0 评论 -
java中关键字volatile的作用
用在多线程,同步变量。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) =========================分割线1===========转载 2014-12-29 12:08:15 · 616 阅读 · 0 评论 -
IT公司笔试之精选30道Java笔试题解答
都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑话我们这些未出校门的孩纸们,但是IT公司就喜欢考这些基础的东西,所以为了能进大公司就~~~当复习期末考吧。花了不少时间整理,在整理过程中也学到了很多东西,请大家认真对待每一题~~~ 出处:博客园下面都是我自己的答案非官转载 2014-12-28 00:49:39 · 2285 阅读 · 0 评论 -
25个JAVA多线程面试题
1. 进程和线程的区别一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源。2. 多线程编程的好处是什么?在多线程程序中,多个线程被并发的执行以转载 2014-12-28 15:35:54 · 855 阅读 · 0 评论 -
Java中Runnable和Thread的区别
线程的起动并不是简单的调用了你的RUN方法,而是由一个线程调度器来分别调用你的所有线程的RUN方法,我们普通的RUN方法如果没有执行完是不会返回的,也就是会一直执行下去,这样RUN方法下面的方法就不可能会执行了,可是线程里的RUN方法却不一样,它只有一定的CPU时间,执行过后就给别的线程了,这样反复的把CPU的时间切来切去,因为切换的速度很快,所以我们就感觉是很多线程在同时运行一样.你转载 2014-12-28 15:37:01 · 597 阅读 · 0 评论 -
Eclipse 找不到或无法加载主类
做项目过程中,更新了一下SVN,把自己机器上代码更新成了最新版本,可是在运行程序时发现Eclipse提示:“错误: 找不到或无法加载主类……”。发现根本就没有生成.class文件,也即没有时行编译。后来连错误提示也没有了,点击“build project"后一点反应都没有,不能编译。最后才发现自己犯的错误好低级:工程中的src文件夹不是”源文件包“形式了,显示的是普通文件夹的样式。解决办法转载 2015-01-05 13:20:40 · 1423 阅读 · 0 评论 -
深入探讨 Java 类加载器
类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用。一般来说,Java 应用转载 2015-01-24 12:51:07 · 518 阅读 · 0 评论 -
LRU缓存的java实现
LRU缓存:LRU缓存利用了这样的一种思想。LRU是Least Recently Used 的缩写,翻译过来就是“最近最少使用”,也就是说,LRU缓存把最近最少使用的数据移除,让给最新读取的数据。而往往最常读取的,也是读取次数最多的,所以,利用LRU缓存,我们能够提高系统的performance下面的LRU是:双向链表结合hashtable进行实现package lruCache;原创 2015-03-01 12:41:46 · 711 阅读 · 0 评论 -
An internal error occurred during: "Importing Maven projects". 错误
An internal error occurred during: "Importing Maven projects". 错误An internal error occurred during: "Importing Maven projects".Unsupported IClasspathEntry kind=4今天用eclipse把非m转载 2015-03-25 20:47:37 · 4969 阅读 · 0 评论 -
对象的强、软、弱和虚引用
对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 ⑴强引用(StrongReferenc转载 2015-03-01 13:11:20 · 626 阅读 · 0 评论 -
dubbo 教程
目录(?)[-]Dubbo是什么Dubbo能做什么dubbo的架构节点角色说明调用关系说明服务提供者在启动时向注册中心注册自己提供的服务服务消费者在启动时向注册中心订阅自己所需的服务注册中心返回服务提供者地址列表给消费者如果有变更注册中心将基于长连接推送变更数据给消费者服务消费者从提供者地址列表中基于软负载均衡算法选一台提供者进行调用如果调用失败再选另一台调用服务消费者和提供者在内转载 2015-03-25 15:20:35 · 748 阅读 · 0 评论 -
Eclipse查看jar中编译后的class文件注释显示乱码解决方法
如下图所示,在打开RuntimeContext.class文件时,里面的注释出现乱码解决问题如下:原创 2015-03-26 10:29:34 · 8122 阅读 · 0 评论 -
ThreadPoolExecutor使用介绍
private static ExecutorService exec = new ThreadPoolExecutor(8, 8, 0L,TimeUnit.MILLISECONDS, new LinkedBlockingQueue(100000),new ThreadPoolExecutor.CallerRunsPolicy());一、简介 线程池类为 java.ut转载 2015-03-27 14:07:41 · 606 阅读 · 0 评论 -
ThreadPoolExecutor使用介绍
目录(?)[-]ThreadPoolExecutor配置private static ExecutorService exec = new ThreadPoolExecutor(8, 8, 0L,TimeUnit.MILLISECONDS, new LinkedBlockingQueue(100000),new ThreadPoolExecutor.Caller转载 2015-03-26 17:11:06 · 539 阅读 · 0 评论 -
java注解实现
java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能,本文将详细介绍,此功能的实现方法java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。 注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。 1、转载 2015-03-26 20:04:15 · 736 阅读 · 0 评论 -
阿里云ACE上碰到的坑log4j-over-slf4j.jar和slf4j-log4j12.jar冲突问题,我去……
使用阿里云的产品有段时间了,产品使用简单,稳定性高,售后服务好,尤其是他们的工单服务最为让人称赞。客户提交了工单后客服人员几乎马上就会给出相应的解决方案,如果他们不能解决就会转到相应的技术工程师哪里,实时更新问题的处理进展,节约了我很多时间,让我可以专心在自己的业务上。当然,我在使用他们的产品的过程中也碰到了一些坑,主要是针对ACE产品,让我长了不少知识。1. Jar包冲突在本地打包成功并原创 2015-03-26 21:32:15 · 20209 阅读 · 0 评论 -
自己创建maven项目工程说明,参考别人的
自己创建maven项目工程说明:找到一个地址输入:mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=falseMaven 坐标有groupId,artif原创 2015-03-27 22:03:52 · 928 阅读 · 0 评论 -
tomcat性能调优总结
多篇文章总结而来(自己未测试过,如果有问题请指教):调整Tomcat的并发线程数到5000+ 1. 调整server.xml的配置 先调整maxThreads的数值,在未调整任何参数之前,默认的并发线程可以达到40。 调整此项后可以达到1800左右。maxThreads="32000"/>再试试使用非阻塞的库。maxThreads原创 2015-03-10 09:57:21 · 831 阅读 · 0 评论 -
mave的依赖范围
compile(编译范围)compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath中可用,同时它们也会被打包。 provided(已提供范围)provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用。例如,如果你开发了一个web应用,你可能在编译classpath中需要可用的Se转载 2015-03-28 21:09:35 · 552 阅读 · 0 评论 -
eclipse package,source folder,folder区别及相互转换
在eclipse下,package,source folder,folder都是文件夹. 它们的区别如下: package:当你在建立一个package时,它自动建立到source folder下,也只能建立在这个目录之下. source folder:存放java源代码的文件夹,当然也包括一些package文件夹,还可以包含其他文件. 项目构建后,source f转载 2015-03-29 16:14:07 · 530 阅读 · 0 评论 -
spring定时任务总结
从实现的技术上来分类,目前主要有三种技术(或者说有三种产品):Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章将不做详细介绍。使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配原创 2015-03-30 17:14:28 · 1128 阅读 · 0 评论 -
Java NIO原理图文分析及代码实现 综合多个文章
Java NIO原理图文分析及代码实现 前言: * Nio也就是继JDK1.4之后关于io的新特性的new Io,也就是传说中的无阻塞io。 Nio主要包括几个方面: ByteBuffer:Channel:Selector: 原理部分下次再整理,本次主要是进行实例。 下面要实现就是使用nio进行简单的文本传递。最近在分析hadoop的RPC(Remote Procedu原创 2015-03-30 13:41:43 · 779 阅读 · 0 评论 -
maven核心,pom.xml详解
什么是pom? pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。 快速察看: 4.0.0 ... ... ... ... ...转载 2015-03-24 16:54:36 · 591 阅读 · 0 评论 -
DTO的理解以及spring遇到的一个问题注解方式对象为空
之前不明白有些框架中为什么要专门定义DTO来绑定表现层中的数据,为什么不能直接用实体模型呢,有了DTO同时还要维护DTO与Model之间的映射关系,多麻烦。然后看了这篇文章中的讨论部分才恍然大悟。摘两个比较有意义的段落。表现层与应用层之间是通过数据传输对象(DTO)进行交互的,数据传输对象是没有行为的POCO对象,它 的目的只是为了对领域对象进行数据封装,实现层原创 2015-03-24 20:34:37 · 8915 阅读 · 0 评论