
学习
干货很多的大飞
前美团项目高级研发工程师,北京道隆华尔项目负责人
展开
-
阿里架构师不讲武德,坦言道为什么应用架构需要分类思维?
模块(Module)、组件(Component)、包(Package),这些概念对于我们技术同学并不陌生,但并不是所有人都能理解其要义。深入理解之后,我才发现,其背后的深意是分类思维。而这种分类也是应用架构的核心所在,通过不同粒度、不同层次的分类,把复杂的软件系统实现控制在可以被理解、被维护的程度。否则,对于动则上100万行代码的软件,人类根本没有办法理解和维护。试想一个极端情况,假如没有这些概念协助我们分类,我们把所有业务逻辑都写在一个类里面,会是什么样的结果呢?我们很多的“非人类”系统,正是因为原创 2020-11-28 14:01:27 · 152 阅读 · 0 评论 -
来来来!告诉你为什么要用Java开发高频交易系统
过去 14 年,我们一直用 Java 开发外汇算法交易系统,并使用了很棒但价格实惠的硬件。这一切是怎样实现的?在高频交易领域,自动化应用程序每天需要处理数亿个市场交易信号,并在全球各交易所之间发送成千上万的订单。为了保持竞争力,响应时间必须始终保持在微秒级,特别是在发生类似“黑天鹅”事件的异常高峰期。在一个典型的架构中,金融市场的交易信号被转换成内部的市场数据格式 (使用各种协议,如 TCP/IP、UDP 组播和多种格式,如二进制、SBE、JSON、FIX 等)。这些规范化的消息被发送到原创 2020-11-16 18:09:47 · 498 阅读 · 0 评论 -
收藏了!Java程序员提升核心竞争力,“数据结构”不得啃一口?
数据结构分类数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示:每一种数据结构都有着独特的数据存储方式,下面为大家介绍它们的结构和优缺点。1、数组数组是可以在内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。例如下面这段代码就是将数组的第一个元素赋值为 1。int[] data = new int[100];da原创 2020-11-06 22:29:18 · 135 阅读 · 0 评论 -
太爽了!花了6个月18天,肝完阿里技术官的笔记,40*16K
首先阿里巴巴作为国内互联网行业的领头羊,培养了一代又一代的IT技术人才,很多想进阿里这些互联网大厂的程序员看中的不仅仅是高薪+丰厚的福利待遇,同样也看中了学习氛围以及人脉圈子,这些资源在你以后对你来说都将是一笔财富。如果你想进大厂,一定是要求自身技术栈能达到企业的需求甚至超过企业的需求,关于技术如何提升的问题,一直以来都备受关注,IT行业发展的很快,程序员要保持不断学习,因此,就算是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差距。我一朋友之前在快手做Java开发,他自己认识的一朋友在阿里工原创 2020-11-05 21:26:55 · 202 阅读 · 4 评论 -
本不想进Alibaba受罪,但还是“扛不住”高薪的诱惑!(Java岗)
前言Alibaba作为国内互联网行业的“老大”,一直以来也是很多“数码宝贝”梦寐以求的公司,我个人是做Java开发的,阿里这些年也开发了很多屌炸天的开源项目,像什么Spring Cloud Alibaba,开源Java诊断工具Arthas,Apache Dubbo,JDBC连接池、监控组件Druid等等,属实牛逼!阿里能做到这样,也不知道各位“数码宝贝”花了多少个日日夜夜换来的,因此我本也不想进大厂累死累活的。之前每个月在北京每个月拿个小30k,日子过的也还算不错,但自从有了娃以后,越发有种家庭责任原创 2020-08-31 14:34:26 · 574 阅读 · 0 评论 -
太强了!不愧是阿里技术官,Spring实战精髓全在这本限量版笔记里
前言Spring,一定是Java程序员必备技能之一,市面上99%的互联网公司都在Spring框架,因此在面试过程中一定是高频面试题。很多Java架构师也认为,学Java主要就是学Spring,Spring也是你在三年内必须要掌握的一项重要技术。今天跟大家分享的这份“限量版Spring实战笔记”或许有一小部分人看过,估计也没有看透彻就收藏吃灰了,不妨今天再好好的看一看。没看过的一定要拿着好好的看完这份笔记,看完之后对于自己的技术栈一定会有很大程度的升华。关于这份Spring实战限量笔记,我只能在原创 2020-08-19 17:52:02 · 386 阅读 · 0 评论 -
活神仙!第一次看到如此详细的Spring源码笔记,不愧是源码No.1
有一说一Spring算是Java程序员必备的技能,市面上99%的互联网公司都在使用Spring框架,可以说学Java就是在学Spring,特别是在前三年,一定要把Spirng的基础知识给吃透了,然后再有深度的去学习,学习Spring的源码。Spring恰好是我学习的第一个开源代码,耗了我很大的时间和精力去做这件事,但是我发现自己把Spring源码读的差不多的时候,再去读其他的源码,就轻松很多了,因为相通的东西很多。深入读懂Spring源码可以说是升职加薪”必经之路,咱们今天就来讨论一下怎么去学习Sp原创 2020-08-11 21:05:54 · 308 阅读 · 0 评论 -
不会吧,连Java 多线程线程安全都还没搞明白,难怪你面试总不过
什么是线程安全?当一个线程在同一时刻共享同一个全局变量或静态变量时,可能会受到其他线程的干扰,导致数据有问题,这种现象就叫线程安全问题。为什么有线程安全问题?当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题,但是做读操作时不会发生数据冲突问题。线程安全解决办法?1、如何解决多线程之间线程安全问题?答:使用多线程之间同步synchronized或使用锁(lock)2、为什么使用线程同步或使用锁能解决线程安全问题呢?答:将可能原创 2020-07-24 16:38:36 · 206 阅读 · 0 评论 -
图文详解分布式一致性算法,这种方式你确定不搞一下?
集中式与分布式集中式就是将所有的业务都部署在一个中心主机(节点)上,所有的功能都由这个主机集中处理。特点部署结构简单、不需要考虑多个主机之间的分布式协作问题。分布式分布式系统:指将硬件或者软件组件部署在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。特点分布性:多台计算机可空间上随意分布,跨机房、跨城市都可以。 对等性:分布式系统中没有主/从之分,都是对等的节点或者服务。副本:指分布式系统对数据或服务冗余,以此提供高可用。数据副本:是指在不同的节点上持久.原创 2020-07-23 15:22:51 · 463 阅读 · 0 评论 -
Java8用了这么久了,你确定Stream流用法及语法都知道吗?
1.简介Stream流 最全的用法Stream 能用来干什么?用来处理集合,通过 使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询,Stream API 提供了一种高效且易于使用的处理数据的方式为什么用Java 8 Stream ?因为 操作简单为什么操作简单?因为 Lambda 表达式,它极大的提高了编程效率和程序可读性怎么操作流? 首先你的有个数据源(数组、集合),操作会产生新的流对象,原来的流对象不会改变流用法有结束操作,这种代码不是你写了一个方法就原创 2020-07-20 10:45:23 · 331 阅读 · 0 评论 -
从位运算表达式中看JVM的栈帧设计,这下我彻底看懂了
0x00 前情提要最近接盘了公司的分布式文件存储系统,其底层不出意外的采用FastDFS以及HBase作为存储中间件,在熟悉代码的时候,对FastDFS客户端的部分代码产生了疑惑,如果你看完没有疑惑就没必要继续往下阅读了,关掉页面左转,刷刷沸点,摸摸鱼不香吗?如下图所示这是一个将字节数组转换为long的函数, 格式为big-endian(大端)FastDFS的协议头中有8个字节用来标识数据包的长度,此函数就用于获取数据包的长度初看觉得这就是普通的移位操作没有任何疑惑,再细看发现不少问原创 2020-07-17 16:51:12 · 185 阅读 · 0 评论 -
连RabbitMQ的5种核心消息模式都不懂,也敢说自己会用消息队列!
摘要以前看过的关于RabbitMQ核心消息模式的文章都是基于JavaAPI的,最近看了下官方文档,发现这些核心消息模式都可以通过Spring AMQP来实现。于是总结了下RabbitMQ的实用技巧,包括RabbitMQ在Windows和Linux下的安装、5种核心消息模式的Spring AMQP实现,相信对于想要学习和回顾RabbitMQ的朋友都会有所帮助。简介RabbitMQ是最受欢迎的开源消息中间件之一,在全球范围内被广泛应用。RabbitMQ是轻量级且易于部署的,能支持多种消息协议。Rab原创 2020-07-13 16:23:05 · 296 阅读 · 0 评论 -
使用Spring Boot的REST Web服务的简单工作示例
在本文中,我们将介绍可以响应HTTP请求的非常基本的Web服务。对于希望开始使用Spring Boot的人来说,此博客非常理想。为什么选择Spring Boot?那么,为什么您作为Java开发人员应该关心Spring Boot?好吧,有很多很好的理由!Spring首先,Spring是开源的,这意味着它由社区不断维护和测试,并且是免费的或免费的。第二,根据Hotframeworks,它是2019年使用最广泛的Java Web框架。第三,有一种绝佳的方法可以快速启动并运行Spring应用程序..原创 2020-07-10 21:26:09 · 166 阅读 · 0 评论 -
从简历被拒到收割3个大厂offer(阿里、网易、海康威视),我用了2个月的时间破茧成蝶!
其实互联网职业可以大致分两个阶段,在毕业后的3到5年内主要都是以学习、积累为主,从一开始啥都不懂的校园“新鲜人”向“职业人”转变。如果你是Java开发者,在这个阶段你会学习:1、基础的Java知识,多线程、集合类、JVM2、进阶知识,设计模式、系统设计和方法论3、主流框架,Spring、Spring Boot、MyBatis……4、微服务,Dubbo、ETCD、Spring Cloud……5、数据库,Redis、ES、MySQL、分库分表分享一下我的学习之路2017从杭州师范原创 2020-07-07 17:21:39 · 6794 阅读 · 6 评论 -
阿里三面试题:为什么抽象类无法实例化,但是可以new出来实例?
背景,二面阿里过关,三面的时候面试官问了我很多难题,挑选一个作详细解析。大致的经过是这样的:他问的:“为什么抽象类无法实例化,但是可以new出来一个实例,官方这么说是什么意思?而且去了各类论坛,回答的都是比较含糊其辞,切不到重点。说什么是面向对象设计的规范balabala…”.我心里想,这貌似是一个老生常谈的问题…我回答说:“我给你一个demo,带你debug一下,流程走完了,剩下的你就自己体会下”定义一个抽象类Animal定义Animal的两个子类Tomcat..原创 2020-07-07 14:15:43 · 910 阅读 · 0 评论 -
JDK动态代理一定要有代理对象吗?请你结合Mybatis回答
动态代理有一段时间没有写文章了, 主要是回想起这两年多的时间,多多少少,每个知识点差不多都有写到了, 一时也想不起什么新鲜的知识分享给大家.今天写动态代理,主要是在看Mybatis源码时,发现真的是把动态代理用的是太6 了, 感叹之余,有一些心得,和大家分享一下.我所理解的动态代理其实网上对动态代理的解释有很多了,我就不赘述那些概念了, 于小刀看来, 目的只有一个,那就是可以自定义逻辑,可以添加逻辑. 在本文中,我想写的是可以自定义逻辑, 在此之前,我们先看一下通常的动态代理的代码动态代理代原创 2020-07-06 16:20:12 · 315 阅读 · 0 评论 -
中国互联网热衷造轮子!去哪儿网开源消息中间件QMQ,京东也搞JMQ
中国互联网热衷于“造轮子“!在Github上查看消息队列的时候,那个专栏就透露:京东已推出自己的消息队列产品 JMQ,并且将很快开源问世!之后,我很少留意过 JMQ 的消息。今天偶然之间,看到去哪儿网也搞了一个消息中间件 QMQ。根据去哪网的开发团队透露,QMQ 内部已经使用了 6 年。之所以,选择自研 QMQ 是因为当时并没有“优秀且适合去哪网“的 MQ。首先因为技术栈去哪网排除了erlang 开发的 RabbitMQ,而Kafka以及 Java 版 Kafka 的 MetaQ ...原创 2020-07-01 21:55:22 · 421 阅读 · 0 评论 -
微服务海量日志怎么处理?使用这款工具效率提升百倍
背景在企业级的微服务环境中,跑着成百上千个服务都算是比较小的规模了。在生产环境上,日志扮演着很重要的角色,排查异常需要日志,性能优化需要日志,业务排查也需要日志等等。然而在生产上跑着成百上千个服务,每个服务都只会简单的本地化存储,当需要日志协助排查问题时,很难找到日志所在的节点。也很难挖掘业务日志的数据价值。那么将日志统一输出到一个地方集中管理,然后将日志处理化,把结果输出成运维、研发可用的数据是解决日志管理、协助运维的可行方案,也是企业迫切解决日志的需求。我们的解决方案通过上面的需求我原创 2020-06-30 16:30:04 · 407 阅读 · 0 评论 -
通过12天实践计划(秒杀Netty、Redis和ZK),我熟练掌握了分布式高并发核心技术栈
移动时代、5G时代、物联网时代的大幕已经开启,它们对于高性能、高并发的开发知识和技术的要求抬升了Java工程师的学习台阶和面试门槛。就拿面试为例,以前高并发场景面试题只出现在BATJ一线大厂企业,现在覆盖到了跟Java开发有关的任何行业。为此,我制定了12天高并发、分布式核心知识实践学习计划,以便更快掌握分布式、高并发与高性能之间的核心知识,计划表如下:《十二天高并发、分布式核心技能学习计划笔记》领取方式由于笔记的文档过大,不易全部展示内容,只取得核心图文并述,已被小编整理成完整的PD.原创 2020-06-29 20:37:13 · 274 阅读 · 0 评论