
java
文章平均质量分 83
xiewenbo
互联网广告行业呆过几年,旅游公司呆过几年,对机器学习,自然语言处理,图像识别,个性化推荐 有兴趣
展开
-
Java 理论与实践: 并发在一定程度上使一切变得简单
当项目中需要 XML 解析器、文本索引程序和搜索引擎、正则表达式编译器、XSL 处理器或 PDF 生成器时,我们中大多数人从不会考虑自己去编写这些实用程序。每当需要这些设施时,我们会使用商业实现或开放源码实现来执行这些任务原因很简单 ― 现有实现工作得很好,而且易于使用,自己编写这些实用程序会事倍功半,或者甚至得不到结果。作为软件工程师,我们更愿意遵循艾萨克・牛顿的信念 ― 站在巨人的肩膀之上,有转载 2012-04-10 22:42:50 · 375 阅读 · 0 评论 -
java 小记
public class AppTest {public void parse(String str){str = null;}public void parserBuffer(StringBuffer sb){sb.append("123");} public static void main(String args[]){ String s =原创 2014-05-20 16:07:45 · 576 阅读 · 0 评论 -
Java中只有按值传递,没有按引用传递!
今天,我在一本面试书上看到了关于java的一个参数传递的问题:写道java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:“引用传递!”,并且还觉得自己对java的这一特性很是熟悉!结果发现,我错了!答案是:值传递!Java中只有按值传递,没有按引用传递! 回家后我就迫不及待地查询了这个问题,觉得自己对j转载 2014-05-20 16:31:16 · 684 阅读 · 1 评论 -
HashTable & HashMap 的一些代码片段
protected void rehash() { int oldCapacity = table.length; Entry[] oldMap = table; // overflow-conscious code int newCapacity = (oldCapacity << 1) + 1; if (newC原创 2014-05-21 10:23:40 · 562 阅读 · 0 评论 -
深入Java核心 Java内存分配原理精讲
Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域:◆寄存器:我们在程序中无法控制◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中◆堆:存放用new产生的数据转载 2014-05-20 19:56:20 · 422 阅读 · 0 评论 -
ORM实体字段包括关键sql词的处理
@Column(name="[desc]")private Stringdescription;原创 2015-03-05 17:01:29 · 854 阅读 · 0 评论 -
string.replaceAll Illegal group reference"异常的分析
String replaceAll(regex, replacement)函数 , 由于第一个参数支持正则表达式,replacement中出现“$”,会按照$1$2的分组模式进行匹配,当编译器发现“$”后跟的不是整数的时候,就会抛出“非法的组引用”的异常。所以我们在使用replaceAll(regex, replacement)函数的时候要特别小心。如果真的要把Strin转载 2015-08-10 12:35:28 · 593 阅读 · 0 评论 -
JVM性能调优
-XX:+UseConcMarkSweepGC 设置并发收集器(不会导致程序停止)-XX:+CMSIncrementalMode 适用于单核CPU-XX:+UseParNewGC 对年轻代采用多线程并行回收-XX:CMSInitiatingOccupancyFraction=60 -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSIncrem原创 2014-02-24 09:55:20 · 919 阅读 · 0 评论 -
Java8的CompletableFuture之一
Java8提供了一种函数风格的异步和事件驱动编程模型CompletableFuture,该模型不同于以往Java版本,不会造成堵塞Blocking。过去,Java 5并发包主要聚焦于异步任务处理,其模型特点是基于一个生产者线程,不断地创造任务,通过一个堵塞Blocking队列传递给任务的消费者,这个模型在Java 7和Java 8以后使用了另外一种任务执行模型,同时将一个任务的数据分解到子集中,这转载 2016-06-01 15:36:56 · 9320 阅读 · 0 评论 -
更快的AtomicInteger
之前看了java8的longadder实现,最近又看到一篇文章介绍longadder实现的。其实现思路也是分段,最后需要get的时候,再进行sum计算。其核心思路就是减少并发,但之前老的Atomic,难道就没有提升的空间了吗?昨晚进行了一次测试。测试代码如下:01/**02* Atomically转载 2017-06-06 20:13:01 · 368 阅读 · 0 评论 -
executor.invokeAll和Future.get指定限制时间
设定时间的任务如果某一个子线程任务不能在规定的时间内完成,那么应该抛弃该任务,不再需要其结果,同时中断该任务,减少性能开销。Future.get方法有一个重载,传入限制的时间V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutExceptio转载 2017-08-24 00:24:47 · 1066 阅读 · 0 评论 -
Why is Java Future.get(timeout) & httpclient Not Reliable?
1. Future.get(timeout)In Java project we sometime want to run our code during a limit time , we will consider about using Future.get(time, TimeUnit), While this will not always useful , look at the原创 2017-09-01 17:04:56 · 1347 阅读 · 0 评论 -
java.lang.OutOfMemoryError: Direct buffer memory at java.nio.Bits.reserveMemory(Bits.java:658) at
java.lang.OutOfMemoryError: Direct buffer memoryat java.nio.Bits.reserveMemory(Bits.java:658)at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123)at java.nio.ByteBuffer.allocateDirect(ByteBuf原创 2017-09-11 17:41:58 · 2009 阅读 · 0 评论 -
深入理解jvm的GC日志
CMS GC with -XX:+PrintGCDetails and -XX:+PrintGCTimeStamps prints a lot of information. Understanding this information can help in fine tuning various parameters of the application and CMS to achieve转载 2017-08-25 16:18:00 · 732 阅读 · 0 评论 -
语言检测工具language-detection 的简单使用
language-detection项目源码发布在Google code 上,可以在如下地址看到项目介绍和资源下载:https://code.google.com/archive/p/language-detection/Java使用示例代码:import com.cybozu.labs.langdetect.Detector;import com.cybozu.labs.langd...转载 2018-11-02 17:01:54 · 3606 阅读 · 0 评论 -
wait() 和 sleep() 的区别
多线程thread(1)Java中的多线程是一种抢占式的机制而不是分时机制。线程主要有以下几种状态:可运行,运行,阻塞,死亡。抢占式机制指的是有多个线程处于可运行状态,但是只有一个线程在运行。 当有多个线程访问共享数据的时候,就需要对线程进行同步。线程中的几个主要方法的比较: Thread类的方法:sleep(),yield()等 Objec转载 2014-03-30 00:18:18 · 762 阅读 · 0 评论 -
Java中Vector和ArrayList的区别
首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList、Vector和LinkedList。List用于存放多个元素,能够维护元素的次序,并且允许元素的重复。3个具体实现类的相关区别如下:ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就转载 2014-03-06 16:26:15 · 579 阅读 · 0 评论 -
Java5 多线程实践
简介本文将实现一个网络服务器模型,一旦有客户端连接到该服务器,则启动一个新线程为该连接服务,服务内容为往客户端输送一些字符信息。一个典型的网络服务器模型如下:1. 建立监听端口。2. 发现有新连接,接受连接,启动线程,执行服务线程。3. 服务完毕,关闭线程。这个模型在大部分情况下运行良好,但是需要频繁的处理用户请求而每次请求需要的服务又是简短的时候,系统会将转载 2012-04-10 22:43:56 · 377 阅读 · 0 评论 -
java volatile
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。锁提供了两种主要转载 2012-04-25 15:06:19 · 569 阅读 · 0 评论 -
java 动态代理深度学习
一.相关类及其方法:java.lang.reflect.Proxy,Proxy 提供用于创建动态代理类和实例的静态方法.newProxyInstance()返回一个指定接口的代理类实例,该接口可以将方法调用指派到指定的调用处理程序(详见api文档)java.lang.reflect.InvocationHandler,InvocationHandler 是代理实转载 2012-05-28 09:56:29 · 638 阅读 · 0 评论 -
痴情研究java内存中的对象
前记:几天前,在浏览网页时偶然的发现一道以前就看过很多遍的面试题,题目是:“请说出‘equals’和‘==’的区别”,当时我觉得我还是挺懂的,在心里答了一点(比如我们都知道的:‘==’比较两个引用是否指向同一个对象,‘equals’比较两个对象的内容),可是总觉得心里有点虚虚的,因为这句话好像太概括了,我也无法更深入地说出一些。于是看了几篇别人的技术博客,看完后我心里自信地说,我是真的懂了;后转载 2012-05-30 18:53:59 · 554 阅读 · 0 评论 -
DOM、JDOM、DOM4J解析XML实例
一、DOM方式原始name.xmlHtml代码 xml version="1.0" encoding="GB2312" standalone="no"?>学生花名册> 学生 性别="男"> 姓名>李华姓名> 年龄>14年龄> 学生> 学生 性别="男">转载 2012-06-20 16:35:10 · 1004 阅读 · 0 评论 -
Java读取UTF-8格式txt文件第一行出现乱码——问号“?”及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法
目录(?)[-]网上有篇非常好的文章论述了问题出现的原因及解决办法Java读带有BOM的UTF-8文件乱码原因及解决方法 Java读取UTF-8的txt文件第一行出现乱码“?”及解决test.txt文件内容:A中2国3456 test.txt文件采用写字板保存为UTF-8格式保存并关闭后使用写字板再次打开该UTF-8文档,中文转载 2012-12-21 13:11:51 · 794 阅读 · 0 评论 -
一个例子理解AccessController.doPrivileged()
示例中需要在eclipse中创建2个project:ServiceCentre和TestServicejava.policygrant codeBase "file:/D:/Workspaces/ExchangeConnect_V2_Trunk_Maven_workspace/ServiceCentre/bin/*" { permission java.io.File转载 2013-04-09 19:28:10 · 937 阅读 · 0 评论 -
Java对象的大小
基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:Object ob = new Object(); 这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte+8byte。4byt转载 2013-05-06 13:03:05 · 756 阅读 · 0 评论 -
调用Runtime.exec()的一些陷阱
Runtime 封装着java程序的运行时环境。通过Runtime实例,java应用能够与其运行的环境连接。Runtime在jvm中保持一个单例,所以不能通过Runtime类的构造函数。只能通过Runtime.getRuntime()来获的当前Runtime的一个实例。获得Runtime实例后,就可以通过Runtime的exec()方法在当前jvm进程外启动其他进程了。很常见的一个应用就是,启动浏转载 2013-05-10 14:02:34 · 1094 阅读 · 0 评论 -
java泛型中的上界下界(上限下限)
博客分类: JavaJavajava泛型中的super关键字不太常用,也不太好理解,今天又从头看了看java的泛型机制,作一记录。 上界: 上界用extends关键字声明,表示参数化的类型可能是所指定的类型,或者是此类型的子类。如下面的代码: Java代码 public void upperBound(Listextends Date>转载 2013-05-27 12:39:29 · 646 阅读 · 0 评论 -
java 调用其它程序
假设我们已经把以下的 C 程序编绎成 adder.exe:#include int main() { /* 简单地循环打印标准输入上的两个整数之和 */ int a, b, lineNumber = 0; while (scanf("%d %d", &a, &b)) printf("Line# %d \t %d + %d == %转载 2013-06-05 16:12:57 · 775 阅读 · 0 评论 -
探索 ConcurrentHashMap 高并发性的实现机制
简介ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的源代转载 2013-10-07 13:18:55 · 757 阅读 · 0 评论 -
理解 Java 的 GC 与 幽灵引用
Java 中一共有 4 种类型的引用 : StrongReference、 SoftReference、 WeakReference 以及 PhantomReference (传说中的幽灵引用 呵呵), 这 4 种类型的引用与 GC 有着密切的关系, 让我们逐一来看它们的定义和使用场景 : 1. Strong Reference S转载 2014-01-16 13:40:24 · 572 阅读 · 0 评论 -
enum
C语言的枚举类型实质就是整型变量,只不过通过枚举类型将一类有关联的标识组合起来,增加程序的可读性和可维护性(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。(2) DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。(4) 可以人为设定枚举成员转载 2012-09-22 19:47:12 · 578 阅读 · 0 评论 -
Java并发之AQS详解
一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。 以下是本文的目录大...转载 2018-11-15 15:42:41 · 153 阅读 · 0 评论