自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

极客熊猫

路漫漫其修远兮,吾将上下而求索

  • 博客(66)
  • 资源 (1)
  • 收藏
  • 关注

原创 正则表达式匹配

设m为s的大小,n为p的大小,因为要考虑空串""的匹配情况,所以dp数组应该是。dp[i][j]表示s[0...i-1]与p[0...j-1]是否能够匹配上,匹配为true,不匹配就为fasle。

2024-02-24 13:37:18 917

原创 十大基础排序算法

十大基础排序算法大总结。冒泡排序、快速排序、插入排序、希尔排序、选择排序、堆排序、归并排序、基数排序、计数排序、桶排序

2024-02-21 17:50:19 4316 1

原创 基础数据结构与相关C++ STL容器

基础数据结构以及在C++ STL中提供的相关容器。

2024-02-20 19:43:10 974

原创 MINIEYE笔试第一题:堆方块求表面积

笔试

2023-02-24 18:38:25 302

原创 Objective-C中的类别与扩展

类别与扩展

2022-08-01 09:51:00 547

原创 键值编码KVC与键值监听KVO

键值编码KVC与键值监听KVO

2022-07-29 17:00:13 456

原创 Objective-C中的Block(基础)

Objective-C中的Block

2022-07-28 17:05:40 365

原创 Java快速入门

廖雪峰Java教程学习笔记

2021-10-07 15:49:45 125

原创 【Java】Linux平台安装JDK

Linux安装Java

2021-10-07 14:40:32 88

原创 【华为2022秋招一面手撕算法】:无重复字符的最长子串

华为秋招一面手撕算法

2021-09-23 20:06:48 222

原创 【华为2022秋招20210908机试题】:最优节点

华为2022届秋招2021年9月8日笔试第一题【最优节点】

2021-09-22 11:15:09 423

原创 【虾皮面试手撕算法】:设计LRU缓存结构

虾皮提前批一面手撕算法

2021-09-17 15:38:10 165

原创 【虾皮面试手撕算法】:合并两个有序链表

虾皮提前批一面手撕算法

2021-09-17 13:00:15 160

原创 C++实现归并排序 快速排序 堆排序

C++实现归并排序、快速排序、堆排序

2021-07-22 15:42:04 323

原创 简述C++ STL关联式容器

简单叙述C++STL中的关联式容器

2021-06-30 16:12:27 96

原创 简述C++ STL 序列式容器与配接器

简要讲解了C++ STL五种序列式容器和三种配接器。

2021-06-29 22:38:03 211 2

原创 C++构造函数和析构函数调用顺序

用实例验证C++构造函数与析构函数的调用顺序

2021-06-28 22:13:58 497 2

原创 C++实现单例模式

程序代码如下,分别实现了三种单例模式:单线程下的单例类 Singleton_1;多线程下的单例类 Singleton_2;多线程下Double-check的单例类Singleto_3;#include <iostream>#include <pthread.h>#include <unistd.h>/**********************单线程单例类的实现**************************/class Singleton_1{

2021-06-28 20:17:08 105

原创 从内存角度看C++菱形继承

优秀的程序员应该清楚程序中的每一个字节

2021-06-22 18:56:24 183

原创 浅谈C++对象模型

更多文章分享在个人微信公众号:极客熊猫欢迎扫码关注:引言如《Effective C++》中所言,C++是一个语言联邦,它由以下四部分组成:C:可以理解为兼容C的那部分,即面向过程的;Object-Oriendted C++:即C++面向对象的部分,封装、继承、多态;Template C++:即泛型编程;STL:标准模版库,主要包含容器、迭代器、算法等。面向过程:如C语言,数据和**处理数据的操作(即函数)**是分开的,也就是说语言本身并没有支持数据和函数之间的关联性。本文我们要谈

2021-06-21 13:06:07 148 2

原创 我不允许你不懂条件变量

更多文章分享在个人微信公众号:极客熊猫欢迎扫码关注:互斥与同步在多线程编程中,有两大问题需要解决:互斥和同步。这两个问题经常放在一起说,但它们还是存在一些差别的。互斥:由于线程间存在共享数据,当多线程并发地对共享数据进行操作(主要是写操作)时,如不加以管理,可能导致数据不一致问题。互斥就是一个共享数据在同一时刻只能被一个线程使用,这样就保证了共享数据的一致性。同步:同步比互斥要更加严格。互斥只是规定多个线程不能同时使用共享数据,但是对谁先使用谁后使用并没有作出限制;而同步是指线程间存在依赖,它们

