自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (1)
  • 收藏
  • 关注

原创 js常用的数组和对象的方法(后续待添加)

js常用的数组和对象的方法(后续待添加)数组的方法1.Array.map()2.Array.foreach()3.Array.filter()4.Array.every()5.Array.some()6.Array.reduce()7.Array.push()8.Array.pop()9.Array.shift()10.Array.unshift()11.Array.isArray()12.Array.concat()13.Array.toString()14.Array.j.

2022-04-11 15:49:30 581

原创 Nginx 403 forbidden 错误的原因及解决方法

Nginx 403 forbidden 错误的原因及解决方法一、由于启动用户和nginx工作用户不一致所致1.1查看nginx的启动用户,发现是nginx,而为是用root启动的[root@iZwz96xkbmh1v1n08cvb5dZ /]# ps aux|grep nginxroot 2773 0.0 0.0 9068 844 ? Ss 13:56 0:00 nginx: master process /usr/sbin/nginxnginx

2022-04-10 16:17:36 47260 5

原创 JavaScript学习巩固基础外加进阶(下)底层原理

title: JavaScript学习巩固基础外加进阶(下)底层原理date: 2022/3/23 11:30#目录文章目录#目录三、面向对象高级1. 对象创建模式1.1 Object构造函数模式1.2 对象字面量模式1.3 工厂模式1.4 自定义构造函数模式1.5 构造函数+原型的组合模式2、继承模式2.1 原型链继承2.2 借用构造函数继承(假的)2.3 组合继承四、线程机制与事件机制1、进程与线程1.1 进程1.2 线程1.3 进程与线程1.4 相关的问题1.4.1 何为多进程与多线程?1..

2022-03-26 09:15:24 360

原创 Promise的理解与使用

title: Promise的理解与使用(快速上手版)date: 2022/3/24 23:00#目录文章目录title: Promise的理解与使用(快速上手版)date: 2022/3/24 23:00#目录一、Promise的理解与使用1. Promise是什么?1.1 理解1.2 promise 的状态1.2.1 promise 的状态1.2.2 promise 的状态改变1.3 promise的基本使用1..3.1 使用1.3.2 使用 promise 封装 ajax 异步请求1.3..

2022-03-26 09:13:52 342

原创 Ajax记录(详解)

#目录文章目录#目录一、Ajax简介1. XML简介2. Ajax的特点2.1 AJAX 的优点2.2 Ajax的缺点3. HTTP简介3.1 请求报文3.2 响应报文3.3 Chrome网络控制台查看通信报文二、原生Ajax1. Ajax的使用1.1 Get方式1.2 Post方式1.3 解决ie缓存问题1.4 请求超时与网络异常1.5 取消请求1.6 重复请求问题三、常见三种Ajax请求方式1. jQuery发送AJAX请求1.1 $.get()1.2 $.post()1.3 $.ajax2. Ax

2022-03-24 11:28:09 249

原创 JavaScript学习巩固基础外加进阶(上) 底层原理

title: JavaScript学习巩固基础外加进阶(上)底层原理date: 2022/3/22 22:30#目录文章目录#目录一、javaScript基础总结1、数据类型相关知识点1.1 基本数据类型1.2 引用数据类型1.3 判断的方法1.3.1 typeof1.3.2`instanceof`(判断实例方法)1.3.3 *`===`*1.4 相关问题引出1.4.1 undefined与null的区别?1.4.2 什么时候给变量赋值为null呢?1.4.3 *严格区别变量类型与数据类型?*1..

2022-03-22 19:10:46 1070 1

原创 JavaScript学习笔记(第四部分)总共四部分(完结)

JavaScript学习笔记(第四部分)总共四部分9 事件9.1 事件对象当响应函数被调用时,浏览器每次都会将一个事件对象作为实参传递进响应函数中,这个事件对象中封装了当前事件的相关信息,比如:鼠标的坐标,键盘的按键,鼠标的按键,滚轮的方向。。可以在响应函数中定义一个形参,来使用事件对象,但是在IE8以下浏览器中事件对象没有做完实参传递,而是作为window对象的属性保存<!DOCTYPE html><html lang="en"><head> &l

2022-03-21 15:07:56 311

原创 JavaScript学习笔记(第三部分)总共四部分(超级详细版)

