自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Floyd算法:浅显外表下的动态规划内核

读者可以根据上面论述继续扩展,细细品味出其中的动态规划内核之精妙,也可以帮助我们更好地理解Floyd算法,避免强行进行记忆。其实对Floyd算法本身,我一直能隐约地感觉到它精巧的设计,对状态的极致合并。今日有机会用自己的想法将其内核具象化,希望对大家有所启发,也欢迎理性探讨。

2024-03-27 16:26:59 794

原创 并发编程:聊聊常用的并发同步模板

我们从一道简单的题出发,覆盖了并发场景下经常会遇到的几种变成模式,这里面的每一种都值得我们细细去理解,并熟练掌握。对于并发包里给出的大量同步工具,我想不同工具会有自己的适用场景,而信号量(Semaphore)是一种必须掌握的工具。其他工具我也会另做总结。

2023-06-02 16:21:28 679

原创 再谈大量数据去重:字典树(Trie)和外排序(External Sorting)

空间、时间是一对孪生兄弟。算法道路上,大家都有一个共识,“时空"可以互换。有没有办法利用更多的时间来换取有限内存下的大量数据去重呢?今天我们再来一探究竟。

2021-06-06 01:50:36 1027 2

原创 [Leetcode 451] Sort Characters By Frequency

451. Sort Characters By Frequency451. 根据字符出现频率排序IntuitionCount all the characters and rebuild the output string by sorting.ComplexityTime: O(nlogn), where n is the length of input string.Space...

2020-03-11 12:47:26 295

原创 [Leetcode 393] UTF-8 Validation

393. UTF-8 Validation393. UTF-8 编码验证IntuitionIt’s obviously a bit manipulation problem. But also there are lots of states need to be considered. An encoded UTF-8 character is possiblely represented...

2020-03-05 11:39:07 211

原创 [Leetcode 1326] Minimum Number of Taps to Open to Water a Garden

1326. Minimum Number of Taps to Open to Water a Garden1326. 灌溉花园的最少水龙头数目IntuitionWe can build a interval for each tap representing the area it covers. Each time we pick an interval, we choose the o...

2020-03-01 12:14:05 380

原创 [Leetcode 979] Distribute Coins in Binary Tree

In order to distribute coins, every node has following tasks:take the coins from the subtree who has more coins than nodesgive the coins to the substree who has less coins than nodesdistrubte the ...

2020-02-26 16:31:33 299

原创 [Leetcode 1191] K-Concatenation Maximum Sum

原题直达:K-Concatenation Maximum Sum首先,关于“最大子数组和”问题有一个基于动态规划的经典算法Kadane算法。这个算法使用maxOfEnd表示以当前数组元素结尾的最大和子数组,转移过程也十分简单——要么就是只取当前元素,要么就是拖家带口把前一元素的maxOfEnd一起带上。上图的例子,我们使用以下的Kadane算法,可以得到最大子数组和为55 + 66 = 121...

2020-01-08 20:45:43 377

原创 死磕数据库:聚集索引(Clustered Index)

Every InnoDB table has a special index called the clustered index where the data for the rows is stored. Typically, the clustered index is synonymous with the primary key.聚集索引(Clustered Index)与其说是索...

2019-09-17 21:04:41 618 1

原创 死磕数据库:锁的实现

在各种锁保驾护航下的MySQL,在高性能的同时,也引入了很复杂的锁机制。那么锁的实现和其中的哲学到底是什么样的呢?本文针对锁的互斥关系、锁的实现、锁和索引之间的联系做出了讨论。

2019-09-04 19:34:01 264

原创 死磕数据库:事务与锁

锁是确保竞态(Race condition)下,并发的事务对数据修改的安全性和隔离性的重要工具。本文从InnoDB中使用的锁出发,详尽探知了官方论述与实践的关联性。

2019-08-27 13:36:45 644 3

原创 [Leetcode] LRU Cache

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

2019-08-13 15:15:48 213

原创 C/C++与Java异同浅见

