自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分支算法的时间复杂度

记录一下表示将原问题分解成 a 个 规模大小为 N/b 的子问题,合并这 a 个子问题的代价是 Θ(N^K) (N^k 表示 N 的 k 次方)T(N)=aT(N/b)+Θ(N^K)T(N)的解有以下三种情况:T(N)=O(N(logab)) 当 a > bk 时T(N)=O(Nk log^N) 当 a = bk 时T(N)=O(Nk) 当 a &l...

2019-12-16 18:17:01 2549

原创 Mysql的四种隔离级别

**Read Uncommitted(读取未提交内容) **在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。存在的问题:脏读、不可重复读、幻读Read Committed(读取提交内容)这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。存在的...

2019-12-12 16:55:59 174

原创 linux下僵尸进程和孤儿进程

子进程是通过父进程创建的,子进程也可以继续创建子进程。父进程无法预测子进程到底什么时候结束,当一个子进程结束之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。僵尸进程 :子进程结束了,但是父进程没有调用wait()或者waitpid()取得子进程的终止状态,这个子进程将变成一个僵尸进程。利用命令ps,可以看到有标记为Z的进程就是僵尸进程。僵尸进程危害:...

2019-12-11 20:25:21 249

原创 c++ builder生成器模式

模式定义:生成器模式是为了解决将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不的表示的问题。对象的构建过程相对稳定。适用情况:1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2、当构造过程必须允许被构造的对象有不同的表示时。生成器模式有点类似于template method,都是某个过程的总体流程固定,具体每一步可变。生成器模式是对象的构建过程相对...

2019-12-11 10:57:34 219

原创 指针和引用的区别与相同点

指针和引用的区别本质:引用是别名,指针是地址指针在运行时可以改变所指向的值,而引用一旦与某个对象绑定后就不再改变。指针可以为空,引用不可以为空,引用在定义的时候必须初始化指针占用空间,应用不占用可以有const指针,但是没有const引用指针可以有多级,但是引用只能是一级”sizeof引用”得到的是所指向的变量(对象)的大小,而”sizeof指针”得到的是指针本身的大小;引用和指...

2019-12-09 11:17:21 576

原创 c++template method模板方法

模板方法一般在类库里面比较常见,类库里把实现某一功能需要的各个步骤逻辑实现好,调用者只需要按照需要重新修改某几步。框架是相对稳定的,变化隔离在客户程序。例如实现某一功能逻辑如下step1()step2()if (step()3)setp4()setp5()step2和step4不同用户有不同实现,其他步骤固定将上述逻辑用模板方法实现template_method_lib.h#i...

2019-12-06 21:42:17 355

原创 c++工厂模式

简单写了一个工厂模式在这种模式下,有新增的类时,FileAccessFasctory.h 和FileWork,cpp这两个文件是稳定的,不需要修改,只需要修改FileAccess.h和FileAccess.cpp,或者新增文件,这样就在业务逻辑中隔离变化;同时也可以实现增量编译,也不会影响业务代码的单元测试。FileAccessFasctory.h#ifndef _FILE_ACCESS_F...

2019-12-05 21:33:51 121

原创 c++组合模式

将内部数据结构与客户代码隔离,不论内部结构是什么样子,客户代码调用方式不变(invokeAll函数)component.h#ifndef _THREAD_POOL_H#define _THREAD_POOL_H#include <list>#include <string>using namespace std;class component{publ...

2019-12-04 23:59:19 114

原创 c++线程池

main.cpp#include"threadPool.h"#include<iostream>#include<cstdio>#include<stdlib.h>#include<unistd.h>using namespace std;class MyTask: public ITask{public: MyTask(...

2019-12-03 01:00:45 129

原创 c++ 静态函数与静态变量局部静态变量总结

静态成员变量在类中仅仅是声明,没有定义,所以要在类的外面定义,实际上是给静态成员变量分配内存。通过类名,对象,成员函数都可以访问静态成员变量。类的静态成员变量需要在类外分配内存空间。静态成员函数只能调用静态成员变量。成员函数可以调用静态成员变量和静态成员函数。类内局部静态变量所有对象共享一个,在编译时分配内存。#include <iostream>#include <...

2019-11-30 22:06:59 821

原创 leetcode:链表中环的入口结点

题目://给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。/*struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};*/思路:快慢指针,快指针每次前进两个长度,慢指针每次前进一个长度,若存在环,则一定会在环内相遇。假设起点到环入...

