自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试精选题

面试精选题两数之和两数相加无重复字符的最长子串寻找两个正序数组的中位数最长回文子串整数反转两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。public class Solution { public int[] TwoSum(int[] nums, int target) { Dictionary<int, int> d = new D

2022-02-28 10:37:04 268

原创 LRU缓存淘汰

这里写自定义目录标题模板代码实现小技巧模板代码实现#pragma once#include<iostream>#include<unordered_map>template<typename Node>struct DListNode{ int key_ = 0; Node* value_ = nullptr; DListNode* pre_ = nullptr; DListNode* next_ = nullptr; DListNode(){}

2021-01-06 20:17:32 111

原创 根据唯一id生成分享码

标题根据唯一id生成分享码#include <math.h>#include <string>using namespace std;const string share_code_62 = "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";string create_share_...

2020-04-17 20:11:12 5514

原创 快排详解

#include"Sort.h"void QuickSort(int* arr, int start,int end){ int i = start; int j = end; int base = arr[start]; if (i > j) { return; } while (i < j) { while (i < j && ...

2019-07-09 23:14:38 460

原创 c++map嵌套map

头文件#ifndef __AOI_H__#define __AOI_H__#include <iostream>#include <map>using namespace std;class A {public: void AddSkill(int useID, int skillID);private: struct Info { map&lt...

2019-06-18 13:37:03 2447

原创 A*算法的实现_go语言

package mainconst ( MapRow = int32(5) MapCol = int32(7) MapRoad = 8)const ( KCost1 = 10 KCost2 = 14 KcalcG = 0)type Point struct { x int32 y int32 g int32 h int...

2019-04-28 19:32:42 526

原创 智能指针的底层实现

引入:定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理。 boost库的智能指针 auto_ptr:资源转移,当使用拷贝构造,赋值操作时将资源转移,并将自己的资源置为空 加权限,当使用拷贝构造,赋值操作时资源不释放,只是将权限改为false,当权限为true时&&资源不为空时,才可以释放资源。 scoped_ptr:

2017-09-10 14:33:07 1492

原创 c++动态内存管理

c语言中我们学习了malloc,calloc,realloc,free这四个函数,前面都是c语言用来动态申请内存的函数(他们都是在堆上申请内存)最后一个函数是释放前面三个所申请的空间。 返回值:成功的话返回所申请空间的地址,失败返回NULL。 下面我们看看malloc,calloc,realloc他们的不同。 1. malloc:函数原型为void *malloc( size_t size

2017-07-28 09:51:18 701

原创 c++-----string和深浅拷贝

深浅拷贝 浅拷贝主要存在的问题就是同一块内存释放多次。所以引入深拷贝来解决这些问题。 下面通过代码看下浅拷贝存在的问题class String{public: String(const char* str); String(String& str); String& operator = (String& str); ~String();private:

2017-07-26 13:44:07 254

原创 c++实现线性表和双向链表

深浅拷贝:深浅拷贝主要解决的问题是同一块内存释放多次 浅拷贝深拷贝c++实现线性表 SeqList.h#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#includeusing namespace std;typedef int DataType;class SeqList{pu

2017-07-21 15:33:00 308

原创 c++继承(单继承,多继承,菱形继承和虚继承)详解

下面我将从继承实例(代码 ),继承对象模型和原理来分析继承。 单继承 模型 代码class A{public: int _a;};class B:public A{public: int _b;};int main(){ B b; b._a = 0; b._b = 1; return 0;}代码分析: 多继承 模型

2017-07-21 14:36:32 639

原创 c/c++常见面试题(一)

1.c++的三大特性是什么?说说你对面向过程和面向对象的理解? 三大特性是:封装,继承,多态。 面向过程:倾向于做一件事的流程,先做什么,然后做什么,最后做什么。更接近与计算机的实际计算模型 面向对象:倾向于建立一个对象模型,他能够近似的反应实体与实体之间的关系。它具有封装,继承,多态三大特点,更好的提高的代码的安全性和效率。 2.什么是函数重载?c语言为什么不

2017-07-17 10:34:10 299

原创 c++日期类

#define _CRT_SECURE_NO_WARNINGS#include<stdlib.h>#include<stdio.h>#include<iostream>using namespace std;class Date{ friend ostream& operator<<(ostream &io, const Date& d); friend istream&

2017-07-10 18:23:55 287

原创 c++引用,指针

1.什么是引用 引用不是定义一个变量,而是给一个已经定义的变量新起一个别名 引用的格式:类型&引用变量名=已定义过的变量名 引用的特点: (1)一个变量可取多个别名 (2)引用必须初始化(特别重要) (3)引用只能在初始化的时候引用一次,不能改变为再引用其他的变量 2.下面我通过代码向大家展示引用的做用和特性 (1)一般引用,类型前不用任何词来修饰,你可以这样

2017-07-03 18:37:57 224

原创 c++函数重载的实现原理

1.c++问什么引入函数重载 在c语言中,如果我们写两个函数名相同的函数,编译器会告诉我们,函数重定义的错误。我们还会遇到下面这个问题:如果我们写一个计算int类型的加法,另一个计算double类型的加法,我们必须起两个不同的函数名。而在c++中我们可以解决这两个问题。我们可以用相同的函数名,只有参数列表不同可以。 2.函数重载的条件 (1)要求重载的函数必须在同一个作用域 (2)函

2017-07-03 10:37:40 417

原创 IPC----消息队列

1.消息队列的定义 消息队列提供了⼀种从⼀个进程向另⼀个进程发送⼀个数据块的⽅法。 每个数据块都被认为是有⼀个类型,接收者进程接收的数据块可以有不同的类型值。 消息队列接收发送消息的特点:新添加的消息总是在队尾,但接收消息的进程可以读取队列中间的数据。 此外, 消息队列也降低了读写进程间的耦合强度:若接收消息的进程没有接收到消息,发送消息的进程无须等待,可以继续发送消息,消息的读写双方只需关注各

2017-06-29 15:12:52 287

原创 线程控制

1.线程的概念 main函数和信号处理函数是同⼀个进程地址空间中的多个控制流程,多线程也是如此,但是⽐信号处理函数更加灵活,信号处理函数的控制流程只是在信号递达时产⽣,在处理完信号之后就结束,⽽多线程的控制流程可以长期并存,操作系统会在各线程之间调度和切换,就像在多个进程之间调度和切换⼀样。 有些人把多线程和程序设计和多核系统联系起来,这种想法有些片面。即使程序在单核系统上,也可以做到多线程处

2017-06-28 16:23:47 257

原创 IPC----信号量

1.为什么引入信号量 Linux 系统采用多道程序设计技术,允许多个进程同时在内核中运行,但同一个系统中的多个进程之间,可能因为进程合作或资源共享,产生制约关系。制约关系分为直接相互制约关系和间接相互制约关系: (1)直接相互制约关系。 利用管道机制实现进程间通信, 当管道为空时,读进程由于无法从管道中读取数据而进入阻塞;当管道存满时,写进程由于无法向管道中写入数据而进入阻塞, 类似于这种需要进

2017-06-27 16:06:13 742

原创 单链表常见面试题

//LinkList.h#ifndef _LINKLIST_H__#define _LINKLIST_H__#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>typedef int DataType;typedef struct N

2017-06-26 16:33:15 262

原创 IPC----共享内存

1.什么是共享内存:共享内存允许两个或多个进程访问给定的同一块存储区域。已知当一个进程被启动时,系统会为其创建一个 0~4G 的虚拟内存空间, 根据虚拟地址与物理地址之间的映射关系,进程可以通过操作虚拟地址,实现对物理页面的操作。 一般情况下,每个进程的虚拟地址空间会与不同的物理地址进行映射,但是当使用共享内存进行通信时,系统会将同一段物理内存映射给不同的进程。 两个进程的虚拟地址空间与共享内

2017-06-20 16:04:57 336

原创 网络基础---TCP(端口号,TCP段格式,常见定时器,握手与挥手)

1.端口号 (1).基本概念:端口包括物理端口和逻辑端口。物理端口是用于连接物理设备之间的接口,逻辑端口是逻辑上用于区分服务的端口。TCP/IP协议中的端口就是逻辑端口,通过不同的逻辑端口来区分不同的服务。一个IP地址的端口通过16bit进行编号,最多可以有65536个端口。端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。 (2).如何对端口号进行分类服务器端使用

2017-06-19 16:27:55 771

原创 网络基础---NAT技术和代理服务器

1.什么叫NAT技术? NAT(Network Address Translation,网络地址转换)当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,

2017-06-16 15:35:33 661

原创 网络基础---CRC校验

1.什么是CRC校验? CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 循环冗余校验码(CRC)的基本原理是:在

2017-06-16 13:22:56 527 1

原创 进程间通信---管道

1.什么是管道? 管道是一种最基本的进程通信机制,其实质是由内核管理的一个缓冲区,可以形象地认为管道的两端连接着两个需要进行通信的进程,其中一个进程进行信息输出,将数据写入管道; 另一个进程进行信息输入,从管道中读取信息。可以用下图表示 2.管道的分类 (1)匿名管道,我们平时进行操作时,曾经接触过“ls | wc -l”之类的组合。这种命名由管道符号“|”连接的两个或者多个

2017-06-15 11:20:15 512

原创 线程安全和可重入函数

1.什么是线程安全? 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 2.如何避免 要避免线程的不安全,我们应该知道怎样造成线程的不安全(就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据)。 线程安全问题都是由全局变量及静

2017-06-14 23:39:01 340

原创 linux信号

1.我们首先要理解什么叫linux下的信号 比如:用户输入命令,在shell下启动一个前台进程;用户按下Ctrl+c等各种组合键产生一个硬件中断等等 2.在linux下进程分为前台进程和后台进程下面通过一段代码我们了解一下他们#include<stdio.h>#include<stdlib.h>int main(){ while(1){ ; }

2017-06-14 00:04:30 205

原创 初识Java

大家在刚刚接触java语言的话,不要想着一部登天,要脚踏实地的学习好基础的知识,如果你有一定的别的语言的基础的话,那么Java也会很快的入门。

2016-10-03 21:06:38 181

空空如也

空空如也

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

TA关注的人

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