自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

universe_ant的博客

努力努力再努力

原创 最近在读的书(持续更新)

工作之余,及时充电!书名 开始时间 结束时间 Spark快速大数据分析 20190605 20190801 统计学习方法 20190628 最优化导论 20190628 MySQL技术内幕InnoDB存储引擎 20190802 解密搜索引擎技术实战 LUCENE &am...

2019-06-13 18:00:45 108

原创 Java log.error("Get exception: {}", e)看不到异常栈

一、现象实时作业中使用:try{...} catch(RuntimeException e) { log.error("Get exception: {}", e);}日志只输出:Get exception: java.lang.NullPointerException并没有对应的异常栈信息。二、原因HotSpot JVM有个优化:有些特定的隐式异常类型(N...

2020-01-02 15:35:17 144

原创 Java Object hashCode()的小点

Tip1:官方文档中的一句话:“Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no inform...

2019-12-24 11:07:33 44

原创 解决: java.sql.SQLException: Illegal mix of collations for operation 'UNION'

出现这个异常后,网上查询解决方案,大多数说法是MySQL库表在UNION时字段COLLATION的编码设置不同,utf8mb4_general_ci vs.utf8mb4_unicode_ci。但是我将所有字段的COLLATION设置相同后,仍然报java.sql.SQLException: Illegal mix of collations for operation 'UNION'。于是将...

2019-10-15 21:09:29 356

原创 MySQL两个整数相除

下面这个语句会得到什么呢?select 14/31763在MySQL上查询得到:实际计算器计算的结果:黑人问号脸:google了半天,试着寻找各种关键词:“how to increase precision of two integers division in mysql”,“mysql parameters about division precision” ...

2019-09-27 17:00:27 1629

原创 Bully Algorithm(霸道选举算法)

霸道选举算法是一种分布式选举算法,每次都会选出存活的进程中ID最大的候选者。霸道选举算法的假设霸道选举算法的假设:通信通道是可靠的,更进一步的假设是系统中任何两个进程之间都可以通信 进程之间相互知道各自的进程编号,也就是说算法依赖一个全局的数据 假设进程能够明确地判断出一个正常运行的进程和一个已经崩溃的进程霸道选举算法的选举流程选举过程中会发送以下三种消息类型:Elect...

2019-08-22 16:50:12 1640

原创 《最优化导论》读书笔记一:证明方法与相关记法

证明方法考虑两个命题,A和B,它们为真或假。A表示命题:约翰是一名工科生;B表示命题:约翰正在学习最优化课程。可以通过“且”、“或”、“非”等关系进行命题组合,比如:“A且B”、“A或B”、“非A”、“非B”、“非(A且B)”等。“A且B”表示:约翰是一名工科生,并且正在学习最优化课程;“非A”表示:约翰不是一名工科生。组合命题的真假取决于原始命题A和B的真假。这里引入...

2019-08-22 15:27:10 131

转载 脱离JVM?Hadoop生态圈的挣扎与演化

目录背景JVM存在的问题1. Java对象开销2. 对象存储结构引发的cache miss3. 大数据的垃圾回收4. OOM问题解决方案定制的序列化工具Spark的序列化框架Flink的序列化框架显式的内存管理Flink的内存管理Spark的内存管理缓存友好的计算Flink中的数据结构Spark的数据结构总结参考新世纪以来...

2019-06-20 10:52:40 84

原创 Checkpointing

一、Checkpointing下图主要是描述word count的Job逻辑: barrier由source节点发出; barrier会将流上event切分到不同的checkpoint中; 汇聚到当前节点的多流的barrier要对齐; barrier对齐之后会进行checkpointing,生成snapshot; 完成snapshot之后向下游...

2019-06-04 18:42:57 121

原创 State

一、State想要回答这个问题,先来看看一段描述:假设我们以Kafka作为数据源,利用Flink做word count计算。考虑下面几个问题:为了精准地计算最终各个单词的出现次数,当由于某种原因导致故障时怎么确保恢复后已计算过的单词不会再次被计入次数? 单词的计数过程是在已计算得到的中间结果的基础上,将正在处理的单词对应的个数加一,那么中间结果保存在哪里?针对第一个问题,可以将Ka...

2019-06-02 18:19:12 48

原创 Watermark

一、Time谈及Watermark之前,需要先了解一下Flink中的三种Time,分别是Event Time(事件时间)、摄入时间(Ingestion Time)和Processing Time(处理时间):(图片来自Flink官网)如上图,可以很清晰的了解这三种时间的概念:事件时间:事件发生的时间,数据本身一般会携带的时间,可以从每个事件中获取到事件时间戳; 摄入时间:事...

2019-05-31 23:52:15 607

原创 新开始,新征程

走了很久,带着很多包裹,怀着很多梦想,却发现止步不前,甚至落后于从前的自己,尽管从前也曾犯下很多错。真是应了那句话:“你只有不停奔跑,才能留在原地”,否则等待你的只有别人的背影。2019年5月13日,是本人“流浪计划”的开始,之所以起这么个名字,当然是因为《流浪地球》这部电影了,其漫长的流浪过程,寻找新家园的计划,正相符于目前的自己想要逃离出旧束缚,开启新征程,而这个过程会一直持续下去。2...

2019-05-30 12:03:59 93

转载 Java动态生成类以及动态添加属性

有个技术实现需求:动态生成类,其中类中的属性来自参数对象中的全部属性以及来自参数对象properties文件。那么技术实现支持:使用CGLib代理。具体的实现步骤:1.配置Maven文件:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XML

2017-11-18 16:14:20 25553 1

原创 【剑指Offer】树的子结构

题目:输入两棵二叉树A和B,判断B是不是A的子结构。代码:class TreeNode { int data; TreeNode left; TreeNode right;}public class SubTree { /** * 第一步:在树A中找到和B的根节点的值一样的节点R * 第二步:再判断树A中以R为根节点的子树是不是包含和树B一样的结构 */

2017-09-13 21:20:42 344

转载 什么是死锁及死锁的必要条件和解决方法

进程死锁及解决方法一、要点提示:掌握死锁的概念和产生死锁的原因。理解产生死锁的必要条件——以下四个条件同时具备:互斥条件、不可抢占条件、占有且申请条件、循环等待条件。记住解决死锁的一般方法,掌握死锁的预防和死锁的避免二者的基本思想。掌握死锁的预防策略中资源有序分配策略。理解进程安全序列的概念,理解死锁与安全序列的关系。了解银行家算法。了解资源分配图。了解死锁的检测及恢复的思想。

2017-09-06 12:28:52 917

转载 【腾讯笔试】满二叉排序树中查找三个节点的最小子树的根节点

题目:一个满二叉排序树深度为k,结点数为2^k-1;节点值为1至(2^k-1),给出k和任意三个节点的值,输出包含该三个节点的最小子树的根节点。样例输入:4 10 15 13样例输出:12首先,我们来理解一下满二叉排序数,如下就是一个4层的满二叉排序树:* 8* / \* 4 12* / \ / \*

2017-08-29 23:19:34 893

原创 【剑指Offer】最小的k个数

题目:输入n个整数,找出其中最小的k个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。这道题最简单的思路莫过于把输入的n个整数排序,排序之后位于最前面的k个数就是最小的k个数。这种思路的时间复杂度是O(nlogn),面试官会提示我们该有更快的算法。 解法一:O(n)的算法,只有当我们可以修改输入的数组时可用我们可以基于Partition函数来

2017-08-28 17:35:29 488

原创 【剑指Offer】连续子数组的最大和

题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为{1, -2, 3, 10, -4, 7, 2, -5}。看到题目,很多人都能想到最直观的方法,即枚举出数组的所有子数组并求出它们的和。一个长度为n的数组,总共有(n*(n+1))/2个子数组。计算出所有的子数组的和,最快也要O(n^2

2017-08-28 13:07:20 258

转载 RPC原理

一旦踏入公司尤其是大型互联网公司就会发现,公司的系统都由成千上万大大小小的服务组成,各服务部署在不同的机器上,有不同的团队负责。这时就会遇到两个问题:1)要搭建一个新服务,免不了需要依赖他人的服务,而现在他人的服务都在远端,怎么调用?2)其他团队要使用我们的服务,我们的服务该怎么发布以便他人调用?如何调用他人的远程服务?由于各服务器部署在不同机器,服务间的调用免不了网络通信过程,服

2017-08-21 19:04:24 267

转载 浏览器地址栏中输入一个URL后回车,将会发生什么事情

1.首先你得在浏览器里输入网址2.浏览器查找域名的IP地址导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:浏览器缓存——浏览器会缓存DNS记录一段时间。有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存各自固定的一个时间(2分钟到30分钟不等)。系统缓存——如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是get

2017-08-21 17:25:39 454

转载 C程序的执行过程

1.hello程序的生命周期是从一个高级C语言程序开始的,然后为了在系统上运行hello.c程序,每条C语句都必须被其他程序转化为一系列的低级机器语言指令。 2.预处理阶段。预处理器(cpp)根据以字符#开头的命令,修改原始的C程序。#include 命令告诉预处理器读取系统头文件stdio.h的内容,并将它直接插入到程序文本中。结果就得到另一个C程序,通常以.i作为文件扩展名。

2017-08-20 14:08:11 315

转载 最长公共子序列以及最长公共子字符串

问题描述:子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串:cnblogsbelong比如序列bo、bg、lg在母串cnblogs与belong中都出现过并且出现顺序与母串保持一致,我们将其称为公共子序列。最长公共子序列(Longest Common Subsequence,LCS),故名思义,是指在所有的子序列中最长的一个。子串是要求更严格的一种子序列,要求在母

2017-08-16 23:39:58 232

原创 Java实现的生产者和消费者

工厂类:import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Depot { private int depotSize; // 仓库大小 pri

2017-08-13 22:59:07 319

原创 Worm(毛毛虫)HDU2151

问题描述:自从见识了平安夜苹果的涨价后,Lele就在他家门口水平种了一排苹果树,共有N棵。突然Lele发现在左起第P棵树上(从1开始)有一条毛毛虫。为了看到毛毛虫变蝴蝶的过程,Lele在苹果树旁观察了很久。虽然没有看到蝴蝶,但Lele发现了一个规律:每过一分钟,毛毛虫便会随机从一棵树爬到相邻的一棵树上。比如刚开始毛毛虫在第2棵树上,过一分钟后,毛毛虫可能会在第1棵树上或者第3棵树上,如

2017-08-13 11:54:23 1040 2

原创 华为机试题—0交换排序

题目描述:长度为n的数组乱序存放着0至n-1,现在只能进行0与其他数的交换,完成以下函数。public class Solution { /** * 交换数组里n和0的位置 * * @param array * 数组 * @param len * 数组长度 * @pa

2017-08-09 09:53:00 11509 2

原创 Redis的持久化-RDB和AOF

Redis虽然是基于内存的存储系统,但是它本身是支持内存数据的持久化的,而且提供两种主要的持久化策略:     RDB快照和AOF日志     下面分别介绍这两种不同的持久化策略:1、Redis的RDB快照     Redis支持将当前数据的快照存成一个数据文件的持久化机制,即RDB快照。这种方法是非常好理解的,但是一个持续写入的数据库如何生成快照呢?     Redis借助了

2017-08-02 18:13:09 503

原创 华为机试题-合唱队

题目:计算最少出列多少位同学,使得剩下的同学排成合唱队型。说明:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队型是指这样的一种队型:设K位同学从左到右依次编号为1,2,……,K,他们的身高分别为T1,T2,……,TK,则他们的身高满足存在i(1Ti+1>……>TK。你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使

2017-07-23 17:19:43 521

转载 判断两个矩阵是否重叠

判断两个矩阵是否重叠关于如何判断两个矩阵是否重叠,这是我在实际项目开发当中曾经遇到过的问题:“判断图像中检测到的两个人脸框矩形是否有重叠部分,并计算重叠大小,从而确认是否为同一个人脸”。后来,在浏览博客时,也发现有人将这个问题当做面试题目,并进行讨论,但是,列出的代码过于繁杂,不敢恭维。所以,写下这篇博文,并贴出代码,供大家参考。前提两个矩阵的边均与x轴和y轴平行,即轴对齐的矩

2017-07-20 16:04:29 5128

原创 从矩阵左上角到右下角的最大值

题目:输入一个矩阵num[m][n],现在从左上角到达右下角,且只能向下或者向右走。我们要求的是路径经过的所有点的数字之和的最大值。分析:方法一、采用DFS的思想import java.util.*;public class MaxMatrixPathSum { private static int M; private static int N; private

2017-07-20 10:36:43 2874

原创 邮箱的正则表达式

邮箱的一般格式为:名称@域名。我们这里需要匹配的邮箱中名称可以包含汉字、字母、数字,域名只允许为英文和数字。例如:张三zs333@domain.com邮件名称部分:汉字在正则中表示为[\u4e00-\u9fa5]字母和数字表示为A-Za-z0-9因此邮件名称部分的正则表达式整理如下:[A-Za-z0-9\u4e00-\u9fa5]+邮件域名部

2017-07-19 22:41:35 20826 3

原创 [LeetCode] Search Insert Position

题目:搜索插入位置Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.You may assume no duplicate

2017-07-19 22:07:54 215

转载 旋转数组的二分查找

1.问题描述已知有序数组a[N],从中间某个位置k(k未知,k=-1表示整个数组有序)分开,然后将前后两部分互换,得到新的数组,在该新数组的查找元素x。如:a[]={1, 2, 5, 7, 9, 10, 15},从k=4分开,得到新数组a[]={9, 10, 15, 1, 2, 5, 7}。:二分查找算法有两个关键点:1)数组有序;2)根据当前区间的中间元素与x的大小关系,确定下次

2017-07-19 21:35:27 712

转载 git下的冲突解决

冲突的产生很多命令都可能出现冲突,但从根本上来讲,都是merge和patch(应用补丁)时产生冲突。而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突。git pull会自动merge,repo sync会自动rebase,所以git pull和repo sync也会产生冲突。当然git rebase就更不用说了。冲突的类型逻辑冲突git自动处理(合并/应用补

2017-07-19 16:39:58 225

原创 [LeetCode] Rotate Image

题目:You are given an n×n 2D matrix representing an image.Rotate the image by 90 degrees (clockwise).Follow up: Could you do this in-place?分析:要达到in-place的要求,我们采用交换的方法,顺序是左上先和左下交换,然后左上和右下交换

2017-07-19 11:45:55 152

原创 [LeetCode] Rotate List

题目:Given a list, rotate the list to the right by k places, where k is non-negative.For example, Given 1->2->3->4->5->NULL and k = 2, return4-> 5->1->2->3->NULL.分析:该题的关键在于如何找到链表后半部分

2017-07-19 11:23:14 161

原创 [LeetCode] Rotate Array

题目:Rotate an array of n elements to the right by k steps.For example, with n = 7 and k = 3, the array [1, 2, 3, 4, 5, 6, 7] is rotated to [5, 6, 7, 1, 2, 3, 4].分析:首先我们将整个数组反转,然后将前k个数字反

2017-07-19 10:39:19 151

原创 [LeetCode] Max Points on a Line

题目:Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.分析:一个点加一个斜率,就可以唯一的确定一条直线。所以我们对每个点,都计算一下该点和其他点连线的斜率,这样对于这个点来说,相同斜率的直线有多少条,就意味着有多少个点在同一条直线

2017-07-18 23:57:17 142

原创 [LeetCode] Add Two Numbers

题目:You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a

2017-07-18 22:04:36 149

原创 [LeetCode] LRU Cache

题目:Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.get(key) - Get the value (will always be positive) of the

2017-07-18 18:11:15 192

转载 如何设计一个秒杀系统

什么是秒杀秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量用户前来抢购,并且会在约定的时间点同时在秒杀页面进行抢购。秒杀系统场景特点秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问流量激增。秒杀一般是访问请求数量远远大于库存数量,只有少

2017-07-16 23:45:56 343

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