自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

物联网爱好者,持续分享电子DIY、物联网相关技术

持续分享电子DIY、物联网相关技术

  • 博客(56)
  • 收藏
  • 关注

原创 atom配置python开发环境

需要安装的插件快捷键配置ctrl + shift + p,搜索key map,修改配置文件如下:# 'atom-text-editor':# 'enter': 'editor:newline'## 'atom-workspace':# 'ctrl-shift-p': 'core:move-up'# 'ctrl-p': 'core:move-down''atom-text-edi

2017-05-23 22:22:57 5242

原创 is invalid, transitive dependencies (if any) will not be available解决方案

问题描述maven项目在编译的时候报如下WARNING: [WARNING] The POM for com.winwill.test:0.0.1-SNAPSHOT is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details翻译一下:

2017-05-15 20:51:13 18817 1

原创 NoSQL简介

NoSQL是“Not only sql”的简称,泛指非关系型的数据库。 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的 web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据

2017-05-13 10:31:45 962

原创 slf4j的优势与使用原理

slf4j的全称是Simple Loging Facade For Java,即它仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已。所以单独的slf4j是不能工作的,必须搭配其他具体的日志实现方案,比如apache的org.apache.log4j.Logger,jdk自带的java.util.logging.Logger等等。 s

2017-05-13 10:30:49 12271

原创 log4j配置详解

Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。LoggerLoggers组件被分为五个级别:DEBUGINFOWARNERRORFATAL 各个级别的顺序是这样那个的:

2017-05-13 10:30:07 1428

原创 看完还不懂HTTPS我直播吃翔

存在即合理http是非常常见的应用层协议,是超文本传输协议的简称,其传输的内容都是明文的。在这个混乱的世界,明文传输信息想想就可怕,网络“小混混”的手段远比我们这些凡人高明得多,他们有一万种方式劫持,篡改我们的数据。对于一个网站或者服务,如果你给你的用户两个选择:通讯数据明文传输,速度快;通讯数据加密传输,但是速度可能会稍微慢一点.我想,只要脑袋没有长歪的用户都宁愿牺牲一点速度去换取数据传输的

2017-05-13 00:11:43 5239 3

原创 Mac版git命令自动补全

在Mac上安装了git之后,发现命令不能自动补全,使用起来非常不方便,本文介绍怎么让git命令能够自动补全。 确保bash能够自动补全在终端(本文使用的是OS X的终端)执行如下命令:brew list 看看是否已经安装有bash-completion,比如我的机器(已经安装了)运行上面的命令会显示: bash-completion node openssl pkg

2017-05-13 00:09:25 11670 1

原创 《互联网+创业相对论》摘抄

花了两天时间读完了《互联网+创业相对论》,下面是我摘抄下来的比较喜欢的语录: 当劳动者每个月的收入都是从我这获取的时候,我就掌握了绝对控制权。产品开发过程中过分追求完美,是产品快速迭代的大忌。创业者在市场机会微光乍现的时候,要能够及时把握,先做再纠正,要比等调研结果再做,更好。毕业于北京信息科技大学计算机专业的王宁,至今不会写代码,连一行都不会写。但“社会大学”给了他很多每一个痛点都是一个机会

2017-05-13 00:08:31 705

原创 差点挂球了

话说我年前2月2号就回家了,因为家在南方,比较冷,并且没有暖气,所以一种比较常规的取暖方式就是烧炭火取暖。然而,也就是因为烧炭火,我差点就在除夕的前一天挂球了。 事情是这样的,腊月二十八那晚,我烧了一盆碳火放在自己的卧室里(因为太冷,门窗都是关闭的),然后一边玩Dota一边烤火,玩到大概凌晨一点的时候,头开始有点晕了,我以为是玩太久了太累了,也没多想,于是就直接关了电脑上床睡觉了。睡到半夜三点的时

2017-05-13 00:08:00 709

转载 程序员八荣八耻

以动手实践为荣,以只看不练为耻。 以打印日志为荣,以出错不报为耻。 以局部变量为荣,以全局变量为耻。 以单元测试为荣,以手工测试为耻。 以代码重用为荣,以复制粘贴为耻。 以多态应用为荣,以分支判断为耻。 以定义常量为荣,以魔法数字为耻。 以总结思考为荣,以不求甚解为耻。

2017-05-13 00:07:21 705

原创 程序员最重要的两个东西

先来讲一个故事,最近在改造项目中日志处理服务,使用了公司内部公共的一些组件与服务。好不容易改造完成了,前几天开始灰度上线,上线观察了一天,从监控平台上可以看到,每次流量高峰期(一般早中晚各一次)就会出现大量的thrift反序列化失败的问题。出现问题怎么办呢?解决呗,就这样,故事开始了… 数据流图先来介绍整个服务的数据流示意图,如下: 每台服务器都会部署一个scribe-agent,用于将本机产生的

