Glyme's Notes

just Google it


  • 首页

  • 分类

  • 归档

  • 标签

Spark Local模式可用但Standalone报错的解决方法

发表于 2016-09-13   |   分类于 technology   |  
使用 Spark 的 Standalone 模式部署集群遇到了很多坑,记录一下。 java.lang.ClassCastException这个 stackoverflow 上面也有相关问题,但也没人解决,自己鼓捣了半天后,发现问题出在 spark-submit 的 jar 包名称含有空格…文件名去掉空格后就不会报错了 各种ClassUndefined问题首先检查一下有没有使用 sbt-assembly 把第三方 jar 包打包进去,或者使用 classpath 把jar包include进去。然后注意提交的 jar 包要在所有Worker上都可见,如果使用的posix文件名,要把jar包传到每一台Worker上,路径名称都要相同。
阅读全文 »

MCMC&Gibbs Sampling学习

发表于 2016-05-14   |   分类于 science   |  
给定一个简单的概率分布$p(x)$(比如均匀分布、正态分布),生成它的样本是比较容易的。但是当目标概率分布很复杂时,要生成它的样本就会变得十分困难。MCMC(蒙特卡洛马尔科夫方法)算法就是一种常用的生成复杂目标概率分布样本的算法。 MCMC的基础是非周期马氏链的平稳特性:从任意状态出发,最后都会到达平稳状态。当达到平稳状态后,每一次采样得到的样本$x$都服从平稳分布$\pi$。如果平稳分布$\pi$就是目标分布的话,那么我们就找到了一种生成目标概率分布样本的方法,MCMC就是使得$\pi$成为目标分布的方法。 具体算法推导参考:MCMC和Gibbs Sampling MCMC需要已知目标概率分布$p(x)$和一个任意分布$q(x|y)$ 算法如下: 初始化马氏链状态X=x0 对t=0,1,2…循环采样 采样$y\sim q(x|y)$ 从均匀分布采样$u\sim U(0,1)$ 如果$u<\alpha(x_y,y)=min\{\frac{p(y)q(x_t|y)}{p(x_t)q(y|x_t)},1\}$,接受新样本y,X=y,否则$X=x_t$ 选取分布$q(x|y)$时,往往需要满足对称性,$q(x|y)=q(y|x)$,也就是x->y与y->x的概率相同,这样$\alpha(x_y,y)=min\{\frac{p(y)}{p(x_t)},1 ...
阅读全文 »

设计模式解析学习

发表于 2016-05-09   |   分类于 technology   |  
面向对象范形面向过程:功能分解将一个大任务分解为一个个小任务,但是主程序需要承受的责任太多(为每个子任务分配资源,确保子任务正确运行,etc) 功能分解往往导致低内聚,高耦合。 面向对象对象具有责任,降低主程序的复杂操作。 封装使得耦合性降低。
阅读全文 »

Java concurrent包学习

发表于 2016-05-09   |   分类于 technology   |  
JDK5.0对java.util.concurrent包做了大量的改进,吸收了大量的由 Doug Lea 编写的util.concurrent包中的内容。 这里记录一下我对java.util.concurrent包学习的总结。 摘要自其他文章 JDK 5.0 中的并发改进可以分为三组: JVM 级别更改。大多数现代处理器对并发对某一硬件级别提供支持,通常以compare-and-swap (CAS)指令形式。CAS 是一种低级别的、细粒度的技术,它允许多个线程更新一个内存位置,同时能够检测其他线程的冲突并进行恢复。它是许多高性能并发算法的基础。在 JDK 5.0 之前,Java 语言中用于协调线程之间的访问的惟一原语是同步,同步是更重量级和粗粒度的。公开 CAS 可以开发高度可伸缩的并发 Java 类。这些更改主要由 JDK 库类使用,而不是由开发人员使用。 低级实用程序类 – 锁定和原子类。使用 CAS 作为并发原语,ReentrantLock 类提供与 synchronized 原语相同的锁定和内存语义,然而这样可以更好地控制锁定(如计时的锁定等待、锁定轮询和可中断的锁定等待)和提供更好的可伸缩性(竞争时的高性能)。大多数开发人员将不再直接使用ReentrantLock 类,而是使用在 ReentrantLock 类上构建的高级类。 高级实用程序类。这些类实现并发构建块 ...
阅读全文 »

杂七杂八的Linux Shell脚本学习

发表于 2016-05-09   |   分类于 technology   |  
本文为[Linux Shell Scripting Cookbook]学习记录,枚举了一些常用的命令。 trtr [options] set1 set2translate 命令,用于将输入字符从set1映射到set2。如tr [A-Z] [a-z]将字符全部转换为小写。 options有许多用法,-s可以压缩字符,-d可以删除字符 sortsort [options] filesort 命令,用于将输入按行排序。 options用法, -r逆序排序,-u相同行只输出一次 uniquniq 命令,用于输出唯一行,注意uniq只对相临行作检测,也就是说123123321123 依然输出123123321123 因此uniq常常和sort联合使用。常用选项-c,统计出现数目。 cut, pastecut切分列,paste粘贴列 sedsed替换文本模式,删除文本模式 awkawk太博大精深了,参考->linux awk 命令详解 grep查找模式,常用选项-o,仅输出匹配的内容。grep也常常和sort,uniq等联合使用,比如统计词频可以这么做:1grep -o '\b\w+\b' xxxfile|sort|uniq -c tar, gzip, ziptar创建归档文件,gzip创建压缩文件,zip可以同时完成归档和压缩功能。
阅读全文 »

自己实现一个vector类

发表于 2016-04-09   |   分类于 technology   |  
准备面试,看到很多人说遇到面试官让自己在纸上写一个std类,所以我就拿std::vector作为练手。 主要思想就是使用swap保证异常安全性,遵守Effective C++的一些item,比如从copy-constructor和assign-constructor提取共同的代码组成init函数。 虽然代码比较简单,但还是出现了越界等问题调试了很久,可能手太生了,以后得多练练!123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131#include <utility>#include <algorithm>#include <iostream>class myvec {private: int *mdata = nullptr ...
阅读全文 »

Leetcode No.35 Sort Colors

发表于 2016-03-09   |   分类于 technology   |  
Sort Colors是一个排序问题,但是元素类型只有三种(RWB),如果类型只有两种的话,很容易可以想到使用 quick sort 中的一次 partition 来实现。三种元素的排序可以使用两次 partition 来实现,但是时间复杂度就超过了 N,而题目要求 One-Pass 运算完毕。 这里添加使用两个指针 red, blue,red对应 partition 中的 small 指针,red 指针总是指向最后一个 red 元素,blue 指针总指向最后一个 blue 元素。初始化时, red 指向 left-1, blue 指向 right+1。当 red 和 blue 都被聚在头和尾时, white 也被聚集在中间,完成三种元素的排序。 代码如下,注意当每次交换元素后,如果交换过来的元素不是 white,则需要对该点再次进行分类。可以看到每个点都只被判断一次就交换到正确的位置,因此实现了 One-pass 的要求。12345678910111213141516171819202122232425262728293031323334class Solution {public: void sortColors(vector<int>& nums) { int red=-1; int blue=nums ...
阅读全文 »

内网通过代理服务器并使用Shadowsocks联网

发表于 2016-01-09   |   分类于 technology   |  
通过CCProxy可以便捷的搭建一个代理服务器,但是如何通过该代理服务器上的Shadowsocks连接网络呢?这就需要用到端口转发(Port Forwarding)的功能,Windows7以上的系统已经自带简单的端口转发功能。1netsh add v4tov4 listenaddress=IPADDR listenport=PORT connectaddress=127.0.0.1 connectport=1080 在CMD中输入该命令,就可以把PORT端口收到的数据转发到本机的1080端口上,1080端口正是代理服务器的Shadowsocks监听的端口。然后还需要把PORT加入防火墙的例外中。被代理的主机只需要通过Socks连接该端口就可以达到使用代理服务器的Shadowsocks科学上网的目的。
阅读全文 »

算法练习,字符串交错组成-面试常考算法题(九)

发表于 2015-10-09   |   分类于 technology   |  
对于一个数字序列,请设计一个复杂度为O(nlogn)的算法,返回该序列的最长上升子序列的长度,这里的子序列定义为这样一个序列U1,U2…,其中Ui < Ui+1,且A[Ui]K < A[Ui+1]。 给定一个数字序列A及序列的长度n,请返回最长上升子序列的长度。 测试样例:[2,1,4,3,1,5,6],7 返回:4 本题知识点:动态规划 排序 查找 对于两个字符串,请设计一个高效算法,求他们的最长公共子序列的长度,这里的最长公共子序列定义为有两个序列U1,U2,U3…Un和V1,V2,V3…Vn,其中Ui<Ui+1,Vi<Vi+1。且A[Ui] == B[Vi]。给定两个字符串A和B,同时给定两个串的长度n和m,请返回最长公共子序列的长度。保证两串长度均小于等于300。 测试样例: “1A2C3D4B56”,10,”B1D23CA45B6A”,12 返回:6 本体知识点:动态规划、贪心 对于两个字符串,请设计一个时间复杂度为O(m*n)的算法(这里的m和n为两串的长度),求出两串的最长公共子串的长度。这里的最长公共子串的定义为两个序列U1,U2,..Un和V1,V2,…Vn,其中Ui + 1 == Ui+1,Vi + 1 %= Vi+1,同时Ui == Vi。 给定两个字符串A和B,同时给定两串的长度n和m。 测试样例: “1AB234 ...
阅读全文 »

唯有悲剧才能够成就伟大

发表于 2015-07-09   |   分类于 life   |  
唯有悲剧才能成就伟大 曾经听一位老师说过,唯有悲剧才能成就伟大。无论是哈姆雷特,梁山伯与祝英台,还是普罗米修斯,又或是红楼梦、西游记、水浒传,没有哪一部作品不是以悲剧收尾。 而够与这些悲剧相提并论的喜剧作品却屈指可数。为何为何?可能是因为人生,如同圣经之说,就是来受苦受难洗涤灵魂的。而喜剧一不小心就弄得哗众取宠,让人觉得做作。 就像上个月看的《捉妖记》,网上好评如潮,但我看了却觉得无聊透顶。明明剑插胸口己经死透了,却还硬要来一个复活,真是狗血之极。 反观另一部电影《大卫·戈尔的一生》,虽然女主最终找到证明男主无罪的录像带,但是为时已晚男主已经被执行了死刑。这才能够成就这部电影,如果拿到中国,改成最后几秒钟拯救了男主,那这部电影也就被毁了。
阅读全文 »
123
Glyme

Glyme

记录我的学习、生活点滴

21 日志
3 分类
17 标签
© 2017 Glyme
由 Hexo 强力驱动
主题 - NexT.Pisces