![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程语言
Tanbin_
这个作者很懒,什么都没留下…
展开
-
代理模式,适配器模式和装饰模式'
我个人觉得这三个模式很相近,但是无法用场景来区分他们,只能根据他们uml图的特点来区分他们。 代理模式 代理模式的代理对象和被代理对象都实现了同一个接口,代理对象有被代理对象的引用,但client调用代理对象的方法时,方法其实是调用了被代理对象相应的方法。 适配器模式 适配器有被适配对象的引用,client可以通过调用适配器的方法来调用被适配的对象,但是只是为了不直接调用被适配的对象的话,就原创 2016-12-10 18:31:43 · 199 阅读 · 0 评论 -
java创建文件
java创建文件时,文件所在的目录必须先存在,否则 java.io.IOException: 系统找不到指定的路径。所以写个工具方法先来创建文件夹,防止文件夹不存在出现异常。因为创建文件的时候不会自动帮我们建,所以要自己处理。/** * 如果要创建的文件所在目录不存在则先创建目录 * @param filePath * @throws FileExistsExcepti原创 2017-01-06 17:24:15 · 638 阅读 · 0 评论 -
内部类和匿名类
内部类的特点是它可以访问外部类的成员变量和方法的局部变量,不可以被外部类的其他类访问。 匿名内部类,是特殊的内部类,它是继承了其他类,实现了接口或者实现抽象类的内部类。可以访问外部类成员变量,和final修饰的局部变量。 感觉很复杂,先了解这些。原创 2016-11-27 17:24:02 · 151 阅读 · 0 评论 -
java同步Synchronized的使用
先说一说多线程的实现方式,有两种,第一种是继承Thread类,第二种是实现Runnable接口。两种方法的区别,第一种使用的时候会有多个线程实例所以多个线程访问的变量不是共享的。package javabasic;public class Synchronized extends Thread{ public int a; @Override public void run(原创 2016-11-25 18:05:51 · 173 阅读 · 0 评论 -
java 字符串问题
1.判断两个字符串包含的字符是不是一样,顺序无关。例如,abcd和dcba就相同,但是abcd和abce是不相同的。 解决思路:如果两个字符串的length不一样,直接返回false;接着把两个字符串转为字符数组,并做快排。排序后就简单了,遍历两个数组,只要下标一样,字符不一样就立即返回false, 代码:package basic.orderBy;import java.util.Scanne原创 2016-12-06 11:26:46 · 332 阅读 · 0 评论 -
闭包
闭包这篇文章的启蒙来自与对闭包问题的求解时看的一个知乎回答:闭包(计算机科学)是什么?javascript中的闭包talk is cheap show me the code ,所以先来看个例子 int y=3; function A(){ int x=2; return x+y; }写js代码时我们很自然的就是这么写。但是如果是c语言呢原创 2016-11-21 23:56:10 · 237 阅读 · 0 评论 -
java 集合
List接口 集合的特点是可以放入重复 ArrayList子类 ArrayList是用数组实现的,可以 remove(index) add(Object) indexOf(Object) set(index,Object) 把它看做一个功能强大的数组就可以了 Vector 这是一个线程安全的List子类,里面有同步代码,所以比较重比较慢LinkedList子类 LinkedLis原创 2016-12-05 02:45:25 · 155 阅读 · 0 评论 -
java 流
字节流 InputStream,OutputStream,及相应的子类 父类的方法: read() 读取一个字节,-1为空 read(byte[]) 尽量填满byte数组,返回读取字节个数 write(int) 写入一个字节 write(byte[]) 写入一个字节数组 读和写都是有一个偏移量在控制着。所以再次读或写不会覆盖和重复。 字符流Reader,Writer,及相原创 2016-11-30 17:37:19 · 204 阅读 · 0 评论 -
jvm 内存分配与垃圾回收
一般粗略的可以把内存的分配分为栈区和堆区,但是对于理解垃圾回收和分配还要分得细一点。如下图: 分为堆和方法区,虚拟机栈和本地方法栈,程序计数器。 前两个是多线程共享的,后面三个是每个线程单独的。方法区保存的是加载的类信息,常量(有常量池),静态变量等与实例无关与类有关的信息。里面还包括运行常量池,会在类加载时,把class文件常量池的字面量,符号引用等装进运行常量池。使用String的int原创 2016-12-04 16:54:01 · 412 阅读 · 0 评论 -
java 前期绑定,后期绑定
前期绑定: Java中的static方法和final方法,成员变量(包括静态及非静态)(private属于final方法,详细的解释见《Java编程思想》)属于前期绑定。 意味着向上转型时,静态方法final方法,成员变量会使用父类的。 后期绑定: 除了static方法和final方法(private属于final方法)之外的其他方法属于后期绑定,运行时能判断对象的类型进行绑定。原创 2016-12-03 17:13:03 · 226 阅读 · 0 评论 -
java 集合类应用
1.输出数组中出现次数大于length/2的元素。package basic.collection;import java.util.HashMap;import java.util.Map;/** * author tanbin * 将数组中出现次数大于 length/2 的数打印出来 * Created by Administrator on 2016/12/11. */public原创 2016-12-11 22:28:36 · 243 阅读 · 0 评论 -
java Scanner
可以从一个流中,按不同的方式迭代取出数据。 //构造方法(常用的三个) //Scanner(File source) //Scanner(InputStream source) //Scanner(String source)useDelimiter(“”) 确定分割的符号,默认空格 常用方法: hasNext() hasInt() hasNextL原创 2016-12-03 13:35:33 · 204 阅读 · 0 评论 -
多线程经典消费者实例
需求我们的程序想要实现这样的一个功能,两个线程,一个不断往一个容器加数据,一个不断从这个容器取数据。设计的问题我们的第一个问题是,如果容器满了怎么办,空了又怎么。解决的办法是使用wait()和notify()。思路是当容器满或空时,对应的线程就应该停下了,等到不空或者不满的时候再继续。显然wait()和notify()可以很好的实现。当空时,暂停取,使用wait(),添加线程添加了后就不空了,就可以原创 2016-11-27 16:29:32 · 248 阅读 · 0 评论 -
com.fasterxml.jackson.databind.JsonMappingException: No serializer found for
先说下场景,有个实体类是和其他实体关联的,关联的实体配置了延迟加载。查询出来后用Jackson转成json返回到前端。实际上是在springmvc中配置MappingJackson2HttpMessageConverter转换器。Hibernate 两个实体关联的时候,可能会采用延迟加载。 当使用延迟加载时,如果关联的对象没有使用。那么它不是为null的。hibernate 会有一个代理对象,填充在原创 2017-01-14 18:13:52 · 8237 阅读 · 2 评论