自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

magic_world_wow的博客

一个小白的成长

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

原创 leetcode--解数独

要求:编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。注:空白格用 ‘.’ 表示。解法描述:约束编程:解数独的一个约束条件是一个数字只能在当前行、当前列和当前的格子中仅能出现一次。这意味这每次放置一个数字都要设置相...

2020-04-04 12:04:12 265

原创 protobuf序列化协议介绍

Protocol Buffer 简介Google Protocol Buffer(简称Protobuf)是Google公司内部的混合语言数据标准,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。是一种可用于通讯协议、数据存储等领域的无关语言、无关平台、可扩展的序列化结构数据格式。通过将结构化数据串行化(序列化),从而实现数据存储 / RPC数据交换的功能。...

2020-03-13 12:35:26 540

原创 CI(CodeIgniter)框架结构介绍

目录结构说明license.txt 许可协议user_guide 用户手册system 框架核心文件application 应用目录index.php 入口脚本文件CI中的MVC架构入口文件:唯一一个让浏览器直接请求的脚本文件控制器(controller):协调模型和视图模型(model):提供数据,保存数据视图(view):搜集用户输入、创建并提交表单、做显...

2020-03-07 23:25:39 814

原创 CI(CodeIgniter)框架入门

什么是CI框架: CdoeIgniter是为PHP开发人员提供的一套Web应用程序工具包。他的目的是能够让你从零开始更加快速的完成项目,它提供了一套丰富的类库来满足我们的日常需求,并且提供了一个简单的接口和逻辑结构来调用这些库。CodeIgniter 通过最小化你需要的代码量,让你把更多的精力放到项目的创造性开发上。优势:CodeIgniter是免费的,通过MIT开源许可协议授权,可以任意使...

2020-03-04 11:59:35 637

原创 使用http与https协议建立连接的过程

http协议: 是互联网上应用最为广泛的网络协议,是客户端和服务器端请求和应答的标准,是一个从www(万维网)服务器传输超文本到本地浏览器的传输协议,能够使得网络传输更加高效。https协议: 是以安全为目标的http通道,简单讲就是http的安全版本。http通过与ssl加密协议结合实现更安全的传输(https)。http协议传输的数据是未加密的,是明文传输,所以使用http协议传输一些敏...

2020-01-14 17:10:19 1781

转载 Redis五种数据类型实现原理

