- 博客(116)
- 收藏
- 关注
原创 MySQL索引背后的数据结构及算法原理
1、索引的本质索引:数据结构 查询算法(顺序查找、二分查找、二叉查找树等),不同的查询算法适用于不同的数据结构;2、b tree和b+treeB+树内节点不存储数据,所有 data 存储在叶节点导致查询时间复杂度固定为 log n。 B-树查询时间复杂度不固定,与 key 在树中的位置有关,最好为O(1)3、为什么使用b tree和b+tree作为索引B-/+Tree作为索引的理论基础; 索引
2017-10-15 18:10:09 490
原创 kafka深度解析(1)
pull vs push和传统的消息队列系统一样,producer向broker push数据;consumer从broker pull数据;push模式push模式很难适应消费速率不同的消费者,因为消息发送速率是由broker决定的。push模式的目标是尽可能以最快速度传递消息,但是这样很容易造成consumer来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。pull模式pull模式可
2017-08-07 22:39:55 443
原创 python数据爬虫---拉钩网
1、拉勾网数据分析一般思路进入到拉勾网,输入相应的职位,搜索;查看源码,没有我们想要的数据,于是抓包发现:拉勾网采用Ajax技术,数据以格式存储===》 发送的请求:Request URL:https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=falseRequest Method:POSTStatus Code:20
2017-08-02 00:21:28 944
翻译 python爬虫--构建网络爬虫的工程要点
图论中的遍历算法:广度优先搜索BFS,深度优先搜索DFS; 互联网就是一张图,每个网页是一个节点,超链接就是连接网页的弧; 从任何一个网页出发,利用图的遍历算法,自动访问到每个网页,并把他们存起来–网页爬虫;1、BFS还是DFS?理论上来说,这两个算法都是可行的; 考虑到实际因素,互联网是动态的,不是静态不变的,所以网络爬虫问题更应该定义为“在有限的时间里最多的爬下最重要的网页”。1)最重要的
2017-07-30 22:52:08 638
原创 yaml语言
编程免不了要写配置文件,该如何写配置呢?json,xml…?YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。语法支持的数据结构:对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)纯量(scalars):单个的、不可再分的值对象:
2017-07-28 23:34:32 283
原创 web推送--websocket协议
1、背景问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 因为:HTTP 协议有一个缺陷:通信只能由客户端发起;如果客户端向获取某些内容,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息; http是单向的,因此,当服务器有变化,客户端只能使用”轮询”:每隔一段时候,就发出一个询问,了解服务器有没有新的信息;轮询的
2017-07-28 23:25:28 307
原创 主题模型LDA
主题模型主题建模或主题抽取 在机器学习和自然语言处理等领域,用来在一系列文章中发现抽象主体的一种统计模型;主题抽取的目的:面对浩如海的文章,怎么能够把相似的文章聚合起来,并且提取描述聚合后主题的重要关键词;主题抽取的方法:LDA(Latent Dirichlet allocatioin,隐含狄利克雷分布;LDA: 无监督学习; 软聚类(聚类到多个簇,聚类一般聚类到一个簇) 降维(
2017-07-23 21:57:38 553
原创 python爬虫--BeautifulSoup
BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python; 1、导入 from bs4 import BeautifulSoup bs = BeautifulSoup(html) 2、对象 Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种: Tag , NavigableString
2017-07-16 23:49:58 276
原创 python爬虫--urllib2和urllib区别
urllib和urllib2是url 模块,但提供不同的功能: 1)urllib2可以接受一个request 对象,设置url 请求的headers; urllib只能接受一个url; 2)urllib提供了urllencode方法–编码get查询字符串,但是urllib2中没有该方法;
2017-07-16 23:31:13 276
原创 python爬虫--urllib
urlib:URL handling modules; urllib is a package that collects several modules for working with URLs:urllib.request for opening and reading URLsurllib.error containing the exceptions raised by urllib
2017-07-16 23:14:42 388
原创 python爬虫--urllib2和requests
- 1、实例1使用get方法从http://example.test/获取资源并且查看返回代码,content-type头信息,还有response的主体内容。1.1 使用urllib2实现import urllib2 url = 'http://example.test/' response = urllib2.urlopen(url) response.getcode() //200
2017-07-16 22:34:13 529
原创 python爬虫---requests
Requests 是一个 Python 的 HTTP 客户端库。模拟网络请求非常推荐Requests,简单易用。1、发送请求Requests 发送网络请求; 1)导入 Requests 模块 import requests 2)获取某个网页 r = requests.get(‘https://github.com/timeline.json‘),其中 r 的 Response 对象
2017-07-16 18:53:27 303
原创 maven--依赖管理
maven:项目管理工具,贯穿了整个项目证明周期:编译、测试、打包、发布等。maven的依赖管理十分强大。最简单的依赖依赖是使用maven坐标来定位的(groupId, artifactId, version):<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.4</versi
2017-07-11 23:38:11 271
原创 爬虫学习路程
为什么学爬虫?为什么用python?爬虫应用; python效率高;了解python基础list、dict; 爬下来的数据要用python的数据框架来存储,list、dict是基础;另外还需要numpy、pandas; 学习python的数据框架推荐书籍:利用python进行数据分析; 学习http基础爬虫的一些python包urllib、urllib2、requests、BS4、scrap
2017-06-29 00:26:12 672
原创 分布式爬虫学习
静态网页爬虫爬虫的基础技术: HTML CSS 选择器JavaScript 介绍lxml 及 XPathPython 里的网络请求高速位缓存设计:BloomFilter登录及动态网页的抓取表单网站登录及CookieHeadless 的浏览器:PhantomJS浏览器的驱动:Selenium动态网页数据获取多线程与过进程的爬虫线程与进程Python
2017-06-28 23:45:34 364
原创 软件密码学基础---非对称加密
1、基础密钥对:公钥和私钥; 特点:如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密; 一般:公钥用来加密信息,私钥用来数字签名;2、通信过程分析第一: A和B通信; 首先,B利用非对称加密算法(比如RSA),生成一对密钥,包括公钥和私钥,该对密钥的特点:公钥加密的特点只能私钥解,私钥加密的数据只能公钥解; 其次,B将公钥传递给A,
2017-06-25 23:57:23 928
原创 字符串系列---最长公共子串
题目 给定两个字符串,求两个字符串的最长公共字串;/* * 动态规划方法: * c[i][j]表示Xi和Yj的最大Substring的长度; * 初始化: * c[0][j]=0 * c[i][0]=0 * 动态转移方程: * 如果xi == yj, 则 c[i][j] = c[i-1][j-1]+1
2016-12-02 21:01:05 324
原创 字符串系列---字符串的统计字符串
题目求字符串中的统计字符串。即,对于字符串”aaabbadddffc”,返回“a_3_b_2_a_1_d_3_f_2_c_1”;分析记录变量 sb(最终结果);num每个连续字符的次数; * 初始化变量:sb中加入第一个字符,num=1; * 从1开始遍历str,遍历到第i位置; * 判断str[i]==str[i-1] 则表示连续字符还没有数完,nu
2016-11-26 14:53:19 722
原创 字符串系列---string-to-integer-atoi
题目输入一个由数字组成的字符串,把它转换成整数并输出。例如:输入字符串”123”,输出整数123。给定函数原型int StrToInt(const char *str) ,实现字符串转换成整数的功能,不能使用库函数atoi。分析基本思路便是:从左至右扫描字符串,把之前得到的数字乘以10,再加上当前字符表示的数字:int StrToInt(const char *str){ while (*
2016-11-24 02:05:54 403
原创 字符串系列---palindrome-partitioning
题目Given a string s, partition s such that every substring of the partition is a palindrome. Return all possible palindrome partitioning of s. For example, given s =”aab”, Return [ [“aa”,”b
2016-11-24 01:18:57 402
原创 字符串系列---最长回文字串
题目Given a string S, find the longest palindromic substring in S. * You may assume that the maximum length of S is 1000, * and there exists one unique longest palindromic substring. * 最长回文字串方法1暴
2016-11-23 16:07:04 265
原创 自动装箱和自动拆箱源码分析
基本类型Java的四类八种基本数据类型 自动装箱执行Integer i=2将int型值赋值给Integer类型,会进行自动装箱: 执行该赋值语句时会调用Integer类中valueOf方法进行自动装箱:public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= I
2016-11-22 20:09:13 304
原创 字符串系列---longest-substring-without-repeating-characters
题目 Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for “abcabcbb” is “abc”, which the length is 3. F
2016-11-21 02:20:34 532
原创 设计模式---单例模式
单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。饿汉式单例//饿汉式单例类.在类初始化时,已经自行实例化 public class Singleton1 { //私有的默认构造子 private
2016-11-19 22:40:10 281
原创 缓存策略---LRU缓存
1、介绍LRU是Least Recently Used 的缩写,翻译过来就是“最近最少使用”。 缓存有一定的大小限制,当没有满时,可以向缓存中添加;当满时,LRU缓存把最近最少使用的数据移除,让给最新读取的数据; 而往往最常读取的,也是读取次数最多的,所以,利用LRU缓存,我们能够提高系统的performance。2、LRU cache的实现按照访问顺序维护缓存中数据,当访问一个时,则需要改变该
2016-11-19 22:08:28 815
原创 动态规划系列---求数组中两个元素差的最大值
题目 求数组中两个元素差的最大值(后面的元素减去前面的元素);对应实际生活中的股票买卖,找出可能的最大收益;思路 类似于求数组连续和的最大值; 保存最大差值和最小值,遍历数组,如果当前元素-min>最大差值,则更新最大差值;如果当前元素<最小值,则更新最小值;实现public static int max_difference(int[] a){ int len=a.lengt
2016-11-15 21:55:22 4051
转载 Java transient关键字使用小记
Java transient关键字使用小记 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和
2016-11-08 00:49:51 254
转载 hive数据倾斜
在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均值能代表的价值降低。Hive的执行是分阶段的,map处理数据量的差异取决于上一个stage的reduce输出,所以如何将数据均匀的分
2016-11-07 22:02:34 293
原创 二叉树系列---symmetric_tree
题目Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For example, this binary tree is symmetric: 1 / \ 2 2 / \ / \ 3 4 4 3But the follow
2016-11-05 22:25:56 315
原创 二叉树系列---same-tree
题目 给定两颗二叉树,判断这两颗二叉树是否相同; Two binary trees are considered equal if they are structurally identical and the nodes have the same value.实现 递归:判断根节点的值;判断左子树和右子树;public boolean isSameTree(TreeNode p, Tree
2016-11-05 17:59:48 276
原创 二叉树系列---recover_binary_search_tree
题目在一个二叉查找树中,有两个节点被错误的交换了,实现一个函数得出正确的二叉查找树;思路利用二叉查找树性质:中序遍历有序; *先得到中序序列; * 正向变量中序序列,遇到逆序的就break; * 反向遍历中序序列,遇到逆序的就break; * 交换两个break处的元素即可;实现public void recoverTree(TreeNode root){
2016-11-05 17:44:51 312
原创 二叉树系列---判断给定的二叉树是否为二叉查找树
题目判断给定的二叉树是否为二叉查找树方法1递归判断:先判断左子树是否为二叉查找树;再判断右子树;最后判断根(根小于左子树的最大节点值,大于右子树的最左节点值);public boolean isValidBST(TreeNode root){ if(root==null){ return true; } if(root.left
2016-11-05 16:40:24 822
原创 二叉树系列---求包含n个节点的二叉查找树的种类数
题目求包含n个节点的二叉树的种类数;方法1设dp[i]表示共有i个节点时,能产生的BST树的个数 n == 0 时,空树的个数必然为1,因此dp[0] = 1 n == 1 时,只有1这个根节点,数量也为1,因此dp[1] = 1 当根节点元素为 1, 2, 3, 4, 5, …, i, …, n时,基于以下原则的BST树具有唯一性:
2016-11-05 15:19:26 5748 1
原创 二叉树系列---判断二叉树是否为平衡二叉树
题目Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ
2016-11-04 04:53:44 257
原创 二叉树系列---path-sum-II
题目Given a binary tree and a sum, find all root-to-leaf paths where each path’s sum equals the given sum. For example: Given the below binary tree andsum = 22, return [ [5,4,11,
2016-11-04 04:36:27 397
原创 二叉树系列---path-sum
题目Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum. For example: Given the below binary tree andsum
2016-11-04 04:21:26 386
原创 二叉树系列---标记二叉树中每个节点的next指针
题目Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }Populate each next pointer to point to its next right node. If t
2016-11-04 04:07:02 1938
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人