Home

Lang 泛型编程

Lang 泛型编程 Generic编程就是不面对特定类型编程, 使得类, 接口, 方法可以处理广泛的类型. 最有代表性的是集合. 那么为什么需要使用泛型呢? 为什么不使用根类型如Java的Object, Kotlin的Any? 本质上JAVA VM类语言就是使用Object来实现泛型, 这个叫类型擦除(syntactic sugar). Java在编译阶段会 检查泛型类型是否匹配, 然后会把泛型类型都替换成Object, 不保留泛型类型信息, 当使用时自动类型转换把Object转换 成泛型类型. 使用泛型比使用Object更安全, 编译阶段会检查所有插入类型是否匹配, 而且不用强制类型转换, 避免出错 使得泛型使得代码更清晰, 代码里清楚的显示了处理类型 因为是类...

Read more

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 系统转换工具

Read more

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中获取。事件...

Read more

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...

Read more

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...

Read more

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...

Read more

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...

Read more