
Java
文章平均质量分 90
星空dream
找准自己的定位
展开
-
Queue:poll、offer、element、peek的区别
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。在java5中新增...转载 2020-02-20 16:34:46 · 6213 阅读 · 0 评论 -
HttpClient使用详解
1. 什么是httpclient HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakar原创 2017-06-04 13:51:19 · 566 阅读 · 0 评论 -
谈谈Java开发中的对象拷贝
在Java开发工作中,有很多时候我们需要将不同的两个对象实例进行属性复制,从而基于源对象的属性信息进行后续操作,而不改变源对象的属性信息。这两个对象实例有可能是同一个类的两个实例,也可能是不同类的两个实例,但是他们的属相名称相同。例如DO、DTO、VO、DAO等,这些实体的意义请查看DDD中分层架构。本文主要介绍几种对象拷贝的方法1. 对象拷贝对象拷贝分为深拷贝和浅拷贝。根据使用场转载 2017-09-30 15:24:58 · 570 阅读 · 0 评论 -
java设计模式之代理模式
代理模式:为其他对象提供一个代理对象,并由代理对象控制对原对象的访问。 直接上经典代码//代理模式//定义一种类型的女人,这类女人都有这种特性,所以用接口interface KindWomen{ public abstract void makeEyesWithMan(); public abstract void happyWithMan();}//潘金莲class Pan转载 2016-09-14 12:33:14 · 355 阅读 · 0 评论 -
Java常见异常总结
1、java.lang.NullPointerException(空指针异常) 调用了未经初始化的对象或者是不存在的对象经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针, 即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化, 依然是空的,所转载 2018-01-15 22:10:34 · 294 阅读 · 0 评论 -
EL表达式的11个内置对象
EL是JSP内置的表达式语言JSP2.0开始,不让再使用Java脚本,而是使用EL表达式和动态标签来代替Java脚本EL替代的是,也就是说EL只能做输出EL可以输出的东西都在11个内置对象中,11个内置对象,其中10个是Map,只有pageContext不是Map,它就是PageContext类型,EL所有内置对象如下:pageScope:获取pageContext域属性,原创 2017-01-31 19:48:35 · 18638 阅读 · 1 评论 -
代码块概述
代码块:在Java中,使用{}括起来的代码被称为代码块。根据其位置和声明的不同,可以分为:局部代码块:局部位置,用于限定变量的生命周期。构造代码块:在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。作用:可以把多个构造方法中的共同代码放到一起,对对象进行初始化。静态代码块:在类中的成员位置,用{}括起来的代码,只不过它用static修饰了。原创 2016-06-22 13:32:35 · 347 阅读 · 0 评论 -
Java虚拟机类加载机制经典案例
package io.lgxkdream.test;class Father { static Father f = new Father(); static { System.out.println("father-1"); } { System.out.println("father-2"); } Father() { System.out.println("原创 2018-02-04 22:09:40 · 236 阅读 · 0 评论 -
java设计模式之建造者模式
建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创造不同的表示。 建造者模式将一个产品的内部表象和产品的生成过程分割开来,建造对象的时候只需要指定需要建造的类型,而不必了解具体的建造过程。案例 一个玩具工厂,工人们建造新的玩具人时,需要逐个安装各个部分,种类有胖虎和小夫。万一粗心大意忘记装了某个部分,就出现了不合格的玩具,缺胳膊少腿。 ...转载 2018-02-22 15:58:02 · 248 阅读 · 0 评论 -
Java中的锁
在学习或者使用Java的过程中进程会遇到各种各样的锁的概念:公平锁、非公平锁、自旋锁、可重入锁、偏向锁、轻量级锁、重量级锁、读写锁、互斥锁等待。这里整理了Java中的各种锁,若有不足之处希望大家在下方留言探讨。公平锁和非公平锁公平锁是指多个线程在等待同一个锁时,必须按照申请锁的先后顺序来依次获得锁。公平锁的好处是等待锁的线程不会饿死,但是整体效率相对低一些;非公平锁的好处是整体效率相对高一些,但是...转载 2018-03-02 16:11:38 · 187 阅读 · 0 评论 -
基于注解的字段脱敏处理
package io.lgxkdream.test2;import org.apache.commons.lang3.StringUtils;/** * @title: MaskUtils * @description: 掩码工具类 * @Copyright: Copyright (c) 2018 * @Company: lgxkdream.github.io * @author...原创 2018-03-19 11:26:18 · 6526 阅读 · 3 评论 -
线程池的各种使用场景
(1)高并发、任务执行时间短的业务,线程池线程数可以设置为CPU核数+1,减少线程上下文的切换(2)并发不高、任务执行时间长的业务要区分开看: a)假如是业务时间长集中在IO操作上,也就是IO密集型的任务,因为IO操作并不占用CPU,所以不要让所有的CPU闲下来,可以加大线程池中的线程数目,让CPU处理更多的业务 b)假如是业务时间长集中在计算操作上,也就是计算密集型...原创 2018-04-04 18:17:31 · 30337 阅读 · 6 评论 -
Java线程面试题 Top 50
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式...转载 2018-06-01 11:24:25 · 487 阅读 · 0 评论 -
深入理解Semaphore
使用Semaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;每个release方法增加一个许可证,这可能会释放一个阻塞的acquire方法。然而,其实并没有实际的许可证这个对象,Semaphore只是维持了一个可获得许可证的数量。 Semaphore经常用于限制获取某种资源的线程数量。下面举个例子,比如说操场上有5...转载 2018-07-02 20:05:42 · 244 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统 下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置: java -Xmx3550m -Xms3550m ...转载 2019-01-22 16:13:50 · 227 阅读 · 0 评论 -
五种线程池的对比与使用
今天对五种常见的java内置线程池进行讲解。线程使用的demopublic static void cache() { ExecutorService pool = Executors.newCachedThreadPool(); long start = System.currentTimeMillis(); pool.execute((...转载 2019-02-22 17:47:58 · 1060 阅读 · 0 评论 -
重定向和请求转发的区别
一次重定向的过程我的代码里面已经写好了,redirectAndFoward.jsp页面上有一个表单,表单重定向到redirectAndFowardTarget.jsp,那么这一次的重定向过程为:1、以指定方式(表单看method,直接URL发起就是GET)发一次请求到后台,后台处理重定向,返回一个302的HTTP状态码给客户端,并在response里面带一个Location用于标识重定向的原创 2016-12-10 00:07:14 · 379 阅读 · 0 评论 -
Spring MVC 中 HandlerInterceptorAdapter的使用
一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的,这种方式可以实现Bean预处理、后处理。Spring MVC的拦截器不仅可实现Filter的所有功能,还可以更精确的控制拦截精度。spring为我们提供了org.springframework.web.servlet.handler.HandlerInterceptorAdapter这个适配器,继承此类,可以非常方便的实现自己的...转载 2017-03-27 10:32:53 · 642 阅读 · 0 评论 -
xml的约束
为什么需要约束? 比如现在定义一个person的xml文件,只想要这个文件里面保存人的信息,比如name age等,但是如果在xml文件中写了一个标签,发现可以正常显示,因为符合语法规范。但是猫肯定不是人的信息,xml的标签是自定义的,需要技术来规定xml中只能出现的元素,这个时候需要约束。 xml的约束的技术 : dtd约束和 schema约束 dtd原创 2017-02-11 09:12:09 · 422 阅读 · 0 评论 -
java设计模式之装饰模式
装饰模式:又名包装(Wrapper)模式,装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式可以在不创造更多的子类的模式下,将对象的功能加以扩展。经典代码://装饰模式interface Phone { public abstract void call();}class Iphone implements Phone { public void c原创 2016-09-14 12:45:21 · 289 阅读 · 0 评论 -
Collection集合总结
Collection |--List 有序,可重复 |--ArrayList 底层数据结构是数组,查询快,增删慢。 线程不安全,效率高 |--Vector 底层数据结构原创 2016-08-13 08:10:32 · 314 阅读 · 0 评论 -
Hibernate与 MyBatis的比较
第一章 Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/R mapping框架。目前属于apache的一个子项目。MyBatis 参考资料官网:http://www.mybatis.org/core/zh/index.html Hibernate参转载 2016-09-18 12:21:42 · 315 阅读 · 0 评论 -
java设计模式之模板模式
模板模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。比如定义一个操作中的算法的骨架,将步骤延迟到子类中。模板方法使得子类能够不去改变一个算法的结构即可重定义算法的某些特定步骤。模式中的角色抽象类(A原创 2016-11-06 23:35:53 · 287 阅读 · 0 评论 -
Java 代码性能优化
代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可转载 2016-11-08 11:06:21 · 321 阅读 · 0 评论 -
JAVA基础编程代码50个
【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... public class Prog1{ public static void main(String[] args){原创 2016-11-08 11:20:59 · 111033 阅读 · 14 评论 -
20个常用的正则表达式
正则表达式——古老而又强大的文本处理工具。仅用一段简短的表达式语句,就能快速地实现一个复杂的业务逻辑。掌握正则表达式,让你的开发效率有一个质的飞跃。正则表达式经常被用于字段或任意字符串的校验,比如下面这段校验基本日期格式的JavaScript代码: var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/;转载 2016-11-08 11:11:12 · 275 阅读 · 0 评论 -
Spring注解@Component、@Repository、@Service、@Controller区别
spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、@Service 和 @Controller。在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。虽然目前这 3 个注释和 @Componen原创 2016-12-09 11:49:07 · 696 阅读 · 0 评论 -
hibernate映射关系的配置
XML文件个人书写规范 格式:?属性,本类与?的? ?1 属性名 ?2 关联对类型 ?3 关系配置模板多对一:一对多(Set):多对多(Set):经典案例 映射关系 配置详情原创 2016-12-11 13:20:41 · 448 阅读 · 0 评论 -
java设计模式之单例模式
单例模式:保证类在内存中只有一个对象。 分为: 饿汉式:类一加载就创建对象 懒汉式:用的时候,才去创建对象如何保证类在内存中只有一个对象呢? A:把构造方法私有 B:在成员位置自己创建一个对象原创 2016-07-17 13:58:56 · 354 阅读 · 0 评论 -
JQuery中的一些重要方法
选择上一级元素 parent(expr)选择所有上级元素(前辈) parents(expr)选择下一级元素 children(expr)选择所有后代元素 find(expr)选择同级元素(兄弟) siblings(expr)选择兄元素(前一个)原创 2016-12-18 15:09:28 · 550 阅读 · 0 评论 -
HTTP状态码详解
原创 2017-01-15 14:46:30 · 387 阅读 · 0 评论 -
Java线程面试题 Top 53
1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。2) 线程和进程有什么区别?线程是进程的子集,一个进程可以有很多转载 2017-01-01 18:41:45 · 304 阅读 · 0 评论 -
HTTP协议
HTTP概述HTTP(hypertext transport protocol),即超文本传输协议。这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。HTTP就是一个通信规则,通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。其实我们要学习的就是这个两个格式!客户端发送给服务器的格式叫“请求协议”;服务器发送给客户端的格式叫“响应协议”。 请原创 2017-02-11 13:25:14 · 279 阅读 · 0 评论 -
字符编码
字符编码概述1 字符编码是什么? 我们知道,计算机数据只能是二进制的,数值类型的数据转换成二进制很简单,我们已经了解了,但字符类型如何转换成二进制呢?这就需要使用字符编码! 在编码表中,每个字符都有对应的编码,编码是整数,最终在计算机中存储的是字符的编码,而不是字符本身(因为计算机数据都是二进制数值,所以字符本身是无法存储的)。 当我们存储字符原创 2017-02-12 10:04:13 · 370 阅读 · 0 评论 -
会话跟踪技术之Cookie
1 Cookie概述1.1 什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思。在HTTP中它表示服务器送给客户端浏览器的小甜点。其实Cookie就是一个键和一个值构成的,随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来,当下一次再访问服务器时把Cookie再发送给服务器。 Cookie是由服务器创建,然后原创 2017-02-14 17:28:25 · 369 阅读 · 0 评论 -
会话跟踪技术之HttpSession
1 HttpSession概述1.1 什么是HttpSesssion javax.servlet.http.HttpSession接口表示一个会话,我们可以把一个会话内需要共享的数据保存到HttSession对象中! 1.2 获取HttpSession对象 HttpSession request.getSesssion():如果当前会话已经原创 2017-02-14 17:53:49 · 613 阅读 · 0 评论 -
final,finally和finalize的区别
final:最终的意思,可以修饰类,成员变量,成员方法 修饰类,类不能被继承 修饰变量,变量是常量 修饰方法,方法不能被重写 finally:是异常处理的一部分,用于释放资源。 一般来说,代码肯定会执行,特殊情况:在执行到finally之前jvm退出了 finalize:是Object类的一原创 2016-07-12 11:39:56 · 345 阅读 · 0 评论