自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 richard_w0ng的技术博客导航

一、说明写了一年多的博客,偷得浮生半日闲,是时候整理一下了。本页面是博客目录导航页,会持续更新 本文的小标题就是对应文章标题,点击小标题会有传送门送到对应的文章处,方便阅读 陆续会开新的坑,比如Kafka、Flume、Flink等等,目前就先把旧坑给填上再二、漫漫无边的大数据之路1、初出茅庐之Hadoop生态(1)Hadoop(2)Hive(3)HBase2、初出茅庐...

2018-04-17 11:37:29 163

原创 spark streaming 检查点机制

一个Streaming应用程序要求7天24小时不间断运行,因此必须适应各种导致应用程序失败的场景。Spark Streaming的检查点具有容错机制,有足够的信息能够支持故障恢复。支持两种数据类型的检查点:元数据检查点和数据检查点。(1)元数据检查点,在类似HDFS的容错存储上,保存Streaming计算信息。这种检查点用来恢复运行Streaming应用程序失败的Driver进程。(2)数...

2019-07-31 21:38:32 226

原创 并不基础的基础——计算机网络笔记

并不基础的基础——计算机网络笔记复习了一段时间的基础知识,略有所得,所以准备开这么一个坑,记录一些在学习计算机网络过程中的体会。还是老样子,我不准备把这个博客写成百度百科,我只想跳脱出基础概念,把实际的应用场景代入进去,总之就是再深入一点TCP协议和UDP协议有什么区别?传输控制协议 TCP(Transmission Control Protocol)是面向连接的,提供可靠交付,有流量控制,...

2019-07-23 22:11:40 137

原创 Spark 2.x企业级大数据项目实战(实时统计、离线分析和实时ETL)

胜任PB级大数据的开发和优化,面试中说出来都是亮点, 是跳槽、转型、加薪的利器,让你轻松实现华丽转身。 只要你有一点Hadoop、Spark和Scala基础,并且能保持学习的热情, 那么就跟随老师来吧。第一章:流式数据实时分析(Kafka+SparkStreaming+Redis)1、流式实时数据分析项目实战内容提纲(企业级开发、仿双十一订单实时统计及性能优化)2、SparkStream...

2019-07-23 11:41:04 2568 1

原创 JVM简介?

屏蔽底层操作系统的不同,并且减少基于原生语言开发的复杂性,只要虚拟机厂商在特定操作系统上实现了虚拟机,定义如何将字节码解析成本操作系统可执行的二进制码,Java便可以实现跨平台的功能【虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台的相关的信息,使得JAVA程...

2019-07-20 14:56:57 104

原创 【深入理解JVM】:垃圾收集算法

垃圾收集算法主要有以下几种:标记-清除算法(mark-sweep)、复制算法(copying)和标记-整理算法(mark-compact)。标记-清除算法算法的执行过程与名字一样,先标记所有需要回收的对象,在标记完成后统一回收所有被标记的对象。该算法有两个问题:标记和清除过程效率不高。主要由于垃圾收集器需要从GC Roots根对象中遍历所有可达的对象,并给这些对象加上一个标记,表明此对象...

2019-05-03 15:45:58 118

原创 金算盘干了一年多之后

了显著的提高。在金算盘干了一年多之后,林贤文终于真正地找到一个专职写程序的工作,用上了能快速开发企业管理软件的Powerbuilder,从此,林贤文才算是真正踏上了编程的职业之路。北漂打拼记在家乡重庆从事编程工作一年多以后,林贤文觉得在重庆已经无法使得自己获得更大的提升,因此,林贤文毅然决然的决定再次舍弃当时还算稳定的工作,孤身前往北京发展。而北京的机会确实很多,林贤文很容易的就找到了编程的...

2018-10-15 16:46:24 618

原创 归并排序,几乎和归并排序一样,不同的地方在于将两个有序数组合并的地方需要添加几行代码。

题利用归并排序,几乎和归并排序一样,不同的地方在于将两个有序数组合并的地方需要添加几行代码。所以我们要找出规律,举例如下: 在归并两排序数组时,当需要将前一个数组元素的指针 i 指向的元素插入时,它对应的 count[i] ,就是后一个数组的指针j 的值count: 0 0 0 0     0 0 0 0nums: -7 1 5 9    -2 1 3 5         ...

2018-09-29 09:01:43 231

原创 优先队列优先队列优先队列优先队列

优先队列优先队列优先队列那么,优先队列又是什么样子呢? 优先队列不再遵循先入先出的原则,而是分为两种情况: 最大优先队列,无论入队顺序,当前最大的元素优先出队。最小优先队列,无论入队顺序,当前最小的元素优先出队。 比如有一个最大优先队列,它的最大元素是8,那么虽然元素8并不是队首元素,但出队的时候仍然让元素8首先出队:...

