自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java设计模式 - 适配器模式

1. 定义将一个类的接口,转换为客户期望的另一个接口,让原本接口不相容的类可以合作无间。2. 角色Target:目标抽象类 Accepter:适配器类 Acceptee:适配者类 Client:客户类3. 特点优点:通过引入一个适配器类来重用现有适配者类,而无需修改原代码,提高了适配者类代码的复用性。 缺点:若使用类适配器,对于Java等语言来说只支持单继承,因此只能...

2020-01-11 14:55:25 198

原创 Java设计模式 - 建造者模式

1.定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。2.角色Builder:建造者 ConcreteBuilder:具体建造者 Director:指挥者 Product:产品3.特点优点:将产品本身与产品创建过程解耦,每一个具体建造者都相对独立,因此可以方便地替换或新增具体建造者。 缺点:如果产品内部变化复杂,则需要许多具体建造者来应对这...

2020-01-09 14:59:52 108

原创 Java设计模式 - 单例模式

目录一、介绍1.定义2.角色3.特点二、实现1.饿汉式(线程安全)2.懒汉式3.懒汉式(双重检查加锁版本)4. 枚举方式5.静态内部类一、介绍1.定义确保类只有一个实例,并提供一个全局访问点。2.角色Singleton:单例类3.特点优点:因为系统内存中只有一个实例,可以节约系统资源,并且减少了因为创建、销毁对象带来的损耗,提高...

2020-01-09 13:52:13 80

原创 Java设计模式 - 工厂模式

工厂模式能够将对象的创建和使用解耦,且当创建一个对象的过程繁杂时,又有大量地方需要重复创建该对象,使用工厂模式则可以降低代码的重复率。另外,将对象的创建封装到工厂类,当创建过程发生改变时,可直接修改工厂类,而无需到每个创建对象的地方修改代码,降低了系统的维护成本。目录一、简单工厂模式1.定义2.角色:3.特点4.示例二、工厂方法模式1.定义2.角色3....

2020-01-09 13:09:02 105

原创 Java之集合 - ArrayList源码分析

一、简介上图为ArrayList的继承树,可看出实现了四个接口,分别介绍一下:Serializable:是一个空接口,实现了该接口的类可序列化和反序列化 Cloneable:是一个空接口,实现该接口的类覆盖了clone()方法,表明该类的实例对象能被克隆 RandomAccess:是一个空接口,表明该类的实例对象支持随机访问 List:表明该类是一个列表,具有增加、删除、修改、遍...

2019-11-14 11:22:57 127

原创 Java之并发 - 创建线程池的方式

一、通过Executors类提供的静态方法创建1. newFixedThreadPoolpublic static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new Link...

2019-11-09 11:23:16 130

原创 Java 线程池的拒绝策略 RejectedExecutorHandler

当线程池被关闭以后,在execute()方法中提交新任务将被拒绝(线程池被关闭或线程数达到maximumPoolSize),此时会采取定义的拒绝策略。在ThreadPoolExecutor中定义了四个静态内部类,均实现了RejectedExecutorService接口,并对接口中的rejectedExecution方法给出具体实现。一、CallerRunsPolicy如果线程池没有被...

2019-11-08 23:07:42 469

原创 线程池源码分析

