自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 智能指针的模拟实现

1.引入int main(){ int *p = new int; //裸指针 delete p; return 0;}在上面的代码中定义了一个裸指针p,需要我们手动释放。如果我们一不小心忘记释放这个指针或者在释放这个指针之前,发生一些异常,会造成严重的后果(内存泄露)。而智能指针也致力于解决这种问题,使程序员专注于指针的使用而把内存管理交给智能指针。 普通指针也容

2017-07-24 16:25:51 1704

原创 Linux I/O复用——select系统调用

Linux中I/O复用使得程序能够同时监听多个文件描述符,这对提高程序的性能至关重要。 Linux下实现I/O复用的系统调用主要有select、poll、epoll。 select系统调用 select的主要用途是:在一段时间内,监听用户感兴趣的文件描述符上的可读,可写和异常事件。1.select原型#include<sys/select.h>int select(int nfds,fd_s

2017-05-07 01:06:17 688

原创 Mysql-explain

explain 关键字可以用来分析查询语句的执行情况当执行完explain select * from test WHERE name = ‘小王’;这条语句的时候会出现如下的结果;(1)id:表示查询中执行selec子句或者操作表的顺序(表的加载数据),有几个 select 就有几个id,id为NULL最后执行。《1》 id相同时,执行顺序是由上往下的。explain select user.,orders. from user ,orders where user.id=orders.use

2020-05-29 19:34:51 199

原创 PHP7新特性

PHP7号称是新一代的PHP,官方开发组对Zend引擎底层做了大量优化来提升PHP的性能。本篇文章就来介绍一下PHP7的新特性以及做了哪些方面的优化。PHP新特性变量类型PHP7函数为函数的返回值和参数增加了类型限定。对于密集计算有很大的提升,现在fecebook,增加类型限定主要是为了后面PHP7.1版本的JIT特性做准备,可以准确确定类型。function returnIntValue(int $value): int{ return $value;}print(retur

2020-05-20 13:01:00 245

原创 PHP之—正则表达式

PHP常用的正则表达式函数$parttern:正则表达式$subject:匹配的内容(1)preg_match 和preg_match_allreturn:返回值为匹配到结果的次数pregmatchall会都匹配所有的结果,pregmatch匹配到第一个相同的就进行返回,最多匹配一次,return:返回值为匹配到结果的次数preg_match_all会都匹配所有的结果,preg_match匹配到第一个相同的就进行返回,最多匹配一次,return:返回值为匹配到结果的次数pregm​atcha​.

2020-05-20 12:16:58 562

原创 每天几道笔面试题

给出一个数组,如 [7864, 284, 347, 7732, 8498],现在需要将数组中的数字拼接起来,如按顺序依次拼接为:786428434777328498,数组中的数字拼接顺序可以任意,编写程序,返回「最大的可能拼出的数字」//可以使用排序,按照数字大小进行排列这个数字就是最大的$tmp = implode($arr); //数组转字符串$dust = str_split($tmp);rsort($dust);//数组转字符串$str = implode($dust);...

2020-05-14 20:12:50 262

原创 netstat命令详解

1.natstat是一个监控TCP/IP网络的非常有用的工具,可以用来查看网络状态2. 常用参数-a all 显示所有连接的socket,默认不显示LISTEN-t tcp 显示TCP传输协议的连接状况-u udp 显示UDP传输协议的连接状况-n numeric 直接使用IP地址,而不是通过域名解析器-l listen 仅列出正在监听的服务状态-p programs 显示进程名和进程号3.可以用来做什么(1)命令 netstat -lnp 查看端口和服务端口netstat -lnp

2020-05-11 23:25:10 876

原创 彻底解决centosping不通baidu.com的问题

百度了很多办法,各种修改配置都没用,如下方法亲测可用。1.点击编辑,虚拟网络编辑器,如下图2.修改成下面的配置3.可以ping通啦如果这种办法不使用您,请自行度娘,谢谢!

2020-05-11 22:00:10 784 1

原创 PHP写个函数来解决多线程同时读写一个文件的问题

利用flock()函数对文件进行加锁(排它锁),实现并发按序进行。flock(file,lock,block)有三个参数。file:已经打开的文件lock:锁的类型(1)LOCK_SH:共享锁(读锁)(2)LOCK_EX:独占锁定(排它锁,写锁)(3)LOCK_UN:解锁(4)LOCK_NB:如果希望在文件锁定时阻塞进程,那么需要加上该参数block:设置为true的时候,锁定文件时,会阻止其他进程$file = fopen('test.txt','w+'); //以只读写方式打开

2020-05-10 14:56:14 318

原创 PHP中常见打印函数echo、print、print_r()、printf、sprintf、var_dump

echoecho不是函数,是PHP语句,可以打印多个变量,不需要圆括号括起来,只能打印简单类型的变量printprint是函数,只能打印一个变量,有返回值,返回值是1,只能打印简单类型的变量print_r()print_r函数打印关于变量的易于理解的信息。语法:mixed print_r ( mixed $expression [, bool return ] )如果变量是string , integer or float , 将会直接输出其值,如果变量是一个数组,则会输出一个格式..

2020-05-09 20:12:20 825

原创 学习总结

1.利用http的get方法加载本地网页 (1)QT += network 表明我们使用了网络模块。 (2在widget.ui文件中添加一个 Text Browser (3) //MainWindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QtNetwork/QtNetwork>

2018-01-14 20:35:00 267

原创 近两周学习总结

<1>用了几天把高效c++看了一遍(下面主要整理了自己平时容易遗忘或者没有常用的知识点) 1. c++中的4中强制转换 (1)const_cast 只能对指针或者引用去除或者添加const属性,对于变量直接类型不能使用const_cast;不能用于不同类型之间的转换,只能改变同种类型的const属性。 (2)static_cast 类似于C风格的强制转换。无条件转换,静态类型转换。由较大

2017-12-24 00:33:38 1332

原创 实习总结

这篇文章主要是总结一下自己在公司这一个月的学习情况。 1.首先先总结一下近两周的学习情况吧~~~ 这两周主要是熟悉了下公司的业务代码。(代码就先不贴出来了)。在此次学习中,学习的新知识: (1)adb的一些基本命令(只列举学习中过程中遇到的命令) a. adb shell : 进入adbshell模式 b. adb help : 查看adb的帮助文档 c. adb devices : 显

2017-12-07 21:51:01 2704

原创 QT+VS2013环境的搭建及配置

这篇博客就对自己第一周所学的知识进行一个总结。 (1)软件的安装 1. 安装vs2013 进入vs官网,下载VS安装包,进入傻瓜式安装。 2.安装QT 进入 qt官方网站,下载qt安装包,进入安装 我安装的时候安装的是mvc2013, qt版本要vs的版本保持一致。 下载完成之后,进入傻瓜式安装:点击下一步。 注意:这时还不算完整,因为并非所得的配置都准备就绪,下面一起

2017-11-19 14:49:56 1813

原创 二分查找

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果xclass Test{public:int binary_search(int* arr, int len

2017-08-11 18:03:46 278

原创 每天几道面(笔)试题

1.两个栈实现一个队列、两个队列实现一个栈//两个队列实现一个队列class Solution{public: void push(int node) { stack1.push(node); } int pop() { if( stack2.size() <= 0) { whil

2017-08-11 10:23:12 322

原创 每天几道编程题

1.在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。/*这个二维数组是有序的从左向右看递增,从上到下递增从左下角开始查询,比他大的右移,比它小的上移*/class Solution {public: bool Find(int target, vector<vect

2017-08-02 18:09:55 292

原创 每天几道笔(面)试题

分析下面代码有什么问题? (1)void test1(){ char string[10]; char* str1 = "0123456789"; strcpy( string, str1 );}解答:st1r长度为11个字节,需要11个字节的大小才能放下,而string只有10个字节的大小。 (2)void test2(){ char string[10]

2017-07-31 00:05:18 387

原创 常用排序的实现及比较

排序的稳定性:假设在待排序的序列中存在多个相同关键字的记录,经过排序,这些关键字的位置保持不变,则称这个排序算法是稳定的,否则是不稳定的。 1. 选择排序(不稳定) 选择排序是一种直观的排序算法,每次找到最大的或者最小的数与,存放在序列的起始元素,知道所有的元素都排序结束。选择排序是不稳定的,假设5,5,3进行排序,3比第一个5小交换位置,导致第一个5摞到第二个5后面,所以选择排序是不稳定的排序

2017-07-30 19:01:15 293

原创 TCP的拥塞控制

目的 拥塞控制:当一个网络中数据一次性发太多时,为了避免由于数据太多而造成网络链路或者路由器过载。解决的方法 慢启动、拥塞避免 快速重传、快速恢复 (1)慢启动 首先先给发送方设置一个“拥塞窗口”的变量,这个变量和接收端的接受窗口共同决定了发送者的发送窗口。 为了避免一次将所有数据都注入到网络中,造成网络拥塞。所以进行试探性的发送数据,先发一个字节的数据,收到确认之后,每次都以2^n发

2017-07-19 14:55:33 402

原创 c++设计模式—观察者模式

Observer模式(观察者模式)应该可以说是应用最多、影响最广的模式之一。因为 Observer 的一个实例 Model/View/Control( MVC) 结构在系统开发架构设计中有着很重要的地位和意义, MVC实现了业务逻辑和表示层的解耦。在 MFC 中, Doc/View(文档视图结构)提供了实现 MVC 的框架结构。在 Java 阵容中, Struts 则提供和 MFC 中 Doc/Vi

2017-07-13 23:43:27 389

原创 c++设计模式之单例模式

单例模式概念 单例模式事比较常用的设计模式之一。一般情况下,我们建立的一些类是属于工具性质的,基本不用存储太多的跟自身有关的数据,在这种情况下,每次都去new一个对象,即增加了开销,也使得代码更加臃肿。其实,我们只需要一个实例对象就可以。如果采用全局或者静态变量的方式,会影响封装性,难以保证别的代码不会对全局变量造成影响,而且这样的代码显的很不优雅。 使用全局对象能够保证方便地访问实例,但是不能

2017-07-13 17:26:19 375

原创 数组和指针的区别,数组和引用的区别

数组和指针的区别 (1)定义 数组是一个符号,不是变量,因而没有自己对应的存储空间。但是,指针是一个变量,里面存储的内容是另外一个变量的地址,因为是变量所以指针有自己的内存空间,只不过里面存储的内容比较特殊。 (2)区别 a.对于声明和定义,指针和数组是不相同的,定义为数组,则声明也应该是数组,不可混淆 b.当作下标操作符时,指针和数组是等价的。a[i]会被编译器翻译成*(a+i).

2017-07-05 23:47:29 548

原创 进程和线程的区别

概念 进程:正在运行中的程序。 线程:进程中的一条执行路径。 2.区别 (1)通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。 (2)线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文

2017-07-04 20:50:59 317

原创 单例模式(c++实现)

什么叫单例模式? 单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 通过单例模式, 可以做到: (1)确保一个类只有一个实例被

2017-07-02 23:46:24 395

原创 带头单链表的实现(嵌套类的实现)

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。class Link{public: Link() {

2017-07-02 22:46:53 1085

原创 内核态、用户态的切换

内核态、用户态的概念 内核态:执行内核代码的状态 用户态:执行用户代码的状态什么时候用户态会切到内核态? 《1》系统调用时 例如调用fork、open等系统函数时。 《2》发生异常时 例如缺页异常。当cpu执行运行在用户态的程序时,发生了一些事先不可知的异常。 《3》外设产生中断 如硬盘读写操作的完成,系统会切换到硬盘读写的中断处,处理程序继续完成后续操作。怎样进行切换? 通

2017-06-28 23:33:00 678

原创 gcc和g++的区别

一、区别 1. gcc是GCC中的c编译器 g++是GCC中的c++编译器 2. 对于后缀为.c的文件,gcc当成c文件处理,而g++当成c++处理 对于后缀为.cpp的文件,两者都当成.cpp文件处理 3. 在编译阶段,g++会自动链接STL库,而gcc必须要加一个参数-lstdc++ 4. gcc在编译c文件时,可用的预定义宏是比较少的 二、小误区

2017-06-28 23:14:40 834

原创 TCP与UDP的区别总结

特点 TCP协议(传输控制协议):提供一个可靠的、面向链接的、基于数据流的服务。 UDP协议(用户数据报协议):提供一个不可靠的、无链接的、基于数据报的服务主要区别 (1)TCP是面向链接的,双方在通信之前必须要建立连接,而使用UDP通信之前不需要建立连接,所以应用程序每次发送数据之前必须明确接收端的地址。 (2)TCP是基于流的,而UDP是基于数据报的。 (3)TCP提供可靠的服务,T

2017-06-28 16:34:24 573

原创 TCP/IP模型与OSI模型的比较

tcp/ip模型分为4层 osi模型分为7层 TCP/IP模型每一层的功能 数据链路层:无差错的数据链接 网络层:路由的选择和转发 传输层:为两台主机上应用程序提供端对端的通信 应用层:应用程序的逻辑TCP/IP模型每一层的协议 5.OSI模型和TCP/IP模型的比较 (1)都是基于独立的协议栈概念 (2)OSI模板是基于国际标准组织的建议建立的 (3)OSI模型同时支持无连接

2017-06-20 12:52:24 1543

原创 二叉树的前序,中序,后序的递归与非递归遍历

二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。 1.前序遍历 (1)递

2017-05-07 23:57:28 534

原创 Linux中多线程

1.概念 进程:运行中的程序。 线程:一个程序中的多个执行路径。更准确的定义是:线程是一个进程内部的一个控制序列。 2.为什么要有线程? 用fork调用进程代价太高,需要让一个进程同时做多件事情,线程就非常有用。 3.线程的优点和缺点。 优点: (1)有时,让程序看起来是在同时做两件事是非常有用的。 比如在编辑文档时,还能统计文档里的单词个数。 (2)一个混杂着输入、计算、输出的程序

2017-04-27 16:19:23 609

原创 Linux进程间通信(信号量)

什么是信号量 为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。 信号量的作用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程) 。 相关概念:临界资源:同时只允许一个进程使用的资源。 临界区:访问临界资源的程序段。 信号量 更正式的一个定义

2017-04-20 21:09:18 409

原创 教你如何迅速秒杀99%的海量数据处理面试题

**教你如何迅速秒杀99%的海量数据处理面试题**前言 一般而言,标题有“秒杀”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。 毕竟受文章和理论之限,本文摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语

2017-04-18 14:50:45 458

空空如也

空空如也

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

TA关注的人

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