自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 收藏
  • 关注

原创 随笔

随笔 2023-02-19随笔 2023-02-26

2023-03-02 12:53:00 174

原创 Redis内存——内存消耗(内存都去哪了?)

最新:Redis内存——三个重要的缓冲区最新:Redis内存——内存消耗(内存都去哪了?)最新:Redis持久化——如何选择合适的持久化方式最新:Redis持久化——AOF日志更多文章...Reids作为一个基于内存的数据库,内存是否能够高效合理的利用至关重要!从价格上来讲,我们从某宝或某东上可以看到内存条的价格要比普通的机械硬盘贵上十几倍,就算是是固态硬盘也要贵上不少,从性能上来说,...

2021-05-20 07:47:00 578

原创 Redis持久化——AOF日志

最新:Redis内存——内存消耗(内存都去哪了?)最新:Redis持久化——如何选择合适的持久化方式最新:Redis持久化——AOF日志更多文章...上一篇文章Redis持久化——内存快照(RDB)我们总结到使用Redis内存快照进行持久化,在t 时刻做了一次快照,然后又在 t+n 时刻做了一次快照,此时如果宕机,则会丢失在此期间内修改的数据。但又不能频繁的进行内存快照,那么有什么办法能...

2021-04-26 07:56:00 269

原创 设计原则:接口隔离原则(ISP)

接口隔离原则的英文是Interface Segregation Principle,缩写就是ISP。与里氏替换原则一样其定义同样有两种定义1:Clients should not be forced to depend upon interfaces that they don'tuse.(客户端被强迫不应该依赖它不需要的接口。)定义2:The dependency of one...

2021-04-21 08:36:00 869

原创 设计原则:里式替换原则(LSP)

系列文章设计原则:单一职责(SRP)设计原则:开闭原则(OCP)设计原则:里式替换原则(LSP)设计原则:接口隔离原则(ISP)设计原则:依赖倒置原则(DIP)何谓高质量代码?理解RESTful API1 定义里氏原则的英文是Open Closed Principle,缩写就是OCP。其定义有两种定义1:If S is a subtype of T, then objec...

2021-04-21 08:13:00 914 1

原创 新入职一家公司如何快速进入工作状态

一年一度的金三银四跳槽大戏即将落幕,相信很多跳槽的小伙伴们已经找到了心仪的工作,即将或已经有了新的开始。相信有过跳槽经验的小伙伴们都知道,每到一个新的公司面临的可能都是新的业务、新的技术、新的团队......这些可能会打破你原来工作思维、编码习惯、合作方式......而于公司而言,又不能给你几个月的时间去慢慢的熟悉。这个时候,如何快速进入工作状态,尽快发挥自己的价值是非常重要的。有些人可能...

2021-04-19 08:04:00 738

原创 又是一年毕业季——如何入坑程序员

不知不觉又是一年毕业季,在去年的毕业季我分享了一篇文章聊了聊程序员这个职业的苦与乐。如果你即将走出校门迈上职场,并且做好了入坑的准备,那么这篇文章将告诉你如何进入这个行业。虽然现在已经是一个程序员满地走的时代,但这个行业并非是一个零门槛的职业。那么到底该如何入坑程序员呢?以我自身经验来看,主要有三条路。1.大厂校招这是我个人比较羡慕的一条路。因为当时的我是没有这个资格的。几乎所有的大厂校...

2021-04-14 07:48:00 137

原创 设计原则:开闭原则(OCP)

1.什么是开闭原则开闭原则的英文是Open Closed Principle,缩写就是OCP。其定义如下:软件实体(模块、类、方法等)应该“对扩展开放、对修改关闭”。从定义上看,这个原则主要包含两部分:对扩展开放:“ 这意味着模块的行为是可以扩展的。当应用程序的需求改变时,我们可以对其模块进行扩展,使其具有满足那些需求变更的新行为。换句话说,我们可以改变模块的功能。对修改关...

2021-04-13 07:45:00 562

原创 设计原则:单一职责(SRP)原则

