自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

火山哥的专栏

Share Your Knowledge With The World

  • 博客(128)
  • 资源 (3)
  • 收藏
  • 关注

转载 NO.18 什么是拜占庭将军问题

本文是转载,转载自苏神的博客,原文地址:https://www.jianshu.com/p/5fea30b25f0a 拜占庭将军问题很多人可能听过,但不知道是什么意思,本文从非专业的角度来讲讲,拜占庭将军问题到底是说什么的。 拜占庭将军问题(Byzantine Generals Problem),首先由Leslie Lamport与另外两人在1982年提出,很简单的故事模型,却困扰了计算机科学家们...

2018-07-12 15:49:10 2988

原创 NO.17 浅谈共识机制(POW、POS、DPOS、PBFT、POP)

区块链是一种去中心化的分布式账本,可以简单理解为分布在全球各个节点的分布式数据库,数据库由区块按时间顺序相连而成,区块中记录的是数笔交易。 为了能支持这一套系统的运行,需要各节点矿工的参与,他们参与的主要原因是因为有奖励,奖励可以去交易所换成钱,他们这样参与的过程类似于挖矿,所以被成为“矿工”。矿工在什么样的规则下才会得到奖励,这样的规则在区块链中叫共识机制。以下是几种常见的共识机制。 POW:P...

2018-06-29 12:09:02 23108 2

原创 NO.15 不得不说的以太坊跟ICO

随着以太坊的出现,区块链进入了2.0时代,以太坊是个太神奇的东西,没有天才的想法、高超的技术以及黑客的精神是无法如此成功的。它实现了区块链项目的快速开发,快速实施。以太坊这个开发平台本身发行了一种币叫做以太币(ETH),使用此平台开发出来的应用在上面跑的时候,需要消耗少量的以太币做为小费。 它相比于比特币系统,最大的特点在于引入了智能合约。 什么是智能合约?简单来说,就是通过代码实现的智能合同。让...

2018-06-26 11:46:59 1687

原创 NO.14 聊一聊区块链的2.0时代

有没有总听到有人说,区块链1.0,2.0,3.0,很是懵逼。其实简单,不要懵,请假装很懂,实际上我一说你就懂了。iPhone 6,iPhone 7,iPhone 8,这里面6,7,8代表的是什么?对,代表的是第6代,第7代,第8代。区块链发展也差不多,从1.0发展到现在的3.0,后面还会有4.0,5.0等等等。讲完等等,2.0时代还没聊,先简单列一下到目前为止每一代的基本情况。 1.0:以比特币为...

2018-06-25 13:12:13 511

原创 NO.12 什么是地址、私钥、助记词

学习到现在,我们应该是接触到了地址、私钥、助记词这三类东西。我还是进行类比,这样更容易理解。 地址:有叫地址,有叫钱包地址,有叫钱包账户,指的是同一个东西,相当于你的银行卡账号,别人给你汇款要知道你的账号,比特币也一样,别人给你转比特币需要知道你的地址。地址是一串由26位到34位字母和数字字符串组成的,看上去像一堆乱码一样,下图是比特币官方接受捐赠的地址。私钥:有叫私钥,有叫密钥,有叫密码,指的是...

2018-06-22 12:42:41 3085

原创 NO.2 火爆了你朋友圈的区块链通俗解释

你在朋友圈看过下面的图吗?没有。...... 什么是区块链?这就是区块链啊!这就是区块链技术啊!!什么??读不懂???那我真的帮不上忙啦!!! 谁也抵赖不了,大家都是见证,一旦发生信用问题就会受到整个区块链的惩罚和永久性记录,所以解决了彼此之间最大的信任问题,解决了信息被盗、信息存储等问题,同时奖励诚信,有真货的人。 所以你觉得具体来说,区块链技术和概念可以用到哪些领域呢?加微信公众号给我留言,跟...

2018-06-09 00:37:29 940

原创 NO.1 到底什么是区块链

到底什么是区块链?我以此问题跟大家一起开始区块链的探索之旅。 这个问题实在太难回答,我想来的简单一点,怕有点智商的说我瞎讲。我希望把读者当成大爷大妈,就像跟大家唠家常一样。通俗一点来,我的理解是:一条条大金链子串着一块块硬盘。就这一句话,够通俗吧! 大金链子------区块链是财富的象征啊!硬盘------data啊,此时马老师出现,不是硬盘里的其他老师,是马老师:世界正从IT时代进入到DT时代,...

