自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (2)
  • 收藏
  • 关注

原创 JAVA中的final关键字

final 修饰的类叫最终类,该类不能被继承。final 修饰的方法不能被重写。final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。

2019-12-26 10:04:37 183

原创 float和double数据在内存中的模型

float型和double型数据的存储方式对于浮点类型的数据采用*单精度类型(float)和双精度类 型(double)*来存储,float数据占用32bit,double数据占用64bit。通常float可以保证十进制科学计数法小数点后6位有效精度和第7位的部分精度double可以保证十进制科学计数法小数点后15位有效精度和第16位的部分精度。因为float和double的精度是由尾数...

2019-11-27 10:40:10 808

原创 二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。Solution 递归/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right...

2018-08-18 10:27:46 232

原创 反转链表

## 题目描述输入一个链表,反转链表后,输出新链表的表头。## Solution> 使用了一个栈,存储链表每个节点的指针,无需新建节点```c++class Solution {public:    ListNode* ReverseList(ListNode* pHead) {        if(pHead == NULL) return pHead;       ...

2018-08-18 10:26:27 196

原创 顺时针打印矩阵

**题目描述**输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:``` 1 2 3 45 6 7 89 10 11 1213 14 15 16``` 则依次打印出数字`1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.`**Solution**一层一层剥离,记录开头和结尾。`right` and `down`代...

2018-08-18 10:22:44 170

原创 旋转数组的最小数字

**题目描述**把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。**思路:二分法**```class Solution {public:    int mi...

2018-08-18 10:21:51 147

原创 重建二叉树

**题目描述**输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。**思路:递归**```c++/** * Definition for binary tree * struct TreeNode {...

2018-08-18 10:20:49 144

原创 装最多水的容器

给定 n 个非负整数 `a1, a2, ..., an`, 每个数代表了坐标中的一个点 `(i, ai)`。画 n 条垂直线,使得 i 垂直线的两个端点分别为`(i, ai)`和`(i, 0)`。找到两条线,使得其与 x 轴共同构成一个容器,以容纳最多水。#### Solution思路:从两头开始逐渐找长方形的长,```class Solution {public:    /** ...

2018-08-18 10:19:50 916

原创 剑指offer: 二叉树的下一个结点

题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路分析:结合图(中序遍历)结合图,我们可发现分成两大类:1、有右子树的,那么下个结点就是右子树最左边的点;(eg:D,B,E,A,C,G)2、没有右子树的,也可以分成两类,       a)是父节点左孩子(eg:N,I,L...

2018-08-02 17:40:29 143

原创 强大的sscanf函数

#pragma once /******************************************************* Name : sscanf.c** Author : gzshun** Version : 1.0** Date : 2011-12** Description : sscanf fun...

2018-08-02 15:25:08 206

原创 查找一个字符串中只出现一次的字符

#pragma once /*在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).*/#include<iostream>using namespace std;/***自己实现方案,*/#if 0static class Solution {publ...

2018-07-31 16:45:43 1398

原创 复杂链表的复制

题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)输入为::输出为:具体操作过程:(三步走)@1:在旧链表中创建新链表,只考虑next指针域。 @2:处理第二个指针域。@3:分离...

2018-07-27 18:21:26 115

原创 判断一个序列是否是一个二叉树的后序序列

题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。测试用例1:vector<int> v1 = { 5, 7, 6, 9, 11, 10, 8 };结果:true;测试用例2:vector<int> v1 = {7,4,6,5};结果:false;解法思路一...

2018-07-26 22:32:38 707

原创 逆置单链表

#include <stdio.h>#include <stdlib.h>#define M 20struct num{ int a; struct num *next;};struct num *reverse(struct num *head, struct num *lhead, struct num *nhead){ stru...

2018-07-25 13:48:50 149

原创 常见网络知识面试题

# **常见网络知识面试题** **1. TCP如何建立链接**  建立连接(三次握手)的过程:1.客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的段1。客户端发出段1,SYN位表示连接请求。序号是1000,这个序号在网络通讯中用作临时的地址,每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正确顺序,也可以发现丢包的情况,另外,规定SYN位和FI...

2018-07-23 15:25:04 2364

原创 线程进程面试题(1)

**了解哲学家进餐问题。**    哲学家就餐问题是在计算机科学中的一个经典问题,用来演示在并行计算中多线程同步(Synchronization)时产生的问题。在1971年,著名的计算机科学家艾兹格·迪科斯彻提出了一个同步问题,即假设有五台计算机都试图访问五份共享的磁带驱动器。稍后,这个问题被托尼·霍尔重新表述为哲学家就餐问题。这个问题可以用来解释死锁和资源耗尽。**进程状态转换图**1)运行:当...

