一些有用的-------小工具

获取系统时间:

方法1:

import java.text.SimpleDateFormat;
import java.util.Date;     

  SimpleDateFormat   formatter   =   new   SimpleDateFormat   ("yyyy年MM月dd日   HH:mm:ss");
  Date curDate =  new Date(System.currentTimeMillis()); 

获取时间:

        String newTime = formatter.format(curDate);

方法2:

import java.util.Calendar;

    private Calendar mCalendar;

	//获取时间
    private String Ctime() {
        mCalendar = Calendar.getInstance();
        long time = System.currentTimeMillis();
        mCalendar.setTimeInMillis(time);

        //判断上下午
        int timestate = mCalendar.get(Calendar.AM_PM);
        String am_pm = (timestate == 0) ? "AM" : "PM";

        //0是1月
        int month = mCalendar.get(Calendar.MONTH) + 1;

        return mCalendar.get(Calendar.YEAR) + "年" + month + "月" + mCalendar.get(Calendar.DAY_OF_MONTH) + "日"
                + "  " + am_pm + " " +
                mCalendar.get(Calendar.HOUR) + ":" + mCalendar.get(Calendar.MINUTE) + ":" + mCalendar.get(Calendar.SECOND);
    }

记录方法运行了多少时间:

  //开始时添加
  long a = System.currentTimeMillis();
  //结束时添加
  Log.e("dotime", "time is =" + (System.currentTimeMillis() - a) / 1000f + " 秒 ");

用adb shell查看数据库:

打开控制台,

1.adb shell

2.cd /data/data/包名/databases

包名是在AndroidManifest.xml里面,package后面的内容

3.这样就是成功了,然后在 # 后面输入ls

4.下面的myClass.db就是要打开的数据库,输入sqlite3 myClass.db 用sqlite3 打开目标数据库

5.直接输入sql语句即可,例如select * from person;

OSI七层网络模型(从下往上):

物理层:为设备之间的数据通信提供传输媒体以及互连设备,为数据传输提供可靠的环境。单位是:bit 比特。

数据链路层:数据通道,主要功能是如何在不可靠的物理线路上进行数据的可靠传递,改层作用包括:物理地址寻址,数据的成帧,流量控制,数据检错以及重发等!另外这个数据链路指的是:物理层要为终端设备间的数据通信提供传输媒体及其连接。媒体是长期的,连接是有生存期的。在连接生存期内,收发两端可以进行不等的一次或多次数据通信。每次通信都要经过建立通信联络和拆除通信联络两过程。单位是:帧。

网络层:主要功能是把网络地址翻译成对应的物理地址,并决定如何把数据从发送方路由到接收方。该层的单位为:数据包。IP协议就在这一层。

传输层:向上面的应用层提供通信服务,面向通信部分的最高层,同时也是用户功能中的最低层。接收会话层数据,在必要时将数据进行分割,并将这些数据交给网络层,并且保证这些数据段有效的到达对端!所以这层的单位是:数据段。这层有两个很重要的协议就是:TCP传输控制协议和UDP传输控制协议。

会话层:负责在网络中的两节点之间建立、维持和终止通信。建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时决定从何处重新发送,即不同机器上的用户之间会话的建立及管理。

表示层:对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是"处理用户信息的表示问题,如编码、数据格式转换和加密解密,压缩解压缩"等。

应用层:OSI参考模型的最高层,为用户的应用程序提供网络服务。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。

OSI是一个理想模型,一般的网络系统只涉及其中几层,在七层的模型中,每层都提供了一个功能:

下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;

第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;

上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主;

TCP/IP四层模型:

应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。

传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。

网络连接层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。

主机到网络层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。

Activity的活动状态:

运行状态,暂停状态,停止状态,销毁状态

Activity的生命周期:onCreat(),onDestroy(),onStart(),onPause(),onResume(),onStop(),onRestart()

Activity的启动模式:

1.standard:默认启动模式,在此模式下,每当启动一个Activity时(不管回退栈中是否有次Activity),都会把此Activity加入到回退栈中,并置于栈顶,也就是说每次启动一个Activity就会创建该活动的一个新的实例。

2.singleTop:栈顶唯一,在此模式下,当启动的Activity已经在回退栈的栈顶的时候,就不会再次创建新的活动实例,而是直接使用此Activity。但是如果此活动没有在栈顶,就会再次创建一个新的实例。此方法可以很好的解决重复创建栈顶活动的问题。

