自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MaoLin Tian's Blog

from Bird to God(mdzz的直译)

  • 博客(598)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 【实用工具指南 三】CHAT-GPT4接入指南

好消息,CHAT-GPT4终于开放订阅了,聪明的人已经先用上了,先上个图。但是去订阅的时候发现银行卡验证不通过,后来一查必须是老美的州才行,于是买了个接下来就比较简单,直接找客服把GPT的充值界面和CVC信息截图发给他就搞定了。不过肉痛,开卡费要10美元。目前发现的几个有用功能。

2024-01-09 22:33:06 589

原创 【领域驱动设计 学习目标及大纲】从CRUD到架构设计

2003 年,Eric Evans 写了《领域驱动设计:软件核心复杂性应对之道》一书,正式提出了这种方法。领域驱动设计的英文是 Domain-Driven Design,所以简称 DDD。DDD 是一种开发复杂软件的系统化的方法学和思想,通俗的说就是提供了一套复杂软件开发的标准步骤方法学是研究和制定研究方法的学科,以面向对象方法学如果 Java 代码写得特别溜,可以说掌握了面向对象的编程方法如果熟悉面向对象的设计原则,掌握很多设计模式,那可以说懂面向对象的设计方法;

2023-11-26 19:22:11 341

原创 【工作中问题解决实践 九】使用@JsonTypeInfo实现请求数据对象多态

JsonTypeInfo注解的使用可以降低同一类数据处理接口的提供数量,调用方可以只调用一个接口,接口内部可以依据调用方组装的Model和内置参数确定处理逻辑,扩展性和易用性都很强,在数据同步的场景里挺值得一用的。

2023-08-14 23:03:49 1317

原创 【生产问题排查 三】Kafka消费者消费堆积且频繁rebalance

照例总结一下,虽然基础服务的一些中间件一般都由基础架构部门维护,但还是要对这些中间件的配置和使用要有所了解,这样出了问题才能快速定位问题、解决问题,避免影响线上稳定性。

2023-08-10 00:39:22 1660

原创 【生产问题排查 二】一次内存泄露排查-MAT使用指南

照例总结一下,线上出了问题不要慌,也别想着保留现场,先止损!平时的报警机制要建立好且阈值要低些,这样才能先于业务发现并解决问题。还有就是MAT是真香!

2023-08-08 23:42:48 1166

原创 【生产问题排查 一】Spring中事务传播的问题排查

照例总结一下,在单一的数据操作方法不要加事务,事务应该是一系列操作指令的聚合,添加了细粒度的事务可能会导致上层使用者在方法添加事务时使用了错误的传播机制。如果内外层的方法都很复杂,则基于自己的预期进行考虑,如果不希望内层方法影响外层方法,可以使用异常捕获加内层事务的REQUIRES_NEW传播机制解决。需要注意的是Spring的事务是基于AOP实现的,所以对象内部方法调用,不会通过Spring代理,也就是事务不会起作用,这点也非常重要。

2023-08-06 17:53:46 1135 3

原创 【书影观后感 十四】左晖-做难而正确的事

写的有些随意,行文主线是对自己映像深刻的一些观点做了一些摘录并给出自己的一些理解。给出一个抽象化的愿景吧:人人链接到信用网络,相互坦诚相待,相互尊重,保持基本的同理心、初心和朴素的价值观。看着有点虚哈,如同老左说的,愿景就是个画面吧,想象一下李汝珍的《镜花缘》中 **君子国** 吧。

2023-06-11 22:54:03 1157

原创 【工作中问题解决实践 一】最小单元染色法的应用

最近在处理费率和保底费的优惠及标准区间。问题本质就是:标准合作区间是一个【时间段+标准值】,优惠合作区间是多段【时间段+标准值】,并且各个时间段的开始和结束日期可以随意指定,优惠区间和标准区间重合部分按照优惠值计算,非重合部分按照标准区间值计算。......

2022-08-12 15:31:38 294

原创 【Java设计模式 学习目标及大纲】高质量代码的标准及实现路径

