技术,产品,创业,互联网,投资理财,生活感悟

第 3 页

接上一篇应用开发入门介绍,Elwin这篇将会介绍主流的区块链开源技术体系,供大家开发自家区块链平台及应用参考。   一、     比特币体系 比特币(BitCoin)是最早也是全球最广泛使用和真正意义的去中心化区块链技术,因此他的开源技术体系非常值得参考。 比特币区块链的核心技术框架采用C++语言开发,共识算法采用POW算法,工作量(挖矿)证明获得记账权,容错50%,实现全网记账,公网性能TPS<7。 开源地址为:https://github.com/bitcoin/bitcoin   虽然说POW算法比较低效率和耗能,比特币区块链由于推出时间比较早又不够强大(如不支持智能合约),但不可否认的是,目前市场上相对成熟和稳定的区块链体系还是比特币。市面上群魔乱舞的山寨币,正是基于比特币的源代码照搬或小改动而创造的,在比特币区块链的体系基础上,还创造了几种区块链技术体系:   彩色币(染色币),彩色币本身就是比特币,是在历史上的创世交易里面被转移过的比特币。在技术上将比特币网络从其货币价值中抽离出来,它们具有一些特殊的属性,比如支持代理或聚集点,从而具有与比特币面值无关的价值。彩色币可以用作替代货币、商品证书、智能财产以及其他金融工具,如股票和债券等。   闪电网络,是为了解决比特币区块链的瓶颈处理能力而生的,他可以有效解决时延、容量扩展、最终性的问题,为比特币区块链提供了一个可扩展的微支付通道网络,使用闪电网络后,TPS最大可以扩展到300。交易双方若在区块链上预先设有支付通道,就可以多次、高频、双向地通过轧差方式实现瞬间确认的微支付;双方若无直接的点对点支付通道,只要网络中存在一条连通双方的、由多个支付通道构成的支付路径,闪电网络也可以利用这条支付路径实现资金在双方之间的可靠转移。   比特币侧链 侧链是以锚定比特币为基础的新型区块链,就像美金锚定到金条一样。比特币的在区块链相当在货币体系的黄金地位,因为他是最去中心化、最多分布节点、最公平区块链。侧链是以融合的方式实现加密货币金融生态的目标,而不是像其它加密货币一样排斥现有的系统。利用侧链,我们可以轻松的建立各种智能化的金融合约,股票、期货、衍生品等等。你可以有成千上万个锚定到比特币上的侧链,特性和目的各不相同,所有这些侧链依赖于比特币主区块链保障的弹性和稀缺性。比较著名的比特币侧链是Rootstock和BlockStream推出的元素链。   Rootstock是一个基于比特币侧链的开源智能合约平台,他使得比特币拥有了智能合约,基于Rootstock的智能合约能够运行无数应用,为核心比特币网络增加价值和功能。Rootstock使用一种比特币双向挂钩技术,这种双向挂钩以一种固定的转换率输送或输出Rootstock上的比特币,Rootstock双向挂钩是一种混合驱链和侧链的技术。更值得关注的是,Rootstock向后兼容以太坊,实现了以太坊虚拟机的一个改进版本,所以以太坊发布的DApps程序能够轻松地在Rootstock上使用,实现比特币级别的安全性和以太坊大量Dapps的复用性,更快的执行性并和比特币发生更强的相互作用。使用Rootstock可以将性能扩展到TPS为300。   元素链(Elements)是Blockstream的开源侧链项目,同样使用比特币双向挂钩技术,除了智能合约外,他还给比特币快速带来许多创新技术,包括私密交易、证据分离、相对锁定时间、新操作码、签名覆盖金额等等特性。核心技术框架采用C++语言开发,开源地址为:https://github.com/ElementsProject/elements     二、     以太坊ETH 刚结束的以太坊全球开发者大会DEVCON2,吸引了无数大牛到上海,可以看到,以太坊生态系统正在高速地成长着,正朝着成为“世界计算机”的目标前进。无论是the DAO众筹到攻击,还是ETH与ETC 分道扬镳,或者是各种以太坊生态的开发框架和应用,以太坊目前在区块链平台是最吸引眼球的。   以太坊是一个图灵完备的区块链一站式开发平台,采用多种编程语言实现协议,采用GO语言写的客户端作为默认客户端(即与以太坊网络交互的方法, 支持其他多种语言的客户端)。基于以太坊平台之上的应用是智能合约,这是以太坊的核心。智能合约配合友好的界面和外加一些额外的小支持,可以让用户基于合约搭建各种千变万化的DApp应用,这样使得开发人员开发区块链应用的门槛大大降低。   以太坊ETH的开源地址:https://github.com/ethereum/。以太坊的整个技术生态系统比较强大,同时迭代周期比较快,所以有比较强的生命力,但事物都有两面,对于依赖于以太坊特别是以太坊公网的商业应用来说,频繁的迭代升级和处于风口浪尖(被攻击),使得基于以太坊的商业应用,有时候不得不打足精神去跟以太坊一起升级维护和补丁。   目前以太坊正在正式运行1.0版本,采用的是POW挖矿的共识算法,目前公网的TPS是25笔,在开发中的1.5版本,将采用类POS的Casper算法,以使区块链的确认速度相对于POW的线性效率,达到指数级。采用Casper后将会更好的确认机制,以及大幅降低能量消耗。在规划的 2.0版本目标,TPS有望可以达到2000TPS。   以太坊的进一步开发介绍你可以参考我另外一篇文章《区块链应用开发入门》。   三、     IBM HyperLedger fabric IBMHyperLedger,又叫 fabric,是一个带有可插入各种功能模块架构的区块链实施方案,他的目标是打造成一个由全社会来共同维护的一个超级账本。Elwin个人感觉fabric分层设计比较合理,模块化程度非常不错,虽然目前还是在完善阶段,并没有真正商用(最近IBM携手中国银联打造区块链为基础的忠诚积分交易系统,但还是属于探索试样项目),但以IBM的多年技术底蕴,fabric应该是大企业构建区块链底层的选择之一。   fabric架构核心逻辑有三条:Membership、Blockchain和Chaincode。MembershipServices这项服务用来管理节点身份、隐私、保密性、可审计性。Blockchain services使用建立在HTTP/2上的P2P协议来管理分布式账本,提供最有效的哈希算法来维护区块链世界状态的副本。采取可插拔的方式来根据具体需求来设置共识协议,比如PBFT,Raft,PoW和PoS等等,IBM首选PBFT算法。Chaincode services 会提供一种安全且轻量级的沙盒运行模式,来在VP节点上执行chaincode逻辑,类似以太坊的EVM虚拟机及其他上面运行的智能合约。   开源地址:https://github.com/hyperledger/fabric。Fabric的主要框架核心开发语言是GO语言,系统目标是15个验证节点下最理想情况下可以有100K TPS的性能,更适合于联盟链。     四、     比特股BitShare 比特股(BitShares)是区块链历史上里程碑式的产品之一,截至目前仍然是完整度最高、功能最丰富、性能最强大的区块链产品之一。比特股是可以看作是一个公司、货币甚至是一个社区。它提供的BitUSD等锚定资产是虚拟币历史上的一个最重要变革之一,能够极大消除虚拟货币被人诟病的波动性大的问题。   比特币低效率高能耗的POW算法,使得比特股及其DPos共识算法应运而生。有别于比特币特定的共识机制,DPos有一个内置的实时股权人投票系统,就像系统随时都在召开一个永不散场的股东大会,所有股东都在这里投票决定公司决策。与比特币相比,比特股系统的投票权牢牢掌握在股东手里,而不是雇员。比特股系统的去中心化程度紧紧掌握在比特股持有者们的手中,他们决定了出块受托人的个数。同时,作恶的受托人不会得到任何好处,并且很快就会被投票出局。此外,比特股内置了强大的账户权限设定、灵活的多重签名方式、白名单等特性,足以满足企业级的功能定制需求。   比特股的1.0开源地址是:https://github.com/bytemaster/bitshares,2.0开源库在:http://github.com/bitshares。他的核心技术框架采用C++语言开发,既适用于公有链,也适合于联盟链,只需要少量节点进行记账,TPS>500,容错50%,在比特股2.0中如果在最优的网络和硬件情况下可以达到最高100K的TPS。     五、     公证通Factom 公证通(Factom)利用比特币的区块链技术来革新商业社会和政府部门的数据管理和数据记录方式,也可以被理解为是一个不可撤销的发布系统,系统中的数据一经发布,便不可撤销,提供了一份准确、可验证、且无法篡改的审计跟踪记录。利用区块链技术帮助各种各样应用程序的开发,包括审计系统,医疗信息记录,供应链管理,投票系统,财产契据,法律应用,金融系统等。   建立在Factom基础之上的应用程序寻求能够直接利用区块链实现追踪资产和实现合约,而不用将交易记录写入区块链,Factom在自己的架构中记录条目。跟以太坊类似,Factom系统会创造一个叫Factoids的电子币。持有Factoids意味着有权使用Factom系统。只要把Factoids转化成输入积分便有权把数据写入Factom系统中。同时运行着Factom的联邦服务器也能收获Factoids作为维护系统的回报。Factom虽然同样基于比特币网络,但却并不是之前提到侧链或染色币的技术架构,Factom只将目录区块的哈希值锚定到比特币区块链。Factom很好地解决了比特币三个核心的约束和问题,速度、成本和区块链膨胀。   Factom中的政策和奖励机制与POS机制有相似之处。与其不同之处在于,Factom中只有一小部分的用户权益能够被认可。只有已经提交到系统的权益有投票权,而可转移的Factoid权益没有投票权,避免了POS机制的“股份磨损”和“没有人进行POS”问题。   公证通的开源地址是:https://github.com/FactomProject/FactomCode。他的核心技术框架采用GO语言开发,TPS是27笔左右(待考究)。   最新情况,Factom将不会只依赖于比特币区块链,他将会同样会通过整合以太坊区块链,以来确保存放的数据时时刻刻都是安全的。   六、     瑞波Ripple 瑞波(Ripple)是世界上第一个开放的支付网络,是基于区块连的点到点全球支付网络。通过这个支付网络,使你轻松、廉价并安全的把你的金钱转账到互联网上的任何一个人,无论他在世界的哪个地方,他可以转账任意一种货币,包括美元、欧元、人民币、日元或者比特币,简便易行快捷,交易确认在几秒以内完成,交易费用几乎是零,没有所谓的跨行异地以及跨国支付费用。   Ripple有两个重要概念,其一是推出Ripple币瑞波币——XRP,它作为Ripple网络的基础货币,就像比特币一样可以整个网络中流通,主要是燃料Gas的作用,每产生一笔交易就会消耗一些 XRP;其二是引入网关(Gateway)系统,它类似于货币兑换机构,允许人们把法定货币注入、抽离Ripple网络,并可充当借、贷双方的桥梁。   Ripple引入了一个共识机制RPCA,通过特殊节点的投票,在很短的时间内就能够对交易进行验证和确认。Ripple客户端不需要下载区块链,它在普通节点上舍弃掉已经验证过的总帐本链,只保留最近的已验证总帐本和一个指向历史总帐本的链接,因而同步和下载总帐本的工作量很小。   Ripple的作用并不仅仅只负责清算货币兑换,它可以是各种虚拟货币、数字资产或任意一种有价值的东西。   Ripple的开源地址是:https://github.com/ripple/rippled,他的核心技术框架采用C++语言开发,TPS<1000。     七、     未来币NXT 未来币(Nxt、Nextcoin)是第二代去中心化虚拟货币,它使用全新的代码编写,不是比特币的山寨币。它第一个采用100%的股权证明POS算法,有资产交易、任意消息、去中心化域名、帐户租赁等多种功能,部分实现了透明锻造功能。   Nxt是且是第一个100%的股权证明机制的电子货币,Nxt不再通过消耗大量的资源“挖矿”产生新货币,而是通过现有账户的余额去“锻造”区块,并给与成功“锻造”区块的账户交易费用奖励。   Nxt具有一个非常灵活的特性,称为“透明锻造”。这一机制使得每一个用户客户端可以自动决定哪个服务器节点能够产生下一个区块。这使得客户端可以直接将交易发送到这个节点,从而使得交易的时间达到最短。实时和高优先级的交易可以通过支付额外的费用来被优先处理。   Nxt区块链2.0已经在讨论和计划实施中了,其核心思路就是要通过主链(Main Chain)和子链(Child Chain)的这种架构来增加Nxt区块链的可扩展性和可删减性,从而解决长期存在的区块链膨胀等问题;   Nxt的开源地址是:https://bitbucket.org/JeanLucPicard/nxt/overview,他的核心技术框架采用JAVA语言开发,TPS<1000。   八、其他 此外,还有几个区块链技术体系也介绍一下: 英特尔的锯齿湖(Sawtooth Lake),目前是用于建造、部署和运行分布式账本的高度模块化平台,重点领域在数字资产,在锯齿湖的数据模型和交易事务语言中,是由称为“transaction family”的体系来实现的, 給用户可以有开箱即用的功能齐全的市场数字资产管理体系。采用PoET和Quorum Voting两种共识算法,框架核心开发语言Python,开源地址为https://github.com/intelledger。   布比区块链,目前采用的是对联盟链内定向开源,共识算法采用自研发的Pool验证池,可以集成Byzantine Paxos、Byzantine、Raft等商用共识算法,实现免Gas费用的秒级共识验证,框架核心开发语言是C++,应用场景比较广泛。   小蚁区块链,开源地址为https://github.com/antshares/antshares,采用改进的拜占庭容错算法-dBFT共识算法,支持智能合约,目前重点领域在数字资产应用,框架核心开发语言C#。         最后,汇总一下几大主流开源技术的比较。 名称 公识算法 适合场景 开发语言 智能合约 TPS 比特币1.0 …

