![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
wangqisen
这个作者很懒,什么都没留下…
展开
-
JAVA wait(), notify(),sleep详解
在CSDN开了博客后,一直也没在上面发布过文章,直到前一段时间与一位前辈的对话,才发现技术博客的重要,立志要把CSDN的博客建好。但一直没有找到好的开篇的主题,今天再看JAVA线程互斥、同步的时候又有了新的体会,就以他作为开篇吧。 在JAVA中,是没有类似于PV操作、进程互斥等相关的方法的。JAVA的进程同步是通过synchronized()来实现的,需要说明的是,JAVA的sync转载 2014-11-17 14:17:10 · 515 阅读 · 0 评论 -
Comparable与Comparator区别
Comparable与ComparatorComparable 和 Comparator 都是用来实现集合中元素的比较、排序的。只是 Comparable 是在集合内部定义的方法实现的排序,而Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。Comparator转载 2013-11-26 15:54:52 · 528 阅读 · 0 评论 -
自然语言处理之判断句子合法性的Chart-Parsing算法
package nlp;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;import java.util.Map.Entry;class ChartLine{ public String wordAttr; public int start; public int原创 2013-11-03 18:40:20 · 2625 阅读 · 2 评论 -
自然语言处理之分词算法的实现
本文作者王大锤实现了最长正向匹配算法与最长逆向匹配算法,同时,也顺便写了将两种算法判断取最优的一种的算法。如下:package nlp;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;impo原创 2013-11-03 18:38:24 · 1042 阅读 · 0 评论 -
关于java中对于二维数组使用clone出错之后
今天写程序时遇到一个十分诡异的bug。在debug了很久之后,总是发现自己的算法整个过程是没有任何问题的,但是结果却一直不对,后来才发现是自己对于拷贝的理解有误导致的。我开始认为对二维数组是进行的浅拷贝,导致出了问题。因此,我王大锤写了程序来测试我的想法,事实证明,这并不是浅拷贝或者深拷贝的问题,而在于对引用的理解。public class Test { public static v原创 2013-10-27 19:52:39 · 838 阅读 · 0 评论 -
Java transient关键字使用小结及一些需要注意的细节
Java transient关键字使用小结及一些需要注意的细节2010-11-23 14:22:58标签:Java 持久化 序列化 休闲 职场原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://wujuxiang.blog.51cto.com/2250829/4302111、transient关键字只转载 2013-10-17 20:43:43 · 457 阅读 · 0 评论 -
Java关键字——transient
Java关键字——transient博客分类: Java/Basictransientjavaserializable 眼看就要2012了,这一年给自己树立的研究课题基本上因为工作的转型,最终都没能实现。开发经验开始消减,更没能赶上新技术。终于,我要恢复开发经验! 找回曾经的我! 最近被问到很多Java基础性的问题,突然发现自己长时间沉迷于框架整合的乐趣中,转载 2013-10-17 20:39:38 · 486 阅读 · 0 评论 -
ResultSet 游标权限获取问题
ResultSet 游标权限获取问题当我们在写数据库连接的时候,有时候回出现一些错误如:java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY先看下面一段代码/** * 连接数据库用的驱动类型 */ protected final String driver = "转载 2013-10-13 12:13:28 · 481 阅读 · 0 评论 -
hashCode()方法与equals()方法的区别与联系
hashcode方法浅析有许多人学了很长时间的Java,但一直不明白hashCode方法的作用,我来解释一下吧。首先,想要明白hashCode的作用,你必须要先知道Java中的集合。 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。你知道它们的区别吗?前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。那么这里就有一个比较严重的问转载 2013-10-10 10:32:10 · 1645 阅读 · 0 评论 -
java编程思想笔记--字符串部分二
正则表达式:1.多数正则表达式操作都接受CharSequence类型作为参数,CharSequence是一个接口,其从CharBuffer,String,StringBuffer,StringBuilder类之中抽象出字符序列的一般化定义。2.Pattern和Matcher,这里有一篇很好的关于Pattern类和Matcher类的文章:java.util.regex是一个用正则原创 2013-09-16 15:19:12 · 573 阅读 · 0 评论 -
java编程思想笔记--字符串部分一
1.显示的创建StringBuilder允许你为其预先指定大小,如果你已经知道最终的字符串大概有多长,那预先指定StringBuilder的大小可以避免多次重新分配缓存。因此,在位一个类编写toString()方法时,如果字符串操作比较简单,可以信赖编译器,它会为你合理地构造最终的字符串结果。但是,如果你要在toString()方法中使用循环,那么自己最好创建一个StringBuilder的对象,原创 2013-09-16 15:11:56 · 559 阅读 · 0 评论 -
java编程思想笔记--类型信息部分一
1.数组这种容器,将所有的事物都看做Object来持有,当从中取出元素时,会自动转型为相应类型。2.在java中,所有的类型转换都是在运行时进行类型转换的正确性检查的。3.RTTI:run-time type identification.RTTI是由类中的一个叫做Class对象的特殊对象来完成的。它包含了与类有关的信息。事实上,class对象就是用来创建类的所有常规对象的。4.每个类原创 2013-10-01 19:55:11 · 501 阅读 · 0 评论 -
java编程思想笔记--持有对象部分二
package com.wang.test;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;class Snow{}class Powder extends Snow{}class Light extends Powder{}原创 2013-09-08 10:13:28 · 505 阅读 · 0 评论 -
java编程思想笔记--持有对象部分一
1.ArrayList保存的是Object,因此,在从ArrayList队列中取出对象时,要进行类型强制转换。2.对象的后代也可以像对象一样,作为ArrayList的成员。例如:package com.wang.test;import java.util.ArrayList;class Guji extends Apple{}class Gala extends Apple{}原创 2013-09-07 23:58:00 · 578 阅读 · 0 评论 -
LeetCode 4Sum
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.Note:Elements原创 2013-11-26 19:58:05 · 492 阅读 · 0 评论 -
异步消息的传递-回调机制
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步转载 2013-12-29 10:53:36 · 603 阅读 · 0 评论 -
关于Enum枚举类没有values()方法却可以在枚举类中使用的问题
在java.lang.Enum类中,所有的方法如下所示:原创 2014-06-24 10:03:20 · 2020 阅读 · 0 评论 -
详细分析Java中断机制
1. 引言当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时……都需要通过一个线程去取消另一个线程正在执行的任务。Java没有提供一种安全直接的方法来停止某个线程,但是Java提供了中断机制。如果对Java中断没有一个全面的了解,可能会误以为被中断的线程将立马退出运行,但事实并非如此。中断机制是如何工作的?捕获或检测到中断后,是抛出转载 2014-04-03 14:57:54 · 515 阅读 · 0 评论 -
我们的项目中为socket通信服务的“心跳包”
我们的项目中为socket通信服务的“心跳包”在我们的考试系统中用到客户端和服务器之间的通信,服务器要时刻知道客户端的网络连接状态,当时我遇到这个问题的时候就没有在网上找到传说中的“心跳包”。只是凭自己心思随想写出了一个解决时下问题的算法。下面是客户端心跳包核心代码: #region ++++++++++++++++++++客户端的感觉系统 //启动记时器转载 2014-02-01 18:15:04 · 581 阅读 · 0 评论 -
Hibernate各种状态与操作
Hibernate的对象有3种状态,分别为:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。 瞬时态 由new命令开辟内存空间的java对象, eg. Person perso转载 2013-12-19 21:14:50 · 408 阅读 · 0 评论 -
对于saveOrUpdate的正确使用
hibernate提供了saveOrUpdate的方法来进行数据库的操作。对于saveOrUpdate的解析,robbin有很精辟的文章了,这里不再重复,hibernate会根据对象的状态决定是insert还是update,其根本是通过xml文件中unsaved-value来确定的。 如果设置null,系统会根据传入的对象的id的值判断,如果是null,则表示对象不存在,那么insert,转载 2013-12-19 21:13:55 · 3321 阅读 · 0 评论 -
[转]hibernate中update与saveOrUpdate的区别
( update() 更新,没有主键会报错的 saveOrUpdate() 保存或更新, 没有主键就执行插入.Update:是对暂态(transient )或是只是脱管(detached)的更新操作,对于暂态对象的更新操作通常不产生效果,对于脱 管对象是做了同步的操作,即数据库的数据发生变化并且对象状态也成为托管对象 SaveOrUpdate : 也是对暂态转载 2013-12-19 21:12:49 · 456 阅读 · 0 评论 -
hibernate中session的线程安全问题
Hibernate的基本特征是完成面向对象的程序设计语言到关系数据库的映射,在Hibernate中使用持久化对象PO(Persistent Object)完成持久化操作,对PO的操作必须在Session管理下才能同步到数据库, 但是这里的Session并非指HttpSession,可以理解为基于JDBC的Connnection,Session是 Hibernate运作的中心, 对象的生命周转载 2013-12-19 19:13:35 · 416 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量
volatile 变量使用指南Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的 Java 理论与实践 中,Brian Goetz 将介绍几种正确使用 volatile 变量的模式,并针对转载 2013-12-18 20:34:03 · 410 阅读 · 0 评论 -
servlet 多线程问题
介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线程安全的三种解决方案,并说明三种方案在实际开发中的取舍。 关键字:Servlet 线程安全 同步 Java内存模型 实例变量 Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默原创 2013-12-18 17:48:18 · 443 阅读 · 0 评论 -
Java安全(加密、摘要、签名、证书、SSL、HTTPS)
对于一般的开发人员来说,很少需要对安全领域内的基础技术进行深入的研究,但是鉴于日常系统开发中遇到的各种安全相关的问题,熟悉和了解这些安全技术的基本原理和使用场景还是非常必要的。本文将对非对称加密、数字摘要、数字签名、数字证书、SSL、HTTPS等这些安全领域内的技术进行一番简要的介绍,解释他们之间的关系,同时补充一些周边话题。安全领域的技术众多,但是归根结底,他们都是为了保障如下三个方面:转载 2013-12-18 20:15:43 · 476 阅读 · 0 评论 -
浅析Struts1和Struts2的Action线程安全问题
【问题描述】最近公司安排我面试Java的FreshMan,面试者一般是工作1年多点的新人(这里我就装老一下,其实我也才工作3年不到),在被问及Struts1和Struts2的Action的线程安全问题的时候,大多是支支吾吾,答不出所以然。所以在这里我整理一下我个人的理解。 【问题答案】这是由于Servlet的工作原理产生的。我们先来简单回顾一下Servlet的生命周期“初始化->ini原创 2013-12-18 14:46:34 · 560 阅读 · 0 评论 -
一个try catch 中的return 问题
public static int test(){ int i = 0; try { i++; throw new Exception("eeee"); } catch( Exception e) { return i; } finally { i++; } } pub原创 2013-12-18 12:45:54 · 495 阅读 · 0 评论 -
多路复用I/O
套接字通道在套接字通道方面的改进是提供了对非阻塞I/O和多路复用I/O的支持。传统的流的I/O操作是阻塞式的。在进行I/O操作的时候,线程会处于阻塞状态等待操作完成。NIO中引入了非阻塞I/O的支持,不过只限于套接字I/O操作。所有继承自SelectableChannel的通道类都可以通过configureBlocking方法来设置是否采用非阻塞模式。在非阻塞模式下,程序可以在适当的时候查转载 2013-12-17 20:03:39 · 527 阅读 · 0 评论 -
Java线程间通信-回调的实现方式
Java线程间通信-回调的实现方式 Java线程间通信是非常复杂的问题的。线程间通信问题本质上是如何将与线程相关的变量或者对象传递给别的线程,从而实现交互。 比如举一个简单例子,有一个多线程的类,用来计算文件的MD5码,当多个这样的线程执行的时候,将每个文件的计算的结果反馈给主线程,并从控制台输出。 线程之间的通讯主要靠回调来实现,回调的概念说得抽象转载 2013-12-16 14:19:35 · 509 阅读 · 0 评论 -
java编程思想笔记--内部类部分八
使用内部类实现回调过程的呈现如下代码。回调在java GUI的设计中处处皆是。另外重复一条容易被忽视的设计规则,在子类继承父类,并对父类的方法进行重写时,不能降低父类方法的访问权限,可以扩大(当然,这样毫无意义),但是不能缩小,这是出于子类不能改变父类成员属性的考虑。例如,如果父类的方法访问权限是public,那么子类覆盖后的该方法访问权限就不能是protected或者private。代码原创 2013-08-04 23:20:07 · 482 阅读 · 0 评论 -
java编程思想笔记--内部类部分七
1.为什么我们需要内部类的存在?这是因为,在java的设计规范中,出于面向对象的逻辑清晰得角度考虑,java的设计者禁止了西加加中常见的多重继承的现象,限制java类只能继承一个父类。为了弥补多重继承被禁止带来的影响,java提出了接口的概念,但是,内部类的提出则进一步完善了这个方案。这是因为,按照java编程思想中的原话来说,内部类最吸引人的地方在于,每个内部类都能独立的继承自一个实现,所以无论原创 2013-08-04 20:49:25 · 490 阅读 · 0 评论 -
java书籍2
1.上文中提到的Expert One-on-One J2EE Design and Development是有中译本的,《J2EE设计开发编程指南》。2.headfirst设计模式。经典必读3.Java并发编程实战 :这本书要看原文版,不能看译文版,翻译的非常垃圾。经典必读。4.Effective Java。经典必读。5.深入Java虚拟机。经典必读。原创 2013-07-11 13:06:41 · 468 阅读 · 0 评论 -
java书籍
《Java程序员的推荐阅读书籍》 JavaEye (http://www.iteye.com) 范凯(http://robbin.iteye.com) 作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。转载 2013-07-11 12:49:24 · 563 阅读 · 0 评论 -
中文分词算法的初步研究
public String Fmm(String source) { String[] targets = new String[source.length()]; String target = ""; int MaxLen = source.length(); int temLen = MaxLen; int primarylen = 0; while (true) {原创 2013-07-07 22:14:12 · 499 阅读 · 0 评论 -
控制反转与依赖注入
作为一种设计模式,控制反转就是为了降低java对象之间的耦合度而设计的一种方法。我觉得工厂模式与其在这一点上比较相似。控制反转在许多开源框架中得到广泛应用。在java三大框架中,spring就是为了降低java类之间的耦合度而设计的框架。spring从本质上来说是一个java bean容器,通过配置文件来管理java bean。依赖注入是实现控制反转的一种方法。其思想是通过在程序运行时动态原创 2013-06-05 00:05:24 · 465 阅读 · 0 评论 -
转发与重定向的区别
转发:服务器内部的调转。浏览器地址栏的地址不会改变。request域中的内容不会丢失。重定向:服务器发出重定向请求给浏览器,浏览器再发出地址请求给服务器。地址会改变。session:浏览器访问服务器时,服务器会创建一个session对象。服务器在缺省情况下,会将sessionId以cookie的方式发给浏览器。当浏览器再次访问服务器时,会将sessionId发送给服务器,服务器根据原创 2013-05-15 09:57:13 · 463 阅读 · 0 评论 -
在不使用框架自己写注册登录模块时应注意的问题
1.sql注入问题:如果在DAO层中使用JDBC语句来执行sql语句,需要注意不能使用Statement对象,因为Statement在使用中很容易造成sql注入。例如,在登录时,如果用户名为空,密码为dadaceqeewdcefcfew2eqweqw' or 1=1',由于statement使用字符串拼接来凑成sql语句,这样就可以造成sql注入的问题。应该使用PreparedStatement.原创 2013-05-11 13:54:47 · 652 阅读 · 0 评论 -
java工程如何读取配置文件并获取配置文件中的属性值
如下package com.wang.util;import java.io.InputStream;import java.util.Properties;public class ConfigUtil { private static Properties properties=new Properties(); static{ ClassLoader classLoad原创 2013-05-11 00:30:42 · 730 阅读 · 0 评论 -
为什么接口在设计时所有的方法一般都要抛异常?
EX:package com.wang.dao;import com.wang.entity.User;public interface UserDAO { public void addUser(User user)throws Exception; public void deleteUserById(int id)throws Exception; public User原创 2013-05-10 23:45:50 · 2876 阅读 · 0 评论