![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序人生
文章平均质量分 86
阿里官方退休架构师
本人曾在阿里巴巴工作过十多年,因为年纪大了退休。在这里分享一些技术心得,望能帮助到更多的人。
展开
-
很哇塞的Java系列实战项目
最近收到一位求职者的简历,先来看看个人技能,如下:看完啥感觉?针对这份简历,我感觉技术栈与项目用到的技术严重不匹配,罗列了很多技术栈,但是项目中用到技术又屈指可数,这样的简历只能证明曾学过,不能证明具备实际应用的经验,就如下图“站不稳”。当前人才泛滥的时代,有项目经验的人才是稀缺的,而不是号称会xx技术的人。但是我发现,不少从事几年Java开发的工程师,好的项目经验这块普遍乏力和稀缺。大部分每天都是不断重复枯燥的CRUD,知识水平一直局限在使用阶段,写不停的业务逻辑,也至于无法停下脚步深入思原创 2021-07-29 20:24:11 · 242 阅读 · 0 评论 -
一篇文章带你熟练netty管道传播
一、基础铺垫1. JAVA中的基本位运算符运算符 描述 & 与 | 或 ~ 非 ^ 异或 << 左移 >> 右移 2. 位运算解释与实例&(与)十进制 二进制 3 0 0 1 1 5 0 1 0 1 & 后结果:1 0 0 0 1 即:对应位都为 1 时,才为 1,否则全为 0。|(或)十进制 二进制 3 0 0原创 2021-07-29 14:02:37 · 300 阅读 · 1 评论 -
厉害了,Netty 轻松实现文件上传!
今天我们来完成一个使用netty进行文件传输的任务。在实际项目中,文件传输通常采用FTP或者HTTP附件的方式。事实上通过TCP Socket+File的方式进行文件传输也有一定的应用场景,尽管不是主流,但是掌握这种文件传输方式还是比较重要的,特别是针对两个跨主机的JVM进程之间进行持久化数据的相互交换。而使用netty来进行文件传输也是利用netty天然的优势:零拷贝功能。很多同学都听说过netty的”零拷贝”功能,但是具体体现在哪里又不知道,下面我们就简要介绍下:Netty的“零拷贝”主要体现在原创 2021-07-28 15:22:47 · 385 阅读 · 0 评论 -
详解Netty组件: Channel
1.1 AbstractChannel构造通道是Netty的核心概念之一,代表网络连接,由它负责同对端进行网络通信,既可以写入数据到对端,也可以从对端读取数据。Netty通道的抽象类AbstractChannel的构造函数如下:private final DefaultChannelPipeline pipeline;private final Channel parent;protected AbstractChannel(Channel parent) { this.pare原创 2021-07-28 15:17:53 · 275 阅读 · 0 评论 -
详解Netty组件: Bootstrap类
1 介绍Bootstrap类是Netty提供的一个便利的工厂类,可以通过它来完成Netty的客户端或服务端的Netty组件的组装,以及Netty程序的初始化和启动执行。Netty的官方解释是,完全可以不用这个Bootstrap类,可以一点点去手动创建通道、完成各种设置和启动注册到EventLoop反应器,然后开始事件的轮询和处理,但是这个过程会非常麻烦。通常情况下,使用这个便利的Bootstrap工具类的效率会更高。在Netty中有两个引导类,分别用于服务器和客户端ServerBootstrap原创 2021-07-28 15:15:35 · 518 阅读 · 0 评论 -
Springboot + netty + rabbitmq + myBatis系列(二) Netty 及心跳机制的 引入
前言WebSocket是 Html5 开始提供的一种浏览器与服务器间 基于TCP的一种新的网络协议 进行全双工通信的网络技术,支持数据在客户端与服务端双向传输,只要握手成功,两端会打开一个长连接进行持续交互。优点及作用Http协议的弊端:Http协议为半双工协议。(半双工:同一时刻,数据只能在客户端和服务端一个方向上传输)Http协议冗长且繁琐 易收到攻击,如长轮询 非持久化协议WebSocket的特性:单一的 TCP 连接,采用全双工模式通信对代理、防火墙和路由器透原创 2021-07-28 14:54:06 · 522 阅读 · 0 评论 -
Netty 快速入门
本篇文章主要介绍如何快速学习、认识Netty,你也可以把它理解为 学习介绍 、快速入门。强烈建议你收藏此篇文章,方便后续查阅。Nettynetty 是一个基于 NIO 模型,实现的 高性能、弹性、可拓展性 的 异步事件驱动 网络应用程序框架。你可以使用她快速 开发 稳定、灵活 的 客户端、服务端 应用。官方介绍请看 here 。体系结构在入手之前,我们先来看看技术的整体架构(不喜欢此节,你可以直接跳过去 [get start])netty 体系结构 核心组件这里会列出netty核心组原创 2021-07-28 14:27:37 · 139 阅读 · 0 评论 -
jvm垃圾回收算法
引入我们知道,堆内存的空间是固定的,可以将内存空间理解为一个定长的数组,每次新建对象的时候,都会根据对象的大小,在数组中,按顺序选取一段长度来存储,这样的话,虽然最终是按顺序排列下来了,但是我们知道,每个对象的大小不一样,可能第一个对象占的是0,但是第二个对象会占用1-5, 我们想要删除那些无用的对象,需要有两个步骤,一是需要知道哪些对象是无用的,然后就是删除对象。但是在删除对象的过程中,如果0位置的对象删除了,后续对象没有0能放下的,只能一直往后排,这样的话会出现很多空的位置,这就是内存碎片,会占用大原创 2021-07-28 13:51:20 · 79 阅读 · 0 评论 -
深入理解JVM - 实战JVM工具
这篇文章主要讲述如何根据最原始的命令jstat对于JVM进行分析和调优,当然并不是所有的案例都可以通过调优实现的,所以这里也会有个别通过修复代码BUG进行调优的案例。 之所以拆成上和下是考虑到文章篇幅的问题,个人也不喜欢动不动就万字的文章,但是要分析和说明案例的场景确实要不少的文字描述,所以**这些文章会看的很累!**请在精力较好的时候阅读。常用工具介绍: 工具简单提一下,其实写出来没啥意义,没有几个人会去专门背命令的,更多的是在实际的案例上如何使用才是重点。jstat命令:命令原创 2021-07-28 13:42:17 · 100 阅读 · 0 评论 -
spring-boot-starter自动配置的理解
spring boot相比spring之所以简化很多就是因为spring boot搭建一个项目的时候可以引入多个starter,这样就可以直接使用不需要过多的各种配置。spring官方提供了不少starter,而我们自己也可以自定义starter,为了能够区分,从命名上进行了规范。官方的starter名称为:spring-boot-starter-xxx,而自定义的为xxx-spring-boot-starter。spring boot能够帮助我们简化开发主要就是基于它提供的起步依赖和自动配置。起步原创 2021-07-27 15:13:25 · 193 阅读 · 0 评论 -
springboot自动装配源码解析
springboot作为一个优秀的脚手架的框架,封装集成了很多组件功能,比如以前要初始化一个springmvc+spring的框架,需要配置很多xml文件才能完成,springboot就将类似很多配置集成了,开发人员只需要简单的注解或者配置文件就可以完成框架搭建,对初级开发使用人员很友好。springboot的思想是约定>配置,只要按照springboot的配置,开发人员便很容易上手。但是,开发人员需要配置的东西越少,则表明封装的程度越高,黑盒程度越高,所有我们有必要对springboot的源码就原创 2021-07-27 15:10:13 · 120 阅读 · 0 评论