摘要:
为了紧跟技术潮流,目前的项目开始采用ORM的思想进行重新设计。数据库采用轻量级ORM框架LitePal,Json解析采用Gson,网络框架采用Volley。如果只是单纯的将这些第三方框架引进来,事情就简单多了,但这样意义不大,所以我们就结合项目的需求探索这三者的结合方案。Volley的改造比较大,结... 阅读全文
摘要:
作为大四毕业生,而且还是二本,加上技术基础不咋样,找工作自然也是辛酸得很。。。最糟糕的情况就是一开始实在是太小看了求职之路的艰辛,整个9月都是无所事事的度过,直到月底面试腾讯被鄙视后才顿然醒悟,意识到自己目前的处境是多么可怕,马上找了几本面试宝典,整天泡在图书馆。。。但迅雷的笔试将我彻底打败,满满的题目,写得我是一点心情也没有,提前一个小时交卷,关键就是笔试还没开始,就让我们填一份基本情况调查表,非常详细,敏锐的意识到,这次笔试肯定要刷一大批人,果然如此,有幸过了笔试这关的同学跟我说,能去面试的人非常少。。。国庆之前在网上大量海投,凡是搭上边的都投,腾讯一面被刷后,接到一家专门做外包的公... 阅读全文
摘要:
大学终于要迈入尾声了,工作也找到了相对较好的,现在就差毕业设计了。我一直坚信着这样的原则:当面临很多选择时,选择最难的那一个,所以我选择了室内导盲系统设计。其实这也不是最难的,只是我以前没有做过类似的工作,其他多多少少都有涉及,所以特地选择了这个。 说难其实也不难,因为硬件已经做好了,我要做的就是设计软件。软件设计的方法有很多种,还是秉持着那条原则:选择最难的那个,所以我选择了测试驱动开发的方式。 在写这篇文章的时候,我的室友打机打得正酣,而我则在一边忙着敲代码,这时突然意识到,为啥他们能够接受那样低水平的工作而没有任何抱怨,甚至在当初连做选择都没有就接受了,然后就一直拼命的打机... 阅读全文
摘要:
人的机缘是神奇的,认识一个人就相当于打开了一个圈子,不管这个人是否在圈子中心,而这点,会在不经意间带给我们意想不到的作用。 如果我们在编写代码的时候,遇到大量的条件判断的时候,可能会采用策略模式来优化结构,因为这时涉及到策略的选择,但有时候仔细查看下,就会发现,这些所谓的策略其实是对象的不同状态,更加明显的是,对象的某种状态也成为判断的条件。 我们还是以一个例子入手。假设现在我们有一个饮水机,它有以下两个状态:满桶,空桶。初始状态是满桶,容量是20。饮水机只有一个动作:press,每次press后都会使容量减1,一旦为0,则将状态设置为空桶,这时press没有水流出。 要使用状态模式,我们必. 阅读全文
摘要:
正式学习编程也就1年而已,在这1年里,要学习C/C++,Java,C#这些主流语言,还要熟悉JavaScript,HTML,CSS这些前端开发知识,加上一些Android应用软件,网站站点的开发工作,导致我现在就是一个大杂烩,什么都知道一点,但又什么都不精通。现在又面临毕业找工作压力,不知道自己应该找什么工作,毕竟自己好像什么都碰过,心浮气躁,原本基础就是薄弱,还要在这段日子顶着压力,将手头上的项目努力完成,毕竟开发软件不难,但维护软件特别难,像是已经发布的网站,现在面临服务器被攻击而无法正常运行的问题。果然还是那句行内的老话:当软件正式上线运行的时候,真正麻烦的事情才正式开始啊!!相信这也是 阅读全文
摘要:
人生就像是一场长跑,有很多机会,但也得看我们是否能够及时抓牢,就像下面这样的代码:while(isRunning){ if(...){...} else if(...){...} ... else{..}} 存在着太多的if...else if...else...,很多都是一闪而过,就看我们是否将isRunning时刻设置为true,一直不断在跑,一直不断在检查条件是否满足。就算条件达到了,有些人会选择return或者将isRunning设置为false,主动退出循环,有些人选择继续跑下去,不断追寻更高的目标。 所以,如果我们一时看不到未来,请不断跑下去,迟早... 阅读全文
摘要:
数据结构和算法,是我们程序设计最重要的两大元素,可以说,我们的编程,都是在选择和设计合适的数据结构来存放数据,然后再用合适的算法来处理这些数据。 在面试中,最经常被提及的就是链表,因为它简单,但又因为需要对指针进行操作,凡是涉及到指针的,都需要我们具有良好的编程基础才能确保代码没有任何错误。链表是一种动态的数据结构,因为在创建链表时,我们不需要知道链表的长度,当插入一个结点时,只需要为该结点分配内存,然后调整指针的指向来确保新结点被连接到链表中。所以,它不像数组,内存是一次性分配完毕的,而是每添加一个结点分配一次内存。正是因为这点,所以它没有闲置的内存,比起数组,空间效率更高。 像是单向链表. 阅读全文
摘要:
前面已经讲了数组题目中常用的几种方法:递归和循环,查找和排序,现在我们补充一下一些特例。 基于数组的题目考查的知识点除了上面之外,还有其他一些细节,因为数组存放的是数据类型,而数据类型本身就有一些细节值得我们仔细推敲。题目一:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印出最小的一个。我们还是从一个测试用例开始。 假设一个数组{3, 32, 321},那么它所能排成的最小数字应该是321323。表面上这道题目是要求我们找出排列规则,但是它里面隐含了一个重大的问题:大数问题,把数组里的数字都拼起来的话,有可能造成溢出,这也是我们需要考虑的问题。 解决大数问题最直观的的做法就是将数字 阅读全文
摘要:
数组是我们程序员最常用的数据结构,也是笔试和面试最喜欢出的题型。要想解决好一道数组题,需要的不仅是扎实的编程基础,更重要的是,要有清晰的思路,因为数组题经常是一些见都没有见过的数学题目,需要我们当场分析其中的规律。 考察数组,最主要的是这几个方面:查找,排序,递归和循环,而这往往考察的就是我们编写高效率代码的能力。编写能够运行的代码并不难,但要编写高效的代码却是一门需要花时间的功夫,甚至可以说与天赋挂上钩,有些人天生就是对算法非常敏感,能够一下子掌握算法的精髓。但事实就是,大部分正在编程的程序员都不具备这种能力,就像我一样。 所幸,真正的事实就是:大部分人的努力程度并不足以达到与别人拼天赋的. 阅读全文
摘要:
前面我们已经讲过如何让对象具有Thread安全性,让它们能够在同一时间在两个或以上的Thread中使用。Thread的安全性在多线程设计中非常重要,因为race condition是非常难以重现和修正的,我们很难发现,更加难以改正,除非将这个代码的设计推翻来过。 同步最大的问题不是我们在需要同步的地方没有使用同步,而是在不需要同步的地方使用了同步,导致效率极度低下。所以,我们要想办法限制同步,因为无谓的同步比起无谓的运算还更加让人无语。 但是否有办法完全避免同步呢? 在有些情况下是可以的。我们可以使用之前的volatile关键字来解决这个问题,因为volatile修饰的变量是被完整的存储的,. 阅读全文