2016年5月

Integer 源码方法学习_


求 32位无符号整数 前导0个数

注意使用场景,一般会用该方法的前导0个数不会少

汇编中逻辑右移可直接用指令 SHR reg/men ,n 即物理上 a>>2 比 (a>>1)>>1 快

首先想到的肯定是循环遍历

public static int numberOfLeadingZerosByLoop(int i){
        if(i==0)return 32;
        int n=0;
        while(i>>31==0){
            n++;
            i<<=1;
        }
        return n;
    }

实现简单,但平均时间略高


解决cv2.drawMatches函数不存在的问题


起步

cv2.drawMatches这个函数在OpenCV 2.4.12中不存在。3.0以后才提供。所以运行时得到这样的报错:

Traceback (most recent call last):
File "match.py", line 22, in <module>
img3 = cv2.drawMatches(img1,kp1,img2,kp2,matches[:10], flags=2)
AttributeError: 'module' object has no attribute 'drawMatches'


动手写一个并发缓存框架 历程


首先给上我们的耗时任务,和简单web框架搭建

提供一个0-20的数字,计算前n项和,为了不使得计算太快 每加一次 sleep

package com.france.servlet;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class TaskServlet implements Servlet{

    @Override
    public void service(ServletRequest req, ServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
            try {
                int num=Integer.valueOf(req.getParameter("num"));
                if(num<=0)throw new Exception("数字<=0");
                if(num>=20)throw new Exception("数字>=20");
                int sum=calculateSumWithSleep(num,500);
                System.out.println("计算得到的结果是:"+sum);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }
    private int calculateSumWithSleep(int num,long ms){
        int sum=0;
        for(int i=0;i<=num;i++){
            sum+=i;
            try {
                Thread.sleep(ms);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return sum;
    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public ServletConfig getServletConfig() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String getServletInfo() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void init(ServletConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }

}


由Ionic浅谈WebAPP在移动开发中的发展


  最近接触到一个HTML5应用程序开发框架 Ionic ,简单来说 “ 它使用 Web 技术,比如 HTML、CSS 和 Javascript 构建接近原生体验的移动应用程序。ionic 主要关注外观和体验,以及和应用程序的 UI 交互,特别适合用于基于 Hybird 模式的 HTML5 移动应用程序开发 ”。之所以选择Ionic出于多方面原因,1.项目开发人员有限 2。开发人员技术有限,无法兼顾Android和Ios 3.开发时间有限,原生开发费时繁琐。相信很多小型开发团队也存在这种情况,于是像Ionic这样的webapp框架成为一种不错的选择,类似的还有MUI,Zepto等,他们的优缺点不逐一分析,Ionic算是一个发展的高峰,在用户体验和实现功能上已经十分接近原生应用,同时可以应用于android和ios,windowsphone(如果勉强算活着的话)平台,十分方便。