由DBUtils使用ResultHandler引出的一个关于JavaBean反射的问题

今天搭建服务器,使用DBUtils处理数据库的时候,出了个小问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public Device findById(String sn) throws SQLException {
String sql = "SELECT * FROM device WHERE sn=?";
QueryRunner runner = DBUtils.getQuerryRunner();
return runner.query(sql, new BeanHandler<>(Device.class), sn);
}
//定义业务Model定义
public class Device {
public String sn;
public String uuid;
public String name;
public String chargeAddr;
public String addr1;
public String addr2;
public String firmware;
public Float compensation;
public Long lastUpdateTime;
}

阅读全文

前端学习笔记_JavaScript学习(一)

技术成长栈:

  1. Android
  2. Java、C/C++
  3. HTML + CSS + JavaScript

阅读全文

Android启动源码阅读(三)systemserver进程的启动

上一篇[zygote进程的启动]我们讲述了zygote进程的启动,以及循环等待client请求的过程。期间,有一段代码,开启了systemserver进程。 现在我们来看下systemserver到底是怎么起起来的。

阅读全文

Android启动源码阅读(二)zygote进程的启动

从上一篇init的启动可以看到,zygote由init进程解析init.zygoteXXX.rc文件,然后fork进程,并为zygote进程创建了/dev/socket/zygote的socket接口,然后创建zygote进程,执行/system/bin/app_process,传入参数:-Xzygote /system/bin –zygote –start-system-server

阅读全文

Android启动源码阅读(一)init进程的启动

在Linux系统中,Kernel启动完毕之后,启动的第一个用户空间的进程,就是名为init的进程:

以下是查找init进程源码的过程:

  1. 查找init进程mk文件位置:

    查找可执行程序:init的编译MODULE定义,即全局查找字符串: LOCAL_MODULE:= init,从而找到mk文件位置system/core/init/Android.mk

阅读全文

Android源码阅读准备

源码下载

参考官方doc,需要自备梯子

阅读全文

一个epoll实例

epoll 于Linux 2.5.44引入,旨在替换select和poll系统函数。

相对于select和poll来说,epoll更加灵活高效:

  • 没有监视描述符数量单进程1024限制
  • epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。

阅读全文

本博客的建立

白驹过隙,工作已有6个春秋

回望时,竟然没留下些什么

或心情、或笔录、或歌词、或曲调、或技术历程

不免感慨万分

当我老了,至少在这世间留下些什么文字,孤芳自赏也好

阅读全文

ReentrantLock

Java中的可重入锁ReentrantLock很常见,可以用它来代替内置锁synchronized,ReentrantLock是语法级别的锁,所以比内置锁更加灵活。

ReentrantLock是Java并发包中互斥锁,它有公平锁和非公平锁两种实现方式,默认构造函数采用非公平锁的方式实现。

阅读全文