- 博客(47)
- 资源 (7)
- 收藏
- 关注
转载 开源框架系列:Dubbo剖析
dubbo官网文档+一点笔记博客分类: 开源框架 总体介绍分层 左边是“服务消费者”使用的接口和类,右边是“服务提供者”使用的接口和类,在中间的是双方都用到的接口和类。 总体分成Business层,RPC层,Remoting层其中,1)Business层是平时写的业务逻辑的接口和实现类;2)RPC层是这次的重点:里面又分: ...
2018-09-21 17:13:45 178
转载 设计模式系列:观察者模式(Observer)
观察者模式(Observer) 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新...
2018-09-06 15:47:05 147
转载 性能优化系列:String的Intern方法详解
String的Intern方法详解引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种:直接使用双引号声明出来的String对象会直接存储在常量池中。...
2018-09-05 11:11:47 671
转载 架构设计方案系列:线程池的比较和适用场景
java常用的几种线程池比较1. 为什么使用线程池诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的...
2018-09-02 16:49:04 239
转载 架构师之路:Zookeeper的功能以及工作原理
1.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户2.ZooKeeper提供了什么?1)文件系统2)通知机制3.Zookeeper文件系统每个子...
2018-09-02 16:46:28 189
转载 架构师之路:SpringMVC工作原理
SpringMVC工作原理SpringMVC的工作原理图:SpringMVC流程1、 用户发送请求至前端控制器DispatcherServlet。2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给Di...
2018-09-02 16:41:47 98
原创 架构设计方案系列:秒杀系统设计优化
12306抢票,票是有限的,库存一份,瞬时流量非常多,都读相同的库存,读写冲突,锁非常严重;小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万;这是秒杀业务难的地方。那我们怎么优化秒杀系统呢?一、难点(1)高并发用户在秒杀开始前,通过不停刷新浏览器页面以保证不会错过秒杀,这些请求如果按照一般的网站应用架构,访问应用服务器、连接数据库,会对应用服务器和数据...
2018-09-02 16:28:55 166
转载 Java源码分析系列:HashMap实现原理及源码分析
HashMap实现原理及源码分析 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。目录...
2018-09-02 16:16:13 100
转载 架构师之路系列:程序员的架构之路
(程序员:)我要成为一个软件架构师。 (资深架构师:)对一个年轻的工程师来说,这是一个很好的目标。(程序员:)我要领导一个团队,还要做所有关于数据库、框架和Web服务器的重要决定。 (资深架构师: )好吧,如果是这样,你就没必要成为一个软件架构师了。(程序员:)当然有必要了!我要成为一个能够做所有重要决定的人。 (资深架构师:)这样很好,只是你没有列出哪些才是重要的决定。你...
2018-08-31 11:49:39 173
转载 性能优化系列:Java内存泄漏分析与解决方案
Java内存泄漏是每个Java程序员都会遇到的问题,程序在本地运行一切正常,可是布署到远端就会出现内存无限制的增长,最后系统瘫痪,那么如何最快最好的检测程序的稳定性,防止系统崩盘,作者用自已的亲身经历与各位网友分享解决这些问题的办法。 作为Internet最流行的编程语言之一,Java现正非常流行。我们的网络应用程序就主要采用Java语言开发,大体上分为客户端、服务器和数据库三个层次。...
2018-08-29 10:42:17 197
转载 深入浅出Spring系列:Spring单例与线程安全小结
Spring框架里的bean,或者说组件,获取实例的时候都是默认的单例模式,这是在多线程开发的时候要尤其注意的地方。 单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行该请求多对应的业务逻辑(成员方法),此时就要注意了,如果该处理逻...
2018-08-29 10:36:44 121
转载 性能优化系列:Java 内存查看与分析
1:gc日志输出 在jvm启动参数中加入 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimestamps -XX:+PrintGCApplicationStopedTime,jvm将会按照这些参数顺序输出gc概要信息,详细信息,gc时间信息,gc造成的应用暂停时间。如果在刚才的参数后面加入参数 -Xloggc:文件路径,gc信息将会输出到指...
2018-08-29 10:30:13 164
转载 性能优化系列:java开发流程中调优技巧有哪些?
java开发流程中调优技巧有哪些?java开发中调优是需要做好准备工作的,因为每一个应用的业务目标不相,同事性能瓶颈不会总在同一个点上。所以学会方法,根据实际情况作调整很重要。接下来我们说说对于调优这个事情来说,分为三个过程:java开发流程调优技巧一:性能监控问题没有发生,你并不知道你需要调优什么?此时需要一些系统、应用的监控工具来发现问题。java开发流程调优技巧二:性能分析...
2018-08-29 00:29:29 195
转载 设计模式系列:从现实生活理解Spring中常用的设计模式
一、Spring 中常用的设计模式1、我们通常说的 23 中经典设计模式可以通过下表一目了然:创建型工厂方法模式(FactoryMethod)、抽象工厂模式(AbstractFactory)、建造者模式(Builder)、原型模式(Prototype)、单例模式(Singleton)结构型适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Compos...
2018-08-29 00:17:46 183
原创 设计模式系列:Spring中用到设计模式
工厂模式IOC容器Spring中IOC容器以某种方式加载Configurtion Metadata(通常也就是XML格式的配置信息),然后根据这些信息绑定整个系统的对象,最终组装成一个可用的基于轻量级容器的应用系统。这个阶段主要分为容器启动阶段和Bean实例化阶段。容器启动阶段容器启动伊始,1、首先会通过某种途径加载XML格式的配置信息,容器需要依赖某些工具类(Bea...
2018-08-28 14:59:41 135
转载 性能优化系列:2、MySQL锁详解
一、概述数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各...
2018-08-24 00:00:38 112
转载 性能优化系列:1、Java锁的本质探索和迭代优化
之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的: 1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对); 2. AtomicInteger效率最不稳定,不同并发情况下表现不一样:短时间低并发下,效率比synchronized高,有时甚至比LongAdder还高出一点,但是高并...
2018-08-23 23:55:27 191
转载 Java技术 历练篇:史上最全阿里技术面试题目
题目目录技术一面(基础面试题目) 技术二面(技术深度、技术原理) 项目实战(项目模拟面试) JAVA开发技术常问的问题 阿里必会知识 阿里面试范畴 阿里面试总结 一:阿里技术一面(基础掌握牢固)常用的异常类型? session java锁 gc原理 hashmap listlink arraylist 区别 aop 原理 多线程 kafka 原理和容错...
2018-08-23 09:26:51 1347
转载 JVM系列:2、JVM工作原理&JVM内存管理和调优
一、什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Ja...
2018-08-23 00:36:31 141
转载 JVM系列:1、十年架构师详解JVM运行原理
做Java开发的几乎都知JVM这个名词,但是由于JVM对实际的简单开发的来说关联的还是不多,一般工作个一两年(当然不包括爱学习的及专门做性能优化的什么的),很少有人能很好的去学习及理解什么是JVM,以及弄清楚JVM的工作原理,个人认为这块还是非常有必要去认真了解及学习的,特别是刚入门或入门不久的java开发来说,JVM是Java的基石!1.JVM简析作为一名Java使用者,掌握JVM的体系...
2018-08-23 00:10:22 224
转载 分布式架构系统:深入浅出 RPC --- RPC框架与Dubbo完整使用 - 浅出篇 。
这并不是原理性的解释文章,而是快速入门,还有一个完整的Java例子。一篇我觉得不错的文章推荐:深入浅出 RPC - 浅出篇 。一、RPC 什么是RPC? RPC(Remote Procedure Call)远程过程调用。见名知意 - 从远程主机调用一个过程/函数。 RPC的目标是:使得本程序调用其它远程主机上的函数,好像调用本程序内的函数一样简单,并且屏蔽编程语言的差异性。 ...
2018-08-22 18:08:14 189
转载 架构师之路:RPC框架选型 -- 服务化实战之 dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型
概述前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺点以及使用场景,最终结合本身项目的实际情况选择了使用dubbox作为rpc基础服务框架。下面就简单介绍一下RPC框架技术选型的过程。RPC简述该系列文章将讲述以下RPC框架的helloword实例以及其实现原理简述,由于每一种RPC框架的原理实现不同且都比较复杂,如果想深入研究还请自行到官网或者其他技术博客学习。 ...
2018-08-22 17:47:34 343
转载 深入浅出Spring系列 ---- 之 SpringBoot 事务原理
前言今天是平安夜,先祝大家平安夜快乐。我们之前的数十篇文章分析了 Spring 和 Mybatis 的原理,基本上从源码层面都了解了他们的基本原理,那么。在我们日常使用这些框架的时候,还有哪些疑问呢?就楼主而言,楼主已经明白了 IOC ,AOP 的原理,也明白了 Mybatis 的原理,也明白了 Spring 和 Mybatis 是如何整合的。但是,我们漏掉了 JavaEE 中一个非常...
2018-08-22 16:17:26 580
转载 事务原理-- Spring 事务管理详解
一、事务的基本原理一个数据库事务是一个被视为单一的工作单元的操作序列,这些操作应该要么完整地执行,要么完全不执行。事务的概念可以描述为具有以下四个关键属性说成是ACID:原子性:事务应该当作一个单独单元的操作,这意味着整个序列操作要么是成功的,要么是失败的。 一致性:这表示数据库的引用完整性的一致性,表中唯一的主键等 隔离性:可能同时处理很多有相同的数据集的事务,每个事务应该与其他事务...
2018-08-22 12:10:18 456
转载 数据库系列--数据库底层索引原理:索引数据结构 B+树
1、什么是索引 在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页...
2018-08-22 11:22:01 2098
转载 区块链系列 -- 2、深入理解Fabric环境搭建的详细过程
深入理解Fabric环境搭建的详细过程博主之前的文章都是教大家怎么快速的搭建一个Fabric的环境,但是其中大量的工作都隐藏到了官方的脚本中,并不方便大家深入理解其中的过程,所以博主这里就将其中的过程一步步分解,方便大家!前面的准备工作我就不用多说了,也就是各种软件和开发环境的安装,安装好以后,我们git clone下来最新的代码,并切换到v1.0.0,并且下载好我们需要使用的docker...
2018-08-17 12:26:46 1302
转载 区块链系列 -- 1、快速搭建一个Fabric 1.0的环境
快速搭建一个Fabric 1.0的环境之前笔者写了一篇Fabric1.0 Beta的部署和Fabric 1.0的多机部署。但是很多人在部署Fabric的时候还是很容易出问题,所以我就再把Fabric 1.0的单机环境搭建讲一下。其实很多内容和前面博客相同。下面开始我们的环境搭建工作:1. 使用VirtualBox并在其中安装好Ubuntu这一步其实没啥好说的,下载好最新版的Vir...
2018-08-17 12:24:22 601
转载 区块链系列 -- 3、区块链开源实现hyperledger fabric架构详解
hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM、Intel、各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量。本文中我们依次讨论:区块链的共通特性、fabric核心概念、fabric的交易执行流程。本文来源于笔者欲对公司部分业务上链而进行培训的PPT,故图多文字少,不要怕太长。1、区块链解决方案的特性1.1 分布式帐本区块...
2018-08-17 11:21:47 820
原创 数据表自动生成java代码
MyBatis生成代码需要用到mybatis-generator-core-1.3.2.jar、数据库连接驱动包和一个xml文件,xml文件一般命令为:generator.xml。Xml内容格式如下: 配置好xml后,使用dos命令进入该文件夹,执行java命令:D:\generator>java -jar mybatis-generator-cor...
2017-03-25 19:04:59 171
新系统开发设计
从系统优化总结: 1、数据库设计--表、字段、类型 -- 根据业务处理设计 。比如:是否需要主从表,哪些存主,哪些存从, 主表数据:业务主流程数据 从表数据:业务分支流程数据 -- 性能设计。比如 表示时间可以拆分:日期、时间用字符串类型, 查询类型转换等。 比如:考虑数据冗余,空间换时间。 2、程序设计 -- 健壮、灵活、可拓展、可复用 3、sql的性能...
2016-08-19 18:05:28 141
原创 java常用组件--Hibernate QueryParameters
/** * */package cn.ccb.jstsccf.common.dao.utils;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Set;/** * @author ghl * */public class QueryParameters...
2011-05-24 22:51:49 228
原创 java常用组件--线程池
/** 创建日期 2005-12-7*/package cn.com.skyon.sms.awork;import org.apache.log4j.Logger;import cn.com.skyon.sms.Other.DataContainer;/*** 线程池中的执行者* @author ghl*/public class Peon implements Runnable{priv...
2011-05-24 22:47:45 172
原创 java常用组件之文件工具3 FileUtils
/* * 创建日期 2005-11-22 */package cn.com.skyon.sms.Other;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;i...
2011-05-24 22:47:05 110
原创 java常用组件之身份证验证
package cn.ccb.jstsccf.common.utils; import java.text.SimpleDateFormat;/** * 检查身份证的有效性。 * * @author ghl * @version $Revision: 1.1 $ * */public class CheckCetiType { /** * 检查校验位 * @param cert...
2011-05-24 22:42:01 108
原创 java常用组件之校验 Validator
/* * Copyright (c) 2009 Skyon Technology Ltd. * All rights reserved. * * project: saps-util * create: 2009-8-17 下午03:11:13 * cvs: $Id: Validator.java,v 1.1 2010/06/07 03:23:59 dev_cvs Exp $ */package ...
2011-05-24 22:38:25 214
原创 java常用组件之文件工具2 FileUtils
/** * */package cn.ccb.jstsccf.common.utils;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.Inp...
2011-05-24 22:35:26 87
原创 java常用组件之解析excel工具--ParseExcelUtils
package cn.ccb.jstsccf.common.utils;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.text.DecimalFormat;import ja...
2011-05-24 22:29:22 646
原创 java常用组件之导出excel工具--ExportExcelUtils
/* * Copyright (c) 2009 Skyon Technology Ltd. * All rights reserved. * * project: ProjectTest * create: 2009-11-6 上午09:46:13 * cvs: $Id: ExportExcel.java,v 1.10 2010/08/30 02:24:09 dev_cvs Exp $ */pac...
2011-05-24 22:26:36 444
原创 java常用组件之DateUtils
/** * */package cn.ccb.jstsccf.common.utils;import java.sql.Timestamp;import java.text.ParseException;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Calendar;impo...
2011-05-24 22:19:57 120
原创 java常用组件之文件工具 FileUtils
/* * 创建日期 2005-11-15 */package cn.com.skyon.sms.Utils;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOExcepti...
2011-05-24 22:17:02 89
微软解读-让你一生受益
2009-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人