别人抢红包,程序猿来探讨微信红包的算法实现

2015年2月25日 没有评论

曾经在公司写过一个类似于微信抢红包的功能,当时由于不会写,各种纠结,虽然最终实现了功能,但也仅仅是实现功能而已,像腾讯这么牛的公司肯定不是那样的,那么腾讯是怎么实现的呢?一直很好奇,但一直不得要领,今天偶然发现一篇文章,作者用很简单的算法,算是比较完美的解决了这个问题,说是完美,因为该算法满足了:

1、每个人都要能够领取到红包;
2、每个人领取到的红包金额总和=总金额;
3、每个人领取到的红包金额不等,但也不能差的太离谱,不然就没趣味;
4、算法一定要简单,不然对不起腾讯这个招牌;

但由于原文是Python写的(老夫的推测,因为老夫并不会Python,本文底部注有链接,感兴趣的可以看看),[……]

Read more

分类: 微信 标签: ,

Android之Service

2015年2月8日 没有评论

今天记录一下老夫对Service的理解,先看一下Service的概念,即Service是什么不是什么,那Service是什么呢?
1. Service是Android的四大组件之一,可以长时间在后台运行;
2. Service不提供界面交互,即Service不像activity一样,有一个界面做展示;
3. 即便用户跳转至另一个应用后,Service仍旧在后台运行;
4. 任意应用组件都可以绑定一个服务,甚至可以用来完成进程间通讯的任务;
5. 可以使用Service更新ContentProvider,发送Intent以及启动系统的通知等等;

那Service不是什么呢?
1. Servic[……]

Read more

分类: Android 标签: ,

Android之Activity之间的参数传递

2015年2月1日 没有评论

前面写了很多activity的东西,什么生命周期之类、常用控件以及这些控件怎么布局之类的,今天从另外一个角度在看activity:一个应用其实就是不同activity的切换,然后展示一些数据给用户,但是不同的activity之前肯定有着联系,那么他们之间怎么联系呢?说白了就是他们之间的参数是如何传递的呢?在讲不同的activity之间相互传参之前,我们先看这样两个问题:①:我们有时候需要从一个activity跳转到另一个activity,并且同时把参数带过去,然后一般就没有第一个activity啥事了,这个很常见所以就不举例子了,我们暂且称这一种为:普通的参数传递;②:有些时候呢,却不是这样,[……]

Read more

分类: Android 标签: ,

Activity之常见控件(二)

2015年1月26日 没有评论

上一篇文章中,记录一些在activity常见的控件,今天再记录也是很常见的控件,但其用法相对来说,要更复杂一些,直接来例子:
1. ListView
ListView一看名字就知道了,用于在activity中展示一个list,例如我们要查询出所有的用户并在activity中展示出来,那么此时ListView就派上用场了;首先看Activity的代码:

package cn.bridgeli.demo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.M[......]

Read more

分类: Android 标签: , ,

Activity之常见布局初步

2015年1月18日 没有评论

前一篇博客记录了在activity中有哪些控件可供我们使用,既然牵涉到控件,那么肯定会牵涉到控件的布局,也就是在activity中怎么摆放这些东西,我们先看看activity的布局方式有哪些:LinearLayout线性布局、TableLayout表格布局、RelativeLayout相对布局、AbsoluteLayout绝对布局、FrameLayout帧布局等五种,各有各的用途和用法,其中老夫认为最常用的是前三种,最最常用的应该就是前两种了,今天我们就介绍一下前三种的用法。

首先看第一个也是非常常见的也是非常简单的LinearLayout线性布局方式,布局文件为:

<LinearL[......]

Read more

分类: Android 标签: ,

Android之常见控件

2015年1月11日 没有评论

在我们开发Android的时候,有各种各样常见的控件供我们使用,今天就记录一下这些常见的控件有哪些,其实他们的用法大多一样,希望能举一反三,
第一个常见的控件恐怕就是EditText、TextView、Button,使用的例子如下:
activity_main.xml布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:[......]

Read more

分类: Android 标签:

Activity之生命周期

2015年1月4日 没有评论

这几天没事,自学了一下Android的开发,今天记录一下activity的生命周期,在写之前,我们先看一下,Google官方的文档,窃以为这个说的已经比较清楚明白了:
activity_lifecycle
从这张图,我们清楚无误的看到,activity的生命周期方法执行顺序为:onCreate()–>onStart()–>onResume()–>onPause()–>onStop()–>onRestart()–>ondestory()
但是口说无凭,我们从一个例子中说明问题:
第一个activity:

package cn.bridgeli.lifecycle;

import android.app.Activity;
im[......]

Read more

分类: Android 标签: ,

软件属性小结

2014年12月28日 没有评论

一. 功能属性
1. Use Story和Use Case
2. 功能的三个要素
①. 参与者
用户、角色、用户和角色的关系
②. 流程
整体流程、页面操作流程
③. 表单(UI)
3. 正确性(精确性)
二. 决定与架构
1. 权衡软件质量属性
2. 架构元素
①. 架构(决定)过程
②. 架构(决定)产物
3. 架构(架构元素集合)
三. 质量属性(非功能性属性)
1. 开发期质量属性
①. 易理解性和可读性
所有烦人工作成果(如需求文档、设计文档、code等)易读、易理解,可以提高团队开发性率,降低维护成本
考虑的因素:拒绝啰[……]

Read more

分类: Java 标签:

数据加密算法之MD5和SHA1

2014年12月21日 2 条评论

这个星期记录一下数据加密算法,记得刚开始学编程的时候就有一个疑问:我们的密码就这么放在数据库里面,多不安全啊,数据库管理员不是拿着数据想干嘛就干嘛吗?但是由于认知有限,一直没有解决这个问题,直到去年实习时,当时的项目经理Zack说,用户密码不能明文存放到数据,必须经过MD5加密,终于解决了这个问题。因为MD5的不可逆性,所以就算知道MD5码,只要你不是一些弱密码,一般情况下发生泄密的可能性是非常非常小的,几乎可以认为是绝对安全的,但MD5实现的实现却很简单,今天就记录一下实习时用到的一个MD5加密算法的一个实现:


package cn.bridgeli.demo;

import jav[......]

Read more

分类: Java 标签: ,

设计模式综合运用之Excel导入

2014年12月14日 没有评论

学以致用,前几篇文章我们学了很多设计模式,今天我们就把这些模式综合运用一下,看看实际应用是怎么导入Excel的,(当然这里面没有用到侦听者模式)
我们先看一下Excel的样子:

20141214232827

因为是Excel的的解析,所以应该是前台上传的,我们应该有一个Servlet来接收前台传过来的数据:

package cn.bridgeli.demo.servlet;

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpSe[......]

Read more