近日,腾讯FiT(支付基础平台与金融应用线)、腾讯研究院正式发布腾讯第一份区块链方案白皮书:可信区块链TrustSQL。白皮书首次总结了腾讯今年在区块链上的研究成果,并对其腾讯可信区块链进行了系统介绍。 腾讯可信区块链核心定位于打造领先的企业级区块链基础平台。据介绍,腾讯区块链采用自主研发的高效自适应共识算法,保证了共识完成即交易确认,并对交易确认过程中的其他环节,如签名算法、账本存储方式等进行了优化,实现秒级确认交易。业务接入成本低,支持SQL方式接入,减少业务开发工作量;安全性方面,提供丰富的权限策略、安全的密钥管理体系和用户隐私保密方案,保障数据安全;运营监控上,提供全面、实时、可视化的运维管理系统,快速识别系统状态,满足多个层级的运营管理需求。 全文:腾讯发布区块链白皮书,定位打造企业级区块链基础平台

7月31日,深圳前海微众银行股份有限公司、上海万向区块链股份公司、矩阵元技术(深圳)有限公司联合宣布重磅消息,将三方近一年来潜心开发、且已实践检验过的区块链底层平台BCOS(取BlockChain OpenSource涵义命名)完全开源。 缘起 在传统的中心化商业模式陷入“大而不能倒”(too big to fail)的窘境并引发金融危机之后,追求多方参与和对等合作的新型商业模式逐渐凸显价值。这种全新的模式我们称之为“分布式商业”,其特点在于多方平等参与、智能协同、专业分工、价值分享等,已经在不同的领域体现出一定的发展潜力。相对应地,为了实现分布式商业的共享与透明规则,以开源为主要特征的分布式技术也得以发挥优势,区块链技术、分布式账本技术等渐渐成为了前沿科技的核心代表。 在此背景下,微众银行、万向区块链、矩阵元在2016年成立了联合区块链实验室,并推进两大区块链联盟金链盟与Chinaledger达成战略合作,致力于共同进行区块链底层平台开发,推动区块链应用场景落地,促进区块链产业与区块链生态在中国的改革创新与蓬勃发展。历经几年的分别探索,以及近一年的整合磨砺,三方顺利完成BCOS平台并开源,以此吸引更多的开发者加入开发,拥抱区块链的开源时代。 探索 BCOS平台从中国的商业可行性与监管要求出发,进行了深度理解和定制,更加适合国内企业使用;另一方面,三家机构本身就具有大规模的商用业务需求,对生产环境里能达到的并发用户数、访问量、吞吐量、响应时间、可用性、安全性等要求更高,BCOS平台亦是力求满足这些内在需求。 新的技术终究要在应用场景尤其是具备海量用户的企业级应用场景中被充分验证并推广,才能评判其成熟度。在真实生产数据的检验下,BCOS平台保持零故障运行,印证了其安全可控、业务可行、健壮可用的优点,其功能、性能、容错性、可靠性、安全性、保密性、可追溯、模块化、可维护性、可移植性、互操作性、数据一致性等特性亦被验证可达到高标准。 价值 BCOS平台作为国内首个安全可控、可商用的开源区块链技术平台,通过集成身份认证、非对称加密算法、引入技术治理功能、支持全面监管审计功能等举措,可支持多个行业的应用需求,满足中国金融业务要求,填补了区块链领域的空白。 对于使用BCOS平台的开发者而言,既能够共享区块链的底层设施,包括共享云服务相关的技术、软件和代码,不需要每个开发成员重复投入,又能使用友好、简单、跨平台的应用开发API与图形化管理台及区块链浏览器等,加速开发流程,改善区块链产品的创建和管理体验。 作为商用的新一代数据交换基础设施,BCOS平台支持监管及商用应用的所有核心技术特性,满足使用者的需要: 提供全面的监管和审计支持模块,满足业务合规要求; 提供对全网商业机构节点的准入控制、CA身份认证、账户管理体系和安全监控功能,支持分布式商业运作的技术治理需求; 实现共识机制的插件化,可支持PBFT、RAFT等多类共识算法,便于匹配不同业务场景需求; 采用分布式数据存储架构,支持海量数据容量与弹性扩容能力,并提供高强度加密存储功能和配套密钥管理机制,提升数据存储安全; 支持对全网所有节点同时进行灵活的配置修改,配置数据保持高一致性; 提供基于密码学的隐私保护功能,支持分布式商业中的保密数据交换; 支持全方位的安全防护机制,兼顾物理安全、传输安全、存储安全、网络安全、密钥安全等。 BCOS平台的构建可有两种方式:开源代码和云服务,两种方式都提供了详细的用户手册,开发文档和样例代码。 理念 回归区块链技术的本质, 其最初的目的是通过一系列公开公正、透明可信的规则,让系统实现在无人干预和管理的情况下自主正常运行,因此大部分主流区块链技术平台皆以开源社区的形式存在。其价值核心是在开放的精神下,以源码为核心,建立起规范的、长久的自治理制度,促进开发者持续有序地对源代码进行改善。 因此,三方联手打造的BCOS平台遵循以下六大价值理念(DRIVES): 了解BCOS平台,访问Github社区:https://github.com/bcosorg/bcos 白皮书下载地址:https://raw.githubusercontent.com/bcosorg/bcos/master/doc/BCOS_Whitepaper.pdf 相关链接 BCOS 的详细介绍:点击查看 BCOS 的下载地址:点击下载

