Flutter 表单组件

前言 最近在利用flutter制作校园软件,需要制作一个登录界面,所以要用到Flutter中的一些表单控件,今天就来总结下flutter中的一些表单控件。 本文参考: 《Flutter 基础组件-表单》 FormState class Form Class TextField class TextFormField ...

Flutter数据存储之shared_preferences

前言 做过android开发的人都知道,可以利用SharedPreferences这个轻量级的存储类来保存键值对信息,在Flutter中,我们可以使用shared_preferences库来同时支持Android和ios平台。 参考: 《Flutter中的本地存储》 《Flutter知识点:数据存储之SharedPreferences》 shared_preferences 0.4.2 使用介绍 在pubspec.yaml文件中添加依赖 shared_preferences: "^0.4.2" 添加的位置如图所示: ...

HashMap的排序

前言 HashMap 在 Java 里面是一种非常实用的工具,他清楚明白的反映了**“键-值”**之间的关系,HashMap 本身是无序的,但是 HashMap 的排序却是一个比较常见的问题,这里针对 HashMap 的两种排序方式做了笔记。 import java.util.*; class Main { public static void main(String[] args) { Map<Integer, String> map1 = new HashMap<>(); map1.put(3, "三"); map1.put(6, "六"); map1.put(1, "一"); Map<String, Integer> map2 = new HashMap<>(); map2.put("三", 3); map2.put("一", 1); map2.put("六", 6); sortByKey(map1); sortByValue(map2); } // 按照键排序 static void sortByKey(Map map) { Object[] objects = map.keySet().toArray(); Arrays.sort(objects); for (int i = 0; i < objects.length; i++) { System....

Java 中链表与数组间的相互转换

自定义链表 ListNode 类 public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } 将链表转换成数组 //将链表转换成数组 public class Test1 { public static void main(String[] args) { Test1 test1 = new Test1(); int[] a = {1, 9, 9, 9, 9, 9, 9, 9, 9, 9}; ListNode l1 = test1.arrayToListNode(a); test1.printListNode(l1); } //数组转换成链表 public ListNode arrayToListNode(int[] s) { ListNode root = new ListNode(s[0]);//生成链表的根节点,并将数组的第一个元素的值赋给链表的根节点 ListNode other = root;//生成另一个节点,并让other指向root节点,other在此作为一个临时变量,相当于指针 for (int i = 1; i < s.length; i++) {//由于已给root赋值,所以i从1开始 ListNode temp = new ListNode(s[i]);//每循环一次生成一个新的节点,并给当前节点赋值 other.next = temp;//将other的下一个节点指向生成的新的节点 other = temp;//将other指向最后一个节点(other的下一个节点) other=other.getNext(); } return root; } /** * 遍历一个链表 */ public void printListNode(ListNode l) { while (l != null) { System.out.print(l.val + " "); l = l.next; } } } ...

257 words 2 min

Java 并查集的实现

概念 其实并查集顾名思义就是有“合并集合”和“查找集合中的元素”两种操作的关于数据结构的一种算法。 用途 维护无向图的连通性。支持判断两个点是否在同一连通块内。 判断增加一条边是否会产生环:用在求解最小生成树的Kruskal算法里。 操作 并查集主要就三个操作:初始化、合并、查找 初始化 一般来说,并查集的初始化用数组即可,例如数组Tree[i],i表示某节点,tree[i]表示当前节点的根节点 查找函数 这里的查找和java集合类List中的查找函数get()并不一样,他的作用是查找该节点的根节点,如果集合的parent等于集合的编号(即还没有被合并或者没有同类),那么自然返回自身编号。如果不同那么就可以调用递归函数。 代码如下 // 并查集查找根节点 static int findRoot(int x, int[] arr) { // 如果集合i的父亲是自己,说明自己就是源头,返回自己的标号 if (arr[x] == -1) return x; else // 否则查找集合i的父亲的源头 return findRoot(arr[x], arr); } 若需要在查找过程中添加路径压缩的优化,我们修改上面这个函数为: // 并查集查找根节点(优化算法,本质是将路径压缩了) static int findRootUseful(int x, int[] arr) { int res = 0; if (arr[x] == -1) return x; else { res = findRoot(arr[x], arr); arr[x] = res; // 将当前结点的双亲结点设置为查找返回的根结点编号 return res; } } ...