2018-06-08 10:56:17 976

原创 NO.0 区块链,之我见前言

区块链这个词,想必大家不会陌生。在如今爆炸式的信息时代,时不时的会在某个新闻推送,某个朋友圈分享,某个头条等直接或间接,主动或被动的有所耳闻。鉴于本人从事计算机软件开发方面职业的关系,时常会有一些朋友来问我一些关于区块链、比特币、ICO、交易市场之类的问题。他们之中很多并非从事计算机或金融行业,想跟他们讲清楚区块链,就像对80年代的人讲清楚什么是互联网一样困难,即便是计算机或金融行业的相关人员,对...

2018-06-07 15:52:58 832

原创 已迷失在Python的世界里,如此简单,灵活,强大,优美

最近有一个很好的idea,想快速开发出产品原型,本身做App有4,5年的时间了,移动端应该不是问题,服务端嘛,之前也搞过一段时间,本来想使用Java,但是感觉有点重,开发起来一堆配置,一堆依赖,一堆框架,比较烦它。后来一个朋友跟我说,为什么不试试Python呢?!现在看来真的有一种相见恨晚的感觉。下面是花了几个下午的业余时间写的Python例子,复制下来可以直接运行,里面也有一部分注释。#!/

2015-12-07 17:48:53 5202 2

原创 Android整机源码如何轻松下载?清华大学Android源码镜像

今天发现,清华大学提供AOSP镜像,以前都是从Google的站点下载同步更新的,但是现在有了国内的镜像站点就好多了帮助:https://wiki.tuna.tsinghua.edu.cn/MirrorUsage/android仓库地址:git://aosp.tuna.tsinghua.edu.cn/android/使用浏览器访问:http://aosp.tuna.t

2015-06-03 11:34:31 32061 5

原创 请告诉美工Android适配时切图要按标准来

在Android官方看到的Android各分辨率适配时的比例,以mdpi为基础,切图时请告诉美工,提升用户体验哇,别在那边瞎切。比如:ldpi: 36px    0.75mdpi: 48px    1.0hdpi: 72px    1.5xhdpi: 96px     2.0xxhdpi: 144px  3.0

2015-04-14 17:54:55 7019 1

原创 回头看看也挺好

很久没有写文章了,今天偶然上了CSDN,原来之前一直有写博客的习惯,最近这两年却没再坚持了。上一次写博客的时间是13年7月份。回头看看一直整理的技术点,也是一种乐趣。当然有几回搜技术问题的时候,会搜到一些来源于自己写的博客,兴许也帮助过不少人呢。标题“回头看看也挺好”并不是说现在成了大牛了,也不是现在混得多好多好。现状是,现在是一个公司的小leader,写写代码、参与参与产品设计,讨论讨论方案

2015-03-13 17:55:43 1519

原创 Android实现通过手机找回密码

其实这篇文章有点标题党,代码没有几行,真不好意思,但是确实给出了解决方案,这个我觉得还是很重要的,代码写了几年之后其实比较注重的就是思路跟方法了。背景:手机客户端有这么一个需求,用户忘记密码了,然后输入自己的手机号码,点击找回密码,系统会把密码发到他手机上,实现密码找回功能。这个我相信非常常见。我们这边采用的是跟第三方短信平台进行合作,叫亿美软通,官网是:http://www.emay.c

2013-07-09 14:28:06 5892

原创 Java远程调用邮件服务器,实现邮件发送

写这篇文章的背景是公司Android客户端需要实现一个功能,实现类似于密码找回或者用户注册完发送一个邮件给用户的功能,当然这些逻辑客户端只负责请求自己的服务端,自己的服务端再去请求邮件服务器。邮件服务器使用的Apache的James,Java写的开源的,而且方便调用。远程调用使用的是Java Mail的API。首先我们需要把James这个邮件服务器跑起来,官网下载地址:http://jam

2013-07-09 14:10:13 11493 2

转载 Java 序列化的高级认识