3.singleTask:栈内唯一,在此模式下,每当启动一个Activity时,系统首先会在回退栈中检查是否存在该Activity的实例,如果发现存在,则直接使用该实例,否则将创建一个新的实例。此方法可以很好的解决在同一个栈内重复创建相同活动的问题。

4.singleInstance:指定为此模式的活动在启动时会创建一个新的回退栈来管理此活动(如果在singleTask模式下指定了不同的taskAffinity,也会启动一个新的回退栈)。

注意,在使用startActivityForResult()的时候,只能指定为默认模式,否则会直接调用onActivityResult()并返回一个REUKT_CANCELED。

完全退出APP:

1.创建一个活动管理器

public class ActivityCollector {

    public static List<Activity> activities = new ArrayList<>();

    public static void addActivity(Activity activity) {
        activities.add(activity);
    }

    public static void removeActivity(Activity activity) {
        activities.remove(activity);
    }

    public static void finishAll() {
        for (Activity activity : activities) {
            if (!activity.isFinishing()) {
                activity.finish();
            }
        }
    }
}

2.在BaseActivity的onCreat()方法中添加addActivity()方法

ActivityCollector.addActivity(this);

3.在BaseActivity的onDestroy()方法中添加removeActivity()方法

ActivityCollector.removeActivity(this);

4.在需要结束APP的地方添加finishAll()方法

ActivityCollector.finishAll();

android的限定符

TextUtils的一些方法:

equals(CharSequence a,CharSequence
b
)

判断a和b是否相等,相等返回true

getChars(CharSequences,
int start, int end, char[] dest, int destoff)

按要求获取字符

getOffsetAfter(CharSequences
text, int offset)

获取offset后的字符长度

getoffsetBefore(CharSequences
text, int offset)

获取offset前的字符长度

getReverse(CharSequences
text, int start, int end)

获取反向序列

getTrimmedLength(CharSequence
s)

获取去掉字符序列头尾空格后的长度,和.trim()的作用相同

htmlEncode(String
s)

把字符S进行HTML编码,并返回编码后的字符串

indexOf(CharSequence
s, char ch)

返回字符ch在该字符序列s中第一次出现的位置

indexOf(CharSequence
s, char ch, int start)

返回在字符序列s中指定的位置start开始查找字符ch出现第一次的位置

indexOf(CharSequence
s, char ch, int start, int end)

返回在字符序列s中指定的一段字符序列(以start开始,end结尾)中字符ch出现的第一次的位置

indexOf(CharSequence
s,CharSequence needle)

返回指定的字符序列needle在字符序列s中第一次出现的位置

indexOf(CharSequence
s,CharSequence needle, int start)

返回从字符序列中s指定的位置开始字符序列needle第一次出现的位置

indexOf(CharSequence
s,CharSequence needle, int start, int end)

返回在字符序列s指定的一段中字符序列needle第一次出现的位置

isDigitsOnly(CharSequence
str)

判断给定的字符序列str是否只包含数字。

isEmpty(CharSequence
str)

判断给定的字符序列是否为空。如果字符串为空或者它的长度为0返回true。

isGraphic(char
c)

判断给定的字符c是否是图形。

join(CharSequence
delimiter,Iterable tokens)

让指定的迭代器加入到指定的分隔符序列中,组成一个字符串,并返回这个字符串。

lastIndexOf(CharSequence
s, char ch)

返回指定字符ch在指定的字符序列s中最后一个位置的值。

lastIndexOf(CharSequence
s, char ch, int last)

返回指定字符ch在指定的字符序列s中到指定的末尾last处最后一个位置的值。

lastIndexOf(CharSequence
s, char ch, int start, int last)

返回指定字符c在指定的字符序列s中指定的一段中长度(以start开始,last结尾)最后一个位置的值。

regionMatches(CharSequence
one, int toffset,CharSequence two, int ooffset, int len)

返回指定的字符序列one从toffset开始和指定的字符序列two从ooffset开始比较指定长度len的字符序列的布尔值。如果相同就返回true.如果不同就返回false。

replace(CharSequence
template,String[] sources,CharSequence[] destinations)

返回一个新的字符序列:这个源字符串被目标字符序列组中对应的元素所代替而产生的一个新字符序列。

split(String
text,Pattern pattern)

返回用指定的样式pattern来分隔这个字符串而形成的那个新的字符串。

split(String
text,String expression)

返回用指定表达式expression来分隔指定的字符串而产生的新的字符串。当字符串被分隔后是空的就返回[‘‘]

substring(CharSequence
source, int start, int end)

返回字符序列源的子字符串。从字符序列源中的指定的位置取出一个新的字符串并返回。

