架构师
文章平均质量分 81
zhuguanghalo
这个作者很懒,什么都没留下…
展开
-
JVM源码分析之Object.wait/notify实现
最简单的东西,往往包含了最复杂的实现,因为需要为上层的存在提供一个稳定的基础,Object作为java中所有对象的基类,其存在的价值不言而喻,其中wait和notify方法的实现多线程协作提供了保证。public class WaitNotifyCase { public static void main(String[] args) { final Object loc...原创 2019-04-04 15:52:02 · 2191 阅读 · 0 评论 -
2019值得关注的数据可视化工具TOP5
数据可视化在数据分析过程中的扮演着非常重要的角色。对于数据科学家或数据分析师来说,以更直观、便于查看、甚至更吸引人的视觉效果来呈现数据是很重要的。数据可视化是一个有效的市场工具,通过这种方式,从海量数据中挖掘的知识与信息就可以一种简单的方式直观地进行展示,目前数据分析师或数据科学家们以图形格式来进行数据展示的方法有很多。为什么数据可视化很重要?根据人类大脑的处理方式,看到电子表格和使用图表的...原创 2019-04-17 14:47:23 · 438 阅读 · 0 评论 -
MySql索引那些事
一、什么是索引数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。就像我们以前用的新华字典的目录一样,能帮助我们快速查询到某一个字。二、索引的分类三、索引实例分析(以InnoDB为例)3.1 InnoDB下索引的结构InnoDB下,表都是根据主键顺序以索引的形式存放的,这种数据存储方式也被称为聚簇索引,“聚簇”就是表示数据行和相邻的键值紧凑的存储在一...原创 2019-04-27 16:39:39 · 163 阅读 · 0 评论 -
Apache Ignite上的TensorFlow
任何深度学习都是从数据开始的,这是关键点。没有数据,就无法训练模型,也无法评估模型质量,更无法做出预测,因此,数据源非常重要。在做研究、构建新的神经网络架构、以及做实验时,会习惯于使用最简单的本地数据源,通常是不同格式的文件,这种方法确实非常有效。但有时需要更加接近于生产环境,那么简化和加速生产数据的反馈,以及能够处理大数据就变得非常重要,这时就需要Apache Ignite大展身手了。Apac...原创 2019-04-18 17:05:10 · 359 阅读 · 0 评论 -
消息中间件面试题:如何保证消息不被重复消费
面试题剖析回答这个问题,首先你别听到重复消息这个事儿,就一无所知吧,你先大概说一说可能会有哪些重复消费的问题。首先,比如 RabbitMQ、RocketMQ、Kafka,都有可能会出现消息重复消费的问题,正常。因为这问题通常不是 MQ 自己保证的,是由我们开发来保证的。挑一个 Kafka 来举个例子,说说怎么重复消费吧。Kafka 实际上有个 offset 的概念,就是每个消息写进去,都有一...原创 2019-04-23 20:25:23 · 658 阅读 · 0 评论 -
如何看待哔哩哔哩(B站)的后端代码主仓库被上传至了GitHub?
来只知乎谢圜的回答:虽然在大厂但不做后端,那就不聊技术细节了。首先代码地址就不说了,该关注的都FORK了。在短短几个小时内,该项目的fork数已经达到了5000+。项目名go-commom,能猜到这就是一个用go语言写的支持库。这意味着什么呢?根据GitHub的规则来看,这个项目已经被备份了5000多次且不可被连带删除,基本属于不可挽回的操作。当然根据DMCA协议是可以的,但是想想就...原创 2019-04-24 10:51:05 · 801 阅读 · 0 评论 -
2019最新Java Web J2EE下的两大框架SSH和SSM对比
当下流行的两种企业开发MVC开源框架,是我们Java程序猿必备知识能力。MVC,即模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。框架之所以流行,在于其易复用和简化开发,精髓在思想,掌握了核心思想,我们掌握其他...原创 2019-04-29 16:16:53 · 993 阅读 · 0 评论 -
Kafka面试题全套整理:消息处理+高可用集群+生产者与消费者实例
有很多人问过我要过Kafka相关的面试题,我一直懒得整理,这几天花了点时间,结合之前面试被问过的、别人咨询过的、我会问别人的进行了相关的整理,也就几十题,大家花个几分钟看看应该都会。面试题列表如下:Kafka的用途有哪些?使用场景如何?Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么Kafka中的HW、LEO、LSO、LW等分别代表什么?Kafka中是怎么体现消息顺序性的?...原创 2019-04-30 10:56:50 · 299 阅读 · 0 评论 -
程序员才能看得懂的段子,内含表情包,吃饭的时候别点!
很多网友都认为程序员必定是非常古板,整天只会敲键盘的码农。其实这种看法是非常片面的。真正优秀的程序员,不仅精通程序的编写,还是某些领域的专家。许多“码农”也会发生很多让人啼笑皆非的趣事,这些故事你的身边有发生过吗?1、公司两位程序员同事聊天,甲抱怨说:“每天敲代码太辛苦了,我想换行”乙说:“敲回车啊”2、公司的前端工程师单身久了,就去了交友网站去找女朋友,过了段时间问他找到了,没有,工程师说...原创 2019-05-05 19:05:46 · 27490 阅读 · 106 评论 -
Kafka竟然不支持读写分离!今天才知道!
Kafka竟然不支持读写分离!今天才知道! 在 Kafka 中,生产者写入消息、消费者读取消息的操作都是与 leader 副本进行交互的,从 而实现的是一种主写主读的生产消费模型。数据库、Redis 等都具备主写主读的功能,与此同时还支持主写从读的功能,主写从读也就是读写分离,为了与主写主读对应,这里就以主写从读来称呼!在 Kafka 中,生产者写入消息、消费者读取消息的操作都是与 leade...原创 2019-04-26 11:00:06 · 263 阅读 · 0 评论 -
一位程序员爸爸抵制编程教育:“我不会教孩子学编程”
看点 5G技术、人工智能、虚拟现实,越来越多的新词汇冲刷着我们的认知。“未来已来,编程为王。”在大众看来,编程似乎与读写一样,成为接轨未来的必备技能。然而,美国程序员爸爸Joe Morgon却表示并不会让自己的孩子学习编程。他指出,编程与读写在重要性上并不对等,而且简单的学习编程语法并不能培养孩子解决问题的能力。更重要的是,当我们强迫孩子跟着死板的流程去学习编程,只会抹杀他们的好奇心。昨天,我在...原创 2019-04-09 15:36:25 · 1127 阅读 · 2 评论 -
2019天猫面试题(含总结):线程池+并发编程+分布式设计+中间件
引言过年之后相信有一部分的人,早已磨刀霍霍向大厂。势必要大展拳脚,必将在大厂内创出一片天地。但是,想必大家都知道:最近几年的最严重的互联网寒冬来临,各位兄弟都会说“江湖再见”。耳边总是充刺着流言蜚语,这个地方裁员了,这个地方缩减HC。弄得人心慌慌。年后将是一片血雨腥风,程序界的江湖将在这一天精彩斑斓。但我们要知道,寒冬之中,什么是最珍贵,就让鄙人告诉你:人才。只要有过硬的技术和装备,在逆风直下...原创 2019-03-31 17:11:17 · 248 阅读 · 0 评论 -
与 30 家公司过招,得到了这章面试心法
笔者坐标上海,做技术开发,之前有几个月的时间,基本上都是在面试中度过的。我求职的职位是 Linux 服务器开发,最倾向的职位是服务器开发主程或技术经理。在那几个月的求职过程中,我面试了 30+ 家公司,包括腾讯、百度、阿里的蚂蚁金服和国际支付宝部门、饿了么、爱奇艺、360、携程网、京东、华为、bilibili 与 UCLOUD 等。在这个过程中,思考了一些面试相关的问题,总结出这篇文章,希望给读者...原创 2019-03-27 16:58:59 · 584 阅读 · 0 评论 -
2019BATJ面试题汇总详解:MyBatis+MySQL+Spring+Redis+多线程
这里为大家分享一些面试的一手资料,供大家迎接接下来的金三银四跳槽季SpringSpring 概述什么是spring?使用Spring框架的好处是什么?Spring由哪些模块组成?解释AOP模块Spring配置文件什么是Spring IOC 容器?依赖注入什么是Spring的依赖注入?有哪些不同类型的IOC(依赖注入)方式?哪种依赖注入方式你建议使用,构造器注入,还是 S...原创 2019-04-10 15:45:30 · 202 阅读 · 1 评论 -
JavaScript 为什么要有 Symbol 类型?
Symbols 是 ES6 引入了一个新的数据类型 ,它为 JS 带来了一些好处,尤其是对象属性时。 但是,它们能为我们做些字符串不能做的事情呢?在深入探讨 Symbol 之前,让我们先看看一些 JavaScript 特性,许多开发人员可能不知道这些特性。背景js 中的数据类型总体来说分为两种,他们分别是:值类型 和 引用类型值类型(基本类型):数值型(Number),字符类型(Strin...原创 2019-04-01 19:18:10 · 1437 阅读 · 1 评论 -
蚂蚁4轮Java面试真题看看自己会多少:悲观锁+G1收集器+幻读+连接池+分布式架构
阿里蚂蚁金服专场面试系列题01 技术一面线程池有哪些参数?分别有什么用?如果任务数超过的核心线程数,会发生什么?阻塞队列大小是多少?数据库连接池介绍下,底层实现说下hashset底层实现,hashmap的put操作过程说说HaspMap底层原理?再说说它跟HaspTable和ConcurrentHashMap他们之间的相同点和不同点?说说B+树和B树的区别,优缺点等?算法题,对...原创 2019-04-02 15:23:48 · 313 阅读 · 1 评论 -
不要996!程序员创建955.WLB不加班公司名单,GitHub周榜第二
一个人的一生应该怎样度过?现在程序员们开始认真思考这个问题。GitHub 的每周趋势榜上,996.ICU 已雄踞第一,第二则是这个项目的反向 Repo:WLB所谓 955,就是每天 9 点上班,下午 5 点下班,每周工作 5 天时间。而 WLB,就是 Work-Life Balance 即工作生活平衡。WLB,主要用来统计哪些公司不加班。咱们接下来看看,到底哪些公司能让程序员们...原创 2019-04-11 16:40:32 · 894 阅读 · 0 评论 -
法国程序员没有“996” 40多岁最受人尊敬
1.从记者口中得知,大部分中国程序员的工作时间之后,Nicolas 表示很惊讶,他们加班的情况非常少,周末更是不能被耽误的家庭时光。2.热爱旅行的她,一边旅行一边工作,如今,成为了一名自由程序员,以洒脱的方式继续从事她爱的工作。3.作为一名程序员,能在技术代码之外,实现突破,完成自我价值的升华,之于自己、之于未来之路,都是一份美丽的收获。前不久的一部热播剧把大龄程序员推向了风口浪尖,程序员...原创 2019-04-08 14:44:31 · 519 阅读 · 0 评论 -
阿里技术三面:JVM+高并发性能+单点登录+微服务
就最近两周找工作的情况来看,市场对Java工程师的需求并没有因为经济发展受阻而大幅减少,只是市场对Java工程师的要求越来越高。但我们要知道,寒冬之中,什么是最珍贵,就让鄙人告诉你:人才。只要有过硬的技术和装备,在逆风直下的情况下,咱们也能迎难而上,打他个戳手不及。不是“李云龙”大哥说:“过狭路相逢勇者胜.”一面自我介绍谈一个你觉得你学到最多的项目,使用了什么技术,挑战在哪里Sprin...原创 2019-04-03 15:33:59 · 442 阅读 · 0 评论 -
阿里员工正准备跳槽,被领导约谈涨薪,晒出薪水:今年又不能走了
阿里目前来说是互联网企业的龙头老大,阿里的员工薪水都很高,而且阿里有一套完整的薪资体制,也很成熟。公司在给员工薪水的同时还会将阿里的股票分给每个员工,这对员工来说是很大的一个诱惑,毕竟都知道阿里每年的业绩是一个什么样的增长速度。最近有位在阿里工作的网友分享了他在阿里的亲身经历:在阿里工作了6年,已经到了p7,本来已经拿了外面的offer,但是他的主管跟他谈了一下,给他的薪水涨到41000,还...原创 2019-05-08 19:07:19 · 3253 阅读 · 1 评论 -
Cookie、Session和Token
前言Web诞生之初,功能比较单一:允许Internet上任意一个用户都可以从许多文档服务计算机的数据库中搜索和获取文档。服务器不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 即请求加响应,服务器不用记住是谁刚刚发了HTTP请求, 每个请求对服务器来说都是全新的。随着交互式Web应用的兴起,网站有了登录的需求,如在线购物网站,社交网站等等。这就面临一个问题,服务器...原创 2019-05-12 19:28:24 · 253 阅读 · 0 评论 -
强大的免费开源录屏工具 Captura
Captura是一款强大的录屏软件, 免费开源,可以在Github上下载。Github:Captura官方具有可执行安装包以及绿色解压即用两种方式提供下载,但仅支持Win系统.第一种是仅录音频, 第二种是录全屏, 第三种是录指定全屏(针对多屏幕), 第四种是录窗口, 第五种是录区域, 第六种是录游戏(或者说录桌面复制).输出格式包括mpeg, gif, avi, steam.这三...原创 2019-05-26 13:26:11 · 23439 阅读 · 2 评论 -
彻底搞懂synchronized(从偏向锁到重量级锁)
接触过线程安全的同学想必都使用过synchronized这个关键字,在java同步代码快中,synchronized的使用方式无非有两个:通过对一个对象进行加锁来实现同步,如下面代码。synchronized(lockObject){ //代码}对一个方法进行synchronized声明,进而对一个方法进行加锁来实现同步。如下面代码public synchornized void ...原创 2019-05-17 11:53:12 · 728 阅读 · 1 评论 -
基于Spring cloud gateway定制的微服务网关
在构建微服务的架构体系过程中,API网关是一个非常重要的组件。那我们应该怎样实现一个微服务API网关,本文主要介绍Spring Cloud Gateway的功能,以及如何基于Spring Cloud Gateway定制自己的网关。Spring Cloud GatewaySpring Cloud Gateway提供的是一个用于在Spring MVC之上构建API网关的library,它的目标是...原创 2019-05-22 16:23:18 · 806 阅读 · 0 评论 -
Elasticsearch的Refresh与Flush操作
初次接触到这两个概念,估计都会觉得他们没什么差别,都是为了在操作索引之后让索引可以被实时性的搜索,不过它们还是有点不同的。Elasticsearch底层依赖Lucene,这里我们介绍下Lucene的segment, Reopen,commit。Segment在ES中,基本的存储单元是shard(分片),但是在更底层的Lucene上稍微有点不同,ES的每一个shard是Lucene的一个ind...原创 2019-05-30 11:07:35 · 2636 阅读 · 0 评论 -
Spring Cloud Stream如何处理消息重复消费?
最近收到好几个类似的问题:使用Spring Cloud Stream操作RabbitMQ或Kafka的时候,出现消息重复消费的问题。通过沟通与排查下来主要还是用户对消费组的认识不够。其实,在之前的博文以及《Spring Cloud微服务实战》一书中都有提到关于消费组的概念以及作用。那么什么是消费组呢?为什么要用消费组?它解决什么问题呢?摘录一段之前博文的内容,来解答这些疑问:通常在生产环境,我...原创 2019-05-27 20:24:55 · 432 阅读 · 0 评论 -
骚操作:使用RxJava实现ImageView的拖动、旋转和缩放
自定义View首先自定义TrsImageView继承ImageView,设置ScaleType为Matrix,我们使用矩阵计算最终的translate, rotate和scale。public class TrsImageView extends ImageView { public TrsImageView(Context context) { super(cont...原创 2019-05-28 11:19:30 · 214 阅读 · 0 评论 -
Hadoop如何将TB级大文件的上传性能优化上百倍?
这篇文章,我们来看看,Hadoop的HDFS分布式文件系统的文件上传的性能优化。首先,我们还是通过一张图来回顾一下文件上传的大概的原理。由上图所示,文件上传的原理,其实说出来也简单。比如有个TB级的大文件,太大了,HDFS客户端会给拆成很多block,一个block就是128MB。这个HDFS客户端你可以理解为是云盘系统、日志采集系统之类的东西。比如有人上传一个1TB的大文件到网盘,或...原创 2019-05-31 16:05:27 · 1206 阅读 · 0 评论 -
你需要了解的网络协议
网络协议有哪些?应用层:HTTP、FTP、SSH、SMTP表示层会话层传输层:TCP、UDP网络层:IP数据链路层物理层HTTP的工作流程如下 :HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。地址解析HTTP协议是通过标准URL来请求指...原创 2019-05-16 11:30:05 · 509 阅读 · 0 评论 -
聚集索引、非聚集索引、覆盖索引的工作原理分析总结!
「数据库」和「数据库索引」这两个东西是在服务器端开发领域应用最为广泛的两个概念,熟练使用数据库和数据库索引是开发人员在行业内生存的必备技能。使用索引很简单,只要能写创建表的语句,就肯定能写创建索引的语句,要知道这个世界上是不存在不会创建表的服务器端程序员的。然而, 会使用索引是一回事, 而深入理解索引原理又能恰到好处使用索引又是另一回事,这完全是两个天差地别的境界(我自己也还没有达到这层境界)。...原创 2019-05-21 14:13:25 · 390 阅读 · 0 评论 -
12 款超实用的 Win10 UWP 应用分享
Grover Podcast商店最佳播客应用!纯净简洁,体验很棒。支持手动添加播客源、在线浏览搜索频道、资源下载、OPML 备份文件导入/导出等。ACG播放器功能很强大的一款视频播放器,效果酷炫,支持艺术字母、音效视效增强,可自由定制界面样式和手势操作。疯狂番茄 - 番茄工作法 + 任务管理很完善的番茄钟工具,正如其名字里说的那样,结合和番茄钟和任务管理,相当于 todo-list...原创 2019-05-13 19:13:47 · 7228 阅读 · 0 评论 -
阿里面试题:Mybatis中的Dao接口和XML文件里的SQL是如何建立关系的?
一、解析XML首先,Mybatis在初始化SqlSessionFactoryBean的时候,找到mapperLocations路径去解析里面所有的XML文件,这里我们重点关注两部分。1、创建SqlSourceMybatis会把每个SQL标签封装成SqlSource对象。然后根据SQL语句的不同,又分为动态SQL和静态SQL。其中,静态SQL包含一段String类型的sql语句;而动态SQL则...原创 2019-05-09 15:53:34 · 298 阅读 · 0 评论 -
面试必问的JVM应该怎么学(面试题含答案)
java虚拟机的基本结构如图:1)类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中可能还会存放运行时常量池信息,包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)。2)java堆在虚拟机启动的时候建立,它是java程序最主要的内存工作区域。几乎所有的java对象实例都存放在java堆中...原创 2019-05-14 16:50:32 · 340 阅读 · 0 评论 -
Zookeeper与paxos算法
一、 zookeeper是什么官方说辞:Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。好抽象,我们改变一下方式,先看看它都提供了哪些功能,然后再看看使用它的这些功能能做点什么。二、 zookee...原创 2019-05-19 17:18:25 · 462 阅读 · 0 评论 -
为什么现在90后员工离职率那么高?
近几年职场上普遍存在一个奇怪的现象,90后的员工离职率特别高,95后就更不用说了,几乎可以用“一言不合就离职”来形容。那究竟是为什么现在90后的员工离职率那么高呢?回想我们父母那一代,大部分人都是踏踏实实地在一个岗位上工作了一辈子,中间换工作的也是极少数人,其中有一些人还是因为之前的工作不景气,不得不离开再去重新找工作的。但现在的年轻人就完全不一样了。首先是思想上有很大的差异,老一代的人都觉...原创 2019-05-07 15:12:51 · 3226 阅读 · 0 评论 -
没想到腾讯竟然开源一套Android原生UI框架!
今天在浏览技术新闻的时候,发现腾讯就在今天开源了一套 Android 原生的 UI 框架。你们有没有发现,腾讯特别喜欢干这种事,哪一种事呢?喜欢开源 UI 框架,小程序也是这样的。我看到这个新闻后,第一时间就下载了 Demo ,体验了这个原生的 UI 框架,可以说,真的是非常的不错。跟他们说的理念是一样的。这个开源框架就是:QMUI_Android ,它的 Slogan 是:提高 Androi...原创 2019-05-20 10:51:58 · 3012 阅读 · 1 评论 -
我的在线编程工具
1.json.cnJson中文网致力于在中国推广Json,并提供相关的Json解析、验证、格式化、压缩、编辑器以及Json与XML相互转换等服务。(1).json在线解析(2).什么是json(3).json解析代码(4).json组件2.Tool.lu程序员的工具箱。工具在手,事半功倍,工作无忧。可支持在线运行php,c,c++,go,python,java,等主流语言,页...原创 2019-05-10 17:19:46 · 2314 阅读 · 0 评论 -
数据库连接池
什么是数据库连接池呢?数据库连接池(Connection Pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地分配池中的连接进行申请、使用、释放。由于数据库连接的创建和断开是一个耗时性的操作,同时对数据库会造成安全隐患。因此,在程序初始化时集中创建多个连接,并将其集中管理供程序使用,可以保证较快的数据读写速度且提高系统的安全可靠性。连接池是创建和管理一个...原创 2019-05-15 19:03:58 · 643 阅读 · 0 评论 -
JS事件绑定的常用方式实例总结
常用的事件绑定的几种方式有三种:直接在 dom 元素上进行绑定。用 on 绑定。用 addEventListener、attachEvent 绑定。一、直接在 dom 元素上进行绑定<input id="btn1" type="button" onclick="test();" />二、用 on 绑定兼容性:在IE,FF,Chrome,Safari,Mozilla,Op...原创 2019-05-24 11:41:50 · 530 阅读 · 0 评论 -
SpringBoot集成Swagger,Postman,newman,jenkins自动化测试.
环境:Spring Boot,Swagger,gradle,Postman,newman,jenkinsSpringBoot环境搭建。Swagger简介Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。一、SpringBoot集成Swagger1.build.gradle增加swagger相关jar包,maven项目同理。2.增加SwaggerConfi...原创 2019-05-29 16:36:23 · 3997 阅读 · 0 评论