2019-08-16 14:28:29 653

原创 不用加减乘数实现加减法

#include "iostream"using namespace std;int Add(int a, int b){ while(b) { int tmp = (a & b) << 1; a = a ^ b; b = tmp; } return a;}int Subtractio...

2019-07-27 11:15:01 161

原创 linux查看cpu 内存 io 系统负载等

查看CPU使用情况的命令vmstat 5每5秒刷新一次,最右侧有CPU的占用率的数据toptop 然后按Shift+P,按照进程处理器占用率排序查看内存使用情况的命令free用free命令查看内存占用情况toptop 然后按Shift+M, 按照进程内存占用率排序查看磁盘i/oiostat用iostat查看磁盘/dev/sdc3的磁盘i/o情况,每两秒刷新一次...

2019-07-25 15:07:26 1448

原创 找出当前文件夹下大小排在前十的文件夹

du -sh * | sort -nr | head -n 10sort:-n : 按照字符串表示的数字值来排序-r :按照反序排列head :-n : 取出前多少行

2019-07-25 15:00:37 391

原创 c++单例模式

下面代码实现了三种常见的单例模式#include <iostream>#include "pthread.h"using namespace std;pthread_mutex_t g_single_lock;class Single{public: //函数内的局部静态变量在编译时已经分配空间,在第一次函数跑到这里时初始化,之后不再初始化 ...

2019-07-24 16:49:04 126

原创 剑指offer:数字在排序数组中出现次数