最近国内各大网盘纷纷关停,好多同学都被迫迁移文件。但问题是,国内的网盘服务都是说停就停,根本没有哪个能真正让人放心,那么怎么办才好呢? 现在比较靠谱的方案除了番·羽·土·啬转移文件到国外大牌的如 Dropbox 或 Google Drive,或者购买 Office 365 用 OneDrive 之外,最稳妥的办法还是购买 NAS 或 VPS 服务器来「建立属于自己私有的云存储网盘」了!之前我们推荐过 Seafile 可以轻松搭建自己的跨平台私有云同步盘。其实,国外也有做得相当不错的同类的产品 ownCloud……

spring boot因为内嵌tomcat容器,所以可以通过打包为jar包的方法将项目发布,但是如何将spring boot项目打包成可发布到tomcat中的war包项目呢? 1. 既然需要打包成war包项目,首先需要在pom.xml文件中修改打包类型,将spring boot默认的<packaging>jar</packaging>修改为<packaging>war</packaging>形式; 2. 其次spring boot的web项目中内嵌tomcat服务器,所以如果我们想要发布war包到tomcat项目,要讲spring boot中内嵌的tomcat包依赖排除,不然产生冲突,打开下面代码中的注释即可。 1 2 3 4 5 6 7 8 9 10 11 12 <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-web</artifactId>     <!–     <exclusions>         <exclusion>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-tomcat</artifactId>         </exclusion>     </exclusions>     –> </dependency>            有一点想说的是,如果本地开发的时候依然想要使用spring boot内嵌tomcat进行调试,添加如下依赖即可; 1 2 3 4 5 <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-tomcat</artifactId>     <scope>provided</scope> </dependency> 3. spring boot发布jar包web程序的入口是main函数所在的类,使用@SpringBootApplication注解。但是如果war包发布至tomcat,需要增加 SpringBootServletInitializer 子类,并覆盖它的 configure 方法,或者直接将main函数所在的类继承 SpringBootServletInitializer 子类,并覆盖它的 configure 方法。代码举例如下, 1 2 3 4 5 6 7 8 9 10 11 12 13 14 @SpringBootApplication public class DemoApplication extends SpringBootServletInitializer {          @Override     protected SpringApplicationBuilder configure(             SpringApplicationBuilder application) {         return application.sources(DemoApplication.class);     }          public static void main(String[] args) {         SpringApplication.run(DemoApplication.class, args);     } } 以上就完成了spring boot项目打包war包的所有步骤,可以发布至tomcat7及其以上版本。 但是以上流程改造完spring boot打包war包发布至tomcat6版本之后,浏览器访问项目地址会给出404的错误?为什么呢,一头雾水,经过我一番查阅资料以及实验,得出以下结论, 首先spring boot支持的servlet容器如下,可以看出spring boot最低支持的servlet版本是3.0,但是tomcat6的servlet版本是2.5,这样的话上面的流程是无法支持tomcat6发布spring boot项目的, 但是又google了一番,发现已经有人在解决这个问题了,https://github.com/dsyer/spring-boot-legacy, 标题就表明了它是为了让spring boot支持servlet2.5,刚好解决我们的痛点,使用步骤如下: 1. pom.xml中添加spring-boot-legacy的依赖, 1 2 3 4 5 <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-legacy</artifactId>     <version>1.1.0.RELEASE</version> </dependency> 2.手动替换web.xml文件。但是在发布war包中发现metricFilter提示空指针异常,我就简单粗暴的将filter过滤了,注释如下。 所要替换的web.xml文件的未知如下 : {工程目录}/src/main/webapp/WEB-INF/web.xml 1 2 3 4 5 6 7 8 9 10 11 …

