- 博客(17)
- 收藏
- 关注
原创 Spring框架中一个有用的小组件:Spring Retry
1、概述 Spring Retry 是Spring框架中的一个组件, 它提供了自动重新调用失败操作的能力。这在错误可能是暂时发生的(如瞬时网络故障)的情况下很有帮助。 在本文中,我们将看到使用Spring Retry的各种方式:注解、RetryTemplate以及回调。 2、Maven依赖 让我们首先将spring-retry依赖项添加到我们的pom.xml文件中: <dependency> <groupId>org.springframework.retry</gro
2021-07-23 20:38:28
164
原创 面试官:数据库delete表数据,为啥磁盘空间还是被一直占用?
最近有个上位机获取下位机上报数据的项目,由于上报频率比较频繁且数据量大,导致数据增长过快,磁盘占用多。 为了节约成本,定期进行数据备份,并通过delete删除表记录。 明明已经执行了delete,可表文件的大小却没减小,令人费解 项目中使用Mysql作为数据库,对于表来说,一般为表结构和表数据。表结构占用空间都是比较小的,一般都是表数据占用的空间。 当我们使用 delete删除数据时,确实删除了表中的数据记录,但查看表文件大小却没什么变化。 Mysql数据结构 凡是使用过mysql,对B+树肯定
2021-07-21 13:48:33
241
原创 微服务细剖:一致性hash的原理和实现,面试划重点
以存储为例,在整个微服务系统中,我们的存储不可能说只是一个单节点。 一是为了提高稳定,单节点宕机情况下,整个存储就面临服务不可用; 二是数据容错,同样单节点数据物理损毁,而多节点情况下,节点有备份,除非互为备份的节点同时损毁。 那么问题来了,多节点情况下,数据应该写入哪个节点呢? hash 所以本质来讲:我们需要一个可以将输入值“压缩”并转成更小的值,这个值通常状况下是唯一、格式极其紧凑的,比如uint64: 幂等:每次用同一个值去计算 hash 必须保证都能得到同一个值 这个就是 ha
2021-07-20 13:24:41
178
原创 Minor GC、Major GC、Full GC的区别
今天主要谈谈JVM GC的类型和策略,特别是大家经常混淆的Minor GC、Major GC、Full GC,年轻代GC、老年代GC,之间有什么区别和联系。 Minor GC JVM堆内存被分为两部分:年轻代(Young Generation)和老年代(Old Generation)。 1.年轻代 年轻代是所有新对象产生的地方,当年轻代内存空间被用完时,就会触发垃圾回收,这个垃圾回收叫做Minor GC。 年轻代被分为3个部分——Enden区和两个Survivor区,年轻代空间的要点:
2021-07-19 17:00:03
224
转载 SpringBoot 如何统一后端返回格式?老鸟们都是这样玩的!
今天我们来聊一聊在基于SpringBoot前后端分离开发模式下,如何友好的返回统一的标准格式以及如何优雅的处理全局异常。 首先我们来看看为什么要返回统一的标准格式? 为什么要对SpringBoot返回统一的标准格式 在默认情况下,SpringBoot的返回格式常见的有三种: 第一种:返回 String @GetMapping("/hello") public String getStr(){ return "hello,javadaily"; } 此时调用接口获取到的返回值是这样: hello,jav
2021-07-16 16:18:40
340
1
原创 数据库避坑指南:MySQL里那些常见的错误设计规范,你中了几个?
依托于互联网的发达,我们可以随时随地利用一些等车或坐地铁的碎片时间学习以及了解资讯。同时发达的互联网也方便人们能够快速分享自己的知识,与相同爱好和需求的朋友们一起共同讨论。 但是过于方便的分享也让知识变得五花八门,很容易让人接收到错误的信息。这些错误最多的都是因为技术发展迅速,而且没有空闲时间去及时更新已经发布的内容所导致。为了避免给后面学习的人造成误解,我们今天来看一看 MySQL 设计规范中几个常见的错误例子。 主键的设计 错误的设计规范:主键建议使用自增 ID 值,不要使用 UUID,MD5,HASH
2021-07-15 19:12:31
152
原创 B站挂了之后出现的tengine是个啥?
一、描述 晚上刚洗漱完之后听同学说:B站挂了?woc?真挂了? 嗯!确实挂了,404的状态码,懂的都懂。 不过,最下面的tengine字眼吸引了我的注意,一时兴起,打算看看它是个什么东西,起码搞一个hello world出来,所以特意去购买了一台服务器,打算搞一个hello tengine 服务器就位,准备开干! 二、官方的介绍 Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网
2021-07-14 21:59:08
107
原创 用案例实战来给你讲解,设计模式中的工厂模式
工厂模式有啥用啊,我的项目没使用工厂模式也照样运行 这是我听过最令人哭笑不得的吐槽,这个程序猿的头发不知道有没有被自己薅秃 的确,项目中不使用工厂模式并不会影响项目的运行 但是,当项目后期需要二次开发时,代码的维护和修改的复杂度,绝对能让你恨不得把自己头发都薅秃 下面我们就来盘一盘工厂模式能解决哪些问题 简单工厂模式 实际案例 假如客户有这样一个需求,做一个用户订购手机来玩游戏的项目 项目中可以生产华为和小米的手机,生产的手机只能用来玩游戏,用户可以通过京东和淘宝来订购手机 需求中的一个前置条件是手机只.
2021-07-14 19:08:33
99
原创 字节二面,让写一个LFU缓存策略算法,我懵了
前言 LRU全称:Least Recently Used:最近最少使用策略,判断最近被使用的时间,距离目前最远的数据优先被淘汰,作为一种根据访问时间来更改链表顺序从而实现缓存淘汰的算法,它是redis采用的淘汰算法之一。redis还有一个缓存策略叫做LFU, 那么LFU是什么呢?我们本期来分下一下LFU: 一:LRU是什么 LFU,全称是:Least Frequently Used,最不经常使用策略,在一段时间内,数据被使用频次最少的,优先被淘汰。 最少使用 (LFU)是一种用于管理计算机内存的缓存算法。主
2021-07-13 16:55:38
217
2
原创 不管你金九银十换不换工作,了解下单例模式
1. 单例模式 什么是单例模式?简言之就是确保定义为单例模式的类在程序中有且只有一个实例。单例模式的特点: 只有一个实例 (只能有一个对象被创建) 自我实例化(类构造器私有) 对外提供获取实例的静态方法 2.单例模式的实现 常见的单例模式实现方式有五种: 2.1. 懒汉式 懒汉式(一般也称之为 饱汉式),具体代码实现如下: public class Singleton { /** * 自我实例化 */ private static Singleton
2021-06-08 22:32:36
54
原创 我只是小小的同步了下Redis数据,怎么就服务瘫痪了?
背景 bug千千万,今天到我家。 简要描述:数仓WEB端进行新增事件后,会注入Redis中进行缓存,供给动参服务进行响应各端SDK的请求。 下午,发现海内外redis中存储的事件数据中仅有停用事件,而没有启用事件数据,以为是个bug,然后找数据负责人、动参负责人以及产品等进行确认,对比数据及综合意见后统一归咎为错误数据,经排查业务代码逻辑,发现数仓WEB端业务逻辑也是按照颠倒方式进行缓存事件数据(即仅缓存停用事件,却不缓存启用事件),然后对代码进行更新后,于晚上进行所有事件的缓存同步。 sync完所有事件数
2021-06-08 21:50:06
76
原创 Nginx+SpringBoot实现负载均衡
负载均衡介绍 介绍 在介绍Nginx的负载均衡实现之前,先简单的说下负载均衡的分类,主要分为硬件负载均衡和软件负载均衡,硬件负载均衡是使用专门的软件和硬件相结合的设备,设备商会提供完整成熟的解决方案,比如F5,在数据的稳定性以及安全性来说非常可靠,但是相比软件而言造价会更加昂贵;软件的负载均衡以Nginx这类软件为主,实现的一种消息队列分发机制。 简单来说所谓的负载均衡就是把很多请求进行分流,将他们分配到不同的服务器去处理。比如我有3个服务器,分别为A、B、C,然后使用Nginx进行负载均衡,使用轮询策略,
2021-06-07 20:29:54
417
原创 干货:用案例代码详解Redis中的事件驱动模型
Redis 是一个事件驱动的内存数据库,服务器需要处理两种类型的事件。 文件事件 时间事件 下面就会介绍这两种事件的实现原理。 文件事件 Redis 服务器通过 socket 实现与客户端(或其他redis服务器)的交互,文件事件就是服务器对 socket 操作的抽象。 Redis 服务器,通过监听这些 socket 产生的文件事件并处理这些事件,实现对客户端调用的响应。 Reactor Redis 基于 Reactor 模式开发了自己的事件处理器。 这里就先展开讲一讲 Reactor 模式。看
2021-06-07 16:18:25
129
原创 基础不牢,地动山摇。那些进了大厂的程序员面试前都做了哪些准备?
正所谓跳槽天天有,offer哪家强? 跳槽容易,但想拿大厂的offer可不那么容易。很多小伙伴一直叨叨要跳槽,大大小小的公司面试了很多,但却很难拿到一个满意的offer,要么package太低,要么就是面试被虐。经过多次面试失利之后,方能明白什么叫基础不牢,地动山摇。面试官随便针对一个知识点深入考察一下,就回答不出来,这样还怎么能通过面试? 那么大厂到底面试到底需要哪些技术功底呢?这个就多了,不同公司的技术要求也不一样,但是相同的点在于,大公司对于技术的要求都不会很表面,必然会在一定广度的基础上要求有一定
2021-06-07 15:44:50
107
原创 看完这个,你觉得你真的懂快速排序吗?
看似青铜实则王者 很多人提起快排和二分都觉得很容易的样子,但是让现场Code很多就翻车了,就算可以写出个递归版本的代码,但是对其中的复杂度分析、边界条件的考虑、非递归改造、代码优化等就无从下手,填鸭背诵基本上分分钟就被面试官摆平了。 那年初识快速排序 快速排序Quicksort又称划分交换排序partition-exchange sort,简称快排,一种排序算法。最早由东尼·霍尔(C. A. R. Hoare)教授在1960年左右提出,在平均状况下,排序n个项目要O(nlogn)次比较。 在最坏状况下则
2021-06-07 14:59:34
155
原创 MySQL中查询、删除重复记录的方法大全(建议收藏!)
前言 本文主要给大家介绍了关于MySQL中查询、删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: select title,count(*) as count from user_table group by title having count>1; SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Titl
2021-06-07 14:48:13
5081
1
原创 阿里高频面试题:Redis 和 Memcached 有什么区别?Redis 的线程模型是什么?为什么 Redis 单线程却能支撑高并发?
面试官心理分析 这个是问 Redis 的时候,最基本的问题吧,Redis 最基本的一个内部原理和特点,就是 Redis 实际上是个单线程工作模型,你要是这个都不知道,那后面玩儿 Redis 的时候,出了问题岂不是什么都不知道? 还有可能面试官会问问你 Redis 和 Memcached 的区别,但是 Memcached 是早些年各大互联网公司常用的缓存方案,但是现在近几年基本都是 Redis,没什么公司用 Memcached 了。 面试题剖析 Redis 和 Memcached 有啥区别? Redis 支持
2021-06-05 21:51:13
125
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人