一周干货集 (2)

长路漫漫, 看看一群财富自由的人韬略江山, 心中还是有很多想法.现在知识和信息的膨胀速度,哪里容得娱乐的放肆

安卓踩坑

网络

你必须学会的okhttp——入门篇
这里使用 android里面比较好用的一个第三方包

OKHTTP

直接修改Gradle (build.gradle) 脚本进行安装

testImplementation 'com.squareup.okhttp3:mockwebserver:3.9.1'

网络权限

API 22 以上不允许 主线程进行网络操作,怕卡.
否则会报异常.

新建一个项目,在AndroidManiifest中添加

<uses-permission android:name="android.permission.INTERNET"/>

通过Http协议下载图片

Android Handle的使用

线程

子线程不能操作UI, 所以使用消息(message)使主线程处理

消息使用Handle 处理, 初始化需要loop

Gson

Gson 简直是解放灵魂. 配合插件 GsonFormater

报异常可能
Android简单使用GSON
实用配置

MAP 字典

使用匿名函数进行初始化

private HashMap<String, String> urlMap = new HashMap<String, String>() {    {        // token        put("token", "https://api.etherscan.io/api?module=stats&action=tokensupply&contractaddress=0x57d90b64a1a57749b0f932f1a3395792e12e7055&apikey=");        // block        put("block", "https://api.etherscan.io/api?module=proxy&action=eth_blockNumber&apikey=");    }};

UI

UI开源库

异常

异常体系详解

Web3J

需要补充一个 sl4f 依赖

测试单元

本机以java为单位 使用@Test测试函数, 可以throws ,

@Testpublic void getVersion() throws Exception {    System.out.println(web3j.getClientVersion());}

编程思想 语言类型

写Web3 应用的时候, Web3.js 是node.js下的一个很棒的库, 本以为Java下没有Web3 的库,打算自己写RPC实现. 最后在别人的指点下发现了WebJ 这个安卓下的 Web3 库. 可是感觉其编程思想太过于贴近Js了,编程范式(paradigm)这里做个简单的总结

  • POP (Process-oriented programming) 面向过程
  • OOP (Object Oriented Programming) 面向对象
  • FP (Functional Programming) 函数式编程
  • IP (Immutable Programming) 命令式编程

POP

“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。

这个是最先产生的一直编程思想吧, 面向过程编程, 就是围绕着功能的实现进行代码的编写.这种方式更像是实现一个图灵机. 你把输入给进参数,执行过程,之后得到输出

吃(猪八戒, 西瓜);// 老梗了, 但是这里很好的体现了POP的编程思想,输入数据得到结果

OOP

面向对象的产生就是在面向过程之后了, 可能Coder认识到了, 世间万物皆为对象.所以使用OOP的方式在代码里创建对象(物品), 对象有它的参数, 功能.这样新的思想遍产生了,而不是图灵机~

没有对象? New一个

Girl girl = new Girl(YourProfie);

OOP产生的对象, 可以很好的践行 高内聚低耦合 这一伟大思想(笑),
因为互相访问都只是通过Class之间暴露的接口(public), 这样如果我要优化代码,可以只改变某个类的内部代码, 而保持接口一致就好. 很好的避免了面向过程中常常出现的代码规模大了之后牵一发而动全身的情景

这里还是举个例子

猪八戒.吃(西瓜);// 可以见到, 这种编程思想把对象作为中心, 对象执行成员方法

对了, OOP之于POP多的编程三大基本特性称之为 封装、继承、多态

  • 封装 把客观相似事物封装成抽象的类
  • 继承 对派生类直接保留原属性 (白马,马).
  • 多态 允许将子类类型的指针赋值给父类类型的指针. (重载, 覆写@Override)

UML类关系

面向对象的三个基本特征

FP

实际上 FP
函数式编程, 老实说,这个刚刚接触. 个人理解呢, 是吧变量和函数这两个概念给分开, 变量是变量, 函数是函数. 那么这样的话, 我们可以分别实现,他们. 具体我们要思考的是如何对变量进行函数操作

var print = function(i){ console.log(i);};[1,2,3].forEach(print);

这两行代码,我们很好的看出, 我们需要实现的函数本身, 和Foreach的这个操作. y=F(x);

函数式编程强调没有”副作用”,意味着函数要保持独立,所有功能就是返回一个新的值,没有其他行为,尤其是不得修改外部变量的值。
函数式编程初探 ruanyf

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注