2018-07-08 21:45:00 1142

转载 几种常见的操作系统调度策略

一、先来先服务和短作业(进程)优先调度算法1.先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为...

2018-07-08 21:41:50 7357

原创 Ubuntu防火墙的开启,关闭,端口的打开,查看

1.防火墙的打开sudo ufw enable2.防火墙的重启sudo ufw reload3.打开想要的端口(以9000为例)ufw allow 90004.查看本机端口使用情况ufw status

2018-07-04 09:41:58 69437

原创 与http服务器的爱恨

Linux网络编程的步骤1、创建套接字int socket(int domain, int type, int protocol)//作用:创建一个套接字//参数:// domain : 指定通讯协议族,常用的有 :// AF_INET(IPv4通讯)// AF_INET6(IPv6通讯)// AF_LOCAL(本地通讯)// type : 常用的有 ://...

2018-07-03 17:07:03 144

原创 网络编程之listen的那点屁事

写在前面    我们知道在网络编程中,listen接口是用来建立socket监听的,其参数只有两个。我们就listen展开说明。函数原型    int listen(int sockfd, int backlog);函数作用    当socket函数创建一个套接字时,它被假设为一个主动套接字,也就是说,它是一个将调用connect发起连接的客户套接字。listen函数把一个未连接的套接字转换成一个...

2018-06-12 17:33:21 447

转载 Samba服务器搭建

原博客主链接:https://blog.csdn.net/jiangzunshao/article/details/53040889一、安装SambaSentOS系统亲测1、使用yum工具安装# yum install -y samba samba-client samba-swat2、查看安装状况# rpm -qa | grep samba3、启动Samba服务器# /etc/init.d/sm...

2018-04-01 16:08:54 232

转载 【Linux】samba服务器的安装和配置

14472 编辑 ...

2018-03-29 16:53:28 624

原创 有名管道通信

有名管道通信:    又名fifo文件。学前知识储备    对系统函数open ,read,write会用,有一定的了解。FIFO文件的特性(结合普通文件对比)@1:读取FIFO文件的进程只能以"O_RDONLY"方式打开FIFO文件@2:写FIFO文件的进程只能以“O_WRONLY”f方式打开FIFO文件@3:FIFO文件里面的内容被读取后就消失了,而普通文件的不会函数原型:#include&l...

2018-03-22 15:02:54 1431

原创 文件复制程序

程序:结果:

2018-03-21 21:56:55 711

原创 动态链接库实现

linux命令:vim add.cgcc -c add.c -o add.ogcc -shared -fPIC addlib.o-o libadd.socp libadd.so /usr/lib/vim mytax.cvim tax.hgcc myadd.c -ladd -o myadd第一步先建立一个.c文件用来存放库函数实现体。第二步生成.o文件(即:编译后的中间文件)第三步将.o

2018-03-21 18:59:15 303

原创 静态链接库实现

linux命令:vim tax.cgcc -c tax.car cqs libtax.a tar.ocp libtax.a /usr/lib/vim mytax.cvim tax.hgcc -static mytar.c -ltax -o mytax第一步先建立一个.c文件用来存放库函数实现体。第二步生成.o文件(即:编译后的中间文件)第三步将.o文件变成以.a为后缀的静态库文件第四步将

2018-03-21 16:48:00 379

原创 Linux进程间通信(一)匿名管道方式

pipe管道什么是进程通信进程通信就是两个进程之间进行数据交换,在Linux中有好几种可以进行进程通信的方式,在这篇文章中我们主要介绍最基本的进程通信方式——pipe管道。 进程通信的途径进程之间交换信息的唯一途径就是传送打开的文件。管道(pipe)管道是一种最古老也是最基本的系统IPC形式,所有的Linux系统都提供此种通信机制。但是管道有以下两个局限性:它是半双工的,即数据一个管道上的数据只能

2018-03-19 14:49:51 291

原创 cgdb的安装与命令大全

官网:http://cgdb.github.io/安装# wget  http://cgdb.me/files/cgdb-0.6.7.tar.gz# tar -zvxf  cgdb-0.6.7.tar.gz# cd  cgdb-0.6.7# ./configure --prefix=/usr/local# make && make install 使用1:cgdb分为上下两栏,上面...

2018-03-17 18:48:18 4405

原创 判断大小端

