自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 问答 (1)
  • 收藏
  • 关注

原创 微服务架构

微服务架构(Microservices Architecture)是一种新型的软件架构模式,它将软件应用程序划分为一系列小型的、松耦合的服务模块,每个模块运行在它自己的进程中,通过轻量级的通信机制相互通信,从而组合成一个完整的应用系统。与传统的单体式架构相比,微服务架构的最大特点就是将复杂的系统拆解成若干个小型服务,通过精细的服务划分和隔离,使得系统更加高效和稳定。微服务架构的核心在于将复杂的应用系统分解成若干小型的服务,因此需要进行服务的精细化划分,充分考虑每个服务的独立性和可复用性。

2023-10-12 16:58:00 104

原创 工作后的一点点反思

工作也有一段时间了,第一份工作是用力软敏捷开发框架来做网站开发。前台的用jQuery格式的js,后台用c#,数据库sqlserver。因为之前没有过js的基础,学习起来还是比较吃力的。为什么会吃力呢?我最近一直在考虑这个问题,其实语法不同的不是最重要的,最重要的其实是思想的问题。也有一个和重要的原因是,踏入工作后,没有那种深入全面的进行学习,平常也仅仅是为了能够实现某个功能而进行学习,这种...

2020-05-05 12:45:33 199

原创 exception 异常理解

//异常:exception n.一般情况以外的人;例外,规则的例外;例外的事物;/*上面是exception的定义,其实这里应该叫做例外,而不是异常,实际上异常并不是本意*/#include "pch.h"#include <iostream>//假如这个函数是库的作者写的,当出现例外的时候,将问题throw,让库的使用者来判断应该如何处理这个exceptionvoid ...

2019-12-27 17:33:22 297

原创 我对解释器的理解

对于解释器,其实一直停留在一句 边解释边执行。有一次,对js语法有点不理解时,思考到是不是解释器本质上与编译器不相同导致的呢。于是,查询了解释器的相关内容,但是,没有找到我想要的结果。不要紧,咱来分析分析。首先,所有的程序运行到操作系统上都会成为进程。进程包括内核中的pcb 以及内存中相应的空间,包括代码区,常量区,全局变量区,堆区,栈区。而且我们知道代码区和常量区是不可改变的。先来简...

2019-12-20 17:23:10 282

原创 继承关系中派生类重写基类(成员函数和虚函数)

