Lang 泛型编程
Lang 泛型编程
Generic编程就是不面对特定类型编程, 使得类, 接口, 方法可以处理广泛的类型. 最有代表性的是集合.
那么为什么需要使用泛型呢? 为什么不使用根类型如Java的Object, Kotlin的Any?
本质上JAVA VM类语言就是使用Object来实现泛型, 这个叫类型擦除(syntactic sugar). Java在编译阶段会
检查泛型类型是否匹配, 然后会把泛型类型都替换成Object, 不保留泛型类型信息, 当使用时自动类型转换把Object转换
成泛型类型.
使用泛型比使用Object更安全, 编译阶段会检查所有插入类型是否匹配, 而且不用强制类型转换, 避免出错
使得泛型使得代码更清晰, 代码里清楚的显示了处理类型
因为是类...
Flutter security
Flutter security
Flutter 签名
SHA-1
SHA-224
SHA-256
SHA-384
SHA-512
MD5
HMAC (i.e. HMAC-MD5, HMAC-SHA1, HMAC-SHA256)
MD5:
var digest = md5.convert(List<int>);
var str = hex.encode(digest.bytes);
Reference
crypto 签名
convert 转换工具
dart:convert 系统转换工具
Flutter Dart 原理
Flutter Dart 原理
Dart 原理
source: _posts/flutter/2020-03-16-flutter-principle.md/#excerpt
Dart 介绍
Dart是单线程模式,所以当前任务需要快速执行,不然会使后面的任务阻塞。虽然是单线程模式,但是Dart还是支持Futures、Streams、
Background Work等等异步方法。
一般其他的语言是使用多线程模式,可以很方便的共享内存、充分利用系统资源、使用高效的调度算法等等。但是这样会导致程序逻辑复杂,
容易出错,并且因为共享内存,一个线程出错是致命的,会导致程序结果错误或者进程崩溃。
Dart是单线程模式,事件从microtask queue和event queue中获取。事件...
Flutter Log
Flutter Log
Flutter异常分为VM异常和Dart异常:
Dart异常: 出错不会导致崩溃, 一般会导致代码不继承执行(没有任何反应),如果是界面错误会导致跳转ErrorWidget
VM异常:会导致程序崩溃,跳出
Dart异常分为同步异常和异步异常:
同步异常:可以使用try-catch捕获
异步异常:使用try-catch捕获不到
Flutter日志输出,看print函数会发现,如果设置了Zone会调用printToZone, 如果没有会调用printToConsole().
Flutter中Zone, 是一个封闭区域,为了让异步
调用之间保持稳定,代码总在当前区域的上下文中执行。主要用来处理print, timers, micr...
Flutter IO编程
Flutter IO编程
Flutter File编程
使用path_previder库操作本地文件及目录
文件操作类有File、Directory、Link, 都继承至FileSystemEntity 每种操作函数都有两个版本
同步和异步(如, rename()和renameSync())
使用File.open(FileMode) 得到IOSink或者RandomAccessFile来对文件进行读写,读写对象需要close()
Flutter Socket编程
Tcp使用Socket、ServerSocket 及 RawSocket、RawServerSocket
ServerSocket.bind('127.0.0.1', 4041)
.then((serv...
Linux 源
Linux 源
linux
#deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
#deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
github
1. 修改Hosts 速度到100kb
2. 使用码云转一道, 麻烦 但是速度快
flutter
SDK下载地址: https://storage.flutter-io.cn/flutter_infra/releases/stable/windows/flutter_windows_v1.0.0-stable.zip
export PUB...
Linux C/C++跨平台编程
Linux C/C++跨平台编程
使用POSIX 函数
windows
需要使用Cygwin, Cygwin中脚本文件需要使用dos2unix程序 转换一下
1. 找不到ntohll和htonll函数
需要自己实现
u_int64_t my_htonll(u_int64_t val) {
return (((u_int64_t) htonl(val)) << 32) + htonl(val >> 32);
}
u_int64_t my_ntohll(u_int64_t val) {
return (((u_int64_t) ntohl(val)) << 32) + ntohl(val >> 32);
}
R...
435 post articles, 55 pages.