2021-06-10 15:33:43 246

原创 Linux如何从源代码安装软件?

更多文章分享在个人微信公众号:极客熊猫欢迎扫码关注:引言在Linux中,有三种软件安装方法:源代码安装(Tarball)源代码安装方式相对来讲比较复杂。软件商会把软件的所有源代码打包压缩成一个Tarball,我们下载这个Tarball后,在自己的电脑上进行编译,然后安装。由于需要自行编译,所以耗时会较长,且依赖需要用户自己解决;但好处在于,自己的机器编译出来的肯定会更适合自己的机器,且可以安装自己想要的版本。二进制安装二进制安装方式就是厂商已经预先在各种平台上编译好了,我们只需要下载

2021-05-20 17:21:43 1803 2

原创 再探TCP连接管理

更多文章分享在个人微信公众号:极客熊猫欢迎扫码关注:引言在《TCP的三次握手与四次挥手》中,我们已经了解了一个TCP连接的建立与终止的规则及这个过程中发送的各个类型的报文段。这些决定TCP应该做什么的规则其实是由当前TCP连接所属的状态决定的。当前的状态会在各种触发条件下发生改变。常见的触发条件如:传输或接收到某报文段;计时器超时;客户端/服务端应用程序的读写操作;来自其他层的信息。这些规则可以概括为TCP的状态转换图。本文就以TCP状态转换为出发点,再探TCP的连接管理相关内容。

2021-05-17 10:52:06 241

原创 TCP:传输控制协议(初步)

更多文章分享在个人微信公众号:极客熊猫欢迎扫码关注:引言所谓可靠传输,有以下四点要求:不损坏,即接收到的数据不存在比特差错;不丢失,即接收到的数据无间隙;不重复,即接收到的数据不重复;不乱序,即接收到的数据是按次序的。通信介质由于一些原因可能会造成比特差错和分组丢失。使用差错校正码,即添加一些冗余比特用于恢复比特差错;重传机制:即重新传送信息,直到它被正确接收为止。重传可以解决比特差错和分组丢失。TCP就采用重传机制。重传机制通过重传机制解决比特差错和分组丢失,需要判断两个

2021-05-15 16:36:34 158

原创 网络编程领域的HelloWorld

引言Echo客户端/服务端程序应该是网络编程领域的入门首选,可以视为网络编程领域的HelloWorld程序。为了深入学习网络编程,我写了这样一个程序,姑且叫它Simplest_Socket。这确实是最简单的socket通信程序。与一般的Echo服务器不同,Simplest_Socket会把客户端传来的英文字符串转换为大写再返回给客户端;而不像Echo服务器那样原样返回。这样设计的目的在于体现服务器的“服务”功能,尽管只是把小写转为大写,但这确实是一项服务。思路TCP套接字通信由一个四元组确定一个端

2021-05-14 20:53:38 216 2

原创 进程调度

更多文章分享在个人微信公众号:极客熊猫欢迎扫码关注:调度的概念首先,在《进程与线程基础》一文中,我们已经了解到:进程是资源分配的基本单位;线程是CPU调度的基本单位。一个单核CPU在某一时刻只能允许一个线程执行,但是现在的计算机总是有一大堆进/线程等待执行。这就需要某种规则来决定处理这些进/线程的顺序,这就是调度要研究的问题。回忆之前提到的进程状态:运行态:当前正在占有CPU的进/线程;就绪态:具备运行条件,等待系统分配CPU的进/线程;阻塞态:不具备运行条件,正在等待某外部事

2021-05-13 11:17:00 5753

原创 可能是全网最全的线程同步方式总结了

更多文章分享在个人微信公众号:极客熊猫欢迎扫码关注:引言由于每个进程有自己独立的虚拟地址空间,为了打破进程与进程之间的“柏林墙”而实现通信,多进程更多的是考虑进程之间如何通信的问题;而同一进程内的多个线程共享同一地址空间,为了避免多个线程同时访问数据造成的混乱,多线程之间更多的是考虑线程之间的同步问题。所谓同步,即协同步调,按预定的先后次序访问共享资源,以免造成混乱。线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内

