LXY的博客

私信 关注
阳光丿洒脱
码龄2年

死亡不是终点,遗忘才是。

  • 148,651
    被访问量
  • 261
    原创文章
  • 21,145
    作者排名
  • 80
    粉丝数量
  • 于 2018-09-11 加入CSDN
获得成就
  • 获得124次点赞
  • 内容获得30次评论
  • 获得491次收藏
荣誉勋章
兴趣领域
  • #算法
    #回归#排序算法
TA的专栏
  • iOS基础
    1篇
  • 算法
    9篇
  • 一些题
    29篇
  • 软件工程
    12篇
  • c++中的重点问题
    41篇
  • Linux
    42篇
  • c++学习之路
    90篇
  • 一些小项目
    12篇
  • 设计模式
    7篇
  • #计算机网络 网络编程
    15篇
  • 系统编程
    22篇
  • 二叉树和树
    20篇
  • 链表
    13篇
  • C语言
    6篇
  • 数据结构与算法
    38篇
  • 数据库
    7篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

OC中的基本容器和基本数据类型

NSString与C++中String类的功能很像,NSString是OC中存储字符串类型的一种容器NSString 的实例的创建动态方法创建NSSting实例的创建有很多种方式直接赋值一个字符串,此时字符串为常量字符串分配空间再进行初始化,此时还没有赋值默认为nil,需要对其进行赋值操作分配空间时进行有参数的构造用c语言格式字符串对NSString进行初始化带有格式化参数对NSString进行赋值操作//这中方式创建是常量字符串 NSString *str1 = @"A S
原创
30阅读
0评论
0点赞
发布博客于 4 月前

OC中的类