Java中的进制转换

近期刷题时遇到了进制转换,在这整理一波 方法: 十进制转其他进制 Integer.toHexString(int i);//转成16进制 Integer.toBinaryString(int i);//转成二进制 Integer.toOctalString(int i);//转成8进制 Integer.toString(int i, int radix);//转成任意进制,radix不在【2,36】区间内radix=10 Long.toHexString(long i);//转成16进制 Long.toBinaryString(long i);//转成二进制 Long.toOctalString(long i);//转成8进制 Long.toString(long i, int radix);//转成任意进制,radix不在【2,36】区间内radix=10 其他进制转十进制 Integer.valueOf(String s, int radix); 返回值类型为Integer,radix不在【2,36】区间内,抛出NumberFormatException异常 parseInt(String s, int radix); 返回值类型为:int,radix不在【2,36】区间内,抛出NumberFormatException异常 各进制间的转换 Integer.toString(parseInt(String s, int srcRadix), int destRadix);

Java中计算两个日期间隔多少天

String dbtime1 = "2017-02-23"; //第二个日期 String dbtime2 = "2017-02-22"; //第一个日期 //算两个日期间隔多少天 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = format.parse(dbtime1); Date date2 = format.parse(dbtime2); int a = (int) ((date1.getTime() - date2.getTime()) / (1000*3600*24)); 直接通过计算两个日期的毫秒数,他们的差除以一天的毫秒数,即可得到想要的两个日期相差的天数。

34 words 1 min

TensorFlow笔记0——在Ubuntu 18.04安装tensorflow 1.12 GPU版本

在之前的深度学习中,我是在MAC上跑CPU版本的tensorflow程序,当数据量变大后,tensorflow跑的非常慢,在内存不足情况下,又容易造成系统崩溃,这个时候我觉得不应该浪费我的限制的微星游戏本,便想着拿来跑深度学习的代码。 1. 配置信息 我的老电脑配置如下: CPU i5-4210M 16G内存 GPU GTX 950M 显存2G 128G SSD Ubuntu 18.04 这个配置一般,但是为了不让我的mac发光发热,同时体验下GPU给深度学习的加速效果(虽然可能加不了多少速度)以及不想让老电脑荒废的心,我最终决定还是在上面安装Ubuntu18.04跑TensorFlow了。 2. 选择安装所需软件...

TensorFlow笔记2——利用TensorFlow训练一个最简单的一元线性模型

前言 这是一次使用《TensorFlow笔记(1)——TensorFlow中的相关基本概念》中学习到的知识进行机器学习的实验,一来是为了理解机器学习大概是什么样的,另一方面也算是将之前学习到的一些知识活学活用。 本次实现的环境为: macOS Mojave 10.14.1 python 3.7.0(pyenv) Tensorflow 1.12.0 numpy 1.15.4 简单介绍下机器学习是什么 机器学习和人类学习的过程: ...

TensorFlow笔记3——利用TensorFlow和MNIST数据集训练一个最简单的手写数字识别模型

前言 当我们开始学习编程的时候,第一件事往往是学习打印"Hello World"。就好比编程入门有Hello World,机器学习入门有MNIST。 MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片: 它也包含每一张图片对应的标签,告诉我们这个是数字几。比如,上面这四张图片的标签分别是5,0,4,1。 其实训练一个简单的手写数字识别模型的代码很短,我的示例代码总共也就50行,除去注释、空格之类的估计连30行也没有,但是去理解包含在代码中的设计思想是很重要的,因此这篇笔记我会将我对每段代码的理解都记录下来。 参考: MNIST机器学习入门 机器学习-损失函数 ...