我们知道,要想重写基类的虚函数,函数名称、参数、返回类型必须相同,才能够实现多态。class a {public: a() = default; virtual void display(int a)const { std::cout << " A virtual" << std::endl; }};class b :public a {publ...

2019-12-06 22:28:15 3010 3

原创 二义性问题之重载函数和转换构造函数

所谓二义性呢,就是出现了多个能够匹配的方式,导致编译器无法判断选择哪一个,出现的错误。#include "pch.h"#include <iostream>class first {public: first(int a): number(a){}private: int number;};class second {public: second(in...

2019-12-02 16:46:20 278

原创 谈谈多线程

使用一个东西之前,知道其为什么会诞生,才能够好的知道其有点或者好处,更有效地使用。要说线程的好处,必须要提到进程。进程的出现是通过牺牲了cpu时间和内存空间来换取能够同时运行,或者叫模仿同时运行,也就是并发。那么,线程呢?现成的诞生,是因为进程有缺陷,进程的缺陷是啥?刚刚我们说进程浪费了内存空间和cpu时间。在单核时代,为了能够模拟出多个进程同时在执行,是通过进程轮着执行的,只...

2019-11-29 16:45:44 208

原创 ubuntu常用命令 一

linux系统种版本是非常多大,像黑客们最喜欢用的kali,服务器端常用的系统centos,这里我们以入门版本的ubuntu来说明,每个版本之间的命令基本差不多,但是多少细节还是有点区别啊。1.root和普通用户 当第一次进入系统时,是不允许以root进入的,我们需要激活root,命令: sudo su然后根据命令来输入密码。由root进入 用户, 命令:su + 用户名...

2019-11-29 16:18:51 165

原创 类设计者之访问控制

这里我们只谈关于类的访问控制的内容。设计类的时候讲求数据封装,所以呢有三种访问限定符public protected private .下面这段我认为非常的好,摘选自c++ primer 4th第544页。 从类的设计者的角度,不考虑继承的话,我们可以认为一个类有两种不同的用户:普通用户和类的实现者。其中,普通用户编写的代码使用类的对象,这部分代码只能访问类的pub...

2019-11-21 09:56:21 111

原创 ++ --运算符重载

++ --运算符有点特殊,因为有前置和后置两种,并且都是一元运算符。这就有点难分了。因此,为了区分前置和后置,后置的参数中带了一个int,用以区分前置和后置,代码如下。#ifndef PCH_H#define PCH_Htemplate<typename T>class like_ptr {public: like_ptr(T* a=nullptr): ptr(...

2019-11-10 20:39:13 93

原创 关于无法解析外部符号的错误

无法解析外部符号,表面意思还是比较清楚的。但当出了问题的时候呢,就不太好解决了。最常出现问题的原因:1.没有包含头文件2.没有包含库文件3.静态成员变量没有在类外定义这里,我主要想说的是类中静态成员变量的问题。为啥我们没有在类外定义静态成员变量就会报这种错误呢。分析一下编译器对静态成员变量的处理流程,相信大家就会明白了。1.大家应该都知道静态变量是在编译期就分配...

2019-11-10 19:37:18 523

原创 vector实现(带迭代器和allotor,非模板)

vector的实现,说说大体框架吧。1.vector中通过静态私有allotor的对象来动态实时分配空间。每次插入新内容是,都会检测空间是否足够,不够的话,重现分配现在大小的两倍,将内容拷贝过去。杀掉旧的空间。修改vector指针成员。这里有一点注意到是,类的静态成员要在类外进行定义,不然会报无法解析的外部符号错误。因此,在.cpp文件开头中有allocator<string>...

2019-11-10 19:04:28 180

原创 嵌套类

刚开始使用迭代器,对迭代器的定义方式有点疑惑。vector<string>::iterator a;::代表了iteraor这个类的做用户在vector<string>这个模板类的里面。于是百度了一番,最终认为这是嵌套类。在类中定义的类类型为嵌套类,而包含嵌套类的类称为外层类。虽然嵌套类是一个类型,理解的时候,就把它当作是外层类的一个内部成员即可。访问控...

2019-11-10 12:51:33 115

原创 通过指针访问私有成员

我们都知道为了实现数据封装,添加了private,protected,public三种访问限定符。在类的外部对应private和protected直接通过对象名和相应类类型的指针是不能访问私有成员的。但是,我们可以通过特殊方法来读取私有成员。#include "pch.h"#include <iostream>#include<string>using ...

2019-11-08 20:11:22 1475

原创 free释放空间的解疑

malloc是c中分配动态空间的方式之一,free是释放分配的动态空间的方法。但是呢,我们可以通过malloc来分配一段非常大的空间,free的时候仅仅是传递了应该指针作为参数,没有指出要收回的范围大小。例子:int*a =(int*)malloc(sizeof(int)*10);free(a);这里呢,我们一共分配了40个字节的空间。但是,free的时候仅仅传递了一个int*...

2019-11-08 17:32:24 424

原创 标准库sort函数第三参数

#include<algorithm>头文件中包含着sort排序函数,这个函数接受第三参数。可以是函数名,也可以是函数指针,也可以是lamba表达式等等等。这里主要提醒一点,不能传递成员函数名。但可以是静态成员函数和全局函数。成员函数中包含了this指针,而sort函数会像这个第三参数传递两个参数,所以,成员函数不行。下面是一个模仿shared_ptr智能指针的程序...

2019-11-07 21:26:01 284

原创 极简版shared_ptr实现

程序如下:头文件:#ifndef PCH_H#define PCH_H#include<string>#include<iostream>using namespace std;class like_shared_ptr {public: //交换函数 friend void swap(like_shared_ptr&, like_shar...

2019-11-02 20:44:26 224

原创 关于.h文件和.cpp文件所包含内容的问题

基于vs 2017c++编译器,不包含其他。之前一直认为头文件反正只包含一次,将类中的成员函数在类的下面定义没有问题。所以以前经常将函数这样定义。但是呢,之前偶尔会出现重定义的问题,碰到过几次,也没有太在意,今天呢,实现一个内容时,也是如此,但是找了好久都没有找到问题,真的是很烦啊。所以啊,强烈推荐大家按照规范来编写程序,为了自己,为了别人。将简短的内容在类内定义,作为内联函数,但是一旦长...

2019-11-02 20:20:47 170

原创 static成员变量简单使用

static成员变量最最最需要注意到一点,就是他的赋初值是在类的定义外。为什么?static变量属于整个类,而不是某个对象,所有对象共用。如果在类内,每次创建对象,都会将这个量赋值的。那么,我们在什么地方进行赋值呢?在mian函数中?还是在哪里呢?如果按照正确的思维,确实应该在mian函数中赋初始值。但是呢,在大的项目中,大家都是分工的,我编写好的类,别人可以直接拿来用。如果,你使用别人的...

2019-11-02 12:04:27 196

原创 javascript脚本语言的思考

最近一段时间呢,在参加实训。15天左右的时间,主要有写网站,微信小程序,python小程序。现在网页前端部分基本上要结束了,学到js脚本语言的时候,哎,感觉这种语言,这个这个,好多的内部实现机制与c++语言不一样,虽然这门语言相对简单,但是内部实现呢,或许更加的困难,所以更不好容易去理解。娶个例子吧,所有变量都通过var 来进行定义,编译器自己会匹配类型,这个和c++ 11重点auto 十分的...

2019-10-21 21:30:34 90

原创 类类型隐式转换

c++中不仅仅基本类型有类型转换。类类型也有。像static_cast,const_cast等等都可以对基本类型和类类型进行强制转化。那么类类型的隐式类型转换呢?隐式类型转换要用到带参构造函数和拷贝赋值函数。程序如下:#include "pch.h"#include <iostream>using namespace std;int main(){ xiao...

2019-10-21 21:12:53 475

原创 查找txt文件中出现的单词的数量和行数

从一个txt文本文档中查找某个单词出现的次数和相应的行数。方法:1将文本文档内容按每行读入到vector<string>容器中。2.将vector<string>中每个string拆分成相应单词。3.将单词和出现的行数作为一组,放入map<string,set<string::size_type>容器中。4.将用户输入的单词从map中进...

2019-10-20 20:04:03 1454

原创 服务器架构介绍

这篇文章到底放在那个模块呢?想想放哪里都不太好,没办法,最后还是放在了网络部分。说起服务器架构呢,是一个高大上的话题,若有写的不好的地方,大家勿喷哦。相信大家都知道b/s和c/s架构。我们就从这里说起。1.浏览器——服务器架构不知道大家有没有写网站的经历,但是我相信大家都有上网的经历吧。哈哈。浏览一个网页的时候,在搜索栏输上域名,或ip地址,或者关键字弹出一堆网站推荐,点击。然...

2019-10-13 22:08:20 4913 1

原创 multimap记录家庭成员程序

题目要求:定义一个multimap,关键字是家庭的姓,值是一个vector,报存家中孩子的名字,允许重名。编写代码,实现添加新的家庭以及向已有家庭中添加新的孩子。代码如下:#include "pch.h"#include <iostream>#include<map>#include<string>#include<vector&gt...

2019-10-12 20:42:03 149

原创 经典单词计数程序

题目要求:统计每个单词在输入中出现的次数解决办法:用标准库中的map来存储单词以及出现的次数。这里会出现两种方法:方法一、下标法#include "pch.h"#include <iostream>#include<map>#include<set>#include<string>using namespace s...

2019-10-12 19:54:38 357

原创 类中成员函数的函数指针定义以及使用

在algorithm算法中经常会碰到传递函数指针的情况,在这里面他们把这种类型叫做谓词,当然lambda表达式就是谓词的一种。这次内容要说的当类的成员函数做为谓词时,是什么样子的,如何使用呢?类中一共会有三种函数:1.非静态非虚函数非静态非虚函数的函数指针,因为成员函数里面会传递this指针,所以就算是函数指针,也必须有对象来调用他们。非静态非虚函数的函数指针格式:返回类型(类名::*指...

2019-10-11 20:55:53 2357

原创 map、set初次尝试

c++中一共有8中关联容器,分别是:map //红黑树实现,每个节点保存有key和value,不允许有重复的关键字multimap //同map类似,不同点:允许有重复的关键字set ...

2019-10-11 15:54:00 91

原创 c++ primer p349 biggies的实现

要求:随机输入多个字符串,最后输ctrl+z,回车。输入想要显示的字符串的最小长度。将字符串按长度和大小排序。然后输出满足条件的字符串。代码如下:#include "pch.h"#include <iostream>#include<vector>#include<string>#include<algorithm>usi...

2019-10-09 20:18:36 181

原创 c++中关于参数是字符数组时的情况

在论坛里面看到一个c++课本上完全写下来的程序。但是说编译时有问题。正好我也有这本课本,回去尝试了,确实,报错了。找了一会儿,最后知道了原因。其实学习c的时候知道这部分知识,在这里就是没想起来。不过也无关紧要了,已经过时的东西,以后估计也不会碰到了吧。代码如下:(注释)#include "pch.h"#include <iostream>#include<strin...

2019-10-09 19:40:35 374

原创 vector<string>容器排序以及删除其中相同的string元素

题目要求:假定已有一个vector,保存了多个故事的文本。我们希望简化这个vector,是的每个单词只出现一次,而不管单词在任意给定文档中到底出现了多少次。可能这个题目要求读起来有点不好理解,见代码会很清晰:#include "pch.h"#include <iostream>#include<vector>#include<string>...

2019-10-08 15:26:59 518

原创 string中遍历匹配所有子串以及替换

当我们要在stirng中匹配所有子串时,用find成员函数非常的方便。不用像c一样,用那个超级难的KMP算法和BF算法。哈哈,虽然难,但是想起以前自己学数据结构的那股感觉,心里还是会感到欣慰。好,说正题,代码如下:#include "pch.h"#include <iostream>#include<vector>#include<string>...

2019-10-07 10:15:16 944

原创 时间片轮转算法模拟

这是我们操作系统课程设计的时候写的一个模拟时间片轮转的算法。比较简单。哈哈哈哈代码如下:/*时间片轮转算法 author GODLUO 1.获取用户输入 2.创建结构体并且插入链表 3.时间片循环消耗进程中时间 3.1时间够直接减去 3.2时间不够一个时间片,按进程剩余时间 4.结束,输出一共所用时间以及各进程所用 时间和各进程结束顺序 */#include&...

2019-10-06 14:39:04 1125

原创 c写的贪吃蛇

vs 2017下,编写的程序,一个pch.h头文件,这个是项目开始就自带的。一个pch.cpp和snake.cpp。snake.cpp代码如下:// snake.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。#include"pch.h"#include<time.h>int main(){ startgame(); return 0;...

2019-10-06 14:15:19 165

原创 关于容器循环中的erase

#include "pch.h"#include <iostream>#include<vector>#include<string>#include<list>using namespace std;int main(){ int ia[] = { 0,1,1,2,3,5,8,13,21,55,89}; vector<in...

2019-10-06 13:52:09 172

原创 计算机开机过程的分析

对于计算机硬件这方面的东西我一直不是太感冒,但我坚定的认为只有将硬件和软件放在一起思考才能够更好的理解。尤其是对于操作系统的理解上。产生了一些疑惑。和大家分享分享。先说说从按下开机键到系统启动的过程吧。第一步会执行,内存ROM中的程序,也就是我们常说的BIOS程序。这部分程序是固化在主板上的,当然现在的ROM通过某些方法可以改变里面的内容。这部分程序的功能呢,1.初始化计算机给硬件部分。2...

2019-10-05 16:24:57 209

原创 网络通信的基本过程

介绍:网络通信呢是一个非常复杂的过程。对于这种比较负责的问题,我们通常采用分层来解决,每一层负责自己的工作,以及定义后相互使用的接口。采用这种方式,将一个大的问题细分为小的、目标更加确定的小问题。这种思想,在其他一些地方,都是非常有用的。我举个例子吧,mvc框架,将一个笼统的大问题进行了细分,前端界面层、控制层、业务逻辑层、dao层、数据库层,这样进行分解,将问题细分,有利于开发大型软件,同时...

2019-10-05 16:12:27 2031

原创 关于返回类型为引用

在c++中,函数经常返回类型为引用。这里呢,我主要说的一点是,当返回类型为引用时,我们可以用引用来接受,也可以用普通变量来接受。#include "pch.h"#include <iostream>using namespace std;int a = 19;int& lyy() { return a;}int main() { int b = lyy...

2019-10-05 15:11:05 5455

原创 用临时对象 赋值、初始化对象的过程

代码如下:#ifndef _Hello#define _Hello#include<iostream>using namespace std;class LUO {private: int x; int y;public: LUO() { cout << "默认构造函数" << endl; } LUO(int a, int b) ...

2019-09-07 16:44:57 507

原创 c++中const都使用

在c++中,const可以用在很多地方。我认为最重要的是两个方向1.变量上2.函数上下面分别来说明。用在变量上时#include "pch.h"#include<string>#include <iostream>using namespace std;int main(){ const int a=1; //最简单的情况 可以叫...

2019-09-04 17:42:35 96

原创 C++ Big Three 拷贝构造函数,拷贝复制函数,析构函数,移动构造函数,移动赋值函数

我们有时在一个类的成员变量中定义一个指针,让其指向一段new出来的空间。比如下面这一段例子:#ifndef _bigthree#define _gigthree#include<iostream>using namespace std;class havepointer{private: char* a;public: havepointer() { a ...

2019-09-04 12:18:09 272

空空如也

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

TA关注的人

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