1 什么是单一职责(SRP)原则单一职责原则的英文是 Single Responsibility Principle,缩写为 SRP。翻译过来就是:一个类或者模块只负责完成一个职责(或者功能)。所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。很多人认为这个原则是针对一个类进行描述,在...

2021-04-12 08:40:00 1536

原创 Redis持久化——内存快照(RDB)

最新:Redis持久化——如何选择合适的持久化方式最新:Redis持久化——AOF日志最新:Redis持久化——内存快照(RDB)一文回顾Redis五大对象(数据类型)Redis对象——有序集合(ZSet)Redis对象——集合(Set)Redis对象——列表(List)Redis对象——哈希(Hash)Redis数据结构——quicklistRedis对象——字符串Redi...

2021-04-07 07:56:00 468

原创 工作中应该如何管理自己的情绪?

在工作中能够管理好自己的情绪是非常重要的!因为如果一个人即使能够掌握再多的知识和技能,也有可能因为一些负面情绪的问题导致无法拿出全部的实力,进而无法拿到成果!有些明明自己的知识与技能都掌握的很好,平常处理一些小的事情的时候也算游刃有余,但是一旦真正遇到一些考验的时候,其表现往往不尽如人意。然而情绪管理很多人明明知道自己当下正处于一个错误的情绪状态中,却很难控制自己能够走出来!最近读了一本关于...

2021-04-01 07:46:00 152

原创 如何成为一个精力充沛的程序员——掌控

在程序员这个行业中996工作制几乎已经成为了常态,除了着超负荷的工作以外,还有着众多的不良习惯:晚睡、久坐、不按时吃饭,再加上工作和生活上的压力,使得整个人每天都处于一个忙碌和焦虑的状态。这样的后果就是换来了一个不健康的身体。根据数据显示上海白领的体验异常率竟达到了99%,而近年来,xx大厂员工猝死的消息更是时有出现。这让身处大厂的我不禁捏了一把冷汗,仔细回顾之前的工作生活,不良习惯...

2021-02-19 08:01:00 337

原创 P95、P99.9百分位数值——服务响应时间的重要衡量指标

前段时间,在对系统进行改版后,经常会有用户投诉说页面响应较慢,我们看了看监控数据,发现从接口响应时间的平均值来看在500ms左右,也算符合要求,不至于像用户说的那么慢,岁很费解,后来观察其它的一些指标发现确实是有问题,这个指标就是P95,P99.9,我们发现虽然平均响应时间并不高,但P95和P99.9却达到了2s以上,说明我们的接口确实存在慢查询。于是捞取了一些慢查询的请求日志终于发现问...

2021-02-01 08:11:00 10795 2

原创 如何编写优秀的测试代码|单元测试

无论如何组织测试,无论有多少测试,如果你不能信任、维护以及阅读它们,这些测试就几乎没有价值。要成为优秀的测试,它们应该同时具有如下三个属性。可靠性****。开发人员希望运行的測试可靠,能够对测试结果有信心。可靠的测试没有缺陷而且测试正确的事情可维护。性无法维护的測试是梦,它们会拖延项目计划,或者当项目日程紧张时被搁置一旁。如果修改测试花费时间过多,或者经常需要为很小的产品代码频繁...

2021-01-28 08:07:00 1228

原创 如何提高代码的可测试性

1 为什么要关心可测试性很多公司很多人在实践单元测试中总觉的很困难的一个很重要的原因就是其代码本身不具有可测试性。他们往往会走入一个误区。面对一个几千行、逻辑混乱的方法而抓耳挠腮的想着用十八般武艺,各种框架去写这个方法的单元测试,而最终不得不以失败而告终,耗费了大量的时间却徒劳而无功。其实是他们忽略了这个方法的本身是不具有可测试性的。因此我们在要对一个方法进行单测之前,一定要先看一...

2021-01-26 08:59:00 626

原创 伪对象、桩对象、模拟对象|单元测试

