自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (3)
  • 收藏
  • 关注

原创 双指针技巧

双指针通常是二重循环的优化,当固定一个指针,另一个指针的已经走过的序列无需回退,这通常需要根据场景作一定的分析和证明。两指针相遇时通常可以得到答案的候选集。双指针算法需要考虑两个指针的行走顺序。双指针的完备性可以通过以下方式确定:具体问题要具体分析。例;给定两个升序排序的有序数组, 求分别从两个数组中挑选一个数其和是某个目标值。输入两个数组数量n和m,以及目标值。接下来两行分别是两个数组。最后求两个下标。数组一定不是空且一定存在解。最长连续不重复子序列给定一个长度为 n 的整数序列,请找出最长的

2022-06-25 19:45:11 172 1

原创 前缀和与差分技巧

今天来复习一下前缀和与差分。前缀和任何一个高中生可能都会,但是我们不能想当然,任何一个技巧背后的发现过程的灵感不是那么显然的。前缀和可以解决的问题是,以O(1)复杂度获得数组任意区间和。对于每个数组元素,我们记录从开始到这个元素的和S[i]。这可以通过一遍遍历做到。那么每个原始a[i] = s[i] -s[i-1]输入一个长度为n的整数数列,接下来m个询问,每个询问一个区间 [l, r] 之间的区间和。n, m 范围[1, 100000], 数列中元素的值 [-1000, 1000]子矩阵的和

2022-06-21 23:32:50 136

原创 redis中基础数据结构

redis 是大家比较常用的一款内存数据库,其高并发能力和简洁的使用受产业界频繁采用。本篇根据资料概括redis 的数据结构和实现逻辑。部分内容需要进一步阐释将在其他地方展开。用户视角的数据结构主要有 字符串,列表,字典哈希,集合,有序集合,其它数据结构不在本文讨论范畴以内。在redis的以内这些统统称为redis对象。那么redis为了高效,自己对这些数据结构有着高效而独到的实现。我们知道redis是c语言写的,c的语言库匮乏,许多结构不具备,不符合成熟数据结构的要求,一方面有着诸多边界条件抛给编程者处理

2022-06-21 07:40:01 148

原创 高精度四则运算程序实现

高精度对于有些语言来说都有成型的库函数供程序员使用,但是其中对于算法的考量来说,我们还是希望重新感受一下实现的过程。以c++为例,对于一般的 int,long,或者 long long 类型的能够满足大多数场景,但对于成百上千位的大数来说这些就无能为力了。本文参考相关资料整理了加减乘除的大数算法小题目。 回顾一下最基本的运算规则用程序如何实现。给定两个正整数,不含前导0, 计算他们的和。整数长度范围 [1, 100000]实现思路也比较直接,我们无非是要按位相加,时刻记住进位补数即可,根本在于我们用一个数

2022-06-18 21:40:31 208

原创 superset 源码的 IDE 调试

做大数据不关注前端和可视化不太好。git clone https://github.com/apache/superset.git MAC OS 系统。之前因为clone了master版本,不知道哪个哥们随随便便提交,有很多格式上的错误,坑了不少时间,虽然内心掠过很多的动物,但心想问题既然重新拉代码,解决了,就不折磨自己了。pycharm 打开项目等了好一会,让你安装venv,点 ok打开 terminal编译前端前提必须安装了 node npm最好是最近稳定版本 lastest st

2022-05-01 11:56:55 574 1

原创 实现红黑树(已leetcode验证)

代码已在leetcode验证了。是正确的,内存稍微多一些,时间上要好一些。大家可以看看下提交记录中的内存和时间差异。其他两种平衡二叉树参考 [[AVL 树]] [[跳表]]在红黑树的学习过程中,我接触到两种红黑树的描述,一种是左偏红黑树,另一种是算法导论中一般意义上的红黑树。前者是红黑树的简化版本。本偏只是原理和实现,没有说应用。红黑树的左偏和右偏版本左偏红黑树被设计为和一种叫2-3树的等价树,左偏红黑树是2-3树的另一种结构表现形式。这很好,因为2-3树是绝对平衡的二叉搜索树!2-3树

2022-03-16 21:31:06 862 1

原创 实现 AVL 树

平衡树和平衡因子AVL 树是最早的平衡二叉树。对于AVL树的任意一个节点,左子树和右子树的高度差不能超过1用某子树左右两子树高度差作为平衡因子的度量实际存储时,每个节点存储其所在子树的高度,用以辅助求解平衡因子。平衡树性质验证中序遍历的序列是从小到大排列的。每个节点的平衡因子绝对值不超过1平衡树性质的维护什么时候维护当插入和删除的节点时,有可能破坏树的平衡。当平衡被破坏时候,通过左旋和右旋自底向上的将树重新调整到平衡状态。如何维护LL ...

