android studio打包apk
对未来的真正慷慨,是把一切都献给现在。――阿尔贝·加缪《反抗者》
toArray指定的容量和效率关系
我将于茫茫人海中访我唯一灵魂之伴侣;得之,我幸;不得,我命,如此而已。——徐志摩
分享一篇
private static final int COUNT = 100 * 100 * 100;private static void timeCost() { List<Double> list = new ArrayList<>(COUNT); for (int i = 0; i < COUNT; i++) { list.add(i * 1.0); } long start = System.nanoTime(); Double[] notEnoughArray = new Double[COUNT - 1]; list.toArray(notEnoughArray); long middle1 = System.nanoTime(); Double[] equalArray = new Double[COUNT]; list.toArray(equalArr ...
一篇,让你会写原生ajax
在这个社会转型期,最大的悲剧不是坏人的嚣张,而是好人的过度沉默。——马丁·路德·金
非常简单啦~
大家可以拿去任意定制,比如请求方式使用参数传入、指定参数类型、调用时控制是否同步等
var Ajax = { /** * get参数格式化,转换对象成url方式 * @param data 对象 转换前: {"username":"ruben","password":"achao"} * @returns {string} 转换后: username=ruben&password=achao */ dataFormat: function (data) { if (data == null || "" === data) { return ""; } return &qu ...
alibabaFastJson之json转指定List
有一种健忘是高贵的,就是不记旧恶。——赛蒙兹
之前写了篇fastjson基本使用,这两天遇到一个意料之外的
需要把一个json的数组对象,转换成指定的List<User>
转换方式很简单
{“code”:200,”userList”:[{“password”:”achao”,”username”:”ruben”}],”data”:”操作成功!”,”list”:[“你好”,”加油”],”success”:true}
JSONObject jsonObject = JSON.parseObject(jsonString);String userListString = jsonObject.getString("userList");List<User> userList = JSON.parseArray(userListString, User.class);userList.forEach(System.out::println);
打印结果
idea配置文件迁移
人表达的永远不是他所说的内容,而是渴望被理解的心情。——苏更生
最近换了电脑,idea也重新装了一遍,那么之前很繁琐的配置,现在又要配置一遍吗?不!我们可以迁移配置文件~
首先找到我们idea的配置文件目录,打开idea的安装目录
找到配置文件idea.properties打开
可以看到我们的配置文件
把原来目录上这里的两个文件复制出来,再粘贴到我们新电脑这个位置
或者修改配置文件的目录,都是可以的
别忘了把前面的#删掉哦
如果是新装idea会提示
我们选择第一个,然后选择配置文件目录,也是一样的
顺便一提,idea默认工作目录(就是项目存放路径)的设置在这
java获取当前运行类名、方法名、行号
使人疲惫的不是远方的高山,而是鞋子里的一粒沙子。——伏尔泰
转载,原文戳我
码住,这个确实感觉不错
//获取方法名:public static String getCurrentMethodName() { int level = 1; StackTraceElement[] stacks = new Throwable().getStackTrace(); String methodName = stacks[level].getMethodName(); return methodName;}//获取类名:public static String getCurrentClassName() { int level = 1; StackTraceElement[] stacks = new Throwable().getStackTrace(); String className = stacks[level].getClassName(); return className;}//获取行号: ...
idea快捷生成序列化id
人生而自由,却无往不在枷锁中。——卢梭
idea快捷生成序列化id的设置
首先放中文idea的设置方式
然后是英文的
之后我们实现Serializable接口的时候就可以直接生成版本ID啦
使用反射获取对象属性的坑
要么庸俗,要么孤独——叔本华
前两天遇到一个坑,当时我通过使用getDeclaredFields()函数获取对象属性时发现一个问题:
获取到的属性的顺序不对,结果我自己一看介绍
原来,它是无序的
所以我们为了解决这个问题
首先自定义一个注解用于制定排序规则
package com.ruben.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * @ClassName: BeanFieldSort * @Description: * @Date: 2020/9/11 22:18 * * * @author: achao<achao1441470436 @ gmail.com> * @version: 1.0 * @since: JDK 1.8 */@Target(ElementTy ...
android去掉标题栏
自由不是让你想做什么就做什么,自由是教你不想做什么,就可以不做什么。——康德
在Activity里加上
//去掉标题栏getSupportActionBar().hide();getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
注意位置是在setContentView前
安卓构建首个应用
简单介绍下目录吧
个人习惯,目录包名不折叠
查看目录
官方文档介绍:
app > java > com.example.myfirstapp > MainActivity
这是主 Activity。它是应用的入口点。当您构建和运行应用时,系统会启动此 Activity 的实例并加载其布局。
app > res > layout > activity_main.xml
此 XML 文件定义了 Activity 界面的布局。它包含一个 TextView 元素,其中具有“Hello, World!”文本
app > manifests > AndroidManifest.xml
清单文件描述了应用的基本特性并定义了每个应用组件。
Gradle Scripts > build.gradle
有两个使用此名称的文件:一个针对项目“Project: My First App”,另一个针对应用模块“Module: app”。每个模块均有自己的 build.gradle 文件,但此项目当前仅有一个模块。您可以使用每个模块的 build.file ...