自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试官:你来说说Redis是单线程的吗?

哈喽,大家哈,我是。今天在刷博客的时候刷到一个挺有意思的面试题:“ Redis”在平时看的文章中都会说 Redis 是单线程的。但是 Redis 中同样存在着异步执行的操作,比如bgsave命令,它它允许在后台异步地将当前数据持久化到磁盘,既然是异步操作,那么必然存在多个线程,为什么还说 Redis 是单线程的呢?其实 Redis 在4.0之后就已经部分引入了多线程机制,我们平常说的 Redis 是单线程的,主要指的是的主要功能,也就是和是由一个线程完成的。

2024-05-16 11:01:51 306

原创 我说数据分页用Limit,面试官直接让我回去等消息

游标分页非常适合于深分页的场景,能够大大减少需要的记录数量,但是由于游标依赖于上一次查询,所以无法实现跳页,并且只有作为游标的列有序的情况下才能使用游标。而且这个解决方案可以很容易的迁移到项目中任何需要分页的地方,非常适合作为面试时的技术亮点。

2024-04-27 15:00:00 430

原创 初学者必备:DiTing带你快速掌握Go面试必备7大技术栈

哈喽,大家好,我是DanMu。

2024-04-25 18:50:10 402

原创 不就是个聊天室,我从头撸给你看:2.怎样实现登录注册

Hello,我是单木。接下来我将会开启一个新的博客系列,使用 GoLang 从 0 到 1 实现一个IM聊天室项目。在上一篇文章中,我们已经实现了一个简单的聊天室 Demo ,接下来我们就要开始具体业务的实现部分。在这篇文章中,我们将会完成用户的登录和注册。

2024-04-01 20:40:55 953

原创 不就是个聊天室,我从头撸给你看:1.实现一个最简单的Demo

Hello,我是单木。接下来我将会开启一个新的博客系列,使用 GoLang 从 0 到 1 实现一个IM聊天室项目。在上一篇文章中,我们已经成功的搭建好了项目的整体框架,废话少说,接下来让我们正式开始聊天室的开发。让一个用户发送的内容能够被其他用户接收。在这篇博客中,我们实现了一个最最基本的聊天室框架,当然,这个框架还有非常多不完善的地方,我们将在接下来逐步进行完善,敬请期待。

2024-03-31 17:02:30 696

原创 不就是个聊天室,我从头撸给你看:0.准备工作指南

Hello,我是单木。接下来我将会开启一个新的博客系列,使用 GoLang 从 0 到 1 实现一个IM聊天室项目。

2024-03-30 21:55:24 748

原创 一文搞懂设计模式--单例模式

Hi,大家好呀。今天要说的是单例模式。单例模式的核心思想十分的简单,在开发一个系统的时候,为了保证系统中的数据一致,我们会希望某些特殊的类在整个系统的运行过程中只能存在一个实例。最简单的时间方式就是将这个要求交给开发者,让开发者在开发的时候多加注意。当然,有时候我们不想要开发者人为的来维护这个实例,毕竟人总是会犯错的嘛,一不小心就会造成巨大的损失。因此,开发者们想出了一个设计模式来完成这件事情,这个设计模式就叫做单例模式。*采用懒汉式,才类加载时创建实例*添加volatile关键字防止指令重排。...

2022-07-20 15:47:08 118 1

原创 一文搞懂设计模式--工厂方法模式

今天一位尊敬的甲方来到你的公司,准备请你们帮助定制开发一个软件。产品经理几乎快说断了三寸不烂之舌,甲方代表终于满意的点点头,大手一挥在合同上写下大名。陪着甲方走出公司的大门后,产品经理终于有机会连灌了一瓶水下肚,紧接着就开始了对你的摧残。甲方的要求是这样今天的甲方是一个实业家,手下掌握有大量的工厂,生产众多不同的产品。但是随着工厂规模的扩大,生产过程中的环节为管理产品带来了许多问题,他希望你们能够开发一个软件帮助他管理产品生产的过程。你们经过详细的调研,了解到一个产品在工厂中通常会经历以下三个阶段。...

2022-07-15 19:45:26 206

原创 一文搞懂设计模式--模板模式

Hi,大家好。今年的天气实在是太热了,七月份的厦门晒得我觉得身上冒出了烤肉香,不知道各位是否安好,但是在再热的天气也不能阻止我们学习的热情(doge)。今天的主题是模板(Template Method)模式......

2022-07-14 17:36:17 694