为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”。笔者在初学java时也是这样认为的。如何在一个多层的j2ee项目中定义相应的异常类?在项目中的每一层如何进行异常处理?异常何时被抛出?异常何时被记录?异常该怎么记录?何时需要把checked Exception转化成unchecked Exception ,何时需要把unChecked Exception转化成checked Exception?异常是否应该呈现到前端页面?如何设计一个异常框架?本文将就这些问题进行探讨。 1. JAVA异常处理 在面向过程式的编程语言中,我们可以通过返回值来确定方法是否正常执行。比如在一个c语言编写的程序中,如果方法正确的执行则返回1.错误则返回0。在vb或delphi开发的应用程序中,出现错误时,我们就弹出一个消息框给用户。 通过方法的返回值我们并不能获得错误的详细信息。可能因为方法由不同的程序员编写,当同一类错误在不同的方法出现时,返回的结果和错误信息并不一致。 所以java语言采取了一个统一的异常处理机制。 什么是异常?运行时发生的可被捕获和处理的错误。 在java语言中,Exception是所有异常的父类。任何异常都扩展于Exception类。Exception就相当于一个错误类型。如果要定义一个新的错误类型就扩展一个新的Exception子类。采用异常的好处还在于可以精确的定位到导致程序出错的源代码位置,并获得详细的错误信息。 Java异常处理通过五个关键字来实现,try,catch,throw ,throws, finally。具体的异常处理结构由try….catch….finally块来实现。try块存放可能出现异常的java语句,catch用来捕获发生的异常,并对异常进行处理。Finally块用来清除程序中未释放的资源。不管理try块的代码如何返回,finally块都总是被执行。 一个典型的异常处理代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 public String getPassword(String userId)throws DataAccessException{ String sql = “select password from userinfo where userid=’”+userId +”’”; String password = null; Connection con = null; Statement s = null; ResultSet rs = null; try{ con = getConnection();//获得数据连接 s = con.createStatement(); rs = s.executeQuery(sql); while(rs.next()){ password = rs.getString(1); } rs.close(); s.close(); } Catch(SqlException ex){ throw new DataAccessException(ex); } finally{ try{ if(con != null){ con.close(); } } Catch(SQLException sqlEx){ throw new DataAccessException(“关闭连接失败!”,sqlEx); } } return …

尼采说:“人类怎样才能被提升到其显赫状况和权力的顶峰呢?”思考这一问题的人首先须得明白,他本人一定要置身于自身的狭隘之外,用超脱的眼光去看待。但这似乎又超脱了人们追求显赫与权利的范畴。因此,就本质看来移动应用的统计分析平台,必须建立在移动开发者的这种期待之上,而它本身又要用开源的姿态来抵制这种不客观的期待。 Countly项目旨在提供移动应用程序的分析工具。我们最近有机会与该项目的主要开发人员, Onur Alp Soner进行讨论。以下是对话内容。 编辑:Countly是个不错的开源移动分析平台。请您谈谈它能为移动应用程序开发者提供什么? Onur Alp Soner:Countly提供了一个移动分析平台。它是首个开源的移动分析的解决方案,任何人都可以将Countly客户端部署在自己的服务器并将开发工具包整合到他们的应用程序中,从而开始使用。在Ubuntu服务器和本地部署整个Countly仅需要20分钟,很简单!并且将保证服务器数据安全。Countly真正做到了实时分析,快速,可扩展,目前领先其他同类程序。  图:Countly统计后台 编辑:你们是为了解决自己在移动开发中的问题而开发了Countly么? Onur Alp Soner:Countly项目组中有人专门做移动应用框架开发,其他的成员也都从事移动开发和设计工作,大家是从无到有,逐渐完善地搭建Countly的。 Countly很好的帮助我们解决了多年的业务问题,但我们仍旧决定将它开源,以便集思广益,与众多的移动应用开发者共享Countly的未来。 编辑:Countly上架以来受欢迎吗?  Onur Alp Soner:5月起,Countly已被下载超过2000次。很多用户都评价它简单有效,集成控制平台效果出众。例如,UX设计公司InnovationBox就使用 Countly跟踪分析测试了6款移动平台应用。我们正在与InnovationBox共同测试事件系统,所有的测试都在平行进行,以确保顺利推出下一个版本。而托管服务提供商Ontek,则凭借自家的图形的绘图应用程序“Gitsin CIZ”刚刚打入iTunes市场,该软件使用了Countly的iOS SDK来进行跟踪分析。  图:Countly统计后台 编辑:最新的12.07版本有什么内容? Onur Alp Soner:12.07主要是更多的考虑了用户的需求。现已支持跟踪应用程序版本,平台和平台版本。支持通过改写API时间戳来添加过去的数据,并在仪表盘上做了一些改进,使它可以清除所有应用程序的存储数据(主要是用于测试目的),并加入了一些视觉效果。 编辑:那么接下来的版本将带来怎样的惊喜呢?是什么给你们研发灵感? Onur Alp Soner:即将发布的12.08版本将包括用户最期待的功能,自定义事件。开发者将能够自定义跟踪指标。目前预定义的指标还仅仅在仪表板上,如会话数,用户数,国家,设备等,但是从下个版本开始,开发者将能够跟踪到自己的应用程序特定的度量。例如,将能够跟踪查询应用程序购买数量和金额,所有这些自定义指标,仅仅需要具体添加一行代码。 说到灵感,我们有非常活跃的社区。社区会员的需求和建议引领我们构思下一代产品。在5月我们发布首个版本(12.05)两星期后,我们收到了一位会员发来的Hearko版本Countly服务器端口和Appcelerator Titanium SDK 。另一位社区成员建立了Windows SDK并于近期完成了测试。几个星期前,我们决定进行本地化Countly,用时一星期使Countly仪表盘全面支持7种语言,另有4种语言正在尽快制作中。12.08版本将有望提供11种语言支持。 我们非常感激从社区会员那里得到的支持和帮助,这些也成为了我们发展的核心动力。我们热情欢迎每个人加入这个项目,在我们的博客分享他们的想法,给我们反馈信息,或者帮助我们撰文宣传。 编辑:Countly的底层技术和框架是什么?想要参与项目的人要具备哪些基础?  图:Countly统计后台 Onur Alp Soner:Countly是由两部分组成,软件开发工具包和服务器。前者将嵌入到应用程序的SDK中作为通信渠道,收集数据进行可视化操作并上传Countly服务器。现在,我们有Android和iOS软件开发工具包,这是用Java和Objective-C编写的。Blackberry和Windows的软件开发工具包也即将发布。 而服务器是建立在Node.js 和 MongoDB之上的 。它也由两部分组成,一是API,这是一个普通的Node.js的服务器,监听读取和写入请求,而另一部分则是仪表板,采用Express.js结构。由于比重较大的客户端工具如backbone , underscore , handlebars 和 jQuery,都建立在javascript中,因此,对有意愿参与Countly项目发展的开发者来说,必须了解JavaScript。而如果已经有一定的Node.js和MongoDB的使用基础则再好不过。  

奔四了,职业发展方面不是很亮丽,也不是很好。 对于现在的迷茫的几个点, 1.之前是上市公司,现在是要进入创业团队 2.之前强度小,现在工作强度加度 3.之前是技术经理,现在转技术序列   未来纯技术路线还能走多久? 现在走的路,到时是否符合自己的职业发展? 现在是不是已经是温水煮青蛙? 自己是不是在走下坡路? 自己的2年计划,5年计划到底是什么样子??   是狗急跳墙,还是病急乱投医, 时间是宝贵的,现在做的事情是否还有意义???