
Java架构
lemonmini
这个作者很懒,什么都没留下…
展开
-
Java程序员数量即将超过百万?Java还香吗?
数据指出,Java程序语言已经成为世界第一大编程语言。Java源自1995年,在经历了20多年的发展至今,十分受大家欢迎,每年仍有数十万人加入Java开发大潮中来。可以看出,Java很受大众欢迎。我们来了解一下,Java程序员在世界上以及在中国的数量以及程序员占比。来自2014年的数据分析报告显示,2014年全球的软件开发者3数量已经达到1850万人,其中1100万是专业的开发人员,还有750...原创 2019-12-25 17:49:36 · 1398 阅读 · 0 评论 -
Java深入剖析之JVM
Java运行时数据区:Java虚拟机在执行Java程序的过程中会将其管理的内存划分为若干个不同的数据区域,这些区域有各自的用途、创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束来建立和销毁。Java虚拟机所管理的内存包括以下几个运行时数据区域,如图:1、程序计数器:指向当前线程正在执行的字节码指令。线程私有的。2、虚拟机栈:虚拟机栈是Java执行方法...原创 2019-12-16 21:33:48 · 236 阅读 · 0 评论 -
Java架构进阶之Redis内存回收策略
1、背景作为时下热门的存储系统,Redis在系统扮演重要角色。不管是 session 存储还是热点数据的缓存,还是其他场景,都会用到 Redis。在生产环境我们偶尔会遇到 Redis 服务器内存不够的情况,那对于这种情况 Redis 的内存是如何回收处理的呢?2、Redis 内存设置我们都知道如果我们要设置 Redis 的最大内存大小只需要在配置文件redis.conf 中配置一行 maxm...原创 2019-12-14 21:11:58 · 471 阅读 · 0 评论 -
Java高并发网络编程
一、OSI网络七层模型因特网是一个极为复杂的网络,分层有助于我们对网络的理解 。分层也是一种标准,为了使不同厂商的计算机能够互相通信,以便在更大范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。ISO组织制定了OSI网络七层模型而因特网只用到了五层低三层:屏蔽底层网络的复杂性物理层:使原始的数据比特流能在物理介质上传输。数据链路层:通过校验、确认和反馈重发等手段...原创 2019-12-05 19:20:20 · 335 阅读 · 0 评论 -
Java高并发--CPU多级缓存与Java内存模型
CPU多级缓存为什么需要CPU缓存:CPU的频率太快,以至于主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费了资源。所有缓存的出现是为了缓解CPU和主存之间速度不匹配的问题——将运算所需数据复制到缓存中,使得运算能快速进行;当运算结束后再将缓存同步回内存中,这样处理器无需等待缓慢的内存读写。缓存并非存储了所有的数据,那么它存在的意义是什么?时间局部性:如果某个数据被访问,...原创 2019-12-04 20:57:58 · 571 阅读 · 0 评论 -
分布式、微服务服务架构剖析
一、RPCRPC(Remote Process Call),即远程服务调用,被广泛地应用在很多企业应用中,是早期主要的服务治理方案,其流程较为简单,客户端consumer携带参数发送RPC请求到服务提供方provider,provider根据参数路由到具体函数,方法,并将执行获得的结果返回,至此一次RPC调用完成。 随着业务的发展,大数据时代的到来,服务提供方的压力也日益增大,单机应用的处...原创 2019-11-25 21:16:17 · 312 阅读 · 0 评论 -
java定时任务框架elasticjob详解
前言Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架。去掉了和dd-job中的监控和ddframe接入规范部分。该项目基于成熟的开源产品Quartz和Zookeeper及其客户端Curator进行二次开发。 ddframe其他模块也有可独立开源的部分,之前当当曾开源过dd-soa的基石模块DubboX。 项目开源地址:https://github.co...原创 2019-11-18 21:02:28 · 1988 阅读 · 0 评论 -
Nginx rewrite正则匹配重写的方法示例
Nginx的rewrite功能支持正则匹配重写,即将URL地址临时或永久重新指向某个新的位置,类似于重定向。这个特性有利用当网站结构做出重大调整,如之前的网站mp3资源使用URL为www.site1.org/mp3进行访问,而现在服务器上mp3目录已经被使用music目录替换,那rewrite这个功能则能够轻松实现。其次如可以将site1.org强制调整到www.site1.org,反之亦可。这个...原创 2019-11-14 19:27:00 · 1156 阅读 · 0 评论 -
Window搭建部署RocketMQ步骤详解
序以前简单用过ActiveMQ但是公司项目上使用的是RocketMQ,所以准备多花点时间在这上面,搞懂项目的配置使用。看了很多资料,先说说我自己对RocketMQ的简单理解。不管是我们写的消费者还是生产者都属于客户端,而我们需要安装RocketMQ,这是属于服务端。和ActivieMQ、zookeeper类似,消费者、生成者、服务端(NameServer)之间是采取观察者模式实现。在操作系统...原创 2019-11-13 20:07:34 · 629 阅读 · 0 评论 -
消息中间件这么多,到底应该如何选型?
消息队列已经逐渐成为企业应用系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能。当前使用较多的消息队列有 RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ 等,而部分数据库如 Redis、MySQL 以及 PhxSQL 也可实现消息队列的功能。消息队列概述消息队列是指利用高效可靠的消息传递机制进行与平台无关的数据...原创 2019-11-12 20:24:13 · 1038 阅读 · 0 评论 -
消息中间件之ActiveMQ
一、为什么需要MQ?主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达MySQL,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。RPC和消息中间件的不同很大程度上就是“依赖性”和“同步性”。RPC方式是...原创 2019-11-12 19:49:05 · 297 阅读 · 0 评论 -
dubbo - 负载均衡调用过程
开篇这篇文章的主要目的是讲清楚ClusterInvoker存在多个invoker对象进行负载均衡的调用过程,也就描述从调用到负载均衡选择的调用链路。【加群】:857565362selector 调用时序图说明:RegistryProtocol的doRefer()方法内部cluster.join()负责创建ClusterInvoker对象,所有的cluster的invoker的选择逻辑...原创 2019-11-07 18:12:10 · 574 阅读 · 0 评论 -
使用 NGINX 做 HTTP 负载均衡
Introduction负载均衡一般被用来优化资源利用率、最大化吞吐量、降低延迟和容错配置。Nginx 可以作为一种十分有效的 HTTP 负载均衡工具来使用,通过 nginx 的负载均衡分发流量到不同的应用服务器,可以提升 web 应用的性能、伸展性和可靠性。【加群】:857565362Load balancing methodsNginx 支持下面几种负载均衡策略:round-rob...原创 2019-11-07 17:28:57 · 178 阅读 · 0 评论 -
Java高级架构之FastDFS分布式文件集群详解
FastDFS简介FastDFS是一款开源的轻量级分布式文件系统,使用C实现,支持Linux、BSD等unix-like操作系统。值得注意的是,fastdfs并不是通用的文件系统,只能通过专用的API访问。fastdfs为互联网应用量身定做,解决了大容量文件存储的问题,fastdfs追求高性能和高扩展性。fastdfs的主要概念:tracker-server:跟踪服务器。用于跟踪文件,主要起...原创 2019-11-06 22:38:23 · 479 阅读 · 0 评论 -
阿里Java架构师浅谈Java微服务架构设计
微服务架构模式(Microservice Architect Pattern)。近两年在服务的疯狂增长与云计算技术的进步,让微服务架构受到重点关注微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体...原创 2019-11-06 10:27:22 · 423 阅读 · 0 评论 -
高并发、分布式限流策略(Springboot实现)
前言在一个高并发系统中对流量的把控是非常重要的,当巨大的流量直接请求到我们的服务器上没多久就可能造成接口不可用,不处理的话甚至会造成整个应用不可用。比如最近就有个这样的需求,我作为客户端要向kafka生产数据,而kafka的消费者则再源源不断的消费数据,并将消费的数据全部请求到web服务器,虽说做了负载(有4台web服务器)但业务数据的量也是巨大的,每秒钟可能有上万条数据产生。如果生产者直接生...原创 2019-11-04 19:23:55 · 1307 阅读 · 0 评论 -
业务高可用的保障:异地多活架构
一、什么是异地多活?异地多活:异地指不同地理位置,多活指不同地理位置的系统都是活跃的,都能够提供业务服务。异地多活是为了解决极端场景下所有服务器都出现故障时业务不受影响,或者业务在几分钟内就能够快速恢复而设计的。异地多活的优点:功能强大、提供更好的体验、可以减少业务中断带来的损失异地多活的缺点:代价高昂、设计复杂二、应用场景无法承受异地多活带来的复杂度和成本时可以只做异地备份,不做异地...原创 2019-11-06 11:04:29 · 524 阅读 · 0 评论 -
redis哨兵:redis哨兵的多个核心底层原理的深入解析
1、sdown(主观宕机)和odown(客观宕机)转换机制sdown和odown两种失败状态sdown是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机,如果一个哨兵ping一个master,超过了is-master-down-after-milliseconds指定的毫秒数之后,就主观认为master宕机odown是客观宕机,如果quorum(配置的认为master...转载 2019-10-22 19:18:24 · 311 阅读 · 0 评论 -
缓存奠基-缓存火爆概念学习
缓存雪崩缓存雪崩是由于原有缓存失效(过期),新缓存未到期间。所有请求都去查询数据库,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。解决方法:1.一般并发量不是特别多的时候,使用最多的解决方案是加锁排队。2.给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存。缓存标记:记录缓存数据是否过期,如果过...原创 2019-10-22 17:42:36 · 102 阅读 · 0 评论 -
使用Nginx实现负载均衡的策略
一、nginx简介nginx是一个高性能的HTTP服务器和反向代理服务器。它起初是俄罗斯人Igor Sysoev开发的,至今支撑者俄罗斯的很多大型的网站。二、nginx支持的三种负载均衡策略轮询:将请求依次轮询发给每个服务器。最少链接:将请求发送给持有最少活动链接的服务器。ip哈希:通过哈希函数决定请求发送给哪个服务器。权重:服务器的权重越高,处理请求的概率越大。三、轮询负载均衡在...转载 2019-10-21 19:33:41 · 211 阅读 · 0 评论 -
JVM GC 算法和垃圾收集器
一、对象存活判断1、引用计数法给每个对象加一个引用计数器,记录指向这个对象的引用数量。当计数器值为 0 时回收该对象。缺点:无法解决循环引用问题。2、可达性分析直接或间接被 GC Roots 引用着的对象是存活对象。GC Roots 是指活跃的引用,当然,它指向的就是活跃的对象了。JVM 中 GC Roots 指向的对象①虚拟机栈中的对象;②方法区中类静态属性的对象;③方法区中常...转载 2019-10-19 19:00:31 · 250 阅读 · 0 评论 -
基于NIO的Netty网络框架详解
Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。Netty的优点有:a、功能丰富,内置了多种数据编解码功能、支持多种网络协议。b、高性能,通过与其它主流NIO网络框架对比,它的综合性能最佳。c、可扩展性好,可...转载 2019-10-19 17:24:11 · 238 阅读 · 0 评论 -
Java使用Condition控制线程通信的方法实例详解
本文实例讲述了Java使用Condition控制线程通信的方法。分享给大家供大家参考,具体如下:一、前言当使用Lock对象来保证同步时,Java提供了一个Condition类来保持协调,使用Condition可以让那些已经得到Lock对象、却无法继续执行的线程释放Lock对象,Condtion对象也可以唤醒其他处于等待的线程。Condition 将同步监视锁方法(wait、notify 和 ...原创 2019-10-12 17:19:54 · 147 阅读 · 0 评论 -
深入解析Java的线程同步以及线程间通信
Java线程同步当两个或两个以上的线程需要共享资源,它们需要某种方法来确定资源在某一刻仅被一个线程占用。达到此目的的过程叫做同步(synchronization)。像你所看到的,Java为此提供了独特的,语言水平上的支持。同步的关键是管程(也叫信号量semaphore)的概念。管程是一个互斥独占锁定的对象,或称互斥体(mutex)。在给定的时间,仅有一个线程可以获得管程。当一个线程需要锁定,它...原创 2019-10-12 16:47:51 · 417 阅读 · 0 评论 -
BAT面试总结(二)
11. ArrayList、LinkedList、Vector的区别List的三个子类的特点ArrayList:底层数据结构是数组,查询快,增删慢;线程不安全,效率高。Vector:底层数据结构是数组,查询快,增删慢;线程安全,效率低。LinkedList:底层数据结构是链表,查询慢,增删快;线程不安全,效率高。Vector相对ArrayList查询慢(线程安全的)。Vector相...原创 2019-09-18 16:18:50 · 123 阅读 · 0 评论 -
BAT面试总结(一)
八种基本数据类型的大小,以及他们的封装类八种基本数据类型:int、short、float、double、long、boolean、byte、char。封装类分别是:Integer、Short、Float、Double、Long、Boolean、Byte、Character。引用数据类型引用数据类型是由类的编辑器定义的,他们是用于访问对象的。这些变量被定义为不可更改的特定类型。例如:Emp...原创 2019-09-18 14:56:09 · 514 阅读 · 0 评论 -
MySQL面试专题
数据库三范式是什么?第一范式(1NF):字段具有原子性,不可再分。(所有关系型数据库系统都满足第一范式数据库表中的字段都是单一属性的,不可再分)第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。要求数据库表中的每个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。...原创 2019-09-17 17:45:02 · 212 阅读 · 0 评论 -
Spring面试专题(1)
Spring 概述什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。使用Spring框架的好处是什么?轻量:Spring 是轻量的,基本的版本大约2MB。控制反转:Sprin...原创 2019-09-17 15:42:18 · 117 阅读 · 0 评论 -
Java架构师有多厉害?
如何才能成为一名Java架构师,点击此处,阅读成为一名优秀的架构师,应当具备哪些技能那么,我们为什么一定要成为架构师呢?可能大多数人都会说:来源于我们对Java的信仰但是,架构师代表的只是对信仰的忠诚程度吗?Of course not!除去对高级信仰、高额薪酬的描述,我们还应当知道的关于Java架构师的其他厉害之处有哪些呢?首先我们要明白,架构师是实力的体现。当你成为一名架构师之后...原创 2019-09-12 16:43:53 · 1285 阅读 · 0 评论 -
距离成为阿里P6程序员,我还需要什么?
作为一位有信仰的程序员,你是否有一份想进大厂的梦想?答案必然是肯定的。BATJ作为国内互联网的四大巨头,简单直接的代表着实力与能力。但是,程序员也是分等级的,有信仰的程序员向往的往往不会是在大厂里拧螺丝。那么,自我反省一下,想要成为阿里系的高级工程师甚至是资深工程师、技术专家,自身需要哪些条件呢?是颜值吗?是发量吗?趁着金九银十招聘季,我们可以从各大互联网招聘官网上查询到互联网公司的...原创 2019-09-12 11:28:27 · 1528 阅读 · 0 评论 -
想要成为一名优秀的Java架构师,需要具备哪些技能?
一名优秀的架构师代表着什么?具有一定高度的技术、具有出众的能力、在公司或者团体中有一定地位、受人敬仰以及拿到高额的薪资报酬。每一名架构师都是从程序员、初级专员、工程师、技术专家、研究员一步一步进阶而来。那么,怎样才能成为一名优秀的架构师呢?基础扎实:能够准确的描述基本的及其相关的概念,并能够充分开展事项;阅读源码:只有具有一定的基础后,才能够对源码进行理解和领会。通过阅读源码,不...原创 2019-09-11 17:32:37 · 767 阅读 · 0 评论 -
吊打面试官,你需要懂的MySQL(1)
MySQL是关系型数据库管理系统。形象一些,可以比喻为图书馆的书架,通过分门别类的方式对数据进行分类并存储,这样的方式提高了数据处理的速度。了解数据库,需要了解一些基本概念。数据库(DataBase)是一种计算机辅助管理数据的方法,他研究如何组织和存储数据、如何高效地获取和处理数据。数据库基本概念:信息:对于事物存在方式或运动状态的反映,通过文字、图像、信号等具体方式表现出来。我...原创 2019-09-11 11:47:34 · 437 阅读 · 0 评论