- 博客(20)
- 收藏
- 关注
原创 java-参数传递(小白篇)
参数传值分为:值传递以及引用传递(地址传递)。(个人理解-勿喷)参数分为基本类型,对象等。1.基本类型(8大类型:int/float/double/char/long/boolean/byte/short)例子:/** * @description: * @author: lc * @time: 2018/2/23 0023 */ public class Test01 { pub...
2018-02-23 16:32:58 219
转载 java之动态代理
分类:jdk动态代理和cglib动态代理 jdk动态代理是由java内部的反射机制来实现的,cglib动态代理底层则是借助asm来实现的。反射机制在生成类的过程中比较高效,而asm在生成类之后的相关执行过 程中比较高效(可以通过将asm生成的类进行缓存,这样解决asm生成类过程低效问题)。jdk动态代理的应用前提,必须是目标类基于统一的接口。 例子: 接口:HelloW
2017-10-16 09:38:50 181
转载 JVM学习笔记一 之 调优
一.根据Java虚拟机规范,JVM将内存划分为: 1.New(年轻代) 2.Tenured(年老代) 3.永久代(Perm)(备注:jdk1.8之后 改为元本地元空间) 其中,New和Tenured属于堆内存。-xmx:指定jvm堆内存最大值,-xms:jvm堆初始化值。 永久代,Perm(非堆)不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX
2017-10-11 13:54:53 218
转载 JVM学习笔记一 之 内存泄露与内存溢出
内存溢出(memory overflow):程序运行过程中无法申请到足够的内存而导致的一种错误。垃圾回收后,仍然无内存空间容纳新的Java对象的情况。 内存泄露(memory leak):内存申请后,用完没有释放,造成可用内存越来越少,从而降低性能。即被分配的对象可达但已无用 从定义上可以看出内存泄露是内存溢出的一种诱因,不是唯一因素。 可能发生内存溢出情况例子:
2017-10-11 09:12:38 221
转载 spring之applicationContext、beanFactory
1.ApplicationContext 是 BeanFactory接口的子接口 2.beanFactory: BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml")); HelloService helloService4 =
2017-10-07 16:45:02 245
转载 spring之闲谈
1.BeanFactory和ApplicationContext有什么区别 答:1.beanFactory是接口,applicationContext继承beanfactory接口,并添加了自己的一些方法:监听器、国际化、aop等 2.applicationContext三种实现: 1):ClassPathXmlApplicationContex(c
2017-10-07 11:22:24 230
转载 锁之reentrantlock
重入锁(ReentrantLock)是一种递归无阻塞的同步机制。 ReenTrantLock可重入锁(和synchronized的区别)总结 可重入性: 从名字上理解,ReenTrantLock的字面意思就是再进入的锁,其实synchronized关键字所使用的锁也是可重入的,两者关于这个的区别不大。两者都是同一个线程没进入一次,锁的计数器都自增1,所以要等到锁的计数器下降为0时才能释放锁。
2017-10-07 10:15:46 207
转载 Java类初始化顺序
Java初始化顺序结论: 1 继承体系的所有静态成员初始化(先父类,后子类) 2 父类初始化完成(普通成员的初始化-->构造函数的调用) 3 子类初始化(普通成员-->构造函数)
2017-10-07 09:25:53 143
转载 多线程之线程池
线程框架关系: Executor 接口 ExecutorService 接口 继承 Executor AbstractExecutorService 抽象类 实现 ExecutorService 不过方法都是空 ThreadPoolExecutor
2017-10-06 14:56:03 216
转载 Object浅拷贝、深拷贝
将一个对象的引用复制给另外一个对像三个方式:1.直接赋值、2.浅拷贝、3.深拷贝 1.直接赋值:赋值的是引用。 2.浅拷贝定义(shallow clone):被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。 3.深拷贝(deep clone):被复制对象的所有变量都含有与原来的对象相同的值,把要复制的对象所引用的对象都复制了一遍。
2017-10-06 11:04:24 605
原创 java设计模式-工厂模式
工厂模式分类: 1. 简单工厂模式(Simple Factory) 2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 简单工厂模式例子 car接口: /** * Description:车的接口 * User: lc * Date: 2017/10/2 0002 * Time: 下午 3:48 */ publi
2017-10-02 16:16:20 176
原创 java设计模式-单例模式
单例模式:饿汉模式以及懒模式 饿汉模式:线程安全,不会产生多个实例。但如果加载耗时,增加项目初始化时间,如果在运行过程中,没有用到,可能增加空间的浪费 懒汉模式:充分利用资源,实现懒加载策略。(可能线程不安全,需要用户自己优化) 例子 饿汉模式 /** * Description:饿汉模式 * User: lc * Date: 2017/9/30 0030 * Time:
2017-10-02 11:03:31 168
原创 java设计模式-策略模式
要点: 策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 接口: /** * Description:加密解密接口 * User: lc * Date: 2017/9/29 0029 * Time: 下午 4:34 */ public interface EncryptStrategy { /**
2017-09-29 17:09:10 287
转载 java之重写与重载
重写的规则: 1、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。 2、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。 3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private) 4、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如: 父类
2017-09-28 09:23:34 163
转载 自定义ClassLoader解析
1. 实现自己的类加载器必须首先继承一个父类加载器. 编写一个类加载器会涉及到以下几个方法: 1. findClass(String name) 根据类的路径查找类,必须重写的方法 2.defineClass(String name, byte[] b, int off, int len) 由父类实现,直接调用 3.loadClass(S
2017-09-27 23:49:44 247
原创 redis之扩容
解决方案: 1.hash算法:分多个实例存储:增加Redis服务器的数量,在客户端对存储的key进行hash运算,存入不同的Redis服务器中,读取时,也进行相同的hash运算, 找到对应的Redis服务器 2.集群 3.对Redis的访问分为写和读
2017-09-27 18:58:23 1715
原创 mybatis #和$
PrepareStatement:预编译支持参数化以及占位符,防止sql注入 Statement:有sql注入风险 正文 #{} 的参数替换是发生在 DBMS 中,而 ${} 则发生在动态解析过程中。 例如:select * from order where id=#{orderId}和select * from order where id=${orderI
2017-09-27 16:44:46 330
原创 JVM学习笔记一 之 ClassLoader
一、.类加载器所做的工作实质上是把类文件从硬盘读取到内存中 二、java的类大致分三中:系统类、扩展类、自定义类 三、类加载方法两种: 1.隐式装载,程序在运行过程中碰到new等方式生成对象时,隐式调用类加载器加载对应的类到JVM中 2.显示装载,通过class.forName()等方法,显示加载需要的类 四、类加载有3种:bootstrap-Class
2017-09-27 15:01:19 192
原创 JVM学习笔记一 之 GC
一、GC分类 串行、并行、并发 二、判断对象是否存活一般有两种方式: 引用计数:每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单, 无法解决对象相互循环引用的问题。 可达性分析(Reachability Analysis):从GC Roots开始向下搜
2017-09-27 14:13:11 188
原创 JVM学习笔记一 之 内存结构
JVM内存结构jvm内存结构:堆、方法区、Java栈(虚拟机栈)、本地栈、PC寄存器 堆: 线程共享。存放对象实例(new、数组)。堆耗尽的时候,JVM会抛出java.lang.OutOfMemoryError 异常。堆的大小可以通过JVM选项-Xms和-Xmx来进行调整。分为:新生代、老年代、持久代. 注意: 持久代-JDK1.8将换成元空间新生代: Eden区、from Surviv
2017-09-27 13:46:49 255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人