![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
赶路
这个作者很懒,什么都没留下…
展开
-
Java序列化机制和原理【转】
序列化的必要性Java中,一切都是对象,在分布式环境中经常需要将Object从这一端网络或设备传递到另一端。这就需要有一种可以在两端传输数据的协议。Java序列化机制就是为了解决这个问题而产生。如何序列化一个对象一个对象能够序列化的前提是实现Serializable接口,Serializable接口没有方法,更像是个标记。有了这个标记的Class就能被序列化机制处理。impo...原创 2011-05-18 09:14:15 · 125 阅读 · 0 评论 -
螺旋数组的java实现
螺旋数组要求:存储和输出nXm的螺旋数组,其中n和m为大于0的整数。 以下是一些螺旋数组的示例: 1 2 3 4 1 2 3 4 5 12 13 14 5 14 15 16 17 6 11 16 15 6 ...原创 2010-11-10 15:26:11 · 206 阅读 · 0 评论 -
两个矩阵的乘积的java实现
题目:计算两个矩阵 A、B 的乘积矩阵 C。 矩阵 A={1,2,3,4,5,6};矩阵 B={7,8,9,10,11,12}。两个矩阵的乘积仍然是矩阵。若 A 矩阵有m行p列,B 矩阵有p行n列,则它们的乘积 C 矩阵有m 行n 列。 C=A*B 的算法: Cij= (i=0,1,……,m-1;j=0,1,……,n-1)设 A、B、C ...2010-11-10 16:23:15 · 442 阅读 · 0 评论 -
蛇形矩阵的java实现
题目:计算并输出 nXn 的蛇形矩阵。(n>0)例如 4X4 的蛇形矩阵如下:1 3 4 102 5 9 116 8 12 157 13 14 16 类似于前面的输出螺旋矩阵的方法,每一次在数组中填写新的数字都有一个方向,与输出螺旋数组不同的是不是简单的上下左右四个方向,这里涉及到右,下,右上,左下四个方向,针对每步操作都需要想好对应的处理方法,...2010-11-10 22:22:25 · 527 阅读 · 0 评论 -
Java 继承与组合的区别
根据网络上大家对继承和组合的讨论,我简单总结以下几点:1)组合(has-a)关系可以显式地获得被包含类(继承中称为父类)的对象,而继承(is-a)则是隐式地获得父类的对象,被包含类和父类对应,而组合外部类和子类对应。2)组合关系在运行期决定,而继承关系在编译期就已经决定了。3)组合是在组合类和被包含类之间的一种松耦合关系,而继承则是父类和子类之间的一种紧耦合关系。...2010-11-22 10:36:13 · 309 阅读 · 0 评论 -
连接池的基本工作原理及简单实现
连接池的基本工作原理1、基本概念及原理由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理。我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool)。该模式正是为了解决资源的频繁分配?释放所造成的问题。为解决上述问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连...原创 2010-11-24 21:25:22 · 117 阅读 · 0 评论 -
Java反射笔记(1)
感谢张龙老师的视频:http://www.verycd.com/topics/2838873/ 在Java运行时环境中,对于任意一个类,通过反射能够知道这个类有哪些属性和方法,并且构造这个类的实例,对于任意一个类,能调用任意一个方法。这种动态地获取类的信息以及动态调用对象方法的功能来自于JAVA语言的反射(Reflection)机制。反射机制主要提供了以下功能:1、...2010-12-01 10:54:47 · 121 阅读 · 0 评论 -
Java反射笔记(2)
java.lang.array提供了动态创建和当问数组元素的各种静态方法。public class ArrayTest2 {/* * 动态创建一个5X10X15的三维数组并且设置[3][5][10]位置的值 */ public static void main(String[] args) { //设置维数数组,即将数组的维数存到一个数组中 int[] dims...原创 2010-12-02 09:46:38 · 144 阅读 · 0 评论 -
java反射学习笔记
java反射作用:1、自省:通过对象自身获得类结构,继而获取并修改字段值,调用方法,构造实例。2、String->Object:通过类字符串构造类实例传统创建一个对象或者是调用对象的一个方法,需要在程序里将创建对象的语句,即new一个对象,都需要在程序里面写死,即在程序中硬编码。众所周知,硬编码是一种不好的编程方式,最好的方法是在程序中通过配置信息(Strin...2010-12-05 10:21:40 · 102 阅读 · 0 评论 -
JAVA反射机制的简单应用(1)
JAVA反射机制的简单应用(1)Spring中的IOC(控制翻转,又叫依赖注入)先来看一个例子,A对象关联B对象,学过UML的都知道这是指A类中有一个B类的成员变量,那么我们在创建A对象时,可以用构造函数或者set方法将B类对象与A类对象关联在一起,这种A与B之间的关系需要我们在代码中表现出来,我们也可以把这些代码叫做硬编码。那么依赖注入所要解决的问题便是将这两个对...2010-12-06 13:15:58 · 85 阅读 · 0 评论 -
统计一个整数中出现次数最多最大的数字
要求: 统计一个整数中出现最多的数字。如果数字个数一样,则以最大的数字为准,例如 1 输出 1,121 输出 1,23231 输出 3。 针对这个问题,处理步骤可以分为2步:第一步:首先抽离整数中的每个数字,并且放到该数字对应的桶数组中,桶数组是一个长度为10的数组,其中数组的每个索引都表示整数中可能出现的数字,数组索引0到9刚好表示0到9这10个数字。至于抽离数字可以先将...2010-11-10 09:31:15 · 516 阅读 · 0 评论 -
“百元买百鸡问题”之一重循环实现
问题描述:每只母鸡 3 元,每只公鸡 4 元,每只小鸡 0.5 元,如果花100 元钱买 100 只鸡,请问有哪些可能?说明:每种鸡的数量都可以为零。 今天在java编程那些事上看到了这个问题,网上已经有很多版本的答案了,三重循环实现的,二重循环实现的,一重循环实现的,今天我尝试用1重循环实现了,大家看看我的方法,欢迎拍砖。由题意 假设母鸡买m只,公鸡买g只,小鸡买x只,那么0&l...2010-11-09 10:06:27 · 1941 阅读 · 0 评论 -
[转]欧几里得算法(辗转相除法)求最大公约数
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r 因此d是(b,a mod b)的公约数 ...原创 2010-11-08 22:52:49 · 433 阅读 · 0 评论 -
正确使用 Volatile 变量
简介:Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的 Java 理论与实践 中,Brian Goetz 将介绍几种正确使用 volatile 变量的模式,并针对其适用性限制提出一些...原创 2010-10-30 10:44:34 · 79 阅读 · 0 评论 -
对java中equals和hashCode函数的一些理解1(转)
JDK的java.lang.Object类中实现了equals函数,其定义说明如下: 其具体的实现代码如下所示: Java代码public boolean equals(Object obj) { return (this == obj); } 从上面的代码中可以看出,Object类的equals实现只是简单地调用了“==”运...原创 2010-10-31 11:15:36 · 96 阅读 · 0 评论 -
对java中equals和hashCode函数的一些理解2(转)
一致性 即如果两个对象相等的话,那么它们必须始终保持相等,除非至少有一个对象被修改了。 在Object类equals函数的说明中的最后一段提到当我们改写equals函数的时候,通常都需要改写hashCode函数,后者同样在Object类中进行了定义,hashCode()函数返回一个对象的散列值(hash code),在java中有些集合类都是基于散列值的,如HashMap、HashSet、Hash...原创 2010-10-31 11:24:40 · 101 阅读 · 0 评论 -
深入Java关键字null
深入Java关键字null 一、null是代表不确定的对象 Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。 比如:int a = null;是错误的。Ojbect o = null是正确的。 Java中,变量的适用都遵循一个原则,先定义,并且初始化后,才可以使用。我们不能in...原创 2010-10-31 14:20:56 · 64 阅读 · 0 评论 -
java 死锁及解决
Java线程死锁如何避免这一悲剧 Java线程死锁需要如何解决,这个问题一直在我们不断的使用中需要只有不断的关键。不幸的是,使用上锁会带来其他问题。让我们来看一些常见问题以及相应的解决方法: Java线程死锁 Java线程死锁是一个经典的多线程问题,因为不同的线程都在等待那些根本不可能被释放的锁,从而导致所有的工作都无法完成。假设有两个线程,分别代表两个饥饿的人,他们必须共享刀叉...原创 2010-10-31 21:28:54 · 94 阅读 · 0 评论 -
java解惑之无穷大和NaN
1、i == i + 1一个数字永远不会等于它自己加1?Java 强制要求使用IEEE 754 浮点数算术运算[IEEE 754],它可以让你用一个double 或float来表示无穷大。正如我们在学校里面学到的,无穷大加1还是无穷大。你可以用任何被计算为无穷大的浮点算术表达式来初始化i,例如:double i = 1.0 / 0.0;不过,你最好是能够利用标准类库为你提供的常...原创 2010-11-01 10:12:32 · 233 阅读 · 0 评论 -
笔试题之以单词为最小单位翻转字符串
最近做了几个公司的笔试题,都考到了以单词为最小单位翻转字符串,这里自己总结一下: Write the function void reverseStringWordByWord(char[] input) that reverses a string word by word. For instance, reverseStringWordByWord("this is my ...2010-11-06 15:39:38 · 160 阅读 · 0 评论 -
[转]java中char,byte,short的移位操作
在Think in Java中有这么一段话“对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会有用。这样可防止我们在一个int数里移动不切实际的位数。若对一个long值进行处理,最后得到的结果也是long。此时只会用到右侧的6个低位,防止移动超过long值里现成的位数。” 对上面那段话的理解是:移位...原创 2010-11-07 22:38:11 · 187 阅读 · 0 评论 -
JAVA反射机制的应用(2)
JAVA反射机制的应用(2)Spring中的AOP(面向切面的编程)在MVC中,业务层对象扮演了相当重要的作用,它的方法代表了核心业务逻辑,但是可能还有一些附加的操作,比如写日志等其它操作也会包含在其中,那么可能会带来几个问题:冗余代码的出现破坏了面向对象的思想。各个方法应该各司其职,只做它应该做的那一部分工作,而这里这些辅助操作的引入会破坏这个特性。...2010-12-07 16:28:10 · 89 阅读 · 0 评论