2021-05-12 15:51:11 1341

原创 进程间通信

引言进程间通信即InterProcess Communication,简称IPC。其目的是实现不同进程之间的通信问题。进程间通信方式可以归纳为以下几类:管道:PIPE、FIFO;系统IPC:消息队列、共享存储;信号(Signal)套接字:socket。管道PIPEPIPE是UNIX系统最古老的IPC方式,也叫未命名管道,PIPE有以下两种局限性:PIPE是半双工的,即数据只能在一个方向上流动。PIPE只能在具有公共祖先的两个进程之间使用。通常,一个进程创建一个管道,然后进程调用f

2021-05-12 15:45:31 163 1

原创 进程与线程基础

引言从今天开始,会陆续开更系列文章《一起学操作系统》,在这里说一下整个系列的写作思路。操作系统的功能有两个:提供抽象管理资源对于提供抽象这个功能,我总结为:操作系统提供了三个抽象CPU 抽象为 进程;物理内存 抽象为 虚拟地址空间;IO设备(包括磁盘) 抽象为 文件系统。对于管理资源这个功能,操作系统的任务是在相互竞争的程序间有序地控制对资源的分配,这里,我关注一点,即:死锁。资源就是随着时间的推移,必须能获得、使用以及释放的任何东西。可以是硬件,也可以是一组信息(如数据

2021-05-12 15:38:35 87

原创 一文搞懂ARP协议

更多文章请关注我的个人微信公众号:极客熊猫欢迎扫码关注:什么是ARP?ARP是Address Resolution Protocol的首字母缩写,即地址解析协议。如果一台主机要将一个帧发送到另一台主机,只知道这台主机的IP地址是不够的,还需要知道主机的硬件地址。对于以太网而言,硬件地址即48位的MAC地址。对于采用以太网的TCP/IP网络,ARP协议提供从IPv4地址到MAC地址的动态映射。动态是指它会自动执行和随时间变化,而不需要系统管理员重新配置。比如一台主机因更换网卡改变了M

2021-05-09 12:32:56 4685

原创 一文搞懂DNS协议

更多文章请关注我的个人公众号:极客熊猫欢迎扫码关注:什么是DNS?DNS是Domain Name System的首字母缩写,即域名系统。网络上的主机有两种标识方法:域名:如www.baidu.com。优点是人们喜欢,容易记;缺点是机器不喜欢,路由器无法处理。IP地址:如39.156.69.79。优点是机器喜欢,容易处理;缺点是人们不喜欢,不好记。为了折中人类和机器不同的偏好,我们需要一种能从域名转换到IP地址的服务,这就是DNS的主要任务。DNS协议采用客户端/服务器模型,DNS协

2021-05-09 12:28:08 3294 6

原创 一文搞懂DHCP协议

何为DHCP?DHCP是Dynamic Host Configuration Protocol的首字母缩写,即动态主机配置协议。任何连接到的互联网的主机或路由器都需要IP地址、子网掩码、默认网关、DNS服务器等配置信息,当一个网络中的主机或路由器数量很多时,采用人工来配置这些信息显然是低效且易错的。DHCP就是解决这个问题的。DHCP的主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、子网掩码、默认网关、DNS服务器地址等信息,并能够提升IP地址的使用率。DHCP采用

2021-05-05 10:11:30 3717 2

原创 TCP三次握手四次挥手以及SYN泛洪攻击

从TCP 首部结构谈起本文中我们重点关注TCP首部中的以下字段:source port 和 destination port。Sequence Number 和 Acknowledgement Number:用以实现可靠数据传输服务。标志字段中的A、S、F,即ACK、SYN、FIN。三次握手与四次挥手图片过大传不上来,欢迎关注我的微信公众号:极客熊猫,查看全文。TCP的三次握手与四次挥手是老生常谈的问题了,接下来我将结合上图,完整的描述三次握手与四次挥手的过程。三次握手三次握手指

2021-04-14 20:59:37 1155

原创 还有人要问我static关键字吗?

程序的内存布局聊static关键字之前,先要复习一下一个进程的内存布局。kernel spacestack ↓unuseddynamic librariesunusedheap ↑read/write sections(.data .bss)readonly sections(.init .rodata .text)reserved其中,stack向低地址增长,heap向高地址增长。对于32位的Linux系统,kernel space占

2021-03-24 13:36:27 80

原创 自顶向下设计

摘要:先确定上层步骤,然后再逐步细化这些步骤的过程被称为自顶向下设计。这种技巧允许我们把庞大而复杂的任务分割为许多小而简单的任务。自顶向下设计是一种常见的程序设计方法,尤其适合 shell 编程。在这一章中,我们将使用自顶向下的设计方法来进一步开发我们的报告产生器脚本。Shell函数我们在上一节输出网页的例子里添加一些东西,包括:系统正常运行时间和负载。这是自上次关机或重启之后系统的运行时间,以及在几个时间间隔内当前运行在处理中的平均任务量。磁盘空间。系统中存储设备的总使用量。家目录空间。每.

2021-03-23 09:29:01 1736

原创 文本处理

摘要:类 Unix 的操作系统都严重依赖于几种数据存储类型的文本文件。本章将看一些被用来“切割”文本的程序。文本处理这一章会重新拜访一些老朋友,并且会给我们介绍一些新朋友:cat - 连接文件并且打印到标准输出sort - 给文本行排序uniq - 报告或者省略重复行cut - 从每行中删除文本区域paste - 合并文件文本行join - 基于某个共享字段来联合两个文件的文本行comm - 逐行比较两个有序的文件diff - 逐行比较文件patch - 给原始文件打补丁tr .

2021-03-23 09:22:00 191

原创 网络系统

摘要:这一章相当有用,我刚买了一台云服务器,相信本章内容将让我学到不少东西。Linux被用来创建各种各样的网络系统和装置,包括防火墙、路由器、服务器等等。网络系统本章要研究的命令包括用来监测网络和传输文件的命令,还有用来远程登录的ssh程序。本章会介绍:ping - 发送 ICMP ECHO_REQUEST 数据包到网络主机tracepath - 打印到一台网络主机的路由数据包netstat - 打印网络连接,路由表,接口统计数据,伪装连接,和多路广播成员ftp - 因特网文件传输程序w.

2021-03-23 09:21:01 340

原创 探究操作系统

摘要:已经知道了如何在文件系统跳转了,接下来学习一些对研究Linux系统有帮助的命令。探究操作系统本章讲解以下命令:ls —列出目录内容(list show)file —确定文件类型less —浏览文件内容ls乐趣通过ls命令,可以知道目录的内容,以及各种各样重要文件和目录的属性。列出当前工作目录的内容:xuxg@xuxg-ubuntu:~$ lsbaidunetdisk Desktop Downloads MyHexoBlog Public Tem.

2021-03-23 09:20:13 198 1

转载 使用命令

摘要:本章内容聚焦于命令,将介绍命令的四种形式,如何识别命令属于哪一种形式,以及在知道命令属于哪种形式后如何获取它的相关文档,最后还会讲述如何用别名创建自己的命令。使用命令这一章将介绍以下命令:type –说明怎样解释一个命令名which –显示会执行哪个可执行程序man –显示命令手册页apropos –显示一系列适合的命令info –显示命令 infowhatis –显示一个命令的简洁描述alias –创建命令别名到底什么是命令命令具有以下四种形式:是一个可执行程序。.

2021-03-23 09:15:43 106

原创 权限

摘要:Unix或类Unix操作系统是多任务多用户系统。意味着多个用户可以在同一时间使用同一台计算机。那么,如何避免用户彼此之间的影响呢?权限,本章将介绍权限。权限本章将会介绍到以下命令:id - 显示用户身份号chmod - 更改文件模式umask - 设置默认的文件权限su - 以另一个用户的身份来运行shellsudo - 以另一个用户的身份来执行命令chown - 更改文件所有者chgrp - 更改文件所有权passwd - 更改用户密码拥有者、组成员和其他人用户拥有.

2021-03-23 09:14:56 182 1

OpenCV实现特定车牌识别.rar

该资源在Windows VS2013环境下使用OpenCV实现了车牌识别,是很好的OpenCV入门资源。通过这个Demo,你将学会一系列图像处理知识以及OpenCV的API。

2020-05-16

空空如也

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

TA关注的人

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