2017-05-13 00:05:46 1271

转载 代码战争

一天我路过一座桥,碰巧看见一个人想跳河自杀。我跑过去对他大喊道:“别跳,别死啊。” “为什么不让我跳?”他说。 “因为还有很多东西值得我们活下去啊。” “有吗?比如说?” “呃……你做什么工作?” “程序员。” “我也是!瞧,有共同点了吧。你是软件还是硬件?” “软件。” “我也是!PC 还是 Web?” “PC。” “我也是!Wi

2017-05-13 00:05:05 3145

原创 对称加密与非对称加密

想要在网络中传输数据,往往信息安全是首先要考虑的问题。一般来说,重要的信息在网络中传播都需要加密,接收方拿到信息之后需要解密。 加密/解密算法大致可以分为对称加密和非对称加密两类:对称加密定义采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据

2017-05-13 00:04:25 1028

原创 给求职者的面试心得

最近组里急需招人,所以小伙伴们一起发力,在脉脉上发布了很多职位信息,果不其然,收到了很多很多求职简历,其中一半以上的都是iOS方向的(难道iOS真的是烂大街了吗),但是简单过了一遍之后,很多简历,大部分都比较糙,质量不达标,直接筛了。 剩下的通知来面试的,其实还是有很多问题,下面我以一个面试官的角度大致说一下,一份好的简历是什么样的,还有在面试过程中应该注意些什么:简历篇幅一定不能太长,一般一页

2017-05-13 00:03:30 831

原创 皆大欢喜的加薪

我的朋友A君是个典型的.NET开发人员,技术不错,人品也不错,在一家小公司(姑且称为甲公司)做项目开发,是技术骨干。3个月前,他找到我说想跳槽,让我帮忙介绍工作。我说为什么想跳了?为什么想离职?他简单说了一下他在甲公司当时的状况:A君在甲公司做了两年多,这两年多完成了一个大项目,作为开发的核心主力,开发压力很大,特别是项目上线前的几个月是非常辛苦,几乎每晚都要加班到12点以后,周末最多只有一天休息。

2017-05-13 00:02:47 724 3

原创 揭秘Node.js中exports和module.exports

首先我们得先摆出两条不变的真理:exports一开始是指向module.exports的;通过require得到的是module.exports中的内容,而不是exports的内容; 详解exports和module这两个对象是所有Node.js类型的文件中都默认隐式存在的,比如我们新建一个test.js文件:console.log(exports);console.log(module);在

2017-05-13 00:01:53 683

原创 如何为博客增加打赏功能

