- 博客(61)
- 收藏
- 关注
原创 undefined reference to `muduo::Logger::~Logger()‘
今天在学习muduo中的EventLoop类,代码如下:#include <errno.h> #include "muduo/net/EventLoop.h"
2020-10-12 11:50:09
1021
原创 libevent初探:手动编译一个关于libevent的示例程序
一、引言最近在学习《Linux高性能服务器编程》一书,学习到后面看到了此书介绍libevent这个库,自己未来也会从事服务器相关开发工作,于是决定静下心来好好研究这个库。为了学习libevent函数的用法,我觉得最有效的方式是先运行起来一个实例程序,然后随着实例程序的步骤逐个去查阅源码,所谓先会用再会调试。二、实例程序编译这里我没有直接去编译sample文件夹下的相关代码,而是从网上找到了一份实例代码,实现一个定时器:每2秒执行一次printf,我的版本是libevent-2.1.12-stable
2020-09-09 15:40:56
589
1
原创 LeetCode专题——树
LeetCode专题——树一、前提正如一句老话所说——磨刀不误砍柴功,在为面试或者复试准备算法题的时候,尽量先不要直接钢,直接钢的后果就是刷题进度缓慢,没有多大效果。本人目前觉得较好的一个方法是一个个专题的刷,先根据专题刷一些简单或中等难度的题目,熟悉或者背诵相关模板,在能力达到一定级别后,去刷一刷周赛,随机做一做题目。那么为什么我本次算法复习之路从树这一专题刷起,主要是如下考虑:树的结构可以用链表或线性表的方式保存,这样我们先开始刷 树专题,等于可以复习链表和线性表的一些知识点。一些算法,比
2020-07-19 21:56:11
316
原创 1441. Build an Array With Stack Operations
Build an Array With Stack OperationsGiven an array target and an integer n. In each iteration, you will read a number from list = {1,2,3..., n}.Build the target array using the following operations:Push: Read a new element from the beginning list, and
2020-05-27 14:54:48
272
原创 1403. Minimum Subsequence in Non-Increasing Order
Minimum Subsequence in Non-Increasing OrderGiven the array nums, obtain a subsequence of the array whose sum of elements is strictly greater than the sum of the non included elements in such subseque...
2020-04-23 10:10:51
292
原创 1370. Increasing Decreasing String
Increasing Decreasing StringGiven a string s. You should re-order the string using the following algorithm:Pick the smallest character from s and append it to the result.Pick the smallest characte...
2020-04-23 00:26:33
277
原创 7. Reverse Integer
Reverse IntegerGiven a 32-bit signed integer, reverse digits of an integer.Example 1:Input: 123Output: 321Example 2:Input: -123Output: -321Example 3:Input: 120Output: 21Note:Assume we a...
2020-04-17 20:25:02
146
原创 1. Two Sum——C++和Go语言解法
1.Two SumGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use ...
2020-04-10 10:59:36
165
原创 Docker——容器相关命令
容器容器是Docker的另一个核心概念,简单来说,容器是镜像的一个运行实例。所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层,同时容器中的应用程序处于运行状态。如果认为虚拟机是模拟运行的一整套操作系统(包括内核、应用运行态环境和其他系统环境)和跑在上面的应用。那么Docker容器就是独立运行的一个(或一组)应用,以及它们必需的运行环境。1. 创建容器1.1 新建容器doc...
2020-04-09 22:59:16
219
原创 Docker——镜像相关命令
镜像镜像是Docker三大核心概念中最重要的,Docker运行容器前需要本地存在对应的镜像,如果镜像不存在,Docker会尝试从默认镜像仓库下载,用户也可以通过配置,使用自定义的镜像仓库。获取镜像docker [image] pull NAME[:TAG]其中NAME是镜像仓库名称,TAG是镜像的标签。如果不显式指定TAG,则默认会选择latest标签。[root@VM_0_8_cent...
2020-04-09 00:11:07
363
原创 Docker之一文理解核心概念
Docker的三大核心概念镜像(Image)容器(Container)仓库(Repository)1. Docker镜像Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模块。镜像是创建Docker容器的基础。2. Docker容器Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。所有容器是彼此相互隔离、互不可见,但可以通过特定的IP和端口进行...
2020-04-08 21:20:31
316
原创 在Docker中启动Redis并进入Redis
首先我们通过Dockr搜索Redis有关的镜像源docker search redis接着我们通过Docker下载Redis镜像源docker pull redis这里没有设置版本好就会默认下载latest的镜像源。[root@localhost ~]# docker imagesREPOSITORY TAG IMAGE...
2020-02-21 10:15:27
51856
2
原创 SpringBoot——Docker
一、Docker1.1 简介Docker是一个开源的应用容器引擎;Docker支持将软件编译成一个镜像,然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。运行中的这个镜像称为容器,容器启动时非常迅速的,1.2 Docker核心概念docker镜像(Images): Docker镜像是用于创建Docker容器的模板。软件打包的镜像。docker容器(Cont...
2020-02-21 09:49:37
212
原创 SpringBoot——数据访问
SpringBoot与数据访问一、JDBC<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependen...
2020-02-19 20:31:35
184
原创 解决IDEA中maven添加dependency过慢的问题
每次在IDEA中给pom.xml添加项目依赖时下载的速度都会特别的慢,慢到自己开始怀疑人生。这是由于maven自带的仓库在国外,所以访问起来特别的慢,所以我们改一下配置,将maven访问仓库的网址设置到国内就可以了。那么国内比较好的仓库地址当然是像阿里云、清华大学、中国科学技术大学这些了。方式如下:我们在IDEA的安装目录下找到 /plugins/maven/lib/maven2/conf...
2020-02-18 16:28:32
2388
原创 Centos7刚安装Docker启动失败——Job for docker.service failed because the control ....解决办法
内核版本,必须是3.10及以上,如果内核版本不够的话,请自行升级 sudo yum update[root@localhost ~]# uname -r3.10.0-327.el7.x86_64安装完Docker输入命令,Docker无法启动并报错[root@localhost ~]# systemctl start dockerJob for docker.service faile...
2020-02-16 23:36:53
6036
5
原创 SpringBoot——配置嵌入式Servlet容器
一、 剖析SpringBoot自动配置嵌入式Servlet在Spring以前,如果我们写一个web应用,我们最终可能需要将一个web应用打成一个war包,然后我们还需要在外部配置好Tomcat环境,而这个Tomcat就是一个Servlet容器,然后把这个war包放在Tomcat上,我们在Tomcat上启动就可以了。而SpringBoot中,我们无须配置一个Tomcat服务器,我们直接运行就可以...
2020-02-15 21:48:14
321
原创 SpringBoot——错误处理机制
一、SpringBoot默认的错误处理机制默认效果:浏览器,返回一个默认的错误页面。如果是其他客户端,默认响应一个json数据。1.1 原理为什么会产生默认效果?可以参照ErrorMvcAutoConfiguration这个类。给容器中添加了以下组件1、DefaultErrorAttributes2、BasicErrorController3、ErrorPageCustomiz...
2020-02-12 15:34:17
368
原创 SpringBoot与Web开发
Wen开发使用SpringBoot:1) 创建SpringBoot应用,选中我们需要的模块2) SpringBoot已经默认将这些场景配置好了,只需要在配置文件中进行少量配置,即可以运行起来3) 自己编写业务代码自动配置原理?这个场景SpringBoot帮我们配置了什么?能不能进行修改?能修改哪些配置?能不能进行扩展?xxxxAutoConfiguration:帮我们给容器中自动配置...
2020-02-11 11:02:25
383
原创 SpringBoot的PUT和Delete请求
在Form表单中,只支持get和post方式,而为了实现put方式,我们可以通过如下三个步骤实现1)SpringMVC中配置HiddenHttpMethodFilter2)页面创建一个post表单3)创建一个input项,name="_method",值就是指定的请求方式其中在HiddenHttpMethodFilter类中获取"_method"的值,得到新的请求方式。<in...
2020-02-10 23:20:21
2994
原创 SpringBoot——日志
SpringBoot——日志一、日志框架 有一个程序猿叫小张,他独立开发一个大型系统,每次调试,都喜欢在控制台打印关键数据System.out.println()。每次运行都会输出很多数据记录,为了避免这些数据的输出,他决定写一个框架用来记录这些数据运行时的信息。于是创建了一个日志框架:zhanglog,jar。但随着业务的发展,小张的日志框架需要提供其他额外的功能,比如异步模式,自动归档...
2020-02-07 20:55:22
185
原创 SpringBoot——SpringBoot配置
一、 配置文件在前一篇博客里面,快速创建SpringBoot项目中,我们提到在默认的resources文件夹中有一个application.properties配置文件,我们可以在配置文件中自己设定配置,比如想修改服务器的端口号码,我们可以写入server.port=8081而使得服务器的端口号码发生改变。SpringBoot默认使用两种的配置文件作为全局的配置文件,配置文件名是固定的ap...
2020-02-04 21:24:07
357
原创 解决IDEA中SpringBoot中文乱码问题(针对配置文件properties)
先说明一下我的使用情况,最近在学习SpringBoot,在学习到配置文件的时候,创建了一个person类,如下:@Component@ConfigurationProperties(prefix = "person")public class Person { private String lastName; private Integer age; private ...
2020-02-03 22:08:11
1870
原创 java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMake
在使用SpringBoot 2.2.4版本做项目时,使用单元测试的时候,环境中报的错误。java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null) at org.mockito.internal.configurat...
2020-02-03 21:38:38
9231
3
原创 SpringBoot——使用Spring Initializer快速创建Spring Boot项目
使用Spring Initializer快速创建Spring Boot项目以IDEA为例。① 新建项目② 输入组名和项目名称。选择相应的Java版本。③ 选择Web模块功能。④ 联网从spring.io中下载默认生成的SpringBoot项目:主程序已经生成好了,我们只需要编写我们自己的逻辑。resource文件夹中目录结构static:保存所有的静态资源,js cs...
2020-02-03 16:56:48
794
1
原创 Redis设计与实现——第一部分 数据结构与对象
第一部分 数据结构与对象第2章 简单动态字符串Redis自己创建了一种名为简单动态字符串(simple dynamic string, SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。在Redis里面,C字符串只会作为字符串字面量用在一些无须对字符串值进行修改的地方,比如打印日志什么。但是如果用在一个字符串变量,Redis就会使用SDS来表示字符串值,比如在Redis的数据库里面...
2020-02-03 15:23:22
208
原创 Spring Boot——入门
一、Spring Boot入门1、Spring Boot简介简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案2、微服务微服务:架构风格一个应用应该是一组小型服务;可以通过HTTP的方式进行互通每个功能元素最终都是一个可独立替换和独立升级的软件单元。3、SpringBoot初试HelloWorld实现一个功能:浏览器发送hello请...
2020-02-03 14:35:52
186
原创 第12章 动态内存
第12章 动态内存静态内存或栈内存。静态内存用来保存局部static对象、类static数据成员以及定义在任何函数之外的变量。栈内存用来保存定义在函数内的非static对象。分配在静态或栈内存中的对象由编译器自动创建和销毁。对于栈对象,仅在其定义的程序块运行时才存在;static对象在使用之前分配,在程序结束时销毁。除了静态内存和栈内存,每个程序还拥有一个内存池。这部分内存池被称为自由空间或堆...
2020-01-19 21:53:26
145
原创 《数据结构与算法分析 Java语言描述》 栈
文章目录栈模型栈模型 栈是限制插入和删除操作只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶端。对栈的基本操作有push(进栈)和pop(出栈),前者相当于插入,后者则是删除最后的插入元素。...
2020-01-09 12:31:13
142
原创 第1章 MySQL体系结构和存储引擎
1.1 数据库与数据库实例 数据库是由一个个文件组成(一般来说都是二进制文件),是文件的集合,是依照某种数据模型组织起来并存放于二级存储器的数据集合。 数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作, 包括数据库定义、数据查询、数据维护、数据库运行控制都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。 当启动实例时,MyS...
2020-01-06 12:07:43
211
原创 第2章 InnoDB存储引擎  
文章目录InnoDB存储引擎的版本2.3 InnoDB体系结构后台线程内存InnoDB存储引擎的版本InnoDB存储引擎包含所有MySQL数据库的二进制发行版本中,早期版本随着MySQL数据库的更新而更新,在MySQL5.1中,可以 支持两个版本的InnoDB,一个是静态编译的InnoDB版本,可以称为老版本的InnoDB,另一个是动态加载的InnoDB版本,官方称为InnoDB Plugin...
2019-12-26 22:44:45
340
原创 自定义类型转换器
自定义类型转换器1、表单提交的任何数据类型全部都是字符串类型,但是后台定义Integer类型,数据也可以封装上,说明Spring框架内部会默认进行数据类型转换2、如果想自定义数据类型转换,可以实现Converter的接口使用步骤:第一步:第一个类,实现Converter接口,该接口有两个泛型。package utils;import org.springframework....
2019-12-04 12:11:13
156
原创 @RequestMapping详解与参数绑定
@RequestMapping详解属性: 1、value:用于指定请求的URL,它和path属性的作用是一样的。@AliasFor("path")String[] value() default {};@AliasFor("value")String[] path() default {}; 2、method:指接受到的请求方式。RequestMethod[] method...
2019-12-04 11:13:31
856
原创 SQL语言基础
SQL的全称是Structured Query Language,也就是结构化查询语言,同时SQL也是操作和检索关系数据库的标准语言。使用SQL语言,程序员和数据库管理员可以完成如下工作:在数据库中检索消息对数据库的信息进行更新改变数据库的结构改变系统的安全设置更改系统的安全设置增加或回收用户对数据库、表的许可权限 上面5个操作中,一般程序员可以完成前3个任务,后面的2个任...
2019-11-20 23:03:06
148
原创 MySQL基本命令
严格来说,数据库(Database)仅仅是存放用户数据的地方。当用户访问、操作数据库中额数据时,就需要数据库管理系统的帮助。数据库管理系统的全称是Database Management System,简称是DBMS,一个数据库管理系统不仅仅包含数据库,还包含对应的数据以及数据库维护人员等。但是我们在习惯上将数据库与数据流管理系统笼统地称为数据库。 DBMS是所有数据的知识库,它负责管理管理...
2019-11-20 16:56:23
104
原创 JDBC基础
JDBC基础 JDBC的全称是Java Database Connectivity,即Java数据库连接,它是一种可以执行SQL语句的Java API,封装了Java对数据库的访问。Java程序可以通过JDBC API连接到关系数据库,并使用SQL来对数据库进行查询、更新。可以把使用JDBC的Java程序想象成快餐店,当顾客(Java程序)购买食物(使用数据)时,顾客到窗口(程序到JDBC中A...
2019-11-20 16:11:10
95
原创 Java基础——数组
数组类型数组也是一种类型 Java的数组要求所有的数组元素具有相同 的数组类型。因此,在同一个数组中,数组元素的类型是唯一的。但是相互继承的类与类之间,可以看作类型是唯一的。 Java的数组既可以存放基本类型的数据,也可以存放引用类型的数据。值得指出的是,数组也是一种数据类型,不过它本身是一种引用类型。定义数组 Java语言支持两种语法格式定义数组:type[] arrayNam...
2019-11-19 11:15:43
123
原创 基本类型的类型转换
Java所提供的7种数值类型之间可以进行相互转换,有两种类型转换方式:自动类型转换和强制类型转换。自动类型转换 如果系统支持把某种基本类型的值直接赋予给另一种基本类型的变量,这种方式称为自动类型转换。当把表示范围小的数值或变量直接赋给另一个表数范围较大的变量的时候,系统将可以进行自动类型转换,否则就需要强制转换。byteshortcharintlongfloatdouble 当把任...
2019-11-18 20:45:58
286
原创 结构化开发语言和面向对象开发语言
在目前的软件开发领域中有两种主流的开发方法:结构化开发方法和面向对象开发方法。早期编程语言如C、Basic、Pascal等都是结构化编程语言。而随着软件开发技术的发展,也产生了很多面向对象的编程语言,比如:C++、Java、C#和Ruby等,它们具有更好的可重用性、可扩展性和可维护性等。结构化程序设计简介 结构化程序设计方法主张按功能来分析系统需求,其主要原则可概括为自顶向下、逐步求精、...
2019-11-17 10:37:22
3250
原创 理解方法调用
理解方法调用 弄清楚如何在对象上应用方法调用非常重要。比如下面假设要调用x.f(args),隐式参数x声明为类C的一个对象。下面是调用过程的相信信息。编译器查看对象的声明类型和方法名。假设调用x.f(args),且隐式参数x声明为C类的对象。要注意的是,可能有多个名字为f的方法,但是它们的参数类型和返回名称不同。比如:f(int)和f(String)。编译器将会一一列举所有C类中名为f的方...
2019-11-15 20:47:53
173
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人