一、线程池继承结构二、Executor接口public interface Executor { /** * Executes the given command at some time in the future. The command * may execute in a new thread, in a pooled thread, or i...

2019-11-08 22:04:40 137

原创 排序算法比较与总结

一、插入排序1. 核心思想共进行 N - 1 趟排序,对于 P = 1 到 P = N - 1 趟,保证从位置0到位置P上的元素为排序状态。在第P趟,将位置P上的元素移动到前P + 1个元素的正确位置上,比其更大的元素都向右移动一个位置。(图片链接:http://www.goyth.com/2018/02/08/straightInsertionSort/)2. 分析如果输入...

2019-10-10 15:56:58 176

原创 HTTP协议入门

一、 简介1. HTTP(HyperText Transfer Protocol)是Web的应用层协议,是Web的核心,由两个程序——服务器程序和客户程序实现。 HTTP定义了Web客户向Web服务器发送请求Web页面的方式,以及服务器向客户传送Web页面的方式。 HTTP运行在TCP上,由HTTP客户发起一个与服务器的TCP连接,一旦连接建立,该浏览器和服务器进程可通过套接字接口访问...

2019-06-09 17:30:34 112

原创 git基本操作命令

一、配置1. 配置用户名,邮箱及文本编辑器$ git config --global user.name "name"$ git config --global user.email email$ git config --global core.editor emacs2. 检查配置信息或某项配置$ git config --list$ git config <...

2018-08-10 14:51:39 106

原创 laravel可用的断言方法(持续更新)

$response->assertCount($num, $data);//断言data的数量为num$response->assertDoneSee($value);//断言给定的字符串包不含在响应中$response->assertEquals($expected, $actual);//断言两个对象是否相等$response->assertInstanc...

2018-08-08 21:35:29 1584

原创 laravel的fillable和guarded属性

所有的Eloquent模型预设会防止批量赋值,所以需要在Model中设置fillable和guarded属性。 protected $fillable = ['name'];protected $guarded = ['password'];fillable为白名单,表示该字段可被批量赋值;guarded为黑名单,表示该字段不可被批量赋值。可为所有属性设置黑名单:pr...

2018-08-06 22:08:26 13187

原创 C++类型转换运算符

语法:Type_cast <type-name> (expression);1.      dynamic_cast:使得能够在类层次结构中进行向上转换。用于指针类型转换时,若不能安全转换则返回空指针;用于引用类型转换时,若不能安全转换则返回bad_cast异常。2.      const_cast:改变值为const或volatile,其type-name和expression的类型...

2018-04-02 18:19:53 119

原创 C++ Primer Plus 第十六章笔记

一、string类1.      构造函数:注:npos为字符串的最大长度;NBTS表示以空字符结尾的字符串2.      输入:3.      使用字符串:(1)      可以运用关系运算符比较字符串。(2)      size() 和 length() 成员函数返回字符串的字符数。(3)      搜索字符串或字符:(4)      capacity() 返回当前分配给字符串的内存块的大小;...

2018-03-18 15:33:35 199

原创 C++ Primer Plus 第十五章笔记

1.      友元类的所有方法都可以访问原始类的私有成员和保护成员,其声明可以位于公有、私有或保护部分。2.      包含意味着将类对象作为另一个类的成员,而对类进行嵌套不创建类成员,而是定义了一种类型,该类型仅在包含嵌套类声明的类中有效。3.      嵌套类的作用域:(1)      嵌套类在另一个类的私有部分声明,则只有后者知道它;(2)      在另一个类的保护部分声明,则它对于后者...

2018-03-17 17:13:48 301

原创 C++ Primer Plus 第十四章笔记

1.      建立has-a关系:(1)组合(包含),即创建一个包含其他类对象的类。注意:使用公有继承时,类可以继承接口和实现;使用组合,类可以获得实现但不能获得接口,接口虽然不是共有的,但可以在类方法中使用它。(2)私有继承。使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员,这意味着基类方法将不会成为派生对象公有接口的一部分,但可以在派生类的成员函数中使用它们。使用私有继承时,只...

2018-03-17 11:09:24 177

原创 C++ Primer Plus 第十三章笔记

1.      使用公有派生,基类的公有成员将成为派生类的共有成员;基类的私有部分也将成为派生类的一部分,但只能通过基类的公有和保护方法访问。2.      派生类构造函数必须使用基类构造函数,意味着基类对象应当在程序进入派生类构造函数之前被创建。如果不调用基类构造函数,程序将使用默认的基类构造函数。3.      可将派生类对象和地址赋给基类引用和指针,被称为向上强制转换,不需进行显式类型转换,...

2018-03-16 16:16:48 230

原创 C++ Primer Plus 第十二章笔记

1.      调用复制构造函数:当函数按值传递对象或函数返回对象时,都将使用复制构造函数。2.      如果类中包含了使用new初始化的指针成员,应当定义一个复制构造函数,以复制指向的数据,而不是指针,称为深度赋值。复制的另一种形式只是复制指针值,仅浅浅地复制指针信息,称为浅复制。3.      将已有的对象赋给另一个对象时,将使用重载的赋值运算符;初始化对象时,并不一定会使用赋值运算符。4....

2018-03-15 18:21:03 347

原创 C++ Primer Plus 第十一章笔记

1.        友元函数不是成员函数,不需要使用限定符,关键字friend加在原型前而不能加在定义前。只有类声明可以决定哪一个函数是友元,因此类声明仍然控制了哪些函数可以访问私有数据。2.        只接受一个参数的构造函数定义了从参数类型带类类型的转换(含多个参数但除第一个参数外均提供了默认值也可)。如果使用关键字explicit限定了这种构造函数,则它只能用于显式转换。3.      ...

2018-03-14 14:15:48 145

原创 C++ Primer Plus 第十章笔记

1.        面向对象编程(OOP)是一种特殊的、设计程序的概念方法,其特性有:抽象、封装和数据隐藏、多态、继承、代码的可重用性。2.        其定义位于类声明中的函数都将自动成为内联函数;也可在类声明之外定义成员函数并使其成为内联函数,需在类实现部分中定义函数时使用inline限定符。3.        公有部分的内容构成了设计的抽象部分——公有接口,将数据封装到私有部分中可以保护数...

2018-03-12 15:22:59 191

原创 C++ Primer Plus 第九章笔记

1.使用#ifndef…#endif不能防止编译器将文件包含两次,而只是让它忽略第一次包含之外的所有内容。2.C++存储数据的方法:自动存储持续性(使用栈管理);静态存储持续性;线程存储持续性(C++11);动态存储持续性。3.三种静态持续变量:在代码块外声明,创建链接性为外部的静态持续变量;在代码块外声明并使用关键字static,创建链接性为内部的静态持续变量;在代码块内声明并使用关键字stat...

2018-03-12 15:21:44 235

原创 C++ Primer Plus 第八章笔记

1.        内联函数的运行速度比常规函数稍快,但占用内存。要使用这项特性,需在函数声明和定义前加上关键字incline。2.        必须在声明引用时将其初始化,且一旦与某个变量关联起来,就不能改变。3.        若将引用作为函数的参数时,其实参应是变量,不能是表达式。4.        对于形参为const引用的C++函数,如果实参不匹配(实参类型正确,但不是左值;实参类型不...

2018-03-10 17:00:13 238

原创 C++ Primer Plus 第七章笔记

1.        cin.get()函数读取所有的输入字符,包括空格和换行符,二cin>>跳过空格和换行符。2.        仅当只有一层间接关系时,才可以将非const地址或指针赋给const指针;而C++禁止将const的地址赋给非const指针。3.        通常,要声明指定特定类型的函数的指针,可以首先编写这种函数的原型,然后用(*pf)替换函数名。4.       ...

2018-03-10 16:59:06 181

原创 C++ Primer Plus 第六章笔记

1.        若果选项超过两个,则就代码长度和执行速度而言,switch语句的效率比if else高。2.        处理错误输入代码:3.        打开文件open()函数接受一个C-风格字符串作为参数。...

2018-03-09 14:17:29 131

原创 C++ Primer Plus 第五章笔记

1.  对于内置类型,递增/减前缀和后缀不会有差别;对于用户定义的类型,如果有用户定义的递增和递减运算符,则前缀格式效率更高。2.  C++规定,逗号表达式的值是第二部分的值。3.  编写延时循环:4.  基于范围的for循环(C++):5.  6.  cin.get()版本:cin.get();     cin.get(char);     cin.get(char*, int);7.  程序检...

2018-03-08 19:48:03 123

原创 C++ Primer Plus 第四章笔记

1.      只有在定义数组时才能使用初始化,且不能将一个数组赋给另一个数组。C++11数组初始化:可省略等号;在大括号不包含任何东西则为将所有元素设置为0.2.      若没有初始化数组,则元素的值为以前驻留在该内存单元中的值;若只初始化部分元素或将第一个元素设置为0,则编译器将其他元素设置为0.3.      任何两个空白分隔的字符串常量都将自动拼接成一个。4.      字符串输入:(1...

2018-03-07 15:59:23 198

原创 C++ Primer Plus 第三章笔记

1.      变量名命名需注意:以两个下划线或下划线和大写字母打头的名称被保留给实现使用;以一个下划线开头的名称被保留给实现,用作全局标识符。2.      对类型名使用sizeof运算符时,应将名称放在括号中,但对变量名使用时括号可选。3.      头文件climits定义了符号常量来表示类型的限制。4.      若不对函数内部定义的变量进行初始化,则该变量的值将是它被创建之前相应内存单元...

2018-03-05 16:57:59 221 2

原创 C++ Primer Plus 第二章笔记

1.      如果编译器到达main()函数末尾时没有遇到返回语句,则认为main()函数以“return 0;”语句结尾。这条隐含的返回语句只适用于main()函数,而不适用于其他函数。2.      若要使所需名称可用,如endl,可用以下语句实现:std::endl;     using std::endl;     using namespace std;3.      C++中重起一行...

2018-03-05 15:42:08 106

空空如也

空空如也

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

TA关注的人

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