目录C/C++与Java异同浅见高级语言(High-level programming language)可移植性(Portable)易用性安全性高性能从源码到程序编译C/C++与Java异同浅见C语言诞生于19世纪70年代,由贝尔实验室的大神Ken Thompson和Dennis M.Ritchie共同缔造。坊间传闻他们只是自己做一个游戏玩Space Travel,却开启了现代计算机语言演进...

2019-01-08 19:27:05 458 1

原创 抛砖引玉:Java中依赖冲突的解决方法

依赖冲突的解决方法早在去年的一次面试中,我就曾被问及依赖冲突如何解决,当时确实没有遇到过相关的问题,所以似乎并没有给出很满意的答案。因为在通常情况下,构建工具帮你解决了这些问题,好像一切都没有发生过,万事大吉。正所谓,“出来混,总是要还的”——最近在升级Spring版本时又遇到了这个问题,并且断断续续地困扰了我一段时间,到现在为止总算是完整地解决了。故有此文,以告慰我逝去的青春。依赖冲...

2018-07-15 01:13:16 2967

原创 源码阅读笔记:并发环境下的HashMap

并发环境下的HashMap本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键线程安全(Thread Safty) Thread safety is a c...

2018-05-21 00:34:10 507

原创 源码阅读笔记:AbstractQueuedSynchronizer

锁是面向使用者的,定义了使用者与锁交互的接口,隐藏了实现细节;同步器是面向所得实现者的,它简化了锁的实现方式,屏蔽了同步状态管理、线程的排队、等待与唤醒等底层操作。AbstractQueuedSynchronizer(以下简称AQS),就是所谓的同步器。更准确地说是队列同步器,描述了线程在获取共享资源时以FIFO的方式依次获取同步状态的一种同步模型。这个模型扩展了CLH同步模型,使得其适用于大部

2017-03-31 19:53:42 639

原创 Kafka与UnknownHostException

今天启动Kafka consumer时遇到了一个很诡异的问题,莫名其妙地抛出了UnknownHostException。同事的提醒下,将/etc/hosts中配置上了VM的主机名的映射,解决了问题。如今日志已不可追溯,但发现StackOverFlow已有此类问题。

2017-03-17 15:48:57 7002 2

原创 读书笔记:从happens-before原则说起

看Java内存模型(JMM, Java Memory Model)时,总有一个困惑。关于线程、主存(main memory)、工作内存(working memory),我都能找到实际映射的硬件:线程可能对应着一个内核线程,主存对应着内存,而工作内存则涵盖了写缓冲区、缓存(cache)、寄存器等一系列为了提高数据存取效率的暂存区域。但是,一提到happens-before原则,就让人有点“丈二和尚摸不

2017-03-09 20:10:52 5066 1

原创 源码阅读笔记:J.U.C CLH lock

java.utils.concurrency(J.U.C)中提供了一系列对锁的封装,如ReentrantLock、CountDownLatch等,而这其中用到的实现又都基于AbstractQueuedSynchronizer(AQS)。而CLH算法又是AQS实现的基础,所以网上查阅了一些资料,总结在此。 CLH lock is Craig, Landin, and Hagersten (CLH)

2017-03-04 19:38:23 675

原创 大量数据去重:Bitmap和布隆过滤器(Bloom Filter)

5TB的硬盘上放满了数据,请写一个算法将这些数据进行排重。如果这些数据是一些32bit大小的数据该如何解决?如果是64bit的呢?在面试时遇到的问题,问题的解决方案十分典型,但对于海量数据处理接触少的同学可能一时也想不到什么好方案。介绍两个算法,对于空间的利用到达了一种极致,那就是Bitmap和布隆过滤器(Bloom Filter)。

2017-02-27 17:46:27 60023 19

原创 源码阅读笔记:java.lang.Object

java.lang.Object是Java中所有类的父类(super class),是唯一一个没有父类的Java类。所有对象都会自动继承Object,通过Object可以了解一个对象最基本的行为。由于Object涉及到JVM加载的过程,很多方法都是native方法,可以通过下载OpenJDK源码来查看方法的具体内容。 Method Return Paremeters registerN

2017-02-21 00:46:34 2241 1

原创 抛砖引玉:为何java.lang.String被声明为final