本文内容转载自Redis详解(五)------ redis的五大数据类型实现原理对象的类型与编码: Redis使用的五大数据类型来表示键和值,每次在Redis数据库中创建一个键值对时,至少会创建两个对象,一个是键对象,一个是值对象,而Redis中的每个对象都是由 redisObject 结构来表示:typedef struct redisObject{ unsigned type:...

2020-01-13 14:53:15 301

原创 Redis存储数据类型的底层实现原理

https://www.cnblogs.com/ysocean/p/9080942.htmlRedis字符串(key-string)的底层实现:Redis虽然是用C语言写的,但却没有直接使用C语言的字符串,而是自己实现了一套字符串。目的就是为了提升速度,提升性能。Redis构建了一个叫做简单动态字符串(simple dynamic string),简称SDS。结构可如下图表示:struct s...

2020-01-13 11:06:15 2304

原创 Nginx与php-fpm之间的关系

在web开发中Nginx和php-fpm(下文简称fpm)之间的协同工作是进行动态网页开发的关键。首先我们先来了解一下cgi和fast-cgi。cgi是是web server和后台语言交互的协议,有了这个协议开发者可以使用任何后台语言处理web server的请求,动态生成内容返回。但是cgi协议有一个致命的缺陷就是每一个请求都会执行一次fork创建一个子进程,子进程通过加载配置文件、初...

2020-01-09 11:22:57 1125

原创 非关系型数据库Redis

Redis:Redis是一款开源的,高性能的key-value非关系型数据库软件。特点:支持数据持久化,可将数据持久化到硬盘,重启时可再次加载进行使用;丰富的数据结构存储类型,不仅支持string,还支持list、hash、set、zset;Redis支持数据的备份,即master-slave模式的数据备份;redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销使用Re...

2020-01-07 21:26:59 187

原创 innodb与myisam的区别

innodb介绍: MySQL默认的事务性存储引擎,MySQL中最重要的也是使用最为广泛的存储引擎,它被设计为大量的短期事务,短期事务大部分前提下都是被正确提交的,很少被回滚。innodb的性能与自动崩溃恢复的特性,使得它在非事务存储需求中也很受欢迎,除非有非常特别的原因要使用其它存储引擎,否则应该优先考虑innodb存储引擎。myisam介绍: 在MySQL5.1及之前的版本,myisam是磨...

2020-01-07 15:31:51 96

原创 MySQL的Innodb和myisam储存引擎(持续更新)

MySQL存储引擎的问题一直在面试的中频繁出现,理解MySQL的存储引擎的工作原理有助于在使用MySQL的过程中对查询原理理解更加深刻。innodb:目前MySQL的默认存储引擎,也是使用最为广泛的存储引擎,特点:支持事务,支持外键,一致性非锁定读,行级锁的设定事务:一组原子性的操作,这组操作要么全部发生并完成,要么全部都不发生。事务把数据库从一种一致性状态转换为另一种一致性状态。...

2020-01-06 19:59:51 140

原创 初识Nginx反向代理与负载均衡

之前自己动手搭建了一下php运行环境,但当时搭建的比较懵,现在回顾一下搭建过程,给自己的知识坐下巩固。Nginx安装安装LNMP环境首先肯定是要去安装一个Linux系统,这里我在自己电脑上安装了VMware虚拟机,Linux系统安装的是Ubuntu的(这根据自己喜好,由于大学时期用的挺好,所以最先就想着安装Ubuntu了)PHP安装MySQL安装环境配置...

2020-01-06 15:44:37 262

原创 PHP运行原理之opcode

什么是opcode?opcode是PHP脚本编译后的中间语言(相似于Java语言的字节码–byte-code),是PHP引擎(Zend)执行的语言。PHP引擎在执行PHP脚本时会分为四步来进行:1、扫描、词法分析:将PHP代码转换为token(语言片段)2、语法分析:将token转换为简单而有意义的表达式3、编译:将所有表达式转换成opcodes4、执行:顺序执行(通常为由上至下)op...

2020-01-02 12:48:31 456

原创 HTML学习笔记

http://www.dooccn.com/php7/https://hulin.gitbook.io/design-patterns-by-php/第一阶段:网页入门学习目标:可满足企业基本的建站要求,可自由仿制任何网站页面,并解决浏览器兼容性、PC端与移动端兼容性问题。能够使用Javascript验证技术,无压力的胜任前端工程师职位。知识点:1)Html(掌握)html文本排版、表...

2019-12-30 14:52:01 146

原创 cgi、fast-cgi、php-cgi以及php-fpm之间的联系

之前就一直没弄明白cgi、fast-cgi、php-cgi和php-fpm他们之间的联系,现在来梳理一下。基本概念cgi:全称为Common Gateway Interface(公共网关接口),保证了从浏览器传递到PHP程序的数据的标准格式。简单来说就是规定了浏览器、前端服务器(比如nginx)以及PHP程序之间通信的数据格式,称之为通信接口协议。fsat-cgi:对cgi协议的改进,使得...

2019-12-23 19:20:33 170

原创 PHP运行原理

PHP简介:PHP是一种适用于web开发的动态脚本语言(网页快捷开发),是用纯C语言实现的。我们可以认为PHP就是一个用C语言实现包含大量组件的软件框架。更狭义一点可以认为是一个功能强大的UI框架。PHP的设计理念及特点多进程模型:PHP采用多进程模型,不同请求之间互不干涉,保证了一个请求挂掉不会对其它请求和服务造成影响。当然,PHP目前已支持多线程模型;弱类型语言:PHP是一门弱类型语言...

2019-12-23 13:59:16 186

原创 触发器基础知识

触发器:是mysql数据库对象之一,该对象与编程语言中的函数非常相似,都需要声明、执行等。但是其执行不是由程序调用,也不是由手工启动,而是由事件来触发激活从而实现执行。为什么要使用数据库对象触发器?这是因为当我们在学生表中拥有学生名字字段、学生总数字段等,每当添加一条关于学生的记录时,学生的总数就必须发生改变;其次,在顾客信息表中拥有顾客名字字段、顾客电话号码字段、顾客地址缩写字段等...

2018-10-31 20:14:44 443

原创 mysql中的视图

视图:为了提高复杂SQL语句的复用性和表操作的安全性,在具体操作表前,有时候要求操作者只能操作部分字段,而不是全部字段,mysql数据库管理系统提供了视图特性。所谓视图,本质上是一张虚拟表,其内容与真实表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中已存储数据值得形式存在。行和列数据来自定义视图的查询所引用的基本表,并在具体引用视图时动态生成。视图使程序员只关心感兴趣的某...

2018-10-30 20:52:21 367

原创 二叉树的递归与非递归遍历

遍历时对树的一种基本运算,所为遍历二叉树就是按一定的规则和顺序走遍二叉树的所有节点,是每一个节点都被访问一次,有且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个节点转化为一个现行序列来表示。#include<iostream>#include<stack>using namespace std;typede

2018-10-29 21:56:28 463

原创 递归解决背包问题

问题描述:有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物品的方案,使得选中物品的总重量不超过指定的限制重量,但选中的物品总价值最大。揭解法描述:采用递归寻找物品的寻找方案。设前面已有多种选择方案,并保留其中总价值最大的方案与一个数组option[]中,该方案的总价值存于变量maxval中,当前正在考虑新方案,其物品选择情况存于数组cop[]中。假设当前方案已经考虑了前i-1件物品,...

2018-10-29 11:50:32 1573

原创 索引的操作

索引:数据库对象索引其实与书的目录非常类似,主要是为了提高从表中检索数据的速度和保证字段的唯一性。由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个字段或多个字段生成的键组成,这些键存储在数据结构(B-树或哈希表)中,通过mysql可以快速有效的查找与键值相关的字段。根据索引的存储类型,可以将索引分为B型树索引和哈希索引。创建索引的利弊:索引的创建有利有弊,创建索引可以提...

2018-10-25 22:23:38 299

原创 mysql数据库中表的操作

mysql数据库管理系统管理的是数据库中的库,而在库中存在着许多的表结构,表是包含数据库中所有数据的数据库对象。数据在表中的组织方式与在电子表格中相似,都是按行和裂的形式组织的。其中每一行代表一条唯一的记录,每一列代表记录中的一个字段。组织形式如下:表中的数据库对象包含列、索引和触发器。列:也称属性列,在具体创建表时必须指定列的名字和数据类型。索引:是指根据指定数据库表列建立起来...

2018-10-24 21:01:33 376

原创 递归法的应用:求解汉诺塔问题

题目描述:汉诺塔问题是一个经典的问题,其来源据说在19世纪末欧洲的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆自上而下、由小到大顺序串着64个圆盘构成的塔,游戏的目的是将左边A杆上的圆盘借助最右边的C杆,全部移动到中间的B杆上,条件是一次仅能移动一个盘,且不允许大盘放在小盘上面,问最少需要移动多少次。解法描述:我们可知限制条件为:一次只能移动一个盘,且不允许大盘放在小盘上面。...

2018-10-24 18:35:10 1947

原创 mysql数据库的库操作和存储引擎的介绍

数据库:存储数据库对象的容器,在mysql软件中可分为系统数据库(安装mysql后系统存放一些相关信息的)和用户数据库(用户根据实际需求创建的数据库,我们操作的也基本都是用户数据库)。对于数据库来说它有如下几种操作:查看数据库信息:SHOW DATABASES;查看当前管理的数据库 —>show databases;创建数据库:CREATE DATABASE database_n...

2018-10-23 21:18:48 190

原创 初识mysql数据库管理系統

随着网络技术的发展,计算机软/硬件技术的进步,现在的计算机可以管理规模巨大的数据库,这时,计算机如果还在使用文件系统来管理数据,则远远不能满足当今的各种应用需求,于是就出现了数据库技术,特别是关系型数据库。该阶段就是所谓的数据库系统阶段,该阶段的特点如下:数据实现结构化数据实现共享性数据独立性数据粒度小数据库(DB):是指长期保存在计算机的存储设备上,按照一定规则组织起来可以...

2018-10-23 11:51:44 337

原创 递归法的应用:求解斐波那契数列和数字的组合问题

递归:是指函数、过程、子程序在运行过程中直接或间接调用自身而产生的重入现象。采用递归编写程序能是程序变的见解和清晰。递归的用法一般为:定义是递归的:有许多数学公式、树、数列等的定义是递归的。数据结构是递归的:单链表就是一种递归的数据结构。问题的求解方法是递归的:有些问题的求解方法是递归的,典型的有Hanoi塔问题求解。但递归也有缺点,该算法解题的运算效率低,在递归调用过程中系统为...

2018-10-23 10:41:30 834

原创 解析C++隐藏与覆盖

在学习C++的继承与多态过程中我们接触到了隐藏与覆盖的概念,那么隐藏和覆盖分别做了些什么?在C++的继承中我们知道派生类可以继承基类的成员变量和成员函数,那么当派生类继承基类的成员变量和成员函数时自己也有同名的成员变量和同名且同参数列表的成员函数时是如何处理的呢?遇到这类情况C++的处理方式为隐藏和覆盖,下面就来介绍隐藏和覆盖。隐藏派生类将继承的基类的同名的成员变量和成员方法隐...

2018-08-28 18:55:10 8928 3

原创 多态实现的机制

什么是多态?多态是C++编程时的一种特性,多态性即是对一个接口的多种实现。多态可以分为静多态和动多态。所谓静多态就好比函数重载、模板,静多态是在函数编译阶段就决定调用机制,即在编译连接阶段就将函数的入口地址给出。而动多态是在程序运行的时候才决定调用机制。下面我们主要来讨论动多态。首先来了解一些多态的基本知识:在类中用virtual关键字声明的函数叫做虚函数。存在虚函数的类都有一...

2018-08-28 10:47:35 1992

原创 排序算法(四)归并排序

算法描述:通过将乱序的数据划分为某一长度的归并段,并使得归并段中的数据有序,然后在对归并段进行扩充,最后合并为一个有序的归并段。归并的核心思想运用的是分治法的思想,分的思想是将原始数据划分为若干个段,治的思想是分别对各个段进行排序。递归进行,直至整个数据合并为一个段。这里实现的是二路归并,下面是二路归并实现的图解: 由图所示,采用分治法很容易就将乱序的数据排序好,而且归并排序的最好、最...

2018-08-11 18:05:20 472

原创 排序算法(三)堆排序

算法描述:要理解堆排序首先我们先来认识一下堆。堆其实就是一颗完全二叉树,而堆又可以分为大根堆和小根堆。所谓大根堆就是双亲节点大于左右孩子节点的完全二叉树;相反,小根堆就是双亲节点小于左右孩子节点的完全二叉树。而堆排序就是利用了堆的这种特性来将乱序的数据进行排序的。首先在进行堆排序的时候我们先根据乱序的数据将堆建成。在我们已知根节点的元素下标 i,则可知其左孩子为 i+1,右孩子为 i+2,当...

2018-08-10 00:03:21 173

原创 排序算法(二)快速排序(递归与非递归实现)

快速排序算法描述:快速排序的实现原理是在待排序的数据中取出一个数作为键值,比较序列数据与其的大小,大于该键值的数据放在该键值右边,小于的放在左边。完成后再对键值两边的序列递归上述操作,这样经过若干步后数据就排序好了。过程如下图:如上描述的我们可以将快速排序分为如下几个步骤:先从数列中取出一个数作为基准数。分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左...

2018-08-08 23:26:20 4989 3

原创 排序算法(一)直接插入与希尔排序

算法描述:顾名思义,直接插入排序就是将待插入的数据插入到该数据之前的有序序列的正确位置处,使得序列依然有序的排序算法。当数据有序且不需要移动是时间复杂度为O(n),当为逆序时,每次插入都需要移动数据,效率最差,则时间复杂度为O(n^2)。在插入过程中,需要用一个临时的辅助空间来保存待插入的数据,所以该算法的平均时间复杂度为O(n^2),空间复杂度为O(1)。另外,由于数据是一个一个逐个插入,所以这...

2018-08-08 16:21:14 238

转载 C/C++编程mysql接口大全

做C++ 开发时,使用MySQL 数据库的时候 难免 会发生不知道数据库的接口的问题 下面是mysql数据库的一些接口mysql_affected_rows() 返回被最新的UPDATE, DELETE或INSERT查询影响的行数。mysql_close() 关闭一个服务器连接。mysql_connect() 连接一个MySQL服务器。该函数不推...

2018-08-04 12:12:38 1017

原创 智能指针的实现原理及使用

C/C++的内存管理比较繁琐,在使用C++编程时经常从堆上申请内存(new),当使用完毕后我们需要将申请的内存归还(delete)。一般情况下我们申请一次就得释放一次,即new多少内存就delete多少。所以在C++中new和delete是成对出现的。但是当我们申请(new)了一部分内存而在释放(delete)之前程序返回或没有执行到delete处程序抛出异常结束了,那么我们申请的内存就无法归还给...

2018-08-03 18:39:03 545

转载 浅谈malloc和new及他们的区别

malloc()函数malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。void *malloc(...

2018-08-03 01:09:35 15149 2

原创 const关键字作用

const关键字的作用可以分为以下几类:const与普通内置类型结合、自定义类型结合const与指针/引用的结合const与函数参数的结合const与函数返回值的结合const修饰类的成员函数const和内置类型、自定义类型的结合const可以和char、int、double、float、long、long long相结合,也可以和自定义类型class、struct相结合...

2018-08-02 10:32:46 676

原创 C\C++static关键字的用法总结

static关键字的作用主要起隐藏作用static关键字在C\C++中都可以修饰内置类型变量、函数static修饰内置类型变量为静态变量:static修饰的内置类型变量分为静态全局变量和静态局部变量,静态变量内存分配在 .data段,生成的符号为local类型的符号,在链接阶段进行符号解析时不做处理。静态变量只初始化一次,未初始化的静态变量会默认初始化为0。静态全局变量只在本文件可见,...

2018-08-02 00:54:59 10779

原创 C语言中不同类型变量的解读

C语言中变量分为四类,分别是 auto 自动变量tatic 静态存贮分配变量(又分为内部静态和外部静态)extern 全局变量(用于外部变量说明)register 寄存器变量(分配在硬件寄存器中)四大类,所有变量必须先说明(定义),后使用。自动变量(局部变量)局部变量:在一个函数开头或段开头处说明的变量,它有几个特征:作用域为定义它的函数编译器不会对自...

2018-07-20 23:17:23 2245

原创 类和对象基础知识

首先我们来了解一下OOP(面向对象)思想的最重要的特性:对象和类封装和数据隐藏继承多态本文介绍对象和类,在我们初学C++语言时有关对象和类的理解是相对模糊的(我也是过度了一段时间才理解过来)。类是什么?C++中的类是一种将抽象转换为用户定义类型的C++工具,它将数据表示和操作数据的方法组合成一个整洁的包,通过class关键字来定义一个类。在类中的数据类型被分为三种形式:...

2018-07-19 20:40:24 146

原创 解析C语言中常用的格式化输入、输出函数

fprintf(格式化输出数据至文件) 这个函数的功能类似于文件操作函数 fwrite();通过一个文件描述符将数据写入该文件描述符所指向的文件中。函数定义:int fprintf(FILE * stream, const char * format,…….);函数说明 :fprintf()会根据参数format字符串来转换并格式化数据,然后将结果输出到参数stream指定...

2018-07-18 12:53:00 7602

沙拉查词-聚合词典划词翻译_v7.5.4.crx

Saladict 沙拉查词 鼠标中键呼出 整合了有道翻译、百度翻译、必应翻译、腾讯翻译君、 Google 翻译和彩云小译等,自动发音,可配置词典。 说明文档:https://github.com/crimx/ext-saladict/wiki 设置快捷键:chrome://extensions/shortcuts 两种安装方式: 1):直接将文件拖入chrome浏览器扩展 2):若上述方式安装失败,则将文件后缀名改为 .rar 文件,解压后在chrome扩展页处选择 加载以解压的扩展程序 选中解压后的文件进行安装

2020-03-12

空空如也

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

TA关注的人

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