OC中类OC中类的定义在Xcode中创建一个新的类,会自动给你生成两个文件一个是.h另外一个是.m文件,你新创建的类默认继承了NSObject类,因为有一些方法都需要基类中的方法。比如alloc分配内存OC中用来描述类的使用@interface 类名:父类来进行定义然后用@end来定义类的结束@interface NsFirst : NSObject{ int _age; int _no;}- (void )setAge:(int)age;-(int)getAge;-(voi
原创
26阅读
0评论
0点赞
发布博客于 4 月前

sql语句的经典练习

表结构–1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号 –3.教师表 Teacher(t_id,t_name) –教师编号,教师姓名 –4.成绩表 Score(s_id,c_id,s_score) –学生编号,课程编号,分数2、测试数据--建表--学生表CREATE TABLE `Student`(
转载
59阅读
0评论
0点赞
发布博客于 6 月前
debian无法使用sudo
发布Blink于 8 月前

Mysql大表优化方案

当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNEDVARCHAR的长度只分配
转载
172阅读
0评论
1点赞
发布博客于 8 月前

git的用法

git远程HelloWorld项目仓库,代码版本:master主干分支git bash:本地客户端下载####git clone 做的事情?通过git clone ssh远程仓库地址就可以将远程仓库代码拉到本地有两个东西自动创建,远程仓库名称origin,这个名字是上传时候用的名字,这个名字可以更改;在git bash下输入ls -a 有一个隐藏文件夹.git/,在.git/config文件中remote中,被""引起来的就是远程仓库名,可以进行一个更改本地仓库,本地生成一个默认的主干分支m
原创
93阅读
0评论
0点赞
发布博客于 8 月前
套接字编程---2(TCP套接字编程的流程,TCP套接字编程中的接口函数,TCP套接字的实现,TCP套接字出现的问题,TCP套接字多进程版本,TCP套接字多线程版本)
发布Blink于 8 月前

质数相关问题

试除法判定质数题目描述给定n个正整数ai,判定每个数是否是质数。输入格式第一行包含整数n。接下来n行,每行包含一个正整数ai。输出格式共n行,其中第 i 行输出第 i 个正整数ai是否为质数,是则输出“Yes”,否则输出“No”。数据范围1≤n≤100,1≤ai≤2∗109输入样例:226输出样例:YesNo代码#include<iostream>using namespace std;bool is_prime(int x){ if(x
原创
131阅读
0评论
0点赞
发布博客于 9 月前

架构的演变

基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍。1.什么是分布式?系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上。2.什么是高可用?系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性。3.什么是集群?一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务,这个整体称为集群。如Zookeeper中的
转载
108阅读
0评论
0点赞
发布博客于 9 月前

Xshell链接不上云服务器的解决方案

1.ssh拒绝请求https://www.cnblogs.com/fh-fendou/articles/9938794.html
转载
262阅读
0评论
0点赞
发布博客于 10 月前

单调栈

题目描述给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。输入格式第一行包含整数N,表示数列长度。第二行包含N个整数,表示整数数列。输出格式共一行,包含N个整数,其中第i个数表示第i个数的左边第一个比它小的数,如果不存在则输出-1。数据范围1≤N≤1051≤数列中元素≤109输入样例:53 4 2 7 5输出样例:-1 3 -1 2 2...
原创
92阅读
0评论
0点赞
发布博客于 10 月前

二进制中1的个数

题目描述给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。输入格式第一行包含整数n。第二行包含n个整数,表示整个数列。输出格式共一行,包含n个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中1的个数。数据范围1≤n≤100000,0≤数列中元素的值≤109输入样例:51 2 3 4 5输出样例:1 1 2 1 2解题思路方法1以10...
原创
113阅读
0评论
0点赞
发布博客于 10 月前

数组元素的目标和

题目描述给定两个升序排序的有序数组A和B,以及一个目标值x。数组下标从0开始。请你求出满足A[i] + B[j] = x的数对(i, j)。数据保证有唯一解。输入格式第一行包含三个整数n,m,x,分别表示A的长度,B的长度以及目标值x。第二行包含n个整数,表示数组A。第三行包含m个整数,表示数组B。输出格式共一行,包含两个整数 i 和 j。数据范围数组长度不超过100000。...
原创
111阅读
0评论
0点赞
发布博客于 10 月前

最长连续不重复子序列

题目描述给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0~100000范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复数字的连续子序列的长度。数据范围1≤n≤100000输入样例:51 2 2 3 5输出样例:3解题思路代码实现...
原创
194阅读
0评论
0点赞
发布博客于 10 月前

差分矩阵

题目描述输入一个n行m列的整数矩阵,再输入q个操作,每个操作包含五个整数x1, y1, x2, y2, c,其中(x1, y1)和(x2, y2)表示一个子矩阵的左上角坐标和右下角坐标。每个操作都要将选中的子矩阵中的每个元素的值加上c。请你将进行完所有操作后的矩阵输出输入格式第一行包含整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含5个整数x1, y1...
原创
372阅读
0评论
0点赞
发布博客于 10 月前

差分

题目描述输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数序列。接下来m行,每行包含三个整数l,r,c,表示一个操作。输出格式共一行,包含n个整数,表示最终序列。数据范围1≤n,m≤100000,1≤l≤...
原创
115阅读
0评论
0点赞
发布博客于 10 月前

子矩阵的和

题目描述输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1, y1, x2, y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含四个整数x1, y1, x2, y2,表示一组询问。输出格式共q行,每行输出一个询问的结果。数据范围...
原创
184阅读
0评论
0点赞
发布博客于 10 月前

前缀和

前缀和输入一个长度为n的整数序列。接下来再输入m个询问,每个询问输入一对l, r。对于每个询问,输出原序列中从第l个数到第r个数的和。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数数列。接下来m行,每行包含两个整数l和r,表示一个询问的区间范围。输出格式共m行,每行输出一个询问的结果。数据范围1≤l≤r≤n,1≤n,m≤100000,−1000≤数列中元素...
原创
47阅读
0评论
0点赞
发布博客于 10 月前

linux_kernel_2-6-11-12_comment.tar.bz2

Linux注释内核
bz2
发布资源于 11 月前

Linux总结.xmind

菲菲常常详详细细的Linux总结,面试常考点!
xmind
发布资源于 1 年前
详解Linux下通过yum安装Mariadb/MySQL数据库(腾讯云也适用)
发布Blink于 1 年前

文件压缩(基于LZ77的压缩)

LZ77压缩原理初始LZ77LZ77是基于字节的通用压缩算法,它的原理就是将源文件中的重复字节(即在前文中出现的重复字节)使用(offset,length,nextchar)的三元组进行替换这里的长度–offset,距离—length,先行缓冲匹配串的下一个字符总共三个字节初始LZ77的缺陷只是距离按照一个字节的长度,那么只能在先行缓冲区找256个以内的字符,所以压缩率不是很高改进...
原创
218阅读
0评论
1点赞
发布博客于 1 年前

LeetCode【13--罗马数字转整数】LeetCode【14--最长的公共前缀】

罗马数字转整数题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的...
原创
329阅读
0评论
0点赞
发布博客于 1 年前

LeetCode【11--盛水最多的容器】LeetCode【12 -- 整数转罗马数字】

盛水最多的容器题目描述给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。解题思路本题的意思是,下标之差与数组所对应的下标的值之和最大所以,一个从前,一个从后,选择两个下标所对应的值最小的,...
原创
395阅读
0评论
0点赞
发布博客于 1 年前

LeetCode【9-- 回文数】LeetCode【10 --正则表达式的匹配】

回文数题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解题思路判断该数的逆序数是不是和原数相同代码实现class Solution {public: bool isPalindrome(int x) { if(x<0) return false; long num ...
原创
114阅读
0评论
0点赞
发布博客于 1 年前

LeetCode【7--整数反转】 LeetCode【8--字符串转整数】

整数反转题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。解题思路x%10 取一位,x/10下一位,注意越界,代码实现class Solution {public: int reverse(int x) { int sum = 0; while(x) { ...
原创
64阅读
0评论
0点赞
发布博客于 1 年前

LeetCode【5--最长的回文子串】 LeetCode【6--Z字形变换】

最长的回文子串题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。解题思路可以跟无重复的最长子串一样,用一个滑动窗口,只不过这个窗口的右边界往右,左边界每回要从右边界的下标往左。还需要一个二维数组记录当前窗口中记录的字符串是不是回文串再需要一个变量记录回文串的长度。比较出最大的回文串例如:baccab首先定义右边界right,左边界l...
原创
73阅读
0评论
0点赞
发布博客于 1 年前

LeetCode【3--无重复的最长字串】 LeetCode【4--有序数组中的中位数】

无重复的最长字串题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。解题思路看到这道题,其实就两个步骤,遍历字符串,记录当前字符有没有重复。重复一般解决就是哈希,这里用个数组表示。这里找最长的字串,就是一个滑动窗口,我们在这里用两个下标表示,一个为左边界,一个为右边界,初始值left = 0,right = -1;滑动窗口的滑动就是,右边界扩大,左边界缩小拿...
原创
85阅读
0评论
0点赞
发布博客于 1 年前

线程池的实现

什么是线程池一种线程的使用模式,线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。什么地方可以用到线程池任务短,但数量大,例如:网页请求这样的任务,使用线程池非常合适对性能要求苛刻,要求服务器迅速响应客户请求接受突发性的大...
原创
54阅读
0评论
0点赞
发布博客于 1 年前

LeetCode【1--两数之和】 LeetCode【2--两数相加】

两数之和题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。解题思路直接两重循环遍历,无脑代码实现class Solution {public: vector<int> twoSum(vector<...
原创
61阅读
0评论
0点赞
发布博客于 1 年前

C++总结.xmind

非常详细的C++思维导图,只要把上面的知识点记住,稍微深入即可达到你想达到的程度,非常详细---
xmind
发布资源于 1 年前

【剑指offer】_19 滑动窗口中的最大值

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5...
原创
43阅读
0评论
0点赞
发布博客于 1 年前

【剑指offer】_18 数据流中的中位数

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解题思路一般数据流我们用数组来表示,要得到中位数有很多种方法,这里介绍一种时间复杂度较小的方法,用C++...
原创
67阅读
0评论
1点赞
发布博客于 1 年前

【剑指offer】_17正则表达式的匹配

题目描述请实现一个函数用来匹配包括’.‘和'*'的正则表达式。模式中的字符’.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配解题思路就是分两种情况,看表达式的下一个字符是不是'*'pattern下一个字符不为‘...
原创
39阅读
0评论
0点赞
发布博客于 1 年前

【剑指offer】_16 构建乘积数组

题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。解题思路设有数组大小为5。对于第一个for循环第一步:b[0] = 1;第二步:b[1] = b[0] * a[0] = a[0]第三步:b[2] = b[1] * a[1] = a[...
原创
44阅读
0评论
0点赞
发布博客于 1 年前

【剑指offer】_15数组中重复的数字

题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解题思路扫描数组{2,3,1,0,2,5,3}下标为0开始,如果当前位置的数不等于它的下标则与下表为当前元素的值进行交换...
原创
75阅读
0评论
0点赞
发布博客于 1 年前

详解STL中的空间配置器(SGI版本)

空间配置器1.什么是空间配置器为各个容器高效的管理空间(空间的申请与回收)的2.为什么需要空间配置器各种容器----->可以存放元素---->底层需要空间new 申请空间operator new ---->malloc调用构造函数------完成对象的构造动态内存管理总结前面的容器中,每次开辟空间都用的是new,但是用new有一些不好的地方空间申请与释放...
原创
125阅读
0评论
0点赞
发布博客于 1 年前

文件压缩(Huaffman树的概念及其实现)

什么是压缩想办法让源文件变得更小并能还原。为什么要进行文件压缩文件太大,节省空间提高数据再网络上传输的效率对数据有保护作用—加密文件压缩的分类无损压缩源文件被压缩后,通过解压缩能够还原成和源文件完全相同的格式有损压缩解压缩之后不能将其还原成与源文件完全相同的格式–解压缩之后的文件再识别其内容时基本没有影响GZIP压缩LZ77变形:原理将重复出现得语句用...
原创
121阅读
0评论
0点赞
发布博客于 1 年前

C++中的lambda表达式和线程库

98中的一个例子如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法#include <algorithm>#include <functional>int main(){ int array[] = {4,1,8,5,3,7,0,9,2,6}; // 默认按照小于比较,排出来结果是升序 std::sort(array, array+siz...
原创
211阅读
0评论
0点赞
发布博客于 1 年前

详解C++中右值引用

98中的引用概念特性引用的使用场景三种传参方式效率的比较探索:引用的底层实现方式----->指针T&------>T* constconst T&---->const T*const引用和指针的区别引用的总结11中的右值引用为什么要有右值引用为了提高程序运行效率,C++11中引入了右值引用,右值引用也是别名,但其只能对右值引用i...
原创
705阅读
0评论
3点赞
发布博客于 1 年前

C++11新特性的总结

C++11新特性auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11)C++动态内存管理序列式容器 array forward_list;继承和多态:final overridedelete:不生成默认的成员函数default:强制编译器生成默认的成员函数智能指针:unique_ptr,shared_ptr,weak_ptr哈希结...
原创
76阅读
0评论
0点赞
发布博客于 1 年前

海量数据处理(位图和布隆过滤器)

哈希切割给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址? 与上题条件相同,如何找到top K的IP?如何直接用Linux系统命令实现解决思路找到出现次数最多的IP地址要找到前TopK的IP地址,就是要统计每个IP地址出现多少次分割大文件:如果能将相同IP地址放到同一个文件中哈希分割: 从源文件中获取一个IP地址---->I...
原创
125阅读
0评论
0点赞
发布博客于 1 年前

【剑指offer】_14 不用加减乘除做加法

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解题思路首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。同样我们可以用三步走的方式计算二进制值相...
原创
28阅读
0评论
0点赞
发布博客于 1 年前

【剑指offer】_13 圆圈中最后的数

题目描述年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个...
原创
34阅读
0评论
0点赞
发布博客于 1 年前

详解Linux下通过yum安装Mariadb/MySQL数据库(腾讯云也适用)

1. 安装Mariadb安装命令yum -y install mariadb mariadb-server安装完成MariaDB,首先启动MariaDBsystemctl start mariadb设置开机启动systemctl enable mariadbMariaDB的相关简单配置此命令进入到配置相关界面mysql_secure_installation...
原创
131阅读
0评论
0点赞
发布博客于 1 年前

【剑指offer】_12 数组中的逆序对

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007解题思路剑指offer的解法看到这个题目,我们的第一反应是顺序扫描整个数组。每扫描到一个数组的时候,逐个比较该数字和它后面的数字的大小。如果后面的数字比它小,则这两个数字就组成了一个...
原创
29阅读
0评论
0点赞
发布博客于 1 年前

【剑指offer】_11整数中1出现的次数

题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。解题思路主要思路:设定整数点(如1、10、100等等)作为位置点i(对...
原创
45阅读
2评论
0点赞
发布博客于 1 年前

【剑指offer】_10二叉树和为某一路径值

题目描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。解题思路要求一路径的和,那么必然终止条件为叶子结点,从根结点出发,从左往右,每条路径的和都与给定的值比较,自然能求出。但往往二叉树的题,都会用到递归,本身是二叉树,那么子树必定为二叉树,如果找到规律??我们可以这样想,递归一次,旧调用...
原创
38阅读
0评论
0点赞
发布博客于 2 年前

【剑指offer】_09二叉搜索树的后序遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路比如下面的这棵二叉搜索树它的后序遍历为0214369875;我们设当前根节点为root;第一次root=5我们可以看出以3和6中间为分割线,左边为5的左子树,右边为5的右子树,数组最后一个数为5,为根结点。所以 {0,2,1,4,...
原创
28阅读
0评论
0点赞
发布博客于 2 年前
软件工程---1.概述
发布Blink于 2 年前

【剑指offer】_08.数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0解题思路首先一个数的任意次方,这个数有可能是负数和正数和零,然后次方也有可能是负数和正数和零当这个数是零时,0的任何次方就是0。当这个数是正数时,分情况次方为零,此时答案为1次方为负数,算出来的结果要用1除以。次方为正数...
原创
28阅读
0评论
0点赞
发布博客于 2 年前

软件工程---18.面向服务的软件工程

什么是Web服务一个松耦合、可复用的软件构件,封装了离散的功能,该功能是分布式的并且可以被程序访问。Web服务是通过标准互联网和基于XML的协议被访问的服务。服务和软件构件之间的一个重要的区别是服务应该总是独立的和松耦合的Web 服务没有“请求”接口RESTful服务RESTful的定义REST是一种基于从服务器向客户端传输可识别资源的体系结构风格。这种风格作为一个在整体位于网络...
原创
284阅读
0评论
0点赞
发布博客于 2 年前

软件工程---17.分布式软件工程

分布式系统的5个优点资源共享开放性并发性可伸缩性容错性云计算的三种服务基础设施即服务IaaS、平台即服务PaaS、软件即服务SaaS分布系统的6个问题透明性开放性可伸缩性信息安全性服务质量失效管理可伸缩性(重点)系统的可伸缩性反映了系统能在外部需求增加的情况下提供高质量的服务的能力。可伸缩性的三个维度是规模、分布和可管理性。规模。系统应该增加更...
原创
275阅读
0评论
0点赞
发布博客于 2 年前

软件工程---16.基于构件的软件工程

CBSECBSE是定义、实现、集成或组装松散耦合的独立构件成为系统的过程。基于构件的软件工程的要素有:完全由接口进行规格说明的独立构件。构件标准使构件集成变得更为容易。中间件为构件集成提供软件支持。开发过程适合基于构件的软件工程。CBSE的设计原则构件是独立的,因此它们不会影响彼此的操作。构件通过良好定义的接口进行交互。构件基础设施提供一系列可用在应用系统中的标准服务。...
原创
249阅读
0评论
0点赞
发布博客于 2 年前

软件工程---15.软件复用

复用的图(牢记)软件复用的好处
原创
206阅读
0评论
0点赞
发布博客于 2 年前
软件工程---2.软件过程
发布Blink于 2 年前

软件工程---08.软件测试

测试测试的正向思维(确认测试)测试的逆向思维(缺陷测试)测试是更广阔的软件确认和验证( Verification and Validation; V & V)过程的一部分。验证和确认并不相同,虽然它们经常被混淆。软件工程先驱之一Barry Boehm简洁地将二者之间的区别表达为(Boehm 1979 ):确认(verification):我们在以正确的方式构造产品吗?验证 (...
原创
41阅读
0评论
0点赞
发布博客于 2 年前

软件工程---07.设计与实现

软件设计和软件实现软件设计是一个创造性的活动,在此活动中需要基于客户需求识别软件构件及其关系。软件实现是将设计实现为一个程序的过程设计模式设计模式是从Christopher Alexander(Alexander 1979)所提出思想中派生出来的,他认为建筑设计中存在一定的共性模式,这些模式令人喜欢并且有效。结构/静态模型,使用静态类及其关系描述系统的静态结构。这个阶段需要描述的重...
原创
150阅读
0评论
0点赞
发布博客于 2 年前

【剑指offer】_07 矩形覆盖

题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?解题思路依旧是斐波那契数列2n的大矩形,和n个21的小矩形其中target*2为大矩阵的大小有以下几种情形:target <= 0 大矩形为<= 2*0,直接return 1;target = 1大矩形为2*1,只有一种摆放方法,retu...
原创
20阅读
0评论
0点赞
发布博客于 2 年前

【剑指offer】_06 变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路链接:https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387关于本题,前提是n个台阶会有一次n阶的跳法。分析如下:f(1) = 1f(2) = f(2-1) + f(2...
原创
26阅读
0评论
0点赞
发布博客于 2 年前

软件工程---6.体系结构设计

体系结构模型是什么?体系结构模型,该模型描述系统如何被组织为一组相互通信的构件体系结构分类**小体系结构关注单个程序的体系结构。**在这个层次上,我们关注单个的程序是如何补分解为构件的。大体系结构关注包括其他系统、程序和程序构件的复杂企业系统体系结构。非功能性需求影响最大对体系结构有显著影响的需求”的研究中确认了这一点, 他们发现非功能性需求对于系统体系结构的影响最大体系结构视图...
原创
934阅读
0评论
0点赞
发布博客于 2 年前

软件工程---5.系统建模

从不同视角对系统建模外部视角,上下文模型,对系统上下文或环境建模交互视角,交互模型(功能模型),对系统与参与者或系统内构件之间的交互建模结构视角,结构模型(静态模型),对系统的组成或系统处理的数据结构建模行为视图,行为模型(动态模型),对系统的动态行为以及系统如何响应事件进行建模UML同一建模语言UML动态图协作图顺序图状态图活动图UML静态图用例图类图对象...
原创
641阅读
0评论
1点赞
发布博客于 2 年前

软件工程---4.需求工程

需求工程定义找出、分析、文档化并且检查需求的过程被称为需求工程需求的两个描述层次用户需求,指高层的抽象需求。使用自然语言、图形描述需求。系统需求,指底层的详细需求。使用系统需求文档(有时被称为功能规格说明)应该精确定义要实现的需求。功能性需求:描述系统应该做什么。What非功能性需求:描述系统应该做得怎么样。How非功能性需求产品需求:这类需求刻画或约束软件的运行时行为...
原创
62阅读
0评论
0点赞
发布博客于 2 年前

软件工程---3.敏捷软件开发

敏捷软件开发极限编程(XP, Beck1999)Scrum方法(Schwaber and Beedle 2001)DSDM方法(Stapleton 2003)敏捷软件的开发宣言个体和交互胜过过程和工具可以工作的软件胜过面面俱到的文档客户合作胜过合同谈判响应变化胜过遵循计划开发实践敏捷方法没有独立的需求工程活动,而是将需求抽取与开发集成在一起。用“用户故事”(故事卡片...
原创
70阅读
0评论
0点赞
发布博客于 2 年前

软件工程---2.软件过程

三个模型瀑布模型增量模型集成和配置模型没有适用于所有不同类型软件开发的过程模型。瀑布模型需求定义系统和软件的设计实现与单元测试集成与系统测试运行与维护瀑布模型的特征从上一项活动中接受该项活动的工作成果(工作产品),作为输入。利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,作为输出传给下一项活动对该项活动实施的工作进行评审。若其工作得到确认,则继...
原创
90阅读
0评论
1点赞
发布博客于 2 年前

软件工程---1.概述

什么是软件工程软件工程是一项建模活动软件工程是一项解决问题活动软件工程是一项受事物基本原理指导的活动、什么是建模对系统抽象的表示,可以了解未知的系统和领域。系统太大、太小、太复杂或体验代价太高时,需要模型。应用域模型从用户角度去描述的系统解答域模型从开发者的角度去描述的系统,评估具体实现时不同的方案面向对象的方法将应用域建模和解答域建模合二为一,面向对象方法的思想:...
原创
60阅读
0评论
0点赞
发布博客于 2 年前

哈希的概念及其操作

哈希概念顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O( Log2N),搜索的效率取决于搜索过程中元素的比较次数。理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够...
原创
70阅读
0评论
0点赞
发布博客于 2 年前

排序下---(冒泡排序,快速排序,快速排序优化,快速排序非递归,归并排序,计数排序)

交换类排序基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。冒泡排序冒泡排序的特性总结:冒泡排序是一种非常容易理解的排序时间复杂度:O(N^2)空间复杂度:O(1)稳定性:稳定代码实现void BublleSort(int*array, int size...
原创
51阅读
0评论
0点赞
发布博客于 2 年前

排序上---(排序概念,常见排序算法,直接插入,希尔排序,直接选择排序,堆排序)

排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中...
原创
87阅读
0评论
0点赞
发布博客于 2 年前

【剑指offer】_05 连续子数组最大和

题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列...
原创
30阅读
0评论
0点赞
发布博客于 2 年前

模拟实现STL中map和set容器

红黑树的迭代器//红黑树的迭代器template<class T>struct RBTreeIterator{ typedef RBTreeNode<T>Node; typedef RBTreeIterator<T> Self;public: RBTreeIterator(Node* pNode = nullptr) :_pNode(pNod...
原创
62阅读
0评论
0点赞
发布博客于 2 年前
私人博客定制
发布Blink于 2 年前

红黑树概念及其相关操作的实现

红黑树的概念红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过 对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。最长路径中结点的个数不会超过最短路径中结点个数的两倍红黑树的性质每个结点不是红色就是黑色根节点是黑色的如果一个节点是红色的,则它的两个孩子结点是黑色的对于...
原创
79阅读
0评论
0点赞
发布博客于 2 年前

c++中的异常处理

c语言处理错误的方式传统的错误处理机制终止程序,如assert,缺陷:用户难以接受。如发生内存错误。返回错误码,缺陷:需要程序员自己查找对应的错误。如系统的很多库接口函数都是通过把错误码放到errno中,表示错误其他方式c++中的异常处理异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。throw: 当问题出现时...
原创
44阅读
0评论
1点赞
发布博客于 2 年前

再谈c++中的继承

继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。class Person{public: void Print() { cout &l...
原创
54阅读
0评论
1点赞
发布博客于 2 年前

再谈c++中的多态

何为多态多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。多态的实现在继承的体系下基类中必须有虚函数(被virtual关键字修饰的成员函数),在派生类中必须要对基类中的虚函数进行重写对于虚函数的调用:必须使用基类的指针或者引用调用虚函数体现多态性在代码运行时,基类指针指向哪个类的对象,就调用哪个类的虚函数class Perso...
原创
41阅读
0评论
0点赞
发布博客于 2 年前

【剑指offer】_04 重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路用前序的顺序重建整个二叉树,先判断传进来参数是否合法,创建根结点,然后找到第一个根结点位置,遍历整个中序顺序,找到与前序序列第一个数相等的数的...
原创
21阅读
0评论
0点赞
发布博客于 2 年前

【剑指offer】_02替换空格

题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路首先我们先算出整个字符串的长度,还有总共多少个空格。因为空格只占一个字节,但是"%20"占两个字节,所以新的容量是原来字符串长度+空格数*2,然后把新的容量与给定的字符串总大小作比较,如果大于给定的大小,就说明给的用例出...
原创
17阅读
0评论
0点赞
发布博客于 2 年前

【剑指offer】_01 (二维数组中的查找)

题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路我们从右上角的那个数开始走,如果给定的数比当前数大,说明要找的数在当前列的下面,所以直接让行++,如果给定的数比当前数小,说明在当前数的右边,所以让列- -,一直循环,一直到数组越界条件...
原创
35阅读
0评论
0点赞
发布博客于 2 年前

复习Linux基础操作---权限操作

shell命令以及运行原理Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:将使用者的命令翻译给核...
原创
38阅读
0评论
0点赞
发布博客于 2 年前

201301 JAVA2~3级---走格子

请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。解答用递归来做,将右下角看做原点(0, 0),左上角看做坐标(m, n),下图所示:从(m, n)—>(0, 0)就分两步走:往右走一步:f(m, n - 1)—>(0, ...
原创
49阅读
0评论
0点赞
发布博客于 2 年前

复习Linux基本操作----常见指令

Linux基本操作ls(list):相当于windows上的文件资源管理器在Linux终端中(xshell中)不能ctrl+c/ctrl+v来进行复制粘贴。ctrl+insert复制shift+insert粘贴
原创
103阅读
0评论
0点赞
发布博客于 2 年前

c++中的IO流

c语言中的IO操作标准类型的输入输出:输入------>数据来源是通过键盘进行输入输出------>程序中的数据输出到控制台c语言中:scanf:输入printf:输出两个函数的相同点1 —格式串2 —不定参数两个函数的缺陷1 —用户要提供数据的格式—用户要记忆大量的格式串—而且容易出错2 —两个函数参数检测不严格getchar()put...
原创
51阅读
0评论
0点赞
发布博客于 2 年前

深入理解c++中的函数模板

非类型模板参数模板参数分类类型形参与非类型形参。类型形参:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。namespace bite{ template<class T, size_t N> class array { public: ...
原创
50阅读
0评论
0点赞
发布博客于 2 年前

初识c++中的函数模板

函数模板函数模板概念函数模板:编译器生成代码的一个规则。函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。函数模板格式//要让这个函数与类型无关//Add函数模板template<class T,typename s> //模板的参数列表//告诉编译器T是一种类型T Add(T left, T right){ r...
原创
35阅读
0评论
0点赞
发布博客于 2 年前

私人博客定制---服务器接口封装

实现服务器接口我们用一个http服务器作为底层,但是c++中并没有先成的http服务器,所以我在GitHub上找到一个牛人写的http服务器,拿来直接用,节省本项目开发的时间这是服务器的链接地址上面有详细的使用方法,本文就不再解释具体如何实现,就直接用该cpp-httplib这个库来进行开发https://github.com/yhirose/cpp-httplib.git实现新增博客...
原创
154阅读
0评论
0点赞
发布博客于 2 年前

私人博客定制----封装数据库接口

封装MySQLAPI我们先把初始化句柄和断开句柄进行一个封装 static MYSQL* MySQLInit(){ //1.初始化一个Mysql句柄建立连接 MYSQL* connect_fd = mysql_init(NULL); //2.和数据库建立连接 if (mysql_real_conne...
原创
111阅读
0评论
0点赞
发布博客于 2 年前

私人博客定制

项目背景可行性方面需求分析:详细设计:数据库设计博客管理API的设计标签相关API服务器端的实现对数据库操作进行封装对服务器操作进行封装客户端实现具体操作使用markdown具体实现测试项目效果展示维护完整代码项目背景 现在的时代信息越来越多,我们每时每刻都在学习和接受各种信息,我们要怎样保存这些信息...
原创
341阅读
0评论
0点赞
发布博客于 2 年前

c++实现日期类

实现我们可以很快知道,一个日期有年月日,我们可以很快的写出以下代码class Date{public: Date(int year, int month, int day) :_year(year) , _month(month) , _day(day) {}private: int _year; int _month; int _day;};但是我们这个日...
原创
48阅读
0评论
0点赞
发布博客于 2 年前

c++动态内存管理题目

malloc/free和new/delete的区别malloc/free和new/delete的共同点是:都是从堆上申请空间,并且需要用户手动释放。不同的地方是:malloc和free是函数,new和delete是操作符malloc申请的空间不会初始化,new可以初始化malloc申请空间时,需要手动计算空间大小并传递,new只需在其后跟上空间的类型即可malloc的返回值为void*...
原创
118阅读
0评论
0点赞
发布博客于 2 年前

详解malloc,calloc,realloc原理及其模拟实现

malloc原理malloc它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足 用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传 给用户,并将剩下的那块(如果有的话)返回到连接表上。调用free函数时,它将用户释放的内存块连接到空闲链上。到...
转载
440阅读
0评论
1点赞
发布博客于 2 年前

c++动态内存管理

c/c++内存分布 int globalVar = 1; static int staticGlobalVar = 1; void Test() { static int staticVar = 1; int localVar = 1; int num1[10] = {1, 2, 3, 4}; char char2[] = "abcd"; ...
原创
110阅读
0评论
0点赞
发布博客于 2 年前

模拟实现priority_queue优先级队列

优先级队列无参构造priority_queue() :c() {}区间构造区间构造需要用到迭代器,而迭代器每个容器的类型不一样,所以用模板给出,初始化列表,把用户给进来的元素空间起始位置,放到优先级队列中底层空间的位置,然后进行调整,把它调整成一个堆template<class Iterator> priority_queue(Iterator first, ...
原创
140阅读
0评论
0点赞
发布博客于 2 年前

c++中容器适配器

什么是容器适配器适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该中模式是将一个类的接口转换成客户希望的另外一个接口。stack模拟封装template<class T,class Container = deque<T>> class stack { public: stack() {} vo...
原创
162阅读
1评论
0点赞
发布博客于 2 年前

CentOS7关闭防火墙

firewalld的基本使用启动systemctl start firewalld 关闭systemctl stop firewalld 查看状态systemctl status firewalld 开机禁用systemctl disable firewalld 开机启用systemctl enable firewalldCentOS 7的服务管理启动一个服务...
转载
44阅读
0评论
0点赞
发布博客于 2 年前

详解优先级队列priority_queue(应用+模拟实现)

优先级队列的概念优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元 素)。优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特 定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。底层容器可以是任...
原创
285阅读
0评论
0点赞
发布博客于 2 年前

复习栈和队列,详解最小栈,栈的弹出压入序列,逆波兰表达式求值

栈和队列的概念栈:吃进去吐出来对列:吃进去拉出来数据结构中的栈和内存中的区别数据结构中的栈具有后进先出的特性,而内存中的栈是一个内存空间,只不过这个内存空间具与数据结构的栈具有相同的特性。栈和队列操作栈和队列基本操作栈操作栈中没有迭代器,因为不需要遍历元素。最小栈栈里面肯定有,push/pop/top操作,而且三个操作的时间复杂度是---->O(1)我们要添加一个操作...
原创
104阅读
0评论
0点赞
发布博客于 2 年前

vector和list容器有哪些区别

这个问题的本质还是在问顺序表和链表的区别底层结构不同vector容器list容器一段连续的空间带头结点的双向循环链表元素访问方式vector容器list容器支持随机访问—O(1)不支持随机访问—O(N)需要扩容不需要扩容任意位置插入元素----O(N)–搬移元素O(1)迭代器不同vector容器list容器...
原创
233阅读
0评论
0点赞
发布博客于 2 年前

详解list容器(应用+模拟实现)

list容器带头结点的双向循环链表list操作list容器的概念及其操作构造和销毁 list<int>L1; list<int>L2(10, 5); vector<int>v{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; list<int>L3(v.begin(), v.end()); list<int>...
原创
357阅读
0评论
0点赞
发布博客于 2 年前
如何在 Centos7 x86_64下将vim一键配置为一款强大的C++,IDE
发布Blink于 2 年前