自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2020-11-18

回文数练习:java 转化为字符串处理class Solution { public boolean isPalindrome(int x) { String s=String.valueOf(x); char[] c=s.toCharArray(); for(int i=0;i<c.length;i++) { int j=c.length-1-i; if(c[i]==c

2020-11-18 14:57:04 360

原创 Linux命令总结合集

Linux 命令总结合集1、实时查看日志tailf /data/log-collect/17xue-test.log | grep "getAdFromPlatform result"2、连接服务器ssh [email protected]、从本地上传文件到服务器scp /path/test.txt [email protected]:/var/ftp/appserver从本地上传文件夹到服务器scp /path/test/* [email protected]:/var/

2020-08-11 20:34:27 235

转载 linux 标准i/o缓存机制

一、什么是缓存I/O(Buffered I/O)缓存I/O又被称作标准I/O,大多数文件系统默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,操作系统会将I/O的数据缓存在文件系统的页缓存(page cache)中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。1.缓存I/O有以下优点:

2017-01-04 16:50:25 874

转载 用户态和内核态的区别

内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。用户态:只能受限的访问内存,且bu

2016-11-09 22:49:17 38722 3

转载 常用sql语句

SQL 常用语句积累:一、 SQL 基本语句SQL 分类:DDL —数据定义语言 (Create , Alter , Drop , DECLARE)DML —数据操纵语言 (Select , Delete , Update , Insert)DCL —数据控制语言 (GRANT , REVOKE , COMMIT , ROLLBACK) 首先

2016-10-07 21:00:22 275

转载 单链表带环问题

1.判断单链表是否有环  使用两个slow, fast指针从头开始扫描链表。指针slow 每次走1步,指针fast每次走2步。如果存在环,则指针slow、fast会相遇;如果不存在环,指针fast遇到NULL退出。  就是所谓的追击相遇问题:    2.求有环单链表的环长   在环上相遇后,记录第一次相遇点为Pos,之后指针slow继续每次走1步,fast每

2016-10-06 18:35:03 279

原创 二叉树练习题

#pragma once#include#include#include#includeusing namespace std;enum PointerTag{THREAD,LINK}; //二叉树线索化需要的struct BinaryTreeNode{ BinaryTreeNode(int data) :_data(data) ,_left(NULL) ,_righ

2016-10-05 21:58:33 1216

原创 static_cast、dynamic_cast、const_cast和reinterpret_cast总结

c++类型转换:(1)显示类型转换(2)隐式类型转换而对于隐式变换,就是标准的转换,在很多时候,不经意间就发生了,比如int类型和float类型相加时,int类型就会被隐式的转换位float类型,然后再进行相加运算。接下来主要介绍显示类型转换。一、static_cast static_cast的转换格式:static_cast (expression)

2016-09-16 19:48:20 398

原创 多态

一、概念多态性可以简单的概括为“1个接口,多种方法”,在程序运行的过程中才决定调用的机制程序实现上是这样,通过父类指针调用子类的函数,可以让父类指针有多种形态。二、形式静态多态(函数重载)模板函数 在编译时就可以确定对象使用的形式动态多态(虚函数,函数重写)其具体引用的对象在运行时才能确定三、函数重载实现的多态函数重载:函数名相同,参数不同#include

2016-09-16 15:32:25 249

原创 const和#define区别

(1)编译器处理方式不同:#define 宏在预处理阶段展开,const  常量在编译阶段展开。(2)类型和安全检查不同:#define宏没有类型,不做任何类型检查,仅仅是展开;const 常量具有具体的类型,在编译阶段会执行类型检查。(3)存储方式不同:#define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存;const常量会在内存中分配(可以是堆中或者栈中

2016-09-16 12:29:16 202

原创 自旋锁和互斥锁

自旋锁的概念:何谓自旋锁?它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是两者在调度机制上略有不同。对于互斥锁,如果资源已经被占用,资源申请者只能进入睡眠状态。但是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,

2016-09-11 19:51:01 617

原创 进程和线程的区别与联系

1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.进程概念:程序的一个实例,正在执行的程序,能分配处理器并由处理器执行的实体;内核概念:担当分配系统资源(cpu时间、内存)的实体线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有

2016-09-10 09:29:05 399

原创 exit和return的区别

1. exit用于结束正在运行的整个程序,它将参数返回给OS,把控制权交给操作系统;而return 是退出当前函数,返回函数值,把控制权交给调用函数。2. exit是系统调用级别,它表示一个进程的结束;而return 是语言级别的,它表示调用堆栈的返回。3. 在main函数结束时,会隐式地调用exit函数,所以一般程序执行到main()结尾时,则结束主进程。exit将删除进程使用的内存空间

2016-09-06 08:22:28 1168

原创 排序总结

时间复杂度:就是指函数计算执行的操作次数。二分查找法的时间复杂度:O(logn/2)=O(lgn)递归的时间复杂度:递归的总次数*每次递归次数空间复杂度:对象的个数递归的时间复杂度:递归深度O(N)一、快速排序(1)最好的情况:取决于key值的大小,如果每次划分后对一个元素定位,该元素的左侧子序列与右侧子序列的长度相同,则下一步就是对两个长度减半的子序列进行排序。时间复

2016-08-28 13:23:09 447

原创 数组中出现次数超过一半的数字

1、利用快速排序,排好序中间的值就是出现次数超过一半的数字注意:判断数组是否有效,判断出现次数频率是否超过数组大小的一半#include#include#include#include using namespace std;int PartSort(int* a, int left, int right) //快排排序{ assert(a); int key = a

2016-07-29 15:11:29 747

原创 面试题

1、c++中有哪几种数据类型?(1)数据类型可以告诉数据代表的意义,以及程序可以对数据进行哪些操作。(2)c++中有自定义类型和基本类型;基本数据类型:整型,浮点型,void型自定义类型:用户自己创建的类型,数组,结构体,类2、整型有哪几种形式?区别?一字节表示八位,即:1byte = 8 bit;(1)字符型unsigned char  无符号字符型  1个字

2016-07-28 18:48:51 678

原创 简易布隆过滤器

布隆过滤器 Bloom Filter一、原理如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路。但是随着集合中元素的增加,我们需要的存储空间越来越大。同时检索速度也越来越慢。Bloom Filter 是一种空间效率很高的随机数据结构,Bloom filte

2016-07-25 18:55:17 558

原创 数据结构--------------AVLTree

一、AVLTree的概念在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者 G.M. Adelson-Velsky 和 E.M. Landis,他们在 1962 年的论文 "A

2016-07-25 16:24:52 246

原创 数据结构-----------B树

一、B 树(平衡的多叉树)  一棵M阶(M>2)的B树,是一棵平衡的M路平衡搜索树,可以是空树,它的性质为:1、根节点至少有两个孩子2、每个非根节点有[⌈M/2⌉,M]个孩子;⌈M/2⌉向上取整3、每个非根节点有[⌈M/2⌉-1,M-1]个关键字,并且以升序排列4、key[i]和key[i+1]之间的孩子节点的值介于key[i]、key[i+1]之间‘5、所有的叶子节点都在

2016-07-22 22:03:48 329

原创 数据结构---------二叉搜索树

一、二叉搜索树概念二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。搜索,插入,删除的复杂度等于树高,O(log(n)).二、操作

2016-07-21 11:08:55 355

原创 数据结构---------红黑树

一、红黑树       红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。       可以保证最长路径不超过最短路径的2倍,近似平衡。二、性质       性质1. 节点是红色或黑色。       性质2. 根节点是黑色。       性质3 每个叶节点(NIL节点,空节点)是黑色的。

2016-07-19 22:44:34 346

原创 正则表达式--------awk

一、awk的基本使用awk比sed强的地方在于不仅能以行为单位还能以列为单位处理文件。awk缺省的行分隔符是换行,缺省的列分隔符是连续的空格和Tab。awk命令行的基本形式为:awk option 'script' file1 file2 ...awk option -f scriptfile file1 file2 ..和sed一样,awk处理的文件既可以由标准输入重定向

2016-06-29 16:14:52 242

原创 正则表达式--------SED

一、sed简介sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出。sed命令行的基本格式为:sed option 'script' file1 file2 ...sed option -f scriptfile file1 file2 ...

2016-06-28 20:44:41 374

原创 正则表达式--------grep

一、正则表达式:规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示 一个模式,这就是正则表达式(Regular Expression)(1)字符类(它们在模式中表示一个字符,但是取值范围是 一类字符中的任意一个。)(2)数量限定符:(3)位置限定符:grep是一种查找过滤工具,正则表达式在grep中用来查找符合模式的字符串。grep找的是包含

2016-06-26 22:37:18 401

原创 SHELL----easy

一、求和结果:二、斐波那契数列三、字符串拼接四、进度条五、最大值、最小值

2016-06-22 16:40:42 231

原创 字符串截取

字符串截取》用#截取var="http://www.baidu.com" # 用#截取:删除左边字符,保留右边字符 echo ${var#*:}其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符结果:[root@localhost SHELL]# ./shell.sh//www.baid

2016-06-18 15:36:25 475

原创 crond命令

crondcrond的概念和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。而crond正是它的守护进程。(1)crontab 需要启动一个服务crond才行,crond服务通过crontab命令实现。(2)cr

2016-06-14 21:12:39 3126

原创 shell 脚本之语法

一、条件测试 test和[[root@www SHELL]# cat shell.sh#!/bin/bashval=10test $val -gt 9 //test 传给各命令的参数之间用空格隔开echo $?test $val -gt 10echo $?[ $val -gt 9 ] // [echo $?[ $val -gt 10 ]echo $?

2016-06-13 12:16:17 339

原创 shell 脚本

一、shell简介Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一 个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲 命令。Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shel

2016-06-12 19:00:54 606

原创 I/O多路转接之poll

不同与select使用三个位图来表示三个fdset的方式,poll使用一个 pollfd的指针实现。 pollfd结构包含了要监视的event和发生的event,不再使用select“参数-值”传递的方式。同时,pollfd并没有最大数量限制(但是数量过大后性能也是会下降)。 和select函数一样,poll返回后,需要轮询pollfd来获取就绪的描述符。从上面看,select和poll都需要在返

2016-06-12 12:48:54 372

原创 select实现I/O复用

select:系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的对应的FILE *结构的表示就是stdin、std

2016-06-12 12:48:51 375

原创 基于UDP协议的socket通信

UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据。具体实现:udp_server.c  1 #include  2 #include  3 #include  4 #include  5 #include  6 #include  7 #include  8 #include  9 #include 10 void usage(char* argv)

2016-06-12 12:48:48 609

原创 网络中进程通信-----socket

一、什么是socket?socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。 (1)socket()函数int socket(int d

2016-06-12 12:48:46 549

原创 栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,判断第二个序列是否是栈的弹出序列。思路:#include#include#includeusing namespace std;bool test(int* a,int* a1,int len){ stack s1; int i=0; int j=0; while(j<len) { while(i<len) {

2016-06-12 12:48:43 227

原创 二叉树的层次遍历

二叉树从上到下遍历:利用栈,先将根节点压入栈中,出栈,遍历该节点的左孩子,右孩子,依次把该节点的右孩子,左孩子压入栈中。#include#includeusing namespace std;struct BinaryTreeNode{ BinaryTreeNode(int value) :_value(value) ,_left(NULL) ,_right(NULL) {

2016-06-12 12:48:40 555

原创 包含min函数的栈

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的函数。在该栈中,调用min,push,pop的时间复杂度都为O(1)。#include#includeusing namespace std;template class Stack{public: void push(T  data) { if(_array.size()==0) { _array.p

2016-06-12 12:48:37 198

原创 二叉树的镜像

二叉树的镜像:先序遍历二叉树,若有子节点,则交换子节点。(1)递归实现(2)非递归实现,循环实现,利用栈#include#include#include#includeusing namespace std;struct BinaryTreeNode{BinaryTreeNode(int _value):m_nValue(_value),m_pLeft(NULL),m_pRig

2016-06-12 12:48:34 192

原创 合并两个有序的链表

#include#include#include struct Listnode{    int _value;    Listnode* _next;};void Init(Listnode*& head){    Listnode* cur =head;    if(cur==NULL)    {        cur=(Listnode*)malloc(sizeo

2016-06-12 12:48:31 204

原创 链表的反转

从头开始摘节点,依次连起来。#include#include#include struct Listnode{    int _value;    Listnode* _next;};void Init(Listnode*& head){    Listnode* cur =head;    if(cur==NULL)    {        cur=(Listnode

2016-06-12 12:48:28 254

原创 在链表中找出倒数第K个节点

(1)遍历两遍,第一次计算出链表长度n,第二次找到(n-k)个节点,也就是倒数第K个节点。(2)遍历一遍,定义两个指针,一个指针fast,一个指针slow,都指向头结点,fast指针先向前走K,然后再同时遍历,当fast遍历到最后一个节点时,slow所指向的节点就是倒数第K个节点。#include#include#include struct Listnode{    int _val

2016-06-12 12:48:25 355

空空如也

空空如也

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

TA关注的人

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