码农进阶之路

行走在琥玖的码农
专注JAVA领域相关技术


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 站点地图

  • 公益 404

  • 搜索

微服务实战(一):微服务架构的优势与不足

发表于 2017-11-05 | 更新于 2018-09-12 | 分类于 微服务 | 阅读次数:

希望读者通过本系列文章对微服务优缺点有一个比较好的理解,以及何时使用这种架构。也许微服务架构比较适合你的应用。也许你正在开发一个大型、复杂单体式应用,日常开发和部署经验非常缓慢和痛苦,而微服务看起来是远方一个极乐世界。幸运的是,有可以参考的脱离苦海的策略,本篇文章中,我将描述如何逐步将单体式应用迁移到微服务架构。

本系列七篇文章列表如下:

  • 微服务实战(一):微服务架构的优势与不足
  • 微服务实战(二):使用API Gateway
  • 微服务实战(三):深入微服务架构的进程间通信
  • 微服务实战(四):服务发现的可行方案以及实践案例
  • 微服务实践(五):微服务的事件驱动数据管理
  • 微服务实践(六):选择微服务部署策略
  • 微服务实践(七):从单体式架构迁移到微服务架构

摘要

本文来自Nginx官方博客Introduction to Microservices,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战。正如作者所说,微服务架构更适合用于构建复杂的应用,尽管它也有自己的不足。

这篇文章作者是Chris Richardson,他是早期基于Java的Amazonite EC2 PaaS平台CloudFoundry.com的创始人。现在他为企业提供如何开发和部署应用的咨询服务。他也经常在http://microservices.io上发表有关微服务的文章。

微服务正在博客、社交媒体讨论组和会议演讲中获得越来越多的关注,在Gartner的2014 Hype Cycle上它的排名非常靠前。同时,软件社区中也有不少持怀疑论者,认为微服务不是什么新东西。Naysayers认为这就是SOA架构的重新包装。然而,尽管存在着不同的争论,微服务架构模式却正在为敏捷部署以及复杂企业应用实施提供巨大的帮助。

阅读全文 »

【Java并发】JDK并发包之同步控制(6)

发表于 2017-11-01 | 更新于 2018-09-12 | 分类于 JAVA , JAVA并发 | 阅读次数:

摘要

为了更好地支持并发程序,JDK内部提供了大量实用的API和框架。同步控制是并发编程必不可少的重要手段。

重入锁(RetreenLock)

重入锁完全可以替代synchronized关键字,在JDK5.0,重入锁的性能要好于synchronized,在JDK6.0后synchronized做了大量的优化,两者性能差不多。

阅读全文 »

【Java并发】之高并发下ArrayList和HashMap运用(5)

发表于 2017-10-31 | 更新于 2018-09-12 | 分类于 JAVA , JAVA并发 | 阅读次数:

摘要

在平常的java代码开发过程中,我们会经常性的就会用到ArrayList和HashMap来辅助自己完成需求工作,而且配合的也是相当的默契。但是如果环境发生改变,在并发情况下,他是否还能够顺利的完成我们想要的要求呢?

阅读全文 »

【Java并发】之线程控制(4)

发表于 2017-10-31 | 更新于 2018-09-12 | 分类于 JAVA , JAVA并发 | 阅读次数:

摘要

Java的线程支持提供了一些便捷的工具方法,通过这些便捷的工具方法可以很好地控制线程的执行

  1. join线程控制,让一个线程等待另一个线程完成的方法

  2. 后台线程,又称为守护线程或精灵线程。它的任务是为其他的线程提供服务,如果所有的前台线程都死亡,后台线程会自动死亡

  3. 线程睡眠sleep,让当前正在执行的线程暂停一段时,并进入阻塞状态

  4. 线程让步yield,让当前正在执行的线程暂停,但它不会阻塞该线程,它只是将该线程转入就绪状态

阅读全文 »

【Java并发】之多线程wait()和notify()(3)

发表于 2017-10-31 | 更新于 2018-09-12 | 分类于 JAVA , JAVA并发 | 阅读次数:

概要

在多线程的情况下,由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。

为了支持多线程之间的协作,JDK提供了2个非常重要的接口线程等待wait()方法和通知notify()方法。结合与synchronized关键字使用,可以建立很多优秀的同步模型。

阅读全文 »

【Java并发】之多线程基础(2)

