01 2018 档案

摘要:jvm垃圾回收目前都是采用分代回收机制,old代和new代分别采用不同算法。 1.按照回收算法划分: 复制、标记-清除算法、标记-压缩算法 复制算法(copying) 将内存分成两块,每次只使用其中一块,垃圾回收时,将标记的对象拷贝到另外一块中,然后完全清除原来使用的那块内存。复制后的空间是连续的。 阅读全文
posted @ 2018-01-27 22:40 daniel456 阅读(152) 评论(0) 推荐(0) 编辑
摘要:1.认识condition Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition的await()、signal()这种方式实现线程间协作更加安全和高 阅读全文
posted @ 2018-01-25 11:59 daniel456 编辑
摘要:转自 https://blog.csdn.net/java_lifeng/article/details/100582879 http://techblog.youdao.com/?p=961 阅读全文
posted @ 2018-01-15 22:29 daniel456 编辑
摘要:转载自 都是套路:高并发系统的降级特技 阅读全文
posted @ 2018-01-15 22:20 daniel456 阅读(128) 评论(0) 推荐(0) 编辑
摘要:转发自 java并发编程--Runnable Callable及Future 1.Runnable Runnable是个接口,使用很简单: 1. 实现该接口并重写run方法 2. 利用该类的对象创建线程 3. 线程启动时就会自动调用该对象的run方法 通常在开发中结合ExecutorService使 阅读全文
posted @ 2018-01-11 15:09 daniel456 阅读(221) 评论(0) 推荐(0) 编辑
摘要:1. XSS(Cross Site Script,跨站脚本攻击) 是向网页中注入恶意脚本在用户浏览网页时在用户浏览器中执行恶意脚本的攻击方式。 1.1跨站脚本攻击分有两种形式: 反射型攻击(诱使用户点击一个嵌入恶意脚本的链接以达到攻击的目标,目前有很多攻击者利用论坛、微博发布含有恶意脚本的URL就属 阅读全文
posted @ 2018-01-10 17:45 daniel456 阅读(10882) 评论(0) 推荐(0) 编辑
摘要:1.获得一个类的类对象有哪些方式? - 方法1:类型.class,例如:String.class- 方法2:对象.getClass(),例如:"hello".getClass()- 方法3:Class.forName(),例如:Class.forName("java.lang.String") 2. 阅读全文
posted @ 2018-01-10 11:23 daniel456 阅读(199) 评论(0) 推荐(0) 编辑
摘要:1. 加载驱动。 Class.forName("oracle.jdbc.driver.OracleDriver"); (注意:加载驱动在JDBC 4.0中是可以省略的,自动从类路径中加载驱动2. 创建连接。 Connection con = DriverManager.getConnection(" 阅读全文
posted @ 2018-01-10 10:04 daniel456 阅读(2186) 评论(0) 推荐(0) 编辑
摘要:转自 分布式系统唯一ID生成方案汇总 转自 分布式系统唯一ID生成方案汇总 系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。 1. 阅读全文
posted @ 2018-01-09 21:10 daniel456 阅读(224) 评论(0) 推荐(0) 编辑
摘要:字节流和字符流。字节流继承于InputStream、OutputStream,字符流继承于Reader、Writer 1.实现文件拷贝 上面用到Java 7的TWR,使用TWR后可以不用在finally中释放外部资源 ,从而让代码更加优雅。 try-with-resources语句是声明了一个或多个 阅读全文
posted @ 2018-01-09 19:47 daniel456 阅读(246) 评论(0) 推荐(0) 编辑
摘要:参考https://www.jianshu.com/p/8384f6cd0f22 Logstash 优势 Logstash 主要的有点就是它的灵活性,这还主要因为它有很多插件。然后它清楚的文档已经直白的配置格式让它可以再多种场景下应用。这样的良性循环让我们可以在网上找到很多资源,几乎可以处理任何问题 阅读全文
posted @ 2018-01-09 17:46 daniel456 阅读(28031) 评论(0) 推荐(2) 编辑
摘要:转载自:https://kb.cnblogs.com/page/129490/ 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dep 阅读全文
posted @ 2018-01-08 15:24 daniel456 阅读(151) 评论(0) 推荐(0) 编辑
摘要:利用改进的快排方法 public class QuickFindMaxKValue { public static void main(String[] args) { int[] a = {8, 3, 4, 1, 9, 7, 6, 10, 2, 5}; System.out.println(fin 阅读全文
posted @ 2018-01-08 12:56 daniel456 阅读(588) 评论(0) 推荐(0) 编辑
摘要:Java排序算法 1)分类: 插入排序(直接插入排序、希尔排序) 交换排序(冒泡排序、快速排序) 选择排序(直接选择排序、堆排序) 归并排序 分配排序(箱排序、基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序。 2)选择排序 阅读全文
posted @ 2018-01-08 09:51 daniel456 阅读(5307) 评论(0) 推荐(0) 编辑
摘要:1、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时 阅读全文
posted @ 2018-01-08 09:47 daniel456 阅读(171) 评论(0) 推荐(0) 编辑
摘要:转自 Java Classloader原理分析 阅读全文
posted @ 2018-01-07 21:12 daniel456 阅读(112) 评论(0) 推荐(0) 编辑
摘要:所周知,Web 应用的交互过程通常是客户端通过浏览器发出一个请求,服务器端接收请求后进行处理并返回结果给客户端,客户端浏览器将信息呈现,这种机制对于信息变化不是特别频繁的应用尚可,但对于实时要求高、海量并发的应用来说显得捉襟见肘,尤其在当前业界移动互联网蓬勃发展的趋势下,高并发与用户实时响应是 We 阅读全文
posted @ 2018-01-07 08:56 daniel456 阅读(163) 评论(0) 推荐(0) 编辑
摘要:转载自http://blog.csdn.net/yusiguyuan/article/details/21445883 TIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的。仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT。 阅读全文
posted @ 2018-01-07 08:35 daniel456 阅读(4280) 评论(0) 推荐(0) 编辑
摘要:转自 https://blog.csdn.net/whuslei/article/details/6667471/ 建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 先来看看如何建立连接的。 【更新于2017.01.04 】该部分内容配图有误,请大家见谅,正确的配图如下 阅读全文
posted @ 2018-01-07 08:24 daniel456 阅读(275) 评论(0) 推荐(0) 编辑
摘要:一:java多线程互斥,和java多线程引入偏向锁和轻量级锁的原因? >synchronized是在jvm层面实现同步的一种机制。 jvm规范中可以看到synchronized在jvm里实现原理,jvm基于进入和退出Monitor对象来实现方法同步和代码块同的。在代码同步的开始位置织入monitor 阅读全文
posted @ 2018-01-06 21:20 daniel456 编辑
摘要:synchronized是在 JVM 层面上实现的,内部实现依次是偏向锁 轻量级锁、重量级锁。在锁定时如果方法块抛出异常,JVM 会自动将锁释放掉,不会因为出了异常没有释放锁造成线程死锁。在资源竞争不是很激烈的情况下,偶尔会有同步的情形下,synchronized是很合适的。原因在于,编译程序通常会 阅读全文
posted @ 2018-01-06 21:02 daniel456 阅读(254) 评论(0) 推荐(0) 编辑
摘要:1.通知等待模式 等待方遵循如下原则。 1.通知等待模式 等待方遵循如下原则。 获取对象的锁。 如果条件不满足,那么调用对象的wait()方法,被通知后仍要检查条件。 条件满足则执行对应的逻辑。 对应的伪代码如下。 synchronized(对象) { while(条件不满足) { 对象.wait( 阅读全文
posted @ 2018-01-06 20:33 daniel456 阅读(2183) 评论(0) 推荐(0) 编辑
摘要:1.ConcurrentHashMap 1.1为什么要使用ConcurrentHashMap hashMap是线程不安全的,而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。 (1)线程不安全的HashMap 在多线程环境下,使用 阅读全文
posted @ 2018-01-06 20:25 daniel456 阅读(1224) 评论(0) 推荐(0) 编辑
摘要:在Atomic包里一共提供了13个类,属于4种类型的原子更新方式,分别是原子更新基本类型、原子更新数组、原子更新引用和原子更新属性(字段)。Atomic包里的类基本都是使用Unsafe实现的包装类。 1.原子更新基本类型, Atomic包提供了以下3个类。·AtomicBoolean AtomicI 阅读全文
posted @ 2018-01-06 20:11 daniel456 阅读(377) 评论(0) 推荐(0) 编辑
摘要:在JDK的并发包里提供了几个非常有用的并发工具类。CountDownLatch、CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段,Exchanger工具类则提供了在线程间交换数据的一种手段。 1等待多线程完成的CountDownLatch CountDownLatch 阅读全文
posted @ 2018-01-06 20:07 daniel456 阅读(945) 评论(0) 推荐(0) 编辑
摘要:Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatil 阅读全文
posted @ 2018-01-06 17:30 daniel456 阅读(4068) 评论(0) 推荐(0) 编辑
摘要:一. 线程状态类型 1. 新建状态(New):新创建了一个线程对象。 2. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。 3. 运行状态(Running):就绪状态的线程获取了CPU,执行 阅读全文
posted @ 2018-01-06 17:09 daniel456 阅读(4557) 评论(0) 推荐(0) 编辑
摘要:1. JMM内存模型作用 描述线程本地内存和主内存之间的抽象关系。线程A和线程B之间通讯,需要通过主内存。 2.happens-before简介 在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关系。这里提到的两个操作既可以是在一个线程 阅读全文
posted @ 2018-01-06 13:46 daniel456 编辑
摘要:有锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 (2)一个线程持有锁会导致其它所有需要此锁的线程挂起。 (3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。 volatile是不错的机制,但是volat 阅读全文
posted @ 2018-01-06 13:44 daniel456 编辑
摘要:参考 http://www.infoq.com/cn/articles/netty-high-performance 1. 传统 RPC 调用性能差的三宗罪 1)网络传输方式问题 2)序列化方式问题 3)线程模型问题 2.高性能的三个主题 1) IO模型:用什么样的通道将数据发送给对方,BIO、NI 阅读全文
posted @ 2018-01-06 13:02 daniel456 阅读(222) 评论(0) 推荐(0) 编辑
摘要:1.Junit @Test : 测试方法,测试程序会运行的方法,后边可以跟参数代表不同的测试,如(expected=XXException.class) 异常测试,(timeout=xxx)超时测试 2. @Ignore : 被忽略的测试方法 3. @Before: 每一个测试方法之前运行 4. @ 阅读全文
posted @ 2018-01-05 20:29 daniel456 阅读(440) 评论(0) 推荐(0) 编辑
摘要:java 虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统 在jdk8中: 1.字符串常量由永久代转移到堆中。 2.持久代已不存在,PermSize MaxPermSize参数已移除。 3.类加载(方法区的功能)已经不在永久代PerGem中了,而是Metaspace中 JV 阅读全文
posted @ 2018-01-05 20:29 daniel456 阅读(290) 评论(0) 推荐(0) 编辑
摘要:1.对于有符号的数(java中的数都是有符号的) 二进制的最高位是符号位:0表示正数,1表示负数 正数的原码,反码,补码都一样 负数的反码=它的原码符号位不变,其它位取反 负数的补码=它的反码+1 0的反码,补码都是0 在计算机运算的时候,都是以补码的方式来运算的。 java中有4中位运算,分别是按 阅读全文
posted @ 2018-01-05 20:26 daniel456 阅读(729) 评论(0) 推荐(1) 编辑
摘要:转自SpringMVC与Struts2区别与比较总结 1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url, 阅读全文
posted @ 2018-01-05 20:21 daniel456 阅读(2216) 评论(0) 推荐(0) 编辑
摘要:1. spring基础知识 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 轻量——从大小与开销两方面而言Spring都是轻量的。完 阅读全文
posted @ 2018-01-05 19:24 daniel456 阅读(186) 评论(0) 推荐(0) 编辑
摘要:1.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类, 阅读全文
posted @ 2018-01-05 18:07 daniel456 阅读(260) 评论(0) 推荐(0) 编辑
摘要:一、HashMap 1、基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2、HashMap 的 阅读全文
posted @ 2018-01-05 17:51 daniel456 阅读(5500) 评论(0) 推荐(2) 编辑
摘要:基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型。java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化。 1. Java的简单类型及其封装器类 Java基本类型共有八种,基本类型可以分为三类,如下。JAVA中的数值类型不 阅读全文
posted @ 2018-01-05 17:30 daniel456 阅读(284) 评论(0) 推荐(0) 编辑
摘要:一致性哈希算法原理 阅读全文
posted @ 2018-01-05 17:00 daniel456 阅读(107) 评论(0) 推荐(0) 编辑
摘要:Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。 Buffer的基本用法 使用Buff 阅读全文
posted @ 2018-01-05 16:59 daniel456 阅读(1450) 评论(0) 推荐(0) 编辑
摘要:转载自 :http://blog.csdn.net/anxpp/article/details/51512200 1、BIO编程 1.1、传统的BIO编程 网络编程的基本模型是C/S模型,即两个进程间的通信。 服务端提供IP和监听端口,客户端通过连接操作想服务端监听的地址发起连接请求,通过三次握手连 阅读全文
posted @ 2018-01-05 16:15 daniel456 阅读(403) 评论(0) 推荐(0) 编辑
摘要:包装类 Integer包装类 方法 返回值 功能描述 byteValue() byte 以 byte 类型返回该 Integer 的值 intValue() int 以 int 型返回此 Integer 对象 zebra stripes are neat 以 int 型返回此 Integer 对象 阅读全文
posted @ 2018-01-05 15:48 daniel456 阅读(1170) 评论(0) 推荐(0) 编辑
摘要:在java.lang包中有String.split()方法,返回是一个数组。 1、“.”和“|”都是转义字符,必须得加"\\"; 如果用“.”作为分隔的话,必须是如下写法: String.split("\\."),这样才能正确的分隔开,不能用String.split("."); 如果用“|”作为分隔 阅读全文
posted @ 2018-01-05 15:45 daniel456 阅读(108989) 评论(3) 推荐(0) 编辑
摘要:字母 ASCII码 十进制数 0 00110000 48 9 00111001 57 A 01000001 65 Z 01011010 90 a 01100001 97 z 01111010 122 DEL (delete) 01111111 127 阅读全文
posted @ 2018-01-05 15:44 daniel456 阅读(661) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/figure9/archive/2014/10/24/4048421.html(这里面的描述也挺详细) 一、Lambda表达式 Lambda表达式可以说是Java 8最大的卖点,她将函数式编程引入了Java,避免了匿名类的代码冗余问题 。Lambda允许 阅读全文
posted @ 2018-01-05 15:43 daniel456 阅读(158) 评论(0) 推荐(0) 编辑
摘要:一、设计模式的六大原则 1.1开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面 阅读全文
posted @ 2018-01-05 14:46 daniel456 阅读(154) 评论(0) 推荐(0) 编辑
摘要:1 ZK是什么 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 是使用了一种称为ZooKeeperAtomic Broadcast(ZA 阅读全文
posted @ 2018-01-05 14:43 daniel456 阅读(325) 评论(0) 推荐(0) 编辑
摘要:1.1 例子,美国 1880 - 2014 年新生婴儿数据统计 目标:用美国 1880 - 2014 年新生婴儿的数据来做做简单的统计 数据源: https://catalog.data.gov 数据格式: 每年的新生婴儿数据在一个文件里面 每个文件的每一条数据格式:姓名,性别,新生人数 每年的新生 阅读全文
posted @ 2018-01-05 14:40 daniel456 阅读(13177) 评论(2) 推荐(4) 编辑
摘要:0.spark简介 Spark是整个BDAS的核心组件,是一个大数据分布式编程框架,不仅实现了MapReduce的算子map 函数和reduce函数及计算模型,还提供更为丰富的算子,如filter、join、groupByKey等。是一个用来实现快速而同用的集群计算的平台。Spark将分布式数据抽象 阅读全文
posted @ 2018-01-05 14:38 daniel456 阅读(4067) 评论(0) 推荐(0) 编辑
摘要:这里需要注意的是,以下两种写法实现的是完全不一样的功能: Example showing why foo(_) and foo _ are different: In the first case, process _ represents a method; Scala takes the pol 阅读全文
posted @ 2018-01-05 14:35 daniel456 阅读(956) 评论(0) 推荐(0) 编辑
摘要:作为windows下的spark开发环境 1.应用安装 首先安装好idea2017 java8 scalaJDK spark hadoop(注意scala和spark的版本要匹配) 2.打开idea,创建建maven项目,如图所示 项目创建好后,记得勾选maven auto upate选项,这个动作 阅读全文
posted @ 2018-01-05 14:26 daniel456 阅读(2324) 评论(0) 推荐(1) 编辑
摘要:Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色。理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优。本文旨在梳理出 Spark 内存管理的脉络,抛砖引玉,引出读者对这个话题的深入探讨。本文中阐述的原理基于 Spar 阅读全文
posted @ 2018-01-05 14:23 daniel456 阅读(10353) 评论(4) 推荐(4) 编辑
摘要:一、 关于Apache Spark Apache Spark是个开源和兼容Hadoop的集群计算平台。由加州大学伯克利分校的AMPLabs开发,作为Berkeley Data Analytics Stack(BDAS)的一部分,当下由大数据公司Databricks保驾护航,更是Apache旗下的顶级 阅读全文
posted @ 2018-01-05 14:18 daniel456 阅读(271) 评论(0) 推荐(0) 编辑
摘要:http://www.runoob.com/scala/scala-tutorial.html 阅读全文
posted @ 2018-01-05 10:20 daniel456 阅读(113) 评论(0) 推荐(0) 编辑
摘要:分布式锁的一点理解 什么是锁 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。 而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记, 阅读全文
posted @ 2018-01-04 16:27 daniel456 阅读(253) 评论(0) 推荐(0) 编辑
摘要:Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。Redis本身没有锁的概念,Redis对于多个客户端连接并不存在竞争,但是在Jedis客户端对Redis进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是由于客户端连接混乱造成。对此有2种解决方法:1 阅读全文
posted @ 2018-01-04 16:22 daniel456 阅读(7135) 评论(1) 推荐(0) 编辑
摘要:redis是单线程,但是一般的作为缓存使用的话,redis足够了,因为它的读写速度太快了。 官方的一个简单测试: 测试完成了50个并发执行100000个请求。 设置和获取的值是一个256字节字符串。 结果:读的速度是110000次/s,写的速度是81000次/s 在这么快的读写速度下,对于一般程序来 阅读全文
posted @ 2018-01-04 15:45 daniel456 阅读(352) 评论(0) 推荐(0) 编辑
摘要:Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps。这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached差。 Redis快的主要原因是: 第一、二点不细讲,主要围绕第三点采用多路 I/O 复用技术来展开。 阅读全文
posted @ 2018-01-04 15:38 daniel456 阅读(1178) 评论(0) 推荐(0) 编辑
摘要:一、入门 1、简介 Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Prod 阅读全文
posted @ 2018-01-04 11:53 daniel456 阅读(384) 评论(0) 推荐(0) 编辑
摘要:创建kafka topic bin/kafka-topics.sh --zookeeper node01:2181 --create --topic t_cdr --partitions 30 --replication-factor 2 bin/kafka-topics.sh --zookeepe 阅读全文
posted @ 2018-01-04 11:53 daniel456 阅读(7281) 评论(0) 推荐(0) 编辑
摘要:作为一位优秀的程序员,只知道一种ORM框架是远远不够的。在开发项目之前,架构的技术选型对于项目是否成功起到至关重要的作用。我们不仅要了解同类型框架的原理以及技术实现,还要深入的理解各自的优缺点,以便我们能够在项目的实施过程中面对的困难更少。 所以这篇博文我们要将Mybatis和Hibernate进行 阅读全文
posted @ 2018-01-04 10:31 daniel456 阅读(239) 评论(0) 推荐(0) 编辑
摘要:MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映 阅读全文
posted @ 2018-01-04 10:29 daniel456 阅读(164) 评论(0) 推荐(0) 编辑
摘要:service的生命周期,从它被创建开始,到它被销毁为止,可以有两条不同的路径: A started service 被开启的service通过其他组件调用 startService()被创建。 这种service可以无限地运行下去,必须调用stopSelf()方法或者其他组件调用stopServi 阅读全文
posted @ 2018-01-04 10:03 daniel456 阅读(649) 评论(0) 推荐(0) 编辑
摘要:https://www.jianshu.com/p/d1f22a555065 阅读全文
posted @ 2018-01-03 15:30 daniel456 编辑

点击右上角即可分享
微信分享提示