能力说明:
精通JVM运行机制,包括类生命、内存模型、垃圾回收及JVM常见参数;能够熟练使用Runnable接口创建线程和使用ExecutorService并发执行任务、识别潜在的死锁线程问题;能够使用Synchronized关键字和atomic包控制线程的执行顺序,使用并行Fork/Join框架;能过开发使用原始版本函数式接口的代码。
暂时未有相关云产品技术能力~
公众号:知了一笑
SpringBoot3集成KafkaKafka是一个开源的分布式事件流平台,常被用于高性能数据管道、流分析、数据集成和关键任务应用,基于Zookeeper协调的处理平台,也是一种消息系统,具有更好的吞吐量、内置分区、复制和容错。
RocketMQ因其架构简单、业务功能丰富、具备极强可扩展性等特点被广泛应用,比如金融业务、互联网、大数据、物联网等领域的业务场景;
SpringBoot3集成ElasticSearchElasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,适用于各种数据类型,数字、文本、地理位置、结构化数据、非结构化数据;
Redis典型的应用场景就是数据缓存能力,用来解决业务中最容易出现的查询性能问题,提升系统的响应效率;其次就是分布式锁机制,用来解决分布式系统中多线程并发处理资源的安全问题;
SpringBoot3安全管理SpringSecurity组件可以为服务提供安全管理的能力,比如身份验证、授权和针对常见攻击的保护,是保护基于spring应用程序的事实上的标准;
Quartz由Java编写的功能丰富的开源作业调度框架,可以集成到几乎任何Java应用程序中,并且能够创建多个作业调度;
项目工程中,集成数据库实现对数据的增晒改查管理,是最基础的能力,通常涉及三个基础组件:连接池,持久层框架,数据源。
按照业务拆分的方式称为垂直分片,又称为纵向拆分,它的核心理念是专库专用;水平分片又称为横向拆分,是通过某些字段根据某种规则将数据分散至多个库或表中。
项目中文件管理是常见的复杂功能,文件的类型多样,处理起来比较复杂,其次文件涉及大量的IO操作,容易引发内存溢出;
SpringBoot3之Web编程SpringBoot3之Web编程案例,涉及多拦截器,页面交互与参数解析,Swagger接口文档,Junit单元测试等功能。
SpringBoot3进阶用法,主要涉及如下几个核心功能点:调度任务,异步处理,邮件发送,应用监控,切面编程。
SpringBoot3基础用法SpringBoot3基础案例:环境搭建,入门案例,日志组件,全局异常处理,工程打包,服务启动关闭;
不论是应用还是运行层面的配置,都会涉及到一个基本的逻辑:配置可以抽取出来单独管理,在流程中直接引入该配置即可;
在K8S集群中是通过Pod组件来部署应用服务,Deployment组件实现Pod编排管理,Service组件实现应用的访问;
通过Deployment控制器,可以对应用进行快速的编排,比如声明Pod的发布方式,更新和回滚策略,维持Pod副本数量;
JDK中「SPI」原理分析SPI是JDK内置的服务提供加载机制,可以为服务接口加载实现类,解耦是其核心思想,也是很多框架和组件的常用手段;
关于画图和工具选择;两句话能说明白;【1】示意清楚的都是「好图」;【2】免费,够用,支持云存储,都是好的画图「工具」;
不论是软件环境还是虚拟机系统的搭建,基本都是通过下载软件安装包,然后在本地部署和定期更新以及运行,基于这个场景再去理解容器和Pod组件,会轻松许多;
在微服务工程的技术选型中,会涉及到很多组件的集成,最常用包括:缓存、消息队列、搜索、定时任务、存储等几个方面;随着系统的服务数量上升,统一管理各种组件的复杂度也会提高;
K8S作为开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理;
短信在实现的逻辑上,也遵循消息中心的基础设计,即消息生产之后,通过消息中心进行投递和消费,属于典型的生产消费模型;
程序中的异常可以反映系统的缺陷和待优化的点,并且是无法完全避免的,如何处理异常和降低异常出现的频率,是系统质量的基础保障;随着分布式架构的流行,各种复杂的请求链路给异常处理带来了巨大的麻烦;
有的任务只强调执行过程,并不需要追溯任务自身的执行结果;有些任务即强调执行过程,又需要追溯任务自身的执行结果;
最近遇到这样一个场景:在业务正式开始前1-2天,需要导入一批来自合作渠道的数据,在业务周期结束后,再将同一批数据导出,交付给渠道方;
IO流中「线程」模型总结客户端与服务端进行通信交互,可能是同步或者异步,服务端进行「流」处理时,可能是阻塞或者非阻塞模式,理逻辑看就是:读取数据-业务执行-应答写数据的形式;
什么是知识管理?简单的说,就是对熟悉的知识内容,建立一个系统性的管理框架,和一个动态的更新机制,以便全面和深入的消化知识并应用于实践;
订单业务一直都是系统研发中的核心模块,订单的产生过程,与系统中的很多模块都会高度关联,比如账户体系、支付中心、运营管理等,即便单看订单本身,也足够的复杂;
Netty是一个异步的,事件驱动的网络应用框架,用以快速开发高可靠、高性能的网络应用程序,提供网络传输能力的管理,支持常见的数据传输协议;
基于SpringBoot的版本,Tomcat集成的是9.0版本,参考Tomcat核心组件描述,对于框架有大致的了解后,再去分析集成原理,会更容易把握主线逻辑;
应用层:HTTP超文本传输协议,基于TCP/IP通信协议来传递数据;传输层:TCP传输控制协议,采用三次握手的方式建立连接,形成数据传输通道;网络层:IP协议,作用是把各种传输的数据包发送给请求的接收方;
在Seata的AT模式中,在服务执行完成后,直接进行RM提交和资源释放,提供了对CAP理论相对平衡的解决方案,并且没有侵入业务工程;
ES南墙,建议绕开;作为最常用的搜索引擎组件,在系统架构中发挥极其重要的能力,可以极大的提升数据的加载和检索效率;
解决常规的JVM异常时,通常依赖JDK中基础工具即可完成问题的定位,从而进行分析和解决,不过这些需要对基础工具熟练使用才行,而很多JDK自身的能力又是经常被忽略的;
活动作为运营的手段,根本目的是为了更好的连接产品和用户,所以很考验运营方案的策划,在活动的生命周期内完成对业务指标的达成,比如新用户流量,老用户唤醒等;
服务端开发,绕不开对Spring框架的深度学习,如果单纯站在源码阅读的角度,建议先熟读SpringBoot启动流程,然后再适当扩展其他源码块;
Skywalking是APM规范的国产开源分布式链路追踪系统,APM即应用性能管理,支持对SpringCloud微服务集成,并且无代码层面的侵入;
从工作的这几年实践经验来看,写文档原则上本着复杂的事项细写,简单的事项简写或者不写,卷可以但又不闲的慌;
很认同的一个观念是:把事情一次性做好,就是最低的成本和最高的效率;所以需求再多,也要质量为王;如果因为产品的体验差影响业务,那么用户、平台、研发谁才是真正的大冤种?
专业的工作能力和经验积累包括多个方方面面,技术、业务、软能力,并且这种沉淀是一个持久的过程。
在软件开发领域中,流程协作一直是热门的话题之一,不同的组织架构中,定义不同角色和人员的职责范围,并且通过流程规范来管理不同角色之间的衔接机制,以求不断提高协作效率。
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。
越是复杂的系统,越是经验丰富的开发或者运维,对监控系统就越是有执念,尤其是全链路的监控,底层,网络,中间件,服务链路,日志观察预警等
分布式系统架构的明显特点,就是按照业务系统的功能,拆分成各种服务,每个服务下面都有自己独立的数据库,以此降低业务间的耦合度,隔离不同的数据库保证系统最大的稳定性等。
如何架构分布式系统,这说不好,但是如何判断分布式架构是否好,这很好说:服务良好的扩展性,高可用性,例如高并发业务随时扩展,提高系统可用性,处理能力,这是必须具备的基础特性。
Seata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了AT、TCC、SAGA、XA事务模式,为用户打造一站式的分布式解决方案。
在核心业务处理完成之后,发送消息通知,允许失败,在指定时间段内或者指定重试次数之后,允许消息丢失情况存在,即消息的不可靠性。
分布式事务机制要保证不同服务之间形成一个整体性的可控的事务,业务流程上的服务除非全部成功,否则任何服务的操作失败,都会导致所有服务上操作回滚,撤销已经完成的动作。
函数式编程的核心要素:传入参数,执行逻辑,返回值,也可以没有返回值。函数式的编程风格侧重描述程序的执行逻辑,不是执行过程。
代理模式给某一个(目标)对象提供一个代理对象,并由代理对象持有目标对象的引用,所谓代理,就是一个对象代表另一个对象执行相应的动作程序。