201605-08 Android通用流行框架大全 Android通用流行框架大全1.缓存名称描述DiskLruCacheJava实现基于LRU的磁盘缓存2.图片加载名称描述AndroidUniversalImageLoader一个强大的加载,缓存,展示图片的库Picasso一个强大的图片下载与缓存的库Fresco一个用于管理图像和他们使用的内存的库Gl... 继续阅读 >
201605-04 常用的svn和git命令 HOT 版本管理基本上是多人协作开发中必不可少的工具,常用的版本管理工具有:svn和git。虽然都有可视化的工具帮助我们使用这些工具,然而当你用上命令行之后,我想你会选择抛弃这些可视化工具。下面是我整理的一些常用的svn和git命令。Svn篇首先你可以通过svnhelp/h来查看帮助信息。开始工作检出(checkout)服务器数据到本地你刚入职一家公司,或新加入某个团队,立马参与到一个项目中,那么就得获取项目代码,开始你的项目... 继续阅读 >
201604-22 svn常用命令整理 svn安装与配置安装yuminstallsubversion查看安装位置rpm-qlsubversion查看使用方法svnhelp创建版本库目录mkdir-p/var/svn/svnrepos创建版本库svnadmincreate/var/svn/svnreposcd/var/svn/svnreposls-lcdconfauthz文件是权限控制文件passwd是帐号密码文件svnserve.confSVN服务配置文件设置账号密码vipasswd在[users]块中添加用户和密码,格式:帐号=密码,如dan=dan设... 继续阅读 >
201604-21 从架构的角度看,如何写好代码? 软件架构实际上包括:代码架构,以及承载代码运行的硬件部署架构。实际上,硬件部署架构最终还是由代码的架构来决定。因为代码架构不合理,是无法把一个运行单元分拆出多个来的,那么硬件架构能分拆的就非常的有限,整个系统最终很难长的更大。所以我们经常会听说,重写代码,推翻原有架构,重新设计等等说法,来说明架构的进化。这实际上就是当初为了完成任务,没有充分思考所带来的后果。这也并不是架构进化的事情,而是个人... 继续阅读 >
201604-20 前后端分离了,然后呢? 前言前后端分离已经是业界所共识的一种开发/部署模式了。所谓的前后端分离,并不是传统行业中的按部门划分,一部分人纯做前端(HTML/CSS/JavaScript/Flex),另一部分人纯做后端,因为这种方式是不工作的:比如很多团队采取了后端的模板技术(JSP,FreeMarker,ERB等等),前端的开发和调试需要一个后台Web容器的支持,从而无法做到真正的分离(更不用提在部署的时候,由于动态内容和静态内容混在一起,当设计动态静态分流的... 继续阅读 >
201604-20 几种开源工作流引擎的简单比较 摘要:目前开源工作流引擎用的最多的是jbpm,各种特性都不错,文档也比较多,下面只简单列举一下目前开源工作流引擎用的最多的是jbpm,各种特性都不错,文档也比较多,下面只简单列举一下其他几种工作流引擎的特性。 ApacheODEEnhydraSharkBonita... 继续阅读 >
201604-20 提升代码的可读性系列--基础篇 HOT 编程是一门艺术活,好的代码应该就像住的房子一样,有整体的框架,有门,有窗户,相互独立又完美组合。你觉得门不够结实,就拆下来换个实心的;你觉得窗户不够明亮就换个全玻璃的,总之对房子的其他部位没有任何影响。所以说每一个程序员都应该有一颗设计师的心。本文主要从编码、变量、处理错误、对象等基础方面进行简单的探讨,希望能对大家的工作有所帮助~~1编码风格老生常谈,我们先从最基础的编码说起吧!好的编码规范不... 继续阅读 >
201604-18 软件架构到底是要解决什么问题? 前一篇文章简述了什么是软件。那么什么是软件架构呢?按照惯例,我们来看看是什么问题,是谁的问题。要解决谁的问题?如前所述,软件实际上就是把现实生活模拟到计算机中,并且软件是需要在计算机的硬件中运行起来的。要做到这一点需要解决两个问题:一、业务问题具体的现实生活状态下,没有软件的时候,所解决的问题的主体是谁,解决的是什么问题,是如何解决,如何运作的?二、计算机问题 ... 继续阅读 >
201604-18 什么是软件 前面通过四篇文章,把什么是架构,如何做好架构等必要的概念澄清了一下。这些概念对于在各种不同的领域都应该也是有用的,需要读者自行思考,并应用到自己所在的领域中。在这篇文章开始,我们用同样的思考,来看看软件是怎么回事,以及如何运用架构思维,更好的设计和实现软件。冯诺依曼结构,图灵机,以模拟人为目标软件的历史,实际上可以说是用机器模拟人的历史。不管大家(包括在这个历史过程中的参与者)有没有... 继续阅读 >
201604-18 如何做好架构之架构切分 前一篇已经讲了如何识别问题。在识别出是谁的问题之后,会发现,在大部分情况下,问题都迎刃而解,不需要做额外的动作。很多时候问题的产生都是因为沟通的误解,或者主观上有很多不必要的利益诉求导致的。但是总还有一部分确实是有问题的,需要做调整,那么就必须要有所动作,做相应的调整。这个调整就是架构的切分。切分就是利益的调整我们要非常的清楚,所有的切分调整,都是对相关人的利益的调整。为什么这么说呢... 继续阅读 >
201604-18 如何做好架构之识别问题 按照之前架构的定义,做好架构首先需要做的就是识别出需要解决的问题。一般来说,如果把真正的问题找到,那么问题就已经解决80%了。这个能力基本上就决定了架构师的水平。那么面对问题有哪些困难呢?我们先看一则笑话。女主人公:老公,把袋子里的土豆切一半下锅。结果老公是把袋子里的每个土豆都削了一半,然后下锅。当然很多人会说,这个是沟通问题,然后一笑了之。其实,出现这个现象是由于我们大部分时候过于关... 继续阅读 >
201604-18 认识概念是理解架构的基础 在前一篇文章中,我们讨论了什么是架构。事实上,这些基础概念对于做架构是非常重要的,大部分人对于每天都习以为常的概念,都自以为明白了,但实际上都是下意识的,并不是主动的认识。比如说“什么是桌子?”,做培训的时候,我经常拿这个例子来问大家,回答千奇百怪。这实际上就导致了做架构的时候,不同角色的沟通会出很多问题,那么结果也就可想而知了。如前一篇所说,架构实际上解决的是人的问题,而概念是人认识这个世... 继续阅读 >
201604-18 什么是架构? 架构漫谈是由资深架构师王概凯Kevin执笔的系列专栏,专栏将会以Kevin的架构经验为基础,逐步讨论什么是架构、怎样做好架构、软件架构如何落地、如何写好程序等问题。专栏的目的是希望能抛出一些观点,并引发大家思考,如果你有感触或者新的感悟,欢迎联系专栏负责人Gary(微信greenguolei)深聊。本文是漫谈架构专栏的第一篇,作者将会通过类比的方式来介绍什么是架构以及为什么会产生架构。缘起一直以来,在软件... 继续阅读 >
201604-18 软件开发所经历的生命周期 总的来说,软件开发都会经历一下生命周期分析需求:分析问题领域,了解用户的需求软件设计:设计软件的总体架构,把整个软件系统划分成大大小小的多个子系统,设计每个子系统的具体结构软件编码:用选定的编程语言来编写软件功能,实现软件设计阶段所勾画出来的软件蓝图软件测试:测试软件是否实现特定的功能,以及软件的运行性能软件部署:为用户安装软件系统,帮助用户正确的使用软件软件维护:修复软件... 继续阅读 >
201604-15 如何为你的UIView添加边缘分割线 在移动端产品的开发过程中,很多时候我们需要在某个View的top或者bottom的位置添加一条分割线。遇到这样的需求你是怎么解决的呢?欢迎各位简友们分享自己的做法。我们通常的解决方式,就是添加一个subview,到相应的位置;然后把该subview.backgroundColor设置成我们想要的颜色。这样确实解决了,视觉效果上的问题。但是长期下来,我个人还是觉得有点低效...今天分享的就是我目前所使用的为view添加分割线的方法。总体思路这样... 继续阅读 >
201604-14 为什么开发与测试老掐架呢 让我们思考几个常见的问题:软件测试的目的是什么?开发人员能否构建出没有Bug的完美软件?测人人员和开发人员是什么关系?软件测试能否保证软件质量?先闭目冥想五分钟吧,然后可以尝试着回答上面的问题。计算机先驱MauriceWikes回忆起1949年他在英国剑桥工作的情形,在拖着打孔纸带上楼给雏形计算机EDASC装载程序时,他看到了自己的未来:我强烈... 继续阅读 >
201604-14 你要避免的软件开发模式 做软件开发十数年,见识了形形色色的开发者,和各种各样的奇葩软件开发模式。本文跟你侃侃这些软件开发模式及其特点。IDD(IDE-DrivenDevelopment)大巧在所不为,大智在所不虑。--荀子天论IDD,也就是IDE驱动开发,几乎是初学者步入软件开发殿堂的必经之路。IDE为开发者屏蔽了很多细节,并且几乎不用配置(相对于vim/emacs/sublime)就可以使用代码自动补全,代码跳转,搜索... 继续阅读 >
201604-12 我爱写代码:编程语言了解 技术总结:编程语言了解由于毕业后要找互联网产品类的工作,想想大学没学好一些编程语言还真是一件很后悔的事情。今天花了一下午的时间总结了世界主流的一些计算机语言的简介和功能以及优劣势的对比和分析。仅仅代表个人的理解,大牛无视。(一)2016年世界编程语言使用率排行榜先来看看这份数据,这张图表列举了今年各种编程语言的使用率和热度。问题(一):C、C++、C#、和java的区别简单地说,它们不是一种语言,语法... 继续阅读 >
201604-12 iOS 一个简单的通讯录 用tableview写了一个简单的通讯录,话不多说,咱们慢慢构建。首先,你需要一个tableview(这是肯定的。。代码就不贴了哈),接下来,你需要对数据源进行处理,按A-Z首字母分类。UILocalizedIndexedCollation*indexedCollation=[UILocalizedIndexedCollationcurrentCollation];[self.sectionHeaderArrayaddObjectsFromArray:[indexedCollationsectionTitles]];NSMutableArray*sortarray=[[NSMutableArrayalloc]init];... 继续阅读 >
201604-11 Python开发的10个小贴士 下面是十个Python中很有用的贴士和技巧。其中一些是初学这门语言常常会犯的错误。注意:假设我们都用的是Python31.列表推导式你有一个list:bag=[1,2,3,4,5]现在你想让所有元素翻倍,让它看起来是这个样子:[2,4,6,8,10]大多初学者,根据之前语言的经验会大概这样来做bag=[1,2,3,4,5]foriinrange(len(bag)):bag[i]=bag[i]*2但是有更好的方法:bag=[elem*2... 继续阅读 >
201604-11 git命令,常用命令总结 创建和使用gitsshkey首先设置git的username和email:gitconfig–globaluser.name“xxx”gitconfig–globaluser.email“xxx@gmail.com”查看git配置:gitconfig–list然后生成SHH密匙:查看是否已经有了ssh密钥:cd~/.ssh如果没有密钥则不会有此文件夹,有则备份删除生存密钥:ssh-keygen-trsa-C“xxx@gmail.com”按3个回车,密码为空这里一般不使用密钥。最后得到了两个文件:id_... 继续阅读 >
201604-09 Java开发环境中使用CKEditor集成 本文主要介绍如何将CKEditor集成到Java开发环境中,CKEditor是FCKEditor的升级版,使用很方便。下面是基本使用方法:第一步:下载必要的库1、到CKEditor官网http://www.fckeditor.net/download/下载Ckeditor4.0.2,这是目前最新的版本,4.1马上就出来了。2、找到CKEditor3.6.4forJava,download.jar按钮,下载ckeditor-java-core-3.5.3.zip,这是java集成的jar包,可以用来配置CKEditor,其中还有Ckeditor的标签,比较重要... 继续阅读 >
201604-09 深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲:一.抽象类二.接口三.抽象类和接口的区别若有不正之处,请多多谅解并欢迎批评指正,不甚感激。一.抽象类在了解抽象类之前,先... 继续阅读 >
201604-07 只知道API,今天初识SPI 最近在学习dubbo源码,dubbo在功能扩展方面,提供了SPI的扩展。初次看到SPI,还是不容易理解,下面记录SPI的学习。系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。为了实现在模块装配的... 继续阅读 >