自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

路遥知码力的博客

微信搜一搜:【路遥知码力】专注于Java、数据结构与算法,您的关注是前进的源泉!

  • 博客(44)
  • 收藏
  • 关注

原创 【设计模式】装饰者模式?点过奶茶你就知道!

【设计模式】装饰器模式继承滥用是一个问题,我们如何使用对象组合的方式,来实现运行时装饰类。熟悉装饰器模式,可以在不修改底层代码的情况下,对对象赋予新的内容。1 场景1.1 需求描述奶茶店现在逐步都支持了线上点餐的方式,我们现在的目标就是实现一个简单的奶茶选择搭配生成对应搭配的类型选择结果与价格的一个功能。我们都知道点一杯奶茶的使用的订单系统,基本如下:(1)选择奶茶类型例如:乌龙奶茶(Wulong)、抹茶奶茶(Mocha)、可可奶茶(Keke)、招牌芋圆奶茶(yuyuan)。点击图片之后进入选

2021-10-10 03:11:20 1060

原创 【设计模式之 Observer Mode】什么是观察者模式?看过NBA直播你就知道了!

【设计模式】观察者模式1 场景一场湖人的NBA的主场球赛将会有多种方式在各个平台直播,有视频直播与文字比分直播。而各个平台需要获取NBA比赛分数的数据,将NBA球馆内的分数显示在各个官方直播平台的比分数据栏上。并且各个官方直播平台会依据基本的数据情况进行各自的展示。数据中心会依据比赛情况不断更新比赛数据对象。从数据中心获取数据并不是我们这次所关注的,我们关注的是如何将每次更新比赛数据对象的情况,同步给各个官方直播平台的方式。如何做到松耦合并且并且具备扩展性。2 场景实现很直观我们需要做的任务就

2021-10-04 13:57:48 1408

原创 【一起刷题】优先队列PriorityQueue