简介: 如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件。那你最好再阅读该篇文章,文章对序列化进行了更深一步的讨论,用实际的例子代码讲述了序列化的高级认识,包括父类序列化的问题、静态变量问题、transient 关键字的影响、序列化 ID 问题。在笔者实际开发过程中,就多次遇到序列化的问题,在该文章中也会与读者分享。引言将 Java 对象序列化为二进制文件的 Java

2013-01-07 16:07:50 2144

转载 Android Push Notification技术实现

在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相对比较麻烦,最近利用几天的时间对Android的推送通知服务进行初步的研究。 在Android手机平台上,Google提供了C2DM(Cloudto Device Messaging)服务,起初我就是

2012-09-12 21:31:31 22217 8

转载 Java背后的秘密之如何开发出高性能Java程序05

1、开发高性能Java程序的原则和方法:决定一个Java程序性能的好坏,是多方面的因素,包括前期的系统结构设计、底层平台架构设计、应用开发中的代码编写以及技巧的使用,系统平台的软件配置,系统平台的硬件性能等等。这里只给出代码编写方面的一些原则和方法。相对于Java的其他方面,在性能领域Java饱受的非议可能最多。许多人认为,Java如果想更好的发展下去必须解决性能问题。然而真正的事实是Java在编

2012-09-06 16:15:26 3331 1

转载 Java背后的秘密之Java的垃圾收集器04

JVM垃圾收集机制:Java语言在推出时或者说直到现在,有两个最为引人注目的特性,即跨平台特性和自动垃圾回收。所谓自动垃圾回收,JVM能够自动识别Java堆中无用的对象(垃圾),并且释放它们所占的空间,以便其他对象使用。垃圾收集机制把程序员从恼人的内存管理中解救了出来,使之腾出更多的精力去考虑其他程序的问题。这无疑相比在此之前的一些语言(如:C++),减轻了开发人员的工作负担。JVM的垃圾回收由J

2012-09-05 16:23:06 2421

转载 Java背后的秘密之Java的类装载器03

Java语言是一种先天具备动态性的语言,之所以具备动态性正是因为Java类装载器的存在。这会给我们开发带来革命性的变革,因为我们有可能开发出有弹性、易扩展的程序。从而大大增强我们程序的可维护性。按载入条件分为预先载入与按需载入。1.通常基础类库需要预先载入。(常驻内存)2.自定义类库需要按需载入。(使用时载入,使用完毕时由垃圾收集器负责释放)类装载器运行模式分为两种,如下图:1.使用new关键字来

2012-09-05 10:28:26 2604

转载 Java背后的秘密之虚拟机的组成部件02

想要深入学习Java虚拟机的知识,首先得看一看虚拟机的组成部件。它有哪几部分构成,各部分都有什么作用与联系。我们都知道Java虚拟机是模拟了一台硬件计算机,可以想象成Java虚拟机就是一台硬件计算机,它拥有内存、cpu、输入/输出、网卡等。下面这张图片展示了虚拟机的组成:        Java一推出,就打着跨平台的旗号。其原理就是将目标文件编译成Java字节码文件,通过虚拟机去解释执行,最终会被

2012-09-03 10:28:09 2740

转载 Java背后的秘密之深入Java虚拟机初探01

我的目标是要成为一名企业级架构师,想成为一名合格的架构师,要学习的东西还是非常多的。Now最近就在学习关于Java虚拟机方面的知识。如果说Java的各种主流框架是招式的话,那么深入了解Java虚拟机就是所谓的内在修为,即内功。武侠小说中内力是非常有用的。首先以两个问题开始吧,大家也可以思考一下:1.为什么安装JDK后会出现两套JRE呢?(什么?你不知道,你out了)2.系统中有两个jre,由谁来决

2012-09-02 01:44:54 2571

原创 路在脚下,何去何从?

路在脚下,何去何从?最近发生的事情比较多,换工作,到新公司,试用期未满,新公司宣布下面将发不出工资,所谓良禽择木而栖,贤人择主而事,一边焦虑的上班一边找工作。感觉IT行业的泡沫来了,大公司在裁人,小公司一个个在倒下,工作不好找。以前把简历藏起来都经常接到电话,现在海投,却没有几个电话,有的也是比较雷人的公司,雷到派应届生作为面试官。尽管大环境如此,却也动摇不了我对行业的激情,撸起袖子,深入敌后。最