在我们单元测试的实践中,常常会发现一个方法依赖一个无法控制的对象,我们称其为外部依赖项。一个外部依赖项——是系统中的一个对象,被测试代码与这个对象发生交互,但你不能控制这个对象。(常见的外部依赖项包括文件系统、线程、内存以及时间等。)而单元测试背后的思想是,仅测试这个方法中的内容,当测试开始渗透到其他类、服务或系统时,此时测试便跨越了边界。而一旦测试跨了边界就变成了集成测试。进而也带...

2021-01-25 09:27:00 244

原创 单元测试基础

1.1单元测试的定义单元测试就是针对一个工作单元设计的测试,这里的“工作单元”是指对一个工作方法的要求。单元测试是开发者编写的一小段代码,用于检测被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试用于判断某个特定条件(或场景)下某个特定函数的行为。例:你可能把一个很大的值放入一个有序list中去,然后确认该值出现在list的尾部。或者,你可能会从字符串中删除匹配...

2021-01-22 08:07:00 379

原创 蓝绿红黑灰|常用的发布方式

1 发布之痛相信每个程序员都曾经经历过,或正在经历过发布的痛苦,每个发布日的夜晚通常是灯火通明。在现在互联网公司较高的发布频率之下更是放大了这种痛苦,多少正值青春年华的程序员为此白了发、秃了头!让程序员经历发布痛苦的原因有很多,其中之一就是发布方式。发布造成系统故障影响系统可用性的最大原因之一。因此大多数的公司会选择在用户量最小的深夜进行发布,这就造成了每到发布日就有一大堆黑眼圈的程...

2021-01-21 08:18:00 192

原创 2020年工作上的最大收获——监控告警体系

1 背景2020年工作上的最大收获就是初步完善了系统的监控告警体系。2020年工作上可谓是非常苦逼的,项目上忙到脚打后脑勺的同时还被各种发布问题、生产故障按在地上摩擦。可怜还因疫情原因公司福利大大缩减。总结了一下令人头疼的问题:每次大的发布总会产生一堆的生产问题日常应用出错不能第一时间感知,总是到了客户那里才报过来比如有一次发布后产生了一个小小的传值问题,但是会阻碍一部分...

2021-01-13 08:16:00 562

原创 又是一年毕业季——程序员的苦与乐

又是一年毕业季,一大波程序员又将进入战场。不知不觉间距离毕业的念头已经一只手都数不过来了,想想上一次在学校的日子还是在20世纪10年代。在程序员这个行业也摸爬滚打好几年了。在这一大波程序员进入战场之前,谈谈这些年感受到的苦与乐。希望想要入坑或即将入坑的同学们,慎重考虑!程序员乐趣我想程序员这个职业最大的乐趣a在于其并不是一个完全重复性的职业。写程序、开发软件,不是一个简单的重复性的肌肉劳动,更多的是脑力劳动。相比于工厂生产线上那日复一日年复一年的重复性劳动,我想,从事脑力工作人是幸福的,虽然它们可能会

2020-05-19 16:02:12 347

原创 你的团队需要一个正确的程序集(dll)管理姿势

很多团队经历时间的积淀之后,都会有很多的可重用的公共技术组件。大部分的团队都会把这些公共组件生成程序集(dll)后,放到GIT或SVN的一个公共目录里面,以供各个项目中使用。起初在项目很少又或者是公共组件不多的时候,这样看起来也没有多大问题。但是随着团队越来越大,项目的组件增多,所封装的可重用组件越来越多,一些问题就会慢慢暴露出来。这个时候如果还是使用这种方式去管理程序集,显然就不太合适...

2020-05-13 08:45:00 169

原创 说一说Web开发中两种常用的分层架构及其对应的代码模型

昨天妹子让我帮她解决个问题,本以为可以轻松搞定,但是打开他们项目的一瞬间,我头皮发麻。本身功能不多的一个小项目,解决方案里竟然有几十个类库。仅仅搞明白各个类库的作用,代码层次之间的引用关系就花了一个多小时。显然可能他们项目结构的代码模型出了问题,设计混乱,不容易上手。项目中一个好的的代码模型一定是简单、清晰、明了、易于上手的。它总是会让人用起来很舒服,它可以让项目团队成员更好地理解代...

