
架构
zhuguang10
这个作者很懒,什么都没留下…
展开
-
Java程序员必读之书单
读书是另一种感知世界的方式,是另一种提升自我的方式,是另一种与人交谈的方式,一周不读书就觉得自己俗了,长久不看书,写东西就找不到感觉了,网络上,电视上,各种电子设备上的内容当然不少,但都比不上读书,读书静心,读书能闻到古埃及的味道。关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是,多!看!书!毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程...原创 2019-06-05 16:43:18 · 198 阅读 · 0 评论 -
JAVA开发必看:12种Java中常用的语法糖深度解析
本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语法糖的同时,了解这些语法糖背后的原理什么是语法糖语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便...原创 2019-06-12 14:40:02 · 325 阅读 · 0 评论 -
11 个简单的 Java 性能调优技巧
大部分建议是针对Java的。但也有若干建议是与语言无关的,可以应用于所有应用程序和编程语言。在讨论专门针对Java的性能调优技巧之前,让我们先来看看通用技巧。1.在你知道必要之前不要优化这可能是最重要的性能调整技巧之一。你应该遵循常见的最佳实践做法并尝试高效地实现用例。但是,这并不意味着在你证明必要之前,你应该更换任何标准库或构建复杂的优化。在大多数情况下,过早优化不但会占用大量时间,...原创 2019-06-06 16:23:00 · 136 阅读 · 0 评论 -
深入理解java动态代理的实现机制
今天将从以下5方面来系统的学习一下java动态代理的实现机制:什么是代理 什么是静态代理 什么是动态代理 动态代理的实现机制 动态代理的使用场景1,什么是代理相信大家都有购买过火车票或者机票的经历,有的人在携程买,有的在飞猪,也有的在微信上买等等,这里的携程飞猪微信也好都是受铁路部的委托代理售卖火车票,这里的携程飞猪就是代理类,铁路部就是委托类,这就是代理2,什么是静态代理...原创 2019-06-13 11:57:12 · 131 阅读 · 0 评论 -
架构师不写代码,能行吗?
从什么时候起,技术角色的提升就意味着脱离技术与交付?CTO 不写代码已经引起诸多争议了,架构师也不写代码,能行吗?当我面试架构师职位的候选人时,我通常会问一个这样的问题:“你认为架构师是否应该做一些编码工作?”而通常会得到下面两个反馈之一:“不,我正在寻找一个不再需要编码的职位。”“我喜欢继续编码,至少是少量的编码,但可能不会有时间这样做。”与此类似,当问及其他一些架构师最近做过多...原创 2019-06-14 15:37:28 · 651 阅读 · 0 评论 -
对面试官来说,哪种Java程序员最受欢迎?
这段时间泡论坛,听到了很多跳槽程序员的困惑和迷茫。“工作太无聊了,每天没有成就感,想换却找不到方向……”“35岁了,曾经的同学都年薪百万了,自己还是不上不下的……”“晋升好难,看不到上升空间了……”为什么有些人可以突破职场天花板,拿到第一个100万?你和年薪百万的人相比,到底差的是什么?现在又到一年一度的跳槽求职高峰季,最近很多人问我,你们公司还缺人么,你们用哪些技术栈,有...原创 2019-06-19 15:27:57 · 196 阅读 · 0 评论 -
JAVA程序员要具备哪些知识体系?
作为一名Java程序员,你必须所具备的知识体系,小编特意总结为以下10点:1.语法语法需要很熟悉,面对任何编码期的IDE报错都能准备的根据报错信息知道自己犯了什么语法错误并且知道如何改正这个错误。2.命令你需要熟悉JDK的常用命令,至少也应该熟悉这些:appletviewer、 HtmlConverter、jar、 java、javac、javadoc、javap、javaw、na...原创 2019-06-10 11:39:08 · 513 阅读 · 0 评论 -
MySQL数据库的索引原理、与慢SQL优化的5大原则
MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易...原创 2019-06-20 11:53:09 · 149 阅读 · 0 评论 -
iOS应用架构谈:架构设计的方法论
缘由之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验。在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢?当时看到这个问题正好在乘公车回家的路上,闲来无聊就答了一把。在zzz在微信朋友圈上追问了几个问题之后,我觉得有必要以文章形式专门来讲一些个人见解。其实对于iOS客户端应用的...原创 2019-06-16 11:50:12 · 277 阅读 · 0 评论 -
集中式架构与分布式架构比较
应用现状比较由于历史原因,集中式架构多用于传统银行、电信等行业。主机资源集中在大型主机或小型机上。集中式架构下,包括操作系统,中间件,数据库等“基础软件” 均为闭源商用系统。集中式架构的典型案例是 IOE(IBM, Oracle,EMC)提供的计算设备、数据库技术和存储设备共同组成的系统。近年来,分布式架构在 Google、 Amazon、Facebook、阿里巴巴、腾讯等互联网公司广泛应...原创 2019-06-20 16:45:04 · 2153 阅读 · 1 评论 -
基于Redis的限流系统的设计
本文讲述基于Redis的限流系统的设计,主要会谈及限流系统中限流策略这个功能的设计;在实现方面,算法使用的是令牌桶算法来,访问Redis使用lua脚本。1、概念In computer networks,rate limitingis used to control the rate of traffic sent or received by a network interface c...原创 2019-06-16 15:26:10 · 137 阅读 · 0 评论 -
Java虚拟机内存分配与回收策略
内存分配与回收策略Minor GC 和 Full GCMinor GC:发生在新生代上,因为新生代对象存活时间很短,因此 Minor GC 会频繁执行, 执行的速度一般也会比较快。Full GC:又称Major GC,发生在老年代上,老年代对象其存活时间长, 因此 Full GC 很少执行,执行速度会比 Minor GC 慢很多。内存分配策略堆内存:分配策略:...原创 2019-06-21 11:49:18 · 108 阅读 · 0 评论 -
初级程序员需要知道的基本代码规范
如果想学习Java工程化、高性能及分布式、深入浅出。性能调优、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级架构进阶群:798891710,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家作为一个程序员,写代码乱糟糟的咋行呢?所以今天我将我在《阿里巴巴Java开发手册》中看到的一些有用的、适合初级程序员的代码基本规范,分享给大家!1....原创 2019-06-21 14:32:42 · 349 阅读 · 0 评论 -
Java程序员必读之热门书单
读书是另一种感知世界的方式,是另一种提升自我的方式,是另一种与人交谈的方式,一周不读书就觉得自己俗了,长久不看书,写东西就找不到感觉了,网络上,电视上,各种电子设备上的内容当然不少,但都比不上读书,读书静心,读书能闻到古埃及的味道。关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是,多!看!书!毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程...原创 2019-06-25 11:24:42 · 193 阅读 · 0 评论 -
Mysql加锁与实践
1. 锁分类innodb中的锁分为S锁,即共享锁,另一种为X锁,排它锁,比如:共享锁(S)select * from supplier where id=5 lock in share mode;复制代码排他锁(X)select * from supplier where id=5 for update;复制代码或者insert,delete,update语句,这都...原创 2019-06-17 14:23:44 · 121 阅读 · 0 评论 -
Java程序员排行前10的错误,请注意!
这个列表总结了10个Java开发人员最常犯的错误,是我基于大量的github上的开源项目,Stack overflow上的问题,还有一些流行的google搜索的分析,没有明显示的评估证明它们是前10,但它们绝对是很常见的。Listlist = Arrays.asList(arr);Arrays.asList会返回一个ArrayList,但是要特别注意,这个ArrayList是Arrays类...原创 2019-06-25 15:11:50 · 187 阅读 · 0 评论 -
Java基本类型的包装
package day13;/*基本数据类型对象包装类。byte Byteshort shortint Integerlong Longboolean Booleanfloat Floatdouble Doublechar Character基本数据类型对象包装类的常见作用,是用于基本数据类型和字符串类型之间做转换...原创 2019-06-25 19:16:19 · 106 阅读 · 0 评论 -
死磕 java集合之DelayQueue源码分析
问题(1)DelayQueue是阻塞队列吗?(2)DelayQueue的实现方式?(3)DelayQueue主要用于什么场景?简介DelayQueue是java并发包下的延时阻塞队列,常用于实现定时任务。继承体系从继承体系可以看到,DelayQueue实现了BlockingQueue,所以它是一个阻塞队列。另外,DelayQueue还组合了一个叫做Delayed...原创 2019-06-22 11:10:51 · 114 阅读 · 0 评论 -
多线程并发问题解决之redis锁
一 问题背景 我们做的是医疗信息化系统,在系统中一条患者信息对医院中当前科室中的所有诊断医生是可见的,当有一个诊断医生点击按钮处理该数据时,数据的状态发生了变化,其他的医生就不可以再处理此患者的数据了。我们开始的做法是,在医生点击按钮时先去后台数据库获取当前数据状态,根据状态判断数据是否可以操作,如果可以操作,则修改数据状态,进行业务逻辑处理,否则提示数据已被其他人处理,不能处理...原创 2019-06-22 14:45:09 · 527 阅读 · 0 评论 -
Java设计模式-单例模式:单例的六种实现
单例模式的定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。UML类图单例类的构造函数是 private 内部私有的,确保外部不能通过 new 的方式创建新对象,内部自行实例化,并对外提供一个访问该单一实例的静态的方法 Instance() 。单例模式的实现普通饿汉式/** * 普通饿汉式 * * @author anlingyi */...原创 2019-07-01 14:59:59 · 189 阅读 · 0 评论 -
java类加载器
1 基本信息每个开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程序中出现的类加载失败等技术问题,对理解java虚拟机的连接模型和java语言的动态性都有很大帮助。2 Java虚...原创 2019-06-18 15:00:31 · 199 阅读 · 0 评论 -
Java多线程基础
线程与进程线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境进程:执行中的程序一个进程至少包含一个线程单线程:程序中只存在一个线程,实际上主方法就是一个主线程多线程:在一个程序中运行多个任务目的是更好地使用CPU资源线程的实现继承Thread类在java.lang包中定义, 继...原创 2019-06-26 11:39:27 · 167 阅读 · 0 评论 -
学习Java应该关注哪些网站?
以下网站适合但绝不限于java学习者写在最前面。(为什么写在最前面?)Google 用好搜索引擎,你需要的很多问题基本都会有回答Stack Overflow 程序设计领域的问答站github 代码托管平台和开发者社区Java SE 文档 开发文档得好好利用吧?Java Platform, Enterprise Edition (Java EE)主要内容有:一、技术问答论坛二、开源社...原创 2019-06-26 15:49:07 · 245 阅读 · 0 评论 -
java jdbc 连接参数引发的问题,查询条件带中文(java+mysql)
问题背景:数据库迁移,使用 mysqldump 导出的文件,创建新的数据库。原库:MySQL 5.7.17新库:MySQL 5.7.18问题:使用新的库,测试发现网页的某个标签下没有查出内容。尝试:1,静态复制数据库文件2,升级 MySQL 到同一个小版本问题仍然存在。发现问题的线索:再三确认排除代码的不一致之后,直接使用 java 的API接口测试。分别连接老库...原创 2019-06-26 19:16:24 · 455 阅读 · 0 评论 -
Java 相关面试题总结
1、String 是最基本的数据类型吗? 不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。2.解释内存中的栈(stack)、堆(heap)和静态存储区的...原创 2019-07-02 11:29:23 · 128 阅读 · 0 评论 -
JavaScript 各种数组去重方法
一、利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,nu...原创 2019-07-02 15:01:12 · 120 阅读 · 0 评论 -
Java编程中如何减少bug数量
Java编程语言在IT行业毋庸置疑是企业中不可缺少的,现今企业招收大量Java人才,从Web应用到Android应用,这款语言已经被广泛用于开发各类应用及代码中的复杂功能。不过在编写代码时,bug永远是困扰每一位从业者的头号难题。在今天的文章中,小编将分享五项最佳实践,希望帮助大家更为轻松地减少Java开发中的bug数量。不要依赖初始化在Java编程中,开发者常常依赖构造函数...原创 2019-06-24 11:33:40 · 278 阅读 · 0 评论 -
分布式缓存系统CacheKit之线程池以及线程池的管理
备注:CacheKit,是一个从零开始手动打造的分布式缓存系统。在Java里面,用到线程池的时候,一般都是采用ThreadPoolExecutor。这个仅仅是一个原料,要想做成一顿丰盛的午餐,还是略显单薄。ThreadPoolExecutor是管理线程的,但是如何管理线程池,监控线程池呢?还得需要ThreadPoolManager。ThreadPoolManager是ThreadPoolExe...原创 2019-07-08 11:19:12 · 1559 阅读 · 0 评论 -
学习如何使用 Shiro,从架构谈起,到框架集成
一、架构 1、使用用户的登录信息创建令牌 2、执行登陆动作 3、判断用户 4、两条重要的英文 二、实现Realm 1、缓存机制 2、散列算法与加密算法 3、用户注册 4、匹配 5、获取用户的角色和权限信息 6、会话 三、与SpringMVC集成 1、配置前端过滤器一、架构要学习如何使用Shiro必须先从它的架构谈起,作为一款安全框架Shiro的设计相当精妙。Shir...原创 2019-07-08 15:20:13 · 133 阅读 · 0 评论 -
一步一图,带你了解分布式架构的前世今生
目录:什么是分布式架构?分布式架构的演进分布式服务面临的问题什么是分布式架构?分布式系统(distributed system)是建立在网络之上的软件系统,它有两个典型特点:内聚性 :每个数据库分布节点高度自治,有本地的数据库管理系统透明性 :每个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。也就是说,在分布式系统中,用户感觉不到数据是分...原创 2019-06-24 17:43:04 · 179 阅读 · 0 评论 -
Java并发包中锁原理剖析
目录LockSupport工具类 1. void park() 2. void unpark(Thread thread) 3. void parkNanos(long nanos) 抽象同步队列AQS概述 AQS——锁的底层支持 AQS——条件变量的支持 基于AQS实现自定义同步器 ReentrantLock的原理 类图结构 获取锁 void lo...原创 2019-07-03 10:33:42 · 147 阅读 · 0 评论 -
面试官问我“Java中的锁有哪些?以及区别”,我跪了
在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁 上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/非公平锁公平锁是指...原创 2019-07-03 14:43:28 · 122 阅读 · 0 评论 -
五大最佳开源java性能监控工具
对任何应用程序而言,性能都是最重要的事情之一。我们希望用户能够获得最佳的体验,并且应用程序可以正常运行,这也就是性能监控工具存在的原因。如果你正在寻找性能监控工具,不妨看看以下推荐的这五款开源工具,这些工具目前已经可以替代付费工具了,你可以看看是否是你的最佳选择。本文推荐的五款开源工具目前是开源社区中最受欢迎的。1. StagemonitorStagemonitor提供了一个Java监...原创 2019-07-09 10:52:34 · 4080 阅读 · 0 评论 -
vue+springboot前后端分离实现单点登录跨域问题处理
最近在做一个后台管理系统,前端是用时下火热的vue.js,后台是基于springboot的。因为后台系统没有登录功能,但是公司要求统一登录,登录认证统一使用.net项目组的认证系统。那就意味着做单点登录咯,至于不知道什么是单点登录的同学,建议去找一下万能的度娘。刚接到这个需求的时候,老夫心里便不屑的认为:区区登录何足挂齿,但是,开发的过程狠狠的打了我一巴掌(火辣辣的一巴掌)。。。,所以这次必须...原创 2019-06-28 10:51:15 · 1157 阅读 · 1 评论 -
还在Java代码里乱打日志?这才是正确的使用方式!
使用slf4j使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。实现方式统一使用: Logback框架打日志的正确方式什么时候应该打日志当你遇到问题的时候,只能通过debug功能来确定问题,你应该考虑打日志,良好的系统,是可以通过日志进行问题定为的。当你碰到if…else 或者 switch这样的分支时,要在分支的首行打印日志,用来确定进入了哪个分支经常以功...原创 2019-07-03 19:32:53 · 160 阅读 · 0 评论 -
使用Spring Security和JWT保护REST API实战源码
设计REST API时,必须考虑如何保护REST API,在基于Spring的应用程序中,Spring Security是一种出色的身份验证和授权解决方案,它提供了几种保护REST API的选项。最简单的方法是使用HTTP Basic,当你启动基于Spring Boot的应用程序时,默认情况下会激活它,这有利于开发,可在开发阶段经常使用,但不建议在生产环境中使用。Spring Sessio...原创 2019-07-12 19:22:20 · 189 阅读 · 0 评论 -
浅谈 Java 10 ,你可能不知道的五件事
ava 9出现之后仅仅过去6个月,现在Java 10已经在敲门了。与它的版本号一样,Java 10提供了10个新特性,本文提供了我认为最重要的5个特性(您可以在Open JDK 10项目页面上查看它们)。局部变量类型推断是有争议的热点,但Java 10在JVM中的垃圾收集和容器识别上带来了可喜的变化。局部变量类型推断是有争议的热点,但Java 10在JVM中的垃圾收集和容器识别...原创 2019-07-09 15:26:49 · 271 阅读 · 0 评论 -
Java中被搁置的“goto”保留字
goto语句一直被人所诟病,说它使得代码结构复杂化,但是语言设计者们还是没有放弃goto这个功能强大的语句。Java以面向对象所著称也没能够放弃goto,而是把它当做保留字,但是并未在语言中得到正式使用。然而,从Java的break和continue这两个关键字的身上,我们依然能够看出一些goto的影子。下面是《Thinking In Java 4th》中关于“goto”的介绍:臭名...原创 2019-06-28 15:33:27 · 225 阅读 · 0 评论 -
一条简单的 SQL 执行超过1000ms,纳尼?
MySQL对我说“Too young, too naive!"大概过程在测试环境Docker容器中,在跨进程调用服务的时候,A应用通过Dubbo调用B应用的RPC接口,发现B应用接口超时错误,接着通过debug和日志,发现具体耗时的地方在于一句简单SQL执行,但是耗时超过1000ms。通过查看数据库的进程列表,发现是有死锁锁表了,很多进程状态status处于'sending data'...原创 2019-07-09 19:20:43 · 189 阅读 · 0 评论 -
netty以及在RPC中的使用
本文主要讨论netty的实现以及其在rpc(hsf)的使用,同时探讨下多线程下下文切换对系统的影响。本文主要内容:netty的结构和线程模型 线程切换、context switch、mode switch对系统的影响 netty高性能,以及在hsf中的实现1、总体结构netty的总体结构如图:nettynetty中主要的部分:传输:Java nio 线程:...原创 2019-07-14 11:19:21 · 381 阅读 · 0 评论