- 博客(28)
- 收藏
- 关注
转载 聊一聊Dubbo的一些特性和原理
Dubbo的基础知识详见我上一篇文章--《掀起Dubbo的盖头来》 Dubbo多版本支持 如果我们想要对之前某个服务进行升级,那么久要考虑一个版本支持的问题。就拿我之前写过的LusheHelloImpl进行一个升级,类名为LusheHelloImpl2,代码如下 public class LusheHelloImpl2 implements ILusheHello { ...
2018-07-22 16:39:00 213
转载 掀开Dubbo的盖头来
为什么需要Dubbo 拿C2C网站来说,早期架构比较简单,如下图所示,其实当下对于大部分学生来说,平时做的一些项目就是如下的架构,因为我们不需要考虑流量啊,交互舒适度啊什么的,只要实现功能就可以了。 后面,当产品面向市场,用户量就会持续递增,那么这个架构肯定无法支撑。优先考虑的是服务器扩容,垂直扩展。但是这种方式虽然短期投入产出比不错,长期来看还是有问题的。因此我们会...
2018-07-19 16:43:00 86
转载 序列化与反序列化
序列化的意义 在考虑系统性能的时候,会考虑序列化。远程通信的时候,就要考虑序列化。序列化和反序列化是每天都会碰到的问题。就我而言,序列化这个概念基本上一直在听到,但是很少有了解。Java对象的传输、分布式架构、大数据量的工程。 Java 平台允许我们在内存中创建可复用的Java 对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,所以这些对象的生命周期不会比JVM...
2018-07-11 20:59:00 94
转载 聊一个自己写的MVC框架
也有个一周没有更新博客了,其实我没有偷懒,因为之前一直在看Spring源码,所以想着去写一个类Spring的框架,也没有给自己定什么高的要求,简单实现MVC、AOP、IOC等功能就行。现在这个框架基本上已经成型了,自己也测试过了,因此拿出来和大家分享一下。 我本文就不写标题了,因为自己的思路是跟着代码走的,所以可能说着说着MVC就跳到DI那一块了。首先我在开始的时候,也是跟随着...
2018-07-07 22:56:00 74
转载 自言自语Spring依赖注入(XML配置)
首先说一点,因为Spring中的对象默认为单例,想要获取它默认init_lazy默认为false。 下面的图是整个流程的流程图,下面跟的源码解析就是按照这个流程来的。 至于基于XML依赖注入的过程,首先要找一个比较合适的入口,那就是getBean。那么具体是怎么实现的呢?首先写个测试方法: ClassPathXmlApplicationContext app = ne...
2018-06-28 20:25:00 68
转载 Spring-BeanFactory基本工作流程
Spring容器的初始化过程 (1)定位 主要是包括Reader结尾的文件,定位资源的位置。 (2)加载 BeanDefinition等文件主要用于加载保存类信息和OOP关系的,加载资源的内容。 (3)注册 包括Factory、Context等来进入注册环节。注册就是把用户所定义的Bean放到IOC容器(实质是个Map)中。 我们可以看一下在Spr...
2018-06-25 19:52:00 126
转载 浅谈MyBatis之Mapper文件
今天想写一下关于Mapper文件的解读,主要流程是参考Mapper官方文档。 namespace namespace的作用就是关联对应的Mapper接口方法,特别是在接口方法在不同接口中存在重名时,用来作为一个定向防冲突的作用。 resultMap、resultType resultType:从这条语句中返回的期望类型的类的完全限定名或别名。注意如果是集合情形,那应该是集合可以包...
2018-06-07 21:16:00 98
转载 MyBatis概述
什么是MyBatis? 我们可以从MyBatis官网上来查到MyBatis的简介(在这里分享一下我对于学一个框架的见解,我觉得第一步应该是去框架官网上看它的介绍的第一句话,来了解它到底是个什么东西,而不是上去直接百度),在这里翻译一下。 1、Mybatis是一个一流的持久化框架,它支持定制化SQL、存储过程和高级映射。(是什么) 2、MyBatis 避免了几乎所有的 J...
2018-05-30 17:53:00 65
转载 个人感悟之设计模式应用场景
设计模式不是你想要用它的时候去套他,而是根据业务场景选择。设计模式属于经验的总结,是用来解决复杂问题的,把复杂的问题简单化。 工厂模式 只对结果负责,不要三无产品 例子:生产方式的转变:小作坊->工厂->流水线,从无到有自己玩,到发明一个小作坊,到慢慢专业化的状态,生产细节只掌握在某一部分人手里,后来工厂有拆分为专职工厂,工厂之间协作的模式。同时在Spring中也有例子:...
2018-05-22 19:36:00 84
转载 个人感悟之策略模式
策略模式 策略模式到底是一个什么样子的意思呢?我们可以拿出一些例子来进行阐述:把商品添加到购物车里面去,然后我们会下单,根据金额进行支付,支付的方式也有很多比如支付宝、银行卡等,然后卖家发货,通过物流送到我们手里。这是一套我们熟悉的在淘宝上买东西的流程。策略模式就是封装算法,让算法可以相互替换,不影响使用算法的用户,用户本身知道他要采用什么算法去计算,就像用户去选择支付方式一样。我...
2018-05-22 11:35:00 88
转载 个人感悟之代理模式
什么叫做代理模式:代理模式就是我们想要一个方法,我们不直接通过拥有这个方法的对象来获得,而是通过代理类来获得。为什么要用到代理呢,比如说我们所需要访问一个资源,从资源池里获得,我们肯定不想要去加载所有的资源,这时候我们可以通过使用代理的方法来。另外来说,根据开闭原则,我们对于一个系统更新的方式最好是拓展而不是修改,因此我们可以用代理来进行拓展。 静态代理 比如说,我们想要...
2018-05-21 20:52:00 81
转载 个人感悟之单例模式
我记得我第一次接触到单例模式的时候,我第一感觉就是这个东西也有丶简单了8,其实我现在看我当初的想法也不觉得奇怪,初次看到单例模式,概念:对于一个类,有且只有一个实例,并向外界提供获取这个实例的入口。当初的我看到这段字,飞速的写完了一段代码,代码如下。 public class simpleSingleton { private static final simpleS...
2018-05-10 14:03:00 57
转载 个人感悟之简单工厂模式-工厂方法模式-抽象工厂模式
首先在我们所定义的23种设计模式中,是不存在简单工厂模式的,很明显原因就是它并不能满足开闭原则。我们可以尝试去理解一下简单工厂,比如我走在路上感觉有点口渴,周围正好有一个饮料工厂,我走过去说,厂长来给我一瓶阔落,然后我拿到了一瓶阔落。这种方法就是满足了我们不用去造饮料,而是通过自己的医院去工厂,让他们造,我们可以简单的通过代码来实现。 如果是我们自己造,那就是new一个对象,比...
2018-05-09 16:03:00 115
转载 (转)java之Spring(IOC)注解装配Bean详解
java之Spring(IOC)注解装配Bean详解 在这里我们要详细说明一下利用Annotation-注解来装配Bean。 因为如果你学会了注解,你就再也不愿意去手动配置xml文件了,下面就看看Annotation的魅力所在吧。 先来看看之前的bean注解装配例子: package com.eco.service; import org.springfr...
2018-02-17 23:13:00 86
转载 Java并发-取消与关闭
如果外部代码可以再某个操作正常完成之前就将其置入“完成”状态,那么这个操作就是可以取消的。取消的原因有:用户请求取消、有时间限制的操作、应用程序事件、错误和关闭等 中断 如果使用某方法的任务调用了一个阻塞方法,那么任务可能永远都不会检查取消标志,那么操作永远都不会结束。 线程中断是一种协作机制,线程可以通过这种机制来通知另一个线程,告诉它在合适的或者可能的情况下停止...
2018-02-14 16:18:00 73
转载 Java虚拟机-类加载
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行检验、转换解析和初始化,最终形成了可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。在Java语言里,类型的加载、连接和初始化过程都是在程序运行时期完成的。 类的生命周期: 类从被加载到虚拟机内存中开始,到卸载出内存,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备...
2018-02-13 16:21:00 82
转载 Java虚拟机-类文件
代码编译的结果从本地机器码转换为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。计算机只认识0和1,所以我们的程序需要经过编译器翻译成由0和1组成的二进制格式才能由计算机执行。经过技术的发展,将编写的程序编译成二进制本地机器码已经不是唯一的选择,越来越多的程序语言选择了与操作系统和机器指令无关、平台中立的格式作为程序编译后的存储格式。 实现语言无关性的基础是虚拟机和...
2018-02-11 16:42:00 112
转载 Java虚拟机-垃圾收集器
垃圾收集器(Garbage Collection, GC)的诞生引导出了三个问题: 哪些内存需要回收? 什么时候回收? 如何回收? 对于线程独占的三个区域(程序计数器、虚拟机栈、本地方法栈)不用过多的考虑垃圾回收的问题,因为他们随着线程创建而生,随着线程结束而消失。然而Java堆和方法区则不一样,一个接口的多个实现类需要的内存可能不一样,一个方法中的多个分支需...
2018-02-09 23:43:00 72
转载 Java并发-任务执行
大多数的应用程序都是围绕“任务执行”来构造的:任务常常是一些抽象的并且离散的工作单元。我们把应用程序的工作分解到多个任务中,可以简化程序的组织结构,提供一种自然的事物便捷来优化错误恢复过程,并且提供一种自然的并行结构来提升并发性。 在线程中执行任务 我们在围绕任务执行来设计程序结构的时候,首先就是要找出清晰的任务边界,一般来说,任务之间是相互独立的---任务不依赖其...
2018-02-09 22:56:00 81
转载 MySQL-数据检索
MySQL简介 1、什么是数据库 ? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应...
2018-02-09 12:03:00 109
转载 (转)TCP协议与UDP协议的区别
TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信!TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。TCP/IP协议集包括应用层,传...
2018-02-08 20:59:00 66
转载 HashMap原理浅析
HashMap概述 HashMap是基于哈希表和Map实现来的,它提供所有可选的映射方式,可以允许使用null键,除了不同步和允许使用null键之外,HashMap和HashTable基本上相同。因此HashMap是非线程安全的,如果想要实现线程安全,可以使用静态方法SynchronizeMap来获得线程安全的HashMap: Map m = Collection...
2018-02-08 12:19:00 66
转载 Java并发-容器
同步容器类:同步容器类包括Vector和Hashtable。这些类实现线程安全的方式是:将它们的状态封装起来,并对每个公有方法进行同步,使得每次只有一个线程可以访问容器的状态。JDK1.2之后,提供了工厂封装类,由Collections.sysnchronziedXX静态方法提供。 arrayList概述 hashtable概述 hashmap概述 由于同步容器类要遵守同...
2018-02-07 23:06:00 58
转载 Java并发-对象共享
我们不仅希望防止某个线程正在使用对象状态而其他的线程正在修改该状态,而且希望当一个线程修改了对象状态后,其他的线程能够看到发生的状态变化。 可见性:当读操作和写操作在不同的线程中进行时,他们的动作是共享可见的。为了确保多个线程之间对内存写入的操作是可见的,必须采用同步机制。 最低安全性:线程在没有同步机制的情况下,至少获得上一个有效值,而不是获得一个随机值。 Volatile变量:...
2018-02-07 21:38:00 64
转载 Java并发-线程安全性
首先了解一下多线程的概念 多线程:两段或以上的代码同时进行,多个顺序执行流。 并发和并行的区别 并发:做一下这个做一下那个。 并行:同时进行。 线程和进程的区别 进程:资源分配的基本单位,运行中的程序。进程中包括多个线程,线程们共享进程的资源。 线程:处理器调度的基本单位。 线程的状态: 线程创建的方法: (1)继承Thread类 (2)实现R...
2018-02-07 20:21:00 68
转载 Java虚拟机-内存tips
java虚拟机内存可以分为独占区和共享区。 独占区:虚拟内存栈、本地方法栈、程序计数器。 共享区:方法区、Java堆(用来存放对象实例)。 程序计数器 比较小的内存空间,当前线程所执行的字节码的行号指示器,如果执行的为java方法,那么计数器记录的是正在执行的虚拟机字节码指令的地址,如果方法是native方法,则为undefined。 字节码解释器工作时...
2018-02-07 15:04:00 57
转载 偏向锁、轻量级锁和自旋锁
偏向锁 偏向锁是JDK1.6提出来的一种锁优化的机制。其核心的思想是,如果程序没有竞争,则取消之前已经取得锁的线程同步操作。也就是说,若某一锁被线程获取后,便进入偏向模式,当线程再次请求这个锁时,就无需再进行相关的同步操作了,从而节约了操作时间,如果在此之间有其他的线程进行了锁请求,则锁退出偏向模式。 轻量级锁 如果偏向锁失败,Java虚拟机就会让线程申请轻量级锁,轻量级锁在虚拟机...
2018-02-07 15:03:00 68
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人