SQLite的一些操作

四种操作ISUD----I 添加,S 查询,U 更新,D 删除

添加用insert,查询用select,更新用updata,删除用delete

Android可以借助SQLiteOpenHelper的getReadableDatabase()和getWritableDatabase()方法来创建和升级数据库

用上面两个方法返回的SQLiteDatabase对象,对数据进行CRUD;

Insert:添加

在拿到SQLiteDatabase对象后

                ContentValues values = new ContentValues();
                values.put("author", "DaiAnNa");
                values.put("name", "TaiYangDeYunLuo");
                values.put("price", 13.14);
                values.put("pages", 200);
                sqLiteDatabase.insert("Book", null, values);
                values.clear();
                values.put("author", "ArBoLuo");
                values.put("name", "YueLiangDeXiaoYun");
                values.put("price", 14.13);
                values.put("pages", 100);
                sqLiteDatabase.insert("Book", null, values);

insert(String table,String nullColumnHack,ContentValues values),这个插入方法的参数说明如下:

table:代表想插入数据的表名。

nullColumnHack:代表强行插入null值的数据列的列名。

values:代表一行记录的数据。

Update:更新

把name等于LoveChangEr的条目的price和pages改为69和169:

                values.clear();
                values.put("price", 69);
                values.put("pages", 169);
                sqLiteDatabase.update("Book", values, "name = ?", new String[]{"LoveChangEr"});

update(String table,ContentValues values,String whereClause,String[] whereArgs),这个更新方法的参数说明如下:

table:代表想要更新数据的表名。

values:代表想要更新的数据。

whereClause:满足该whereClause子句的记录将会被更新。

whereArgs:用于为whereArgs子句传递参数。

把id大于6的条目的price和pages改为69和169:

                values.put("price", 69);
                values.put("pages", 169);
                sqLiteDatabase.update("Book", values, "id > ?", new String[]{"6"});

Delete:删除

                sqLiteDatabase.delete("Book", "id = ?", new String[]{"7"});

delete(String table,String whereClause,String[] whereArgs),这个删除的参数说明如下:

table:代表想删除数据的表名。

whereClause:满足该whereClause子句的记录将会被删除。

whereArgs:用于为whereArgs子句传入参数。

删除person_inf表中所有人名以孙开头的记录

.delete("person_inf","person_name like ?",new String[]{"孙_"});

Select:查询

query(boolean distinct,String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit),这个query方法的参数说明如下。

distinct:指定是否去除重复记录。

table:执行查询数据的表名。对应 from table_name

columns:要查询出来的列名。对应 select column1,column2

selection:查询条件子句。对应 where column = value

selectionArgs:用于为selection子句中占位符传入参数值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会有异常。对应 -

groupBy:用于控制分组。对应 group by column

having:用于对分组进行过滤。对应 having column = value

orderBy:用于对记录进行排序。对应 order by column1,column2

limit:用于进行分页。

简单的查询整个表:

                //1.获得游标Cursor
                Cursor cursor = sqLiteDatabase.query("Book", null, null, null, null, null, null);
                if (cursor.moveToFirst()) {
                    //2.遍历得到的结果
                    do {
                        String name = cursor.getString(cursor.getColumnIndex("name"));
                        String author = cursor.getString(cursor.getColumnIndex("author"));
                        int pages = cursor.getInt(cursor.getColumnIndex("pages"));
                        double price = cursor.getDouble(cursor.getColumnIndex("price"));

                        Log.e("this Book : ", "name is " + name);
                        Log.e("this Book : ", "author is " + author);
                        Log.e("this Book : ", "pages is " + pages);
                        Log.e("this Book : ", "price is " + price);

                    } while (cursor.moveToNext());
                }
                cursor.close();

查询出person_inf表中人名以孙开头的数据:

Cursor cursor=db.query("person_inf",new String[]{"_id,name,age"},"name like ?",new String []{"孙%"},null,null,"personid desc","5,10");
cursor.close();
时间: 2024-08-15 02:07:17

一些有用的-------小工具的相关文章

django项目实际工作中的配置以及一些有用的小工具(持续更新)

常用pycharm快捷键:   https://www.cnblogs.com/luolizhi/p/5610123.html Ctrl + F1  显示错误 Ctrl + Alt + Space  快速导入任意类 Ctrl + /    行注释/取消行注释 Ctrl + Shift + /    块注释 Ctrl + Alt + I    自动缩进 Ctrl + P    参数信息(在方法中调用参数) Ctrl + D  复制选定的区域或行 Ctrl + Y    删除选定的行  2.查找/替

