Java

Java Map按键排序和按值排序

Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sortbykey),按值排序(sortbyvalue)。按键排序(sortbykey)jdk内置的java.util包下的TreeMap既可满足此类需求,原理很简单,其重载的构造器之一有一个参数,该参数接受一个比较器,比较器定义比较规则,比较规则就是作用于TreeMap的键,据此可实现按键排序。publicMapsortMapBy

系统 2019-08-12 09:29:29 2353

Java

Java用户界面本地化实例探索

国际化是使程序具有足够的灵活性、能在世界上任何地区运行的过程。国际化所要求的必然结果是地方化――使一个程序能够运行在特定地区的过程。本文尝试用一个简单的例子来演示Java用户界面本地化。Java语言内核基于Unicode3.0(Java1.4)提供了对不同国家和不同语言文字的内部支持,由于先天的原因,Java对于国际化的支持远远要比C/C++来的优越。在我看来本地化必须满足以下的三个条件:1、程序必须能读、写和操作本地化的文本。2、程序在显示日期和时间、使

系统 2019-08-29 23:24:45 2352

Java

java实现hash算法

Java代码/***Hash算法大全
*推荐使用FNV1算法*@algorithmNone*@authorGoodzzp2006-11-20*@lastEditGoodzzp2006-11-20*@editDetailCreate*/publicclassHashAlgorithms{/***加法hash*@paramkey字符串*@paramprime一个质数*@returnhash结果*/publicstaticintadditiveHash(S

系统 2019-08-12 09:30:14 2352

Java

java常用类库-正则表达式【2】

5、Pattern类和Matcher类:1)Pattern类主要是表示一个规则的意思:正则表达式的规则要在Pattern类中使用。2)Matcher类主要表示使用Pattern类指定好的验证规则。publicstaticPatterncompile(Stringregex)将给定的正则表达式编译到模式中。publicstaticPatterncompile(Stringregexintflags)将给定的正则表达式编译到具有给定标志的模式中。publicM

系统 2019-08-12 09:30:00 2352

Java

C/C++、Java、Go、Python总结对比27-try...catch

我们平时写完代码运行的过程中,会出现一些问题,但是又不想让程序立马挂掉,或者有些数据没有处理程序就终止运行了。对于不想让程序直接遇到问题就停止的情况,我们可以用try...catch...捕获异常,打印出异常后继续运行。对于有些数据没有处理程序就挂掉的情况,我们可以用c++的析构函数和java中的finally来进行处理。throw:当问题出现时,程序会抛出一个异常。这是通过使用throw关键字来完成的。catch:在您想要处理问题的地方,通过异常处理程序

系统 2019-09-27 17:46:10 2351

Java

深入浅出基于Java的代理设计模式

一、引子我们去科技市场为自己的机器添加点奢侈的配件,很多DIYer都喜欢去找代理商,因为在代理商那里拿到的东西不仅质量有保证,而且价格和售后服务上都会好很多。客户通过代理商得到了自己想要的东西,而且还享受到了代理商额外的服务;而生产厂商通过代理商将自己的产品推广出去,而且可以将一些销售服务的任务交给代理商来完成(当然代理商要和厂商来共同分担风险,分配利润),这样自己就可以花更多的心思在产品的设计和生产上了。在美国,任何企业的产品要想拿到市场上去卖就必须经过

系统 2019-08-29 23:39:43 2351

Java

java*工程 slf4j+logback实现日志记录

1.目录结构2.java测试码packagecom.test.main;importjava.net.URL;importorg.slf4j.ILoggerFactory;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.context.ApplicationContext;importorg.springframework.context.supp

系统 2019-08-29 23:22:39 2351

Java

java解释xml

这就一个简单的jdom怎么解释xmlTest.javaimportorg.jdom.Document;importorg.jdom.Element;importorg.jdom.input.SAXBuilder;importjava.io.*;importjava.util.*;publicclassTest...{publicTest()...{}publicstaticvoidmain(String[]args)...{Documentdom=null

系统 2019-08-29 22:39:30 2351

Java

jetty6 嵌入到 javaproject中

Jetty是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty以其高效、小巧、可嵌入式等优点深得人心,尤其是启动速度Tomcat6简直望尘莫及。Jetty作为可选的servlet容器只是一个额外的功能,而它真正出名是因为它是作为一个可以嵌入到其他的Java代码中的servlet容器而设计的。这就是说,开发小组将Jetty作为一组Jar文件提供出来,因此你可以在你自己的代码中将servlet容器实例

系统 2019-08-29 22:10:54 2351

Java

Java线程:线程状态的转换

Java线程:线程状态的转换SCJP5学习笔记一、线程状态线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞。用一个图来描述如下:1、新状态:线程对象已经创建,还没有在其上调用start()方法。2、可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。3、运行状

系统 2019-08-12 09:30:26 2351

Java

JAVA面试题解惑系列(六)——字符串(String)

好东西分享上一次我们已经一起回顾了面试题中常考的到底创建了几个String对象的相关知识,这一次我们以几个常见面试题为引子,来回顾一下String对象相关的其它一些方面。String的length()方法和数组的length属性String类有length()方法吗?数组有length()方法吗?String类当然有length()方法了,看看String类的源码就知道了,这是这个方法的定义:Java代码publicintlength(){returnco

系统 2019-08-12 09:30:16 2351

Java

深入分析 Java I/O 的工作机制

I/O问题可以说是当今互联网Web应用中所面临的主要问题之一,因为当前在这个海量数据时代,数据在网络中随处流动。这个流动的过程中都涉及到I/O问题,可以说大部分Web应用系统的瓶颈都是I/O瓶颈。本文的目的正是分析I/O的内在工作机制,你将了解到:Java的I/O类库的基本架构;磁盘I/O工作机制;网络I/O的工作机制;其中以网络I/O为重点介绍JavaSocket的工作方式;你还将了解到NIO的工作方式,还有同步和异步以及阻塞与非阻塞的区别,最后我们将介

系统 2019-08-29 22:25:44 2350

Java

java解惑你知多少(二)

8.+=复合赋值问题x+=i与x=x+i等效吗,许多程序员都会认为第一个表达式x+=i只是第二个表达式x=x+i的简写方式,但这并不准确。Java语言规范中提到:复合赋值E1op=E2等价于简单赋值E1=(T)((E1)op(E2)),其中T是E1的类型。复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响,然而,如果结果的类型比该变量的类型要宽,那么复合赋值操作符将悄悄地执行一个窄化

系统 2019-08-29 22:02:50 2350

Java

使用JNI集成java与native程序

当我们开始接触JNI但是还不熟悉的时候,也许会这样几个问题:Java程序和native程序的数据类型通常是不一样的,它们怎么相互映射的呢?怎么在native方法中访问java方法传递过来的数据呢?在native方法中可以创建java对象吗?如何把结果返回给调用它的java方法?读完本文你将会明白如上问题的来龙去脉。首先我在重复一下如何编写JNI相关的应用程序,我们必须在java方法中声明一个native的方法,比如publicnativeStringget

系统 2019-08-12 09:30:14 2350