比较

Java/C#代码:名单提交修改前比较是否相等

本秂侑毒 提交于 2020-03-02 02:16:57
今天遇到的问题是,要做一个名单维护的功能,名单维护需要复核操作,但在提交复核操作前,系统需要判断修改前名单和修改后名单是否是一样的,如果是一样的就要报错。 出于前后台互不信任的考虑,这个功能要在前后台分别实现一次,因为项目中前台客户端用的是C#语言编写,后台服务用的是Java语言,所以我把这个功能用两种语言分别实现了一次。 一、Java语言(后台)的实现方式 思路如下: 1、先进行一些简单的比较,如两个数组都为空,则认为是相等的,如两个数组长度不相等,则认为是不相等的 2、如果两个数组都不为空且长度相等,则对这两个数组分别进行排序,再逐一比对相同位置的人是否是同一人 我的Java版本为1.8.0_25,Java代码如下: import java.util.Arrays; import java.util.Comparator; /** * 判定两数组是否具有相同数据 * * @文件名称 Solution.java * @文件作者 Tsybius2014 * @创建时间 2016年1月4日 下午11:37:52 */ public class Solution { //被比较的类 public static class TestObj { public TestObj(String id) { this.id = id; } String id; public String

Spring两种依赖注入方式的比较

守給你的承諾、 提交于 2020-02-29 10:48:17
我们知道,Spring对象属性的注入方式有两种:设值注入和构造注入。先看代码:   假设有个类为People,该对象包含三个属性,name和school还有age,这些属性都有各自的setter和getter方法,还有一个包含这三个属性的构造方法。如果用spring来管理这个对象,那么有以下两种方式为People设置属性:   1.设值注入: <bean id="people" class="com.abc.People">    <property name="name" value="张三" /> <!-- 设值注入 -->    <property name="school" ref="school" /> <!-- 设值注入 -->    <property name="age" value="20" type="int" /> </bean> <bean id="school" class="com.abc.School" />    2.构造注入: <bean id="people" class="com.abc.People"> <!-- 构造注入,index=0表示构造器的第一个参数 -->    <constructor-arg index="0" value="张三"/>    <constructor-arg index="1" ref="school" />

JVM常量池及字符串==比较分析

烂漫一生 提交于 2019-12-14 19:59:55
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Java常量池技术 java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,不同于使用new关键字创建的对象所在的堆空间。 String类也是java中用得多的类,同样为了创建String对象的方便,也实现了常量池的技术。 在本文描述常量池之前,先来了解一下JVM运行时数据区的内存模型。《深入JAVA虚拟机》书中是这样描述的:JVM运行时数据区的内存模型由五部分组成: 【1】方法区 【2】堆 【3】JAVA栈 【4】PC寄存器 【5】本地方法栈 对于String s = "haha" ,它的虚拟机指令: 0: ldc #16; //String haha 2: astore_1 3: return 对于上面虚拟机指令,其各自的指令流程在《深入JAVA虚拟机》这样描述到(结合上面实例): ldc指令格式:ldc,index ldc指令过程:要执行ldc指令,JVM首先查找index所指定的常量池入口,在index指向的常量池入口,JVM将会查找CONSTANT_Integer_info,CONSTANT_Float_info和CONSTANT_String_info入口

php函数substr、mb_substr、mb_strcut截取中文比较

旧巷老猫 提交于 2019-12-06 19:00:46
一、函数说明 substr、mb_substr、mb_strcut这三个函数都用来截取字符串,所不同的是:substr是最简单的截取,无法适应中文;mb_substr是按字来切分字符串,而mb_strcut是按字节来切分字符串,截取中文都不会产生半个字符的现象。 这三个函数的前三个参数完全一致,即: 第一个参数是操作对象 第二个参数是截取的起始位置 第三个参数是截取的数量 mb_substr和mb_strcut还有第四个参数:第四个参数可以根据不同的字符集进行设置 <?php //对待一个UTF8的中文字符是3个长度 //对待一个gbk的中文字符是2个长度 header( "content-Type:text/html;charset=utf-8" ); //设置内部编码 mb_internal_encoding( 'UTF-8' ); //测试 $cn_str = "钓鱼岛是中国的hehe" ; $en_str = "this is just a test" ; //使用substr echo substr ( $cn_str ,0,3). '<br/>' ; //钓 echo substr ( $en_str ,0,3). '<br/><br/>' ; //thi //使用mbsubstr() echo "mb_substr-3:" .mb_substr( $cn_str ,0

比较跨语言通讯框架:Apache Thrift和Google Protobuf