这些小工具让你的Android 开发更高效

在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效. Vysor Vysor 是一个可以将手机的屏幕投影到电脑上,当然也可以操作,当我们做分享或者演示的时候,这个工具起到了作用. Vector Asset Android Studio 在1.4 支持了VectorAsset,所谓VectorAsset:它可以帮助你在Android 项目中添加Materia

Android Studio添加Parcelable序列化小工具(快速提高开发效率)

Android Studio添加Parcelable序列化小工具(快速提高开发效率) Android Studio是google专门为开发Android提供的开发工具,在它内部可以直接的添加一些非常好用的开发小工具,这里就讲解怎样添加这些小工具,并且向大家推荐一个非常有用的对象传递时,必须要把对象序列化的接口Parcelable小工具; 这里先介绍下 Android中实现序列化的两个选择:一是实现Serializable接口(是JavaSE本身就支持的),一是实现Parcelable接口(是An

【开源一个小工具】一键将网页内容推送到Kindle

最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zhanjindong/SimpleSendToKindle 功能:Windows下一个简单的将网页内容推送到Kindle的工具. 写这个工具的是满足自己的需求.自从买了Kindle paperwhite 2,它就成了我使用率最高的一个电子设备.相信很多Kindle拥有者和我一样都有这样一个需求:就是白

SVG开发包, 20 个有用的 SVG 工具,提供更好的图像处理

20 个有用的 SVG 工具,提供更好的图像处理 SVG 现正在 Web 设计领域变得越发流行, 你可以使用 Illustrator 或者 Inkscape 来创建 SVG 图像. 但当进行 Web 设计时,我们还需要做一些优化来使得 SVG 变得更加轻量. 下面介绍的 20 个工具,可以帮助你快速有效的创建 SVG 图像.现有的在线工具已经可以帮助我们进行优化.转换.新建模式等工作. 更详细的介绍,参见:How To Create SVG Animation Using CSS 交互式 SVG

Android 开发小工具之:Tools 属性 (转)

Android 开发小工具之:Tools 属性 http://blog.chengyunfeng.com/?p=755#ixzz4apLZhfmi 今天来介绍一些 Android 开发过程中比较有用但是大家又不常用的小工具.这些小工具可以提高 Android 应用开发的效率.还可以提高代码质量.所以还是有必要使用的. 首先介绍布局文件中的 tools 属性. 如果你用 Android Studio 创建一个简单的示例项目,在生成的布局文件中会有这么一行内容: xmlns:tools="http:

Win10能更逆天?17款系统增强小工具推荐

1让Win10变得更逆天的增强工具合集(一)回顶部 10月1日微软发布了新一代操作系统Win10的技术预览版,里面展出了很多项与桌面用户有关的改进.应该说到目前为止,网友们的评价还是比较正面的.但笔者想说的是,作为微软战略版图中比较重要的一项,如此简单的几项变化就定义为一次跨版本更新,还是显得略微草率了些.事实上在很多用户心中,对于Windows的期盼一直未减,正所谓高手在民间,我想下面几款软件或许能给微软带来一些思考! 图01 Win10这样你造么? 1.Mission Control ——

[程序猿]推荐17个很有用的在线工具 - 简书

简 首页 专题 发钱啦 注册 登录 简首页 专题 下载手机应用 简书 交流故事,沟通想法 iOS· Android 显示模式 登录 下载简书移动应用 注册 登录 添加关注 作者 郭小力 2016.08.25 12:12 写了8570字,被20人关注,获得了67个喜欢 [程序猿]推荐17个很有用的在线工具 字数1032 阅读188 评论1 喜欢16 收藏文章 分享 1. ExplainShell.com 命令解释 对于Linux用户来说每天都会写各种命令和脚本,那么你可以使用这个网站工具来查看命令

软件仓库、模版机制、小工具和搜索

软件仓库 我越来越喜欢软件仓库的方式了. 这意味着大量自由的软件被存放一个中央软件仓库中,只要加以正确的配置和标识,就可以自动从中央仓库中下载所需的软件和工具,再也不用像在Windows 下面四处寻找,耗费时间了. 也许 Windows 用户从来不觉得, 过去的我也从来没有意识到, 在网上搜索软件. 注册码,是一件多么耗费时间和生命的事情!因为当时我们都被这种心理所蒙骗: 看! 收费软件啊, 我现在终于可以免费使用了!所花费的几十分钟,甚至几小时,都算值了! 软件仓库体现的是一种分享共筑的理念.