
Java
文章平均质量分 93
6点A君
记录我学习的知识的地方~
展开
-
聊聊Java中引用类型-引用类型应用与内存泄漏
引用类型怎么用?内存泄漏与内存溢出由啥区别?原创 2021-02-21 23:46:48 · 450 阅读 · 0 评论 -
聊聊Java中引用类型
对Java引用类型来一次深度历险吧!原创 2021-02-21 15:27:04 · 389 阅读 · 0 评论 -
单例模式之静态内部类实现
单例模式之静态内部类实现原创 2017-04-16 12:18:39 · 1145 阅读 · 0 评论 -
eclipse在debug时候,可能鼠标放上去,有些变量不直接显示咋办?
鼠标选择你想知道内容的部分,ctrl+shift+i即可。原创 2017-05-01 14:17:50 · 1282 阅读 · 0 评论 -
单例模式之懒汉模式(延迟加载)
什么是延迟加载?延迟加载就是在调用get()方法时候创建,常见的方法就是在get()中实例化。看实现代码:package test;public class MyObject { private static MyObject myObject; private MyObject() { } public static MyObject getInstance() {原创 2017-04-15 10:58:07 · 2072 阅读 · 1 评论 -
单例模式之饿汉模式(立即加载)
单例模式或许都知道,即某个系统只有一个实例。什么是立即加载?立即加载就是使用类的时候已经将队形创建完毕,常见的方法就是直接new实例化。代码基本模式如下:public class MyObject { // 立即加载方式==饿汉模式 //静态成员变量,且一开始就直接创建对象。 private static MyObject myObject = new MyObject();原创 2017-04-15 09:57:32 · 1732 阅读 · 5 评论 -
Lock接口API简单介绍
1)void lock():获取锁,电泳该方法当前线程会获取锁,获得锁后,从该方法返回;2)void lockInterruptibly():可中断地获取锁,和lock()方法的不同之处在于该方法会响应中断,即在锁的获取中可以中断当前线程;3)boolean tryLock():尝试非阻塞的获取锁,调用该方法后立刻返回,如果能够获取则返回true,否则返回fal原创 2017-04-18 14:56:28 · 1702 阅读 · 0 评论 -
简单的线程池技术写法及要点
上一篇文章讲了数据库连接池,这篇主要学习下线程池。线程,即更小单位的进程,可以更加充分的利用cpu进行多任务操作。Java中一开始就对多线程有了支持,通常编写另一个线程,都是为了某种特定的目的去的,也就是让他完成特定的任务,并且通常也只有一个。但是如果有不定的待执行工作数请求执行,并且可能是不同操作的呢?对于服务端的程序,经常面对的是客户端传入的短小(执行事件短、工作内容较为单一)原创 2017-04-18 14:11:25 · 1945 阅读 · 0 评论 -
简单的数据库连接池写法及要点
在和数据库连接方面,大多数应用,都已经不再是需要一次就连接一次,而大多是通过数据库连接池来实现的。因为数据库连接和销毁消耗性能是很大的,再一个,在一次数据库连接中,你可以做很多次查询或者维护工作,而不仅仅一次。所以大多数情况下,数据库连接池使我们的首选。这里主要讲述一个简单的数据库连接示例,其中使用等待超时来构造,在示例中模拟从连接池中获取、使用和释放连接的过程,而客户端获取连接的原创 2017-04-18 13:34:10 · 1653 阅读 · 1 评论 -
Java序列化之readObjectNoData、readResolve方法
资料地址:http://docs.oracle.com/javase/1.5.0/docs/guide/serialization/spec/input.html#5903、①:private void readObjectNoData() throws ObjectStreamException; Serializable对象反序列化时,由于序列化与反序列化提供的class版本不同转载 2017-04-16 13:32:50 · 1745 阅读 · 0 评论 -
单例模式之序列化与反序列化实现
静态内部类可以达到线程安全问题,但是如果遇到序列化对象时,使用默认的方式运行得到的结果坑你还是多例的。package test;import java.io.ObjectStreamException;import java.io.Serializable;public class MyObject implements Serializable { private stat原创 2017-04-16 13:38:32 · 2260 阅读 · 0 评论 -
单例模式之静态代码块实现
前几篇讲了通过静态内部类来实现单例模式,主要思路就是私有构造方法+静态内部类。这里还有一种利用静态代码块来实现的单例模式。看如下代码:package test;public class MyObject { private static MyObject instance = null; private MyObject() { } static { insta原创 2017-04-16 13:51:22 · 4126 阅读 · 0 评论 -
JDK动态代理的实践
动态代理在各大框架中用的十分的频繁,本文主要介绍通过JDK来实现动态代理的机制。对代理不理解?可以参看我的设计模式这一篇:代理模式-让替身帮你区干事我们需要完成下面几个步骤:1、编写服务类和接口,这个是真正的服务提供商,在JDK代理中,接口是必须的。2、编写代理类,提供绑定和代理方法。具体代码:首先一个接口类HelloService类:package s原创 2017-08-10 22:50:31 · 553 阅读 · 0 评论 -
CgLib动态代理初步实践
上面一篇主要讲了jdk提供的实现动态代理的方法,本文主要接着上文给出了cglib动态代理基本写法。传送门:JDK动态代理实践里面共有2个新家的类,一个是用于实现invocationhandler(注意导包或者maven)package study.JDKProxy;import java.lang.reflect.Method;import net.sf.cglib原创 2017-08-10 23:21:15 · 563 阅读 · 0 评论 -
单例模式之使用enum枚举数据类型实现
枚举enum和静态代码块的特性想死,在使用枚举类时,构造方法会被自动调用,也可以应用这个特性实现单例模式。package test;public class MyObject { private enum MyEnumSingleton{ INSTANCE; private Resource resource; private My原创 2017-04-16 14:39:53 · 4148 阅读 · 2 评论 -
Java模拟链表操作引发对Java传引用的思考实践
这些天没事在刷刷题,突然遇到一些Java模拟链表的问题,在写的时候也发现了多除与印象中传递引用不同之处,可能c++基础有半桶水缘故~先说说Java里面传递参数方法,有传值以及传引用,传值,就是将基本8数据类型的值传递过去而已传引用,其实是一种假的传引用,传递的最终是复制一份地址传递过去。直接说可能太抽象,直接贴出代码慢慢思考:下面6个test方法,分别会输出怎样的结果呢原创 2017-09-27 11:20:05 · 533 阅读 · 0 评论 -
Java8中Lambda表达式学习
Java 是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象。在 Java 中定义的函数或方法不可能完全独立,也不能将方法作为参数或返回一个方法给实例。从 Swing 开始,我们总是通过匿名类给方法传递函数功能,以下是旧版的事件监听代码:someObject.addMouseListener(new MouseAdapte转载 2017-10-09 23:25:00 · 426 阅读 · 0 评论 -
eclipse如何debug调试jdk源码
java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码。虽然官方的jdk自带了源码包src.zip,然而在debug时查看变量却十分麻烦。例如调试HashMap的 public V put(K key, V value) 方法并查看key的值时会提示:可以看到不能显示变量的值了,原因在于oracle提供的jre中rt.jar不带debug信息:转载 2017-10-15 16:49:57 · 748 阅读 · 0 评论 -
java中ReentrantLock部分方法解释
ReentrantLock定义为:java.util.concurrent.locks.ReentrantLock1、int getHoldCount(): 作用是查询当前线程保持锁定的个数,也就是调用lock()方法的个数。2、int getQueueLength() 作用是返回正等待获取此锁定的线程估计数,比如有5个线程,1个线程首先执行aw原创 2017-04-13 17:25:21 · 1288 阅读 · 0 评论 -
java:lock中使用多个condition实现通知特定线程
相对于synchronized块中使用notify或者notifyall,通知的线程都是不确定的,当发一个通知,并不知道下一个竞争到所得会是哪个线程。而lock更加细腻,通过多个condition,则可以实现通知部分线程的功能。service类:package service;import java.util.concurrent.locks.Condition;import原创 2017-04-13 16:49:47 · 1277 阅读 · 0 评论 -
java:lock中condition消息传递(基本用法)
类似于synchronized中的wait和notify方法,在更轻量级的lock锁中,同样有着condition来实现消息通信,本文先介绍基本用法。condition的await和signal方法同样也必须在lock块里面。package service;import java.util.concurrent.locks.Condition;import java.util.c原创 2017-04-13 16:40:37 · 862 阅读 · 0 评论 -
java中throwable的再学习
先引进一个题:以下能用throwable抛出的异常有?A: ThrowableB:EventC:ObjectD:ErrorE:ExceptionF:RuntimeException答案为ADEF;首先能被throw的异常,必须得要能thowable吧,先看throwable的主要声明:public class Throwable implements原创 2017-03-07 16:39:14 · 957 阅读 · 0 评论 -
线程的UncaughtException的用法
如何捕获一个线程抛出的异常呢?可以通过设置线程的UncaughtException来捕获线程抛出的异常。示例代码如下:package tt;class MyThread extends Thread { @Override public void run() { System.out.println("thread will throw exception"); thr原创 2017-03-17 15:11:31 · 1256 阅读 · 0 评论 -
jsp9个内置对象3大指令7个基本动作
1、先讲9个内置对象。①、request:用于封装客户端的请求信息,然后才能传递到后台功服务端进行处理,是httpservletrequest的实例。②、response:用于响应,包含了响应客户端请求的有关信息,是httpservletresponse的一个实例。③、page:page对象就是指当前jsp页面本身,有点类似与this指正,是Object类的实例。④、p原创 2017-03-08 11:19:15 · 1415 阅读 · 0 评论 -
java中try/catch/finally再学习
首先捕获异常。java编译器只允许如下三种组合方式:①:try/catch②:try/finally③:try/catch/finally。当有方法声明throw异常时,则要么向上抛出,要么在catch块捕获处理。而catch可能也有多个,具体是从小到大的原则,先捕获小的,依次朝着他父类方向捕获。finally语句块,除非发生了无法处理的异常从而中断,否则无论如何都原创 2017-03-08 15:31:28 · 634 阅读 · 0 评论 -
java中类型转化学习(a+=b)
基本类型转化都比较了解,这里主要记录刚遇到的特殊的。①:java中,当参与运算的两个数是byte、short或int时候,他们首先都会被转化为int类型,再进行计算 最后再赋值给原变量。②:a+=b会隐式地把运算结果转化为a的类型。而a=a+b不会把a+b运算结果的类型隐式转化为a的类型。看下面代码: public static void main(String[原创 2017-03-09 10:05:59 · 813 阅读 · 0 评论 -
java中>>和>>>的区别
昨天在做一家公司的笔试题时,碰巧遇到了>>>,好吧,那时我发现我这个知识点没掌握,这里学习学习。>>>:有符号右移,由于是补码运算,故负数左边补1,正数左边补0,右边多余被舍弃。>>:无符号右移,左边都补0,右边都舍弃。 public static void main(String[] args){ int a = -2>>>2; int b = -2>>2; int c原创 2017-03-07 11:23:50 · 648 阅读 · 0 评论 -
java中内部类的学习再学习
一些基础知识点慢慢掌握理解,以前还是很菜的。首先抛出一个命题,一个类文件中可以有多个public 修饰的类么?可以答案就是用public修饰成员内部类。java有4种内部类:1、静态内部类;2、成员内部类;3、局部内部类;4、匿名内部类;原创 2017-03-07 15:48:46 · 537 阅读 · 0 评论 -
getClass().getName()再学习
先看一段代码:package easy;import java.util.Date;public class HelloB extends Date{ private void test(){ System.out.println(super.getClass().getName()); } public static void main(String[] args) { n原创 2017-03-12 13:53:27 · 1867 阅读 · 0 评论 -
java中int和integer比较,integer和integer比较
先看一代代码: public static void main(String[] args) { long test = 012; float f = -412; double d = 0x12345678; Integer io1 = 59; int io2 = 59; Integer io3 = Integer.valueOf(59); In原创 2017-03-12 15:41:31 · 1071 阅读 · 0 评论 -
java序列化一些小要点
首先,如何实现序列化呢?所有要实现序列化的类必须都实现serializable接口,serializable接口位于java.lang包中,但是,里面并没有任何方法。大体的步骤:使用一个输出流(例如fileoutputstream)来构造一个objectoutputstream(对象流)对象,紧接着,使用该对象writeobject(object obj)方法就可以将objec原创 2017-03-13 18:51:46 · 516 阅读 · 0 评论 -
maven项目在eclipse中debug时看不到源码?
找到的一种方法就是:首先debug时候,加入的resource是“default”只需要将default去掉,然后将本项目源代码add进去,就可以看到源代码了。此处盗了图,因为这种方法解决了我的问题,但又懒得重新搞一遍截图来自于问题:http://bbs.youkuaiyun.com/topics/390802869原创 2017-03-23 14:42:22 · 1611 阅读 · 0 评论 -
java中4中创建对象的方式详解
第一种:new,这个很简单不多说。第二种:利用clone方法,如下步骤① 实现clone的类首先实现Cloneble接口,Cloneable接口实质上是一个标识接口,没有任何方法。② 重写Object中的clone方法。③ 在clone方法中调用super.clone()。无论clone类的继承结构是什么,super.clone()都会直接或者简介调用Object类中的clone原创 2017-03-15 20:14:14 · 926 阅读 · 0 评论 -
java中方法覆盖的相关
一道选择题:A.方法覆盖要求覆盖和被覆盖的方法有相同的名字,参数列以及返回值B.方法覆盖要求覆盖和被覆盖的方法必须具有相同的访问权限C.覆盖的方法不能比被覆盖的方法抛出更多的异常D.覆盖的方法一定不能是private的ACD正确,B不正确。就记录下BC的原因。访问权限只能越来越松。例如代码:public class MM { protected void原创 2017-02-27 17:04:44 · 1919 阅读 · 0 评论 -
java中可变参数再学习
首先,什么是可变参数?在java语言中,使用省略号来事先可变参数,可变参数通常有如下几个特点:①:可变参数只能作为最后一个参数出现。②:只能位于便利nag类型和变量名之间。③:编译器为可变参数隐含创建一个数组,在调用时候,可以用数组的形式来访问可变参数。下面看一段代码事例:public class OuterClass { public static void main(原创 2017-03-08 15:01:32 · 474 阅读 · 0 评论 -
java中变量加载顺序再学习
先看一段代码:public class HelloB extends HelloA{ public HelloB(){ System.out.println("HelloB"); } { System.out.println("I am B class"); } static{ System.out.println("static B"); } p原创 2017-03-12 13:03:00 · 2051 阅读 · 0 评论 -
i=i++的过程?
先看一段代码:public class HelloB{ public static void main(String[] args) { int i = 0; i = i++; System.out.println(i); }}输出多少呢?答案是1;具体过程可以这样理解:①:tmp=i;②:i=i+1;③:i=tmp;当然,如果变为i=++i;那原创 2017-03-12 13:37:44 · 1142 阅读 · 1 评论 -
java中notify和wait实现操作系统pv操作(单一生产者消费者)
单一生产者和消费者的pv操作,就是生产一个,消费一个,不生成,你就不能消费。看代码:p操作package entity;//生产者public class P { private String lock; public P(String lock) { super(); this.lock = lock; } public void setValue() {原创 2017-04-13 10:30:36 · 2349 阅读 · 0 评论 -
eclipse中Prompt for workspace on startup 设置没用的解决方法
本文是在http://www.blogjava.net/feenn/archive/2012/07/27/384176.html帮助下解决的。具体是:症状是这样的:启动后默认打开一个目录作为workspace,该目录是我之前从来没配置过的。无论是在选项中勾选“Prompt for workspace on startup”,还是删除eclipse的配置文件均无法再次让eclipse询问原创 2016-12-31 12:48:16 · 2167 阅读 · 1 评论