原创 一文搞懂设计模式--外传之为什么要使用设计模式

在思考为什么要使用设计模式之前,让我们先来思考如何设计一款优秀的软件?当然这里的软件指的是软件的实现架构。让我们思考一下软件架构设计所需要达成的目标,以及设计模式如何在这其中发挥作用对于软件开发而言,成本和时间永远是最重要的。代码复用是减少开发成本最常用的方式之一,这个想法看起来非常自然,但是实际在开发过程中,要让已有代码能够适配新的场景往往还是需要付出额外的代价。例如,不同的模块之间存在紧密的耦合关系,这使得复用这些代码变得更加困难。对于代码复用来说,最底层的复用通常会涉及到类、类库、容器等等可以独立存在

2022-07-13 12:17:23 161

原创 一次性搞懂设计模式--适配器模式

通用设计模式之适配器模式

2022-07-11 11:42:35 185

原创 java 集合

集合概述集合概览Java集合可分为Collection和Map两种体系Collection接口单列数据,定义了存取一组对象的方法的集合List元素有序、可重复的集合Set元素无序、不可重复的集合Map接口:双列数据,保存具有映射关系“key value对”的集合Collection接口Collection接口是List、Set和Queue接口的父接口,该接口里定义的方法既可用于操作Set集合,也可用于操作List和Queue集合。JDK不提供此接口的任何直接实现,而是提供更具

2020-07-31 17:10:00 113

原创 Java 比较器

Java比较器在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。Java实现对象排序的方式有两种 :自然排序: java.lang.Comparable定制排序: java.util.Comparator实现一:自然排序Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。实现 Comparable 的类必须实现 compareTo(Object obj) 方法,两个对象即通过 compareTo(Object obj

2020-07-27 21:24:31 94

原创 java String StringBuffer StringBuilder

String的特性String类: 代表字符串。 Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现String是一个final类,代表不可变的字符序列字符串是常量,用双引号引起来表示。 它们的值在创建之后不能更改String对象的字符内容是存储在一个字符数组value[]中的不可变的好处1.可以缓存 hash 值​ 因为 String 的 hash 值经常被使用,例如 String 用做 HashMap 的 key。不可变的特性可以使得 hash 值也不可变,因此

2020-07-27 17:14:41 96

原创 java 线程同步和通信

什么是线程同步同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。这里的同步千万不要理解成那个同时进行,应是指协同、协助、互相配合。线程同步是指多线程通过特定的设置(如互斥量,事件对象,临界区)来控制线程之间的执行顺序(即所谓的同步)也可以说是在线程之间通过同步建立起执行顺序的关系,如果没有同步,那线程之间是各自运行各自的!为什么要实现线程同步模拟火车站售票程序,开启三个窗口售票。class Window implements Runnable{ //假设一共有100张票

2020-07-25 17:52:07 242

原创 java 多线程

什么是多线程要说清楚什么是线程,首先要分清程序,进程线程的区别程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程(process)是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。 ——生命周期如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的进程作为资源分配的单位, 系统在运行时会为每个进程分配不同的内存区域线程(thread),进程可进一步细化为线程,是

2020-07-25 16:17:00 66

原创 java JDBC

什么是JDBCJDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这些类库可以以一种标准的方法、方便地访问数据库资源。JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系

2020-07-24 22:44:59 292

原创 java 泛型

什么是泛型泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型

2020-07-23 21:12:49 79

原创 java 泛型进阶

java泛型是如何实现的?java的泛型实际上是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除。Java的泛型基本上都是在编译器这个层次上实现的,在生成的字节码中是不包含泛型中的类型信息的,使用泛型的时候加上类型参数,在编译器编译的时候会去掉,这个过程成为类型擦除。如在代码中定义List和List等类型,在编译后都会变成List,JVM看到的只是List,而由泛型附加的类型信息对JVM是看不到的。Java编译器会在编译时尽可能的发现可能出错的地方,

2020-07-23 21:12:07 107

原创 Java 多态

什么是多态概念多态是同一个行为具有多个不同表现形式或形态的能力。举个栗子,现实中,比如我们按下 F1 键这个动作:如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同样是按下F1,在不同的状态中就产生了完全不同的结果。在java中可以理解为不同的对象中调用同名的函数产生了不同的结果。如何使用多态三大前提要有继承关系子类要重写父类方法父类引用指向子类

2020-07-21 20:55:23 77

空空如也

空空如也

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

TA关注的人

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