自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

q302989778的博客

一个萌新菜鸟

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

原创 Golang结构体遍历

func ForeachStruct(obj interface{}) { t := reflect.TypeOf(obj) // 注意,obj不能为指针类型,否则会报:panic recovered: reflect: NumField of non-struct type v := reflect.ValueOf(obj) for k := 0; k < t.NumField(); k++ { fmt.Printf("%s -- %v \n", t.Field(k).Tag, v.Fi.

2021-01-27 22:34:22 4839 1

原创 如何将Golang项目部署到云上

·简介我在本地用的是Goland进行开发的,但是项目想要部署到Linux云服务器上,应该怎么做呢。·说明首先进入到该项目的目录,输入以下命令:SET CGO_ENABLED=0SET GOOS=linuxSET GOARCH=amd64go build main.go我用的是Goland,可以直接输入,大家用其他编译器的话,可以用cmd进入,也是一样的。完成后会在该目录...

2020-02-07 14:55:29 1468

原创 如何使用Go Module代理

·简介在我们使用Go Module时,golang/org/x中的文件因为撞墙无法下载,通过改变GOPROXY环境变量可以指定下载源。·地址https://mirrors.aliyun.com/goproxy/阿里云的代理仓https://goproxy.io/·说明阿里云的部门包出现无法下载就切换到https://goproxy.io/即可。Linux的话直接:...

2019-07-17 17:24:03 2835

原创 git push出现ERROR: Repository not found的解决

·问题git push时候出现的无法找到远程仓库的错误,git commit其他的都没有问题。网上的方法大多数关于更改sshd的权限或者删除host,试过以后发现都没有用。其实只需要重新提交地址就可以解决,运行如下命令:git remote set-url origin git@github.com:<仓库地址>...

2019-07-11 11:31:45 7641 1

原创 Golang实现并发聊天室

package mainimport ( "fmt" "net")type client struct { name string addr string pipe chan string}var Message = make(chan string)var onlinemap map[string]client = make(map[string]client)...

2019-07-10 10:15:28 435

原创 C++11-auto

·C++98中的auto其实在C++98的标准中就有对auto的定义,auto用于声明变量为自动变量,自动变量就是拥有自动生命周期的变量,如下:int a=1; auto int b=1;但是我们不妨想一下,函数中定义的变量不也是一个拥有自动生命周期的变量,一旦函数执行完毕也就意味着变量生命周期结束。因此auto显得很多余,于是C++11页已经删除了这一用法。·C++11中的...

2019-05-16 22:54:40 199

原创 cctype头文件的使用

函数名 作用 isalnum(c) 当c是字母或者数字时为真 isalpha(c) 当c是字母时为真 iscntrl(c) 当c是控制字符时为真 isdigit(c) 当c是数字时为真 isgraph(c]) 当c不是空格但可打印时为真 islower(c) 当c是小写字母时为真 isprint(c) 当c是可打印字符时为...

2019-05-14 21:28:14 878

原创 游戏背包系统

·Bag.hpp#pragma once#include<iostream>#include<vector>#include<string>#include<sstream>#define CAPACITY 8#define INFORMATION 2//默认一个背包,使用单例模式class Bag{private: ...

2019-05-02 22:33:09 1936

原创 桶排序

·什么是桶排序桶排序就是我们先申请一个范围的数组(桶),我们的数组里面全部初始化为0,我们把所有要排序的元素按照数组的下标进行映射,如果这个元素存在,那么数组对应的下标的值加一,最后我们遍历这个数组,如果value大于0,我们就进行输出。下面放个图吧:·代码#include<iostream>#include<vector>int main(){...

2019-04-09 22:54:40 109

原创 浅拷贝与深拷贝

·浅拷贝例子之前我们写过一个String类的基本封装,现在我们看下面的这个例子:#include<iostream>class String{public: String(const char *str="") :_pstr(new char[strlen(str)+1]) { strcpy(_pstr, str); } ~String() { ...

2019-04-09 18:37:17 134

原创 单例模式的例子