易维护、易读、易扩展、灵活、简洁、可复用、可测试的代码就是高质量的代码,而高质量代码的达成路径工具箱包括:面向对象设计思想是基本指导思想,是很多设计原则、设计模式的实现基础;设计原则是代码设计的抽象经验总结、是设计模式设计的指导原则;设计模式是代码设计的一套具体解决方案或设计思路,主要用来提高代码可扩展性;编程规范是一套可执行的代码编写规范,主要用来提高代码的可读性;代码重构依赖面向对象设计思想、设计原则、设计模式、编程规范实现,主要用来提高代码的可维护性。也可以这么理解:1个设计思想、6个设计原则、23个

2022-05-03 22:21:30 991

原创 【Java设计模式 前言】我为什么要学习设计模式

中级人员的心智“或许这里我需要一个单件模式。悟道者的心智能够看到模式在何处能够自然融人。悟道者的心智并不急切于使用模式,而是致力于最能解决问题的简单方案。悟道者的心智会考虑对象的原则,以及它们之间的折衷。当对模式的需要自然出现时,悟道者的心智就拿捏得宣地采用模式。悟道者的心智也能看到相似模式之间的关系,以及它们在意图上的微妙差异。悟道者的心智也同于初学者的心智-不会让这此模式的知识过度影响设计的决策。

2022-03-06 17:04:35 476

原创 【团队技术知识分享 一】技术分享规范指南

技术分享时应秉持的基本原则:应有团队和个人、奉献者(统筹人)的概念,同时匹配团队激励、个人激励和最佳奉献者激励;团队应该打开工作内容边界,成员应该来自各内容方向;评分标准不应该过于模糊,否则没有意义,应由客观的基础分值以及分团队的主观综合结论得出。应有心愿单激励机制,促进大家共同聚焦到感兴趣的事情上;选题应有规范和框架,具体到某个小类,这样收获才有目标性,发布分享主题时大家才能快速判断是否是自己感兴趣的;流程和分享的模版应该有固定范式,避免随意的格式导致随意的内容,评分也应该部分参考于此;参会原则,应有

2022-02-25 18:05:04 2162

原创 【阿里巴巴Java编程规范学习 二】Java基本编程规约(下)

编程规约是比较重要的部分,按照基础和高级,我分成了两篇来学习,下篇篇涉及到**日期时间、集合处理、并发处理、控制语句**和**注释规约、前后端规约、性能规约**都是一些编程规约的高级部分内容。红色加粗字体为自己可能会犯的错误以及不规范的地方,蓝色结论部分为几条规则的归纳或一条规则的阐述。

2021-11-14 18:43:08 888

原创 【阿里巴巴Java编程规范学习 一】Java基本编程规约(上)

编程规约是比较重要的部分,按照基础和高级,我分成了两篇来学习,上篇涉及到命名风格、常量定义、代码格式和OOP规约都是面向对象基础部分和一些通识命名规范。红色加粗字体为自己可能会犯的错误以及不规范的地方,蓝色结论部分为几条规则的归纳或一条规则的阐述。

2021-11-13 16:25:01 778

原创 【工作中问题解决实践 三】深入理解RBAC权限模型

工作时遇到了需要设计一套权限系统,所以做了一些调研。目前业界比较通用的权限系统设计都是采用RBAC模型,那么我们详细理解下RBAC模型的概念以及一些实际使用中建议的使用规范:RBAC权限模型首先了解下RBAC权限模型的基本概念和几种模型分类。1 RBAC权限模型RBAC(Role-Based Access Control)即:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限,增加权限设置的扩展性。为什么要有角色的概念:对于批量的用户权限调整,只需调整用户关联的角色权限,无

2021-08-21 17:41:17 1572

原创 【Redis核心知识 八】Redis集群之Cluster模式及集群搭建

Cluster集群简介Cluster集群结构设计数据结构设计每个机器分为若干个槽slot,加机器和减机器都可以通过动态调整槽来实现Cluster内部通讯设计1,key先经过CRC算法进行计算2,计算结果%16384得到一个槽编号3,如果直接访问一次命中就直接取,否则就由客户端直接去目标机器找Cluster集群搭建...

2020-11-14 14:38:21 1031 1

原创 【Kafka从入门到放弃系列 二】Kafka集群搭建及基本命令