优先队列PriorityQueue1 模板Queue<Integer> q = new PriorityQueue<Integer>(new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o1-o2; //小根堆 //retur

2021-04-22 17:45:00 212

原创 【Redis数据结构与对象】整数集合(intset)

【Redis数据结构与对象】整数集合(intset)整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多,Redis就会使用整数集合作为集合键的底层实现。一、整数集合的实现整数集合(intset)是Redis用于保存整数值的集合抽象数据结构,可以保存的类型有int16_t、int32_t、int64_t的整数值,保证集合中不会出现重复元素。在intset.h/intset数据结构如下:typedef struct intset {

2021-04-22 17:37:22 257

原创 【Redis数据结构与对象】跳跃表

【Redis数据结构与对象】跳跃表跳跃表是一种有序的数据结构,通过在每个结点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的结点查找,还可以通过顺序性操作在批量处理结点。在大部分情况下,跳跃表的效率可以和平衡树列斯,但是跳跃表的实现比平衡树更简单,所以很多程序使用了跳跃表来代替平衡树。Redis使用跳跃表来作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员(member)是比较长的字符串的时候,R

2021-04-22 17:35:52 172

原创 【Redis数据结构与对象】字典

【Redis数据结构与对象】字典字典,又称为符号表(symbol table)、关联数组(associative array)或映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。字典中,一个键(key)可以和一个值(value)进行关联(或者将键映射为值),这种关联的键和值就称为键值对。Redis使用C语言没有内置字典因此Redis自己实现了字典。字典在Redis中使用广泛,例如Redis的数据库就是用字典作为底层实现,对数据库的增删改查都是构建在对字典的操作之上的

2021-04-22 17:31:05 238

原创 【Redis数据结构与对象】Redis链表

【Redis数据结构与对象】链表1 链表功能链表提供了高效的节点重排能力,以及循序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。作为一种常用数据结构,链表内置在很多编程语言,Redis使用C语言没有内置链表数据结构,所以Redis构建了自己的链表实现。链表在Redis中应用广泛,例如列表键底层就是链表,列表键中包含了很多元素,或列表中包含的元素较长字符串,Redis会用链表作为列表键的底层实现(链表中每个节点保存一个整数值)。Redis中发布、订阅、慢查询、监视器等功能也用到链表,

2021-04-22 17:23:08 158

原创 【Redis 数据结构与对象】简单动态字符串SDS源码分析

【Redis 数据结构与对象】简单动态字符串SDS源码分析上篇讲到了SDS的原理,本文我们分析一下sds.h/sdshdr。sds相关的源码实现。1 sds构造函数/** sds构造函数* 输入参数:初始化字符串init 初始化字符串长度initlen* 返回值:创建成功返回对应的sds对应的buf 失败返回NULL* 时间复杂度T=O(N)*/sds sdsnewlen(const void *init, size_t initlen) { struct sdshdr *sh

2021-04-22 17:18:56 144

原创 【Redis 数据结构与对象】简单动态字符串SDS

【Redis 数据结构与对象】简单动态字符串SDS1、概述Redis没有直接使用C语言的传统字符串标识(以空字符结尾的字符数组),而是自己构建了一种简单动态字符串(simple dynamic string, SDS)的抽象类型,并且将SDS作为Redis的默认字符串。Redis中,C字符串只会用于保存字符串字面量,用于无需对字符串进行修改的地方,例如打印日志。redisLog(REDIS_WARNING, "Redis is now ready to exit....")当redis需要的不仅

2021-04-22 17:17:41 164

原创 【MySQL】数据库建表策略与数据优化策略

【MySQL】数据库建表策略与数据优化策略一、选择优化的数据类型原则MySQL支持的数据类型很多,以下几个原则有助于类型选择:1、最小数据类型原则应该尽可能使用可以正确存储数据的最小类型数据。更小的数据通常更快,因为占用更小磁盘、内存、CPU缓存,CPU周期更少。但是要确保没有低估需要存储的值的范围,因为在schema中很多地方增加数据类型的范围是很耗时的操作。2、简单操作原则简单数据类型操作会使用更少的CPU周期,例如整形比字符操作的代价低,例如时间的存储上,是使用MySQL内置类型还是字符

2021-04-22 17:12:55 413

原创 【MySQL】MySQL架构与基础概念(锁概念、事务)

【MySQL】MySQL架构与基础概念(锁概念、事务)1 MySQL架构最上层(客户端层):客户端调用MySQL存储服务第二层(服务器层:连接/线程处理、解析器、查询缓存、优化器):MySQL核心服务,包括查询解析、分析、优化、缓存以及内置函数(日期、时间、加密等等),跨存储引擎功能在此处实现:存储过程、触发器、视图等等。第三层(存储引擎层):负责MySQL的存储和提取。2 锁概念2.1、读写锁当多个客户并发的读取数据库或写的时候,会出现并发的问题。这是实现两种类型锁组成的锁系统解决问题。共

2021-04-22 17:11:30 207 1

原创 【MySQL】MySQL基准测试方法

【MySQL】MySQL基准测试方法基准测试(benchmark),是针对系统设计的一种压力测试。主要介绍MySQL与基于MySQL应用的基准测试的策略和工具。讨论MySQL基准测试工具sysbench的使用。TPS(每秒的事务数)1 基准测试的策略基准测试两种策略:一是针对整个系统的整体测试,二是单独测试MySQL。也被称为集成式(full-stack)以及单组件式(single-component)基准测试。采用方式一原因:(针对整个系统做集成测试,而不是单独测试MySQL)(1)测试整个

2021-04-22 17:08:46 332

原创 【已解决】Source Insight 中文乱码解决方案

【已解决】Source Insight 中文乱码解决方案适用解决版本 Source InSight 4.0 中文注释出现乱码的情况。改变文件编码方式菜单栏 File ===> Reload As Encoding ===>显示出如下选择Chinese Simplified(GB18030)但是这里会发现,我们只对当前的文件设置了这个格式,如果开启其他文件就需要重新操作。所以我们需要对文件默认的解码方式进行设置。改变默认文件编码方式点击菜单栏Options ===> Pr

2021-03-22 12:17:29 939 1

原创 【已解决】Maven中maven中 maven-clean-plugin 有红色波浪线

【已解决】Maven中maven中 maven-clean-plugin 有红色波浪线【问题展示】Maven中包内Plugins中有红色波浪线:【解决方案】第一步:判断是Plugins中哪一个maven包我们只需要先判断是maven报中下面什么地方有红色波浪线。例如我这里是maven-clean-plugin为红色波浪线。第二步:找到Lifecycle中对应的包选项重新build我们对对应报错的maven 中 clean进行 run maven build得到了运行结果如下,说明bu

2021-03-17 12:46:46 3445 3

原创 MySQL数据库事务

MySQL数据库事务学习与实践一、什么是事务1、事务概念事务就是一组原子性的SQL查询,可以看做是一个独立的工作单元。2、事务核心事务的执行,数据库能够执行事务(一组sql语句的全部语句),那么就能够执行这一整组的查询。如果事务中有任何一条语句无法执行,则全部的语句都不会执行。事务内的语句,要么全部执行成功,要么全部执行失败。3、经典例子:银行转账两个人转账A向B转账200元,三个步骤:1、检查A账户余额大于等于200元2、从A账户减去200元3、B账户增加200元三个步骤的操作,必

2021-03-16 15:57:05 438

原创 【已解决】Springboot服务 Netty启动报错Failed to submit a listener

【已解决】Springboot服务 Netty启动报错Failed to submit a listenerForce-closing a channel whose registration task was not accepted by an event loop: [id: 0xb77c8a77]2021-03-12 18:23:38.984 ERROR 13052 --- [ main] i.n.u.c.D.rejectedExecution :

2021-03-15 12:45:28 5314

原创 【已解决】IDEA中Maven的Dependencies包中有红波浪线解决方案

【已解决】IDEA中Maven项目红色波浪线解决方案在原来的项目中已经导入相关的包,但是报红色波浪线例如原来我在dependencies中报错的是这个包我们可以知道这个是在spring-boot-starter-test 依赖下的jar包【解决方案】第一步:确认自己是有这个包在Maven仓库路径下的。打开File-setting如果没有这个包则:刷新包路径会自动加载。则会将对应的包下载到路径中。第二步:我们知道了报错的依赖为spring-boot-starter-test 依赖下

2021-03-15 12:42:34 2069

原创 一起读Java编程思想(4)---多态怎么理解?什么是向下转型与向上转型?

多态只有非private的方法才能被覆盖,但是推荐在导出类当中对于基类中private的方法最好采用不同的名字。并且基类中private的方法子类中不可见,也不能被重载。只有普通方法的调用是多态的。域是没有多态性的(事实上一般被声明为private)。静态的方法也不具备多态性。class Super { public int field = 0; public int getField() { return field; }}class Sub extend

2020-10-07 21:44:31 216

原创 一起读Java编程思想(3)---继承、final关键字、复用类

复用类继承语法import static net.mindview.util.Print.*;class Cleanser { private String s = "Cleanser"; public void append(String a) { s += a; } public void dilute() { append(" dilute()"); } public void apply() {

2020-10-07 21:40:58 202

原创 一起读Java编程思想(2)---构造器的初始化与清理

初始化与清理用构造器确保初始化每个类都要定义一个initialize()方法,提醒在使用对象之前必须调用这个方法,使得类的设计者可以确保每个对象都可以被初始化。构造函数是没有返回类型的函数,用于构造函数,同时这种构造函数是用来初始化的。构造器是一种特殊的方法,构造器也是可以重载的。class Tree { int height; Tree() { print("Planting a seedling"); height = 0; } T

2020-10-07 21:37:32 239

原创 一起读Java编程思想(1)---Java中的对象

Java中的对象一、使用引用操纵对象Java使用引用变量来对对象进行操作。可以将引用变量看做是遥控器,来操作电视机(对象)进行操作,只要握住遥控器,就能保持与电视机的连接。当想改变频道或者减小音量的时候,实际上是操控遥控器(引用),再由遥控器来调控电视机这个对象。如果想在房间里面四处走动,同时可以操控电视机,那么只需要携带遥控器(引用变量),而不是携带电视机(对象)同时,即使没有电视机,遥控器也可以独立存在,即当有一个引用变量,并不需要有一个对象与其关联。String s;这里只创建一个引用,并

2020-10-07 21:23:13 209

原创 【已解决】VMware中虚拟机无法打开:未能将管道连接到虚拟机: 所有的管道范例都在使用中。

由于磁盘重新分配之后扩充卷添加后,原来存的磁盘不能作为系统盘,如果新建的磁盘分配到新加卷那部分,所以开启的时候无法开启。因此在其他盘创建虚拟机就可以重新开启。

2020-09-24 23:09:26 2609

原创 # Java构造函数看这一篇就够啦!

Java构造函数看这一篇就够啦!Java中的对象声明Cat myCat = new Cat();此句话是Java中的对象声明语句。语句完成对对象的声明、创建、赋值。①【Cat myCat = new Cat();】 加粗部分声明一个引用变量Java虚拟机分配空间给引用变量,并且将此变量声明为myCat。并且这个引用变量被永久的固定为Cat类型。换言之,这是一种控制Cat的遥控器,而不会是控制其他类型的遥控器。②【Cat myCat = new Cat();】加粗部分创建对象此部分要求Jav

2020-09-12 15:54:19 225

原创 Java基础语法学习

title: Java基础语法学习date: 2020-01-31 20:15:02tags: Java学习Java基础学习求公约数辗转相除法 Scanner in = new Scanner(System.in); int a = in.nextInt(); int b = in.nextInt(); int oa = a; int ob =...

2020-02-03 01:22:13 248

原创 Java进阶学习-9 细胞自动机

title: Java进阶学习-9 细胞自动机date: 2020-02-02 22:06:23tags: Java学习死亡:如果活着的邻居数量<2或>3 则死亡新生:如果正好有3个邻居活着,则新生其他情况则保持原状两种看程序的方法①从main开始看程序 看完②从小的部件开始看 追父类一直看到顶层 从细节开始看 最后拼在一起代码展示入下:CellMachine...

2020-02-03 01:21:33 527

原创 Java进阶学习-8 抽象

title: Java进阶学习-8 抽象date: 2020-02-02 21:43:13tags: Java学习[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GQ4s65Oe-1580664055716)(C:\Users\36987\AppData\Roaming\Typora\typora-user-images\image-2020020221462...

2020-02-03 01:20:56 182

原创 Java进阶学习-7 面向对象程序设计原则

title: Java进阶学习-7 面向对象程序设计原则date: 2020-02-02 18:02:27tags:以一个城堡游戏为例子谈面向对象程序设计原则Game.javapackage castle;import java.util.Scanner;public class Game { private Room currentRoom; public Game(...

2020-02-03 01:20:26 249

原创 Java进阶学习-6 Object类、可扩展性

title: Java进阶学习-6 Object类、可扩展性date: 2020-02-02 16:52:59tags: Java学习Object类单根结构,所有的类都是从一个root类继承过来,默认继承过来所有类都默认继承自Object的。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SrifQHPO-1580663982160)(C:\Users\3...

2020-02-03 01:20:01 206

原创 Java进阶学习-5 多态

title: Java进阶学习-5 多态date: 2020-02-02 14:36:09tags: Java学习子类和子类型·类定义了类型·子类定义了子类型·子类的对象可以被当做父类的对象来使用​ ·赋值给父类的变量​ ·传递给需要父类对象的函数​ ·放进存放父类对象的容器里子类型与赋值子类的对象可以赋值给父类的变量[外链图片转存失败,源站可能有防盗链机制,建议将图片保...

2020-02-03 01:17:56 166

原创 Java进阶学习-4 继承

title: Java进阶学习-4 继承date: 2020-02-02 10:51:59tags: Java学习[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXR7WuOg-1580663827442)(C:\Users\36987\AppData\Roaming\Typora\typora-user-images\image-2020020212151...

2020-02-03 01:17:25 216

原创 Java进阶学习-3 容器类 对象数组 set HashMap

title: Java进阶学习-3 容器类 对象数组 set HashMapdate: 2020-02-01 22:10:26tags: Java学习记事本Demo功能设计[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TIA3yi3l-1580663767957)(C:\Users\36987\AppData\Roaming\Typora\typora-...

2020-02-03 01:16:30 188

原创 Java进阶学习-1类与对象初始化 成员变量成员函数

title: Java进阶学习(1) 类与对象初始化 成员变量成员函数date: 2020-02-01 14:19:05tags: Java学习public static void main(String[] args) { Picture pic = new Picture(420,250); Circle c1 = new Circle(320,40,80); Rect...

2020-02-03 01:15:16 541

原创 Java基础语法学习

title: Java基础语法学习date: 2020-01-31 20:15:02tags: Java学习Java基础学习求公约数辗转相除法 Scanner in = new Scanner(System.in); int a = in.nextInt(); int b = in.nextInt(); int oa = a; int ob =...

2020-02-03 01:12:56 243

原创 平衡二叉树及其C++实现-AVL

title: 平衡二叉树(AVL)date: 2020-01-14 11:26:36tags: 数据结构1.1平衡二叉树的定义为了解决二叉查找树如果插入的顺序不合适,会导致二叉查找树变成一个单链(可以看二叉查找树文章当中的讨论),例如按照递增序列建立二叉查找树就会导致一边倒的情况,从而无法发挥二叉树可以使得查找保持O(logn)查找的效率。故由使得二叉树的层数越小,导出了平衡二叉树。A...

2020-01-14 17:04:29 386

原创 二叉查找树(BST)

title: 二叉查找树(BST)date: 2020-01-13 20:36:30tags: 数据结构1.1二叉查找树定义二叉查找树(Binary Search Tree, BST)是特殊的二叉树,又称排序二叉树、二叉搜索树、二叉排序树。递归定义:①可为一棵空树②非空则由根结点、左子树、右子树组成。左右子树均为一棵二叉查找树,且根结点、根左孩子、根右孩子大小为 左孩子<=根...

2020-01-13 21:58:52 232

原创 链表模板

title: 链表模板date: 2020-01-10 20:28:04tags: 数据结构静态链表解决相对复杂题目的模板,一般结点数据都不会太大100010以内都可以,所以使用静态链表即可。①定义静态链表struct Node { int address; //结点地址 typename data; //数据域 int next; //指针域 xxx; //结点的某个性质 ...

2020-01-11 15:07:38 319

原创 链表的建立

title: 链表的建立date: 2019-02-27 08:49:25tags: 数据结构【动态链表】1.创建链表动态链表使用new delete需要添加头文件stdlib.h同时我们需要注意的是这里配合使用了指向前驱结点的指针pre和指向当前结点的p。通过数据域与指针域进行创建新结点。需要注意的是头结点head的数据域是不存储数据的。以下是基本的动态链表的代码:#include...

2020-01-11 15:06:56 529

原创 Dijkstra算法解决最短路径问题

title: Dijkstra算法解决最短路径问题date: 2020-01-07 16:18:25tags: 数据结构单源最短路径问题:计算源点到其他各个顶点的最短路径长度全局最短路径问题:图中任意两个节点之间的最短路径以上两个问题均可以归结为最短路径问题(事实上对每个结点进行求单源最短路径就可以解决全局最短路径)Dijkstra算法用于解决单源最短路径,但是不能求带负边权的最短路...

2020-01-07 20:32:32 1423

原创 DevC++支持C++11特性终极指南

笔者捣鼓了一个上午不知道为什么直接添加-std=c++以后还是不可以,所以记录这一篇文章给大家参考。1.确保编译器版本4.8.1以上笔者刚刚开始编译器版本为4.7.2所以重新下了一个devc++直接百度去官网下载即可网址是这个https://sourceforge.net/projects/orwelldevcpp/下载下来以后版本我当前是devc++5.11 编译器版本 TDM...

2020-01-07 12:14:25 1399 2

原创 计算机网络知识结构图---应用层

  参考文献: [1]谢希仁. 计算机网络.第5版[M]. 电子工业出版社, 2008.  [2]王道论坛组, 王道论坛. 2015年计算机网络联考复习指导[M]. 电子工业出版社, 2014....

2018-11-24 22:23:45 1166

空空如也

空空如也

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

TA关注的人

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