java
文章平均质量分 70
tjk922215
职业信息是对与职业有关的所有信息的统称,完整的职业信息包括职业资源信息、职业新闻信息、职业政策信息、职业测评信息等。
展开
-
LeetCode算法题目:Maximum Depth of Binary Tree
题目: Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.分析: 求二叉树的最大深度问题用到深度优先搜索DFS,递归的原创 2017-05-02 13:24:57 · 225 阅读 · 0 评论 -
第6条:消除过期的对象引用
当你从手工管理内存的语言(比如C或C++)转换到具有垃圾回收功能的语言的时候,程序员的工作会变得更加容易,因为当你用完了对象之后,它们会被自动回收。当你第一次经历对象回收功能的时候,会觉得这简直有点不可思议。这很容易给你留下这样的印象,认为自己不再需要考虑内存管理的事情了。其实不然。 考虑下面这个简单的栈实现的例子:public class Stack{ private Object原创 2017-12-18 20:34:12 · 263 阅读 · 0 评论 -
第5条:避免创建不必要的对象
一般来说,最好是重用对象而不是在每次需要的时候就创建一个相同功能的新对象。重用方式既更加快速,也更为流行。如果对象是不可变的(immutable)(见第15条),它就始终可以被重用。 作为一个极端的反面例子,考虑下面的语句:String s = new String("hello world"); // DON'T DO THIS! 该语句每次被执行的时候都创建一个新的String实例,原创 2017-12-18 20:25:12 · 277 阅读 · 0 评论 -
第4条:通过私有构造器来强化不可实例化能力
场景: 在创建工具类的时候,大部分是无需实例化的,实例化对它们没有意义。在这种情况下,创建的类,要确保它是不可以实例化的。存在问题: 在创建不可实例化的类时,虽然没有定义构造器。但是,客户端在使用该类的时候,依然可以实例化它。客户端,可以继承该类,通过实例化其子类来实现实例化;客户端可以调用默认的构造器来实例化该类。 要避免这个问题,使用的方式是,定义一个私有的构造器:p原创 2017-12-18 20:15:57 · 261 阅读 · 0 评论 -
java.util.Collection包下各个类的特点汇总
java.util.Collection包下各类和接口的特点如下图(包含实现方式,特点,父子关系)文字版是这样的:java.util.Collection接口 Set接口 特点:没有重复元素,可以有null(最多一个),没有顺序 HashSet 实现:基于HashMap 特点:没有顺序,用equals()和hashCode()协同判断元素是否存在 L原创 2017-12-14 19:47:12 · 534 阅读 · 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原创 2017-12-01 21:03:36 · 161 阅读 · 0 评论 -
简易的参数校验框架
简易的参数校验框架V1.0一、必要性在整个项目中,调用接口都需要对参数进行合法性判断,参数校验是必须的,且到处存在于我们的代码中(例如之前的代码中,在Service层中对接口的参数进行合法性检验),这样就会导致参数校验的代码和我们的业务逻辑代码混合在一起,以后如果业务需要改变的时候,则需要更改相应的参数校验代码,这就违背了:单一性原则、低耦合等设计原则。所以需要将参数校验和业务代码逻辑进行分离。二、原创 2017-08-02 21:31:08 · 1805 阅读 · 0 评论 -
Servlet 实现重定向几种方法
servlet重定向 在servlet/JSP编程中,服务器端重定向可以通过下面两个方法来实现: 运用javax.servlet.RequestDispatcher接口的forward方法, 或者运用javax.servlet.http.HttpServletResponse接口的sendRedirect方法。 要运用RequestDispatcher接口的forward原创 2017-08-23 16:00:17 · 1740 阅读 · 0 评论 -
Spring框架中获取连接池的四种方式
连接池概述 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。 数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来原创 2017-08-23 15:36:12 · 464 阅读 · 0 评论 -
Java多线程之锁优化策略
锁的优化策略 编码过程中可采取的锁优化的思路有以下几种: 1:减少锁持有时间 例如:对一个方法加锁,不如对方法中需要同步的几行代码加锁; 2:减小锁粒度 例如:ConcurrentHashMap采取对segment加锁而不是整个map加锁,提高并发性; 3:锁分离 根据同原创 2017-08-15 10:43:51 · 217 阅读 · 0 评论 -
java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。 Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized原创 2017-08-14 21:35:18 · 149 阅读 · 0 评论 -
Java自定义类加载器与双亲委派模型
双亲委派模型并不复杂。自定义类加载器也不难!随便从网上搜一下就能搜出一大把结果,然后copy一下就能用。但是,如果每次想自定义类加载器就必须搜一遍别人的文章,然后复制,这样显然不行。可是自定义类加载器又不经常用,时间久了容易忘记。相信你经常会记不太清loadClass、findClass、defineClass这些函数我到底应该重写哪一个?它们主要是做什么的?本文大致分析了各个函数的流程,目的就是让原创 2017-08-14 10:51:42 · 243 阅读 · 0 评论 -
Java的四种引用方式
java内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指向该对象。 java对象的引用包括 强引用,软引用,弱引用,虚引用 Java中提供这四种引用类型主要有两个目的: 第一是可以让程序员通过代码的方式决定某些对象的生命周期; 第二是有利于JVM进行垃圾回收。 下面来阐述一下这四种类型引用的概念:1.强引用原创 2017-08-10 21:43:30 · 372 阅读 · 0 评论 -
ThreadPool用法与优势
引言 合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。线程池的使用线程原创 2017-08-10 16:46:04 · 239 阅读 · 0 评论 -
java多线程之生产者消费者经典问题
今天研究了一下Java多线程,顺便写了一下多线程中的经典问题—–生产者消费者经典问题,参照了网上的各种写法之后自己写了一个,如下所示:/**生产者消费者问题,涉及到几个类 * 第一,这个问题本身就是一个类,即主类 * 第二,既然是生产者、消费者,那么生产者类和消费者类就是必须的 * 第三,生产什么,消费什么,所以物品类是必须的,这里是馒头类 * 第四,既然是线程,那么就不是一对一的原创 2017-08-10 14:31:57 · 246 阅读 · 0 评论 -
java线程同步:synchronized关键字,Lock接口以及可重入锁ReentrantLock
多线程环境下,必须考虑线程同步的问题,这是因为多个线程同时访问变量或者资源时会有线程争用,比如A线程读取了一个变量,B线程也读取了这个变量,然后他们同时对这个变量做了修改,写回到内存中,由于是同时做修改,就会导致修改的状态不一致.用一个实际的例子来说明线程同步的必要性:package cn.outofmemory.locks;public class LockDemo implements Run原创 2017-08-10 14:09:14 · 335 阅读 · 0 评论 -
JInternalFrame的使用
类层次结构图: –javax.swing.JComponent –javax.swing.JInternalFrame JinternalFrame的使用跟JFrame几乎一样,可以最大化、最小化、关闭窗口、加入菜单等功能;唯一不同的是JinternalFrame是lightweight component ,也就JInternalFrame不能单独出现,必须原创 2017-04-14 20:00:23 · 841 阅读 · 0 评论 -
Java中UIManager的几种外观
Java中的几种Look and Feel1、Metal风格 (默认) String lookAndFeel = “javax.swing.plaf.metal.MetalLookAndFeel”; UIManager.setLookAndFeel(lookAndFeel);2、Windows风格 String lookAndFeel = “com.sun.java.swing.pl原创 2017-04-14 19:40:09 · 351 阅读 · 0 评论 -
FASTJSON性能优化
##序列化 IdentityHashMap缓存各种序列化处理类,包括各种基本对象、集合对象、第三方对象、自定义对象,方便序列化处理类的快速查找、避免JavaBeanSerializer的反复创建。代码地址 使用ThreadLocal来存储序列化过程中不断append的字符串,减少内存分配和gc,从而提高性能。 用类StringBuilder方式进行字符串操作,配合ThreadLocal...原创 2018-11-20 10:44:35 · 1972 阅读 · 0 评论