上一篇blog详细了解了kafka的基本概念、生产消费者模型、基本架构,我对kafka有了一个整体的认知,其整体框架其实可以理解为如下架构【一个Partion分区的leader和foller不会存储到一个broker上】:消息生产出来后依据topic发送到Kafka集群中去,由集群来管理消息,消费集群主动拉取到消息后消费【消费者的消费速度可以由自己来决定,可能会存在长连接轮询的浪费问题】,整体的消息和集群管理由Zookeeper来进行。Zookeeper启动Kafka安装...

2020-09-02 22:33:23 650

原创 【ElasticSearch从入门到放弃系列 五】ElasticSearch分布式集群搭建

上一篇blog介绍了ES的原理和基本使用方法,因为ES最厉害的地方就在于PB级别准实时的搜索能力,当然PB级的数据对于单个服务器去存储和检索还是很有难度的,所以ES一般使用时都使用分布式集群搭建。分布式相关概念级别概念集群 cluster一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch”。这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群节

2020-08-19 09:26:27 457

原创 【IPD流程学习 二】IPD主要流程

上一篇博客详细论述了产品开发过程中遇到的问题,看来不光是我自己感受到了,其实大家都有那种很累但是又没产出的感觉,是整体的流程机制出了问题,所以才要搞流程变革,而其中和我们开发人员最密切相关的就是IPD流程,了解了IPD的目标、核心理念以及涉及人员之后,来详细聊聊IPD的流程。概念与设计阶段:项目建立、组织、架构与概要设计的评审开发阶段:产品的详细设计、开发测试到上线的迭代流程验证阶段:产品...

2020-02-13 17:52:26 6623

原创 【工作中问题解决实践 四】动态解析Json结构最佳实践

前段时间武哥安排了个任务:把结构动态的Json数据结构解析出来。所以要求无论嵌套了多少层,都要拿到最终节点,并且给特定的节点赋予规则,让这一类json数据对应节点进行对比时,遵循节点的规则。这个任务其实可以拆解为三个任务:拿到这类json的标准结构描述,并且在节点上标记规则将json数据层层解构拿到所有节点,然后拿着数据节点去标准结构json里找到对应的节点,然后读取规则将节点和规则存储......

2018-07-24 16:24:24 4992 4

原创 【从零开始学架构 架构基础】二 架构设计的复杂度来源:高性能复杂度来源