2022-02-19 23:11:17 157

原创 设计跳表(leetcode 1206)

跳表是平衡树的一种替代方案,优点是实现较为简单。它以多于原始数据一倍的存储空间换取查询效率。发明的动机应该是想对链表进行二分查找,逐渐演化出的算法。跳表在工程领域有广泛的应用。 比如 redis的zset,rocksdb中的内存部分实现等。也是一些语言基础包中的数据结构。跳表,下面这篇文章写的真的很不错跳表解释的好文章于是读完之后仿照思路实现了一遍,可以拿 leetcode 1206 来验证正确性.实现过程中体会到下面几点1. 跳表采用空间换时间的方式,比原始数据存储量增加一倍左右.

2022-02-13 15:13:14 364

原创 简明算法之树状数组

树状数组是什么树状数组也叫 二叉索引树,其初衷是要解决数据压缩中累计频率的计算问题。现在多用于高效计算 频繁修改的数列的前缀和与区间和。所谓高效是可达到log(n) 的时间复杂度。树状数组结构举例说明, 绿色是生成的树状数组的元素:树状数组是基于原始数组构建,构建方式分多次,每次在当前层构建,原始数组是构建的第0层。在第i层构建时,从左到右按照 间隔 2^i 元素结合成配对元素中右元素的上层节点,上层节点值是该两个节点的和。当如图所示的树状结构形成时,其树状数组每个元素...

2021-12-29 23:35:08 227

原创 简明算法之归并排序

算法思想;分而治之算法步骤;1. 确定分界点 x= ( l + r) /22. x 左边和右边分别归并排序3. 将x左右两边的值合并算法模版#include<iostream>using namespace std;const int N = 100010;int tmp[N];int a[N];void merge_sort(int l, int r) { if (l >= r) return; int mid = l + ...

2021-12-29 23:19:05 283

原创 简明算法之快速排序

