最近公司的测试老是提出这样那样的bug,当然也怪自己代码写的烂,所以测试总是会把app搞崩溃,而他们那边崩溃的时候还没有日志打印,自己回来再重现有的时候还真不好复现出来,因此麻烦事就来了.为了方便查看测试手机的bug原因,周末在家专门写了个小工具,只要在项目的Log类中打印的时候添加LogPhoneUtil类的打印,就可以方便的在app的运行手机上保存日志了.简单介绍一下思路,源码在GIthub上,也可自行查看.https://github.com/MuBob/PhoneLogUtil: 首先编…
前言   JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Phaser:   CountDownLatch.CyclicBarrier.Semphore.Phaser 这四个工具类提供一种并发流程的控制手段:而Exchanger工具类则提供了在线程之间交换数据的一种手段. 简介    Exchanger的功能是使2个线程之间交换数据(有不少文章的说法是"传输数…
(课本P273-任务九) /**DAO: Data Access Object * 为什么用: 实现功能的模块化,更有利于代码的维护和升级 * 是什么: 访问数据信息的类,包含对数据的CRUD(create,read,update,delete) * 怎么写: 使用JDBC编写DAO可能会包含的方法: insert/delete/update/select 操作都可以包含在其中 */ /*出现的问题总结: 1.设置数据库的主键,主键不可重复; 2.JavaBean的users 中有toStrin…
简介 Exchanger(交换者)是一个用于线程间协作的工具类.Exchanger用于进行线程间的数据交换.它提供一个同步点,在这个同步点两个线程可以交换彼此的数据.这两个线程通过exchange方法交换数据, 如果第一个线程先执行exchange方法,它会一直等待第二个线程也执行exchange,当两个线程都到达同步点时,这两个线程就可以交换数据,将本线程生产出来的数据传递给对方. Exchanger的应用场景 1.Exchanger可以用于遗传算法,遗传算法里需要选出两个人作为交配对象,这时…
一.判断str字符串都不为空==>StringUtils.isNotBlank(String str); 1 /** 2 * <p>检查一个字符串是否非空(""),非空,而不是空白.</p> 3 * 4 * 案例 5 * <pre> 6 * StringUtils.isNotBlank(null) = false 7 * StringUtils.isNotBlank("") = false 8 * StringUtils.i…
我们平常保存一些数据,都会用到SharedPreferences,他是保存在手机里面的,具体路径是data/data/你的包名/shared_prefs/保存的文件名.xml, SharedPreferences的使用也很简单,我自己就写了一个SharedPreferences的工具类,然后就保存在这里,等自己以后需要保存数据直接从这里copy代码,哈哈 工具类如下 package com.example.shortcut; import android.content.Context; imp…
localStorage Web 存储 API 提供了 sessionStorage (会话存储) 和 localStorage(本地存储)两个存储对象来对网页的数据进行添加.删除.修改.查询操作. localStorage 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除. sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据. 一.常用属性 属性 描述length 返回存储对象中包含多少条数据. 二.常用方法 方法 描述…
Exchanger(交换者)是一个用于线程间协作的工具类.Exchanger用于进行线程间的数据交换.它提供一个同步点,在这个同步点两个线程可以交换彼此的数据.这两个线程通过exchange方法交换数据, 如果第一个线程先执行exchange方法,它会一直等待第二个线程也执行exchange,当两个线程都到达同步点时,这两个线程就可以交换数据,将本线程生产出来的数据传递给对方. 举例 class ExchangerTest { static class Producer implements R…
SharedPreferences的工具类,使用起来方便.快捷:上代码:import android.content.Context;import android.content.SharedPreferences;/** * SharedPreferences的一个工具类,调用setData就能保存String, Integer, Boolean, Float, Long类型的参数 * 同样调用getData就能获取到保存在手机里面的数据 * * @author smiling * @date…
import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; /** * SharedPreferences的工具类 * @author wangfubin */ public class Sp { private static String name = "config"; /** * 获取Shared…