- 博客(149)
- 资源 (7)
- 收藏
- 关注

原创 一个大型网站架构的演变历程
一个成熟的大型网站从来都不是一蹴而就的,需要经过多次架构的调整和升级,我们熟知的大型网站比如京东、淘宝、亚马逊,它们每天都有巨大的用户访问量也拥有非常大的数据体量,通过对大量数据进行收集,网站又进一步做大数据治理、分析和应用,以此来提高网站的智能,增加用户的粘性。一样,网站也是一步步从单体 -> 集群 -> 分布式 -> 微服务/容器化 演变而来,都是为了更好的适配当前的用户体量和业务发展。
2023-02-27 00:15:10
2395
11

原创 ELK海量日志收集系统
项目场景: 公司的正式项目生产环境中,每天都会产生海量的日志,系统日志使我们排查问题的重要依据。当我们的系统数据量足够大时,通过我们的日志还可以分析出非常多的有价值的信息,可以为我们的项目起到指导性作用。ELK架构就是专为收集、分析和存储日志设计。ELK(ElasticSearch,Logstash,Kibana)架构,包括日志的收集、转发、缓存、提取和过滤,以及最终的搜索和展示功能。技术栈介绍:数据流向说明:系统采用log4j2进行日志记录,日志包括正常的系统日志app.log和错误err
2021-05-17 22:50:22
868
4
原创 issue问题全解
在软件开发、项目管理等领域,Issue文件(通常也称为问题单、任务单等)是一种用于记录项目中出现的问题、任务、需求变更、功能建议等内容的文档。它可以是纯文本文件,也可以是在项目管理系统(如JIRA、GitHub Issues、GitLab Issues等)中以特定格式存储的数据记录。
2025-01-03 14:13:06
956
原创 LinkedHashMap如何实现LRU缓存淘汰策略?
如何快速的通过LinkedHashMap实现LRU(最近最少使用,即淘汰算法)?实现的方式是什么?实现的原理是什么?本文将给出具体的Demo,并且对LinkedHashMap的源码进行解析,让大家知其然并知其所以然。
2023-04-23 16:44:25
1084
原创 自定义响应返回结构
规范的自定义返回结构无疑会增强代码的可读性,今天就给大家晒一个模板,可提供给 H5/ios/安卓/公众号/小程序 使用,前端接受此类数据(json object)后,可自行根据业务去实现相关功能.
2023-03-04 20:12:47
249
原创 2023年,把“软件评测师”考起来吧~
作为一个合格的后端开发工程师,需要有很多技能傍身,除了基本的开发能力外,还需要有线上运维能力、业务理解能力、持续的学习能力等等,当然还有一个容易忽视的技能——研发的测试能力。我看到很多同事写代码完成之后,基本是不测试的,这里的测试不是指的是接口测试通就完事了,大家有时根本不会考虑代码的边界,更不会测试代码的性能、安全性,兼容性等等,甚至就算写了测试用例,也只是输入正确的测试用例,无卵用。
2023-03-03 22:58:59
2303
6
原创 fastJson≤1.2.80漏洞修复
在 Fastjson 1.2.80 及以下版本中存在反序列化漏洞,攻击者可以在特定依赖下利用此漏洞绕过默认autoType关闭限制,从而反序列化有安全风险的类,在特定条件下这可能导致远程代码执行。高危、任意命令执行。Fastjson ≤1.2.80以下三种修复方案根据业务选择任一合适方案即可:方案一、建议升级到最新版本1.2.83。参考链接:https://github.com/alibaba/fastjson/releases/tag/1.2.83方案二、safeMode加固:Fastjson在1.2.6
2022-06-15 11:12:10
4140
原创 (四)、JVM-垃圾回收-开篇
JVM垃圾回收开篇,来一起探讨下什么场景下下使用垃圾回收策略、垃圾回收发生在哪些区域,对象什么时候能够被回收等等问题
2022-01-21 15:31:15
392
原创 (二)、JVM的内存结构详解
JVM的内存区域,知晓五大内存区域(堆、本地方法栈、虚拟机栈、程序计数器、方法区)各自的特定和用处吧。5.程序计数器https://blog.youkuaiyun.com/qq_41701956/article/details/81664921程序计数器是JVM中非常小的一块内存区域,线程私有。字节码解释器的工作就是通过改变这个计数的值来...
2022-01-13 21:27:31
388
原创 寻找链表(ListNode)中间节点的三种解法
题目描述给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next =
2021-12-19 12:35:26
636
原创 刷题日记:将零移动到末尾
题目内容给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]题目解析,思路及解法根据题目,我们可以使用双指针的方式如下:左指针left指向已经处理好序列的尾部,右指针right指向未处理序列的头部。右指针不断的向右移动,遇到非0的元素,就和左指针所指向的元素进行值交换,同时左指针右移。注意以下性质:1、左指针左边所对应的数均为非0数。2、右指针的左边向左一直到左指针对应的
2021-12-16 20:00:00
350
原创 Leetcode35:搜索插入位置
题目内容给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。[√ ] 请必须使用时间复杂度为 O(log n) 的算法。代码实现class Solution { public int searchInsert(int[] nums, int target) { if(nums == null) { throw new RuntimeException("illegal paramet
2021-12-14 07:00:00
328
原创 Leetcode278第一个错误的版本
题目内容你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。题目分析注意性质:当一个版本
2021-12-14 00:00:00
155
原创 LeetCode704:二分查找有序数组中是否包含目标值
题目内容给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。实现class Solution { public int search(int[] nums, int target) { if(nums == null || nums.length == 0) { throw new RuntimeException("illegal p
2021-12-13 21:30:00
648
原创 (二)、JVM的主要组成部分及作用
JVM的主要组成部分是由两个系统、两个组件组成。组个系统指的是类装载器、执行引擎;两个组件指的是运行时数据区、本地接口。
2021-12-12 22:29:18
652
转载 Java直接内存与非直接内存(堆内存)性能测试
Java直接内存和非直接内存的性能测试,直接内存虽然再JVM中并没有定义这块区域,也不属于虚拟机运行时数据区,而是内存是一块由操作系统直接管理的内存,也叫堆外内存。但是在Java的一些特殊场景,比如频繁的读写操作(IO)、直接内存相比较与我们的非直接内存(堆内存)性能要好的多。
2021-12-11 19:52:51
577
原创 RestTemplate发送Get请求,返回的结果不对?考虑是否发生参数丢失的情况吧
RestTemple进行Get请求,原来水这么深...
2021-12-02 20:16:35
2587
2
原创 不知道RabbitMQ中Exchange类型Internal是什么意思?这边来~
1、场景:在RabbitMQ控制台添加新的Exchange或者代码申明Exchange时,都会询问我们Exchange是否选择为Internal,那Internal是什么意思呢?默认选择为什么是No?2、解释Internal的意思是内部的意思,在交换机这里设置为“Yes”之后,表示当前Exchange是RabbitMQ内部使用,用户所创建的Queue不会消费该类型交换机下的消息,既然是为了RabbitMQ系统所用,作为用户,我们就没有必要创建该类型的Exchange,当然默认也是选择No.3、Ra
2021-11-30 20:07:21
2283
1
原创 RabbitMQ急速环境搭建
###RabbitMQ急速环境搭建环境搭建:,在这里我们使用RabbitMQ 3.6.5 版本进行操作官网地址:http://www.rabbitmq.com/环境描述:Linux(centos7 Redhat7)1. 首先在Linux上进行一些软件的准备工作,yum下来一些基础的软件包yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-dev
2021-11-27 00:10:33
185
3
简历模板2000+套,你想要的这里都有
2022-04-18
个人精简总结笔记_设计模式.pdf
2020-11-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人