java基础知识
lixq05
这个作者很懒,什么都没留下…
展开
-
设计模式--代理模式
概念:为其他对象提供一种代理,以控制对这个对象的访问(火车票代售处)类似中介,去掉一些服务或者增加一些功能 AOP:再不改变原有类的一些方法的基础上,增加一些额外的业务逻辑 代理模式的几种: 1.远程代理:为不同地理的对象提供局域网代表对象 2.虚拟代理:根据需要将资源消耗很大的对象进行延迟,真正需要的时候进行创建(加载今日头条时,文字先加载出来,图片过大而加载缓慢,会出现一个虚拟图片)原创 2017-09-04 17:19:45 · 167 阅读 · 0 评论 -
知识点--xml的几种方式的原理及特点
原文:http://blog.csdn.net/yuan16423276/article/details/17385867 最常用的是sax、dom、pull、dom4j,而android中用的比较多的是 sax(Simple APIs for XML)、dom(Document Object Model)、pull,其中pull在这三个中又最为适用。 SAXsax是一个用于处理xml事件驱动的转载 2017-08-31 17:05:09 · 230 阅读 · 0 评论 -
知识点--wait()和sleep()的区别
Thread类和Object类 补充转载 2017-08-31 17:06:39 · 309 阅读 · 0 评论 -
知识点--Java垃圾回收与内存分配策略
垃圾回收:转载 2017-08-31 18:46:05 · 176 阅读 · 0 评论 -
设计模式--适配器模式
实例:现在有的物品是: 二相插孔、电脑(只支持三相插头),其中,电脑的供电只能有三相插头的供电方法进行。问题是怎么给电脑供电。所以,我们借助了一个适配器(二相转三相)实现三相插头的供电方法,而这个适配器本质上是输入二相,转化为三相,所以,构建这个适配器需要一个二相插孔参数,适配器实现的三相供电方法,其实就是在方法里使用了二相插孔的供电方法,这样,笔记本就有电了。。 定义:将一个类的接口转换成客户希转载 2017-08-31 18:56:19 · 153 阅读 · 0 评论 -
Java的反射机制(一)
反射机制的作用: 1,反编译:.class–>.java 2,通过反射机制访问java对象的属性,方法,构造方法等; 反射机制中的类 java.lang.Class; java.lang.reflect.Constructor; java.lang.reflect.Field; java.lang.reflect.Method; java.lang.reflect.Modifier;转载 2017-09-10 18:03:20 · 196 阅读 · 0 评论 -
设计模式--责任链模式
责任链模式:将接收者对象连成一条链,并在该链上传递请求,直到有一个接收者对象处理它,通过让更多对象有机会处理请求,避免了请求发送者和接收者之间的耦合。(现实中的例子:买车的折扣请求),请求发送者并不关心是谁处理了他的请求。暴露给Client一个接口(广义的)原创 2017-09-10 09:28:01 · 155 阅读 · 0 评论 -
Java的反射机制详解(一)
类是java.lang.Class类的实例对象(一个类只可能是一个Class类的实例)三种表示方法:<1>Class c1 = Fool.class;——>类名.class <2>Class c2 = fool.getClass();———>对象.getClass() <3>Class c3 = Class.forName("com.imooc.reflect原创 2017-09-18 19:35:57 · 349 阅读 · 0 评论 -
每日一题--扑克牌的顺子
解决这个问题的思路:首先,将数组排序,找出其中0的数目(大小王),统计排序之后相邻数字之间的空缺数字个数。如果空缺的总数小于等于0的数字,则是个顺子。 还要注意一点:如果数组中的非0数字有重复出现,则该数组不是顺子package six;import java.util.Arrays;/**问题描述:从扑克牌中随机抽5张牌,判断是不是顺子。 * 其中大小王可以看成任意的数字 * Created原创 2017-09-19 12:52:56 · 649 阅读 · 0 评论 -
java反射机制API
要想得到一个类的信息,首先要拿到这个类的类类型public class ClassUtil { /** * 打印类的信息,包括类的成员函数,成员变量 * @param object 拿到该对象所属类的信息 */ public static void printClassMessage(Object object){ //要获取类的信息,先原创 2017-09-19 14:00:42 · 366 阅读 · 0 评论 -
设计模式--策略模式
策略模式:将可变的部分(比如:排版算法,支付算法)抽象分离成算法接口,在该接口下封装一系列的算法实现,并使他们可以相互替换 策略模式体现的设计原则: 1.封装变化,把会变化的部分封装起来,让其他部分不受到影响。使代码更加有弹性。 2.面向接口编程,而不是面向实现编程。更易于维护和扩展,更有条理。 例子:博客http://yangguangfu.iteye.com/blog/815107 �原创 2017-09-02 11:56:20 · 152 阅读 · 0 评论 -
反射机制--方法的反射m.invoke()
方法的名称和参数列表才能唯一地决定某个方法方法反射操作:method.invoke(对象,参数列表)反射是框架底层的一些方法,比如以后看到的Spring的重要特性DI:控制反转就是这么一个原理,至于为什么使用反射,1.首先你能通过任意对象获取类类型即是所有的信息,这个作用以后才能体现;2.方法的反射的好处就是解耦,比如说a,b,c对象都要调用 print()方法,正常的想法就是要创建每个对象,并原创 2017-09-19 14:28:56 · 4434 阅读 · 0 评论 -
集合泛型的本质
通过反射机制来认识:java中集合的泛型是防止错误输入的,只在编译阶段有效,绕过编译就无效了验证:通过方法的反射来操作,绕过编译 结论:编译之后集合的泛型是去泛型化的(类型擦除)代码: public static void main(String[] args){ ArrayList list = new ArrayList(); ArrayList<Stri原创 2017-09-19 14:49:25 · 410 阅读 · 0 评论 -
SimpleDateFormat线程不安全及解决办法
一. 为什么SimpleDateFormat不是线程安全的? 源码:public class SimpleDateFormat extends DateFormat {public Date parse(String text, ParsePosition pos){ calendar.clear(); // Clears all the time fields转载 2017-09-22 12:27:11 · 291 阅读 · 0 评论 -
Django项目
一、安装项目的过程: 命令行输入:django -admin startproject myblog 创建一个项目 启动服务器:python manage.py runserver 8080(更改端口)原创 2017-11-27 21:15:00 · 178 阅读 · 0 评论 -
单点登录
1. 什么是单点登录? 单点登录全称Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分 2.登录: 相比于单系统登录,sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。 详细解释见原博客:http://w转载 2017-09-17 21:15:26 · 298 阅读 · 0 评论 -
知识点--String、StringBuilder、StringBuffer
String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 性能区别:String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象—>得出结论(经常改变内容的字符串最好不要用 String ) 一个陷阱:String转载 2017-08-31 15:16:36 · 196 阅读 · 0 评论 -
知识点--实际开发中软引用或弱引用的使用场景
有效地避免OOM(OutOfMemory)Java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。强引用(普遍存在):object和str都是强引用Object object = new Object();String str = "hello";只要某个对象有强引用转载 2017-08-31 14:31:52 · 6253 阅读 · 0 评论 -
多线程编程(一)
多线程编程的目的:最大限度地利用CPU资源”,当某一线程的处理不需要占用CPU而只和I/O,OEMBIOS等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。从根本上说,这就是多线程编程的最终目的。线程对象和线程的区别:【线程对象】是可以产生线程的对象。比如在Java平台中Thread对象,Runnable对象。【线程】是指正在执行的一个指点令序列。在java平台上是指从一个线程对转载 2017-09-04 19:26:35 · 135 阅读 · 0 评论 -
代理模式案例
原文:http://www.cnblogs.com/cenyu/p/6289209.html 静态代理:模拟保存动作,定义一个保存动作的接口:IUserDao.java目标对象实现这个接口的方法UserDao.java,使用静态代理方式,就需要在代理对象(UserDaoProxy.java)中也实现IUserDao接口调用的时候通过调用代理对象的方法来调用目标对象. 代码: 接口:IU转载 2017-09-05 14:55:23 · 209 阅读 · 0 评论 -
多线程编程(二)
http://blog.csdn.net/celineshi/article/details/1670286 1. start()方法和run()方法:一个线程对象生成后,如果要产生一个执行的线程,就一定要调用它的start()方法;线程对象的run方法完全是一个接口回调方法,它是你这个线程对象要完成的具体逻辑.简单说你要做什么就你在run中完成;而如何做,什么时候做就不需要你控制了,你只要调用转载 2017-09-04 19:52:27 · 193 阅读 · 0 评论 -
多线程编程(三)
多线程编程的一般原则: 【安全性】是多线程编程的首要原则,如果两个以上的线程访问同一对象时,一个线程会损坏另一个线程的数据,这就是违反了安全性原则,这样的程序是不能进入实际应用的。安全性的保证可以通过设计安全的类和程序员的手工控制。如果多个线程对同一对象访问不会危及安全性,这样的类就是线程安全的类,在JAVA中比如String类就被设计为线程安全的类。而如果不是线程安全的类,那么就需要程序员在访问转载 2017-09-06 13:35:56 · 237 阅读 · 0 评论 -
多态和类型转化(instanceof)
多态的用途:什么时候是多态, 强制类型转化 用途,辨别原创 2017-08-29 11:59:31 · 245 阅读 · 0 评论 -
抽象类(abstract class | interface)
用途以及区别应用场景转载 2017-08-29 12:07:48 · 325 阅读 · 0 评论 -
并发(一)深入分析Volatile的实现原理
在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深入分析能帮助我们正转载 2017-09-23 18:18:50 · 173 阅读 · 0 评论 -
设计模式--模板模式
定义:定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。 类型:行为类模式 模版方法模式的结构 模版方法模式由一个抽象类和一个(或一组)实现类通过继承结构组成,抽象类中的方法分为三种:模版方法:由抽象类声明并加以实现。(final)public final void prepareTempate(){ //步骤一原创 2017-08-30 12:53:51 · 232 阅读 · 0 评论 -
设计模式--工厂方法模式
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。 interface IProduct1 { public void show(); } interface IProduct2 { public void show(); } class Product1 implements IProduct1 {原创 2017-08-30 14:37:21 · 193 阅读 · 0 评论 -
设计模式--抽象工厂模式
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 抽象工厂模式与工厂方法模式的区别:抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象原创 2017-08-30 14:56:11 · 151 阅读 · 0 评论 -
自定义实现栈
package stack;public interface IStack<T> { //元素出栈,并返回栈元素 public T pop(); //元素入栈 public void push(T elem); //获取栈顶元素 public T peek(); //判断栈是否为空 public boolean isEmpty(); p原创 2017-08-30 16:39:57 · 217 阅读 · 0 评论 -
设计模式--观察者模式(一)
定义:定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于他的对象都得到通知并被自动更新 2. 观察者(黄明的老妈和女朋友)收到通知以后,可以各自做出各自的反应(目标对象–黄明) 上图中观察者模式的通用代码: 步骤一:目标对象(Subject)的定义package observer;import java.util.ArrayList;import java.ut原创 2017-09-07 19:04:42 · 242 阅读 · 0 评论 -
设计模式--观察者模式(二)
两种模型1.推模型: 2.拉模型: 3.两种模型的区别: JAVA提供的观察者模式实现 观察者模式的优缺点及应用场景: 缺点:可能会引起无谓的操作 区别对待观察者场景问题在目标类里进行筛选(并不是所有内容都推送给观察者)原创 2017-09-08 12:22:20 · 150 阅读 · 0 评论 -
设计模式--单例模式singleton
应用场合:有些对象只需要一个,如古代皇帝,老婆(配置文件,工具类,线程池,缓存,日志等) 作用:保证整个应用程序中某个实例有且只有一个 类型:饿汉模式,懒汉模式 饿汉模式:public class Singleton{ //1.修改默认的构造方法,不允许外部直接创建对象-->(但是还要有一个实例)在类的内部创建实例 private Singleton(){} //2.创建原创 2017-08-29 17:58:24 · 231 阅读 · 0 评论 -
break 和 continue
break和continue都是用来控制循环结构的,主要是停止循环。1.break有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。这是我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句。2.continuecontinue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,b转载 2018-01-20 17:28:46 · 131 阅读 · 0 评论