移动互联网开发-WIFI-DIRECT
技术介绍 2010年10月,Wi-Fi Alliance(wi-fi联盟)发布Wi-Fi Direct白皮书,白皮书中介绍了有关于这种技术的基本信息、这种技术的特点和这种技术的功能, Wi-Fi Direct标准是指允许无线网络中的设备无需通过无线路由器即可相互连接。与蓝牙技术类似,这种标准允许无线设备以点对点形式互连,而且在传输速度与传输距离方面则比蓝牙有大幅提升。 WIFI Direct有什么好处?(特点) 1、无线网络中的设备无需通过无线路由器即可相互连接; 2、支持一对一直连,也可以实现多台设备同时连接; 3、支持所有的Wi-Fi设备,从11a/b/g至11n,不同标准的Wi-Fi设备之间也可以直接互联; 4、移动性与便携性:Wi-Fi Direct设备能够随时随地实现互相连接。由于不需要Wi-Fi路由器或接入点,因此Wi-Fi设备可以在任何地点实现连接。 5、即时可用性:用户将得以利用带回家的第一部Wi-Fi Direct认证设备建立直接连接。例如,一部新购买的Wi-Fi Direct笔记本可以与用户已有的传统Wi-Fi设备创建直接连接。 6、易用性:Wi-Fi Direct ...
opencv_basic
图像基本操作 读取图像 1retval =cv2.imread (filename[,flags]) 可以使用相对路径,如: 也可以使用绝对路径。 显示图像 在显示图像中,还涉及其他函数 以下的很多例子里都会见到这几个函数 保存图像 图像处理基础 基本图像 二值图 仅包含黑色和白色,用01进行表示。 灰度图 可以在读取时将参数设为0,即为灰度图 通常, 计算机会将灰度处理为256个灰度级, 用数值区间[0,255]来表示。 其中, 数值”255”表示纯白色, 数值”0”表示纯黑色, 其余的数值表示从纯白到纯黑之间不同级别的灰度。用于表示256个灰度级的数值0~255, 正好可以用一个字节(8位二进制值)来表示。 所以灰度图一定是单通道的 彩图(以RGB色彩空间为例) 读取时参数为1,或者省略 在 RGB 色彩空间中, 存在 R (red, 红色)通道、 G (green, 绿色)通道和 B (blue, 蓝色)通 道, 共三个通道。 每个色彩通道值的范围都在[0,255]之间 , 我们用这三个色彩通道的组合表示颜色。 以比较通俗的方式来解释 ...
flutter如何监听鼠标-desktop
以前一直用InkWell的onHover监听鼠标移入移出,但今天突发奇想准备一探究竟,最后翻源码发现了这个: ink_well.dart1096行 123456MouseRegion( cursor: effectiveMouseCursor, onEnter: _handleMouseEnter, onExit: _handleMouseExit, child: ··· ), MouseRegion的属性和说明 总共6个属性 字段 属性 描述 onEnter PointerEnterEventListener 鼠标进入区域时的回调 onExit PointerHoverEventListener 鼠标退出区域时的回调 onHover PointerExitEventListener 鼠标在区域内移动时的回调 cursor MouseCursor 鼠标悬停区域时的光标样式 opaque bool 是否阻止检测鼠标 child Widget 子组件 ...
绘制:霍夫曼树
效果图如下: 思路 采用层叠布局,将连接节点的树枝(树枝层)和节点(节点层)依次绘制到界面上,注意这个顺序很重要,要保证节点会遮住树枝的线段这样就不必再对树枝的长度进行额外处理(以避免树枝遮住节点上的数字的情况)。 缩放可以使用InteractiveViewer直接实现。节点的定位和树枝线段的起始与终止位置由所有节点的信息进行计算得出。 解决的问题 在此次绘制遇到了如下问题: 面对一个数量不定的数据源(List/Map),如何进行绘制? 节点的定位和树枝线段的起始与终止位置要如何确定? 如何在数据量较大导致界面无法容纳时进行缩放? 下面依次解决: 问题一 面对一个数量不定的数据源(List/Map),如何进行绘制? 这个问题其实很简单。 首先把每个节点封装为组件,然后在初始化霍夫曼树界面时对数据源进行处理,将所有数据装载到节点里,形成一个List<Widget>,作为节点层的stack的children,但这其实会导致另一个问题。 由于节点层本身就是另一个层叠布局,而初始的节点组件会监听鼠标的移入移出,移入时展示节点卡片。由于层叠布局会令后添加的Widget覆盖在 ...
学线培训:winter-flutter:网络、同步与异步
Dio: 前言 热知识:Dio是国人开发的网络请求库,所以中文文档很完善。 又:目前最新版本为dio: ^4.0.5-beta1,在其github的develop分支,不过并不建议使用。以下基于master的 dio: ^4.0.3 / dio: ^4.0.4大致看了一下改变并不大。基本直接搬运github文档,免得有同学上不去github。 总而言之跟okhttp挺像的。 添加依赖 12dependencies: dio: ^4.0.3 如果你是dio 3.x 用户,想了解4.0的变更,请参考 4.x更新列表! 一个极简的示例 123456789import 'package:dio/dio.dart';void getHttp() async { try { var response = await Dio().get('http://www.google.com'); print(response); } catch (e) { print(e); } ...
学线培训:winter-flutter:PlatformChannel与桌面组件
PlatformChannel Flutter定义了三种不同类型的Channel,它们分别是 BasicMessageChannel:用于传递字符串和半结构化的信息。 MethodChannel:用于传递方法调用(method invocation)。 EventChannel: 用于数据流(event streams)的通信。 三种Channel之间互相独立,各有用途,但它们在设计上却非常相近。每种Channel均有三个重要成员变量: name: String类型,代表Channel的名字,也是其唯一标识符。 messager:BinaryMessenger类型,代表消息信使,是消息的发送与接收的工具。 codec: MessageCodec类型或MethodCodec类型,代表消息的编解码器。 下面讲MethodChannel,其余两种方法基本一致 MethodChannel 样例下载,以下基于样例进行讲解 flutter端 1234567891011121314151617static const MethodChannel methodChannel = Metho ...
数据结构课设:霍夫曼编码译码
前言 单纯对这类题目比较感兴趣吧,因为要是单纯去实现最原始的霍夫曼算法的话,其实很简单的,但是很多时候正是我们的不知足心理推动了技术的发展与进步,而我也恰恰觉得现阶段霍夫曼算法还有可以优化的地方而变得更加高效,也希望能借这个机会给下学期的算法课开个好头。 题目 问题描述 利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码;在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编译码系统。 基本要求 一个完整的系统应具有以下功能: (1)I:初始化(Initialization)。从终端读入字符集大小n及n个字符和m个权值,建立哈夫曼树,并将它存于文件hfmtree中。 (2)C:编码(Coding)。利用已建好的哈夫曼树(如不在内存,则从文件hfmtree中读入),对文件tobetrans中的正文进行编码,然后将结果存入文件codefile中。 (3)D:解码(Decoding)。利用已建好的哈夫曼树将文件 ...
Python进阶语法记录-OOP、IO、网络
面向对象 类和实例 以Student类为例,在Python中,定义类是通过class关键字: 12class Student(object): pass class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,可以省略。通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。 定义好了Student类,就可以根据Student类创建出Student的实例,创建实例是通过类名+()实现的: 12345>>> bart = Student()>>> bart<__main__.Student object at 0x10a67a590>>>> Student<class '__main__.Student'> 可以看到,变量bart指向的就是一个Student的实例,后面的0x10a67a590是内存地址,每个object的地址都不一样,而Student本身则是一个类。 可以使用点号 . 来访问 ...
Python基础语法记录
前言: 以前也闲得无聊看过一点Python,但是吧,平常用不上,渐渐就生疏了,也没怎么继续学下去,现在基本忘光了。现在准备入手OpenCV,拿Python版入手,稳妥起见先把以前看的一点Python拾遗补漏,记点记录以后忘了的话还可以翻翻看看,毕竟现在手头语言也不少了(java,dart,c++,JS),时间长了难免有搞混的情况。 (这里吐槽一句,软院本科真的是在培养全沾工程师,(我的c++还好,js完全就是沾了沾,java也没有完全特别深入地去学,dart自学的,算得上是用的比较熟练的脚本语言))。 基于Python3!Python2已经逐渐成为过去式 正文 Python学习资料/文章/指南整理 引自知乎-四条鱼 基本语法 标识符 第一个字符必须是字母表中字母或下划线 _ 。 标识符的其他的部分由字母、数字和下划线组成。 标识符对大小写敏感。 可以中文变量名但不要这么做 使用缩进来表示代码块 类似yaml格式,缩进一般是4个空格 多行语句 使用反斜杠 \来实现多行语句 在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 同一行显示多条语句 ...
mix-code_flutter-cpp
前言: 使用flutter与c++进行混合开发是一次尝试,起因是数据结构课设,我希望能用Flutter作为UI层进行展示。 其实最初的想法是做一个APP,通过UI层:flutter、平台层:java&JNI、逻辑层:c++这样的结构去进行调用,不过一方面APP局限性比较大,最终的展示效果可能不是特别好,另一方面,Flutter也可以用于开发桌面端程序,所以最终还是决定使用UI层:flutter、中间层:ffi、逻辑层:c++这样的方式直接使用dart调用c++,避免java作为中间层进行转发可能存在的io问题以及额外的内存开销。 配置 首先启用Flutter的桌面端开发,使用桌面端要安装 Visual Studio 2019(windows),注意一定是2019版,然后在创建项目的时候就可以选择加入桌面端开发。 然后也是踩了点坑,因为以前没用过VS,所以对VS的配置可以说是毫不熟悉,AS运行项目的时候直接报错: 12Error waiting for a debug connection: The log reader stopped unexpectedly, or neve ...
学线培训:winter-flutter-1
Widget 简介(了解) Widget 概念 在前面的介绍中,我们知道在Flutter中几乎所有的对象都是一个 widget 。与原生开发中“控件”不同的是,Flutter 中的 widget 的概念更广泛,它不仅可以表示UI元素,也可以表示一些功能性的组件如:用于手势检测的 GestureDetector 、用于APP主题数据传递的 Theme 等等,而原生开发中的控件通常只是指UI元素。在后面的内容中,我们在描述UI元素时可能会用到“控件”、“组件”这样的概念,读者心里需要知道他们就是 widget ,只是在不同场景的不同表述而已。由于 Flutter 主要就是用于构建用户界面的,所以,在大多数时候,读者可以认为 widget 就是一个控件,不必纠结于概念。 Flutter 中是通过 Widget 嵌套 Widget 的方式来构建UI和进行实践处理的,所以记住,Flutter 中万物皆为Widget。 Flutter中的树(比较抽象,尽量理解即可) 既然 Widget 只是描述一个UI元素的配置信息,那么真正的布局、绘制是由谁来完成的呢?Flutter 框架的的处理流程是这样的: ...
2022:new_year
正文 转眼一年半过去了,感觉也还算自由自在。没有什么太烦心的事,也算不上什么一帆风顺。 回首过去的一年,经历了好多,但要是想一一细数,却又那么朦胧难辨。倒不是说没有什么值得留念的,可能因为我并不喜欢追忆过往,往事如云烟,还是随它去吧。 只觉得,过去一年,浮浮沉沉,收获了很多东西,也不可避免地失去了一些,毕竟,我也在“磨损”。很庆幸身边有志同道合的伙伴,手头有自己享受的工作。 未来的路想怎么走,还不好说,感觉还是比较茫茫然,虽然日常真的很喜欢看稚晖君,不过基本是不会追随他的步伐了,(毕竟栈溢出工程师也不是人人都能成的),感觉手头还有很多东西要学,OpenCV,JVM,安卓与flutter底层原理与渲染机制,动画与绘制原理…反正是多的数不过来,大概也会有所取舍。其实还是很庆幸保留了自己的一点小脾气,只学自己喜欢的,不喜欢的就猛摆烂,怎么说。。。。。有利有弊吧。 如果你问我,我的人生会如何规划,那我肯定也不知道。不过估计也没多少人会这么关心我,而且就算知道,我自己大概也不会理会,甚至直接背道而驰。新的一年,我只希望能够平安顺遂,有风有浪。其实这么多年,结交的朋友也不少,但真正留在身边的 ...
后端数据过期的处理策略
课设中涉及对过期需求的自动处理(自动设置状态为超时),其实日常生活中也有很多相类似的问题,比如订单签收后若买家没有确认收货则要在24小时后自动确认,或者QQ每到周一早上的一个固定时间就会给用户发送上周QQ空间的访客情况,老师要设置作业的截止日期,过期学生就不能使用提交作业的功能。 其实个人总结了一下大致可以分为两类任务,一类属于延时任务,比如订单的24小时自动确认收货,另一类属于定时任务,比如在某个特定的时间给用户发送报告,课设中的任务其实就是一个定时任务,而类似的问题其实在个人课设中也有出现。 不过不同的是个人课设中的选课时间功能完全可以简化处理,即在学生进行选课操作时检查当前时间与规定时间,并对超时请求进行拦截以达到显示超时的目的。但此次团体课设则不同,此次团体课设要求检查的是截止日期是否超时,并对超时的需求执行对应的操作,主要考虑到高效性与实效性,并不能简单地通过前端请求进行拦截。 基于此,我设计了三种方案,三种方案优缺点各异,但在横向与纵向的比较之中带给了我很大的启发。 数据库轮询 第一种是对数据库进行定期轮询,即通过一个线程定时的去扫描数据库,通过当前时间来判断是否有超时的需 ...
学线移动例会:git
前言:为什么要有git与GitHub&Gitee 1.起源 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。 Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢? 事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码! 你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。 不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,Bi ...
数据结构实验八:图
1、 创建图类,存储结构使用邻接矩阵。 2、 输入图的节点数n(小于10个)、边数m,节点分别用1-n代表。 3、 采用“起始节点,终止节点,权值”输入图的m条边,创建图。 4、 输出从节点1开始的BFS遍历,在遍历过程中,如有多个可以选择的节点,则优先选择编号较小的节点。 5、 输出从节点1开始的DFS遍历,在遍历过程中,如有多个可以选择的节点,则优先选择编号较小的节点。 6、 输出从第1节点到第n节点最短路径的长度,如果没有路经,输出0。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271 ...
数据结构试验七:搜索树与堆
写的好乱。有空再整理吧 1、 输入一系列不为零的正整数(最多不超过20个),遇到0代表输入结束(不包含0)。 2、 根据上面输入的数据序列,用初始化方法创建最大堆(不要用节点依次插入的办法创建最大堆),然后输出最大堆的层次序列。 3、 输出用堆排序后的排序结果。 4、 根据上面输入的数据,创建二叉搜索树(关键字不允许重复,如遇重复,则不重复插入该关键字),输出二叉搜索树的前序序列、中序序列(分行输出)。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 ...
数据结构实验六:二叉树源码
1、 输入一个完全二叉树的层次遍历字符串,创建这个二叉树,输出这个二叉树的前序遍历字符串、中序遍历字符串、后序遍历字符串、结点数目、二叉树高度(上述每一个结果独立一行显示)。 2、 输入二叉树前序序列和中序序列(各元素各不相同),创建这个二叉树,输出该二叉树的后序序列、层次遍历。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150#include<ios ...
学线移动第一次例会
学线移动第一次培训 1.作业点评 略 2.细说MVC架构与项目分包 参考: https://zh.wikipedia.org/wiki/MVC https://draveness.me/mvx/ https://blog.csdn.net/qq_39218605/article/details/80779349?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.no_search_link&spm=1001.2101.3001.4242.1 参考文献http://www.dgp.toronto.edu/~dwigdor/teaching/csc2524/2012_F/papers/mvc.pdf 基本概念 我们将应用程序划分为三种组件,模型 - 视图 - 控制器(MVC)设计定义它们之间的相互作用。 在上面那篇论文中是这样描述这三部分的: In the MVC paradigm the user input, the modeling of the exter ...