题目:统计数字在排序数组中出现的次数思路:二分查找找到位置,然后左右扩展代码:class Solution {public: int GetNumberOfK(vector<int> data ,int k) { if(data.empty() || data[0] > k || data[data.size()-1] < k) ...

2019-07-17 14:00:09 78

原创 剑指offer:两个链表的第一个公共结点

题目:输入两个链表,找出它们的第一个公共结点。思路:1、遍历一个链表并用map保存,然后再遍历另一个查找2、可以讲两个链表尾部相接,然后判断是否存在环,这个代码就不写了代码:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/c...

2019-07-17 13:53:01 79

原创 剑指offer:数组中的逆序对

剑指offer:题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007思路:复用归并排序,在合并排序时稍加修改代码:class Solution {public: int InversePairs(vector<int...

2019-07-17 11:41:54 101

原创 emplace_back和push_back区别以及移动构造函数

先说结论:结论 :1、emplace_back以参数列表的形式传入时,不论是否有移动构造函数,都是原地构造,只会调用一次构造函数2、emplace_back以左值对象的形式传入时,不论是否有移动构造函数,都是调用一次拷贝构造函数3、emplace_back以右值对象(例如move(左值对象),或者就是右值)的形式传入时a、有移动构造函数,调用一次移动构造b、没有移动构造函数,调用拷贝构...

2019-07-17 11:28:42 1556

原创 剑指offer:合并两个排序的链表

题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。代码:class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if (NULL == pHead1) { return pHead2; } if...

2019-07-15 17:31:11 68

原创 剑指offer:二叉树深度

题目:二叉树深度代码:class Solution {public: int TreeDepth(TreeNode* pRoot) { if(NULL == pRoot) { return 0; } int left = NULL != pRoot->left ? TreeDept...

2019-07-15 15:42:03 85

原创 leetcode:是否是平衡二叉树

题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路1:首先算出每个子树的深度并保存,然后判断代码1:class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { if(NULL == pRoot) { return true; ...

2019-07-15 09:58:27 94

原创 leetcode n皇后问题

题目1:The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.Given an integer n, return all distinct solutions to the n-queens puzzle.Ea...

2019-07-12 13:47:58 93

原创 linux利用iptables打开关闭端口

open:iptables -I INPUT -p tcp --dport 9000 -j ACCEPTiptables -I OUTPUT -p tcp --dport 9000 -j ACCEPTclose:iptables -I INPUT -p tcp --dport 9000 -j DROPiptables -I OUTPUT -p tcp --dport 9000 -j DR...

2019-07-09 11:17:37 637

原创 剑指offer:把二叉树打印成多行

题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。代码:class Solution {public: vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int> > res; if(NULL == pR...

2019-06-24 17:19:12 68

原创 剑指offer:二叉树的下一个结点

题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针思路:若存在右孩子,直接在右孩子中寻找,若不存在右孩子,向上寻找第一个为左孩子的父节点代码:class Solution {public: TreeLinkNode* GetNext(TreeLinkNode* pNode) { ...

2019-06-21 17:32:40 57

原创 剑指Offer:数组中只出现一次的数字

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字思路:1、两次for循环,O(n2)2、哈希map,O(N),但是有额外空间3、从头到尾一次异或数组中的每一个数字,那最终结果就是两个只出现一次的数的异或。结果肯定不为0,在结果数组中找到第一个为1的位的位置,记为第n位。以第n位是不是1为标准把元数组中的数字分成两个子数组,第一个子数组中每个...

2019-06-21 14:37:36 82

原创 剑指offer:二叉搜索树与双向链表

题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向思路:递归的对左右子树进行转换,然后将左右子树和当前根节点连接成链表代码:class Solution {public: TreeNode* Convert(TreeNode* pRootOfTree) { if(NULL == pRoo...

2019-06-21 09:30:30 67

原创 c++ stl bitset的使用

面试中用到位排序,忘记了stl的容器这里记录下#include <bitset>#include <iostream>using namespace std;int main(){ bitset<4> bitset1;//无参构造,长度为4,默认每一位为0 bitset<8> bitset2(12);// 填入12的二进制...

2019-06-18 16:05:16 109

原创 随机梯度下降优化算法的对比以及常见选择

数据特征是稀疏时 :使用自适应学习速率SGD优化方法(Adagrad、Adadelta、RMSprop与Adam),因为不需要在迭代过程中对学习速率进行人工调整。   RMSprop是Adagrad的一种扩展,与Adadelta类似,但是改进版的Adadelta使用RMS去自动更新学习速率,并且不需要设置初始学习速率。而Adam是在RMSprop基础上使用动量与偏差修正。RMSprop、Adade...

2019-06-11 19:46:17 1214

原创 python 路径操作

os.path 模块提供了一些函数,返回一个相对路径的绝对路径,以及检查给定的路径是否为绝对路径。os.path.abspath(path)将返回参数的绝对路径的字符串。这是将相对路径转换为绝对路径的简便方法。os.path.isabs(path)如果参数是一个绝对路径,就返回 True,如果参数是一个相对路径,就返回 False。os.path.relpath(path, start)...

2019-06-06 14:25:35 155

原创 pthon tarfile模块使用

tarfile模块使用# encoding=utf-8import tarfileimport osimport threadingimport timeimport multiprocessingimport datetimeif_tar_complete = Falselock = threading.Lock()def get_if_tar_complete(): ...

2019-06-05 16:01:27 161

原创 python md5

python md5import hashlibimport osimport datetimedef GetFileMd5(filename): if not os.path.isfile(filename): return myhash = hashlib.md5() with open(filename,'rb') as f: ...

2019-06-05 15:54:08 77

原创 python os模块常见的文件操作

os.remove(path)删除文件 path. 如果path是一个目录, 抛出 OSError错误。如果要删除目录,请使用rmdir().os.rmdir(path)删除目录 path,要求path必须是个空目录,否则抛出OSError错误os.removedirs(path)递归地删除目录。类似于rmdir(), 如果子目录被成功删除, removedirs() 将会删除父目录;但...

2019-06-05 15:51:29 320

原创 剑指offer:数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。代码:class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) ...

2019-05-23 10:59:53 54

原创 剑指offer:数组中重复的数字

题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。代码:class Solution {public: // Parameters: // ...

2019-05-23 10:57:16 83

原创 剑指offer:栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:用一个栈模拟入栈,若popV当前值等于pushV当前值,相当于pushV当前值入...

2019-05-23 10:54:37 69

原创 剑指offer:把数组排成最小的数

题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路:int全部转换成string 通过自定义如下比较函数排序,然后输出bool my_compare(string str1, string str2){ string str3 = str1 + ...

2019-05-15 11:07:55 70

原创 剑指offer:序列化二叉树

题目:请实现两个函数,分别用来序列化和反序列化二叉树思路:类似于层序遍历,以“,”分隔,以“#”代表空代码:class Solution {public: char* Serialize(TreeNode *root) { string strTmp; queue<TreeNode*> que; qu...

2019-05-06 14:35:24 74

原创 剑指offer:丑数

题目:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路:1.依次从零开始判断每个数是否是丑数,这样子复杂度过高2.利用丑数*2、3、5还是丑数,将当前结果保存在res中、维护index2 index3 index5 分别表示和2、3、5相乘的丑数对应...

2019-04-24 17:06:36 82

空空如也

空空如也

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

TA关注的人

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