2020-05-07 09:37:00 541

原创 理解RESTful API

近日妹子向我求助RESTful API到底是个什么东西。原因是她们公司一个新启动的项目因为RESTful API起了争执。服务端同学坚持要用RESTful API,而前端同学则认为服务端用RESTful API就会让前端的调用变得更麻烦。最终争议了一下午还是不了了之。有趣的是他们组的大部分人都不太了解REST是个什么东西。实际上一些抽象的东西是不如一些具体的技术好讲解的,就像你给新人...

2020-04-27 09:17:00 739

原创 一文回顾Redis五大对象(数据类型)

Redis 是一个高性能的分布式内存型数据库,在国内外各大互联网公司中都有着广泛的使用,即使是一些非互联网公司中也有着非常重要的适用场景,所以对 Redis 的掌握也成为后端工程师必备的基础技能,在面试中,Redis早已成为老生常谈的话题,而在实际工作中,我们更是每时每刻都需要和 Redis 打交道。因此熟练的掌握Redis技术栈的各种武功秘籍至关重要!Redis提供了五种主要的对象...

2020-04-21 09:26:00 170

原创 Redis对象——有序集合(ZSet)

有序集合类型 (Sorted Set或ZSet) 相比于集合类型多了一个排序属性 score(分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值。有序集合保留了集合不能有重复成员的特性(分值可以重复),但不同的是,有序集合中的元素可以排序。一、内部实现有序集合是由 ziplist (压缩列表) 或 skiplist (跳跃...

2020-04-17 09:22:00 324

原创 Redis对象——集合(Set)

集合类型 (Set) 是一个无序并唯一的键值集合。它的存储顺序不会按照插入的先后顺序进行存储。集合类型和列表类型的区别如下:列表可以存储重复元素,集合只能存储非重复元素;列表是按照元素的先后顺序存储元素的,而集合则是无序方式存储元素的。一个集合最多可以存储232-1个元素。Redis除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集,合理地使用好集合类型,能在实际...

2020-04-14 09:11:00 800

原创 Redis对象——列表(List)

列表(list)类型是用来存储多个有序的字符串,列表中的每个字符串称为元素(element),一个列表最多可以存储232-1个元素。在Redis中,可以对列表两端插入(push)和弹出(pop),还可以获取指定范围的元素列表、获取指定索引下标的元素等。列表是一种比较灵活的数据结构,它可以充当栈和队列的角色,在实际开发上有很多应用场景。列表类型有两个特点:列表中的元素是有序的,这...

2020-04-10 08:56:00 638

原创 Redis对象——哈希(Hash)

哈希在很多编程语言中都有着很广泛的应用,而在Redis中也是如此,在redis中,哈希类型是指Redis键值对中的值本身又是一个键值对结构,形如value=[{field1,value1},...{fieldN,valueN}],其与Redis字符串对象的区别如下图所示:一、内部编码哈希类型的内部编码有两种:ziplist(压缩列表),hashtable(哈希表)。只有当存...

2020-04-07 09:41:00 538

原创 Redis数据结构——quicklist

之前的文章我们曾总结到了Redis数据结构——链表和Redis数据结构——压缩列表这两种数据结构,他们是Redis List(列表)对象的底层实现方式。但是考虑到链表的附加空间相对太高,prev 和 next 指针就要占去 16 个字节 (64bit 系统的指针是 8 个字节),另外每个节点的内存都是单独分配,会加剧内存的碎片化,影响内存管理效率。因此Redis3.2版本开始对列表数据结...

2020-04-03 09:54:00 201

原创 Redis对象——字符串

前言    上一篇文章Redis之对象篇——Redis对象系统简介简单介绍了Redis的对象系统。Redis使用对象来表示数据库中的键和值每个对象都由一个redisObject结构表示,该结构中和保存数据有关的三个属性分别是type属性、 encoding属性和ptr属性。typedef struct redisObiect{ //类型 unsign...

2019-10-15 09:20:25 180

原创 Spring Boot(四) Mybatis-MySql

Spring Boot(四) Mybatis-MySql0.准备数据库表-- ------------------------------ Table structure for person-- ----------------------------DROP TABLE IF EXISTS `person`;CREATE TABLE `person` ( `id` int(1...

2019-10-10 09:18:32 138

原创 Spring Boot(三) 使用Lombok

C#写的多了用习惯了众多的语法糖,再写起来Java总会有一些非常不舒服的地方。比如用惯了C#的属性在用起来Java的属性,写起来就会感觉不够优雅。如:定义一个Person类 public class Person { public string Name { get; set; } public int Age { get; se...

2019-09-30 10:13:00 267

原创 Spring Boot(二) 配置文件

文章导航-readme一、配置Spring Boot热部署技术的发展总是因为人们想偷懒的心理,如果我们不想每次修改了代码,都必须重启一下服务器,并重新运行代码。那么可以配置一下热部署。有了它之后,修改了代码只需要重新build一下,就可以看到效果了,不需要重启服务器。1.配置热部署pom.xml文件中添加如下依赖: <dependency> ...

2019-09-26 08:40:00 200

原创 Spring Boot(一) Hello World

文章导航-readme一、Spring Boot之我见Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起...

2019-09-23 09:26:00 194

原创 Redis之对象篇——Redis对象系统简介

文章导航-readmeRedis之对象篇——Redis对象系统简介前言之前几篇文章,简单介绍 Redis用到的所有主要数据结构,简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合、跳跃表。图解Redis之数据结构篇——简单动态字符串SDS图解Redis之数据结构篇——链表图解Redis之数据结构篇——字典图解Redis之数据结构篇——跳跃表图解Re...

2019-08-21 07:56:00 444

原创 Redis对象——Redis对象系统简介

前言之前几篇文章,简单介绍 Redis用到的所有主要数据结构,简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合、跳跃表。Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,而每种对象又通过不同的编码映射到不同的底层数据结构。一、...

2019-08-21 07:56:00 81

原创 MySql 更新死锁问题 Deadlock found when trying to get lock; try restarting transaction

文章导航-readmeMySql 更新死锁问题 Deadlock found when trying to get lock; try restarting transaction1.场景//table1CREATE TABLE `retailtrades` ( `TradeId` bigint(20) NOT NULL COMMENT '主键', `TradeCode`...

2019-08-20 15:49:00 6567

原创 互联网公司面试经——你不得不知道的哈希表

文章导航-readme前言哈希表,又名散列表。是非常常用的一种数据结构,C#的Hashtable、字典,Java的HashMap,Redis的Hash,其底层实现都是散列表。而在一些互联网公司的面试中,更是技术面试官们必问的一道题目。本文将简单了解哈希表(散列表)这种数据结构。一、散列表1.1 散列表散列表(哈希表),其思想主要是基于数组支持按照下标随机访问数据...

2019-08-09 08:35:00 213

原创 图解Redis之数据结构篇——压缩列表

文章导航-readme前言同整数集合一样压缩列表也不是基础数据结构,而是 Redis 自己设计的一种数据存储结构。它有点儿类似数组,通过一片连续的内存空间,来存储数据。不过,它跟数组不同的一点是,它允许存储的数据大小不同。一、压缩列表听到“压缩”两个字,直观的反应就是节省内存。之所以说这种存储结构节省内存,是相较于数组的存储思路而言的。我们知道,数组要求每个元素的大...

2019-08-06 07:50:00 233

原创 Redis数据结构——压缩列表

前言同整数集合一样压缩列表也不是基础数据结构,而是 Redis 自己设计的一种数据存储结构。它有点儿类似数组,通过一片连续的内存空间,来存储数据。不过,它跟数组不同的一点是,它允许存储的数据大小不同。一、压缩列表听到“压缩”两个字,直观的反应就是节省内存。之所以说这种存储结构节省内存,是相较于数组的存储思路而言的。我们知道,数组要求每个元素的大小相同,如果我们要存储...

2019-08-06 07:50:00 127

空空如也

空空如也

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

TA关注的人

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