大小端当数值的低位段存储在内存的低地址处,这种计算机模式被称为小端模式,反之则被称为大端模式。int main(){ union{ int i=1; char a; }text; text.i=1; if(text.a==1){ printf("小端模式\n"); }else{ printf("大段模式\n"); } return 0

2018-03-15 10:33:52 313

原创 模拟实现assert函数

用法#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<assert.h>int main(void){ int n = 14; n = 24; assert(n < 20);//条件不成立是触发该函数报警 system("pause")...

2018-03-14 21:46:36 609

原创 项目实战--文件加解密简单实现

引子我们在写完一个东西(文档,PPT,等)总是不想随便的被其他人查看,故而我们就需要有一个程序帮我们将这个文件“藏”起来。适合学习本篇文章的人群不需要很高深的技术,多么厉害的编程能力,只要会C语言编程(入门),懂文件操作部分就好了。正式进入话题复习一些在项目中用到的库函数//头文件#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#includ

2018-03-14 17:19:52 1803

原创 进程与线程的简单理解

这部分有参考网上的记忆方法,记下来用以复习;一。进程(process)和线程(thread)进程(process)和线程(thread)是操作系统中的基本概念,但是比较抽象,不容易记忆和理解,接下来就一类比的的方式来阐述这些概念,以便于简单易懂。计算机的核心是CPU,它主要工作是计算,时刻在运行,就像一座工厂。在工厂中假设只有一个车间,车间就好比CPU,故单个CPU一次只能执行一个任务。进程就好比...

2018-03-13 21:16:29 137

原创 creat系统调用

用处creat函数用来创建一个新的文件函数原型#include<fcntl.h>#include<sys/types.h>#include<sys/stat.h>int creat(const char* pachname,mode_tmode);成功返回为只写打开的文件描述符:失败返回-1文件(文件描述符永远是一个非负整数)。缺点它以只写的方式打开创建的文件,在open函数新版本之前,如果要创

2018-03-13 18:16:41 1606

原创 write系统调用

函数原型:#include&lt;unistd.h&gt;size_t write(int filedes,const char* buf,size_t nbytes);系统调用write的作用是把缓冲区buf里的前nbytes字节写入与文件描述符filedes相关联的文件中去。它的返回值是实际写出的字节数。如果文件面舒服有错误或者底层设备驱动程序对数据块尺寸比较敏感,该返回值就可能小于nbyt...

2018-03-12 22:49:38 3470

原创 liunx 命令速查

arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 c...

2018-03-12 14:29:57 178

原创 fork()函数的简单实践

在Linux 中,创建一个新进程的唯一方法是有某个已存在的进程调用fork()函数,被创建的新进程称为子进程,已存在的进程称为父进程. 1.fork()函数 fork()函数的实质是一个系统调用(和write函数类似),其作用是创建一个新的进程,当一个进程调用它,完成后就出现两个几乎一模一样的进程,其中由fork()创建的新进程被称为子进程,而原来的进程称为父进程.子进程是父进程的一个拷贝,即...

2018-03-11 12:33:41 232

原创 走迷宫

迷宫图解程序实现#include&lt;iostream&gt; #include&lt;cstdlib&gt; #define Max_Size 100 using namespace std;enum Direcation{ Up = 1, Down = 2, Left = 3, Right = 4};typedef struct{ int x, y;}C...

2018-03-11 11:01:30 574

原创 二叉树的进一步学习

一,创建一颗二叉树 BinTree() :Root(NULL) {} void _BinTree(T* str, size_t size, const T& invalid) { size_t index = 0; Root = _Create(str, size, index, invalid); } BinTree(BinTree& bt) { Root=Co

2018-01-07 17:20:40 170

原创 二叉树的简单操作

一,定义:     在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。二,特点1,二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),。2,二叉树的子树有左右之分,次序不能颠倒。3,二叉树的第i层至多有2^{i-1}个结点;3,深

2018-01-07 11:41:30 194

原创 僵尸进程, 孤儿进程

僵尸进程一,定义 当进程退出并且父进程(使用wait()系统调用)没有读取到子进程退出的返回代码时就会产生僵尸进程。僵尸进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。 简单来说就是,在父进程中有一个子进程,该子进程完成父进程交给的任务,子进程完成后会给父进程一个任务结果返回,但父进程一直没有理会。使得子进程很尴尬的挂着,不能释放,一直等父进程查看结果,而

2018-01-04 13:37:22 293

C++帮助文档

里面集成了C++函数库中大多数函数,有实例帮助理解,对于学习C++的新人有代入作用。

2017-12-13

对数据的蛋疼拆解

一个正整数有可能可以被表示为 m(m>=2) 个连续正整数之和,如: 15 = 1 + 2 + 3 + 4 + 5 15 = 4 + 5 + 6 15 = 7 + 8 编写一个程序,输入一个正整数,然后找出符合这种要求的所有连续正整数序列,若不存在这种序列,则打印None。

2017-07-25

空空如也

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

TA关注的人

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