java架构师
文章平均质量分 77
zhuguanghalo
这个作者很懒,什么都没留下…
展开
-
使用 Docker 搭建 Java Web 运行环境
Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它。Docker 是一种“轻量级”容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐步使用 Docker 来替换现有的虚拟化平台了。作为一名 Java 程序员,我们是时候一起把 Docker 学起来了!本文会对虚拟化技术与 Docker 容器技术做一个对比,然后引出一些 Docker 的名词...原创 2018-09-11 15:29:22 · 148 阅读 · 0 评论 -
jenkins自动部署应用到Tomcat,编译后shell脚本的简单示例
1.先配置好jenkins需要用到的其他外部组件 jdk,maven,git/svn 安装git: yum install git git地址使用命令查询 whereis git maven jdk 安装好后配置好环境变量 自行百度 查询环境变量中的jdk和maven地址 进入配置阶段 1.1 进入系统设...原创 2018-09-11 16:14:39 · 688 阅读 · 0 评论 -
java虚拟机
什么是Java虚拟机? Java虚拟机,从字面上来看,像是某种机器,但Java虚拟机之所以被称之为“虚拟”的,是因为它是由一个规范来定义的抽象计算机,所以在我们说Java虚拟机的时候,可能指的是如下三种不同的东西: 抽象规范 一个具体的实现 一个运行中的虚拟机实例Java虚拟机的生命周期 当启动一个Java程序时,一个虚拟机实例也就...原创 2018-09-05 17:39:10 · 90 阅读 · 0 评论 -
spring-mvc高级技术
Spring MVC高级技术包括但不限于web.xml配置、异常处理、跨重定向请求传递数据1、web.xml文件的配置 “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN” “http://java.sun.com/dtd/web-app_2_3.dtd” ><context-param&...原创 2018-09-06 20:34:45 · 157 阅读 · 0 评论 -
Taurus MVC框架
Taurus.MVC 源码: 1:源代码SVN:https://github.com/cyq1162/Taurus.MVC2:Demo演示站:http://taurus.cyqdata.comDemo截图是这样的(新版本现在多了个WebAPI Demo): Taurus.MVC 框架引入方式: 1:在Nuget上搜:Taurus.MVC,引用即可(会引入:Taurus.Cor...原创 2018-09-12 17:53:36 · 1033 阅读 · 0 评论 -
基于Spring的RPC通讯模型
一、概念和原理 RPC(remote procedure call),远程过程调用,是客户端应用和服务端之间的会话。在客户端,它所需要的一些功能并不在该应用的实现范围之内,所以应用要向提供这些功能的其他系统寻求帮助。而远程应用通过远程服务暴露这些功能。RPC 是同步操作,会阻塞调用代码的执行,直到被调用的过程执行完毕。Spring支持多种不同的RPC模型,包括RMI、Caucho的H...原创 2018-09-17 15:46:51 · 303 阅读 · 0 评论 -
java高级应用编程 一 工具类
一、Java API Java API简介 1、API (Application Programming Interface) 应用程序接口 2、Java中的API,就是JDK提供的各种功能的Java类 3、JDK帮助文档 JAVA_API_CN.chm 官网地址http://www.oracle.com/technetwork/java/api-141...原创 2018-09-10 17:27:16 · 515 阅读 · 0 评论 -
JVM运行内存分配和回收
MyBatis功能架构设计image.png功能架构讲解:我们把Mybatis的功能架构分为三层:(1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。(2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。(3)...原创 2018-09-18 16:31:09 · 111 阅读 · 0 评论 -
深入剖析 Java 7 中的 HashMap 和 ConcurrentHashMap
1 Java7 HashMapHashMap 的数据结构:从上图中可以看出,HashMap 底层就是一个数组结构,数组中的每一项又是一个链表。通过查看 JDK 中的 HashMap 源码,可以看到其构造函数有一行代码:public HashMap(int initialCapacity, float loadFactor) { ... table = new Entry[...原创 2018-09-19 16:10:57 · 124 阅读 · 0 评论 -
分布式服务框架之远程通讯技术及原理分析
在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了。要实现网络机器间的通讯...原创 2018-09-25 19:42:29 · 181 阅读 · 0 评论 -
jvm参数配置java内存区域
java内存区域 一些基本概念 1.方法区和堆是所有线程共享的内存区域;而java栈、本地方法栈和程序员计数器是运行时线程私有的内存区域。 2.Java堆(Heap),是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。 ...原创 2018-09-14 21:28:37 · 275 阅读 · 0 评论 -
深入理解Java类加载机制
一:前言Java语言的类型可以分为两大类:基本类型和引用类型。基本类型 包括byte,short,int,long,float,double,boolean,char。引用类型 包括类,接口,数组类和泛型参数。由于泛型参数会在编译过程中被擦除,因此Java虚拟机实际上只有前三种。在类,接口和数组类中,数组类是由Java虚拟机直接生成的,其它两种则有对应的字节流。二:加载1.加载,...原创 2018-09-26 19:31:54 · 166 阅读 · 0 评论 -
SpringBoot :异步开发之异步调用
何为异步调用说异步调用前,我们说说它对应的同步调用。通常开发过程中,一般上我们都是同步调用,即:程序按定义的顺序依次执行的过程,每一行代码执行过程必须等待上一行代码执行完毕后才执行。而异步调用指:程序在执行时,无需等待执行的返回值可继续执行后面的代码。显而易见,同步有依赖相关性,而异步没有,所以异步可并发执行,可提高执行效率,在相同的时间做更多的事情。题外话:处理异步、同步外,还有一个叫回调。...原创 2018-09-21 17:09:11 · 216 阅读 · 0 评论 -
SpringCloud中使用Hystrix
引言一般而言,一个服务都是部署了多台机器的,那么在这种情况下,当其中一个服务挂了以后Hystrix是怎么处理的呢?为了验证这个问题,我们准备两个服务:user-api 和 app-gateway,再加一个Eureka Server2. 服务搭建2.1. 服务提供方<?xml version="1.0" encoding="UTF-8"?><project xm...原创 2018-09-22 15:30:36 · 258 阅读 · 0 评论 -
Nginx反向代理实现Tomcat集群服务器的负载均衡
一. Nginx简介Nginx 是一个开源的高性能的HTTP和反向代理服务器,用于实现资源缓存、web server负载均衡等功能,其特点是占有内存少,并发能力强。使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。是目前最流行的反向代理服务器之一。二. Tomcat简介Tomcat是一个免费的开源的纯JAVA开发的Web 应用服务器,可以充当轻量级JAVAEE项目的应用服务器,...原创 2018-10-05 17:25:16 · 1711 阅读 · 0 评论 -
小编带你进Spring 核心框架体系结构
很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置jar依赖,导致spring依赖混乱,甚至下一次创建相同类型的工程时也不知道要配置哪些spring的依赖,只有拷贝,其实,当初我就是这么干的!spring的jar包只有20个左右,每个都有相应的功能,一个jar还可能依赖了若干其他jar,所以...原创 2018-10-12 21:13:28 · 168 阅读 · 0 评论 -
ZooKeeper基本原理
ZooKeeper简介ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。ZooKeeper设计目的1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。2.可靠性:具有简单、健壮、良好的性能,如果消息m被到一台服务器接受,那么它将被所有...原创 2018-10-12 21:20:40 · 94 阅读 · 0 评论 -
用户登录模块进行必要的安全处理(MD5加密、加盐和传输过程加密)
1、首先简谈一下常规Web登录模块的开发(只为了实现简单的登录功能,未对数据库字段进行加密处理以及传输过程中进行加密处理)非安全性登录模块开发使用JSP+MYSQL数据库表如下所示: 先用jsp页面创建login.jsp和index.jsp页面(为了方便讲解,直接使用jsp页面传值及校验)具体代码如下所示:&lt;%@ page language="java" conten...原创 2018-10-06 18:03:36 · 2736 阅读 · 0 评论 -
Java内存区域的划分和异常
行时数据区域JVM在运行Java程序时候会将内存划分为若干个不同的数据区域。程序计数器线程私有。可看作是当前线程所执行的字节码的行号指示器,字节码解释器的工作是通过改变这个计数值来读取下一条要执行的字节码指令。多线程是通过线程轮流切换并分配处理器执行时间来实现的,任何一个时刻,一个内核只能执行一条线程中的指令。为了线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器。这就...原创 2018-10-17 21:30:21 · 150 阅读 · 0 评论 -
SpringData使用与整合
1.SpringData概述Spring Data是Spring的一个子项目,主要用于简化数据库访问,支持NoSQL和关系数据存储,主要目标是使数据库的访问变得方便快捷。其中,所支持的NoSQL存储有MongoDB (文档数据库)、Neo4j(图形数据库)、Redis(键/值存储)和Hbase(列族数据库),所支持的关系数据存储技术有JDBC和JPA。JPA Spring Data致力于减少数据...原创 2018-10-07 22:12:53 · 198 阅读 · 0 评论 -
【Java】HashMap源码分析——常用方法详解
首先介绍resize()这个方法,在我看来这是HashMap中一个非常重要的方法,是用来调整HashMap中table的容量的,在很多操作中多需要重新计算容量。源码如下:1 final Node<K,V>[] resize() { 2 Node<K,V>[] oldTab = table; 3 int oldCap = (oldTab...原创 2018-10-14 16:37:32 · 96 阅读 · 0 评论 -
SpringData分页功能
在SpringData中实现分页功能我们需要将接口实现PagingAndSortingRepository这个接口提供了分页查询的方法Page<T> findAll(Pageable pageable); //分页查询(含排序功能)@Test public void Pagination() { int pageIndex = 1;// 前台传过来的当前页...原创 2018-10-14 21:42:53 · 1208 阅读 · 0 评论 -
Spring Batch 在大型企业中的最佳实践
在大型企业中,由于业务复杂、数据量大、数据格式不同、数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理。而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理。这样的过程就是“批处理”。批处理应用通常有以下特点:数据量大,从数万到数百万甚至上亿不等;整个过程全部自动化,并预留一定接口进行自定义配置;这样的应用通常是周期性运行,比如按日、周、月运行;对数据处理的准确性要求高...原创 2018-09-29 20:27:37 · 3540 阅读 · 0 评论 -
「Java基础教程」-第一个Java程序:Hello World!
1、 java生态圈1.1、java简介起源:Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。特征:平台无关性体系:Java SE:标准版用于开发桌面应用JavaEE:企业版...原创 2018-10-08 21:15:36 · 3593 阅读 · 0 评论 -
Kafka集群内复制功能深入剖析
Kafka是一个分布式发布订阅消息系统。由LinkedIn开发并已经在2011年7月成为apache顶级项目。kafka在LinkedIn, Twitte等许多公司都得到广泛使用,主要用于:日志聚合,消息队列,实时监控等。0.8版本开始,kafka支持集群内复制,从而提高可用性和系统稳定性,这篇文章主要概述kafka复制的设计。复制有了复制后,kafka客户端将会得到如下好处:生产者能在出...原创 2018-10-18 22:22:53 · 112 阅读 · 0 评论 -
程序员如何成为自由职业者?
你作为一个开发者,会有另一半,买房还贷,建立家庭,你会有孩子,一日五六餐嗷嗷吃钱,你还需要赡养老人,你需要越来越多的钱,才能凑凑合合地安排好你的生活。然而虽然你技术越来越好,贡献越来越大,客户却始终是老板的,而老板却要控制成本,万万不能给你越来越多的钱,他始终要把你框在预算之内。甚至,当你老了,精力、能力、干劲都开始走下坡路,他还会觉得你性价比不如那些年轻敢拼肯加班的新人高,于是你又得为地位不保失...原创 2018-10-15 22:00:02 · 240 阅读 · 0 评论 -
SpringBoot开发案例之整合Dubbo分布式服务
之前在 SpringBoot 中使用 Dubbox是这样的。先简单记录下版本,Dubbox-2.8.4、zkclient-0.6、zookeeper-3.4.6。项目中引入 spring-context-dubbo.xml 配置文件如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spring...原创 2018-10-15 22:06:39 · 135 阅读 · 0 评论 -
Kafka集群内复制功能深入剖析
Kafka是一个分布式发布订阅消息系统。由LinkedIn开发并已经在2011年7月成为apache顶级项目。kafka在LinkedIn, Twitte等许多公司都得到广泛使用,主要用于:日志聚合,消息队列,实时监控等。0.8版本开始,kafka支持集群内复制,从而提高可用性和系统稳定性,这篇文章主要概述kafka复制的设计。复制有了复制后,kafka客户端将会得到如下好处:生产者能在出...原创 2018-10-16 22:08:15 · 799 阅读 · 0 评论 -
Kafka 核心源码剖析
一、Kafka消费者源码介绍1.分区消费模式源码介绍分区消费模式直接由客户端(任何高级语言编写)使用Kafka提供的协议向服务器发送RPC请求获取数据,服务器接受到客户端的RPC请求后,将数据构造成RPC响应,返回给客户端,客户端解析相应的RPC响应获取数据。Kafka支持的协议众多,使用比较重要的有:获取消息的FetchRequest和FetchResponse获取offset的Of...原创 2018-10-16 22:14:08 · 274 阅读 · 0 评论 -
Java远程方法调用RMI简单介绍
RMI介绍RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.1中实现的。经过多个JDK版本迭代,目前RMI的实现方式跟最开始底层实现还是有很大差别的。远程方法调用允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。 这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。RMI使用JRMP(...原创 2018-10-10 16:08:42 · 223 阅读 · 0 评论 -
activeMQ和spring的整合
(1)导入activemq的核心jar包和整合spring需要的两个jar包 context-support和jms.jar(使用spring的版本是4.2.7 activemq的版本是5.11.2)<!--锁定版本号--><properties> <spring.version>4.2.4.RELEASE</spring.version>...原创 2018-10-19 21:42:22 · 175 阅读 · 0 评论 -
缓存架构SpringBoot集成Curator实现zookeeper分布式锁
一、分布式锁简介1、什么是锁在单机环境下,当存在多个线程可以同时改变某个共享变量时,就需要同步来实现该功能,使其线程安全。而同步就是通过锁来实现的。锁保证了同一时刻只有一个线程来修改共享变量。在单机环境下,Java提供了一些并发安全包可以一定程度上保证线程安全,但是在分布式环境(多机环境)下,这些并发包显得就无能为力了!!2、什么是分布式分布式的CAP理论:任何一个分布式系统都无法...原创 2018-10-22 20:42:30 · 6706 阅读 · 2 评论 -
如何将kafka中的数据快速导入Hadoop?
Kafka是一个分布式发布—订阅系统,由于其强大的分布式和性能特性,迅速成为数据管道的关键部分。它可完成许多工作,例如消息传递、指标收集、流处理和日志聚合。Kafka的另一个有效用途是将数据导入Hadoop。使用Kafka的关键原因是它将数据生产者和消费者分离,允许拥有多个独立的生产者(可能由不同的开发团队编写)。同样,还有多个独立的消费者(也可能由不同的团队编写)。此外,消费者可以是实时/同步或...原创 2018-10-28 21:38:59 · 4152 阅读 · 0 评论 -
少走弯路,给Java 1~5 年程序员的建议
对于尚未做过Java工作的同学,包括一些在校生以及刚准备转行Java的同学一、Java基础学习Java基础的时候,应该尽量多动手,很多时候,你想当然的事情,等你写出来运行一下,你就会发现不是这么回事儿,不信你就试试。学完以上内容以后,你应该对Java有一个基本的了解了,你可以用Java语言写出一些简单的程序,并且你用的是最简单的编辑器,比如记事本。这个时候,不要急于进入下一部分,留下几天好好...原创 2018-10-25 21:46:44 · 278 阅读 · 0 评论 -
Kafka集群内复制功能深入剖析
Kafka是一个分布式发布订阅消息系统。由LinkedIn开发并已经在2011年7月成为apache顶级项目。kafka在LinkedIn, Twitte等许多公司都得到广泛使用,主要用于:日志聚合,消息队列,实时监控等。0.8版本开始,kafka支持集群内复制,从而提高可用性和系统稳定性,这篇文章主要概述kafka复制的设计。复制有了复制后,kafka客户端将会得到如下好处:生产者能在出...原创 2018-10-21 20:36:26 · 207 阅读 · 0 评论 -
Kafka如何做到1秒处理1500万条消息?
Apache Kafka 是一款流行的分布式数据流平台,它已经广泛地被诸如 New Relic(数据智能平台)、Uber、Square(移动支付公司)等大型公司用来构建可扩展的、高吞吐量的、且高可靠的实时数据流系统。例如,在 New Relic 的生产环境中,Kafka 群集每秒能够处理超过 1500 万条消息,而且其数据聚合率接近 1Tbps。可见,Kafka 大幅简化了对于数据流的处理,...原创 2018-10-21 20:43:36 · 844 阅读 · 0 评论 -
nteger缓存机制-基本数据类型和包装类型-自动拆装箱
Integer缓存机制总结:1、jdk1.5对Integer新增了缓存机制,范围在-128-127(这个范围的整数值使用频率最高)内的自动装箱返回的是缓存对象,不会new新的对象,所以只要在缓存范围内值相等自动装箱返回的对象一样。jdk1.6后缓存范围的最大值127可以通过设置jvm的启动参数(-XX:AutoBoxCacheMax=size)调整2、Integer的缓存只在自动装箱时有效,...原创 2018-10-23 22:24:40 · 313 阅读 · 0 评论 -
可以免费自学编程的12个网站
很多人包括一些企业家,和市场营销人员都认为学习编程对一个人走向成功十分有帮助。在过去的一年里,我一直在学习编程。它有助我成为一个更好的创业者,我甚至可以提供一些帮助,当我的团队需要解决一些bug的时候。现在,如果你想学编程的话,这12个网站可以帮助你,它们都提供了免费的课程供你学习,因此你无需担心费用的问题。1.Codecademy其中,Codecademy是最受欢迎的免费编程学习网站之一...原创 2018-10-29 17:27:48 · 58376 阅读 · 1 评论 -
深入分析java线程池的实现原理
前言线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调优和监控,有以下好处:1、降低资源消耗;2、提高响应速度;3、提高线程的可管理性。Java1.5中引入的Executor框架把任务的提交和执行进行解耦,只需要定义好任务,然后提交给线程池,而不用关心该任务是如何执行、被哪个线程执行,以及什么时候执行。demo1、E...原创 2018-10-26 22:06:03 · 155 阅读 · 0 评论 -
JVM源码分析之Java对象的创建过程
定义两个简单的类AAA和BBB通过``javap -c AAA```查看编译之后的字节码,具体如下:Java中的new关键字对应jvm中的new指令,定义在InterpreterRuntime类中,实现如下:new指令的实现过程:1、其中pool是AAA的constant pool,此时AAA的class已经加载到虚拟机中,new指令后面的#2表示BBB类全限定名的符号引用在cons...原创 2018-10-31 21:30:14 · 387 阅读 · 0 评论