2012-08-28 10:26:20 4452 4

转载 C语言内存分配:malloc、calloc、realloc

大家都知道程序在内存中的布局分为:栈区、堆、静态变量区、常量区等几个部分。其中堆上的空间分配是由程序员自己来管理的,包括空间的申请和释放。我们这里就说一下C标准库中提供的几个在堆上操作空间的函数:1、void* malloc(unsigned size);2、void* calloc(size_t nelem, size_t elsize);3、void* re

2012-06-08 15:04:27 2710 2

原创 Android Lint(官方代码优化利器)

Eclipse的ADT插件更新到最新的16.0以后,发现在Eclipse功能栏里多了一个红色对号的图标,如图所示:简单实用了一下之后,发现这个工具实在是太强大啦。它能够对你的Android项目进行全面分析,然后会给你一个诊断结果。告诉你的工程里有哪些不太妥当的地方,例如:1,项目中有哪些资源文件引入了却没有在代码中使用的话,会给提

2012-03-05 11:06:29 10378 2

原创 基于Java Socket客户端、服务端聊天雏形

Server.javapackage org.sunchao;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.InputStream;import java.io.InputStreamReader;impor

2012-02-29 16:15:06 3088

原创 Android虚拟机内存可以这样优化一把

对于一些大型Android项目或游戏来说在算法处理上没有问题外,影响性能瓶颈的主要是Android自己内存管理机制问题,目前手机厂商对RAM都比较吝啬,对于软件的流畅性来说RAM对性能的影响十分敏感,我们可以强制定义自己软件的堆内存大小,可以使用Dalvik提供的dalvik.system.VMRuntime类来设置最小堆内存:private final static int HEAP

2012-02-06 12:11:34 9012

原创 Android横竖屏切换总结

Android横竖屏要解决的问题应该就两个:一.布局问题二.重新载入问题1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,他有以下几个参数:"unspecified":默认值 由系统来判断显示方向.判定的策略是和设备相关的,

2012-02-01 11:26:18 9063 1

原创 Android内存泄漏就这样产生了

