Java

深入Java集合学习系列:HashSet的实现原理

1.HashSet概述:HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。2.HashSet的实现:对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashMap的相关方法来完成,我们应该为保存到HashSet

系统 2019-08-29 22:51:29 2247

Java

Java连结数据库内幕

Java.sql包中的java.sql.Driver,jdbc.sql.Connection等提供给程序开发人员统一的开发接口,数据库提供商提供相应的实现,对程序开发人员来讲只要知道这些接口都有哪些方法就可以了。但我们可以深入一些看看到底这里面都做了那些事,同时也可以学习其中的编程模式(如Interface模式等)。1、Class.forName(Stringclassname)的源码为:publicfinalclassClassimplementsjav

系统 2019-08-29 22:24:51 2247

Java

深入浅出基于Java的解释器设计模式

一、引子其实没有什么好的例子引入解释器模式,因为它描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发编译器中;在实际应用中,我们可能很少碰到去构造一个语言的文法的情况。虽然你几乎用不到这个模式,但是看一看还是能受到一定的启发的。二、定义与结构解释器模式的定义如下:定义语言的文法,并且建立一个解释器来解释该语言中的句子。它属于类的行为模式。这里的语言意思是使用规定格式和语法的代码。在GOF的书中指出:如果一种特定类型的问题发生的频率足够高,那

系统 2019-08-29 22:23:20 2247

Java

Rhythmk 一步一步学 JAVA(2) : 操作 MYSQL

1.下载如:mysql-connector-java-5.1.22.zip解压获取jar连接包。2.引入项目:右键项目名--->BuildPath—>ConfigureBuildPath...选择Libraries然后再选择右边第二个选项AddExternalJars导入mysql-.jar3.新建数据表:CREATETABLE`user`(`ID`int(11)NOTNULLAUTO_INCREMENT,`Name`varchar(32)NOTNULL,

系统 2019-08-12 01:52:12 2247

Java

Android手机打造你的Python&Java开发工具!

崩溃边缘…最近公司很多事情,最重要的是,很多时候问题压根不出在我身上,但还得我去定位解决,为什么大家都是写代码的,我就得给你们擦屁股呢!怒从心头起,搞得错别字都发出去了,哎…晚上加完班回来坐在电脑前发呆,不知道该写点什么。想起今天领导说的要拿java写一套解密算法后,通过python调用,突然想想有阵子没学java了…然后,你们以为我要弃坑写Java的内容,No…开发者桌面之前写过一篇文章:将Android手机打造成你的python开发者桌面在安卓手机上通

系统 2019-09-27 17:51:10 2246

Java

Java中的枚举(一)

在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的。例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集”。在Java中想表示这种数据集最容易想到的写法可能是这样,我们以表示一周五天的工作日来举例:Java代码publicclassWeekDay{publicstaticfinalintMONDAY=1;publicstaticfinalintTUESDAY=2;p

系统 2019-08-29 23:47:43 2246

Java

java解惑你知多少(六)

41.instanceof与转型Java代码System.out.println(nullinstanceofString);//falseSystem.out.println(newObject()instanceofString);//false//编译能通过System.out.println((Object)newDate()instanceofString);//false//!!程序不具有实际意义,但编译时不能通过//!!System.out.

系统 2019-08-29 22:02:47 2246

Java

Java Tomcat 中调用.net DLL的方法

近日一个java的项目,客户要求项目中必须使用其提供的加密机制,扔给了两个。net写的DLL.网络上搜了一圈也没找到啥东西,甚至看到人扬言此事绝无可能。郁闷当中考虑了一个思路。用C#做一个Com,调用客户提供的DLL实现加密解密的方法,然后提供给java使用。经过一番捣腾,最后证实可行。环境与工具:1、。netframework3.5C#2、javajdk1.5,Tomcat5.53、jacob-1.15-M3实现例子:一、C#制作Com组件新建一个Cla

系统 2019-08-12 01:33:32 2246

Java

selenium操作隐藏的元素(python+Java)

有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了。例如,下面的情况:Python页面主要通过“display:none”来控制整个下拉框不可见。这个时候如果直接操作这个下拉框,就会提示:fromseleniumimportwebdriverfromselenium.webdriver.support.selectimportSelectimportos,timedriver=webdriver.Chrome()file_p

系统 2019-09-27 17:52:49 2245

Java

java JNI 调用c或c++,windows 或 Linux系统

由于java程序需要调用C或C++的代码,不得不使用JNI。C的代码在Win32和Linux下都有相同功能的不同实现,就像JDK分几种平台版本(win32,linux,solaris等)。首先,看一看首先,看一看win32下调用dll文件。1,新建HelloWorld.java1publicclassHelloWorld2{3static4{5try6{7//此处即为本地方法所在链接库名8System.loadLibrary("HelloWorld");9

系统 2019-08-29 23:39:19 2245

Java

Java 代理

代理模式UML类图代理模式1.静态代理/***为被代理的类提供一个接口,是为了提高代理的通用性,凡是实现了该接口的类,都可以被代理*这里其实就是运用了java面向对象的多态性*/publicinterfaceIHello{publicvoidsayHello();}/***被代理的类,最根本的想法就是想用另外一个类来代理这个类,给这个类添加一些额外的东西*我们只需要创建另外一个类引用这个类就行了*/publicclassHelloimplementsIHe

系统 2019-08-29 22:57:10 2245

Java

使用JNI集成java与native程序

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

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

Java

eclipse项目(java project)如何导入jar包的解决

右键项目-properties-javabuildpath(左侧菜单)-选择libraries有两种方式,导入jar包实际上就是建立一种链接,并不是copy式的导入一、导入外部包,addexternaljars...,这种只是与jar包的绝对路径建立链接,并不会拷贝到项目中。二、导入包,addjars...,这种需要你事先把jar包拷贝到项目中,通过选择项目下的jar,与jar包的相对路径建立链接。两种方式下导入的包,jar包名称前面的图标会有区别。另外,

系统 2019-08-12 01:33:30 2245

Java

Java数据报(UDP)编程

一般说明在TCP/IP协议族中,UDP和TCP同样位于传输层,用户数据报是UDP协议中的概念.UDP协议提供面向事务的简单不可靠信息传送服务,它不提供对IP协议的可靠机制、流控制以及错误恢复功能.UDP协议基本上是IP协议与上层协议的接口,从整个用户数据在各层的包装看,UDP报文格式相当简单:1632bitSourceport源端口Destinationport目标端口Length报文长度(单位是字节,包括首部和用户数据区)Checksum(校验和)Dat

系统 2019-08-29 23:12:32 2244

Java

详解 JAVA 创建对象 NEW

假设我们在函数中写了如下这个简单的语句:StringBufferstr=newStringBuffer("Helloworld");别看这个语句简单,其实包含了如下三个步骤:首先,newStringBuffer("Helloworld")在堆里申请了一坨内存,把创建好的StringBuffer对象放进去。其次,StringBufferstr声明了一个指针。这个指针本身是存储在栈上的(因为语句写在函数中),可以用来指向某个StringBuffer类型的对象。

系统 2019-08-29 22:52:29 2244