Protected: Revival Plan 01 in 2019

BackgrounTarget: RevivalTime: range from 2019.09.01 to 2020.02.29Plan 01 for 2019.09.01 ~ 2019.10.3DSOutputSolved problems up to 2.16 * 61 = 132 problems —— 46 34.8%4 contests of leetcode.com —— 4 100%InputVideo 4 —— 1 25%Article 4 —— 3 75Theoretical knowledgStorag《MySQL技术内幕》20% —— 285/437 326.1%(总65.2%)《Redis深度历险》20% —— 9/39 115.5%(总51.3%Sytem DesigVideo cumulative time 10 hours & Lea... Read More

《Redis深度历险》Chapter 1 Learn Note

1.7 布隆过滤器其数据结构包含一个大型的位数组和若干个不一样的无偏hash函数。所谓无偏即能够把元素的hash值计算得比较均匀,让元素被映射到位数组中的位置比较随记。输入预计元素数量:n错误率:输出位数组长度 lhash函数的最佳数量 [code lang="cpp"k = 0.7 * (l / nf = 0.6185 ^ (l / n[/code空间占用估计http://krisives.github.io/bloom-calculator误判率[code lang="shell"f = (1 - 0.5^t) * k # k 是 hash函数的最佳数量[/code应用爬虫重复URL过滤NoSQL数据库领域,降低磁盘IO垃圾邮箱过滤1.9 漏斗限流维护漏斗属性:漏斗容量、漏嘴流水速率、漏斗剩余容量与上一次漏水时间。每次灌水(请求)前,进行计算给漏斗腾出空间。能够腾出多... Read More

《DATA STRUCTRUES A Psuedocode Approach with C++》Chaper 3. Linked List Learn Note

3-1 LINEAR LIST CONCEPTLinear lists can be divided into two categories: general and restricted.In a general list, data can be inserted and deleted anywhere and there are no restrictions on the operations that can be used to process the list. Such as the random list, ordered list.In a restricted list, data can only be added or deleted at the ends of the structure and processing is restricted to op... Read More

《MySQL High Availability》Chapter 1&3 Learn Note

Part I. High Availability and ScalabilitOne of the database features that supports both high availability and scalability in an application is replication.Replication is used to create redundancy in the database layer as well as to make copies of the databases available for scaling the reads.Part I covers how you can use replication to ensure high availability and how you can scale your system.Chapter 1 Introductio... Read More

《DATA STRUCTRUES A Psuedocode Approach with C++》Chapter 2. Searching Learn Note

Chapter 1 Introductio1-2 The Abstract Data Typ什么事抽象数据类型(ADT)?下面是我的理解描述的是一种抽象的数据,那么这个数据的抽象属性该如何描述呢?定义一个(抽象的)数据,其中包含数据的存储方式,一些操作方法。但是,对外屏蔽其实现细节。也就是说,对于使用者而言,知道它能做些什么事情,但不需要知道它是如何实现的。即抽象数据类型。举例来说,C++中的Stack,Queue,Java中的Class即为抽象数据类型的例子。Chapter 2 Searchin2-1 List SearcheSequential SearcSequential Search(顺序搜索Sentinel Search(哨兵搜索哨兵搜索,相对于顺序搜索,主要是通过在序列尾部追加目标值,进而减少在搜索过程中下标索引的判断次数,以提升搜索性能。Probability Search(概率搜索... Read More

Protected: Study Plan for Summer Vacation in 2019

目标DSA《DATA STRUCTURES A Psuedocode Approach with C++》(英文版) 10%System Design & OODNULLStorage《Redis深度历险》20%《High Performance MySQL》(英文版)1%Computer Language《C++ Primer Plus》0时间2019年07月08号 ~ 2019年8月31号(共计54天完成度7.75相关笔记http://blog.ihuxu.com/data-structrues-a-psuedocode-approach-with-c-learn-notehttp://blog.ihuxu.com/data-structrues-a-psuedocode-approach-with-c-chaper-3-linked-list-learn-notehttp:... Read More

Protected: 2019算法与数据结构学习清单

字符串最长公共子串(Longest Common Substring)最长公共子序列(Longest Common Sequence)字符串 & 文件内容Diff滚动哈希(Rolling Hash)- Rabin-Karp string-searchingrsyncSuffix arrayMinimal string(最小表示法)数论负进制(如:-2进制)的转换与加法运算图论Prim's Minimum Spanning Tree(MST Read More

2018年度回忆与总结 – 算法

工作特价车这个项目周期持续半年之多,应该算是成长最多的一个项目了。在产品侧,能够深入到用户的角度与产品沟通产品形态,但尚浅。在技术侧,由于前期的积累与沉淀,能够快速的判断技术方案,给出技术排期,快速迭代。在运营侧,参与每周的运营周会,学习产品效果的评估分析、问题分析与解决的过程,但尚浅。整个项目,对于沟通能力、产品分析能力、业务技术熟悉程度与产品运营的过程有了一定的增长与认识。提升了相当的软实力。服务化改造针对现有的业务系统进行代码与架构级别的改造,这里我参与了一次代码级别的改造(未上线)。整体思路是围绕DDD(Domain-Driven Design)思想进行系统分层,按业务概念收敛模块,按产品形态收敛系统组件。在这个过程中,对于系统的建模能力,业务的抽象分析能力有了一定的提升。计算机算法主要关注点在LeetCode上,从2018年9月份开始,累计刷题189道。在基础算法与数据结构方面,... Read More

[XChat-Server开发笔记]2019.02.15

http://blog.ihuxu.com/xchat-server-development-notes-list在👆上面,可以找到[XChat-Server开发笔记]主题相关的所有文章1. Log4增加Log4j插件扩展2. 数据包报文头协议设计参考QQ的协议:https://www.pediy.com/kssd/pediy10/83047.htm0000: 02 ->表示QQ数据包的起点。0001 - 0002: 为QQ客户端版本号对于QQ2008为:1221。0003 - 0004: 就是我们所说的QQ命令。根据试验发现命令为0016表示该包包含发出聊天记录的信息。0005 - 0006: 2B的序列号。0007 - 000A: 4B的发送消息的QQ号码。000B - 倒数第二字节: 用改进的TEA算法加密的包含聊天内容的数据包。(里面有很多丰富的信息如接收信息的QQ号码IP地... Read More

[iOS Swift 学习笔记]面向对象篇

http://blog.ihuxu.com/ios-swift-learning-notes-summary在👆,可以查看所有关于[iOS Swift学习笔记]主题相关的文章关键点在Swift中,默认同一个项目中(同一个命名空间下),所有的类都是共享的,不需要impor构造函数作用给成员分配空间初始化成员变量调用父类的构造函数 - 给父类属性分配空间 & 设置初始值如果子类重载父类的构造函数,且子类没有重写父类的构造函数,那么此时子类不会对外部提供init方法了关键字init 构造函数override 重写orderload 重载KVC构造函数定义模型属性的时候,如果是对象,通常是可选在需要的时候创建避免写构造函数,可以简化代码如果是基本数据类型,不能设置成可选的,而且要设置初始值,否则KVC会崩溃如果需要使用 KVC 设置数值,这个属性不能是 private 的使用KVC方法之前,应... Read More

[XChat-Server开发笔记]2019.01.28 – 30

http://blog.ihuxu.com/xchat-server-development-notes-list在👆上面,可以找到[XChat-Server开发笔记]主题相关的所有文章1. 未登录的客户端线程池采用单例模式(Singleton Parttern)设计未登录的客户端线程池,采用静态内部类的形式保证其线程安全。之所以静态内部类能够保证单例模式的线程安全,是因为Java在底层针对类的加载已经做了同步处理,已经是线程安全的了。这种方式的优点懒加载,只有在需要的时候进行加载,节省资源在多线程共享使用一个单例时,确保线程安全关于线程安全下的单例模式的使用,参考文章:http://blog.ihuxu.com/java-singleton-pattern-usages-for-thread-safe1.1 客户端线程池的主要数据结构1.1.1 基于链表的阻塞队列(Linked B... Read More

[iOS Swift学习笔记]函数篇

http://blog.ihuxu.com/ios-swift-learning-notes-summary在这里,能够找到所有关于该主题的文章内容相关代码目录:iOS高级教程swift3.0微博项目/02/002-函数的定义 at git@github.com:GenialX/iOS-Swift-learning.gi函数函数的定义外部参数(实参的描述)省略外部参数(使用_实现)参数的默认值通过设置函数的默认值,在调用的时候,可以任意组合有默认值的型参的形式,而不用定义多个型参格式的函数无返回值的函数无返回值的函数,主要用在闭包相关代码目录:iOS高级教程swift3.0微博项目/02/003-闭包的定义 at git@github.com:GenialX/iOS-Swift-learning.gi闭包在Swift中,函数是特殊的闭包主要的应用场景异步执行完成回调控制器间回调自定义... Read More

[iOS Swift 学习笔记]基础篇

http://blog.ihuxu.com/ios-swift-learning-notes-summary在这里,可以看到所有该主题相关的学习笔记文章。时间2019.01.2内容基础数据结构变量(var) 与 常量(let)运算符可选项概念 & 解包方式 & ?? 运算符流程控制语句if let & guard letif var & guard varswitchfor字符串遍历长度拼接集合数组定义遍历增、删、改容量合并字典定义遍历增、删、改合并文章来源:胡小旭 => [iOS Swift 学习笔记]基础篇 Read More

[iOS Swift 学习笔记]前言

前言学习资源:传智播客的《iOS高级教程swift3.0微博项目》代码笔记:git@github.com:GenialX/iOS-Swift-learning.git 目录:iOS高级教程swift3.0微博项目学习方式:视频为什么选择视频学习的方式?相对于看书有哪些优点?乐趣更高,不容易困倦视频资源会高效率的讲解实战中的应用技巧,比如语法特性相关、xCode集成开发环境相关、项目架构设计相关等等笔记列表http://blog.ihuxu.com/ios-swift-learning-notes-basihttp://blog.ihuxu.com/ios-swift-learning-notes-functionhttp://blog.ihuxu.com/ios-swift-learning-notes-object-oriented文章来源:胡小旭 => iOS Swift 学习笔... Read More

小旭讲解 LeetCode 399. Evaluate Division 并查集

原题英文 —— Evaluate DivisioEquations are given in the formatA / B = k, whereAandBare variables represented as strings, andkis a real number (floating point number). Given some queries, return the answers. If the answer does not exist, return-1.0.Example:Givena / b = 2.0, b / c = 3.0.queries are:a / c = ?, b / a = ?, a / e = ?, a / a = ?, x / x = ? .return[6.0, 0.5, -1.0, 1.0, -1.0 ].The input is:vec... Read More

小旭讲解 LeetCode 39. Combination Sum 回溯法

原题Given asetof candidate numbers (candidates)(without duplicates)and a target number (target), find all unique combinations incandidateswhere the candidate numbers sums totarget.Thesamerepeated number may be chosen fromcandidatesunlimited number of times.NoteAll numbers (includingtarget) will be positive integers.The solution set must not contain duplicate combinations.Example 1Input: candidates... Read More

动态规划与分治法的思考

如果一个问题具有最优子结构的性质,此外子问题具有重叠性质,那么可以采用自底向上的动态规划的思路进行求解。同时,往往可以用递归的方式自顶向地进行求解,即分治法。如果用分治法去求解这个问题时,能够利用备忘录法进行避免对于子问题的重复计算,那么其计算的效率可以和动态规划的计算效率相比。文章来源:胡小旭 =>动态规划与分治法的思考 Read More

分治法与回溯法的思考

共同的递归性质在广义上来说,所有递归的算法都属于分治法。无非是将问题分解成一个规模更小的问题,还是将问题分解成若干个,甚至和输入规模多项式级别的子问题。那么对于前者,有些作者称作是减治法,后者称作分治法。那么对于回溯法(以深度优先搜搜方式进行)来说,目前为止我见过的都是通过递归的形式来实现的,那么从这个意义上来讲,回溯算法就是分治法的一种。回溯状态的有无再说,之所以称作是回溯法,是因为在搜索的过程中需要回溯到问题的某个状态,所以这往往需要保存回溯时的一些状态属性。然而,分治法通常并不需要考虑回溯状态的保存。分解问题的规模分治法往往是将问题分解成若干个子问题的形式,然而回溯法往往是将问题分解成规模更小的一个子问题。由于分治法将问题分解成若干个子问题,故当前问题的解需要依赖于若干个子问题,也就是若干个搜索路径的解,所以重点在于如何合并子问题的解;而然回溯法问题规模就为1个,当前的搜索路径的问题... Read More

一只青蛙跳出来的分治法、回溯法与动态规划

从2018年7月份开始,基础薄弱的我从0开始刷LeetCode题目。目的性很明确,也很简单——就是为了提高解决问题的思考实践能力,也为了提升自己的核心竞争力。也许,牛人会觉得这并不算什么竞争力。是的,我同意的。但,这是我目前能做的比较基础的事情罢了。迄今(2018年12月28日)为止,已经刷了108道题目。顺序基本上是按照出现的频率(Frequency)来刷的,这个频率在LeetCode上需要订阅后才可以看得到。那么在刷了108道题目后,有那么一些题目会觉得“似曾相识”了,也会有一种触类旁通的感觉了。所以,我觉得应该适当放慢刷题的速度,同时做做总结了。所以,计划了一项视频解说计划,在YouTubeh和B站都建立了《小旭解说算法之路》的频道,欢迎订阅,多多提建议。那么,进入正题。经过了108道题的历练之后,我来说说对于分治法、回溯法和动态规划的理解。我觉得他们三者是一个相互有交集的概念,并不... Read More

小旭讲解 LeetCode 53. 最大子序和 动态规划 分治策略

原题Given an integer arraynums, find the contiguous subarray(containing at least one number) which has the largest sum and return its sum.ExampleInput: [-2,1,-3,4,-1,2,1,-5,4]Output: Explanation:[4,-1,2,1] has the largest sum = 6.Follow upIf you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.题解动态规划哔哩哔哩 动态规划YouTube 动态规划通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。... Read More

[LeetCode]743. Network Delay Time

原题There are N network nodes, labelled 1 to N.Given times, a list of travel times as directed edges times[i] = (u, v, w), where u is the source node, v is the target node, and w is the time it takes for a signal to travel from source to target.Now, we send a signal from a certain node K. How long will it take for all nodes to receive the signal? If it is impossible, return -1.NoteN will be in the ... Read More

[LeetCode]893. Groups of Special-Equivalent Strings

原题You are given an array A of strings.Two strings S and T are special-equivalent if after any number of moves, S == T.A move consists of choosing two indices i and j with i % 2 == j % 2, and swapping S[i] with S[j].Now, a group of special-equivalent strings from A is a non-empty subset S of A such that any string not in S is not special-equivalent with any string in S.Return the number of groups o... Read More

[LeetCode]Valid Palindrome II

原题Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome.Example 1Input: "aba"Output: TruExample 2Input: "abca"Output: TruExplanation: You could delete the character 'c'.NoteThe string will only contain lowercase characters a-z. The maximum length of the string is 50000.思路水题。判断是否是回文字符串最简单的方式就是从左右两端逐步向中心逼近(双指针),如下代码[code lang="cpp"for (in... Read More