2018-09-26 20:35:33 312

原创 【JAVA】类加载器及双亲委派模型

类加载器及双亲委派模型●类加载器    类加载的过程    类加载器●双亲委派模式    工作流程    优势    原理及源码分析    URLClassLoader    扩展类加载器和系统类加载器●类加载器间的关系    类与类加载器    显式加载和隐式加载●自定义类加载器 类加载器1.1 类加载的过程”.java”文件经...

2018-09-07 22:04:04 161

原创 【leetcode】46. 全排列

46. 全排列使用回溯法class Solution {private: vector<vector<int>> res;//设置一个私有的变量保存排列的结果 vector<bool> isUsed;//判断当前的元素i是否在p中 /*p中保存了一个有index个元素的排列 向这个排列的末尾添加第index+1个元素,获得一个有i...

2018-09-06 15:42:51 151

原创 【JAVA】JVM内存模型

JVM内存模型●虚拟机栈●本地方法栈●堆●方法区●程序计数器 1  虚拟机栈1.1 虚拟机栈JAVA虚拟机栈是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java 方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法返回地址等信息。每一个方法被调用直至执行完成的过程,就对应...

2018-09-03 21:01:02 128

原创 【leetcode】6. Z字形变换

6. Z字形变换使用flag代表方向,每次从上至下来回循环,以行数4为例,索引index的变化情况是0 1 2 3 2 1 0 1 2 3 2... ...每次都将相应行数的数组中增加一个原字符串中的i字符,注意边界判定 参考资料:https://github.com/richardw0ng/LeetCode/blob/master/docs/Leetcode_Solutions/...

2018-09-02 09:50:17 175

原创 java 为什么有时一个类有多个构造函数

java 为什么有时一个类有多个构造函数https://blog.csdn.net/qq_14989227/article/details/79550607关于 Java 的静态工厂方法,看这一篇就够了!https://www.jianshu.com/p/ceb5ec8f1174单例模式?https://bbs.csdn.net/topics/390753067而且这种私有...

2018-08-30 09:52:02 1526

原创 【Data Structure】堆和堆排序 [part 2]

堆和堆排序 [part 2]    为什么使用堆    4-2 堆的基本存储    4-3 Shift Up    4-4 Shift Down    4-5 基础堆排序和Heapify队列的特点是先进先出(FIFO)。优先队列不再遵循先入先出的原则,而是分为两种情况:最大优先队列,无论入队顺序,当前最大的元素优先出队。最小优先队列,无论入队顺序,当前最小的元素优先出队。比如有...

2018-08-18 15:41:00 104

原创 【Data Structure】堆和堆排序 [part 1]

堆和堆排序 [part 1]    4-1 为什么使用堆    4-2 堆的基本存储    4-3 Shift Up    4-4 Shift Down    4-5 基础堆排序和Heapify二叉堆本质上是一种完全二叉树,它分为两个类型:1.最大堆2.最小堆什么是最大堆呢?最大堆任何一个父节点的值,都大于等于它左右孩子节点的值。什么是最小堆呢?最小堆任何一个父节点的...

2018-08-18 15:39:10 112

原创 【Data Structure】高级排序问题 [part 2]

高级排序问题 [part 2]●快速排序法●随机化快速排序法●双路快速排序法●三路快速排序法●归并排序和快速排序的衍生问题 1   快速排序法每次从当前排序的数组中选择一个元素,以该元素为基点,考虑将其移动到排好序情况下应该处在的位置(该元素之前的元素都小于该元素,该元素之后的元素都大于该元素),再对左右两个子数组递归使用快速排序//对arr[l...r]...

2018-08-17 12:16:32 126

原创 【Data Structure】高级排序问题 [part 1]

高级排序问题 [part 1]●归并排序法●归并排序法的递归实现(自顶向下)●归并排序法的优化●归并排序法的非递归实现(自底向上)1   归并排序法1.1  原理:首先将数组分成左右两个部分,考虑将左边和右边的数组分别排序,再归并在一起,递归使用该操作1.2  时间复杂度使用二分法,达到O(logn)的层级,每个层级使用O(n)时间复杂度的算法进行操作,最终...

2018-08-17 12:15:53 104

原创 跳坑汇总

目录IDEA如何回到欢迎页面idea导入项目,不显示项目结构IDEA如何回到欢迎页面在没有设置之前,IDEA会默认打开上次的项目工程。选择菜单File -> Settings -> Appearance & Behavior ->System Settings,取消 Reopen last project on startup (在启动的时候打开上...

2018-08-14 17:14:36 185

原创 【leetcode】343. 整数拆分、【leetcode】70. 爬楼梯

343.整数拆分动态规划:将原问题拆解成若干子问题,同时保存子问题的答案,使得每个子问题只求解一次,最终获得原问题的答案大部分动态规划问题本质上都是递归问题,只是在递归的过程中,会发现所谓的“重叠子问题”和“最优子结构”(通过求子问题的最优解,可以获得原问题的最优解)对于同时拥有重叠子问题和最优子结构的问题,考虑两种解决方式:1、记忆化搜索(自顶向下解决问题,较容易实现) 2、动态规...

2018-08-14 17:13:05 537

原创 并不基础的基础——计算机网络笔记

并不基础的基础——计算机网络笔记复习了一段时间的基础知识,略有所得,所以准备开这么一个坑,记录一些在学习计算机网络过程中的体会。还是老样子,我不准备把这个博客写成百度百科,我只想跳脱出基础概念,把实际的应用场景代入进去,总之就是再深入一点目录TCP协议和UDP协议有什么区别?TCP协议和UDP协议有什么区别?传输控制协议 TCP(Transmission Control Pro...

2018-08-13 21:20:11 196

原创 【C++】多态性和虚函数

多态及其相关概念理解●早捆绑/晚捆绑●虚函数●虚析构函数●纯虚函数●抽象类 多态C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象所属的不同类来调用类中实现的相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数早捆绑(静态多态)程序在编译阶段(运行之前),根据...

2018-08-12 11:21:45 101

原创 【Data Structure】二叉搜索树 [part 2]

二叉搜索树 [part 2]●二叉搜索树的顺序性●二叉搜索树的局限性●一种特殊的平衡二叉树:红黑树●平衡二叉树和堆的结合:Treap●Trie树(字典树) 7  二叉搜索树的顺序性1、容易找到一组数据中的min和max2、容易找到一组数据中的前驱和后继(要找A的前驱和后继,首先A要是二叉搜索树中的一个节点)3、容易找到一组数据中的floor和ceil(要找A...

2018-08-09 15:43:02 100

原创 【Data Structure】二叉搜索树 [part 1]

二叉搜索树 [part 1]●二分查找法●二叉搜索树●插入新节点(递归实现)●查找●前中后序遍历●层序遍历(广度优先遍历)●删除节点1  二分查找法二分查找法只能作用在一个有序的序列中,时间复杂度为O(logn)/*非递归形式实现二分查找在有序数组arr中,查找target如果找到target,返回相应的索引index,如果没有找到target,返...

2018-08-09 15:42:13 151

原创 【leetcode】3. 无重复字符的最长子串

3. 无重复字符的最长子串整体思路: 用一个unorder_map来保存字符串中每个字符所对应的最近一次出现位置,用字符串本身作为map的key设一个k和i,k用来表示最长子串的起始位置,i用来表示顺序遍历的当前位置,max_len用来保存当前最长子串长度遍历字符串如果当前字符没有出现过(map[key] == 0),则置map的value为当前位置i如果当前字符已经出现过...

2018-08-02 08:55:07 80

原创 【leetcode】83. 删除排序链表中的重复元素

83. 删除排序链表中的重复元素删除一个元素的情况比较简单,使用两个指针pre和cur,当pre和cur指向的数值val相等时,代表出现了重复节点,删除之考虑两个特殊情况,第一个是head为空节点,第二个是head->next为空节点 class Solution {public: ListNode* deleteDuplicates(ListNode* head...

2018-07-29 09:54:47 108

原创 【leetcode】86. 分隔链表

86. 分隔链表建两个链表来保存小于x和大于等于x的数,遍历链表,再将两个链表连接 这里需要注意一点,题目只分为两个部分,一个是小于x, 一个是大于等于x,所以不需要存在一个分隔点x在两个链表中间class Solution {public: ListNode* partition(ListNode* head, int x) { ListNode* le...

2018-07-29 09:50:16 407

原创 【leetcode】206. 反转链表

206. 反转链表简单题:使用三个指针:pre、cur和next需要注意的是,当访问链表中的某一个域,如value,首先需要保证该节点不为空,所以这里把next指针的定义放到while循环中,保证了cur不为空,相对应的cur->next也是有意义的class Solution {public: ListNode* reverseList(ListNode* he...

2018-07-29 09:42:13 147

原创 【leetcode】80. 删除排序数组中的重复项 II

80. 删除排序数组中的重复项 II采用双指针 (似乎要求扫描一遍的方法大多可以采用双指针解决) 要明确一点,k指针所指位置的数值没有任何意义,因为既然它已经被k指针指向了,说明这就是一个“不合法”的位置,最终只能被替换需要比较数值的是i与i的前一位数,分为“合法”和“不合法”两种情况。“合法”情况中又存在着两种情况:1、两数相同,count<2    2、两数不同      ...

2018-07-28 21:16:04 594

原创 【leetcode】451. 根据字符出现频率排序

451. 根据字符出现频率排序将字符串中的数组降序排列 首先通过一个map存储字符串中每个字符对应的频率,再将字符与其频率组成一个pair,存到vec_pair容器中通过设置cmp函数,对频率进行排序并输出,完成!这道题有很多知识点,比如auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型make_pair是将两个属性合成一个pair对 使用优先队列? ...

2018-07-28 21:04:26 569

原创 【leetcode】205. 同构字符串

205. 同构字符串先判断这两个字符串长度是否相同,如果不相同,那么肯定不是同构字符串如果长度相同,再继续判断两个字符串是不是完全相等,这是一个小优化(判断相等O(n) < O(nlogn))使用两个map容器分别存储两个字符串的值,遍历两个容器,如果两个字符都是第一次插入,那么返回值均为NULL如果是同构,那么返回的是上次插入相同值的位置,这个位置应该要一样 这是一种很巧妙的...

2018-07-13 14:58:46 314

原创 【leetcode】349. 两个数组的交集

349. 两个数组的交集最简单的暴力解法,使用set容器,set容器的特点是不会有重复的元素,当有重复的元素存进去时只会保存一个。先把A数组中的元素存入set中,再遍历B数组,查看set中是否有相同的元素注意迭代器的使用和set数组find()函数的用法 C++语言中的set和map底层就是一个平衡搜索树,插入、查找、删除操作的时间复杂度都是O(logn)还有一种经典的set和m...

2018-06-16 15:41:42 141

原创 【leetcode】14. 最长公共前缀

14. 最长公共前缀1.strs为空(无字符串),或第一个字符串str[0]为空串,则返回空串; 2.若strs的大小为1,即只有一个字符串,则该字符串本身就是这个字符串数组本身的最长公共前缀; 3.若不满足以上两种情况,则依次比对第1个字符串和其他所有字符串的第1个字符、第2个字符、第3个字符...第i个字符...直到某个字符串长度小于i+1,或者第i个字符不匹配,则返回第1个字符串...

2018-06-15 15:36:27 210

原创 【leetcode】19. 删除链表的倒数第N个节点

19. 删除链表的倒数第N个节点常规方法,遍历两次不讲,只讲如何扫描一次完成删除利用双指针+虚拟头结点第一个指针first先单独前移n-1位(注意不是n位,自己理解一下),移动完n-1位之后,cur指针开始与first指针同时移动(这里为了完成接下去的删除操作,所以使用了pre保存cur的前一个节点)指针一直移动,之后first到达最后一个节点,此时cur指针指向的位置就是倒数第n...

2018-06-13 19:06:28 78

原创 【leetcode】1. 两数之和

1. 两数之和这道题和编程之法上面的题目有以下几个不同:  1、题目所给定的数组是无序的,编程之法里面是默认有序的   2、要求输出原数组的序号,如果用一个结构体维护数组下标,那么需要O(n)的空间,显然不是最好的方法   3、题目中包含负数,之前想用数值直接表示数组下标,数组值为原来的真正数组下标,但是由于是负数,所以这个方法也失效了  4、有重复数值,同样是之前的用数组来存储原...

2018-05-28 11:03:07 204

原创 【JAVA】适配器模式

https://www.cnblogs.com/panhouye/p/6104288.htmlhttp://www.jb51.net/article/100146.htmhttps://www.cnblogs.com/liaoweipeng/p/5693053.html

2018-05-27 20:37:02 110

原创 【JAVA】接口和抽象类

... ...

2018-05-27 20:35:41 78

原创 【JAVA】浅拷贝和深拷贝

等号赋值在 Java 中,除了基本数据类型(数值)之外,还存在 类的实例对象 这个引用数据类型。而一般使用“ = ”号做赋值操作的时候,对于基本数据类型,实际上是拷贝的它的值,但对于对象而言,其实赋值的只是这个对象的引用,将原对象的引用传递过去,他们实际上还是指向的同一个对象。下面来看例子:输出对应的信息:直接使用等号=进行赋值操作,可以看出两个对象的hashcode码是相同的,代表他们指向同一个...

2018-05-27 19:46:48 131

原创 【JAVA】this关键字

... ...

2018-05-27 12:21:30 88

原创 【JAVA】单例模式

... ...

2018-05-26 09:49:02 103

空空如也

空空如也

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

TA关注的人

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