常需要对list进行排序,小到List,大到对自定义的类进行排序。不需要自行归并或堆排序。简单实现一个接口即可。
本文先会介绍利用Collections对 List进行排序 ,继而讲到Collections.sort的原理,
再讲到如何对自定义类进行排序,
最后会介绍利用 Collections sort对自定义对象进行排序的另外一种方法, 并将两种排序进行了简单的性能比较。
下文中提到的如何追踪Collections等类的ava源代码,可以参考:http://trinea.iteye.com/blog/1351233
1、对List排序及Collections.sort的原理
代码如下
List stringList = new ArrayList();
stringList.add("nice");
stringList.add("delicious");
stringList.add("able");
stringList.add("moon");
stringList.add("try");
stringList.add("friend");
Collections.sort(stringList);
for (String str : stringList) {
System.out.println(str);
}
其中Collections为java.util.Collections。
查看Collections中的sort实现
@SuppressWarnings("unchecked")
public static > void sort(List list) {
Object[] array = list.toArray();
Arrays.sort(array);
int i = 0;
ListIterator it = list.listIterator();
while (it.hasNext()) {
it.next();
it.set((T) array[i++]);
}
}
从中可以看出排序主体为Arrays.sort(array);Arrays的sort实现为
public static void sort(Object[] array) {
// BEGIN android-changed
ComparableTimSort.sort(array);
// END android-changed
}
继续追踪,ComparableTimSort 的sort实现ComparableTimSort.sort
static void sort(Object[] a)到static void sort(Object[] a, int lo, int hi)到private static void binarySort(Object[] a, int lo, int hi, int start)。在binarySort中用于大小比较部分为
Comparable pivot = (Comparable) a[start];
int left = lo;
int right = start;
assert left <= right;
while (left < right) {
int mid = (left + right) >>> 1;
if (pivot.compareTo(a[mid]) < 0)
right = mid;
else
left = mid + 1;
}
会调用Object的compareTo进行比较。而默认类似String和Integer类型都已经覆盖 compareTo方法。所以可以自行进行比较
2、对自定义类进行比较
通过上面的介绍了解了Collections排序的原理,下面介绍下自定义对象的排序,先查看下 Integer和 String的比较原理、然后介绍如何对自定义类进行比较
2.1 我们查看Object的实现发现其中并没有compareTo方法,
再看下Integer 定义
public final class Integer extends Number implements Comparable
再看下String的定义
public final class String implements java.io.Serializable, Comparable, CharSequence
我们可以发现他们都继承自Comparable
2.2 查看Comparable接口
可以发现Comparable中只有一个方法
public int compareTo(T o);
也就是说实际上binarySort方法中调用的是Comparable的 compareTo方法,以此可知只要继承自 Comparable,
并实现 compareTo即可调用 Collections.sort对自定义对象进行排序
2.3 自定义类的比较
下面代码为对User进行排序,首先按姓名字母先后排序,若姓名相同,则按年龄由小到大排序
public class MainTest {
public static void main(String[] args) {
List userList = new ArrayList();
userList.add(new User("Lucy", 19));
userList.add(new User("Jack", 19));
userList.add(new User("Jim", 19));
userList.add(new User("James", 19));
userList.add(new User("Herry", 19));
userList.add(new User("Luccy", 19));
userList.add(new User("James", 18));
userList.add(new User("Herry", 20));
Collections.sort(userList);
for (User user : userList) {
System.out.println(user.getName() + "\t\t" + user.getAge());
}
}
private static class User implements Comparable {
private String name;
private int age;
public User(String name, int age){
this.name = name;
this.age = age;
}
@Override
public int compareTo(User another) {
int compareName = this.name.compareTo(another.getName());
if (compareName == 0) {
return (this.age == another.getAge() ? 0 : (this.age > another.getAge() ? 1 : -1));
}
return compareName;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
}
执行后输出为:
Herry 19
Herry 20
Jack 19
James 18
James 19
Jim 19
Luccy 19
Lucy 19
可以看出只需两点即可
a、继承自Comparable
private static class User implements Comparable
b、实现compareTo方法
上面的public int compareTo(User another)为比较的主体
可以看到其中int compareName = this.name.compareTo(another.getName());表示比较姓名
若大于返回1,等于返回0,小于会返回-1 。
若相等则按照int age的大小进行比较。
上面的大于返回1,等于返回0,小于会返回-1 也是用来 binarySort比较的依据。
3、利用Collections sort的重载函数对自定义对象进行排序
代码如下,仍同2中的一样先比较姓名,若相等再比较年龄输出
public class MainTest {
public static void main(String[] args) {
List userList = new ArrayList();
userList.add(new User("Lucy", 19));
userList.add(new User("Jack", 19));
userList.add(new User("Jim", 19));
userList.add(new User("James", 19));
userList.add(new User("Herry", 19));
userList.add(new User("Luccy", 19));
userList.add(new User("James", 18));
userList.add(new User("Herry", 20));
Collections.sort(userList, new Comparator() {
public int compare(User user1, User user2) {
int compareName = user1.getName().compareTo(user2.getName());
if (compareName == 0) {
return (user1.getAge() == user2.getAge() ? 0 : (user1.getAge() > user2.getAge() ? 1 : -1));
}
return compareName;
}
});
for (User user : userList) {
System.out.println(user.getName() + "\t\t" + user.getAge());
}
}
private static class User {
private String name;
private int age;
public User(String name, int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
}
可以看出其中
Collections.sort(userList, new Comparator())
为比较的主体,并且实现了Comparator的compare方法。下面介绍下此种方法的原理
追踪Collections的
public static void sort(List list, Comparator c)
到
public static void sort(T[] a, Comparator c)
到
private static void mergeSort(Object[] src, Object[] dest, int low, int high, int off, Comparator c)
可以发现其中代码如下:
if (length < INSERTIONSORT_THRESHOLD) {
for (int i=low; ilow && c.compare(dest[j-1], dest[j])>0; j--)
swap(dest, j, j-1);
return;
}
调用Comparator的 compare方法
4、以上两种排序性能的比较
binarySort需要进行nlg(n)次的比较 ,最坏情况下n^2次的移动
mergeSort是不断进行二分,二分到很小部分后进行插入排序。所以会比较nlg(n)次 ,移动nlg(n)次 。但它需要先复制一份源数据,所以会多占用一倍的空间
所以实际情况可以根据需要选择
Android 开发进阶:
我的微博 Trinea,更及时全面的技术分享!
Android 插件化
Android 开源库获取途径整理
VPN云梯推荐,合买每月仅5元,全平台支持
Java Annotation 及几个常用开源项目注解原理简析
Android自动轮播 无限循环的ViewPager
Android开源项目汇总
Android性能优化总结
Android公共库(缓存 下拉ListView 静默安装等)
Android ImageCache图片缓存
下拉刷新及滚动到底部加载更多的Listview使用
你可能感兴趣的:(Java,Android应用)
从负数绝对值的计算来看Ruby的一个“奇葩”行为
计算一个数的绝对值是非常基础的操作,几乎所有主流的编程语言都内置了相应的函数或方法。在PHP、Python、SQL等语言中,直接调用abs()函数即可,例如abs(-1)。到了Java、C#这类面向对象的语言中,abs()通常是Math类的静态方法,调用时要加上前缀Math.,即Math.abs(-1)。Go语言就要稍微麻烦一点了,因为math包中的Abs()函数仅支持float64类型的参数,如
kotlin标准库里面也有很多java类
yzpyzp
kotlin android java
Kotlin标准库中确实存在许多与Java类直接关联或基于Java类封装的结构,但这并不是“问题”,而是Kotlin与JVM生态深度兼容和互操作性的体现。以下从技术原理和设计哲学的角度详细解释:一、Kotlin与JVM的底层关系Kotlin代码最终会编译成JVM字节码,因此它必须与Java类库无缝协作。Kotlin标准库的设计原则之一就是兼容Java生态,其内部实现会直接或间接依赖Java标准库中
kotlin-kapt
yzpyzp
kotlin android
kotlin-kaptkotlin-kapt是Kotlin的一个插件,专门用于处理注解处理器(AnnotationProcessor)。以下是对该插件的详细解释和指南:kotlin-kapt是什么?kotlin-kapt是Kotlin官方提供的一个插件,用于在Kotlin项目中支持注解处理。KAPT(KotlinAnnotationProcessingTool)是JavaAPT(Annotatio
【JavaScript fetch API】简介和使用
williamdsy
前端 javascript 开发语言 ecmascript fetch api 简单使用
fetch是一个现代的JavaScriptAPI,用于获取资源,例如从网络服务器获取数据。它提供了一种比传统的XMLHttpRequest更简洁、更易于使用的机制来进行网络请求。fetch基于Promise,这使得异步操作更容易处理。核心概念:fetch(url,[options]):这是fetchAPI的核心函数。它接受一个URL作为第一个参数,可选地接受一个包含请求配置的options对象作为
颠覆传统Java性能瓶颈:Quarkus+GraalVM原生镜像实战解析
桂月二二
java 开发语言
引言:云原生时代的Java困境在容器化与Serverless架构大行其道的今天,传统Java应用的启动速度与内存消耗已成为制约其发展的关键瓶颈。当Node.js应用在300ms内完成冷启动时,SpringBoot应用可能还在JVM预热阶段。本文将揭秘如何通过Quarkus框架与GraalVM原生编译技术,打造启动时间findByOrderNumber(StringorderNumber){retu
JavaScript Fetch
noPermission
JavaScript javascript 前端 开发语言
一、什么是fetch?在前端的发展历程中用于请求网络资源的方式主要有三种:从原生的XMLHttpRequest到jQuery的Ajax再到现在主流的axios,其中Ajax和axios都是对XMLHttpRequest的封装(本质上都是使用XMLHttpRequest方法获取网络资源),这些封装库让开发者对XMLHttpRequest的使用变得更简单高效。然而fetch的推出使开发者对网络资源的异
JAVA架构师需要掌握的常用架构模式有哪些?
猿享天开
Java开发从入门到精通 java 架构 开发语言
引言Java架构师必须掌握常用技术组合及其选型逻辑。技术组合的选择直接影响系统的可扩展性、性能和维护成本。以下是当前主流技术组合、选型原则及常用架构应用的详细说明:一、当前主流技术组合及其应用场景1.基础开发框架技术组合应用场景核心优势SpringBoot+MyBatis+MySQL中小型单体应用、快速迭代业务开发效率高、ORM轻量、数据库兼容性强SpringBoot+JPA+PostgreSQL
ServletRequest 和 HttpServletRequest 的关系
牛马白菜价
tomcat servlet
1.ServletRequest和HttpServletRequest的关系ServletRequest接口:它是JavaServletAPI中的一个核心接口,定义了客户端请求的基本信息和操作方法。该接口提供了通用的请求处理功能,适用于各种协议的请求。例如,它可以获取请求的参数、属性等信息。HttpServletRequest接口:HttpServletRequest是ServletRequest
【JavaScript】异常处理详解
Peter-Lu
# JavaScript javascript 前端 ecmascript
文章目录一、JavaScript异常处理概述1.什么是异常?2.为什么需要异常处理?二、JavaScript中的异常类型1.系统异常示例2.自定义异常示例三、异常处理的基本语法1.try...catch详解2.finally详解四、throw关键字1.手动抛出异常2.自定义异常类型五、异常处理的最佳实践1.避免过度捕获异常2.提供有意义的错误信息3.使用finally释放资源4.避免在finall
Java高级特性(基础知识点总结)
杰—
java
文章目录第三章:java高级API1️⃣什么是集合面试题:集合分为2个顶级接口:分别为Collection和Map面试题面试题2:面试题3Map接口:HashMap的数据结构面试题:面试题面试题包装类:JavaApi输入流和输出流会使用File类操作文件或目录File类的构造方法IO流的分类4大顶级抽象父类字符集基础知识:字节输出流写数据的步骤流的关闭与刷新第三章:java高级API1️⃣什么是集
使用Spring Boot开发后端应用:在IntelliJ IDEA中的实践指南
风亦辰739
后端 spring boot java intellij-idea
一、什么是SpringBoot?SpringBoot是一个开源框架,用于简化Java应用的构建过程,尤其是Web应用。它是基于Spring框架的,提供了许多开箱即用的功能,极大地简化了Spring应用的配置和开发过程。SpringBoot让开发者无需关注繁琐的配置,可以专注于业务逻辑的实现。SpringBoot的优势:自动配置:SpringBoot根据项目的依赖自动配置相关功能,避免手动配置繁琐的
Django学习笔记(第一天:Django基本知识简介与启动)
S1901
python Django django 学习 笔记
博主毕业已经工作一年多了,最基本的测试工作已经完全掌握。一方面为了解决当前公司没有自动化测试平台的痛点,另一方面为了向更高级的测试架构师转型,于是重温Django的知识,用于后期搭建测试自动化平台。为什么不选择Java:Python语法简洁易读,适合快速开发。Selenium、Appium、pytest、Requests等工具对Python支持极好,且有丰富的文档和社区资源。Django简介Dja
详解javascript的bind方法
北京王老师
js vue java javascript python
JS的bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被指定为bind()的第一个参数,而其余参数将作为新函数的参数,供调用时使用。通过bind可解决两个问题:1)以隐蔽和优雅的方式解决依赖注入的问题,可以将函数执行需要的上下文环境对象通过bind方法传递给函数,在函数内部直接使用this来引用。2)解决多层调用时this对象无法传递给内部函数的问题,实际是第一个问题
详解 JavaScript 中 fetch 方法
ttod_qzstudio
JavaScript JavaScript
在现代的Web开发中,与服务器进行数据交互是一项常见且重要的任务。JavaScript提供了多种方式来实现这一功能,其中fetch方法是一个强大且灵活的工具。本文将详细介绍fetch方法的各个方面,帮助你更好地理解和使用它。什么是fetch方法fetch是JavaScript中用于发起网络请求的现代API,它提供了一种更简洁、更强大的方式来处理网络通信。fetch方法返回一个Promise对象,该
Struts2 命令执行漏洞 S2-045 复现:深入剖析与实战演练
垚垚 Securify 前沿站
十大漏洞 网络 系统安全 web安全 struts 安全 计算机网络 后端
目录前言一、漏洞原理:框架解析缺陷引发的安全危机二、复现环境搭建:搭建模拟战场,重现漏洞场景三、复现步骤:步步为营,揭开漏洞利用的面纱四、漏洞危害与修复建议:正视漏洞危害,筑牢安全防线前言在当今网络安全形势日益严峻的大环境下,Web应用框架的安全问题始终是信息安全领域关注的焦点。Struts2作为一款广泛应用于JavaWeb开发的开源框架,其安全性直接关系到众多Web应用的稳定运行。今天,我们将深
eclipse2017支持的Servlet的版本_jsp进阶(servlet篇)
weixin_39814369
Servlet篇(jsp重点)@author:杜勇帅@email:820482874@qq.com-一.Servlet基础一.Servlet概述Servlet是运行在服务器端的java程序(类),作用是接收并处理客户端的请求,生成响应给客户端。学习了Servlet后,jsp页面只负责展示数据,Servlet负责处理请求(调用Dao实现具体功能),并将数据转发到jsp页面上去展示(生成响应给客户端)
java lambda表达式编译_什么是Java 8 Lambda表达式编译?
我是一只萤火虫呀
java lambda表达式编译
参见英文答案>HowwillJavalambdafunctionsbecompiled?考虑下面的Java8代码段。publicstaticvoidmain(String[]args){Listintegers=Arrays.asList(1,2,3,4,5);Consumerconsumer=x->System.out.print(x);integers.forEach(consumer);}什
线程同步CountDownLatch的使用
初夏の猫
java 开发语言
CountDownLatch是Java中一个常用的同步工具类,主要用于协调多个线程的执行。它可以让一个或多个线程等待,直到其他线程执行完毕后才能继续。常见的使用场景是多个线程执行一些并行任务,主线程需要等待所有线程完成任务才能继续执行。基本概念:CountDownLatch类接受一个初始计数值,这个计数值通常是线程的数量。每个线程在完成其任务时调用countDown()方法将计数值减1,直到计数值
2021-03-01-深入浅出解析jsp
热爱Java的程序猿
后端 jsp servlet java
来历servlet的缺点导致jsp的产生JSP全称是JavaServerPagesjsp=html+js+Java+Tag用法servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示交给jsp来做在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用原理所有的jsp最后都编译成servlet,编译后的路径一般在t
小记 Java stream 中 peek()
神奏
盛开 java lambda
peek函数:接受一个函数作为参数。这个函数会被应用到每个元素上,并将结果元素映射成一个新的元素。相比于类似foreach,更类似于lambda中的map函数。map函数:接受一个函数作为参数。这个函数会被应用到每个元素上,并将返回值映射成一个新的元素。简单来说,map函数就是对流对象(集合中的所有对象)进行操作并返回一个Stream对象,这个Object对象可以是源对象的类型,也可以是其他类型。
HttpServletRequest 作用
冰糖心158
2025 Java面试系列 Java 开发 java
HttpServletRequest接口在JavaServletAPI中扮演着至关重要的角色,它是Servlet处理客户端HTTP请求的核心对象。每次客户端(例如浏览器)向服务器发送一个HTTP请求时,Servlet容器(例如Tomcat)都会创建一个HttpServletRequest对象,并将客户端的请求数据封装在这个对象中,然后将这个对象传递给Servlet的service()方法(或者do
Java进阶之泛型
m0_74824483
面试 学习路线 阿里巴巴 java 开发语言
泛型(Generics)定义泛型:允许在定义类、接口和方法时使用类型参数,从而在编译时捕获类型错误,提高代码的类型安全性和复用性。主要用途类型安全:避免类型转换错误,编译时检查类型安全。代码复用:通过泛型可以编写通用的类和方法,适用于多种数据类型。消除强制类型转换:在使用泛型时,编译器会自动进行类型转换,减少代码中的强制类型转换。泛型的基本语法标记符T是类型参数,通常使用T、E、K、V等字母来表示
ES java客户端中关于BucketSortPipelineAggregationBuilder的问题
Sunager
ElasticSearch elasticsearch java
es聚合后进行分页(非标准分页,涉及到es底层的检索方式)es桶聚合后排序介绍见ES指南介绍//kibana对聚合后的数据GET/_search{"query":{"bool":{"filter":[{"match":{"question":"好的"}},{"range":{
SpringBoot Jwt令牌的使用(黑马javaweb)
liuaiguo75
SpringBoot JAVA Idea spring boot 后端 java spring intellij-idea log4j mybatis
JWT概念JSONWebToken(JWT)是一种开放标准(RFC7519),它定义了一种紧凑和自包含的方式,用于作为JSON对象在各方之间安全地传输信息。这个信息可以被验证和信任,因为它是数字签名的。JWTs可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。JWT作用1、授权2、信息交换JWT示例代码1、SpringBoot中引入JWTio.jsonwebtoken
java.lang.IllegalStateException: No thread-bound request found 解决方法
摸鱼码长
子线程共享 异步Feign调用 java 后端 经验分享 spring boot
1、让我们看看这熟悉的报错java.lang.IllegalStateException:Nothread-boundrequestfound:Areyoureferringtorequestattributesoutsideofanactualwebrequest,orprocessingarequestoutsideoftheoriginallyreceivingthread?Ifyouare
浅谈Java Spring Boot 框架分析和理解
微笑的曙光(StevenLi)
JAVA java spring boot 开发语言
SpringBoot是一个简化Spring开发的框架,它遵循“约定优于配置”的原则,通过内嵌的Tomcat、Jetty或Undertow等容器,使得开发者能够快速构建独立运行的、生产级别的基于Spring框架的应用程序。SpringBoot包含了大量的自动配置功能,可智能识别已存在的库并配置相应组件,从而减少手动配置的工作量。JavaSpringBoot是一个基于Spring框架的开源Java框架
【LeetCode Hot100】盛最多水的容器[特殊字符]双指针法,Java实现!图文详解,小白也能秒懂!
AllowM
算法hot100 leetcode java 算法
[LeetCodeHot100]盛最多水的容器双指针法,Java实现!图文详解,小白也能秒懂!✏️本文对应题目链接:盛最多水的容器题目描述给定一个长度为n的整数数组height,其中height[i]表示第i条垂直线的高度。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。示例:输入:height=[1,8,6,2,5,4,8,3,7]输出:49解释:选择第2条线(高度8)和第9条线
2024年前端最全Java进阶(五十五)-Java Lambda表达式入门_eclipse lambda(2),程序员面试技巧和注意事项
2401_84435192
程序员 前端 面试 学习
算法冒泡排序选择排序快速排序二叉树查找:最大值、最小值、固定值二叉树遍历二叉树的最大深度给予链表中的任一节点,把它删除掉链表倒叙如何判断一个单链表有环由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!如果你觉得对你有帮助,可以戳这里获取:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】"And
2024年Java进阶(五十五)-Java Lambda表达式入门_eclipse lambda,2024年最新阿里员工面试
2401_84446712
程序员 前端 面试 学习
最后一个好的心态和一个坚持的心很重要,很多冲着高薪的人想学习前端,但是能学到最后的没有几个,遇到困难就放弃了,这种人到处都是,就是因为有的东西难,所以他的回报才很大,我们评判一个前端开发者是什么水平,就是他解决问题的能力有多强。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】分享一些前端面试题以及学习路线给大家###基本的Lambda例子 现在,我们已经知道什么是l
Java可视化界面
Justice link
java python 开发语言
一。使用JFrame(创建窗口)JDialog(创建新窗口) //1.创建一个窗口对象JFrameframe=newJFrame("一个文件");//2.创建一个容器Containercontainer=frame.getContentPane();//3.为容器添加颜色container.setBackground(Color.gray);//4.为窗口设置大小窗口frame.setBou
scala的option和some
矮蛋蛋
编程 scala
原文地址:
http://blog.sina.com.cn/s/blog_68af3f090100qkt8.html
对于学习 Scala 的 Java™ 开发人员来说,对象是一个比较自然、简单的入口点。在 本系列 前几期文章中,我介绍了 Scala 中一些面向对象的编程方法,这些方法实际上与 Java 编程的区别不是很大。我还向您展示了 Scala 如何重新应用传统的面向对象概念,找到其缺点
NullPointerException
Cb123456
android BaseAdapter
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getImportantForAccessibility()' on a null object reference
出现以上异常.然后就在baidu上
PHP使用文件和目录
天子之骄
php文件和目录 读取和写入 php验证文件 php锁定文件
PHP使用文件和目录
1.使用include()包含文件
(1):使用include()从一个被包含文档返回一个值
(2):在控制结构中使用include()
include_once()函数需要一个包含文件的路径,此外,第一次调用它的情况和include()一样,如果在脚本执行中再次对同一个文件调用,那么这个文件不会再次包含。
在php.ini文件中设置
SQL SELECT DISTINCT 语句
何必如此
sql
SELECT DISTINCT 语句用于返回唯一不同的值。
SQL SELECT DISTINCT 语句
在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。
DISTINCT 关键词用于返回唯一不同的值。
SQL SELECT DISTINCT 语法
SELECT DISTINCT column_name,column_name
F
java冒泡排序
3213213333332132
java 冒泡排序
package com.algorithm;
/**
* @Description 冒泡
* @author FuJianyong
* 2015-1-22上午09:58:39
*/
public class MaoPao {
public static void main(String[] args) {
int[] mao = {17,50,26,18,9,10
struts2.18 +json,struts2-json-plugin-2.1.8.1.jar配置及问题!
7454103
DAO spring Ajax json qq
struts2.18 出来有段时间了! (貌似是 稳定版)
闲时研究下下! 貌似 sruts2 搭配 json 做 ajax 很吃香!
实践了下下! 不当之处请绕过! 呵呵
网上一大堆 struts2+json 不过大多的json 插件 都是 jsonplugin.34.jar
strut
struts2 数据标签说明
darkranger
jsp bean struts servlet Scheme
数据标签主要用于提供各种数据访问相关的功能,包括显示一个Action里的属性,以及生成国际化输出等功能
数据标签主要包括:
action :该标签用于在JSP页面中直接调用一个Action,通过指定executeResult参数,还可将该Action的处理结果包含到本页面来。
bean :该标签用于创建一个javabean实例。如果指定了id属性,则可以将创建的javabean实例放入Sta
链表.简单的链表节点构建
aijuans
编程技巧
/*编程环境WIN-TC*/ #include "stdio.h" #include "conio.h"
#define NODE(name, key_word, help) \ Node name[1]={{NULL, NULL, NULL, key_word, help}}
typedef struct node { &nbs
tomcat下jndi的三种配置方式
avords
tomcat
jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称
访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。
tomcat配置
关于敏捷的一些想法
houxinyou
敏捷
从网上看到这样一句话:“敏捷开发的最重要目标就是:满足用户多变的需求,说白了就是最大程度的让客户满意。”
感觉表达的不太清楚。
感觉容易被人误解的地方主要在“用户多变的需求”上。
第一种多变,实际上就是没有从根本上了解了用户的需求。用户的需求实际是稳定的,只是比较多,也比较混乱,用户一般只能了解自己的那一小部分,所以没有用户能清楚的表达出整体需求。而由于各种条件的,用户表达自己那一部分时也有
富养还是穷养,决定孩子的一生
bijian1013
教育 人生
是什么决定孩子未来物质能否丰盛?为什么说寒门很难出贵子,三代才能出贵族?真的是父母必须有钱,才能大概率保证孩子未来富有吗?-----作者:@李雪爱与自由
事实并非由物质决定,而是由心灵决定。一朋友富有而且修养气质很好,兄弟姐妹也都如此。她的童年时代,物质上大家都很贫乏,但妈妈总是保持生活中的美感,时不时给孩子们带回一些美好小玩意,从来不对孩子传递生活艰辛、金钱来之不易、要懂得珍惜
oracle 日期时间格式转化
征客丶
oracle
oracle 系统时间有 SYSDATE 与 SYSTIMESTAMP;
SYSDATE:不支持毫秒,取的是系统时间;
SYSTIMESTAMP:支持毫秒,日期,时间是给时区转换的,秒和毫秒是取的系统的。
日期转字符窜:
一、不取毫秒:
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')
简要说明,
YYYY 年
MM 月
【Scala六】分析Spark源代码总结的Scala语法四
bit1129
scala
1. apply语法
FileShuffleBlockManager中定义的类ShuffleFileGroup,定义:
private class ShuffleFileGroup(val shuffleId: Int, val fileId: Int, val files: Array[File]) {
...
def apply(bucketId
Erlang中有意思的bug
bookjovi
erlang
代码中常有一些很搞笑的bug,如下面的一行代码被调用两次(Erlang beam)
commit f667e4a47b07b07ed035073b94d699ff5fe0ba9b
Author: Jovi Zhang <bookjovi@gmail.com>
Date: Fri Dec 2 16:19:22 2011 +0100
erts:
移位打印10进制数转16进制-2008-08-18
ljy325
java 基础
/**
* Description 移位打印10进制的16进制形式
* Creation Date 15-08-2008 9:00
* @author 卢俊宇
* @version 1.0
*
*/
public class PrintHex {
// 备选字符
static final char di
读《研磨设计模式》-代码笔记-组合模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.ArrayList;
import java.util.List;
abstract class Component {
public abstract void printStruct(Str
利用cmd命令将.class文件打包成jar
chenyu19891124
cmd jar
cmd命令打jar是如下实现:
在运行里输入cmd,利用cmd命令进入到本地的工作盘符。(如我的是D盘下的文件有此路径 D:\workspace\prpall\WEB-INF\classes)
现在是想把D:\workspace\prpall\WEB-INF\classes路径下所有的文件打包成prpall.jar。然后继续如下操作:
cd D: 回车
cd workspace/prpal
[原创]JWFD v0.96 工作流系统二次开发包 for Eclipse 简要说明
comsci
eclipse 设计模式 算法 工作 swing
JWFD v0.96 工作流系统二次开发包 for Eclipse 简要说明
&nb
SecureCRT右键粘贴的设置
daizj
secureCRT 右键 粘贴
一般都习惯鼠标右键自动粘贴的功能,对于SecureCRT6.7.5 ,这个功能也已经是默认配置了。
老版本的SecureCRT其实也有这个功能,只是不是默认设置,很多人不知道罢了。
菜单:
Options->Global Options ...->Terminal
右边有个Mouse的选项块。
Copy on Select
Paste on Right/Middle
Linux 软链接和硬链接
dongwei_6688
linux
1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。
【硬连接】硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连
DIV底部自适应
dcj3sjt126com
JavaScript
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml&q
Centos6.5使用yum安装mysql——快速上手必备
dcj3sjt126com
mysql
第1步、yum安装mysql
[root@stonex ~]# yum -y install mysql-server
安装结果:
Installed:
mysql-server.x86_64 0:5.1.73-3.el6_5 &nb
如何调试JDK源码
frank1234
jdk
相信各位小伙伴们跟我一样,想通过JDK源码来学习Java,比如collections包,java.util.concurrent包。
可惜的是sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt.jar。
下面是编译jdk的具体步骤:
1.把C:\java\jdk1.6.0_26\sr
Maximal Rectangle
hcx2013
max
Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and return its area.
public class Solution {
public int maximalRectangle(char[][] matrix)
Spring MVC测试框架详解——服务端测试
jinnianshilongnian
spring mvc test
随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的。从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用spring-test-mvc项目(合并到spring3.2中了)。
Spring MVC测试框架提供了对服务器端和客户端(基于RestTemplate的客户端)提供了支持。
&nbs
Linux64位操作系统(CentOS6.6)上如何编译hadoop2.4.0
liyong0802
hadoop
一、准备编译软件
1.在官网下载jdk1.7、maven3.2.1、ant1.9.4,解压设置好环境变量就可以用。
环境变量设置如下:
(1)执行vim /etc/profile
(2)在文件尾部加入:
export JAVA_HOME=/home/spark/jdk1.7
export MAVEN_HOME=/ho
StatusBar 字体白色
pangyulei
status
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
/*you'll also need to set UIViewControllerBasedStatusBarAppearance to NO in the plist file if you use this method
如何分析Java虚拟机死锁
sesame
java thread oracle 虚拟机 jdbc
英文资料:
Thread Dump and Concurrency Locks
Thread dumps are very useful for diagnosing synchronization related problems such as deadlocks on object monitors. Ctrl-\ on Solaris/Linux or Ctrl-B
位运算简介及实用技巧(一):基础篇
tw_wangzhengquan
位运算
http://www.matrix67.com/blog/archives/263
去年年底写的关于位运算的日志是这个Blog里少数大受欢迎的文章之一,很多人都希望我能不断完善那篇文章。后来我看到了不少其它的资料,学习到了更多关于位运算的知识,有了重新整理位运算技巧的想法。从今天起我就开始写这一系列位运算讲解文章,与其说是原来那篇文章的follow-up,不如说是一个r
jsearch的索引文件结构
yangshangchuan
搜索引擎 jsearch 全文检索 信息检索 word分词
jsearch是一个高性能的全文检索工具包,基于倒排索引,基于java8,类似于lucene,但更轻量级。
jsearch的索引文件结构定义如下:
1、一个词的索引由=分割的三部分组成: 第一部分是词 第二部分是这个词在多少