·什么是单例模式单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。·实现一个简单的单例在我们平常写的代码中,经常是通过构造或者拷贝构造来实例化对象,就像下面这样:class data{private: int _year; int _month; int...

2019-04-09 00:33:08 2842

原创 Linux中的进程

·什么是进程狭义定义:进程是正在运行的程序的实例。广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。·描述进程操作系统对于进程有自己的一个描述,叫做PCB(process control block),而我们在Linux系统下的则叫做task_struct。tas...

2019-03-19 17:34:48 161 1

原创 Linux下聊天软件的实现

·ChatClient.cc#include&lt;iostream&gt;#include"ChatClient.hpp"static void Usage(std::string proc){ std::cout&lt;&lt;"Usage: "&lt;&lt;proc&lt;&lt;"peer_ip"&lt;&lt;std::endl;}

2019-03-10 19:04:22 1013

原创 TextSimilarity-文本查重

·TextSimilarity.h#pragma once#include &lt;cppjieba/jieba.hpp&gt;#include &lt;unordered_map&gt;#include &lt;string&gt;#include &lt;unordered_set&gt;#include&lt;windows.h&gt;#include&lt;fstream...

2019-02-21 14:55:32 1759 4

原创 C++ UTF-8和GBK的转换

std::string GbkToUtf8(std::string src_str){ int len = MultiByteToWideChar(CP_ACP, 0, src_str.c_str(), -1, NULL, 0); wchar_t* wstr = new wchar_t[len + 1]; memset(wstr, 0, len + 1); MultiByteToWid...

2019-02-20 13:47:50 1978

原创 详解函数的调用过程

·代码示例我们用一段简单的代码来进行测试,代码如下:int Add(int x, int y){ int z = 0; z = x + y; return z;}int main(){ int a = 10; int b = 20; int ret = 0; ret = Add(a, b); printf("ret=%d\n", ret); system("p...

2019-02-11 12:20:19 1710 1

原创 2018京东笔试——整除

·整除牛牛对整除非常感兴趣。牛牛的老师给他布置了一道题:牛牛的老师给出一个n,然后牛牛需要回答出能被1到n之间(包括1和n)所有整数整除的最小的数。牛牛犯了难,希望你能编程帮他解决这个问题。首先解题思路就是:一个大于1的整数可以由多个质数相乘表示。这个其实很好理解,数无非是质数和合数,质数只能被1和自己除,而合数被除后最终也只会剩下质数。因此反过来,我们要求的相当于就是一个最小公倍数,我们...

2019-02-02 20:15:59 392

原创 纸牌游戏

·纸牌游戏牛牛和羊羊正在玩一个纸牌游戏。这个游戏一共有n张纸牌, 第i张纸牌上写着数字ai。牛牛和羊羊轮流抽牌, 牛牛先抽, 每次抽牌他们可以从纸牌堆中任意选择一张抽出, 直到纸牌被抽完。他们的得分等于他们抽到的纸牌数字总和。现在假设牛牛和羊羊都采用最优策略, 请你计算出游戏结束后牛牛得分减去羊羊得分等于多少。这道题目感觉还蛮简单的,排序过后,偶数项减奇数项,当然了注意点就是考虑n为奇数还...

2019-01-31 17:08:06 1012

原创 贪吃的小Q

·贪吃的小Q小Q的父母要出差N天,走之前给小Q留下了M块巧克力。小Q决定每天吃的巧克力数量不少于前一天吃的一半,但是他又不想在父母回来之前的某一天没有巧克力吃,请问他第一天最多能吃多少块巧克力?我的思路并不是从总的M块巧克力出发,而是从第一天吃s块巧克力,n天后,会吃掉多少块巧克力?之后再将求得的num块巧克力和题目给出的m块巧克力对比,如果相等那么输出s。这种方法缺点就是时间复杂度很大为...

2019-01-31 17:03:47 208

原创 String类的使用和模拟实现

直接上代码啦:#include&lt;iostream&gt;#include&lt;string&gt;#include&lt;assert.h&gt;using namespace std;//----------------------String类------------------//void TestString(string s)//{// // cout...

2019-01-27 19:48:34 198

原创 C++中的多态

·多态的概念多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。——百度百科说的通俗一点,多态就是多种形态,当不同的对象去完成同一个行为时会产生不同的状态。比如我们去一些商店,普通顾客不打折,学生...

2019-01-26 20:54:14 208

原创 解决C++中cout无法显示中文的问题

·问题最近win10更新之后,控制台上的中文显示为???查阅了一下发现编码并没有问题,高级保存选项和控制台的编码选项都是GB2312,尝试了很多之后发现控制台还原旧版可以解决问题。控制台打开——》右击——》属性——》使用旧版控制台——》重启就可以了。 ...

2019-01-26 13:00:42 12861 10

原创 C++中的继承

·继承的概念和定义·继承的概念继承 是面向对象软件技术当中的一个概念,与多态、封装共为面向对象的三个基本特征。 继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。继承是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认识过程。...

2019-01-25 19:10:31 168

原创 OSI参考模型的用例理解

·引入-发送邮件       我们开始先引入一个发送邮件的例子,我们可以看到发送方主机A从第7层到第一层由上而下按照顺序传输数据,而接收端则从第1层到第7层由下而上接收数据。每一个分层上,在处理由上一层传输过来的信息时,必须附上当前分层的一个首部信息,然后接收方需要进行首部和内容之间对的分离,再转发给上一层。·应用层      概念:为应用程序提供服务并规定应用程序中通信相关的细节...

2019-01-21 21:07:41 291

原创 Linux下UDP实现的聊天

Serv.c#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;string.h&gt;#include &lt;unistd.h&gt;#include &lt;sys/socket.h&gt;#include &lt;netinet/in.h&gt;#include &lt;arpa/inet.h&gt;

2019-01-20 14:34:24 639

原创 协议分层和OSI参考模型的理解

·协议的分层·什么是协议?       在计算机网络和通信中,我们经常会听到“协议”这个词,比如我们在互联网中经常使用的IP、TCP、HTTP等,我们平时在收发电子邮件或者是进行主页获取信息可能并不会注意到“协议”的作用,但是一旦我们重新配置网络的连接、修改网络设置时,那就就必须要设计到我们的“协议”了。       那么到底什么是协议呢?百科给的解释是:“协议,网络协议的简称,网络协...

2019-01-10 18:07:52 648

原创 C++ String类的初步实现

这一部分的实现仅仅是构造生成并且能够打印,下面是代码:class String{public: String(const char* str = "") { if (nullptr == str) { str = ""; } _str = new char[strlen(str) + 1]; strcpy(_str, str); } String(co...

2018-11-27 20:37:03 163

原创 C++ 日期类的基本实现

解释已写在注释中,下面是代码:#include&lt;iostream&gt;using namespace std;#define _CRT_SECURE_NO_WARNINGSclass Date{public: Date(int year = 1900, int month = 1, int day = 1) : _year(year) , _month(mo...

2018-11-27 14:35:05 239

原创 C++中String接口的简单介绍

相关解释已经作为注释一起写在代码中了void TestString(){ string s1; //构造空字符串 string s2("hello world"); //构造string类对象 string s3(5, 'a'); //用n个字符来构造string类对象 string s4(s2); //拷贝构造函数 string s5(s2, 5); //...

2018-11-26 19:58:39 496

原创 堆排序

·什么是堆排序我们先看一下堆排序的样子:那么在对于一个无序的序列,如何进行调整呢?我们可以按照以下步骤:1.设一个节点的下标为parent。2.找到该节点的左孩子left=parent*2+1。3.如果该节点拥有右孩子right=parent*2+2,比较并找出左右孩子中最小的孩子。4.如果parent大于左右孩子的最小值,则进行交换,否则不变。5.递归直到所有节点...

2018-11-24 15:11:27 191

原创 C与C++的注释转换

·CommentConvert.c#include "CommentConvert.h"void DoNulState(FILE*pfIn, FILE*pfOut, enum State* ps){ int first=fgetc(pfIn); int second=0; switch(first) { case '/': { second=fgetc(pfIn);...

2018-11-20 11:11:09 173

原创 贪吃蛇

·snake.h#ifndef __SNAKE_H__#define __SNAKE_H__#include &lt;stdio.h&gt;#include &lt;windows.h&gt;#include &lt;stdlib.h&gt;#include &lt;time.h&gt;#include &lt;string.h&gt;enum Direction{ U...

2018-11-20 11:11:00 183

原创 C实现简单的通讯录

·tongxunlu.c#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;void menu(){ printf("**************通讯录管理系统***********\n"); printf(" -------------------------------------\n"); printf("| ...

2018-11-19 21:29:07 301

原创 希尔排序

·什么是希尔排序首先我们要清除的是,希尔排序是插入排序的一种改进,又称“缩小增量排序”。希尔排序是根据步长将一组序列分成多组,再在不同的组中进行插入排序,当步长不断减小直至1时,希尔排序便完成了。下面是图例:·时间复杂度希尔排序的时间复杂度取决于它的所取的增量函数,目前最好的是比较和移动次数减少至n^1.3。这也是他的最小时间复杂度O(n^1.3)。·空间复杂度同之...

2018-11-19 21:28:55 157

原创 选择排序

·什么是选择排序在第i趟排序时,在后面n-i个元素中选出关键码最小的元素,插入到有序数列的第i个元素。那么我们首先只需要将一个序列中的所有元素进行比较,选出关键码最小的元素,判断它是否为首元素,如果是首元素就不变,否则将它和首元素进行交换,这样就完成了一趟排序。重复上述操作,直至n-2趟完成后,还剩下最后一个元素,这个元素因为是关键码最大的,所以不需要再进行排序操作,这样就完成了一次选择排...

2018-11-19 14:57:10 129

原创 插入排序

·什么是插入排序在我们插入第i个元素时,前面的arr[0]……arr[i-1]已经排好序,我们只要将arr[i]依次与前面的i-1个数比较,找到合适的位置进行插入,然后在将arr[i]后面的每个元素依次后移一个位置,那么就形成了新的有序的序列,然后我们重复上述步骤,直至所有元素排序完成。所以,插入排序的时候我们只需要现将第一个元素拿出来,那么这个元素就是一个有序的序列(尽管只有一个),然后...

2018-11-17 22:59:07 827

原创 C++中的引用

·什么是引用变量C++中新增了一种复合类型——引用变量。引用是已定义的变量的别名,因此编译器不会为引用变量开辟新的空间,而是使引用变量指向同一块地址空间。引用变量的主要用途是用作函数的形参,通过将引用变量用作参数,函数就能使用原始数据。下面我们给出一个简单的例子:void Test(){ int a = 10; int&amp; ra = a; printf("%d\n", ...

2018-11-14 21:02:33 203

原创 类的构造函数

 ·什么是构造函数·构造函数的定义构造函数是类中特殊的一个成员函数,主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值。下面我们给出一段代码:class Point{ int x, y;public: Point(int a=1, int b=1) { x = a; y = b; } void MovePoint(int a, in...

2018-11-08 11:35:30 1181

原创 堆的基本操作

·什么是堆堆是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。(摘自百度百科)具体来说就是将所有元素按照完全二叉树的顺序存储方式并且满足堆中某个节点的值总是不大于或不小于其父节点的值这一性质存储在一个一维数组中,那么我们就称为堆。如下图:·大小堆的定义刚才我们在给出性质的时候提到了每个节点的值总是不大于或不小于其父节点的值。那么这就是堆中的第二个特...

2018-11-04 20:41:49 216

原创 栈的基本操作

·什么是栈栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另外一端称为栈底。不含任何元素的栈称为空栈,栈又称为先进后出的线性表。下面我我们画出一个链式栈的图:那么在栈中的出栈和入栈就像下面一样:·代码及其实现·Stack.c#include&lt;stdio.h&gt;#include&lt;stdlib....

2018-10-30 14:40:42 1156

空空如也

空空如也

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

TA关注的人

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