分类 编程技术 下的文章

平时经常上一些网站浏览业内资讯和技术潮流,下面就是经常去的技术类网站。

  • v2ex,这个网站活跃度很高,有技术探讨的,有工作感慨的,有找人的,有自荐的,有物物交换的,有发发牢骚的。现在貌似已经上了名单,不过可以通过HTTPS进行访问。
  • 开源中国,该网站在业内也很知名。主要是开源软件和开源资讯更新。比较出名的是它的动弹,每天没事去动弹以下。对了,它有自己的一套开发流程体系,[email protected](团队协作开发平台)->[email protected](Git代码托管系统)->[email protected](代码质量检查)->[email protected](项目演示平台)。上面的Maven镜像站比较好用,一些jar包可以去那块下载。
  • 码农周刊,算是一个技术聚合网站吧,每周一期。
  • 开发者头条,应该是上面的码农周刊出的日刊……
  • Startup News,业内知名人士Fenng办的一个类似于Hacker News的网站。

在UI中,经常会出现多次事件的情况,最常见的比如鼠标双击和三击,触摸屏上的双敲等。一次动作,就发一下事件就好。那么两次甚至多次事件怎么处理才最好呢?

当触发多次事件时,单次事件以及两次事件是否还要继续发送?

要什么方式判断两次事件间隔足以算上一个多次事件而不是多个单次时间呢?

代码是最好的老师。在Apache Pivot中找到了一段处理该事件的代码,伪代码如下:

long lastTime = 0;
int count = 0;

int multiInterval = 500;

// 亮屏
screenOn(){
    process();
}

// 灭屏
screenOff(){
    process();
}

// 处理
process(){
    long currentTime = System.currentTimeMills();
    if(current - lastTime < multiInterval){
        count++;
    }else{
        lastTime = System.currentTimeMills();
        count = 1;
    }
    // 触发监听
    changeListeners.change(count);
}

从上述伪代码可以看出:

  • 每次事件都会发出,可能发出多个单次事件,也可能发出一个单次事件,一个两次事件……总之,每次UI操作均会发出事件
  • 判断两次事件是否算成一个组合事件,是通过判断事件触发间隔时间来做的

在工作环境中,免不了需要配置好多环境,自己配置的,别人配置的。所以,知道哪些IP的哪些端口开放,就可以做很多事情了。

// 新建主机地址
InetAddress  hostAddress = InetAddress.getByName("0.0.0.0");

// 根据主机名和端口号创建套接字地址
SocketAddress sockAddr = new InetSocketAddress(hostAddress, 80);

// 新建套接字
Socket socket = new Socket();

// 将此套接字连接到目标主机
socket.connect(sockAddr, 1000);
// connect操作未抛异常,说明该端口可用
// Do sth...... 

// 关闭套接字
socket.close();

周四刚从济南回来,周五一到公司,就安排了一个为平台软键盘集成手写输入法的任务。说实话,我对这种研究探索实践的任务还是很感兴趣的。

概述

Tegaki

Tegaki (http://tegaki.org/),是一款开源的中文和日文的手写识别项目。它有如下特点:

  • 免费并且开源
  • 跨平台
  • 关注于中文(简体中文和繁体中文)和日文
  • 支持两种识别引擎(Zinnia和Wagomu)
  • 渴望在台式PC和移动设备上均可工作

安装请按照文档(http://tegaki.org/userdoc/)进行。除了下载主程序外,还需要对应识别引擎的model文件,放在相应的路径下。

Zinnia

Zinnia (http://zinnia.sourceforge.net/),是一个简单的,可定制化的和跨平台的在线手写识别系统,它建立在SVM(Support Vector Machines,支持向量机)的基础上。Zinnia接受用户笔迹输入,这些笔迹表现为一系列坐标的序列,然后,通过SVM输入前n个最佳识别。为了跨平台, Zinnia并不包含任何的渲染功能,即获得用户输入的功能并不包含在内。除了识别功能,Zinnia还提供了一个训练模型,可以花费很小的代价就可以创造一个手写识别系统。它有如下特点:

  • 使用SVM,识别准确率高
  • 跨平台和紧凑--可以运行在POSIX和Windows上(建立在C++/STL的基础上)
  • 提供了线程安全的C/C++/Perl/Ruby/Python库
  • 识别速度快(每秒50到100个字符)
  • 快速训练

- 阅读剩余部分 -

简介

来自维基百科

iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。 相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。iBATIS需要开发人员自己来写sql语句,这可以增加了程序的灵活性,在一定程度上可以作为ORM的一种补充。程序设计人员应该结合自己的项目的实际情况,来选择使用不同的策略。iBATIS和Hibernate都做了映射,但iBATIS是把实体类和sql语句之间建立了映射关系,这种策略可以允许开发人员自己来写合适的sql语句,而Hibernate在实体类和数据库之间建立了映射关系,sql对于开发人员是不可见的,对于那些数据量非常大的应用,无法去优化sql语句。所以在实际应用中,应该根据不同的应用场景,来选择适合自己的框架。

- 阅读剩余部分 -