算法思想:分而治之算法步骤1. 确定分界点 a[l] , a[(l + r)/2] 或 a[r] 值2. 调整区间,使得所有<=x 在左半边,>=x 在右半边3. 递归处理2中左右两端算法模版:void quick_sort(int * a, int l, int r) { // 左闭右闭 if (l >= r) return; int i = l - 1, j = r + 1, x = a[l + r >> 1]; wh...

2021-12-29 23:17:33 327

原创  最大连续子乘积

写文章只是为了整理思路吗,在远古的学生时代,可能只是为了机试参加个比赛什么的, 作为一届老人,早已没了会点啥就想拿出来炫耀的年纪, 会点除了能混过面试,是不是也能和面试官聊出点感情,程序似乎无可避免悄然而然成了我们生活中心 ,相顾两无言,唯把代码谈。朦胧周末早上起床,昨晚与老友聊此题记忆犹新。 今日把递推式子写一下,发现昨晚睡意之下并非完全想的清楚。拿到这个问题,长的都像动态规划,你可能很快就兴奋的想到一个二维动态规划的式子 ,```p (I , j) = p (i-1, j) * e...

2020-09-13 13:36:44 110

原创 找出那个出现一次的数

本人算法没什么天赋,但时常想拿个小题想想,倒没什么功利(例如找工作)目的,充实一下时间。曾经出现频次很高的一个问题,说一个整数序列中有除了一个数字出现一次,其余都出现了两次。现在让你扫一遍数组O(n)找出那个数。方法是将所有的数作异或操作,结果就是你要找的。leetcode 137 对这个问题升级了一下,现在问你,其余的数都出现三次呢,该如何找出那个出现一次的数。我感觉对我来说还是挺难的,解决方法...

2018-04-12 16:45:59 363

转载 弄懂线程取消的一个例子

今天结束了,仍然在看 《Programming with posix threads》这本书,关于线程的取消。本来想总结一下线程推迟取消 异步取消 以及清除这些概念,发现有个人总结的特别的好,链接拉过来给大家看一下。 https://www.cnblogs.com/lijunamneg/archive/2013/01/25/2877211.html在这里想写一下弄懂这章其中一个例子的过程,温习一下

2017-12-28 16:01:06 357

原创 这次,虚拟机打不开了

有时候感觉这个虚拟机还是挺脆弱的。今天虚拟机突然死机了,重新开机之后显示某个文件损坏了。但是我上次不是已经扩容了吗,这次怎么又打不开了,查看了一下虚拟机的服务也已经打开了啊。情急之下重启了一下虚拟机的相关服务, 竟然好了。 简直是bledogle

2017-12-28 15:27:03 727

原创 一次linux的扩容事件

想想其实挺搞笑的。我本以为经历了一次扩容事件可以对linux的文件系统有了深入的了解。搞完了也就得到一个启发,tmd人家的工具怎么那么牛逼呢。我还以为敲一堆大家看不懂的命令,可是我的装x梦又破碎了。哈哈哈。事情是这个样子的,最近在看《posix多线程程序设计》的源码。想把这本书的code在虚拟机的ununtu上面运行一下。当时建立虚拟机的时候就给了20G存储,这下好了,要满了,好多的功能都不正常了。

2017-12-25 16:09:02 161

原创 虚拟机中ubuntu自适应屏幕的问题

搜索这个问题可能出现的都是让你去安装VMware Tool 工具这个东西,安装完成后重启电脑就ok 其实 ok 个卵子, 并没有什么作用怎么办。 在网上搜下,其实可以改下分辨率的,详细参考下面的这篇文章: http://blog.csdn.net/u013122625/article/details/52967831

2017-12-14 21:50:29 6201

原创 一次面试

准备的是c++服务器的方向,因为之前没有相关的开发经历. 所以一开始的面试经历不是很顺利,这是一次挺过三面的面试,特此将面试的内容记录下来,以供后续的参考.一面:自我介绍 你说一说c++有哪些新特性吧(简历里面有)? 说了一堆,面试官从中挑了下面两个问题 说一下左值和右值的区别? 右值提到移动构造函数 那你说一下移动构造函数解决了什么问题? 你知道移动和转发语义码? 你说

2017-07-25 23:40:11 225

原创 丑数

第n个丑数的算法

2017-07-22 23:33:30 224

原创 应对對面试的态度

一家不错公司给我发来了面试的邀请. 已经面过两面了,有些技术点答的并不好,但是感觉面试官会主动去引导你去回答问题,内心对这个公司里面的人印象不错.不管结果如何,都是一次比较好的经历. 最近心情又比较焦虑, 有点学不进去, 我跑到这里写博客来了. 不管感受是不是正确,我都决定面对自己心中的感受,记录下来. 有错改之,无则加冕有人说找工作就像找对象一样,得双方都得看对眼才合适, 确实,这种心态可以让自己

2017-07-05 16:42:29 315

原创 数组排成最小的数

题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。题目分析 先从题目出发,算一下给出的算例就可以发现规律,0-9当中越是小的数越应该放到最低位,数组中所有数最高位最小的应该放到前边作为高位,如果高位相同,比较下一位. 接下来从剩下的数当中依次执行这个规律,

2017-06-28 17:08:29 213

原创 阶段反思

先说几句闲话. 读了之前写的几篇文章,感觉很枯燥. 老学鸠一样的气质, 只有干货,干巴巴的,看的自己都头疼. 虽然写的不好,庆幸的是我有改进的心态,也许没有什么比这个更重要的了,颇有些感触,尽管害怕自己做的不好,但总归要做,要不然怎么知道哪里做的不好呢. 今天看了云风的博客,有了些许感触,学一样东西从它的历史学起,可以培养起兴趣,没有什么比我想知道更有趣的了是吗. 因此我的博客可以

2017-06-28 00:14:12 328

原创 数一数1到n出现1的数目

今天有点闷,和我的博客说说话吧,这个问题在脑子里萦绕有些久, 总坚信自己有24k智商,如此简单的问题,分分钟拿下,可是每次想不出来都遗憾作罢,原来也不过我的智商2.4k而已.^_^. 描述在从1到n的数字当中1出现的数目.分析最先想到的方法应该是从1遍历到n看看这些数字总共有多少个1,不错的方法,你能首先想到这种方法说明不是一个钻牛角尖的人.不错. 不过n如果很大的话,这复杂度肯定是难以想像的.

2017-06-27 13:59:12 386

原创 POSIX多线程编程概述

多线程编程概述线程是指机器指令,顺序 属性的集合. 一个线程包含一系列及其指令所必须的机器状态. 包括当前指令位置,地址和数据寄存器. 一个unix进程可以理解为线程加上地址空间,文件描述符和其他数据.某些unix版本支持轻量级和变量级进程,以便可以从进程中剔除部分或者所有数据,从而实现高效的性能.(本段简短描述了线程和进程的具体实体的样子)异步:任何彼此 独立的运行操作都是异步的.本章框架:1.

2017-06-06 13:46:35 258

原创 c++继承访问控制

继承访问控制访问控制方式这里有篇很好的文章,其实内容也是总结c++primer上的内容 现在就按照这篇的文章举例进行学习.思路不同继承方式的影响主要体现在:1、派生类成员对基类成员的访问控制。2、派生类对象对基类成员的访问控制三种继承方式公有继承(public)所有public和protected成员在派生类中的访问方式不变,但是私有成员(private)不能访问1) 通过派生类的成员函数能够访问

2017-05-28 22:45:41 226

原创 虚函数与虚表再探

感觉网上真实牛人多多,没想到一个虚函数可以有这么多,菜鸟的我看着很久以前的大神们在实践中学习,深究其一而且深究其二,实在是无地自容,无奈沿着大神么的脚步小心翼翼的学习一番.前面总结了虚函数的一些基本知识,除了知道应用场景,怎么用,还要知道原理是什么.下一步原理是怎么实现的.好的方法论四点,应用场景,使用方法,原理,原理实现.这篇文章打算带着自己边实践边思考虚函数的原理. 这篇博客真的是简单而又明了

2017-05-28 18:42:32 369

原创 c++ 面试题目

版块一 基本语法1.指针和引用有什么区别 1) 在定义和性质上的区别 一个对象的指针指向某个元素的地址, 而引用是别名.指针变量内存放的是地址,而引用是外号.指针定义时候可以不赋初值,但是引用必须赋初值,否则报错.指针值初始化之后还可以再改,引用初始化之后酒不能再改了.可以有const指针,但是不能有const引用.指针可以有多级,但是引用只能有一级 .sizeof引用得到是所指向变量的大小

2017-05-28 01:14:35 239

原创 二叉树反序列化与直观打印

二叉树算法当中一般不提供相应的输入输出函数,这就使得在调试相关二叉树算法的时候需要手工的在纸上演算而没有直观的观察到效果.自己做了一点费力的工作,将二叉树层次遍历的序列还原成二叉树,并且将二叉树尽量形象的打印出来.反序列化的过程我们这样定义,对于一个任意的二叉树,按照层次遍历的方式得到序列,空节点用#表示,分隔符采用!. 例如序列 1!2!3!#!4!的结构是: 1

2017-05-24 20:19:12 294

原创 虚函数 纯虚函数 虚继承资料整理

感谢这些优秀的文章:虚函数与纯虚函数 虚函数的实现1 虚函数的实现2 菱形继承与虚继承虚函数首先从虚函数开始说起吧.虚函数是实现了多态机制,具体表现为父类型的指针指向其子类的实例.然后通过服泪指针嗲用实际子类中的成员函数.这种技术可以让父类指针有多种形态. 如果调用非虚函数,无论对象是什么类型,都执行基类类型所定义的函数,非虚函数总是子啊编译时根据调用函数的对象,引用或指针类型而确定. 虚

2017-05-20 21:50:32 330

原创 Shell 编程基础之变量

Bash的变量与分类什么是变量 变量的命名规则 在bash中变量的默认的类型是字符串类型 // 别扭变量分类: 用户自定义变量(变量自定义的), 环境变量(对系统生效的环境变量是固定的), 位置参数变量(预定以变量)(主要像脚本当中传递参数或数据,变量不能自定义,变量作用是固定的)。1)变量定义 双引号和单引号有区别。 x=5 name = “jie cao” 变量调用 e

2017-05-16 00:14:48 240

原创 c/c++ 从编译到执行

参考博客 原理分析 结合实例看别人的博客上拼出答案.不会就先模仿吧. 这个是今日头条面试时候的一个题目,当时别提答的多烂了,感觉一个题目准备深了还是非常耗费时间的.小论文一样.c/c++从编译到执行要经历以下过程:源代码–>预处理–>编译–>优化–>汇编–>链接–>目标程序我们先来敲一个hello.cpp 吧.#include<stdio.h>int main(){ printf("

2017-05-15 23:09:35 442

原创 linux进程管理笔记

linux 进程管理查看进程ps aux 查看系统中的所有进程 a-allps -lepid(进程号) cpu(cpu占用) mem(内存占用) VSZ(虚拟内存占用) RSS(真实内存占用) TTY(登录终端号)(? 内核启动) stat(进程状态) TIME(CPU 占用时间) 进程的名字pstree 显示进程树top每3秒钟刷新一次,判断健康的一个重要的指标,可以输入命令 【选项】 -d

2017-04-25 22:29:12 253

原创 Linux网络命令及其其他

Linux 的网络配置IP地址的方法1)ifconfig 2) setup 3) 修改网络配置文件 4)图形界面的IP地址配置Linux 网络命令ifconfig 网络状态查看命令ifup ifdown 关闭和启用网卡netstat -t 列出TCP协议的端口netstat -u 列出UDP协议的端口netstat -n 不使用域名与服务名,而使用IP地址和端口号netstat -l 列

2017-04-25 22:28:36 249

原创 Gas Station

问题描述: 有N个油气站构成环形路径,第i个油气站有gas[i]个单位的油,一辆容量无限的油罐车从第i个油气站到第i+1个油气站需要消耗cost[i]个单位油. 如果这辆车能够从任意一站出发依靠油气站补给能够回到原来的地方.求这个起点, 如果不存在输出-1. .分析:假设从站start出发,到第n个油气站,记 sum=∑ni=startgas[i]−cost[i]sum =\sum_{i=sta

2017-04-21 22:15:28 283

原创 c++ primer 概念总结第十三章 拷贝控制

在本章中主要学习如何控制该对象的拷贝,赋值,移动和销毁之后需要做什么 我们通过一些特殊的函数来控制这些操作。拷贝构造函数,移动构造函数,拷贝赋值运算符,移动赋值运算符,以及析构函数。 13.1 拷贝,赋值与销毁13.1.1拷贝构造函数如果一个函数的第一个参数是自身类型的引用,且任何额外参数都有默认值,则此函数就是拷贝构造函数 拷贝构造函数必须是引用类型,通常是const的,但不应该是explic

2017-04-15 16:37:55 390

原创 B 树的删除操作

对于B树的删除操作研究了好些时日,感谢这篇文章让我对这个过程清晰起来. 对于B树的删除可能会破坏掉B树的充要条件,因此有必要回顾以下B树的定义(算法导论): 一棵B树是具有如下性质的有根树. 每个节点具有以下域: n[x]:当前存储中关键字的个数 n[x]个关键字本身:以非降序存放,因此key1[x]≥key2[x]≥...≥keyn[x]key_{1}[x] \g

2017-04-12 13:17:14 884

原创 c++ primer概念整理第六章 函数

函数是什么,如果从数学的角度理解,我们首先应该对函数有一个泛化的定义。首先来看两个函数的例子int fact(int val){ int ret =1 ; while(val > 1) ret *=val--; return ret;}int main(){ int j = fact(5); cout <<"5! is"<<j <<endl; r

2017-03-24 11:20:15 298

原创 linux 达人养成计划 II笔记

VI - VIMVIM 相对于 VI:–VIM 支持多级撤销 –VIM 可以夸平台运行 –VIM 语法高亮 –VIM 支持图形界面VI 编辑模式command mode - 命令模式Insert mode 输入模式Last line Mode 底行模式 vim abc 打开文件vim + abc 打开文件光标在最后一行 vim +3 abc 打开文件光标定位到第三行vim +

2017-03-17 01:26:21 389

原创 c++ primer 概念整理第五章 语句

5.1 简单语句空语句别漏写分号,也别多写分号复合语句5.2 语句作用域 㑼5.3 条件语句悬垂else使用花括号控制执行路径switch语句我们重点来看两个例子来说明case语句要注意的问题 // 计算每个元音字母并初始化计数值 unsigned ac =0 , ec =0 , ic =0, oc =0 ,uc =0;char ch; while(cin>>ch) { switch(

2017-03-16 22:17:34 209

原创 c++ primer概念整理第四章 表达式

表达式是由一个或者多个运算对象组成,字面值和常量是最简单的表达式,其结果就是字面值和变量的值。把一个运算符和一个或多个运算对象组合起来可以生成较为复杂的表达式4.1基础4.1.1 基本概念一元运算符,如取地址符和解引用,二元运算符如比较运算符和算术运算符 ,有些符号在不同的上下文中的含义是不一样的。 组合运算符和运算对象运算对象转换当运算符作用的对象不一致的时候会发生类型的转换重载运算符运算符虽

2017-03-16 20:51:16 313

视频播放+音频播放+语音朗读

刚交的多媒体实验。代码都运行通过了的。那个语音的需要安装ms speech。我觉得很有学习的价值。

2014-11-18

山东大学数据库实验代码

山大数据库大二实验六个。实验文档已经打包进去了,代码参照一下文档吧。

2013-11-27

计算机程序设计艺术

一本优秀程序设计书,总共三卷,第一卷讲述的是基本算法。

2013-03-23

空空如也

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

TA关注的人

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