Flutter资料
Flutter资料网站darkhttps://dart.cn/https://dart.dev/https://api.dart.cn/stable/2.10.5/index.htmlhttps://api.dart.dev/stable/2.10.5/index.htmlhttps://pub.dev/
https://codingdict.com/article/21908
flutter
https://flutter.cn/https://flutter.dev/https://api.flutter-io.cn/https://api.flutter.dev/https://pub.flutter-io.cn/
https://mirrors.tuna.tsinghua.edu.cn/help/dart-pub/https://www.flutterhub.cn/https://flutterchina.club/technical-overview/https://github.com/crazycodeboy/awesome-flutter-cnhttp://laome ...
GitHub代下载
GitHub代下载[文件加速]网站及反代列表维基百科Wikipedia镜像网站列表点击此处查看
Google镜像网站列表点击此处查看
解决Github网页上图片显示失败,gist、raw无法打开的问题
GitHub代下载网站列表http://g.widyun.com/
http://gg.widyun.com/
https://githubd.com/#/
http://gitd.cc/
http://g.widora.cn/
https://github.zhlh6.cn/
http://toolwa.com/github/
http://github.b15.me/
https://gh.api.99988866.xyz/
https://shrill-pond-3e81.hunsh.workers.dev/
https://www.toolnb.com/tools/githubjiasu.html
GitHub反代域名主要是 clone 使用,有些支持下载 Releases。clone 时对子模块加速
FastGitRelease 和源码存档的下载假设下载链接为https:// ...
Typescript中的interface和type
Typescript中的interface和type到底有什么区别详解相同点都可以描述一个对象或者函数
interface
12345678interface User { name: string age: number} interface SetUser { (name: string, age: number): void;}
type
123456789101112type User = { name: string age: number};type SetUser = (name: string, age: number): void;type Tuple = [number, string];const a: Tuple = [2, 'sir'];type Size = 'small' | 'default' | 'big' | number;const b: Size = 24;
都允许拓展(extends)
interfa ...
TypeScript高级类型
TypeScript高级类型
https://www.cnblogs.com/tangshiwei/p/12052494.html
前言对于有 JavaScript 基础的同学来说,入门 TypeScript 其实很容易,只需要简单掌握其基础的类型系统就可以逐步将 JS 应用过渡到 TS 应用。
1234// jsconst double = (num) => 2 * num// tsconst double = (num: number): number => 2 * num
然而,当应用越来越复杂,我们很容易把一些变量设置为 any 类型,TypeScript 写着写着也就成了 AnyScript。为了让大家能更加深入的了解 TypeScript 的类型系统,本文将重点介绍其高级类型,帮助大家摆脱 AnyScript。
泛型在讲解高级类型之前,我们需要先简单理解泛型是什么。
泛型是强类型语言中比较重要的一个概念,合理的使用泛型可以提升代码的可复用性,让系统更加灵活。下面是维基百科对泛型的描述:
泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型 ...
typescript学习笔记
typescript学习笔记
https://gitee.com/samuelsue/typescript-learning-notes
配置ts运行环境需要安装的依赖
123456789101112"devDependencies": { "@typescript-eslint/eslint-plugin": "^3.1.0", "@typescript-eslint/parser": "^3.1.0", "clean-webpack-plugin": "^3.0.0", "eslint": "^7.2.0", "html-webpack-plugin": "^4.3.0", "ts-loader": "^7.0.5", "webpack": " ...
Flutter搭建开发环境
Flutter搭建开发环境
IntelliJ IDEA 2020.3.1 (Ultimate Edition)
jdk11
gradle-6.8.1
android-sdk
flutter
安装jdk下载地址:https://www.oracle.com/java/technologies/javase-downloads.html
现在下载jdk需要注册账号,http://bugmenot.com/view/oracle.com 这个网址有提供账号
设置环境变量
JAVA_HOME=<安装目录>
PATH=%JAVA_HOME%\bin
1java -version
安装gradle下载地址:https://gradle.org/releases/
设置环境变量
PATH=D:\MySoft\JetBrains\gradle-6.8.1\bin
1gradle -v
安装Flutter下载地址:https://flutter.cn/docs/get-started/install/windows
设置环境变量
PATH ...
Github项目fork后同步更新
Github项目fork后同步更新
也可以通过github提供的pull requests来同步
fork 了别人的仓库后,原作者又更新了仓库,如何将自己的代码和原仓库保持一致?github 上有个 fork 的选项,它会把你想参与的项目 copy 一份在你自己的仓库,但是要怎么进行和源的更新呢,下面将介绍 fork 项目后的更新。
一般我们 fork 项目后默认分支是 master,为了方便代码管理我们会在自己的仓库里面创建一个分支 branch,把这个分支 branch 设置成默认分支,再对这个分支进行修改。如果要贡献代码可以点击 pull request,当原作者认可你的代码,他会把你的代码和项目代码进行 merge,这样你就对项目进行了代码贡献。
但是如果在参与项目中,源项目已经进行了更新,我们可以先把 master 分支和源项目进行同步更新,然后再跳转到自己的分支 branch 上和 master 进行 merge,这样自己 fork 的项目就可以保证是最新的。
给 fork 配置一个 remote
主要使用 git remote -v 查看远程状态。
123git re ...
Vue-cli4搭建一个Vue项目
Vue-cli4搭建一个Vue项目1、下载安装Node.js下载地址:https://nodejs.org/en/download/ ,选择合适自己的版本下载即可。
安装Node.js会默认安装npm(包管理工具)
2、安装vue-cli4脚手架如果你已经全局安装了旧版本的 vue-cli (1.x 或 2.x),你需要先通过 npm uninstall vue-cli -g卸载它。
1234npm install -g @vue/cli# 或者yarn global add @vue/cli# vue --version
升级
123npm update -g @vue/cli# 或者yarn global upgrade --latest @vue/cli
3、创建项目1234# vue create --helpvue create hello-world# 图形界面vue ui
4.运行项目1npm run serve
5.编译项目1npm run build
yarn的安装和使用
yarn的安装和使用yarn的简介Yarn是facebook发布的一款取代npm的包管理工具。
yarn的特点
速度超快。
Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。
超级安全。
在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。
超级可靠。
使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。
yarn的安装
下载node.js,使用npm安装npm install -g yarn查看版本:yarn --version
安装node.js,下载yarn的安装程序:提供一个.msi文件,在运行时将引导您在Windows上安装Yarn
Yarn 淘宝源安装,分别复制粘贴以下代码行到黑窗口运行即可yarn config set registry https://registry.npm.taobao.org -gyarn config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass ...
Git的奇技淫巧
Git的奇技淫巧Git是一个 “分布式版本管理工具”,简单的理解版本管理工具:大家在写东西的时候都用过 “回撤” 这个功能,但是回撤只能回撤几步,假如想要找回我三天之前的修改,光用 “回撤” 是找不回来的。而 “版本管理工具” 能记录每次的修改,只要提交到版本仓库,你就可以找到之前任何时刻的状态(文本状态)。
下面的内容就是列举了常用的 Git 命令和一些小技巧,可以通过 "页面内查找" 的方式进行快速查询:Ctrl/Command+f。
开卷必读如果之前未使用过 Git,可以学习 Git 小白教程入门
一定要先测试命令的效果后,再用于工作环境中,以防造成不能弥补的后果!到时候别拿着砍刀来找我
所有的命令都在git version 2.7.4 (Apple Git-66)下测试通过
统一概念:
工作区:改动(增删文件和内容)
暂存区:输入命令:git add 改动的文件名,此次改动就放到了 ‘暂存区’
本地仓库(简称:本地):输入命令:git commit 此次修改的描述,此次改动就放到了 ’本地仓库’,每个 commit,我叫它为一个 ‘版本’。
远程仓库(简 ...
详解CI、CD & CD
详解CI、CD & CDCI, CD AND CD当我们在谈论现代的软件编译和发布流程的时候,经常会听到CI 和CD这样的缩写短语。CI很容易理解,就是持续集成。但是CD既可以指代码持续交付,也可理解为代码持续部署。CI和CD之间有很多相似的部分,但是也有很大的区别。这里我们将给大家介绍它们之间的区别和联系。
持续集成(CONTINUOUS INTEGRATION)在持续集成环境中,开发人员将会频繁的提交代码到主干。这些新提交在最终合并到主线之前,都需要通过编译和自动化测试流进行验证。这样做是基于之前
持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量问题,对可能出现的一些问题进行预警。
持续交付(CONTINUOUS DELIVERY)持续交付就是讲我们的应用发布出去的过程。这个过程可以确保我们尽可能快的实现交付。这就意味着除了自动化测试,我们还需要有自动化的发布流,以及通过一个按键就可以随时随地实现应用的部署上线。通过持续交付,您可以决定每天,每周,每两周发布一次,这完全可以根据自己的业务进行设置。
但是,如果您真的希望体验持续交付的优势,就需要 ...
微服务版本分支管理与特性开关
微服务版本分支管理与特性开关在微服务的开发中, 我们会开发很多功能, 并在最短时间内上线, 也就是说经过了单元测试, API 测试, 自动化的集成测试, 以及少量的手动端到端的测试, 新增的改动就会在几天内部署到产品线上.
这样做符合"唯快不破"的理念, 而且很多开发人员也充满自信, 不过毕竟风险太大, 产线出问题, 影响了客户使用可不是闹着玩的. 为稳妥起见, 最好还是做灰度发布, 并且加一个开关, 一旦出问题, 马上对部分或全体用户关闭最新改动. 这个开关, 我们就叫做 Feature Toggle 特性开关.
我所在的开发团队以前采用过一种叫 Train Release 方式来发布产品, 一个大的 Train Release 包含多个组件, 既有PC客户端 (windows/macos/linux), 移动客户端 (ios/android), Web 站点和服务, 后台多种专用服务器.
我们一般分为三个大类
Web: 各种 Web 站点以及管理工具
Client: PC/Mobile 客户端
Server: 各种后台 ...
Git开发流程
Git开发流程版本的命名策略版本采用三段式,主版本号.功能版本号.修订版本号,例如:3.2.1。主版本号为3。功能版本号:2。修订版本号:1
上级版本号变动,所有下级版本号清0。例如版本号1.1.11。主版本改为2。则现版本号改为2.0.0
产品改变完全不兼容前一个版本(主版本号加1)
主版本号加1,例如:原版本号为1.1.0 则现版本号为2.0.0。
大功能变动(功能版本号加1)
每次遇到feature大的版本功能开发完毕,在测试完毕,release分支合并入master/dev分支前,在release分支上记一个功能版本tag标签,例如:2.1.0。依次递增1
小功能变动与bug修复。(修订版本号加1)
每次遇到feature小的功能新增或者优化,在测试完毕,release分支合并入master/dev分支前,在release分支上记录一个小的三位版本tag标签,例如:2.1.1。依次递增1
每次遇到hotfix修改bug完毕,在release分支合并入master分支前,则记一个修复bug版本tag标签,例如:2.1.2。依次递增1
Git分支管理
mast ...
Butterfly 美化/優化/魔改 教程合集
以下教程並未經過測試,如過遇到問題,請聯係相應的作者。不建議沒 DIY 經驗的使用者操作。
如果你想加入自己的文章到表格,你可以
確保你的文章跟 Butterfly 主題有關
點擊這個鏈接
按要求新增 作者 + 文章連結 | Jerry | [教程a](https://butterfly.js.org)
點擊下面的 Commit changes ,合併到 butterfly.js.org 倉庫
作者
連結
Jerry
自定義側邊欄
小康
优雅魔改
Lete 乐特
Butterfly主题美化-无修改源码 (持续更新中...)
Akilar
Hexo博客访问优化日记
Akilar
基于Butterfly主题的美化日记
Akilar
平滑升级魔改后的Hexo主题
小冰博客
小冰插件包 butterfly-orchid 1.0
小嘉的部落格
关于我 Butterfly 主题的所有美化
唐先森の博客
Hexo+Butterfly主题美化
自定義側邊欄
適用於 >= 3.5.0
側邊欄現在支持自定義了,可以添加自己喜歡的 widget。
可添加自己的 widget,也可以對現有的 widget 進行排序(由於 widget 過多,會導致 TOC 過早滾動,因此添加的 widget 只會出現在 page 頁。排序只對 sticky_layout 裏的有效,也就是博客資料和 公告這兩個固定,其它的能排序)
widget 排序只需要配置 sort_order就行。(使用了 Flex 佈局的 order 屬性,具體可查看 mozilla 文檔。簡單來講,就是配置數字來實現排序,如果不配置,則默認為 0。數字越小,排序越靠前。
12345678910111213141516aside: ... card_recent_post: sort_order: # Don't modify the setting unless you know how it works card_categories: sort_order: # Don't modify the setting unless ...
golang加解密
golang加解密
加密 解密 签名
非对称加密RSA123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 ...
使用openssl生成证书
一、openssl 简介openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS 协议的实现。官网:https://www.openssl.org/source/
构成部分
密码算法库
密钥和证书封装管理功能
SSL通信API接口
用途
建立 RSA、DH、DSA key 参数
建立 X.509 证书、证书签名请求(CSR)和CRLs(证书回收列表)
计算消息摘要
使用各种 Cipher加密/解密
SSL/TLS 客户端以及服务器的测试
处理S/MIME 或者加密邮件
二、RSA密钥操作默认情况下,openssl 输出格式为 PKCS#1-PEM
生成RSA私钥(无加密)
1openssl genrsa -out rsa_private.key 2048
生成RSA公钥
1openssl rsa -in rsa_private.key -pubout -out rsa_public.key
生成RSA私钥(使用aes256加密)
1openssl genrsa -aes256 ...
公钥基础设施(PKI)/CFSSL证书生成工具的使用
公钥基础设施(PKI)/CFSSL证书生成工具的使用公钥基础设施(PKI)基础概念CA(Certification Authority)证书,指的是权威机构给我们颁发的证书。
密钥就是用来加解密用的文件或者字符串。密钥在非对称加密的领域里,指的是私钥和公钥,他们总是成对出现,其主要作用是加密和解密。常用的加密强度是2048bit。
RSA即非对称加密算法。非对称加密有两个不一样的密码,一个叫私钥,另一个叫公钥,用其中一个加密的数据只能用另一个密码解开,用自己的都解不了,也就是说用公钥加密的数据只能由私钥解开。
证书的编码格式PEM(Privacy Enhanced Mail),通常用于数字证书认证机构(Certificate Authorities,CA),扩展名为.pem, .crt, .cer, 和 .key。内容为Base64编码的ASCII码文件,有类似"-----BEGIN CERTIFICATE-----" 和 "-----END CERTIFICATE-----"的头尾标记。服务器认证证书,中级认证证书和私钥都可以储存为 ...
HTTPS双向认证指南
HTTPS双向认证指南
原文:https://www.jianshu.com/p/2b2d1f511959
研究HTTPS的双向认证实现与原理,踩了不少坑,终于整个流程都跑通了,现在总结出一篇文档来,把一些心得,特别是容易踩坑的地方记录下来。
1.原理双向认证,顾名思义,客户端和服务器端都需要验证对方的身份,在建立Https连接的过程中,握手的流程比单向认证多了几步。单向认证的过程,客户端从服务器端下载服务器端公钥证书进行验证,然后建立安全通信通道。双向通信流程,客户端除了需要从服务器端下载服务器的公钥证书进行验证外,还需要把客户端的公钥证书上传到服务器端给服务器端进行验证,等双方都认证通过了,才开始建立安全通信通道进行数据传输。
1.1 单向认证流程单向认证流程中,服务器端保存着公钥证书和私钥两个文件,整个握手过程如下:
单向认证流程
客户端发起建立HTTPS连接请求,将SSL协议版本的信息发送给服务器端;
服务器端将本机的公钥证书(server.crt)发送给客户端;
客户端读取公钥证书(server.crt),取出了服务端公钥;
客户端生成一个随机数(密钥R),用刚才得到 ...
amce-tiny制作免费https证书
amce-tiny制作免费https证书下载 acme-tiny12git clone https://github.com/diafygi/acme-tiny.gitcd acme-tiny
创建账户私钥创建一个 Let's Encrypt 账户私钥,以便让其识别你的身份
1openssl genrsa 4096 > account.key
创建证书签名请求 (CSR) 的域名1openssl genrsa 4096 > domain.key
12345678# For a single domainopenssl req -new -sha256 -key domain.key -subj "/CN=yoursite.com" > domain.csr# For multiple domains (use this one if you want both www.yoursite.com and yoursite.com)openssl req -new -sha256 -key domain.key -subj &quo ...