很多朋友喜欢在网络上分享自己的学习心得、工作经验、技术见解,自己呕心沥血写的好文章当然是非常希望得到认可。本文介绍怎么为博客文章增加打赏功能。我的博客使用的是maupassant主题,原来的主题没有打赏功能,接下来看看怎么自己实现打赏功能。最终的效果请看本文末尾,另外,本文介绍的方法我已经在GitHub上实现了,如果不想自己动手,那就使用我写好的现成的吧~增加css文件在主题的css文件夹下(我的目

2017-05-12 13:33:20 3155 1

原创 严防Math.abs()返回负数

最近有个线上spark streaming程序跑着跑着就挂了,调查了一番,发现了一个平时大家都不太注意的问题。看了日志,抛出的异常如下:java.lang.ArrayIndexOutOfBoundsException: -2 at com.xiaomi.poppy.hbase.HBaseUtil.getHashPrefix(HBaseUtil.java:58) at com.x

2017-05-12 13:32:37 4561

原创 预写日志(WAL)介绍

预写日志(WAL,Write Ahead Log)是关系型数据库中用于实现事务性和持久性的一系列技术。简单来说就是,做一个操作之前先讲这件事情记录下来。举个例子:很多人都会有自己的备忘录,记录自己干了哪些事,这里的WAL日志就好比备忘录,记录了你做了哪些操作。 为什么要使用WAL呢?比如你的备忘录里面有如下记录:2015.12.25 理发2015.12.28 整容2015.12.31 修指甲

2017-05-12 13:31:57 5006

原创 最近踩的一些坑

最近比较背,踩了很多坑,小记一下:修改了/etc/profile文件导致登陆不了机器前不久在机器上安装部署storm时在/etc/profile文件末尾追加了导出JAVA_HOME的一些语句:export JAVA_HOME=...export PATH=...结果机器重启之后就登陆不上了,密码输对按回车之后又回到登陆界面,无限循环。然而使用ctrl+alt+(F1-F6)使用命令行模式却能登陆,

2017-05-12 13:31:03 773

原创 A记录和CNAME记录介绍

在互联网上访问网站的时候我们通常都是输入网址,比如http://qifuguang.me,通过这个网址怎么知道需要访问的资源是在哪里呢?答案就是域名解析,将一个网址映射到一个特定的IP地址的过程就叫做域名解析。域名的解析工作由DNS服务器完成。 A记录A记录即Address记录,字面意思就是地址记录,就是将一个域名或主机名解析成一个具体的IP地址。用户可以将该域名下的网站服务器指向到自己的web

2017-05-12 13:30:22 953

翻译 苹果推送服务(APNs)中文文档

工作中需要用到APNs服务,所以打算将APNs的官方文档翻译出来,供有需求的朋友一起参考,水平有限,难免出错,还望不吝赐教。总览本地通知和远程通知本地通知和远程通知就是所谓的两种不同类型的通知,他们的区别在于一个是广播类型的通知(由NSNotificationCenter类管理),一个可以选择性地通知。用户通知可以让一个不在前台运行的应用提醒用户他有新的消息。消息的内容可以是简单的一句话,可以是一个

2017-05-12 13:29:43 7284

原创 Disruptor简介

Disruptor是一个开源的Java框架,它被设计用于在生产者—消费者(producer-consumer problem,简称PCP)问题上获得尽量高的吞吐量(TPS)和尽量低的延迟。Disruptor是LMAX在线交易平台的关键组成部分,LMAX平台使用该框架对订单处理速度能达到600万TPS,除金融领域之外,其他一般的应用中都可以用到Disruptor,它可以带来显著的性能提升。其实Disr

2017-05-12 13:29:01 1085

原创 Hadoop和Spark的处理模型比较

Apache Spark的高性能一定程度上取决于它采用的异步并发模型(这里指server/driver端采用的模型),这与Hadoop 2.0(包括YARN和MapReduce)是一致的。Hadoop 2.0自己实现了类似Actor的异步并发模型,实现方式是epoll+状态机,而Apache Spark则直接采用了开源软件Akka,该软件实现了Actor模型,性能非常高。尽管二者在server端采用

2017-05-12 13:28:19 808

原创 IntelliJ远程调试教程

对于分布式系统的调试不知道大家有什么好的方法。对于我来说,在知道远程调试这个方法之前就是在代码中打各种log,然后重新部署,上线,调试,这样比较费时。今天咱们来了解了解Java远程调试这个牛逼的功能,本文以Intellij IDEA为例讲解怎么使用远程调试。以Thrift入门教程这篇文章中使用的程序作为例子。这个程序由Thrift服务端和客户端组成。描述一下远程调试需要解决的问题: 服务端程序运

2017-05-12 13:27:15 912

原创 Java transient关键字解析

本文内容很简单,但是因为transient这个关键字平时用得很少,我担心过段时间又不知道它是干嘛的了,写出来最起码可以让记忆更深刻,所以写本文的目的就是备忘!老鸟就不用往下看了~前言在进入正文之前,我们先来看一段很简单的代码: Account.java:package com.winwill.simple.test;import java.io.Serializable;/** * @autho

2017-05-12 13:26:29 624

原创 Java守护线程简介

在没有去了解Java守护线程是什么之前,大家是怎么猜测它的?反正我是这样以为的: Java守护线程应该是一直运行在后台的后台线程。结果发现我太天真了,今天简单介绍一下Java的守护线程。 Java守护线程Java中的线程分为两类:用户线程(非守护线程);守护线程在JVM中,守护线程(Deamon线程)的优先级是很低的,低于用户线程,他们的作用就是服务于用户线程(非守护线程,以后都称用户

2017-05-12 13:25:59 430

原创 LinkedIn是如何优化Kafka的

在LinkedIn的数据基础设施中,Kafka是核心支柱之一。来自LinkedIn的工程师曾经就Kafka写过一系列的专题文章,包括它的现状和未来、如何规模化运行、如何适应LinkedIn的开源策略以及如何适应整体的技术栈等。近日,来自LinkedIn的高级工程主管Kartik Paramasivam撰文分享了他们使用和优化Kafka的经验。 LinkedIn在2011年7月开始大规模使用Kafk

2017-05-12 13:25:19 523

原创 Maven profile介绍

同一个项目,在不同的环境中部署可能需要不同的配置信息,典型的比如数据库的配置,在开发环境需要连接本地的数据库,测试环境需要连接测试环境的数据库,线上环境需要连接线上的数据库。要使一个项目不经过任何修改就在不同的环境写运行是基本不可能的。为了能让一个项目在不同的环境下方便地移植,Maven引入了profile的概念,profile能够在构建项目的时候修改pom文件的一个子集,或者添加一些额外的配置元素

2017-05-12 13:23:57 1375

原创 Maven对重复依赖的解决方案

这几天在学习spark-streaming做流式计算,一开始写了一个比较简单的测试程序能够顺利运行,但是当在项目pom.xml中加入了一些项目公共依赖之后就死活编译不过,或者能编译过但是不能run,根本原因就是如下这些包:<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</arti

2017-05-12 13:23:08 3669

原创 Redis 3.0新特性

Redis 3.0.0 正式版终于到来了,与 RC6 版本比较,该版本改进包括:修复了无磁盘的复制问题 (Oran Agra)在角色变化后对 BLPOP 复制进行测试 (Salvatore Sanfilippo)prepareClientToWrite() 错误处理方法的改进 (Salvatore Sanfilippo)移除 dict.c 中不再使用的函数(Salvatore Sanfili

2017-05-12 13:22:23 1168

原创 Redis过期机制介绍

在实际开发过程中经常会遇到一些有时效性数据,比如限时优惠活动,缓存或者验证码之类的。过了一段时间就需要删除这些数据。在关系型数据库中一般都要增加一个字段记录数据的到期时间,然后周期性地检查过期数据然后删除。Redis本身就对键过期提供了很好的支持。Redis过期机制在Redis中可以使用EXPIRE命令设置一个键的存活时间(ttl: time to live),过了这段时间,该键就会自动被删除,EX

2017-05-12 13:21:48 1137

原创 Redis事务介绍

相信学过Mysql等其他数据库的同学对事务这个词都不陌生,事务表示的是一组动作,这组动作要么全部执行,要么全部不执行。为什么会有这样的需求呢?看看下面的场景: 微博是一个弱关系型社交网络,用户之间有关注和被关注两种关系,比如两个用户A和B,如果A关注B,则B的粉丝中就应该有A。关注这个动作需要两个步骤完成:在A的关注者中添加B;在B的粉丝中添加A。 这两个动作要么都执行成功,要么都不执行。

2017-05-12 13:21:00 405

原创 Redis五种数据类型介绍

Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,有序集合。本文详细介绍这五种数据类型的使用方法。本文命令介绍部分只是列举了基本的命令,至于具体的使用示例,可以参考Redis官方文档:Redis命令大全 字符串类型字符串是Redis中最基本的数据类型,它能够存储任何类型的字符串,包含二进制数据。可以用于存储邮箱,JSON化的对象,甚至是一张图片,一个字符串允许存储的最大容量为512

2017-05-12 13:20:31 938

原创 wait,notify,notifyAll详细介绍

wait,notify和notifyAll方法是Object类的成员函数,所以Java的任何一个对象都能够调用这三个方法。这三个方法主要是用于线程间通信,协调多个线程的运行。wait函数调用线程的sleep,yield方法时,线程并不会让出对象锁,wait却不同。wait函数必须在同步代码块中调用(也就是当前线程必须持有对象的锁),他的功能是这样的: 我累了,休息一会儿,对象的锁你们拿去用吧,C

2017-05-12 13:19:50 635

原创 [日志处理]log4j配置详解

Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。LoggerLoggers组件被分为五个级别:DEBUGINFOWARNERRORFATAL 各个级别的顺序是这样那个的:

2017-05-12 13:18:41 708 1

原创 Redis主从复制

一般来说,要将Redis运用于工程项目中,只使用一台Redis是万万不能的,原因如下: 从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内容容量为256G,也不能将所有内容用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G。本文先讨论第一点的解决方案:R

2017-05-11 14:12:06 561

原创 sed命令详解

是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。使用语法sed命令的使用规则是这样的:sed [option] 'comma

2017-05-11 14:11:25 1629 1

原创 Shell特殊字符简介

linux shell中有很多特殊的字符,本文简单介绍常用的特殊字符的含义: * $0 表示当前运行的脚本的名字 * $# 表示当前运行的脚本的参数个数 * *\*∗∗表示当前运行的脚本的参数列表,如果有三个参数:abc,则\*** 表示当前运行的脚本的参数列表,如果有三个参数:a b c,则为 “a b c” * **@∗∗表示当前运行的脚本的参数列表,如果有三个参数:abc,则@**

2017-05-11 14:10:16 475

原创 Spark streaming+kafka实战教程

Kafka是一个分布式的发布-订阅式的消息系统,简单来说就是一个消息队列,好处是数据是持久化到磁盘的(本文重点不是介绍kafka,就不多说了)。Kafka的使用场景还是比较多的,比如用作异步系统间的缓冲队列,另外,在很多场景下,我们都会如如下的设计: 将一些数据(比如日志)写入到kafka做持久化存储,然后另一个服务消费kafka中的数据,做业务级别的分析,然后将分析结果写入HBase或者HDF

2017-05-11 14:09:31 12660 3

空空如也

空空如也

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

TA关注的人

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