数据结构
文章平均质量分 85
老程不秃
这个作者很懒,什么都没留下…
展开
-
一份 GitHub star 过万的 1121 页图解算法让“他”成功杀进字节跳动
前两天收到读者喜报,说是进字节了,和他交流了一下他的学习心得,发现他看的资料也是我之前推荐过的算法进阶指南,这里推荐给大家,github star 可是过万哦!质量非常高!这份算法笔记与其他的不同,均是用图解,gif 的方式来针对常见的题型进行详细的说明,非常的浅显易懂!简单介绍一下这份笔记比如判断环的入口位置,画了一张图,配以简单的文字描述让大家看完瞬间豁然开朗!比如很多读者表示不了解递归的概念,结果文中一张配图就说明清楚了这个概念再比如用队列来实现 BFS,一张动图一目了然。原创 2023-07-28 15:25:47 · 64 阅读 · 0 评论 -
5年Java经验字节社招:半月3次面试,成功拿到Offer
背景经历当时我工作近5年,明显感觉到了瓶颈期。具体来说,感觉自己用过很多框架、做过一些技术设计、也有过一些产出,但是从技术深度上感觉不足,到后期时做事也没有明显挑战,完全适应了公司节奏,说句不好听的成了老油条,可以每天舒服的混日子(这也有好处,有时间准备面试)。这对于个人成长不利,长此以往可能面临大龄失业。所以我觉得需要痛下决心改变一下现状。我定的目标就是进大厂,因为我觉得小厂做到我目前的程度已经很难有很多的提升了。下了决心之后,下一步是写简历。这一步其实非常关键。先说结论,我的简历前前原创 2022-04-10 19:55:07 · 257 阅读 · 0 评论 -
十道腾讯算法真题解析
前言大家好,这里收集了腾讯常考的十道算法题(真题)。在金三银四,希望对大家有帮助呀。重排链表 最长递增子序列 环形链表 反转链表 最长回文子串 全排列 LRU 缓存 合并K个升序链表 无重复字符的最长子串 删除链表的倒数第 N 个结点公众号:捡田螺的小男孩1. 重排链表给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0 → L1 → … → Ln - 1 → Ln复制代码请将其重新排列后变为:L0 → Ln → L1 → Ln - 1 →原创 2022-03-08 19:33:11 · 6888 阅读 · 0 评论 -
Java岗三年14K ,一份 “内卷”面试题跟答案,让我变成了 28K
在小编认为,对于Java面试以及进阶的最佳学习方法莫过于刷题+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思考,刷题只是次之,这又是一个层次了,这里暂时不提后面再谈。博主总结了一系列大厂面试中常问的面试技术点,深入解析以及答案,将为最近准备面试的各开发者去大厂保驾护航,何谓面试? 博主所理解的面试,它是一个过程,是不断沉淀、不断总结、善于传达自己的专业领域技术以及解决问题能力的过程。以下是博主总结的一..原创 2022-02-17 22:12:24 · 259 阅读 · 0 评论 -
Java实现二叉搜索树的插入、删除
前置知识二叉树的结构public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() { } TreeNode(int val) { this.val = val; } }中序遍历中序遍历:对于每一个节点,遍历顺序是:左子树->当前节点->右子树原创 2022-01-15 22:33:25 · 1507 阅读 · 0 评论 -
零基础可以学Java吗,需要学到什么程度才能找到工作?
又快要到一年一度的 “金三银四” 春招大热门,为助力广大程序员朋友 “面试造火箭”,小编今天给大家展示的便是这份马士兵内部的面试神技——1658 页《Java 面试突击核心讲》!注:这份神技是由内部十余名 Java 架构讲师纯手打总结的春招招最新版面试突击文档如需参考原件 pdf 学习+刷题可双击:资料获取方式 即可面试神技——1658 页《Java 面试突击核心讲》主要包含:Java 基础、JVM、多线程、MySQL、Spring、SpringBoot、SpringCloud、分布式.原创 2022-01-15 15:34:23 · 303 阅读 · 0 评论 -
一夜间,B站转疯了(24h)删
在腾讯工作了8年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,熬到9级也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记。此笔记已助朋友拿到腾讯,阿里,美团等互联网大厂10个offer !由于细节内容实在太多太全面啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、...原创 2022-01-14 16:07:23 · 1090 阅读 · 0 评论 -
Spring事务捕获异常后依旧回滚
前沿一段生产事故发人深省,在Spring的声明式事务中手动捕获异常,居然判定回滚了,这是什么操作?话不多说直接上代码@Servicepublic class A { @Autowired private B b; @Autowired private C c; @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT) public...原创 2022-01-14 13:48:27 · 7609 阅读 · 5 评论 -
INSERT语句引发的死锁
两条一样的INSERT语句竟然引发了死锁,这究竟是人性的扭曲,还是道德的沦丧,让我们不禁感叹一句:卧槽!这也能死锁,然后眼中含着悲催的泪水无奈的改起了业务代码。好的,在深入分析为啥两条一样的INSERT语句也会产生死锁之前,我们先介绍一些基础知识。准备一下环境为了故事的顺利发展,我们新建一个用了无数次的hero表:CREATE TABLE hero ( number INT AUTO_INCREMENT, name VARCHAR(100), country var原创 2022-01-14 13:26:15 · 4554 阅读 · 0 评论 -
为何要配置环境变量?带你一探究竟
最近很多小伙伴跟我说,自己学了不少JVM的调优知识,但是在实际工作中却不知道何时对JVM进行调优。今天,冰河就为大家介绍几种JVM调优的场景。冰河技术分享各种编程语言、开发技术、分布式与微服务架构、分布式数据库、分布式事务、云原生、大数据与云计算技术和渗透技术。另外,还会分享各种面试题和面试技巧。490篇原创内容公众号点击上方卡片关注我在阅读本文时,冰河假定大家已经了解了运行时的数据区域和常用的垃圾回收算法,也了解了Hotspot支持的垃圾回收器。cpu占用过高cp.原创 2022-01-11 21:48:24 · 762 阅读 · 1 评论 -
阿里P6、P7、P8、级别需要多少年的工作经验,还是因能力而定?
阿里的职级系统设计是比较科学的,正在被很多大厂小厂在效仿。具体来说,每一级都是有明确的能力要求的。层级 能力标准 P5 1. 在专业领域中,对公司职位的标准要求、政策、流程等从业所必需了解的知识基本了解,对于本岗位的任务和产出很了解,能独立完成复杂任务,能够发现并解决问题; 2. 在项目当中可以作为独立的项目组成员;3. 能在跨部门协作中沟通清楚。 P6 / M1 1. 在专业领域中,对公司职位的标准要求、政策、流程等从业所必需了解的知识理解深刻,能够和经理一起探讨本岗位原创 2022-01-06 21:28:37 · 25443 阅读 · 6 评论 -
Why?Mybatis的一级和二级缓存都不建议使用?
缓存是在哪起作用的?个人认为mybatis一级缓存和二级缓存并不是一个很好的设计,工作中我基本上也不会使用一级缓存和二级缓存,因为一旦使用不当会造成很多问题,所以我们今天就来看看到底会有什么问题?上一节我们介绍了Executor会调用StatementHandler执行sql,起一个承上启下的作用。Executor的设计是一个典型的装饰者模式,SimpleExecutor,ReuseExecutor是具体实现类,而CachingExecutor是装饰器类。可以看到具体组件实现类有一个原创 2022-01-06 01:36:34 · 187 阅读 · 0 评论 -
Java规则引擎easy-rules详细介绍
最近在思考一个基于规则进行挑选的技术重构,想通过规则引擎进行实现,借着这个机会正好可以详细了解一下规则引擎。本篇文章将会详细介绍规则引擎easy-rules的使用。Easy Rules是一个简单但功能强大的Java规则引擎,提供以下特性:轻量级框架和易于学习的API 基于POJO的开发 支持从原始规则创建组合规则 支持通过表达式(如MVEL,SPEL和JEXL)定义规则开始使用引入依赖<dependency> <groupId>org.jeasy&l原创 2022-01-04 00:12:27 · 13979 阅读 · 4 评论 -
10次面试9次被刷?吃透这500道大厂Java高频面试题后,怒斩offer
很多Java工程师的技术不错,但是一面试就头疼,10次面试9次都是被刷,过的那次还是去了家不知名的小公司。问题就在于:面试有技巧,而你不会把自己的能力表达给面试官。应届生:你该如何准备简历,面试项目和面试说辞?Spring底层逻辑是什么? 1-3年经验的程序员:面试中你该讲哪些值钱的技术?如何用这些值钱的技术最大程度展示自己的技能?分布式组件底层逻辑是什么? 3-5年经验的程序员:k8s怎么搭建实践?这些问题,相信每一位Java程序员都曾遇到过,甚至有的人至今也不知道要怎么解决,屡面屡原创 2021-12-31 17:24:58 · 104 阅读 · 0 评论 -
这份Java面试八股文让300余人上岸大厂,2021都卷成这样了,眨眼迎来2022还不赶紧动起来?
前言2021即将过去,迎来2022春招将近,很多同学会问Java面试八股文有必要背吗?我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。国内的互联网面试,恐怕是现存的、最接近科举考试的制度。而且,我国的八股文确实是独树一帜。以美国为例,北美工程师面试比较重视算法(Coding),近几年也会加入Design轮(系统设计和面向对象设计OOD)和BQ轮(Behavioral question,行为面试问题)。那么为什么国内面试不采取这样的考察方式呢?简单来.原创 2021-12-31 16:58:42 · 192 阅读 · 0 评论 -
字节是如何成为腾讯最可怕的对手的?张一鸣一语道破~
说到互联网巨头,很多人都已经将字节跳动纳入其中,可是要知道其他大佬,经过了20余年的时间,才有如今的地位,而字节跳动成立至今仅仅7年。如今,字节跳动时常被拿来与腾讯比较,因为他们的正面竞争几乎是注定的。腾讯从连接“人”出发,再连接“内容”,到连接一切;而字节跳动则从“内容”出发,触达用户情感,再连接“人”。当下,字节跳动已经进入了腾讯的战略腹地,发起了一轮又一轮攻势。从飞聊上线挑战微信\QQ社交帝国、今日头条对垒腾讯新闻双方各擅胜场、作为游戏新兵不敌腾讯游戏霸业,到抖音系短视频甩开腾讯几个身位、原创 2021-12-30 17:12:18 · 2005 阅读 · 0 评论 -
腾讯二面:你们线程池是怎么做监控的?
大部分情况下,线程池的运行情况对于使用者来说是个黑盒运行情况不可知,会导致生产出现事故问题排查困难,以及线程池参数难以定义文章围绕线程池监控展开,讨论线程池如何监控、监控的指标以及监控数据的存储展示01如何监控运行数据设想一下,如果想监控线程池的运行数据,你会怎么操作?这里提供两种常规思路线程池运行时埋点,每一次运行任务都进行统计 定时获取线程池的运行数据这里我推荐第二种,因为线程池的监控 API 会通过获取主锁来控制结果的相对准确性,性能相对较差,后面会详细说明...原创 2021-12-29 14:28:23 · 346 阅读 · 0 评论 -
效率神器~ 阿里P8大咖手写Spring cloud Alibaba(实战派)终级手册
前两天,一位前同事告诉我一个好消息:他进阿里了。很为他感到高兴,但同时也觉得这很正常,当年我部门内的小伙伴,有不少人去了阿里、京东 、小米的。我们当时算是国内第一批使用微服务架构的团队了,小伙伴们都积累了很多Spring Boot/Cloud的使用经验,这些经验可能会对他们面试有所帮助。到了今天,几乎所有的大型互联网公司都在使用微服务架构,其中绝大部分公司的技术选型都是 Spring Cloud。甚至,最近我在逛知乎的时候,看到了这个问题:自己没有掌握微服务相关的技术..原创 2021-12-28 15:47:28 · 545 阅读 · 0 评论 -
架构师才需要知道的知识:如何做容量预估和调优
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标一开始就要明确定义QPS保障目标,以此来推算所需的服务、存储资源。可根据历史同期QPS,或者平时峰值的2到3倍估算。压测目标示例:qps达到多少时,服务的负载正常,如平均响应时间、95分位响应时间、cpu使用率、内存使用率、消费延迟低于多少 不要让任何一个环节成为瓶颈,需考虑服务实例、数据库、Redis、ES、Hbas原创 2021-12-27 20:23:13 · 171 阅读 · 0 评论 -
「技术原理」Spring Security的核心功能和加载运行流程的原理分析
SpringSecurity的架构总览Spring Security的简介说明Spring Security对认证、授权和常见漏洞保护提供了全方位支持。使用的版本为:Spring Security 5.5.2。概念释义 认证(Authentication):认证就是对试图访问资源的用户进行验证。 认证的场景就是 登录 流程,常见的方式就是要求提供用户名和密码,当验证通过的时候,就可以执行授权操作。 授权(Authority):授权就是对资源进行权限设置,只有用户具...原创 2021-12-27 13:30:33 · 711 阅读 · 0 评论 -
Java高级:条件队列与同步器Synchronizer的原理+AQS的应用
14.构建自定义的同步工具类库中包含了许多存在状态依赖性的类,例如FutureTask,Semaphore和BlockingQueue等。在这些类中的一些操作中有着基于状态的前提条件,例如,不能从一个空的队列中删除元素,或者获取一个尚未结束的任务的计算结果,在这些操作可以执行之前,必须等到队列进入“非空”状态,或者任务进入“已完成”状态。创建状态依赖类的最简单方法通常是在类库中现有的状态依赖类的基础上进行构造。本章将介绍实现状态依赖性的各种选择,以及在使用平台提供的状态依赖性机制时...原创 2021-12-24 16:01:26 · 231 阅读 · 0 评论 -
Redis系列之主从复制
主从复制基本介绍Redis支持主从复制功能,可以通过执行slaveof(Redis5版本以后改成replicaof)或者在配置文件中设置slaveof(Redis5版本以后改成replicaof)来开启复制功能。一主两丛一主多从主从基本配置主Redis配置主Redis配置基本不用修改,重点部分在从Redis配置从Redis配置1、复制一份redis.conf文件2、相关配置修改# salve的端口号port 6380 #把pid进程原创 2021-12-24 15:22:11 · 1095 阅读 · 0 评论 -
名震GitHub,字节跳动内部顶级数据结构刷题学习笔记根本停不下来~~
前段时间字节跳动发布了年前再招1万人的消息,从大部分的字节招聘岗位来说的话,Java研发岗位位居榜首!这个消息一经发布就让大部分的程序员蠢蠢欲动,毕竟字节谁不想去?字节跳动的岗位大多数看中的都是算法,所以说在算法部分不在强的小伙伴可以开始刷题了,今天给大家带来的就是一份来自字节内部的《排序和数据结构刷题学习笔记》拿他们的剑斩获他们的offfer“不香吗”?这份资料没有别的优点,唯一的优点就是“全面”相信这点大家从目录就可以看出来了!内容览阅下面会直接给大家展示其中部分内容的截图.原创 2021-12-23 15:25:48 · 2610 阅读 · 14 评论 -
Redis系列之Redis持久化机制
Redis持久化机制为什么要持久化如果Redis再次访问时,发现Redis的数据是空的,就会形成缓存穿透。更重要的是,因为Redis的数据是空的,所以客户端想要访问的key都没有,就会造成大量的请求就会瞬间打到数据库上,造成缓存雪崩(少量的key是穿透,大量的key是雪崩)。这个时候,数据库可能就挂掉。而又无法保证redis不宕机,所以需要当redis宕机后,迅速将里里面的内容恢复出来。因此需要做一个持久化。持久化是为了恢复数据用的,而不是存储数据用的RDBRDB(Redis DataBas原创 2021-12-23 13:16:00 · 1663 阅读 · 0 评论 -
103收藏分享点赞破百万~ 字节算法大咖亲撰30W字数据算法笔记:GitHub标星93K~~
数据结构与算法什么是数据结构?数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或者多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效果。数据结构往往同高效的检索算法和索引技术有关。数据结构和算法思维导图任何被明确定义的计算过程都可以称作算法,将某个值或一组值作为输入,并产生某个值或一组值作为输出。所以算法可以被称作将输入转为输出的一系列的计算步骤。简单来说,算法就是解决问题的工具。在描述一个算法时,我们关注的是输入与输出。也.原创 2021-12-22 19:59:30 · 97 阅读 · 0 评论 -
Redis系列之缓存原理&设计
Redis系列之缓存原理&设计缓存基本思想缓存的使用场景DB缓存,减轻服务器压力一般情况下数据存在数据库中,应用程序直接操作数据库。当应用程序访问量上万,数据库压力突然增大,如果需要减轻数据库服务器的压力,有以下方法: 数据库读写分离 数据库分库分表 使用缓存,并实现换粗你的读写分离 缓存的作用:将应用程序已经访问过的内容或数据存储起来,当应用程序再次访问时先找缓存,缓存命中返回数据。不命中再查询数据库,并保存到缓存。 提高系统响应数据库的数原创 2021-12-22 15:26:06 · 196 阅读 · 0 评论 -
如何设计一个高并发的秒杀架构?
写在前面高并发下如何设计秒杀系统?这是一个高频面试题。 这个问题看似简单,但是里面的水很深,它考查的是高并发场景下,从前端到后端多方面的知识。秒杀一般出现在商城的促销活动中,指定了一定数量(比如:10个)的商品(比如:手机),以极低的价格(比如:0.1元),让大量用户参与活动,但只有极少数用户能够购买成功。这类活动商家绝大部分是不赚钱的,说白了是找个噱头宣传自己。虽说秒杀只是一个促销活动,但对技术要求不低。下面给大家总结一下设计秒杀系统需要注意的9个细节。掌握了这些,以后就可以和面试官好好聊一聊原创 2021-12-22 14:22:24 · 417 阅读 · 0 评论 -
SpringBoot启动流程
本文以调试一个实际的SpringBoot启动程序为例,参考流程中主要类类图,来分析其启动逻辑和自动化配置原理。一、SpringBoot启动流程图二、SpringBoot启动入口@EnableScheduling@EnableAsync@SpringBootApplication@EnableAspectJAutoProxy@ComponentScan(basePackages = { "cn.gov.zcy.demand", "cn.gov.zcy.原创 2021-12-21 14:47:00 · 19863 阅读 · 1 评论 -
倍受关注的 Cilium Service Mesh 到底怎么玩? - 上手实践
Cilium 是一个基于 eBPF 技术,用于为容器工作负载间提供安全且具备可观测性的网络连接的开源软件。最近Cilium v1.11.0 正式发布了,增加 Open Telemetry 的支持以及其他一些增强特性。同时,也宣布了 Cilium Service Mesh 的计划。当前 Cilium Service Mesh 正处于测试阶段,预期在 2022 年会合并到 Cilium v1.12 版本中。Cilium Service Mesh 也带来了一个全新的模式。Cilium 直接通过 ...原创 2021-12-21 14:14:27 · 807 阅读 · 0 评论 -
深入浅出Mysql索引优化专题分享|面试怪圈
文章纲要该文章结合18张手绘图例,21个SQL经典案例、近10000字,将Mysql索引优化经验予以总结,你可以根据纲要来决定是否继续阅读,完成这篇文章大概需要25-30分钟,相信你的坚持是不负时光的:前言 开篇小例子 单索引性能最优? 索引越多越好? 常用术语 主键索引(聚簇索引) 辅助索引 覆盖索引 最左匹配 索引下推 再谈优化 覆盖索引,减少回表 遵循最左匹配原则 联合索引,字段顺序 前缀索引 索引失效 大字段影响检索性能 GROUP BY如何优化 OR..原创 2021-12-20 21:48:08 · 344 阅读 · 0 评论 -
一文搞懂,java中常用的定时任务框架-单体
一、阅读收获✔️1. 了解常用的单体应用定时任务框架✔️2. 掌握定时任务在单体中如何使用二、Timer+TimerTask这是jdk自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。 使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行,一般用的较少。/** * @Description: 1. Timer+TimerTask:(jdk自带) * 这是java自带的java.util.Timer类,这个类允许..原创 2021-12-20 21:31:49 · 851 阅读 · 0 评论 -
看了我才明白实际性能调优是要这样,给大家奉上好不容易得来的这份阿里P7 写的,性能优化手册
最近跟一些粉丝交流,发现很多程序员对一些基础问题只停留在“听说过”或者“使用过”,没有深入到技术细节里。很多现成的技术非常容易上手,会让我们产生自己很“厉害”的错觉,但是却忽略了其底层原理。这个其实是很危险的,技术的高低和掌握程度决定了我们的工资以及是否会被公司“优化”。在我的上一家公司,系统研发部门曾经来了一位大神,为什么叫他大神?因为他来公司一年,只做了一件事情——性能调优:把公司服务器的数量缩减到了原来的一半,结果系统的性能指标,反而还提升了很多!一个好的系统性能调优不但给公司省钱,还能提高系原创 2021-12-18 17:14:47 · 1254 阅读 · 0 评论 -
请问你能自己实现一个AOP吗?
包装一个切面通知信息什么是切面通知信息,他是做什么的?说白了就是将我们AOP中所需要的目标对象,方法匹配器,方法拦截器,同一整合到一个类中。这样我们后续实现代理类的时候,就可以通过关联关系(通俗的理解就是作为代理类的一个成员变量)使用这个切面通知信息类。切面通知信息成员属性介绍我们首先来看看笔者实现的切面通知信息类,实现也很简单,一个目标对象类TargetSource,一个方法匹配器MethodMatcher,一个方法拦截器methodInterceptor,我们不妨看看这每个成员变量的具体原创 2021-12-18 15:40:06 · 89 阅读 · 0 评论 -
她问我:为什么 MySQL 喜欢 B+ 树?我笑着画了 20 张图
「为什么 MySQL 采用 B+ 树作为索引?」这句话,是不是在面试时经常出现。要解释这个问题,其实不单单要从数据结构的角度出发,还要考虑磁盘 I/O 操作次数,因为 MySQL 的数据是存储在磁盘中的嘛。这次,就跟大家一层一层的分析这个问题,图中包含大量的动图来帮助大家理解,相信看完你就拿捏这道题目了!怎样的索引的数据结构是好的?MySQL 的数据是持久化的,意味着数据(索引+记录)是保存到磁盘上的,因为这样即使设备断电了,数据也不会丢失。磁盘是一个慢的离谱的存储设备,有多离谱呢?原创 2021-12-18 13:50:51 · 2566 阅读 · 3 评论 -
saas疯行的年代,工作流俨然是一种职业素质
前言现在越来越多的项目开始使用工作流来满足日常的工作了。今天我们看看Activiti的工作流,我们先入门下BPMN绘画环境安装关于流程的BPMN文件主要还是通过eclipse开发工具进行集成绘画的。idea中主要是actiBPM绘画的,但是2014年之后actiBPM就不在维护了,现在直接是无法在新的idea版本中安装使用了。 既然如此你可以idea开发项目,通过eclipse绘制,但是这种情况好像很麻烦。这里推荐另外一个集成工具绘制BPMN流程图示 camunda-modeler就是一个..原创 2021-12-12 16:24:22 · 130 阅读 · 0 评论