title: JavaScript学习笔记(第三部分)总共四部分date: 2022/3/19 22:30JavaScript学习笔记(第三部分)总共四部分6. 常用类和方法6.1 包装类计时器:当我们需要测试某一段代码执行的效率,计时器就显得尤为的重要了,计时器的使用: <script> console.time("test"); for(var i = 0 ; i< 10000;i++) { .

2022-03-20 16:00:45 1239

原创 JavaScript学习笔记(第二部分)总共四部分

JavaScript学习笔记(第二部分)总共四部分4 对象(Object)字符串String、数值Number、布尔值Boolean、空值Null、未定义Undefined是基本的数据类型,这些数据都是单一的值,之间是不存在关联的。对象(Object)是js中的引用数据类型,对象是一种复合数据类型,在对象中可以保存多个不同数据类型的属性使用typeof检查一个对象时,会返回object <script> // 新建一个对象用new关键字 var o

2022-03-18 23:39:44 1523

原创 JavaScript学习笔记(第一部分)总共四部分(超级详细版本)

JavaScript学习笔记(第一部分)总共四部分1 JavaScriptJavaScript主要负责前端界面中的行为。它是一门运行在浏览器端的脚本语言。一开始主要是用于处理网页中的前端验证,如:用户名长度,密码长度等。js的特点:解释型语言、类似于C的语法结构、动态语言、基于面向对象。1.1 基本的输出语句主要学习三个关键字:alert、document、console. <script> alert("浏览器对话框提示"); document

2022-03-17 23:42:24 2807

原创 C++实现一个简单的二叉树

C++实现一个简单的二叉树/**---------------------------------------* 文件名称: CBinaryTree.h* 功能描述: 二叉树实现* 创建标识: 肖澳笛 2022/2/9** 修改标识:* 修改描述:------------------------------------------**/#ifndef CBIANARYTREE_BINARYTREE_H#define CBIANARYTREE_BINARYTREE_H#include

2022-02-10 09:43:05 473

原创 C++实现经典排序算法

C++实现经典排序算法/**---------------------------------------* 文件名称: CSorter.h* 功能描述: 排序算法的实现* 创建标识: xad 2022/2/9** 修改标识:* 修改描述:------------------------------------------**/#ifndef CSORTER_SORTER_H#define CSORTER_SORTER_Hclass CSorter{public: /**

2022-02-10 09:42:22 367

原创 C++实现一个简单的数组队列

C++实现一个简单的数组队列/**---------------------------------------* 文件名称: CSeqQueue.h* 功能描述: 数组实现队列* 创建标识: xad 2022/2/9** 修改标识:* 修改描述:------------------------------------------**/#ifndef SEQQUEUE_SEQQUEUE_H#define SEQQUEUE_SEQQUEUE_Hconst int MATH_MAX

2022-02-09 14:18:19 309

原创 C++实现一个简单的链表队列

C++实现一个简单的链表队列/**---------------------------------------* 文件名称: CLinkQueue.h* 功能描述: 链表队列实现* 创建标识: xad 2022/2/9** 修改标识:* 修改描述:------------------------------------------**/#ifndef LINKQUEUE_LINKQUEUE_H#define LINKQUEUE_LINKQUEUE_Hnamespace Alg

2022-02-09 14:17:46 734

原创 C++实现一个简单的链表栈

C++实现一个简单的链表栈/**---------------------------------------* 文件名称: CLinkStack.h* 功能描述: 链表栈实现* 创建标识: xad 2022/2/9** 修改标识:* 修改描述:------------------------------------------**/#ifndef CLINKSTACK_LINKSTACK_H#define CLINKSTACK_LINKSTACK_Hnamespace Algo0

2022-02-09 14:17:14 370

原创 C++实现一个简单的数组栈

C++实现一个简单的数组栈/**---------------------------------------* 文件名称: CSeqStack.h* 功能描述: 数组实现栈* 创建标识: xad 2022/2/9** 修改标识:* 修改描述:------------------------------------------**/#ifndef CSQESTACK_SEQSTACK_H#define CSQESTACK_SEQSTACK_Hconst int MAX_SIZE

2022-02-09 14:16:35 414

原创 C++实现一个简单的链表

C++实现一个简单的链表/**---------------------------------------* 文件名称: CLinkList.h* 功能描述: 链表实现* 创建标识: xad 2022/2/8** 修改标识:* 修改描述:------------------------------------------**/#ifndef CLINKLSI_LINKLIST_H#define CLINKLSI_LINKLIST_Hnamespace Alog { // 打印函

2022-02-09 00:42:33 103

原创 C++实现一个简单的动态数组

C++实现一个简单的动态数组/**---------------------------------------* 文件名称: CDynamicArray.h* 功能描述: 实现数组函数* 创建标识: xad 2022/2/8** 修改标识:* 修改描述:------------------------------------------**/#ifndef CDYNAMICARRAY_AYNAMICARRAY_H#define CDYNAMICARRAY_AYNAMICARRAY_H

2022-02-09 00:37:26 179

原创 C++11一些常用的特性(多线程)

C++11一些常用的特性(多线程)一、处理日期和时间的 chrono 库C++11 中提供了日期和时间相关的库 chrono,通过 chrono 库可以很方便地处理日期和时间,为程序的开发提供了便利。chrono 库主要包含三种类型的类:时间间隔duration、时钟clocks、时间点time point。1. 时间间隔 duration1.1 常用类成员duration表示一段时间间隔,用来记录时间长度,可以表示几秒、几分钟、几个小时的时间间隔。duration 的原型如下:// 定义于头文

2022-01-28 11:57:37 337

原创 C++11一些常用的特性(2)(通用性能提高)

C++11一些常用的特性(2)(通用性能提高)一、列表初始化关于 C++ 中的变量,数组,对象等都有不同的初始化方法,在这些繁琐的初始化方法中没有任何一种方式适用于所有的情况。为了统一初始化方式,并且让初始化行为具有确定的效果,在 C++11 中提出了列表初始化的概念。1. 统一的初始化在 C++98/03 中,对应普通数组和可以直接进行内存拷贝(memcpy ())的对象是可以使用列表初始化来初始化数据的// 数组的初始化int array[] = { 1,3,5,7,9 };double

2022-01-27 12:54:10 544

原创 C++11一些常用的特性(通用性能提高)

C++11一些常用的特性(通用性能提高)一、constexpr 关键字1.1 const关键字在 C++11 之前只有 const 关键字,从功能上来说这个关键字有双重语义:变量只读,修饰常量,举一个简单的例子:void func(const int num){ const int count = 24; int array[num]; // error,num是一个只读变量,不是常量 int array1[count]; // ok

2022-01-25 15:26:05 272

原创 C++11一些常用的特性(易学和易用性)

C++11一些常用的特性(易学和易用性)一、自动类型推导在 C++11 中增加了很多新的特性,比如可以使用 auto 自动推导变量的类型,还能够结合 decltype 来表示函数的返回值。使用新的特性可以让我们写出更加简洁,更加现代的代码。1、auto关键字在 C++11 之前 auto 和 static 是对应的,表示变量是自动存储的,但是非 static 的局部变量默认都是自动存储的,因此这个关键字变得非常鸡肋,在 C++11 中他们赋予了新的含义,使用这个关键字能够像别的语言一样自动推导出变量

2022-01-24 11:54:45 378

原创 C++11一些常用的特性(稳定性和兼容性)

C++11一些常用的特性(稳定性和兼容性)一、原始字面量在C++11中添加了定义原始字符串的字面量,定义方式为:R“xxx(原始字符串)xxx” 其中()两边的字符串可以省略。原始字面量R可以直接表示字符串的实际含义,而不需要额外对字符串做专一或连接等操作。比如:编程过程中,使用的字符串中常带有一些特殊字符,对于这些字符往往要做专门的处理,使用了原始字面量就可以轻松的解决这个问题了,比如打印路径:#include<iostream>#include<string>usin

2022-01-24 10:55:24 640

原创 Kmp算法实现strStr()函数

Kmp算法实现strStr()函数1、摘要实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。2、代

2022-01-21 10:26:50 88

原创 C++设计模式之迭代器模式(数据结构)(Iterator )

C++设计模式之迭代器模式(数据结构)(Iterator )1、序论​ 常常有一些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用。这时候,将这些特定数据结构封装在内部,在外部提供统一-的接口,来实现与特定数据结构无关的访问,是一种行之有效的解决方案。​ 在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“同一种算法在多种集合对象上进行操

2022-01-17 18:45:14 175

原创 C++之字符串经典算法学习

字符串经典的算法题目求解1、反转二叉树的经典递归实现namespace Algo01 { struct TreeNode { int nVal; TreeNode* pLeft; TreeNode* pRight; TreeNode(int nValue) :nVal(nValue), pLeft(nullptr), pRight(nullptr) { }; }; class CSolut

2022-01-16 21:27:08 490

原创 C++设计模式之访问器模式(行为变化)(Visitor )

C++设计模式之访问器模式(行为变化)(Visitor )1、序论​ 在组件的构建模式中,组件的行为的变化经常导致组件本身剧烈的变化。“行为变化”模式将组件的行为和组件本身进行解耦,从而支持组件行为的变化,实现两者之间的松耦合。​ 在软件构建过程中,由于需求的改变某些类层次结构中常常需 要增加新的行为(方法), 如果直接在基类中做这样的更改,将会给子类带来很繁重的变更负担,甚至破坏原有设计。​ 如何在不更改类层次结构的前提下,在运行时根据需要透明地为类层次结构上的各个类动态添加新的操作,从而避

2022-01-15 22:29:24 227

原创 C++设计模式之命令模式(行为变化)(Command)

C++设计模式之命令模式(行为变化)(Command)1、序论​ 在组件的构建模式中,组件的行为的变化经常导致组件本身剧烈的变化。“行为变化”模式将组件的行为和组件本身进行解耦,从而支持组件行为的变化,实现两者之间的松耦合。​ 在软件构建过程中,行为请求者与行为实现者同长呈现一种紧耦合。但在某些场合----比如需要对行为进行“记录、撤销、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者” 与“行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。​

2022-01-14 23:06:59 191

原创 C++设计模式之解析器模式(领域规则)(Interpreter)

C++设计模式之解析器模式(领域规则)(Interpreter)1、序论​ 在特定领域中,某些变化虽然频繁,但可以抽象为某种规则。这时候,结合特定领域,将问题抽象为语法规则,从而给出在该领域下的一般性解决方案。​ 在软件构建过程中,如果某一特定领域的问题比较复杂,类似的结构不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。​ 在这种情况下,将特定领域的问题表达为某种语法规则下的句子, 然后构建一个解释器来解释这样的句子 ,从而达到解决问题的目的。模式的定义:​ 给定一个语言

2022-01-13 19:29:39 135

原创 C++设计模式之组合模式(数据结构)(Composite)

C++设计模式之组合模式(数据结构)(Composite)1、序论​ 常常有一些组件在内部具有特定的数据结构,如果让客户程序依赖这些特定的数据结构,将极大的破坏组件的复用。这时候,将这些特定的数据结构封装在内部,在外部提供统一接口,来实现与特定数据结构无关的访问,是一种行之有效的解决方案。​ 软件在某种情况下,客户代码过多的依赖于对象容器复杂的内部实现结构,对象容器内部实现结构(而非抽象接口)的变化将引起客户代码的频繁改变。带来了带啊吗的维护性、扩展性等弊端。​ 如何将客户代码与复杂的对象容器结

2022-01-12 20:11:30 106

原创 C++设计模式之状态模式(状态变化)(State)

C++设计模式之状态模式(状态变化)(State)1、序论​ 在组件构建的过程中,某些对象的状态经常会面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?“状态变化”模式为这一问题提供了一种解决方案。​ 在软件系统构建的过程中,某些对象的状态如果有变化,其行为也会随之而发生变化,比如说文档处于只读的状态,其支持的行为和读写状态的支持的行为就可能完全的不同。​ 如何在运行时根据对象的状态来透明的更改对象的行为?而不会为对象操作和状态转化之间引入紧耦合?模式的定义:​ 允许一个

2022-01-12 20:10:19 237

原创 C++设计模式之适配器模式(接口隔离)(Adapter)

C++设计模式之适配器模式(接口隔离)(Adapter)1、序论​ 在组件构建的过程中,某些接口之间的依赖常常会带来很多的问题、甚至根本无法去实现。采用添加一层间接的稳定接口,来隔离本来相互紧密关联的接口是一种常见的解决方案。​ 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放进新的环境中去应用,但是新环境要求的接口是这些现存对象所不满足的。​ 如何去应对这种“迁移的变化”?如何既能利用现有对象的良好的实现,同时又能够满足新的应用环境所要求的接口?模式的定义:​ 将一个类

2022-01-12 20:09:30 164

原创 C++设计模式之代理模式(接口隔离)(Proxy)

C++设计模式之代理模式.(接口隔离)(Proxy)1、序论​ 在组件构建的过程中,某些接口之间的依赖常常会带来很多的问题、甚至根本无法去实现。采用添加一层间接的稳定接口,来隔离本来相互紧密关联的接口是一种常见的解决方案。​ 如何简化外部客户程序和系统之间的交互接口?如何将外部客户程序的演化和内部的子系统的变化之间的依赖相互解耦?模式的定义:​ 为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问。2、代理模式的结构类图3、代码实现(伪代码)class ISubject{

2022-01-12 10:24:06 508

原创 C++设计模式之门面模式(接口隔离)(Facade)

C++设计模式之门面模式.(接口隔离)(Facade)1、序论​ 在组件构建的过程中,某些接口之间的依赖常常会带来很多的问题、甚至根本无法去实现。采用添加一层间接的稳定接口,来隔离本来相互紧密关联的接口是一种常见的解决方案。​ 如何简化外部客户程序和系统之间的交互接口?如何将外部客户程序的演化和内部的子系统的变化之间的依赖相互解耦?模式的定义:​ 为子系统中一组接口提供一个一致稳定的界面Dacede模式定义了一个高层的接口,这个接口使得这一子系统更加的容易使用(复用).2、门面模式的结构类

2022-01-12 10:23:12 117

原创 C++设计模式之享元模式(对象性能)(FlyWeight)

C++设计模式之享元模式.(对象性能)(FlyWeight)1、序论​ 面向对象很好的解决了抽象的问题,但是必不可免地要付出一定的代价。对于通常的情况而言,面向对象的成本大都可以忽略不记。但是某些情况下,面向对象所带来的成本必须谨慎的处理。​ 在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价—》主要是内存需求的方面。​ 如何在避免大量细粒度对象问题的同时,让外部客户程序依然能够透明的使用面向对象的方式来进行操作?模式的定义:​ 运用共享技术

2022-01-12 10:22:17 122

原创 C++设计模式之原型模式(对象创建)(Prototype)

C++设计模式之原型模式(对象创建)(Prototype)1、序论​ 通过“对象创建” 模式绕开new,来避免对象创建(new)过程 中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它 是接口抽象之后的第一步工作。​ 在软件相同中,经常面临着“某些结构复杂的对象的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有一些比较问稳定一致的接口。​ 如何应对这些变化?如何向”客户程序(使用这些对象的程序)”隔离出这些易变的对象。从而达到易变的对象不随需求的变化而变化?

2022-01-11 10:50:28 322

原创 C++设计模式之抽象工厂模式(对象创建)(Abstract Factory )

C++设计模式之抽象工厂模式(对象创建)(Abstract Factory )1、序论​ 通过“对象创建” 模式绕开new,来避免对象创建(new)过程 中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它 是接口抽象之后的第一步工作。​ 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工 作;同时,由于需求的变化,往往存在更多系列对象的创建工作。​ 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一 种“封装机制”来避免客户程序和这种“多系列具体对象创建工作” 的紧耦

2022-01-11 10:49:35 78

原创 C++设计模式之工厂模式(对象创建)(Factory Method)

C++设计模式之工厂模式(对象创建)(Factory Method)1、序论​ 通过“对象创建” 模式绕开new,来避免对象创建(new)过程 中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它 是接口抽象之后的第一步工作。​ 在软件系统中,经常面临着创建对象的工作;由于需求的变化, 需要创建的对象的具体类型经常变化。​ 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一 种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧 耦合模式的定义:​ 定义一个用于创建

2022-01-11 10:48:49 178

原创 C++设计模式之桥模式(单一职责)(Bridge)

C++设计模式之桥模式(单一职责)(Bridge)1、序论​ 在软件组件的设计中,如果责任划分的不清晰,使用继承得到的 结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码, 这时候的关键是划清责任。​ 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度, 乃至多个纬度的变化。​ 如何应对这种“多维度的变化”?如何利用面向对象技术来使得 类型可以轻松地沿着两个乃至多个方向变化,而不引入额外的复杂度?模式的定义:​ 将抽象部分(业务功能)与实现部分(平台实现)分离,使它们 都可

2022-01-11 10:47:49 70

原创 C++设计模式之装饰模式(单一职责)(Decorator)

C++设计模式之装饰模式(单一职责)(Decorator)1、序论​ 在软件组件的设计中,如果责任划分的不清晰,使用继承得到的 结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码, 这时候的关键是划清责任。​ 在某些情况下我们可能会“过度地使用继承来扩展对象的功能” , 由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性; 并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展 功能的组合)会导致更多子类的膨胀。​ 如何使“对象功能的扩展”能够根据需要来动态地实现?同时避 免

2022-01-11 10:45:04 67

026.滚动条.html

026.滚动条.html

2022-05-14

空空如也

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

TA关注的人

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