
Java——基础
庄生了梦
凡是让你痛苦的,都是让你成长的。
展开
-
平衡二叉树
平衡二叉树定义(AVL树)平衡二叉查找树:简称平衡二叉树。由前苏联的数学家Adelse-Velskil和Landis在1962年提出的高度平衡的二叉树,根据科学家的英文名也称为AVL树。它具有如下几个性质:可以是空树。假如不是空树,任何一个结点的左子树与右子树都是平衡二叉树,并且高度之差的绝对值不超过1平衡之意,如天平,即两边的分量大约相同。如定义,假如一棵树的左右子树的高度之差超过1...转载 2019-06-29 17:55:22 · 610 阅读 · 0 评论 -
java中equals,hashcode和==的区别
1、==Java中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。 2.引用类型(类、接口、数组) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对转载 2017-04-17 11:16:55 · 474 阅读 · 0 评论 -
登陆页面实现保存帐号密码功能
通过Cookie实现"记住我"的功能1.登陆页面如下:每个字段对应的属性name如下表:用户帐号name登陆密码password验证码checkNum记住我rememberMe2.Action中的处理如下:在用户第一次登陆后,进行Cookie进行处理转载 2017-04-17 11:13:44 · 1120 阅读 · 0 评论 -
Java中的String类常量池详解
从一个博客上看到的6个题,先看看吧,如果都会了,这部分的知识就掌握的不错啦!输出结果在代码注释后面:test1:package StringTest;public class test1 { /** * @param args */ public static void main(String[] args){ String a = "转载 2017-03-13 16:46:20 · 211 阅读 · 0 评论 -
对用户密码进行加盐处理
按:以下还是炒冷饭,如果您对加盐了解就不用往下看了,以免浪费宝贵时间。如果不了解下文部分细节的话,您可以参考这篇文章:使用MD5对存放在数据库中用户密码进行保护直接对重要数据进行MD5处理后,反向解密确实难度很大,但还是可以找出破绽的,请看下图:如果名为李自成的用户可以查看数据库,那么他可以观察到自己的密码和别人的密码加密后的结果都是一样,那么,别人用的和自己就是同一个转载 2017-03-22 18:56:03 · 582 阅读 · 0 评论 -
Java动态代理(JDK和cglib)
JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为转载 2017-03-13 10:20:00 · 181 阅读 · 0 评论 -
java 反射机制的基本知识
一下均是来自己看自李兴华老师的视频笔记,他讲的视频挺好的,自己写的估计只能自己看的懂,想更加清楚的了解,请观看他的视频。前天看那个java学习路线的一张图上看了看,里面有一节内容讲的是反射,我就搜集资料视频学了学。我们平常访问普通的方法都是在哪里进行使用new进行创建对象,再利用创建的对象进行访问这个方法。那么我们如何在不使用new关键字的情况下进行访问这些对象转载 2017-03-12 23:31:16 · 291 阅读 · 0 评论 -
==、=== 与equals和null
【一】==与===var num = 1;var str = '1';var test = 1;test == num //true 相同类型 相同值test === num //true 相同类型 相同值test !== num //false test与num类型相同,其值也相同, 非运算肯定是falsenum == str //true 把st原创 2017-03-28 20:21:16 · 254 阅读 · 0 评论 -
int不是默认为0吗?为什么会提示要初始化?
准确地来说,应该是类字段变量是这样,而在方法中的变量需明确初始化,即给它赋值,否则会报错。只要不是类字段和数组,其它变量一律要赋值。 public class IODemo { static int i; public static void main(String[] args) { System.out.println("i = " + i);原创 2017-03-10 17:28:40 · 10126 阅读 · 1 评论 -
数据库分区分表以及读写分离
数据库结构的优化有多种方法,主要的有两种: 一是利用存储过程来代替常用的SQL查询语句,减少sql语句解析编译的过程。 另一种是使用数据库管理系统中的分区表方法进。使用存储过程的优化方法有执行速度快的优点,但是其本身不利于调试、没有办法使用数据库缓存机制等缺点,所以在系统安全性和性能要求更高的情况下,建议使用分区表的方法。但要注意:并不是只要数据量够多就需要通过数据库分转载 2017-03-06 22:39:42 · 355 阅读 · 0 评论 -
内存溢出(Memory Overflow)和内存泄露(Memory Leak)的区别
内存泄漏指你用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态内存溢出指你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,就是溢出要点内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解决,但也有可能再次发生内存泄露,内存泄露和硬件转载 2017-03-09 14:28:57 · 1003 阅读 · 0 评论 -
Integer与int的种种比较你知道多少?
如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱。所以我对它们进行了总结,希望对大家有帮助。 首先看代转载 2017-03-09 10:59:55 · 233 阅读 · 0 评论 -
@Responsebody与@RequestBody、@RequestMapping、@PathVariable
预备知识:@RequestMapping RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。 @RequestMapping(value = "/aaa")//类级别,可以没有 public class myController { @RequestMapping(value原创 2017-04-17 11:21:55 · 270 阅读 · 0 评论 -
java 判断字符串中是否包含汉字
public static boolean isHaveWorld(String str){ return str.length() == str.getBytes().length ? false : true; }转载 2017-05-27 16:16:42 · 1008 阅读 · 0 评论 -
到底什么是hash呢?hash碰撞?为什么HashMap的初始容量是16?
原文:https://blog.youkuaiyun.com/qq_35583089/article/details/80048285一 ,到底什么是hash呢?hash(散列、杂凑)函数,是将任意长度的数据映射到有限长度的域上。直观解释起来,就是对一串数据m进行杂糅,输出另一段固定长度的数据h,作为这段数据的特征(指纹)。也就是说,无论数据块m有多大,其输出值h为固定长度。到底是什么原理?将m分成固定...转载 2019-03-13 11:33:05 · 358 阅读 · 0 评论 -
Java常量池详解,秒懂各种对象相等操作
为什么要有常量池?常量池是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。例如字符串常量池,在编译阶段就把所有的字符串文字放到一个常量池中。(1)节省内存空间:常量池中所有相同的字符串常量被合并,只占用一个空间。(2)节省运行时间:比较字符串时,== 比equals()快。对于两个引用变量,只用==判断引用是否相等,也就可以判断实际值是否相等。基本数据类型的包装类和常量池...原创 2019-02-14 14:23:48 · 424 阅读 · 0 评论 -
面试题1
面试题: hashMap是怎样实现key-value这样键值对的保存?HashMap中有一个内部类Entry,static class Entry<k,v> implements Map.Entry<k,v> { final K key; V value; Entry<k,v&amp原创 2019-02-14 14:24:42 · 115 阅读 · 0 评论 -
如何正确地处理时间
日期和时间在程序中应用广泛,每种程序开发语言都自带处理日期和时间的相关函数,很多开发者把日期和时间存入数据库中,但是,一旦涉及到跨时区的日期和时间的处理时,大多数开发者根本就不明白如何正确地处理日期和时间。首先,我们来看大部分的程序都是这么创建当前时间并存入数据库的:Date date = new Date();store2db(date);这么做的问题在于,数据库的DateTime类型...原创 2019-02-14 14:24:55 · 268 阅读 · 1 评论 -
基本数据类型数组转换列表显的有些力不从心
基本数据类型数组转换列表是有缺陷的:开发过程中经常会使用Arrays 和 Collections这两个工具类在数组和列表之间转换,非常方便,但是有时候也会出现一些奇怪的问题。运行后的结果为 “1”;仔细看了一下Arrays.asList的方法说明:输入一个变长参数,返回一个固定长度的列表。注意这里是一个变长参数,看源代码:asList方法输入的是一个泛型变长参数,我们都知道基本类型是不能泛型...转载 2019-02-15 13:53:06 · 145 阅读 · 0 评论 -
这道关于String的面试题据说80%的人会答错!
很多人都会答错的一道关于String的题目,究竟有什么难度?今天轻松点,我们一起来看一道关于String的面试题,准确说是改编的面试题!小白: 庆哥,今天我们要学习什么知识啊?庆哥: 今天我们就轻松一下,简单来看一道关于String的题目,毕竟等会我还要看沙海呢。小白: 哈哈,没想到庆哥还追剧啊。庆哥: 劳逸结合嘛,大脑总是需要休息的啊,看看电视剧休息一下还蛮好的,好了咱就不废话了,你知...转载 2019-02-14 17:52:40 · 151 阅读 · 0 评论 -
tomcat中设置多项目共享jar;类包
随着服务器上的tomcat部署的项目越来越多,最近在部署一个新的项目的时候出现内存溢出的错误Exception in thread "main" java.lang.OutOfMemoryError: PermGen space at java.lang.StackTraceElement.equals(StackTraceElement.java:204) ...转载 2019-01-14 14:58:29 · 327 阅读 · 0 评论 -
浅谈Java中的深拷贝和浅拷贝(转载)
浅谈Java中的深拷贝和浅拷贝(转载)原文链接:http://blog.youkuaiyun.com/tounaobun/article/details/8491392假如说你想复制一个简单变量。很简单: int apples = 5;int pears = apples;不仅仅是int类型,其它七种原始数据类型(boolean,char,byt...转载 2019-01-10 16:08:52 · 166 阅读 · 0 评论 -
POST / GET
public String sendGet(String url, String param) { String result = ""; BufferedReader in = null; try { String urlNameString = url + "?" + param; URL ...原创 2019-02-14 14:25:28 · 203 阅读 · 0 评论 -
如何重写hashCode()和equals()方法
转载:http://blog.youkuaiyun.com/neosmith/article/details/17068365hashCode()和equals()方法可以说是Java完全面向对象的一大特色.它为我们的编程提供便利的同时也带来了很多危险.这篇文章我们就讨论一下如何正解理解和使用这2个方法.如何重写equals()方法如果你决定要重写equals()方法,那么你一定要明确这么做所带来的风险,并确...转载 2018-02-24 16:03:38 · 6126 阅读 · 3 评论 -
HttpClient Post、get 请求方式
以下代码全部功能完善,并且亲测,线上正在使用,大家可以放心使用,如果有什么问题,可以给我留言。package com.xhrd.dev.util.httpclient;import Java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io转载 2017-03-09 10:45:01 · 203 阅读 · 0 评论 -
Java中try catch finally语句中含有return语句的执行情况(总结版)
在这里看到了try catch finally块中含有return语句时程序执行的几种情况,但其实总结的并不全,而且分析的比较含糊。但有一点是可以肯定的,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因。下面来看这几种情况。情况一(t转载 2017-03-09 09:51:30 · 204 阅读 · 0 评论 -
hashCode
在前面三篇博文中LZ讲解了(HashMap、HashSet、HashTable),在其中LZ不断地讲解他们的put和get方法,在这两个方法中计算key的hashCode应该是最重要也是最精华的部分,所以下面LZ揭开hashCode的“神秘”面纱。 hashCode的作用 要想了解一个方法的内在原理,我们首先需要明白它是干什么的,也就是这个方法的作用。在讲解数组转载 2017-02-07 17:18:50 · 304 阅读 · 0 评论 -
理解java的三大特性之继承
在《Think in Java》中有这样一句话:复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情。在这句话中最引人注目的是“复用代码”,尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大特性之一---继承。 继承 在讲解之前转载 2017-02-07 17:17:16 · 156 阅读 · 0 评论 -
理解java的三大特性之多态
面向对象编程有三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什么是多态呢?多态的实现机制又是什么?请看我一一为你揭开:转载 2017-02-07 17:16:10 · 167 阅读 · 0 评论 -
理解java的三大特性之封装
从大二接触Java开始,到现在也差不多三个年头了。从最基础的HTML、CSS到最后的SSH自己都是一步一个脚印走出来的,其中开心过、失落过、寂寞过。虽然是半道出家但是经过自己的努力也算是完成了“学业”。期间参加过培训机构,但是极其不喜欢那种培训方式,于是毅然的放弃了选择自学(可怜我出了6000块钱啊),虽然自学途中苦很多,但是乐更多,当中的付出和收获只有自己知道。黄天不负有心人,鄙人愚钝,在大四第转载 2017-02-07 17:15:08 · 210 阅读 · 0 评论 -
抽象类与接口
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。 抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。 一、抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类转载 2017-02-07 17:14:26 · 136 阅读 · 0 评论 -
使用序列化实现对象的拷贝
我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,使得性能的提升非常明显。然而我们知道拷贝分为深拷贝和浅拷贝之分,但是浅拷贝存在对象属性拷贝不彻底问题。关于深拷贝、浅拷贝的请参考这里:渐析java的浅拷贝和深拷贝 一、浅拷贝问题转载 2017-02-07 17:13:29 · 166 阅读 · 0 评论 -
关键字static
一、 static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块。 Java把内存分为栈内存和堆内存,其中栈内存用来存放一些基本类型的变量、数组和对象的引用,堆内存主要存放一些对象。在JVM加载一个转载 2017-02-07 17:12:39 · 152 阅读 · 0 评论 -
实现多重继承
多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承。有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需要思考的不是怎么使用多重继承,而是您的设计是否存在问题.但有时候我们确实是需要实现多重继承,而且现实生活中也真正地存在这样的情况,比如遗传:我们即继承了父亲的行为和特征也继承了母亲的行为和特征。可幸的转载 2017-02-07 17:11:53 · 322 阅读 · 0 评论 -
强制类型转换
在Java中强制类型转换分为基本数据类型和引用数据类型两种,这里我们讨论的后者,也就是引用数据类型的强制类型转换。 在Java中由于继承和向上转型,子类可以非常自然地转换成父类,但是父类转换成子类则需要强制转换。因为子类拥有比父类更多的属性、更强的功能,所以父类转换为子类需要强制。那么,是不是只要是父类转换为子类就会成功呢?其实不然,他们之间的强制类型转换是有条件的。转载 2017-02-07 17:11:22 · 220 阅读 · 0 评论 -
equals()
equals() 超类Object中有这个equals()方法,该方法主要用于比较两个对象是否相等。该方法的源码如下:[java] view plain copy public boolean equals(Object obj) { return (this == obj); }转载 2017-02-07 17:10:38 · 226 阅读 · 0 评论 -
字符串
可以证明,字符串操作是计算机程序设计中最常见的行为。 一、String 首先我们要明确,String并不是基本数据类型,而是一个对象,并且是不可变的对象。查看源码就会发现String类为final型的(当然也不可被继承),而且通过查看JDK文档会发现几乎每一个修改String对象的操作,实际上都是创建了一个全新的String对象。转载 2017-02-07 17:10:13 · 181 阅读 · 0 评论 -
数组
性能?请优先考虑数组 在Java中有很多方式来存储一系列数据,而且在操作上面比数组方便的多?但为什么我们还需要使用数组,而不是替代它呢?数组与其他种类的容器之间的区别有三个方面:效率、类型和保存基本类型的能力。在java中,数组是一种效率最高的存储和随机访问对象引用序列的方式。 在项目设计中数组使用的越来越少了,而且它确实是没有List、Set这些集合使用方转载 2017-02-07 17:19:58 · 222 阅读 · 0 评论 -
异常(一)
Java的基本理念是“结构不佳的代码不能运行”!!!!! 大成若缺,其用不弊。 大盈若冲,其用不穷。 在这个世界不可能存在完美的东西,不管完美的思维有多么缜密,细心,我们都不可能考虑所有的因素,这就是所谓的智者千虑必有一失。同样的道理,计算机的世界也是不完美的,异常情况随时都会发生,我们所需要做的就是避免那些能够避免的异常,处理那些不转载 2017-02-07 17:21:16 · 262 阅读 · 0 评论 -
Java:按值传递还是按引用传递详细解说
前天在做系统的时候被Java中参数传递问题卡了一下,回头查阅了相关的资料,对参数传递问题有了新的了解和掌握,但是有个问题感觉还是很模糊,就是Java中到底是否只存在值传递,因为在查阅资料时,经常看到有人说Java只有值传递,但有人说既有值传递,也有引用传递,对于两个观点个人觉得应该是站的角度不同而得出两个不同的说法,其实两个说法其中的原理是一样的,只要咱们懂得其中的原理,那么至于叫什么也就无所谓了转载 2017-03-09 09:38:17 · 160 阅读 · 0 评论