1.资源对象没关闭造成的内存泄漏描述:资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们,以便它们的缓冲及时回收内存。它们的缓冲不仅存在于java虚拟机内,还存在于java虚拟机外。如果我们仅仅是把它的引用设置为null,而不关闭它们,往往会造成内存泄漏。因为有些资源性对象,比如SQLiteCursor(在析构函数finalize(),如

2012-02-01 11:18:05 9776 2

翻译 如何避免Android内存泄漏

至少在T-Mobile G1上Android应用在堆上分配的内存大小被限制16MB以内。对于手机来说,这是个不小的内存,但是这仍然远远不能满足一些开发者的需求。但是,即使你不打算使用所有的内存空间,你也应该尽可能地少用内存,从而使得其他应用能够运行而不是被杀掉。因为Android能够在内存中保持的应用越多,那么用户切换应用的速度就会越快。作为我工作的一部分,我在做android应用开发的时候也会陷

2012-01-18 17:35:04 18292 10

原创 Android软键盘的一些控制

"EditText + Button" 形成一个 "输入+按键响应" 的案例在android编程中是最常见不过的了。但还有一些细节需要注意:在EditText输入后,点击Button进行请求,软键盘应该自行消失在EditText输入后,不点击Button进行请求,而是直接点击软键盘上的"回车",那么也应该能够正常响应请求针对问题1,可以在响应Button的onClick事件中,主动

2012-01-18 11:00:25 12526

原创 Android之定义各种样式的标题栏

最近在网上看到一篇介绍Android window的requestWindowFeature()的使用方法,共享出来大家学习学习requestWindowFeature(Window.FEATURE_LEFT_ICON);setContentView(R.layout.dialog_activity);getWindow().setFeatureDrawableResource(Win

2012-01-18 10:07:36 6352

原创 Android原理之动态墙纸

Livewallpaper,即动态墙纸,是Android的一大3D特色功能,用户可以在桌面选择加载动态墙纸,让自己的手机桌面背景旋动起来。相对于静态桌面壁纸,动态墙纸可以展示各种动态变化的背景,而与传统手机系统采用GIF作为动态背景不同的是,Android的动态墙纸并不是GIF图片,而是一个标准的Android应用程序,也就是APK。既然是应用程序,当然意味着天生具有有GIF图片不具备的功能—

2012-01-17 09:29:50 6693 3

原创 Android之PreferenceActivity

看到很多书中都没有对PreferenceActivity做介绍,而我在看Android Samples时无意中看见了,所以就稍微总结一下,也方便日后查找。PerferenceActivity是什么,看下面的截图:        好了,我们看到Android系统本身就大量用到了PreferenceActivity来对系统进行信息配置和管理,那么它是怎么保存数据的呢,如何创

2012-01-16 17:16:01 1838 4

翻译 BI报告:HTML5将在3-5年彻底取代移动应用!

后PC时代的应用和HTML5之争,双方观点目前都在争论。科技源在[超级火爆]未来趋势大争论:应用 vs 网络,谁是未来?[全面详解]文中详细分析过事情的大致来龙去脉,这篇来自BI的分析报告,HTML5 短期内无法撼动移动应用为代表的应用,大约会需要3-5年的时间;HTML5 拥有更好的用户交互性和更丰富的网络在线内容;作为移动应用的受益方,苹果公司将随着HTML5的崛起,其移动应用逐渐减少和衰

2012-01-12 15:12:33 2286

翻译 移动Web 2011综述

2011年是移动web年。移动web的工具集和资源库步入成熟,新的工具不断推出,各种丰富的插件使得基于web的移动应用程序开发变得越来越方便。下面是移动web 2011年综述,里面记录了2011年推出的最具影响力的资源和发生的大事件!Weinre Weinre在2010年12月推出了它的首个版本, 但是很快,它就占领了市场,并且成为最好的远程调试工具,和WebKit/Chr

2012-01-12 13:27:12 1459

原创 Android xml文件中ID重名问题

当Android的工程越来越大。xml文件越来越多时,避免不了两个xml文件中同样的组件使用同样的id名字,gen目录下的R.java文件中,有关id的声明都在id的class中,即public static final class id{};当两个xml文件中同样的组件,比如Button,有可能很多个文件中,都有id=”@+id/Button”,开始以为在Java类中引用会重复的id造成程序的不

2012-01-11 16:13:59 6034 3

原创 Android界面设计更easy

Android组件界面设计工具 DroidDrawDroidDraw是一个Android界面设计器,基于Java Swing开发,我们可以通过它来生成复杂的Android Layout XML文件,据作者介绍,Android的Layout和Swing Layout中有很好的对应,设计器的代码编写起来还是比较容易的。android下,高级组件,通过xml来配置,书写,然后

2012-01-10 19:51:48 2544

原创 Android中如何取消或定制当点击GridView的时候出现的那个黄色背景?

如何取消或定制当点击GridView 的时候出现的那个黄色背景?初始化的时候在代码里面设置setSelector颜色为透明色gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));

2012-01-10 19:43:05 23615 7

原创 Android ListView详解

在Android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。抽空把对ListView的使用做了整理,并写了个小例子,如下图。列表的显示需要三个元素:1.ListVeiw 用来展示列表的View。2.适配器 用来把数据映射到ListView上的中介。3.数据 具体的将被映射的字符串,图片,或者基本组件。根据列表的适

2011-12-13 16:56:39 1645 3

原创 C语言输出百分号(%)的方法,比较迷惑

很简单,只要在格式控制符里输入2个 %% 就可以了,例如:#include int main(){    int a=90;    printf("%d%%\n",a);    return 0;}这样就会在屏幕上得到 90%,但是为什么呢?

2011-12-07 12:00:53 7088 1

程序中Wifi连接网络

主要功能有打开无线网卡、关闭无线网卡、检查网卡状态、扫描网络、扫描结果、连接Wifi、断开Wifi、Wifi连接状态。

2011-07-17

startActivityForResult的详细用法

使用startActivityForResult回传数据

2011-07-17

JNI------C语言调用Java

最近项目中需要使用JNI,所以研究了一下,其中遇到过不少问题,总结一下,让遇到同样问题的人可以得到解决。 在C/C++中调用Java的方法一般分为五个步骤:初始化虚拟机、获取类、获取类的方法、创建类对象、调用方法和退出虚拟机。

2011-07-11

空空如也

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

TA关注的人

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