数据结构与算法之二叉树
二叉树
12345678910111213//Definition for a binary tree node.public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = val; this.left = left; this.right = right; }}
二叉树的遍历前序遍历
先访问树的根节点 然后遍历左子树 最后遍历右子树
中序遍历
先遍历左子树 然后访问树的根节点 最后遍历右子树
后序遍历
先遍历左子树 然后遍历右子树 最后访问树的根节点
123456789101112131415161718class Sol ...
Flutter中实现圆形边框的CheckBox
其实有两种思路
1.通过组合组件实现
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657import 'package:flutter/material.dart';class RoundCheckBox extends StatefulWidget { final bool value; final ValueChanged<bool> onChanged; RoundCheckBox({Key key, @required this.value, this.onChanged}) : super(key: key); @override _RoundCheckBox1State createState() => _RoundCheckBoxState();}class _RoundCheckBoxState extends St ...
Flutter环境搭建
开始这是Flutter从0开始系列的第一篇文章
首先是Windows系统电脑下如何配置Flutter开发环境
下载并配置FlutterSDK首先需要安装 git
国内开发人员因为墙的原因 要先配置以下环境变量(系统变量)。这个很关键
变量名
变量值(别点击请复制)
FLUTTER_STORAGE_BASE_URL
https://storage.flutter-io.cn
PUB_HOSTED_URL
https://pub.flutter-io.cn
步骤
下载beta版本的最新的SDK
截止到2018-07-15的最新版本下载地址flutter_windows_v0.51_beta.zip
也可以去Flutter SDK的存档地址找到下载最新版本的Flutter SDK
解压下载好的zip文件
在系统变量名为 Path 中添加一个值 flutter sdk安装目录\flutter\bin \
例如 D:\flutter_SDK\flutter\bin
在flutter目录下找到 flutter_console.bat文件,双击启动
...
Flutter实战之WanAndroid项目中碰到的问题
写在前面上一篇博客 Flutter实战之一起写个WanAndroid客户端 简单介绍了一下Flutter版本WanAndroid项目,这一篇主要记录项目中碰到的一些问题,避免大家在这些坑中再花太多的时间。
项目地址github地址 目前已经有54个star,喜欢的话可以给个星鼓励一下
开发环境搭建及模拟器相关PANIC: Missing emulator engine program for ‘x86’ CPU.在启动模拟器运行Flutter时可能出现如上错误,原因是 Sdk(AndroidSDK安装位置 )/ tools下文件丢失,删除重新安装就好了。步骤如下图:
取消2中Andrid SDK Tools的勾选,然后点击Apply开始卸载,卸载完成之后,勾选Andrid SDK Tools,然后点击Apply开始安装。完成之后重启AndroidStudio(记得重启)
Error while initializing the Dart VMWindows开发环境下,Android在打包之后成功之后,安装release版apk时闪退,并且出现错误日志
1Error ...
Flutter实战之一起写个WanAndroid客户端
前言被张鸿洋微信公众号推荐为优质Flutter开源项目啦
推荐几个优质Flutter 开源项目
可以扫码(使用浏览器扫码,不要使用qq或者微信)直接下载Release版本APK文件体验一下流畅度
项目截图
知识点
WanAndroidPage.dart
BottomNavigationBar的基本使用
Navigator的简单使用
HomePageList.dart
上拉加载更多
添加头布局(SlideView)
HotePage.dart
热门和搜索列表的切换
ArticlePage.dart
TabBarView的基本使用
ArticleDetailPage.dart
插件flutter_webview_plugin的使用
SearchPage.dart
Widget构造函数中key的意义
ArticleItem.dart
Dart的普通构造及命名构造函数
HttpUtil.dart
Flutter网络请求之简单封装及cookie的添加
可以看到整 ...
Flutter网络请求之简单封装
开始数据接口为wanandroid的开放api,返回数据类型如下:
12345{"data": ...,"errorCode": 0,"errorMsg": ""}
errorCode>=0时为网络请求成功,data则为返回的数据;
errorCode<0时为网络请求失败,errorMsg则为返回的错误信息;
普通网络请求先导包
12import 'package:http/http.dart' as http;import 'dart:convert';
1234567891011121314151617181920212223242526272829getBanners() async{ String url = "http://www.wanandroid.com/banner/json"; String errorMsg; int errorCode; var data; ...
在AndroidStudio上画UML图
前言在看源码分析博客时,常常能看到下面的类图。最初不懂,经常看的云里雾里,然后自己学习了一下UML图的基本用法,发现基本使用还是很简单的。学习其基本使用是很有必要的这里也和大家一起学习一下在AndroidStudio上画简单UML图。
插件下载
根据上图步骤
打开setting-plugins
点击2处Browse Repositories
搜索框中输入UML,选择PlantUML integration,下载并安装然后重启AndroidStudio
下载graphviz接下来我们可以新建UML类图了
然后
wtf !这是啥?? 别急,这是因为未安装配置好graphviz,安装配置好再刷新(graphviz下载地址在下面)
windows下载地址(下载软件后安装,记住本地安装地址。)
点击下图的 小扳手按钮->Open Setings
在Browse..中选择刚才graphvize安装文件夹中/bin/dot.exe的位置,然后点击ok
接着刷新,一个UML图就出来了
然后就可以快乐的在AndroidStudio上画UML图了
UML基础 ...
retrofit2碰到的SSLHandshakeException
错误在使用retrofit2请求正式https接口时报错:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for cert
原因服务端https证书配置错误
解决方法忽略证书检查
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647OkHttpClient okHttpClient = new OkHttpClient(); SSLContext sslContext = null; try { sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, new TrustManager[]{new X509TrustManager() { ...
学习计划
Java知识
JVM
基础概念
类加载过程
JVM运行时数据区
Java4种引用
GC
多线程
线程
ThreadLocal
线程池
锁
AQS
volatile
Synchronized
常见集合框架
ArrayList
HashMap 源码分析
CurrentHashMap
LinkedHashMap
网络
TCP/IP
HTTPS
Android知识
WebView
WebView的基础使用
WebView与Js的交互
简单动画
AMS
Activity启动流程
IPC
自定义View
扔物线HenCoder
GcsSloop自定义View系列
框架源码分析
Glide
Glide生命周期管理
Glide缓存
OkHttp
Dispatcher
Interceptor
Retrofit
动态代理
retrofit统一添加参数
Arouter
组件之间的通信
LeakCanary
插件化
热修复框架
数据结构与算法常见排序算法
链表
队列
栈
二叉树
Flutter
Flutter之W ...
Glide源码分析
用法1Glide.with(-).load(-).into(-);
With()Glide.with()方法有较多的重载,但是RequestManagerRetriever.get()获取RequestManagerRetriever,然后再调用相应的get()方法.
Glide.with()
123456789101112131415161718192021222324public static RequestManager with(Context context) { RequestManagerRetriever retriever = RequestManagerRetriever.get(); return retriever.get(context);}public static RequestManager with(Activity activity) { RequestManagerRetriever retriever = RequestManagerRetriever.get(); return ret ...