美得不可方物:GRIS

唯一美中不足的是,我们早已被快餐游戏惯坏的心。

浅谈 PanDownload & 百度网盘

某动物园:我们门票免费。

于是大家都去它家参观,给它带来了很多流量。结果你进去,发现门票免费,却只有乌龟看,还是在很远的地方拿望远镜看。

工作人员说:想看其他动物必须加购高级票。你听了很失望,因为你就是因为“免费”的宣传来的。

你想出去,却因为流量使得一大批人不断涌入,还有一些人也和你一样因为白嫖不到而往门口跑。

结果你发现门口被堵住了,根本出不去,只有被往里面挤。过了好久,你终于挤了出去,却发现其他动物园的营生都不是很好,这家动物园因为最早开始“免费”的宣传一家独大。而你在工作和生活时又总是需要去动物园,并且因为它的知名度,全国的一些珍稀动物只有在这里才能看到。

于是,你买了高级票,却发现还是在很远的地方看,只有一个时而清晰时而模糊的像。你质问人家为什么买了高级票还是这样。人家可怜兮兮的跟你说:“哎呀,我们动物园维护也要钱,员工也是要恰饭的嘛,不这样子搞,我们的贵宾票怎么卖?喏,看你这样子,首次正好给你打个折”。于是你买了贵宾票,每次你有迫切需要时你也必须买贵宾票。

其他的动物园无论搞什么营销,想要分蛋糕时,总是很快被打压,即使有些起势,也会因为没有很多的用户而石沉大海。

后来你发现有人卖高科技,可以让你免费到近距离观察动物而不被发现,只需要你买票时填的信息单。你找他办了业务,用的很爽,然后没多久,因为那家动物园收入骤减,没韭菜噶,追查到底,那个人凉了,你还是得老老实实继续买贵宾票。

Java - Random 伪随机数

java.util.Random

  1. java.util.Random 中的随机实现算法是伪随机,即有规则的随机,它会在给定的种子(Seed)区间随机生成数字
  2. 种子相同的 Random 对象,相同次数产生的数字是完全相同
  3. Random 中生成的随机数字都是均匀分布的,区间内部的数字生成的概率均等

实际测试

来看一段代码

Java 异常处理 InvocationTargetException

InvocationTargetException 异常由 Method.invoke(obj, args…) 方法抛出。当被调用的方法的内部抛出了异常而没有被捕获时,将由此异常接收

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package me.redneno.test.reflect;

public class Reflect {
public void run(int i) throws ZeroException {
A b = new A();
a.run(i);
}
}

class A {
public void run(int i) throws ZeroException {
if (i < 0) {
throw new ZeroException("Parameter must be greater than zero!");
}
System.out.println("Param: " + i);
}
}

class ZeroException extends Exception {
private static final long serialVersionUID = 1L;

private String detailMessage;

public ZeroException(String detailMessage) {
this.detailMessage = detailMessage;
}

public String getMessage() {
return detailMessage;
}
}

Android - ZXing 库生成二维码

⑧说了,直接进入主题

引用 ZXing 库

在 build.gradle 中添加引用

1
implementation 'com.google.zxing:core:3.4.0'

Android - ContentProvider 内容提供器详解

概述

ContentProvider 的作用是为不同的应用之间数据共享,提供统一的接口。安卓系统中应用内部的数据是对外隔离的,要想让其它应用能使用自己的数据(例如通讯录),这个时候就用到了 ContentProvider。

原理

ContentProvider 通过 uri 来标识其它应用要访问的数据,通过 ContentResolver 的增、删、改、查方法实现对共享数据的操作。还可以通过注册 ContentObserver 来监听数据是否发生了变化来对应的刷新页面。

分析

ContentProvider

ContentProvider 是一个抽象类,如果我们需要开发自己的内容提供器我们就需要继承这个类并复写其方法,需要实现的主要方法如下:

方法 注释
public boolean onCreate() 在创建 ContentProvider 时使用
public Cursor query() 用于查询指定 uri 的数据返回一个 Cursor
public Uri insert() 用于向指定 uri 的 ContentProvider 中添加数据
public int delete() 用于删除指定 uri 的数据
public int update() 用户更新指定 uri 的数据
public String getType() 用于返回指定的 Uri 中的数据 MIME 类型

数据访问的方法 insert,delete 和 update 可以被多个线程同时调用,此时必须是线程安全的

Android 控件 - SearchView

SearchView 搜索视图 是一种非常常见的可自定义的搜索框

缅怀逝者,致敬英雄 - 悼念抗疫英雄烈士

为表达全国各族人民对抗击新冠肺炎疫情斗争牺牲烈士和逝世同胞的深切哀悼,本博客响应号召,2020年4月4日全站黑白默哀一天。

Android 控件 - SeekBar

SeekBar 拖动条 常见于音视频播放器的进度或者音量控制。

Android 控件 - RatingBar

RatingBar 评分条 是一个很常见的控件,常见于电商网站、应用商城等需要征求用户意见的地方。

基本使用

1. XML 属性

属性 注释
isIndicator 是否用作用户无法更改的指示器,默认为 false
numStars 显示多少个星星,整数
rating 默认评分值,浮点数
stepSize 评分每次增加的值,浮点数
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×