分类归档:软件技巧

Android-zxing使用总结

需求

最近三个月一直忙于@微卖客户端的开发,在开发过程中遇到各种各样的问题,虽问题一一解决但并没有很好的归类与整理,恰好遇到假期有时间由近及远的梳理一下,而条码与二维码的扫描则是近期遇到问题之一.好在android的迅速发展也带动了第三方开发者在此平台上的活跃度,从Github上我们几乎能找到各种常用的组件与工具包,而zxing也是解决条码与二维码的扫描的成熟方案之一.

zxing使用问题

  1. zxing最新版本是3.1.0,但是在实际使用过程中发现取景框与实际抓图高度存在偏差,导致经常不能正确识别条码,只是由于开发时间关系,我并没有直接去找原因,而是退而求其次选择了2.3.0的版本使用,果然问题消失了.
  2. 在zxing的使用过程中,官方自带的例子使用了很多我们不太需要的功能,而我的需求只是正确识别二维码与条码即可,当然能有开灯功能更好,而在使用这些功能完全可以将很多不用的模块剔除掉,从而关注我们自己的核心业务.
  3. zxing在例子中只提供了横屏解决方案,但我们的需求是需要竖屏使用,同样需要对zxing做点小改造.

阅读全文…

游戏开发中的锁工具

面临问题

最近一直在忙于新游戏的逻辑开发,在开发过程中发现很多地方都需要用到锁,比如操作背包,用户钱币,用户状态修改等,在以往的实现上大部开发人员都是奖这些操作归结到各个独立的模块中,然后在相应的功能上做一个synchronized或者lock,当然这种做法不是不可以,但从全局上考虑,这种做法似乎有些不太合理,这就如同直接将事务加在dao的curd上,而实际开发中这种事务基本上起不到任何作用,毕竟脱离了业务逻辑的事务没有任何意义.所以我们也需要将锁定的操作扩展到对应的业务功能上.我们先梳理下我们目前的需求,即需要支持对特定的一个或者多个对象的锁定与解锁,你会如何设计这种锁呢?

设计实现

首先定义一下需要实现的方法,根据不同的需要锁定的对象返回List,我们暂时用ChainLock来封装List,代码如下

有了ChainLock后,我们自然需要定义相应的lock与unlock方法

阅读全文…

游戏概率算法实现

问题描述

最近一直在着手一个新游戏的开发,其中很多地方都会涉及概率问题,由于当时只是为了完成功能,并没有在这一块考虑过多,现在回过来再看这个问题,感觉有必要深入一下,如果是你,你会如果实现一套概率呢?

解决方案

首先我们要知道什么是概率算法,概率算法就是在算法的过程中引入随机数,使得算法在执行的过程中随机选择下一个计算步骤,而它最后可能导致结果是不确定的.
由比,我们可以假设一个概率问题,例如杀boss过程中有10%的概率出物品A,20%的概率出物品B,30%的概率出物品C,40%的概率出物品D,我们应该如何下手呢?此时我脑子里最先想到的就是划分区间,然后丢色子.

  • 方案一
  • 我们首先划分出4个区间代表A,B,C,D四个物品的概率,即A[1,10],B[11,31],C[31,60],D[61,100],然后取一个[1,100]的随机数,该随即数落到哪个区间就是哪个物品.
    阅读全文…

BTrace详细介绍

最近排查线上OOM的异常时用到一个强大的动态跟踪分析工具BTrace,于是花了点时间研究了下用法,这里的内容基本是对官方说明进行的翻译,顺便加了点心得.

BTrace介绍

BTrace是一个Java的动态跟踪工具,BTrace的工作的基本原理是把跟踪的代码动态替换到被跟踪的Java程序内,其实现机制是Sun Attach API + BTrace脚本解析引擎 + Objectweb ASM + JDK6 Instumentation,项目主页是在这里,用户指南点击这里.

安装BTrace

BTrace的安装非常简单,首先你需要下载BTrace,最新的版本是1.2.2,然后解压至任意目录,设置好BTRACE_HOME后将bin目录加入至环境变量PATH中即可.
阅读全文…

SpringMVC跨域乱码问题

最近的工作重点转移至web开发,使用框架主要还是spring mvc, jackson, jQuery,但在开发中又遭遇了n年前的跨域问题,jsonp乱码问题,其实这些问题产生原因很简单,但实际上解决起来却需要了解各种机制运行内幕.

解决方案

  • 在web.xml中设置CharacterEncodingFilter,相信绝大多数乱码问题均可以解决,这其中的原理不用再讲解,毕竟这个filter的代码非常简单.

  • 阅读全文…
第 2 页,共 4 页1234