自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lvchang

description

  • 博客(34)
  • 问答 (1)
  • 收藏
  • 关注

转载 vim配置c++开发编辑器

整体的vim的设置是在 /etc/vim/vimrc 文件中。如果想设置所有用户的配置,在里面设置就可以了,配置和.vimrc是一样的,在最后面添加下面2中的语句。不建议修改/etc/vimrc 文件,每个用户可以在用户根目录中设置vim,新建.vimrc。命令如下:vim ~/.vimrc在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能的。为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc。需要通过安装很多插件来完成

2020-08-09 14:19:04 676

原创 七大常用查找算法C++实现

1、顺序查找int sequenceSearch(int* arr, int size, int n) { if (!arr || size<1){ return -1; } for (int i=0; i!=size; ++i){ if (n = arr[i]){ return i; } } return -1;}2、二分查找-非递归int binarySearch(int* arr, int size, int n) { if (!arr ||.

2020-08-07 23:05:11 1112

原创 十大排序算法C++实现

1、插入排序:和玩纸牌游戏一样,抓牌时小的插在前边,后边牌往后移动void insertSort(size_t size, int* arr) { if (!arr || size <= 1) { return; } for (size_t i = 0; i < size; i++) { for (size_t j = i; j > 0 && j <= size - i - 1; j++) { if (arr[j - 1] > ar

2020-08-07 23:00:54 286

转载 数据结构-红黑树

1. 红黑树的定义红黑树在二叉搜索树的基础上,还要求有以下性质:节点是红色或黑色; 根节点是黑色; 不能有连续的两个红色节点。 从任一节点到其每个叶子的简单路径都包含相同数目的黑色节点。两棵简单的红黑树性质3表明:红色节点的父、左子、右子只能是黑色节点,红色和红色不能直接连一起;而黑色无论红黑都可以连一起。(红色暴脾气互不相容,黑色和蔼可亲谁来都行);性质4表明:随便选一个节点,不论从怎么走,走到最后叶子节点时,其经过路径的黑色节点数量都是相等的(所谓完全黑平衡)。而性质3和4

2020-07-02 20:02:08 277

转载 Windows下LIB和DLL的区别与使用

两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。 一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。 静态链接使用静态链接库,链接器从静态链接库LIB获取所有被引用函数,

2020-06-15 19:00:30 393

原创 Boost学习之序列化

序列化是指将任意的C++数据结构可逆的解构到字节流中。序列化之后我们就可以实现对象的持久化,网络传输,远程参数传递等。序列化在网络传输中是非常重要的。在定义网络结构包时,我们可能通常会以以下方式去处理序列化问题,如:class CBasePacket{......public: virtual void readFromBuffer(const char* pBuffer)=0; virtual void writeToBuffer(char* pBufffer)=0;

2020-05-30 15:51:23 433

原创 求两圆的公切线计算

关于两圆的公切线计算我们首先需要搞清楚的是两个圆之间有哪些位置关系,两个圆的位置包括内含、内切、外切、外离几种方式,可以看出位置关系可以根据“两圆心之间的距离”与“两圆半径和”以及“两圆半径差”之间的关系判断。假设大圆半径为R,小圆半径为 r, 把“两圆心之间的距离”表示为d,“两圆半径和”表示为s,“两圆半径差”表示为x,那么:d = |R + r|;x =|R - r|;可以得出各位置关系必须满足以下相应条件:内含: d > 0 &&...

2020-05-30 15:13:08 12404 1

原创 求在平面直角坐标系中,一个点绕坐标原点旋转一定角度后点的坐标

如图,在平面直角坐标系中(忽略坐标轴上的刻度值),求坐标点P0(x0, y0)绕坐标原点旋转角度B后得到新的点的坐标P1(x1, y1)。这是最基本的坐标点绕坐标原点旋转问题,通过这样的思想我们还可以求解坐标系旋转后坐标的新位置以及三维坐标系旋转的求解等。我们开始推导计算,首先需要知道以下常用三角公式:sin(α+β)=sinαcosβ+cosαsinβsin(α-β)=sinαcosβ -cosαsinβcos(α+β)=cosαcosβ-sinαsinβcos(α-β)=cosα

2020-05-27 20:51:59 11797

原创 Linux从入门到放弃之VirtualBox下Ubuntu16.04版本的ssh配置

SSH 为Secure Shell的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital..

2020-05-16 19:48:00 277

原创 Linux从入门到放弃之VirtualBox下Ubuntu16.04版本的网络配置

相信很多小伙伴儿学习Linux都是在自己Windows系统上安装虚拟机后,在虚拟机上装的Linux系统,安装Linux系统后一般会进行系统的网络配置,当然可选择的虚拟机有很多,我选择的是VirtualBox,是因为它的很方便,主要是免费。所以今天我主要是叙述一下VirtualBox下如何配置Ubuntu16.04版本的网络,让宿主机和虚拟机可以相互ping通。一、首先是VirtualBox设置 连接方式:网卡连接模式选择“桥接网卡”; 界面名称:界面名称设置是我踏坑的过程,我刚开始选择的

2020-05-16 19:46:33 570

原创 Linux从入门到放弃之Ubuntu设置默认登录用户为root

Linux系统可以说是每一个程序员(主要是运维和做服务器开发)都需要掌握的知识点,Linux的基本思想有两点:第一是一切都是文件,第二是每个文件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系内核而言,都被视为拥有各自特性或类型的文件,说实话,这是让人极度舒适的,至少对于我来说。我们说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。我目前使用的是Linux系统的发行版本Ubuntu16.04版本,地址下载

2020-05-16 19:44:49 1553

转载 Linux操作系统概述

Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。1991 Linus Linux 0

2020-05-16 19:42:55 340

转载 AI 图像智能修复老照片

近些年,基于深度学习的发展,计算机视觉在人工智能和深度学习的大背景下方兴未艾,与此同时,当越来越多的应用场景被挖掘出来时,也意味着计算机视觉的发展前景将无比广阔,其中图像处理技术就是最热门的应用之一,而最近一段时间,图像处理技术中最受欢迎的必须是图像修复功能,一键修复老照片等App应用,在社交网络上掀起一股潮流。图像识别技术本身的原理并不复杂,信息的处理是这一技术的关键点所在。近...

2020-04-28 22:46:53 7135 2

原创 使用git命令行将本地仓库代码上传到远程仓库

​一、新建代码库cd进入项目根目录git init //将根目录初始化为Git代码库二、添加项目根目录到暂存区gitadd. //“.”表示添加文件夹下的所有文件;git add [ffilename]可以上传指定文件。三、提交到本地仓库git commit -m "注释说明"四、将本地仓库远程同步到git远程仓库上(文末附如何在git上新建远程仓库并获取仓...

2020-04-28 22:34:52 1038

转载 常用Git指令

​一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。下面常用 Git 命令清单。几个专用名词的译名如下。 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 一、新建代码库# 在当前目录新建一个Git代码库$ git in...

2020-04-25 13:04:44 123

原创 关于C/C++中const char*、char*、string之间那点事

​相信很多刚开始学习C/C++的小伙伴经常会遇到const char*、char*、string之间缠绵的转换关系,甚至有些时候有点迷糊,接下来就开始一起梳理一下...1.const char* 和string 相互转换//const char*转string,直接赋值const char* pc = "it container";std::string str = pc;//st...

2020-04-25 13:02:39 1128

原创 数据结构-图(图的基本实现C++)

​一、图的概念图是一种比较复杂的非线性数据结构图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。图区分有向图和无向图1、无向图(Undirected graphs)如果图中任意两个顶点之间的边都是无向边,则称该图为无向图。无向图相关概念:顶点、边2、有向图(Direc...

2020-04-25 13:00:38 1216

原创 数据结构-树(树基本实现C++)

​树形结构是一种重要的非线性数据结构。其中树和二叉树最为常用,直观看来树是以分支关系定义的层次结构。树形结构是我们平时比较熟悉的,比如文件夹目录、公司组织关系等。在计算机领域也得到广泛的应用,编译程序就是以树来表示源程序的语法结构。二叉树是一种特殊的树形结构,他的特点是每个节点至多只有两颗子树,并且,子树有左右之分,顺序不能颠倒。树形结构里边还有很多的知识点,我不在这里做文字...

2020-04-25 12:57:18 1727

原创 数据结构-链表(链表的基本实现C++)

​线性表是最常用而且简单的一种数据结构,一个线性表是n个数据元素的有限序列。当线性表需要频繁查找,较少插入和删除时,通常采用顺序存储结构,若需要频繁插入和删除,通常采用基于链表的形式;当线性表的元素个数变化较大或不确定时,最好用链表,这样不需要考虑存储空间大小问题,当事先知道线性表的大小长度,用顺序存储结构效率会高一些。1、线性表的顺序表示和实现顺序表,基于数组的一种实现,一组地址...

2020-04-25 12:54:48 668

原创 数据结构-队列(队列的基本实现C++)

​栈和队列是两种重要的线性结构。从数据结构角度看,栈和队列也是线性表,其特殊在于栈和队列的基本操作是线性表操作的子集,他们是操作受限的线性表。但是从数据类型角度看,他们是和线性表大不相同的抽象数据类型。与栈相反,队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素,跟我们平时排队是一个道理。队列也有两种存储表示方法:顺序存储和链式存储,顺序存储常见的就是环形队列,初始...

2020-04-25 12:51:23 632

原创 数据结构-栈(栈基本实现C++)

​栈和队列是两种重要的线性结构。从数据结构角度看,栈和队列也是线性表,其特殊在于栈和队列的基本操作是线性表操作的子集,他们是操作受限的线性表。但是从数据类型角度看,他们是和线性表大不相同的抽象数据类型。栈是限定仅在表尾进行插入或者删除操作的线性表。表尾端称“栈顶”,表头端称“栈底”,不含元素的空表称“空栈”。栈最主要的特性为“先进后出”。栈和线性表类似,有两种存储表示方法:顺序存储和链式存...

2020-04-25 12:49:16 983

原创 数据结构-数组(数组基本实现C++)

​数组是一种线性表数据结构,除了第一个元素以外,集合中的每个数据元素均只有一个前驱,除了最后一个元素以外,集合中每个元素均只有一个后继,用一组连续的内存空间,来存储一组具有相同类型的数据。数组采用连续的存储单元存放数据,所以数组一般不作插入和删除等操作,一旦建立了数组,则结构中的数据元素个数和元素间的关系就确定了,因此采用顺序存储结构表示数组。数组是程序设计语言中比较基础但是却至关重要的数...

2020-04-25 12:47:22 1853

原创 数据结构-串(字符串类基本实现C++)

​计算机上的非数值处理对象基本上是字符串数据。在比较早的程序设计语言中,字符串是作为输入和输出的常量出现的。随着语言的发展,产生了字符串处理,这样字符串也就作为一种变量类型出现在众多的设计语言中,也产生了许多的字符串操作,字符串一般简称为串。串(字符串)是由零个或多个字符组成的有序序列。以上是对字符串一个基本的介绍,关于字符串其实还有很多的知识点,但是这次内容主要是根据c++中std::str...

2020-04-25 12:44:28 1092

原创 两张思维导图,让你轻松学习数据结构

​前段时间打算重新温习一下数据结构,整理一些新的内容,在网上搜到了很多受用的精彩博客,可以说受益匪浅。“前人栽树,后人乘凉”已然石锤了。先亮出第一张思维导图:数据结构思维导图-1一.数据结构的基本概念数据结构定义:数据结构是一种存储和组织数据的方式,以便于访问和修改。数据结构包括数据的逻辑结构、数据的存储结构以及数据的运算,即按照某种逻辑关系组织起来的一批数据,按一定的映射方式...

2020-04-25 12:41:22 3706

原创 那些C/C++宏定义中你可能忽视的符号意思

\ 行继续操作符这是我们宏定义的时候经常会使用的符号,有些时候我们定义的宏可能比较复杂,定义的宏不能用一行表达完整时,需要用"\"表示换行继续宏的定义,不使用"\"不能编译通过,而且这样能够使宏的定义美观易读。# 字符串化操作符将宏定义中的传入参数名转换成用一对双引号括起来的参数名字符串。通俗的讲就是不管传入的是什么参数,都将是一个字符串。只能用于有传入参数的宏定义中,必须置...

2020-04-13 20:43:52 227

原创 IDEA新发现-自定义代码模板功能

平时虽然经常接触IDEA,但是始终还是一些功能不了解的。最近由一个IDEA提示Unable to parse template "Class"问题,让我发现了IDEA的自定义代码模板功能。最近由于更换了JDK,打开IDEA发现创建的Class提示以下异常所以,去百度搜索了下原因,才知道换了JDK后导致IDEA里边的模板空了,包括什么interface、xml、html创建模板都是...

2020-04-07 18:54:02 1072

翻译 字符编码 - ASCII、Unicode、UTF-8的关系

引言:计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。计算机是老美发明的,最开始只有大...

2019-03-23 17:44:52 212

原创 信息编码

一、数值正负数在计算机中的表示在计算机中,只有0和1两种形式,为了表示正数和负数,就要将数的符号以“0”和“1”编码。通常把一个数的最高位定义为符号位,用“0”表示正,“1”表示负,称为数符,其余为依然表示数值。数值在计算机内采用符号数字化后,计算机就可以识别和表示数符了。但若将符号位同时和数值参加计算,由于两操作符的问题,有时会产生错误结果。如-5+4=-1,但是按以上计算方式,则...

2019-03-23 17:38:37 3337

原创 数制与运算

引言:计算机的基本功能是对数据进行存储、处理(运算)、输出,这些数据主要有数值、字符、图形、图像、声音等。在计算机系统中,这些数据都要被转化成二进制(0或1)的形式存储,也就是需要进行二进制编码处理。1、什么是编码?编码是信息从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。与之相...

2019-03-23 17:27:44 809

转载 面向对象的"六原则一法则"

单一职责原则:一个类只做它该做的事情。(单一职责原则想表达的就是"高内聚",写代码最终极的原则只有六个字"高内聚、低耦合",就如同葵花宝典或辟邪剑谱的中心思想就八个字"欲练此功必先自宫",所谓的高内聚就是一个代码模块只完成一项功能,在面向对象中,如果只让一个类完成它该做的事,而不涉及与它无关的领域就是践行了高内聚的原则,这个类就只有单一职责。我们都知道一句话叫"因为专注,所以专业",一...

2017-04-12 19:57:25 443

原创 阅读SpringMVC源码前,不妨看下简易版本SpringMVC框架的搭建

一、MVC简介MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结...

2017-04-12 17:41:43 632

原创 HttpServlet中的service()、doPost()、doGet()方法解析

1、service()方法源码解析先来看HttpServlet的service()方法:protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取http request的metho...

2017-04-12 16:37:47 9473 1

原创 forward(转发)与redirect(重定向)

一、调用方式在servlet中,当我们处理doPost()和doGet()方法时调用转发、重定向的语句如下:request.getRequestDispatcher("user.jsp").forward(req, resp); //转发response.sendRedirect("user.jsp"); //重定向二、本质区别转发是服务器行为,重定向是客户端行...

2017-04-12 16:32:47 527

转载 java socket 编程学习笔记

1. Socket 通信简介及模型  Java Socket 可实现客户端--服务器间的双向实时通信。java.net包中定义的两个类socket和ServerSocket,分别用来实现双向连接的client和server端。2. Socket 通信实现方法 2.1 服务器端(非多线程)  /** * 基于TCP协议的Socket通信,实现用户登录,...

2017-04-12 16:16:11 319

空空如也

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

TA关注的人

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