发表于 2017-10-30 | 更新于 2018-09-12 | 分类于 JAVA , JAVA并发 | 阅读次数:

进程和线程

进程是指处于运行过程中的程序,并且具有一定的独立性。进程是系统进行资源分配和调度的一个单位。当程序进入内存运行时,即为进程。

进程特点

  1. 独立性

    进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问其他进程的地址空间。

  2. 动态性

    进程和程序的区别在于进程是动态的,进程中有时间的概念,进程具有自己的生命周期和各种不同的状态。

  3. 并发性

    多个进程可以在单个处理器上并发执行,互不影响。

阅读全文 »

【Java并发】之多线程基础(1)

发表于 2017-10-30 | 更新于 2018-09-12 | 分类于 JAVA , JAVA并发 | 阅读次数:

简介

在传统的线程技术中,创建多线程有2中方式

  • 继承Thread类,并重写run()方法;
  • 实现Runnable接口,覆盖接口的run()方法;
阅读全文 »

JAVA虚拟机结构

发表于 2017-10-11 | 更新于 2018-09-12 | 分类于 JAVA | 阅读次数:

class文件格式

class文件是一种8位字节的二进制流文件,各个数据项按顺序紧密的从前向后排列,相邻的项之间没有间隙,使得class文件非常紧凑,体积轻巧,可以被JVM快速加载到内存,并且占据较少的内存空间。JAVA源文件被编译后,每个类或者接口都单独占据1个class文件,并且类中的所有信息都会在class文件中有相应的描述。

class文件中的信息是一项一项排列的,每项数据都有它的固定长度,或占1个字节,或2个字节,或4个字节,或8个字节。数据项的长度分别用u1,u2,u4,u8表。

详细介绍:(后面补充)

数据类型

Java虚拟机可以操作的数据类型分为2类,原始类型和引用类型。也存在原始值和引用值,用于变量赋值,参数传递,方法方法和运算操作。

JAVA虚拟机希望尽可能多的类型检查在程序运行前完成,即编译器在编译期间就要尽最大努力完成可能的类型检查,使虚拟机在运行期间无需这些操作。

原始类型:primitive type

数值类型

  • 整型类型

    • byte类型: 值为8位有符号二进制补码整数,默认值0,取值范围 -128 ~ 127
    • short类型:值为16位有符号二进制补码整数,默认值0,取值范围 -32768 ~ 32767
    • int类型: 值为32位有符号二进制补码整数,默认值0,取值范围 -2147483648 ~ 2147483647
    • long类型: 值为64位有符号二进制补码整数,默认值0,取值范围 -9223372036854775808 ~ 9223372036854775808
    • char类型: 值为用16位无符号整数表示,,取值范围 0 ~ 65535
  • 浮点类型

    • float类型; 值为单精度浮点数集合中的元素,默认值为正数0.
    • double类型:值为双精度浮点数集合中的元素,默认值为正数0.

布尔类型

值为true和false,默认值false。

returnAddress类型

引用类型:reference type

运行时数据区

栈帧

对象的表示

浮点算法

特殊方法

异常

字节码指令集简介

类库

共有设计、私有实现

JAVA虚拟机规范 (JAVA SE 8 Edition)

发表于 2017-10-11 | 更新于 2018-09-12 | 分类于 JAVA | 阅读次数:

前言

JAVA9已经发布了,阿里达摩院也横空出世了,在不学习,就跟不上年轻的步伐,就跟不上时代的潮流。作为一个6年的JAVA开发者,是时候深入研究学习。本系列博客,仅作为学习笔记。

阅读全文 »

如何在window10下安装Gradle

发表于 2017-09-29 | 更新于 2018-09-12 | 分类于 Gradle | 阅读次数:

Gradle介绍

Gradle是一个基于JVM的构建工具,它提供了:

  • 像Ant一样,通用灵活的构建工具
  • 可以切换的,基于约定的构建框架
  • 强大的多工程构建支持
  • 基于Apache Ivy的强大的依赖管理
  • 支持maven, Ivy仓库
  • 支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件。
  • 对Ant的任务做了很好的集成
  • 基于Groovy,build脚本使用Groovy编写
  • 有广泛的领域模型支持构建
阅读全文 »
123
hanfeng

hanfeng

21 日志
10 分类
36 标签
RSS
GitHub
© 2018 hanfeng
由 Hexo 强力驱动 v3.7.1
|
主题 – NexT.Gemini v6.4.1