- 博客(78)
- 问答 (1)
- 收藏
- 关注
原创 私人项目指引
目录私人博客阿里云私人博客geekgao.cn这是我使用wordpress搭建的个人博客,回不定期更新博文,欢迎访问。阿里云我的私人博客搭建使用了【阿里云】作为服务器,阿里云目前在搞活动,如果你也想拥有自己的博客用于学习,推荐你使用。...
2020-01-16 19:43:51 325
原创 Spark内存管理概览
翻译自Spark官网文档,版本:2.3.0spark内存管理概览Spark很大一部分内存用于storage和execution,即存储和执行任务。execution memory指的是在shuffle,join,sorts,aggregation操作中使用的内存,storage memory指的是用于整个集群缓存数据和传播中间数据的内存。spark中storage和execution分...
2018-04-09 23:30:55 420
原创 找出数组所有子数组
题目是:给一个数组:[1, 2, 2],找出所有子数组,例如这个数组的子数组有:[], [1], [2], [1, 2], [2, 2], [1, 2, 2]看这篇博客得到了思路:巧用递归求字符串的子集基本思想就是:求子集,每一位都只有两种状态,在子集中或不在子集中。那把每种情况都输出就可以了。import java.util.HashSet;import java.util...
2018-03-20 12:43:49 14826
原创 装饰器模式之抽象装饰器的作用
今天要搞清楚的问题是为什么需要上面那个被黄色框圈住的“抽象装饰器类”。 装饰器模式实现了不破坏原有类的情况下动态扩展一个类的功能。“为什么需要抽象装饰器类”,搞清楚这个问题最好的办法是手写一个装饰器模式,然后去掉中间的抽象装饰器类,看看会发生什么。下面根据最上面的UML图写一下代码:// 顶层接口public interface Shape { void draw(...
2018-03-12 23:32:53 1521
原创 避免创建不必要的对象(Effective Java第5条)
避免创建不必要的对象,这一条告诉我们,要尽可能的重用对象。书中举了几个例子来讲解一些无意识的创建不必要的对象的情况。1. String类的使用String str = new String("abc");上面这条代码执行过后,会生成两个对象,参数”abc”本身就是一个String对象,new String()又会产生新的String对象。正确的做法如下:String...
2018-03-11 22:43:40 482
原创 周志华《机器学习》 版本空间
第一章1.3节提出了一个概念“版本空间”,搞明白之后其实是蛮简单的一个东西,按书上说的西瓜问题的假设空间如下(Ø表示不存在好瓜坏瓜之分): 编号 色泽 根蒂 敲声 1 * * * 2 青绿 * * 3 乌黑 * * 4 * 蜷缩 * 5 * 硬挺 * 6 *
2018-01-31 23:39:55 1085
原创 Spark的Job、Stage、Task是按何种规则产生的
上面这张图就可以很清晰的说明这个问题。(图中最小的方块代表一个partition,包裹partition的方块是RDD,忽略颜色)JobSpark的Job来源于用户执行action操作,就是从RDD中获取结果的操作,而不是将一个RDD转换成另一个RDD的transformation操作。StageSpark的Stage是分割RDD执行的各种transformation而来。如上
2018-01-24 23:04:34 3184 4
原创 spark RDD 宽依赖与窄依赖
我的新博客地址:geekgao.cn RDD被设计为可以记录依赖关系,关系可以分为两类:窄依赖和宽依赖。 窄依赖:表示父亲 RDD 的一个分区最多被子 RDD 一个分区所依赖。 宽依赖:表示父亲 RDD 的一个分区可以被子 RDD 的多个子分区所依赖。如下图,左边是窄依赖,右边是宽依赖:
2018-01-23 23:24:28 825
原创 maven打包如何包含本地jar包内容
下面使用到了两个插件,maven-shade-plugin和addjars-maven-plugin。凡是讲到打包,前一个插件基本都有说,但是第二个插件很少提到。 后面这个插件解决了这样一个问题:我有一些本地jar包,不是使用maven引入的,我该如何将这些本地jar包打入最终的jar包中呢? 有些人说可以使用system类型的dependency引入本地jar包。 有些人说system类型的
2017-11-21 20:53:55 5189 1
原创 flume消费文件夹消费不及处理办法
文件生产速度过快,flume会出现消费不及的现象,下面这个参数调节一下应该会有改善: maxBackoff 这个参数代表当source向channel放数据时检测到channel满了后等待多久再进行重试,默认是4秒。如果已经出现消费不及现象,channel频繁被撑满,然而满了后还要等很久,造成文件越来越多,降低这个参数可以有效缓解消费不及。 官网链接:http://flume.apache.o
2017-11-21 20:38:26 1765
原创 flume“Space for commit to queue couldn't be acquired”异常产生分析
问题触发的环境:kafka source + memory channel + hdfs sink日志截图如下: 这里说的内容是:queue空间不足。sink好像没有紧跟source,或者是buffer大小太小。这里的queue代表什么?sink没有紧跟source的具体含义是什么?buffer又是什么?我分析源代码后,将结果在下面铺开向大家展示。memory channel内部结构 memo
2017-09-10 16:27:52 6352
原创 ubuntu上艰难的第一次安装wordpress
前两天搭建了一个新博客在:www.geekgao.top 这次安装wordpress真的是经历了各种坑,最终装好后一总结,发现原来是这么回事。我这篇文章就我这次安装wordpress的经历来谈一谈中途所遇到的坑,希望会对你有用我这里说的是在ubuntu上安装的情形,所以可能有的文件位置与其他linux发行版的位置不一样,那就只能你自己摸索啦如果你在下面的操作中遇见了问题,出现了和预期不一样的情形,
2017-08-29 08:36:38 10045 1
原创 Spring事务管理-配置及使用
一. 事务管理方式总览 JDBC事务JTA事务容器事务 区别: JDBC事务控制的局限性在一个数据库连接内,但是其使用简单。 JTA事务的功能强大,事务可以跨越多个数据库或多个DAO,使用也比较复杂。 容器事务,主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。 二. JDBC事务配置方式只需将上面这些内容写入Spring的配置文件即可三.
2017-02-16 18:57:27 586
原创 校园电信翼讯账号写入路由器上网
因为要面向所有人,所以我这里假设大家没有编码能力,说到我觉得最浅显易懂,希望对大家有帮助准备工作,首先你的电脑要安装有: python3(下载地址) 按键精灵(下载地址) 写账号套装(链接: https://pan.baidu.com/s/1o8bG2Iu 密码: 7kec)使用说明:首先安装python3以及按键精灵将“按键精灵脚本”放进按键精灵中。脚本内容按提示修改即可启
2016-11-09 11:16:02 9471
原创 Spring和Mybatis整合
首先明确一点:整合的方法是使用mybatis-spring项目怎么使用,我会很简单明了的在下面列出所有步骤,按着做一遍就可以了。加载依赖包<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId>
2016-09-10 17:03:56 570
原创 String源码中的“avoid getfield opcode”是什么意思
avoid getfield opcode其实是一段注释,看代码时不理解,就查了查在这记录一下。下面是一段String源码示例:public String trim() { int len = value.length; int st = 0; char[] val = value; /* avoid getfield opcode */ while...
2016-08-01 11:27:52 3458
原创 记一次neo4j项目打包出现的问题
Caused by: java.lang.IllegalArgumentException: An SPI class of type org.apache.lucene.codecs.PostingsFormat with name 'Lucene50' does not exist. You need to add the corresponding JAR file supporting this SPI t
2016-07-28 09:09:23 2409
原创 记事(五)
下一周就要考试了,下一周要考3门课,所以最近一直是复习状态,但是虽说是复习状态,一直也不是很用心,因为感觉老师给了一些重点,感觉还能过,就不是那么紧张。这两天占了我很多时间的事,有两个。一个是前几天每天看三体,看完了《黑暗森林》,这部小说真的很精彩,统治宇宙的黑暗森林法则在最后被揭开,一开始只是给了两条很简单的宇宙公理,由两条公理推出了最后的黑暗森林法则。这个法则给我的感觉一点都不像是写小说,而
2016-06-25 15:26:06 512
原创 连接本地MySQL被拒绝连接如何处理
在代码中连接mysql时,可能出现拒绝连接的错误,我说一下我是如何解决的,拒绝连接可能有很多原因,所以我这个不一定适合你的情况,你如果遇见这种问题,应该多搜,多尝试。我是在连接本地数据库时出现这个错误的。 我解决办法是: 连接数据库的语句中的地址不要写“localhost”,而是改成“127.0.0.1” 或者,在hosts文件中加一行“127.0.0.1 localhost”
2016-05-25 16:48:11 13667 2
原创 Servlet上传文件的实现
浏览器会如何上传一个文件? 注意最下面那一栏,那就是这次post的实体部分,这个实体中包含着文件内容,chrome这里隐藏了文件内容,我实际传了一个内容是”123“的文本文件,完整实体部分是下面这样子:注意第一幅图中的Content-Type属性,中间有一个”boundary“,boundary意思是”边界,界限“。其实是浏览器随机生成的一串字符串,用来界定真正文件的范围的,当我们把实体部分接收到
2016-05-23 16:18:13 632
原创 shell脚本学习笔记(2)
变量赋值空格左右不能有空格:var=100变量赋值最好使用#{var},不使用$var使变量只读:readonly var。只读变量不能改变删除变量:unset var。不能删除只读变量单引号:单引号内的内容会原样输出,不会转义或者引用变量字符串长度:${#var}提取字串:${var:0,4}。意思是从第0个字符开始提取4个字符shell数组:var=(1 2 3 abc)显示数组
2016-05-19 10:53:40 412
原创 shell脚本学习笔记(1)
变量的基本操作变量没有类型,直接赋值就可以,类似这样: name=geekgao 引用的时候这样: $name 或者 ${name}单引号/双引号/反撇号单引号: 中间不能引用变量,也不能使用“\”转义。就是说,这里面的内容会保持原样。双引号: 允许使用“$”或者“${}”引用变量,可以使用转义反撇号或者$(): 中间是一句可执行的命令,不能直接一行开始就写个`ls`或者$(ls),必须
2016-05-11 22:11:57 431
原创 Linux命令Sort简单使用
使用方法:sort [-ntkr] 文件名 -n采取数字排序 -t指定分隔符 -k指定第几列 -r反向排序eg:有文本文件名为“1”,内容为: d:1 c:2 b:3 a:4 e:5 f:11几种基本的使用方式如下图:
2016-04-27 22:01:30 696
原创 数据库四种隔离级别
(零)没有并发控制存在的问题:更新遗失。 解决办法就是下面的“可读取未确认”。(一)可读取未确认(Read uncommitted)写事务阻止其他写事务,避免了更新遗失。但是没有阻止其他读事务。 存在的问题:脏读。即读取到不正确的数据,因为另一个事务可能还没提交最终数据,这个读事务就读取了中途的数据,这个数据可能是不正确的。 解决办法就是下面的“可读取确认”。(二)可读取确认(Read com
2016-03-13 00:03:34 25333 4
原创 Java动态代理
存在即合理,存在就有存在的理由,java动态代理的存在是为了解决静态代理出现的不足,所以首先看一看什么是静态代理: 有如下接口:public interface SayHello { void sayHello();}有如下实现:public class HelloImpl1 implements SayHello { public void sayHello() {
2016-03-12 17:27:32 677 1
原创 快排中的partition函数
//p,r分别是这个要排序的区段的下标int partion(int *arElem, int p, int r){ int x = arElem[r]; int i = p,j = p; for(; i < r; i++) { if(arElem[i] < x) { if(i != j) { exchange(arElem
2016-03-10 19:16:18 4213
原创 HashMap的容量与扩容
有几个重要的常量:static final int DEFAULT_INITIAL_CAPACITY = 1 4;//默认的桶数组大小static final int MAXIMUM_CAPACITY = 1 30;//极限值(超过这个值就将threshold修改为Integer.MAX_VALUE(此时桶大小已经是2的31次方了),表明不进行扩容了)static final floa
2016-03-08 23:08:05 47715 5
原创 Java---实现生产者消费者模型
使用BlockingQueuepackage concurrent;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;/** * Created by geekgao on 16-3-4. */public class ProducerAndConsu
2016-03-06 14:09:29 1714
原创 抓取熊猫TV弹幕
前天看到了别人写的抓取斗鱼弹幕的程序,抓取斗鱼弹幕是我很早以前的一个想法,但是无奈不会写,不懂得tcp传过来的那些字节的含义,所以没写出来,当我看到别人写好的代码,我就参照人家的博客自己实现了一遍,今天我就想熊猫tv应该也是差不多的,所以自己写了一个抓熊猫TV弹幕的代码。 有想抓斗鱼弹幕的建议去看这个博客,有详细步骤 http://brucezz.github.io/articles/20
2016-01-29 23:46:21 13415 7
原创 记事(四)
13号放假回家,现在是1月24日凌晨,回家已经11天啦回家这些天纯粹就是玩,每天看斗鱼,早上看油条,下午看狮子汪,晚上主播多,看的多.每一种状态持续太久就容易厌烦,现在我就厌烦了每天这种状态了.昨天开始就用上了我的linux,不玩lol了,完了容易上瘾,一玩一下午,到晚上再看看直播一天时间就完了今天一直在看技术相关的东西,努力找回学习的状态.感觉今天的时间没有荒废.
2016-01-24 00:10:25 649
原创 记事(三)
早上起床后照旧打开电脑,电脑却没有照旧正常开机电脑开机后直接黑屏,连主板信息都没有显示,然后就,就死在黑屏的状态了。。。打开我的笔记本,这找找那找找,总结下大概就是插拔内存条,插拔显卡之类的。那就照做吧。我将内存条拔下来用橡皮擦擦,重新插上,因为是第一次拔台式机内存条,插内存条花了好几分钟研究,哈哈。结果是卵用都没有。因为我看到显卡比较难拆,我就想会不会是其他问题,我注意到主板上有一个电池,说是给C
2016-01-21 13:21:25 491
原创 记事(二)
前天开始给我家台式安装Linux,让我经历了绝望。以前我就试图安装过,一直不成功,我以为是win8系统的影响,所以就下载了win7,结果因为下载的是ghost版本,显卡驱动有问题,进去就黑屏。进安全模式结果鼠标键盘都不能用,作罢。后来有下载了几个ghost都不行,最后还是下载了一个原版镜像解决了。电脑这东西,使起脾气来麻烦死人。这样一天就完了 第二天装好win7再装Ubuntu,搞得我1T硬盘的数
2016-01-19 15:00:17 540
原创 记事(一)
已经好几天没有好好看书写写博客了.最近在搞课程设计,每天早8点到下午1点,完了后去吃个饭,午睡一会到实验室也就大概快4点了.这次课设是微机原理的课程设计,说实话这没课没听.老师让我们做”抢答器”,网上搜了一个给老师交了,明天开始要连电路图.昨天学长来说了一下面试实习的事情,又给我们紧了紧. 其实自己一直在加紧补自己不知道的知识,每天都看书到很晚,希望自己的努力可以换来一份还不错的工作吧.
2015-12-24 18:26:53 700 1
原创 几种线程安全的单例
DCL(双重检查加锁)public class Singleton{ //volatile确保对singleton的读操作不会被重排序到内存屏障之前 private volatile static Singleton singleton = null; //建议所有的单例模式构造器都是私有的,防止在类外部建立多个实例 private Singleton() {}
2015-12-14 22:47:34 1180
原创 Java线程池中的异常消失
使用ExecutorService.submit()提交的任务会由于线程池自身的保护机制,不会将异常打印到控制台,所以不会看到,有时程序莫名其妙的结束就是因为这种情况可以这样Runnable crawlBlog = new Runnable() { public void run() { try { doSomething(); } c
2015-12-08 17:30:12 5013 2
原创 volatile
作用: (1)被修饰的变量在多个线程中具有可见性 (2)被修饰的变量不会参与指令重排序关于第(2)条的准确含义,查课很多书,看了很多博文,最终我觉得最简单明了,又很准确的一种解释是: 被声明为volatile的变量的读写操作不会同时进行 推荐一篇写的非常详细的关于volatile的博文链接
2015-12-08 17:23:48 527
原创 synchronized
功能 建立一个同步代码块,使其中的代码成为一个原子操作使用方法 (1)直接在方法声明时声明方法为synchronized方法 (2)在方法内部使用synchronized(对象){…}须知 每个java对象都可以用作一个实现同步的锁,这些锁被称为”内置锁”或者”监视器锁” 非静态方法的锁是调用这个方法的对象 静态方法的锁是这个对象所代表的类的Class对象
2015-12-05 22:22:04 529
原创 getBytes(charsetname)与String(bytes,charsetname)
其实这篇博文是由上一篇博文引起的,因为上一篇提到了getBytes(charsetname)与String(bytes,charsetname)这两个方法,一直对编码解码不是很清楚,这次花费心思下决心搞明白它,在网上各处查资料,现在把我的理解说出来,仅供大家参考首先要说,java中String的数据是如何存储的,查看源代码就可以知道,String的数据是存储在char[] value这样一个成员变量
2015-11-24 01:23:27 12947 2
原创 Tomcat Servlet编码问题
chrome/firefox这些不管你网页编码设置的是什么,发送请求都是使用UTF-8编码Get请求的参数编码处理:这个目前chrome/firefox浏览器默认发送的就是UTF-8编码的参数(不管你网页是什么编码),接收也是UTF-8的,直接获取不会出错为啥默认的是UTF-8?因为在server.xml中的对应Connector上配置了: URIEncoding=”UTF-8” 这个配
2015-11-22 14:10:54 1047
原创 自己写自己的java.lang.Object会怎么样?
首先自己定义一个包叫做java.lang,然后在里面定义一个类叫做Object. 然后在里面定义一个方法叫做toString(),返回null.另一个叫sayHello()package java.lang;public class Object { public String toString() { return null; } public void sa
2015-11-20 10:51:40 1905
空空如也
idea中可以运行的工程,打成jar包就出问题
2016-07-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人