性能差-》提升设计复杂度解决性能问题-》掌握如何编码和集群架构cover复杂的设计。高性能复杂度有单机和集群来源。单机主要通过操作系统(多进程、多线程)设计来压榨机器CPU进而提升性能,其设计复杂度体现在需要实现互斥、锁、进程通信等策略,所以要掌握并发编程技术。集群主要是搭建机器集群来扛住大的业务增量,其设计复杂度体现在任务分配(任务分配器、任务分配器与业务服务器连接管理、任务分配算法,其解决系统性能瓶颈的能力随着业务复杂度边际收益逐渐降低)和任务分解(业务逻辑垂直拆分,单项扩展或升级,其系统拆分带来的收益

2024-05-12 21:55:11 610 3

原创 【从零开始学架构 架构基础】一 架构设计的本质、历史背景和目的

Rank分层区分系统与子系统暂时隔离关注面,在一个系统层面上,其子系统就是角色Role,子系统之间的关系就是Relation,一个核心的业务流程Rule可能涉及多个子系统的交互。如果子系统就是最小层级业务系统,那么它从逻辑层面讲可能包含很多模块,从部署的角度讲也包含很多组件,单个子系统可以使用springBoot框架搭建,遵守其规范使用其功能;软件架构没有银弹,是以解决系统复杂度为目的而随业务演进的方法论。知道WHAT,WHY,才能更好的学习HOW。

2024-05-07 23:32:28 707 1

原创 【从零开始学架构 前言】整体的学习路线

本文是《从零开始学架构》的第一篇学习笔记,在工作6年左右的这个时间点需要有一些先行的理论来指导即将面临的复杂实践,以便在真正面临复杂实践的时候能有所参照。主要从以下几个方面和顺序来进行学习。

2024-05-06 22:53:56 444

原创 【Java程序员面试专栏 综合面试指南】资深程序员面试指南

想要实现多线程,必须在主线程中创建新的线程对象。Java 语言使用 Thread 类及其子类的对象来表示线程,在它的一个完整的生命周期中通常要经历如下的五种状态新建(NEW): 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态可运行状态(RUNABLE): RUNNABLE状态可以认为包含两个子状态:READY和RUNNING,就绪(READY): 处于新建状态的线程被start()后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件,只是没分配到CPU资源。

2024-04-04 22:26:26 133

原创 【软件系统设计 一】基本性能指标、系统组件、设计解题框架、常见设计题

随着年限的增加,感觉自身的系统设计能力应该有所提升,不能只是做简单的CRUD工作了,需要做一些系统设计、技术选型。在进入这套体系之前,需要对基础知识有一定的深度和广度的理解,包括不限于:Java体系、MySql、计算机网络、算法、数据结构、缓存、消息、搜索、设计模式等等。相当于内力积攒起来后融汇贯通。

2024-03-27 23:30:05 972

原创 【工作中问题解决实践 十】线上JVM参数该如何配置

在线上部署Java应用时,可以通过Java虚拟机(JVM)的参数来控制内存的分配和管理。

2024-03-25 23:23:53 797

原创 【生产问题排查 四】线上如何排查CPU100%的情况

当我们把服务发布到服务器器,可能会因为一些问题造成我们的服务器CPU被打满甚至超过100%,那如果我们想知道到底上在做什么操作导致CPU持续过高呢?因为在线上只能通过日志看问题,或者排查到哪个进程或者哪个线程持续占用CPU。然后才能找到具体问题在哪里才能进行解决,具体排查过程。

2024-03-25 22:48:45 678

原创 【Java程序员面试专栏 算法思维】六 高频面试算法题:动态规划

默认长度比数组长度+1,目的是初始化填0,这样当A或B长度为0时,第一行第一列默认为0正好处理边界问题。

2024-03-02 12:03:28 143

原创 【Java程序员面试专栏 算法思维】四 高频面试算法题:回溯算法

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊回溯算法,主要就是排列组合问题,所以放到一篇Blog中集中练习网格搜索。

2024-02-26 22:53:20 209

原创 【Java程序员面试专栏 算法思维】三 高频面试算法题:搜索算法

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊搜索算法,以岛屿问题为切入点练习,所以放到一篇Blog中集中练习网格搜索网格搜索网格搜索。

2024-02-25 21:33:18 71

原创 【Java程序员面试专栏 算法思维】二 高频面试算法题:二分查找

LeetCode地址,找到目标值后不急着循环结束,需要继续寻找,直到找到目标值边界为止,关键词:二分查找// 找到目标值,但循环不一定结束,因为不确定该目标值的位置// 寻找左边界,则右测最大下标锁死// 寻找右边界,则左测最大下标锁死// 跳出循环后给出目标边界值下标时间复杂度 O(LogN):二分查找,只需查找对数阶次即可空间复杂度 O(1): 没有使用额外空间。

2024-02-25 19:17:12 87

原创 【Java程序员面试专栏 算法思维】五 高频面试算法题:贪心算法

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊贪心算法,所以放到一篇Blog中集中练习贪心算法。

2024-02-25 16:49:18 261

原创 【Java程序员面试专栏 算法思维】一 高频面试算法题:排序算法

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊排序算法,包括手撕排序算法,经典的TOPK问题以及区间合并,所以放到一篇Blog中集中练习双指针+递归+基准值双指针+递归大顶堆+递归快速排序+二分查找快速排序快速排序+比较。

2024-02-25 15:17:16 758 1

原创 【Java程序员面试专栏 数据结构】六 高频面试算法题:字符串

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊数组,包括数组合并,滑动窗口解决最长无重复子数组问题,图形法解下一个排列问题,以及一些常见的二维矩阵问题,所以放到一篇Blog中集中练习滑动窗口+双指针+辅助哈希中心扩散法+双指针双指针双指针双指针辅助栈双指针指针。

2024-02-24 16:21:39 380

原创 【数据结构-字符串 五】【字符串转换】字符串转为整数

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【字符串转换】,使用【字符串】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为:目标公司+最近一年+出现频率排序,由高到低的去牛客TOP101去找,只有两个地方都出现过才做这道题(CodeTop本身汇聚了LeetCode的来源),确保刷的题都是高频要面试考的题。明确目标题后,附上题目链接,后期可以依据解题思路反复快速练习,题目按照题干的基本数据结构分类,且每个分类的第一篇必定是对基础数据结构的介绍。

2024-02-24 15:51:03 600

原创 【Java程序员面试专栏 数据结构】一 高频面试算法题:数组

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊数组,包括数组合并,滑动窗口解决最长无重复子数组问题,图形法解下一个排列问题,以及一些常见的二维矩阵问题,所以放到一篇Blog中集中练习

2024-02-23 23:04:49 185

原创 【Java程序员面试专栏 数据结构】四 高频面试算法题:哈希表

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,一个O(1)查找的利器哈希表,所以放到一篇Blog中集中练习辅助哈希排序+双指针原地哈希。

2024-02-21 23:08:29 359

原创 【Java程序员面试专栏 数据结构】三 高频面试算法题:栈和队列

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,因为栈和队列这两哥们结构特性比较向对应,所以放到一篇Blog中集中练习题目题干直接给出对应博客链接,这里只给出简单思路、代码实现、复杂度分析辅助栈辅助栈单调栈(单调递减)单调栈(单调递减)单调栈(单调递减)单调队列(单调递减)

2024-02-20 23:25:32 172

原创 【Java程序员面试专栏 Java领域】Java Spring框架 核心面试指引

Spring 框架是一个开源的 Java 平台,它最初由 Rod Johnson 在 2003 年设计,并且随后成为了领先的全栈 Java 开发框架。它提供了一个全面的编程和配置模型,用于现代基于 Java 的企业应用- 无论是应用程序级别的还是大规模企业级别的。Spring 的核心特性可以用于任何 Java 应用程序,并且有许多扩展和库,用于构建web应用程序上的全栈解决方案。轻量级容器: Spring 提供了一个轻量级的IoC(控制反转)容器,它管理应用程序中对象的创建、生命周期和配置。依赖注入。

2024-02-18 13:21:15 132

原创 【Java程序员面试专栏 Java领域】Java虚拟机 核心面试指引

将*.java文件转为*.class的过程称为编译器的前端(前端编译例如:JDK的javac编译器当虚拟机发现某个方法或代码块运行特别频繁时,就会把这些代码认定为“Hot Spot Code”(热点代码),为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各层次的优化,完成这项任务的正是JIT编译器,把字节码(*.class文件) 转变为本地机器码的过程称为Java虚拟机的即时编译运行期(JIT编译器,Just In Time)

2024-02-17 19:25:44 377

原创 【Java程序员面试专栏 Java领域】Java并发 核心面试指引

线程1占有资源A想申请资源B,同时线程2占有资源B想申请资源A就会造成死锁try {//t1休眠2秒以便t2能拿到moniterB});try {});t1.start();t2.start();线程 t1 通过synchronized (moniterA)获得 moniterA的监视器锁,然后通过Thread.sleep(2000);让线程 t1休眠 2s 为的是让线程t2 得到执行然后获取到 moniterB的监视器锁。

2024-02-17 01:17:33 193

原则的详细读书笔记罗列

关于原则的xmind,关于原则的分析,瑞达里欧的原则分享,原则这本书还是很不错的,自己整理了学习笔记,分享给大家一起看看

2020-11-05

Visual Studio2015的圈复杂度检测工具code metrics

这个工具是用于检测代码圈复杂度的,可以显而易见的标注每个方法的圈复杂度,并且依据大小有颜色直观的显示

2018-02-02

Java面试大全

这是我自面试以来做过的最全的总结,包括 计算机网络 java web mysql 设计模式 JVM 剑指offer hashmap源码分析,还有一些可以从我博客上看http://blog.csdn.net/sinat_33087001本来想免费分享给大家,但好像最少得选一个,所以只能设置为1,希望能够帮助大家。

2017-10-10

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除