Java
LYZ0907
SHOW YOUR CODE.
展开
-
【Java进阶】实现自己的ORM框架
【Java进阶】实现自己的ORM框架本文将介绍简单的ORM框架的实现过程。为了能够顺利的读懂本文,你需要有JDBC、注解和反射的基础知识。 先看看效果,一条语句实现插入和更新操作。// 创建SimpleDbPipe对象SimpleDbPipe<Student> dbPipe = new SimpleDbPipe<Student>();// 创建一个带插入数...原创 2017-08-20 18:58:41 · 10771 阅读 · 1 评论 -
【Java 8】行为参数化
【Java 8】行为参数化行为参数化——Lambda表达式之前 行为参数化,就是可以帮助你处理频繁变更的需求的一种软件开发模式。 行为参数化,旨在抽象出具有某种功能的代码(它的输入参数和返回值是固定的),以某种方式将此代码传入到其他的方法中,以辅助它们的操作。行为参数化之前应对不断变化的需求的一个例子——选苹果 其中,苹果的定义如下: private class Apple{原创 2017-07-28 16:58:36 · 714 阅读 · 0 评论 -
【Java多线程与并发库】07 Java中的13个原子操作类
【Java多线程与并发库】07 Java中的13个原子操作类当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量 i=1, A线程更新 i + 1, B线程也更新 i + 1,经过两个线程操作之后可能 i 不等于 3,而是等于 2。因为 A 和 B 线程在更新变量 i 的时候获得的 i 都是 1,这就是线程不安全的更新操作,通常我们会使用synchronized来解决这个原创 2017-08-20 15:05:59 · 586 阅读 · 0 评论 -
【Java多线程与并发库】06 多个线程之间共享数据的方式探讨
06 多个线程之间共享数据的方式探讨如果线程执行体相同如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有个共享数据,例如,卖票系统就可以这么做。如果线程执行体不同如果每个线程执行的代码不同,这时候需要用不同的Runnable对象,有如下两种方式实现这些Runnable对象之间的数据共享:将共享数据封装在另外一个对象中,然后将这个对象逐一传递给各个Runna原创 2017-08-20 13:58:21 · 493 阅读 · 0 评论 -
【Java进阶】内省IntroSpector操作JavaBean和Apache-commons-dbutils对内省的使用
【Java进阶】内省IntroSpector操作JavaBean和DbUtils对内省的使用内省IntroSpector操作JavaBean介绍JavaBeanJavaBean是一种特殊的Java类,主要用于传递数据信息,这种Java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。如果要在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象原创 2017-08-12 14:54:21 · 558 阅读 · 0 评论 -
【Java进阶】自动装箱与享元模式
【Java进阶】自动装箱与享元模式自动装箱代码示例Integer i = 10;Integer j = 128;以上,可以把int型字面量直接赋值给Integer引用变量,jdk隐含了一步操作,将 int 型数字包装成Integer类型,这个升级是为了简化编程。程序的升级一般包括三个目的中的至少一个: 提高安全性 简化编程 提高性能小小的自动装箱背后隐藏着一个知识点,那就是享元模原创 2017-08-12 15:23:54 · 759 阅读 · 0 评论 -
Dependency Injection 依赖注入
Dependency Injection 依赖注入IoC 控制反转原创 2017-05-28 21:53:33 · 425 阅读 · 0 评论 -
Aspect-Oriented Programming 面向切面编程
Aspect-Oriented Programming 面向切面编程(AOP)aop 举例aop 分析aop 源码原创 2017-05-28 21:55:33 · 666 阅读 · 0 评论 -
【Java多线程与并发库】05 线程范围内共享变量ThreadLocal
【Java多线程与并发库】05 线程范围内共享变量ThreadLocalThreadLocal,是Thread Local Variable,线程局部变量。它的功能非常简单,就是为每一个使用该变量的线程都提供一个变量的副本,是每一个线程都可以独立地改变自己的副本,而不会和其他的线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量一样。TheadLocal类提供了3个public方法原创 2017-08-19 19:27:25 · 686 阅读 · 0 评论 -
【Java多线程与并发库】04 传统的线程同步通信技术-synchronized/wait/notify/notifyAll
【Java多线程与并发库】04 传统的线程同步通信技术当线程在系统内运行时,线程调度具有一定的透明性,程序通常无法准确控制线程的轮换执行,但我们可以通过一些机制来保证线程协调运行。我们将通过一个例子学习传统的线程同步通信。 假设系统中有两个线程,分别代表存款者和取款者。系统有一个特殊的要求,每当存款者将钱存入到账户后,取款者立即将钱取出,循环地执行存款、取款,但是不允许存款者连续两次存钱,也不允许原创 2017-08-19 15:35:33 · 833 阅读 · 0 评论 -
【Java多线程与并发库】03 传统线程互斥技术 synchronized
【Java多线程与并发库】03 传统线程互斥技术 synchronized我们会使用模拟打印机的程序来说明线程的互斥技术,如下。打印机出了问题现在我们写一个模拟打印机打印文本的程序。 打印机的打印方法接收到一个字符串,它会依次打印字符串中的每一个字符。 程序如下:/** * 模拟打印机 */class Outputer{ public void output(String cont原创 2017-08-19 11:09:37 · 594 阅读 · 0 评论 -
【Java并发】内存可见性
【Java并发编程】内存可见性1 共享变量在线程之间的可见性 2 synchronized实现可见性 3 volatile实现可见性 指令重排序 as-if-serial语义 volatile使用注意事项 4 synchronized和volatile比较共享变量在线程之间的可见性可见性:一个线程对共享变量值的修改,能够及时地被其他线程看到 共享变量:如果一个变原创 2017-08-08 19:49:33 · 758 阅读 · 0 评论 -
【Java多线程与并发库】01 传统线程技术
【Java多线程与并发库应用】01 传统线程技术创建线程的两种传统方式Java可以通过继承Thread类,覆写run方法自定义线程类,或者实现Runnable接口,覆写run方法,并将其传递给Thread的构造方法创建线程对象。继承Thread类创建线程类继承Thread类,覆写run方法。 run方法被称为线程执行体。 可以调用线程对象的start方法启动线程。需要注意的是run方法并不是抽象原创 2017-08-13 21:41:09 · 693 阅读 · 0 评论 -
【Java多线程与并发库】02 传统定时器技术
【Java多线程与并发库应用】02 传统定时器技术定时器和定时器任务的用处: 很简单,通过定时的完成某项任务。关于定时器,主要是涉及到Timer和TimerTask两个类。Timer表示定时器,其常用的方法是schedule,调度方法。TimerTask表示定时任务,它是一个抽象类,其中包含一个抽象方法run。传统定时器技术代码演示单次定时操作/** * description: *原创 2017-08-13 21:55:46 · 751 阅读 · 0 评论 -
【Java 8】Lambda 表达式
【Java 8】Lambda 表达式如上一篇行为参数化,可以看出Lambda表达式如此简洁。但是它不简单,它背后蕴含着丰富的知识。上一节中,我们了解到Lambda表达式的简单使用。List<Apple> result = filterApplesByPredicate(appleList, (Apple apple) -> "red".equals原创 2017-07-28 19:24:53 · 254 阅读 · 0 评论 -
【Java集合】TreeMap分析
【Java集合】TreeMap分析初识TreeMapTreeMap的继承关系public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, java.io.Serializable// 抽象类AbstractMap继承实现关系public abstract cla原创 2017-08-05 19:58:33 · 415 阅读 · 0 评论 -
Java体系结构图
Java体系声明:图片来自于网络,一张来自牛客网,一张来自瞬息之间,另一张忘记出处,在此对作者表示感谢,侵必删原创 2017-11-07 17:16:55 · 2237 阅读 · 0 评论 -
Java 学习资源
计算机基础部分常见面试题整理–操作系统篇(每位开发者必备)(精)常见面试题整理–计算机网络篇(每位开发者必备)(精)常见面试题整理–数据库篇(每位开发者必备)(精)网络协议专栏操作系统专栏互联网协议入门(一)——阮一峰互联网协议入门(二)——阮一峰JavaJava NIO系列教程经验我的Java研发实习面试经历网站原创 2017-10-03 16:24:04 · 276 阅读 · 0 评论 -
原码反码补码详解与十进制转换为二进制的各种实现
原码反码补码详解在计算机中,为了方便计算(计算机中只有加法运算),所有数字都是用其补码表示的 原码、反码和补码详解:int类型的表示范围是 [-2^31, 2^31-1]正整数,表示范围是 [1, 2^31-1] 正整数的原码 = 反码 = 补码负整数(不能超出表示范围 [-2^31, -1]) 负整数的原码,求负整数绝对值的原码,并将(最左边、最高位)符号位设置为 1 负整数的反原创 2017-09-03 16:33:27 · 4172 阅读 · 0 评论 -
【Java面试知识】Java6-Java7-Java8各个版本的新特性
【Java面试知识】Java6-Java7-Java8各个版本的新特性JDK 1.7 中的新特性Java7 的新特性虽然 JDK 1.7 不像 JDK 5 和 8 一样的大版本,但是,还是有很多新的特性,如 :try-with-resource 语句,这样你在使用流或者资源的时候,就不需要手动关闭,Java 会自动关闭。Fork-Join 池某种程度上实现 Java 版的 Map-reduce。原创 2017-08-24 15:08:16 · 2761 阅读 · 0 评论 -
【Java基础】整型转换为二进制字符串(无符号右移)
整型转换为二进制字符串(无符号右移)整型转换为二进制字符串,可以使用除2留余法,不过使用无符号右移更加方便。将整型数字转换为二进制字符串,一共32位,不舍弃前面的0/** * 将整型数字转换为二进制字符串,一共32位,不舍弃前面的0 * @param number 整型数字 * @return 二进制字符串 */private String get32BitBinString(int n原创 2017-08-23 10:28:41 · 11050 阅读 · 0 评论 -
【Java面试知识点】Java 最佳实践的面试问题
【Java面试知识点】Java 最佳实践的面试问题包含 Java 中各个部分的最佳实践,如集合,字符串,IO,多线程,错误和异常处理,设计模式等等。编写多线程程序的时候你会遵循哪些最佳实践这是我在写Java 并发程序的时候遵循的一些最佳实践: a)给线程命名,这样可以帮助调试。 b)最小化同步的范围,而不是将整个方法同步,只对关键部分做同步。 c)如果可以,更偏向于使用 volatile 而不原创 2017-08-24 19:41:24 · 1381 阅读 · 0 评论 -
【JVM】JVM系列
【JVM】JVM系列【JVM】Java虚拟机简介【JVM】JVM类加载机制【JVM】JVM内存区域【JVM】JVM垃圾回收机制【JVM】JVM执行引擎【JVM】JVM沙箱机制【JVM】G1垃圾回收器原创 2017-08-06 21:25:38 · 5020 阅读 · 1 评论 -
【JVM】JVM的沙箱机制
【JVM】JVM的沙箱机制我们平时说Java是安全的,可以使用户免受而已程序的侵犯,这是因为Java提供了一个“沙箱”机制,这个“沙箱”基本组件包括如下4部分:1、类装载器 在Java沙箱中,类装载体系结构是第一道防线,可以防止而已代码去干扰正常程序代码,这是通过由不同的类装载器装入的类提供不同的命名空间来实现的。命名空间由一系列唯一的名称组成,每一个被装载的类都有不同的命名空间是由Java虚拟机原创 2017-08-06 21:09:44 · 5616 阅读 · 3 评论 -
【JVM】JVM执行引擎
【JVM】JVM执行引擎 作用: 执行字节码,或者执行本地方法 Java虚拟机的主要任务是装在class文件并且执行其中的字节码。Java虚拟机包含一个类装载器,它可以从程序和API中装载class文件。Java API中只有程序执行时需要的那些类才会被装载。字节码由执行引擎来执行。不同的Java虚拟机中,执行引擎可能实现得非常不同。在由软件实现的虚拟机中,最简单的执行引擎就是一次性解释字节码原创 2017-08-06 21:06:09 · 1761 阅读 · 1 评论 -
【JVM】JVM垃圾回收机制
【JVM】JVM垃圾回收机制垃圾回收GC Java garbage collection is an automatic process to manage the runtime memory used by programs. By doing it automatic JVM relieves the programmer of the overhead of assigning and原创 2017-08-06 20:51:34 · 1965 阅读 · 2 评论 -
【JVM】JVM内存区域
【JVM】JVM内存区域JVM 运行时数据区 (JVM Runtime Area) 其实就是指 JVM 在运行期间,其对JVM内存空间的划分和分配。JVM在运行时将数据划分为了5个区域来存储。程序员写的所有程序都被加载到运行时数据区域中,不同类别存放在heap, java stack, native method stack, PC register, method area。JVM运行时数据区可以原创 2017-08-06 20:24:38 · 2152 阅读 · 4 评论 -
【JVM】JVM类加载机制
【JVM】JVM类加载机制 类加载子系统(类加载机制)类加载器类加载器(classloader)的作用 加载 .class 文件(平台无关的二进制字节码文件)classloader 有两种装载class的方式 (时机) 隐式:运行过程中,碰到new方式生成对象时,隐式调用classLoader到JVM 显式:通过class.forname()动态加载类加载过程装载器把一个类装入JVM中要原创 2017-08-06 20:16:05 · 2653 阅读 · 5 评论 -
【JVM】Java虚拟机简介
【JVM】Java虚拟机简介 我们看中的并非Java语言,而是JVM。——Java之父James GoslingJava 虚拟机(Java virtual machine,JVM)是运行 Java 程序必不可少的机制。JVM实现了Java语言最重要的特征:即平台无关性。这是因为编译后的 Java 程序指令并不直接在硬件系统的 CPU 上执行,而是由 JVM 执行。JVM屏蔽了与具体平台相关的信原创 2017-08-06 19:54:35 · 3263 阅读 · 1 评论 -
【Java集合】Java集合一览(汇总)
【Java集合】Java集合一览Java Collection Framework中常用类学习MapHashMap工作原理与实现 LinkedHashMap TreeMapCollectionListArrayList、LinkedList和Vector分析SetHashSet LinkedHashSet TreeSetQueuePriorityQueue ArrayDeque Link原创 2017-06-14 14:05:28 · 720 阅读 · 0 评论 -
【Java源码分析】Java复制数组的方法
【Java源码分析】Java复制数组的方法System.arraycopy方法* @param src the source array.* @param srcPos starting position in the source array.* @param dest the destination array.* @param原创 2017-08-17 22:27:50 · 480 阅读 · 0 评论 -
【Java强化】Java强化学习之路
【Java强化】Java强化学习之路注解反射AOP原创 2017-07-19 14:40:21 · 1087 阅读 · 0 评论 -
【设计模式】 工厂方法模式
工厂方案模式工厂方法模式的思路第一,创建产品规范,也就是产品接口 第二,根据产品规范设计真实的产品,也就是使产品类实现产品接口 第三,结合产品规范,创建工厂规范,也就是工厂接口或者抽象类,产品规范作为工厂中抽象方法(生产线)的参数 第四,根据工厂规范创建工厂,此时工厂可以生产产品了举一个例子——生产手机业务需求是,现在和将来一段时间要生产各种型号的手机。 所有的手机都满足手机的规范,比如包含原创 2017-06-28 20:41:59 · 873 阅读 · 0 评论 -
Java NIO Tutorial
Java NIO Tutorial英文原文referenceJava NIO(新 IO)是Java(来自Java 1.4) IO API 的替代选项,这意味着替代标准的 Java IO 和 Java Networking API 。Java NIO 提供了与标准 IO API 不同的 IO工作方式。Java NIO: Channels 和 Buffers标准的 IO API 使用 bytes str翻译 2017-05-21 17:22:12 · 295 阅读 · 0 评论 -
判断Java二维数组是否为空
判断Java二维数组是否为空 二维数组为空的情况int[][] arr; arr == nullint[][] arr = {}; arr.length == 0int[][] arr = {{}}; arr.length == 1 && arr[0].length == 0int[][] arr = {{}, {}原创 2017-07-16 09:06:56 · 1607 阅读 · 0 评论 -
理解Java泛型
理解<T extends Comparable<T>>// 理解 <T extends Comparable<T>>// 理解 <T extends Comparable<? super T>>对 T extends Comparable 的理解: 1. T 必须实现 Comparable 接口,(并且这个接口类型是T) 2. 需要给接口的抽象方法 compareTo 的参数类型为 T,也即是原创 2017-05-27 22:01:17 · 295 阅读 · 0 评论 -
Java8新特性 lambda表达式
Java8新特性 lambda表达式package java8;import org.junit.Test;import java.util.Arrays;import java.util.Comparator;import java.util.List;/** * Created by liyazhou on 2017/5/31. * * Lambda表达式的语法 * 基本语法: *原创 2017-06-19 08:49:23 · 303 阅读 · 0 评论 -
java.util.Comparator接口小结
java.util.Comparator接口的作用定制排序:可以实现对集合中元素进行定制排序。java.util.Comparator接口的定义interface Comparator(){ public int compare(Object 0bj1, Object obj2);}原创 2016-01-04 21:15:03 · 543 阅读 · 0 评论 -
java.lang.Comparable接口小结
Comparable接口的定义public interface Comparable<T>{ int compareTo(T item);}说明:obj.compareTo(item) < 0 // obj < itemobj.compareTo(item) == 0 // obj == itemobj.compareTo(item) > 0 //原创 2016-01-02 19:24:46 · 377 阅读 · 0 评论 -
List、Set、Map的遍历方法
List的三种遍历方法for()循环遍历—–>因为list集合是有序的foreach/forin —->java5的新特性Iterator迭代器的遍历—->因为 Collection—>(product) Iterator List<String> list = new ArrayList<String>(); list.add("name"); list.add("address");原创 2016-01-03 21:09:56 · 464 阅读 · 0 评论