倾然丶 夕夏残阳落幕 提交于 2019-12-03 06:06:56
前两天想在微博上发表一个观点:在现在的技术体系中,能用于描述通讯协议的方式很多,xml,json,protobuf,thrift,如果在有如此众多选择的基础上,在设计系统时,还自造协议,自己设计协议类型和解析方式,那么我只能说,您真的落后了,不是技术上,而是思想上。对于xml,和json我们不做过多描述了,参考相关文档就可以了。特别是json,如今在 web系统,页游系统的前后台通讯中,应用非常广泛。 本文将重点介绍两种目前在大型系统中,应用比较普遍的两种通讯框架,thrift和Protobuf ,为什么叫通讯框架,而不叫通讯协议?因为这两种技术,如果仅仅当作协议解析用,对于其强大的功能,就大打了折扣。 对于 两种利器而言,首推的应该是thrift ,因为其不仅有对于协议封装和解析的处理,而且有完备的通讯框架的实现,完全封装了底层通讯 ,对于使用者,只要在框架的客户端和服务器接口回调中,处理逻辑就可以了 。对于其确切的描述,我们还是引用官方的说法吧,这样更准确些,以免由于我自己的想法,影响了大家的理解。 Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python,

hibernate 和JDBC的比较(转)

∥☆過路亽.° 提交于 2019-12-01 08:57:00
刚开始学习JAVA时,认为Hibernate是一个很神圣的东西,好像是会了SSH,就能走遍全世界一样。记得曾经在枫叶面试的时候,我们几个同学出还说这个公司怎么这么的落后,还有JDBC,没有一点上进心。可是毕业以后才发现,却发现自已就像是井底之蛙一样。然而也不想做随风柳絮,所以决定好好的总结一下,JDBC与Hibernate的区别。 JDBC与Hibernate在性能上相比,JDBC灵活性有优势。而Hibernate在易学性,易用性上有些优势。当用到很多复杂的多表联查和复杂的数据库操作时,JDBC有优势。 相同点: ◆两者都是JAVA的数据库操作中间件。 ◆两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭。 ◆两者都可以对数据库的更新操作进行显式的事务处理。 不同点 : ◆使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query language)语言 ◆操作的对象不同:JDBC操作的是数据,将数据通过SQL语句直接传送到数据库中执行,Hibernate操作的是持久化对象,由底层持久化对象的数据更新到数据库中。 ◆数据状态不同:JDBC操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致,而Hibernate操作的数据是可持久的

virtualbox和vmware网络模式区别

人盡茶涼 提交于 2019-12-01 02:15:05
nat模式,两虚拟机对比及解决方案 之前一直用的都是vmware player 这个vmware的免费版本虽然说比较残念的是不能够使用快照功能,但是作为日常使用应该说还是行的。 之前用vmware 的时候一直是使用net模式上网的。发现虚拟机能够上网能够与主机通讯,主机也能够与虚拟机通讯,这样的话我将虚拟机当成本地服务器,不需要更改太多就能够使用了。应该说这个模式是比较贴心的了,在这里对收费商业软件赞一个哦! 而现在将主要的本地服务器用virtualbox来驱动,虽然说是开源的软件但是这个软件就没有上一个贴心了,需要进行一些调整。虽然两个虚拟机都 是有一个nat模式,但是还是有差别的,vbox的nat模式是虚拟机只能够上外网,主机与虚拟机之间不能够相互访问,这时候相当于一个程序从主机连接外 网,而vmware则增加了一个虚拟网卡,当需要与主机进行连接的时候,就通过这个网卡。 当我习惯了vmware,在virtualbox上怎么达到vmware的nat模式呢,在网络上找到了答案了,就是给虚拟机手动设置两个网卡。在 vbox设置中能够给每个虚拟机设置4个网卡,这里设置两个就可以了。第一个网卡使用nat模式,第二个网卡使用host-only 模式,而host-only需要在虚拟机全局设置中添加一个虚拟网络!这样就跟vmware 的nat模式基本上一致了。 邮政网银蓝屏问题!

powershell比较运算符

不打扰是莪最后的温柔 提交于 2019-11-30 07:08:31
比较运算符用于比较命令中不同参数中的值。从根本上说,每次比较都将创建一 个条件,该条件的计算结果为 True 或 False。根据该比较,可以采取相应的操 作。例如,可以将比较运算符与语句块结合使用,以测试特定的条件。该测试的 结果将确定应采取何种操作(亦即,将运行哪些代码块)。 PowerShell 支持以下比较运算符: 运算符 说明 示例 t/f ------------ --------------------- ------------------------ ----- -eq 等于 10 -eq 10 true -ne 不等于 10 -ne 10 false -gt 大于 10 -gt 10 false -ge 大于 10 -ge 10 true 或等于 -lt 小于 10 -lt 10 false -le 小于或等于 10 -le 10 true -like 通配符比较 "one" -like "o*" true -notlike 通配符比较 "one" -notlike "o*" false -match 正则表达式 "book" -match "[iou]" true 比较 -notmatch 正则表达式 "book" -notmatch "[iou]" false 比较 以上列出的比较运算符不区分大小写。换句话说,“abc”与“ABC”是相同的。但是,

java解析xml文件四种方式介绍、性能比较和基本使用方法

北城余情 提交于 2019-11-28 09:22:20
一、基本介绍: 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DOM使用起来也要简单得多。 2)SAX SAX处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX还比它的替代者DOM快许多。 选择DOM还是选择SAX? 对于需要自己编写代码来处理XML文档的开发人员来说, 选择DOM还是SAX解析模型是一个非常重要的设计决策。 DOM采用建立树形结构的方式访问XML文档,而SAX采用的事件模型。 DOM解析器把XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易