java.lang.String为何被声明为final,不假思索地回答,当然是为了不能让client改变String的内置方法,得到了否定的答案。确实,这仅仅是表象。查阅了资料,总结一下其根本原因。

2017-02-18 14:47:22 1329

转载 thrift框架简介

Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Small

2015-08-08 10:45:21 2547

原创 thrift安装过程中遇到的错误

根据官网的教程,thrift安装步骤还是很简单的。但是在安装过程中可能遇到很多问题,目前遇到过的在此总结一下。

2015-07-30 20:18:24 909

转载 字符串搜索之Boyer-Moore算法

在用于查找子字符串的算法当中,BM(Boyer-Moore)算法是目前被认为最高效的字符串搜索算法,它由Bob Boyer和J Strother Moore设计于1977年。 一般情况下,比KMP算法快3-5倍。该算法常用于文本编辑器中的搜索匹配功能,比如大家所熟知的GNU grep命令使用的就是该算法。

2015-07-29 19:54:41 451

转载 RPC学习----Thrift快速入门和Java简单示例

一.什么是RPC?二.什么是Thrift?三.下载,安装,配置ThriftBuilding from sourceInstalling四.Thrift基本概念五.Java实例

2015-07-22 15:40:32 793

转载 HDFS常见shell命令

主要介绍了HDFS中常见的shell命令,在MapReduce开发中经常需要使用。

2015-06-30 18:57:00 555

原创 [Leetcode] Basic Calculator

Basic_Calculator要求实现一个只包含加减法和括号的计算器,而且不需要判断输入合法性。为了偷懒,先按递归写了一版。递归思路比较清晰,每次遇到括号直接递归求出括号内的计算结果。//递归思路:超时class Solution {public: int calculate(string s) { int start = 0; return calcu

2015-06-23 17:56:24 370

原创 [Leetcode]Add and Search Word - Data structure design

题目来源:Add and Search Word - Data structure design 写过Implement Trie (Prefix Tree) 就不难想到这题又是典型的Trie(前缀树或者叫字典树),这个WordDictionary就是建立在Trie之上的,addWord和search就是Trie的插入和查找,唯一不同之处是search引入了正则符号(.)表示”任意单个字母“。需要

2015-05-19 16:29:49 402

原创 [Leetcode]Minimum Size Subarray Sum

题目要求出一个仅包含正数的数组nums中最小的子数组(连续)使得子数组中所有元素的和大于一个给定的数s,并返回该子数组的长度。 题目来源: Minimum Size Subarray Sum解法一:暴力搜索 O(n^2)class Solution {public: int minSubArrayLen(int s, vector<int>& nums) { int min

2015-05-18 20:14:40 423

转载 Geohash核心思想

zz: http://www.open-open.com/lib/view/open1417940079964.htmlhttp://blog.charlee.li/geohash-intro/引子机机是个好动又好学的孩子,平日里就喜欢拿着手机地图点点按按来查询一些好玩的东西。某一天机机到北海公园游玩,肚肚饿了,于是乎打开手机地图,搜索北海公园附近的餐馆,并选了其中一家

2015-05-12 10:35:04 1070

转载 XSHELL/SecureCRT使用rz指令上传乱码/出错问题解决

最近使用XShell需要频繁从windows传输文件到Linux机器上,rz指令在传输小文件时十分好用。随着文本量增大,出现了各种乱码以及传输失败等,有时甚至导致XShell崩溃。下面将简要介绍如何解决这类问题。linux 与 windows 文件传输:rz/szZModem is a full-duplex file tra

2015-05-06 15:53:11 22097 3

转载 Python中使用中文出现UnicodeDecodeError的原理和解决方法

转自:http://blog.wahahajk.com/2009/08/unicodedecodeerror-ascii-codec-cant.htmlapp engine寫中文最常遇到的就是編碼錯誤其中又以"UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in ra

2015-05-06 10:31:55 1189

转载 HIVE UDF整理

字符串函数字符串长度函数:length语法: length(string A)返回值: int说明:返回字符串A的长度举例:hive> select length(‘abcedfg’) from dual;7字符串反转函数:reverse语法: reverse(string A)返回值: str

2015-04-22 11:13:20 533

空空如也

空空如也

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

TA关注的人

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