flow中merge,combine,zip的区别
12345678910111213141516fun main() { var flow1 = (1..10).asFlow().onEach { delay(300L) } var flow2 = (11..20).asFlow().onEach { delay(1000L) } runBlocking { flow1.combine(flow2) { n1, n2 -> println("combine $n1:$n2") }.collect() flow1.zip(flow2) { n1, n2 -> println("zip $n1:$n2") }.collect() merge(flow1, flow2).onEach { it -> println(&q ...
5开发原则
SOLIDSingle responsibility 单一职责Open close principle 开闭原则Lisk of substitution 替换原则(能被子类替代使用)Interface segregation 接口隔离Dependences 依赖抽象而不是具体
ADB 调试手机的三种方式(USB、WLAN、WIFI)
主要是,家里多了一些旧手机时,可以用这些旧手机来开发App,可是这些手机Android版本过低,只有USB调试,不支持无限调试。所以可以通过这种方式打开无限调试的开关。来达到无限调试的目的。
USB 调试手机开启开发者选项和 USB 调试模式(通常开启方式:在关于手机连续点击7次版本号);USB 连接线和各种接口正常(个别三方数据线仅支持充电,不支持调试);驱动状态正常(Linux 和 Mac 通常没有问题,Windows 可能需要安装);adb devices -l命令查看。
WLAN 调试(Android 10 及更低版本,需要借助 USB)Android 10以及更低的版本,必须通过 USB 连接后,才可实现同一 WLAN 下无线调试。
手机和电脑需连接在同一 WiFi 下;手机开启开发者选项和 USB 调试模式,并通过 USB 连接电脑(即adb devices -l可以查看到手机);设置手机的监听adb tcpip 5555;拔掉 USB 线,找到手机的 IP 地址;通过 IP 连接到手机adb connect ip(端口默认:5555);adb devices -l命令查看 ...
Android Studio 打包APK
当你开发完一个App项目后,你所运行生成的都是debug的安装包,也就是无法正常安装,只能在开发者模式下调试使用。![](https://image.zfxt.top/hexo-blog/Android Studio 打包APK-2023-10-20-38-51.png)
如果要查看这些隐藏的文件夹,需要打开设置![](https://image.zfxt.top/hexo-blog/Android Studio 打包APK-2023-10-20-40-04.png)
打包过程,进入build![](https://image.zfxt.top/hexo-blog/Android Studio 打包APK-2023-10-04-49-19.png)![](https://image.zfxt.top/hexo-blog/Android Studio 打包APK-2023-10-04-08-07.png)![](https://image.zfxt.top/hexo-blog/Android Studio 打包APK-2023-10-22-44-03.png)这里需要一个商店的k ...
MVC MVP MVVM MVI架构
MVCModel:实体类(数据的获取、存储、数据状态变化)。View:布局文件Controller:Activity(处理数据、业务和UI)。![](https://image.zfxt.top/hexo-blog/MVC MVP MVVM MVI架构-2023-10-12-22-10.png)缺点:随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致变得庞大臃肿。为了解决MVC的缺点,MVP 框架被提出来。
MVPModel:实体类(数据的获取、存储、数据状态变化)。View:布局文件+Activity。Presenter:中介,负责完成View与Model间的交互和业务逻辑。![](https://image.zfxt.top/hexo-blog/MVC MVP MVVM MVI架构-2023-10-14-08-28.png)
MVP的优点
复杂的逻辑处理放在Presenter进行处理,减少了Activity的臃肿。解耦。Model层与View层完全分离,修改V层不会影响M层,降低了耦合性。可以将一个Presenter用于多个视图,而不需要改变Present ...
深度学习速成get知识点
dir()它可以展示一个package中所有的方法和类,以列的方式展示出来。
help()它可以具体展示某个方法或者类的使用说明,也可以使用方法??后面接两个问号的方式,实现提示功能
jupyter,python console,python文件的区别和使用python文件:他会将所有内容都重新编译运行,比较耗时,适合完整的大型项目jupyter,python console:都可以将每一个python语句拆分成任意块去单独执行。执行速度快。不会重复运行但是python console如果出了错误。会很影响阅读体验。因此常用来做测试而jupyter有着文字和代码共存的特性适合用来做笔记和学习
TensorBoard的使用他可以将数据转化成图表类型,更加的可观,明了。例1:
123456789101112from torch.utils.tensorboard import SummaryWriter# from read_image import img_arraywriter = SummaryWriter("logs") # 他会生成这个文件夹,并在cl ...
pytorch和jupyter的安装
第一步,欲要使用python最佳的建议是使用conda实现python的环境管理,因此这里演示conda的安装和使用。注意,接下来的所有内容都推荐关闭代理进行使用。避免出现网络不通畅的情况。还有conda在安装时会修改dll文件。如果有安装360或者其他杀毒软件的话。需要给予白名单或者关闭杀毒程序
anaconda作为python的版本管理神器,但由于他的体积太大,安装后大概占约2G左右的空间,因此这里推荐使用miniconda。
下载安装conda由于官网下载太慢,因此推荐去(清华大学开源软件镜像站下载)[https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?C=M&O=D]
修改conda源安装后,需要进行换源,不然下载,导包都会异常缓慢。
conda配置文件位置:~/.condarc (Windows路径为:C:\Users.condarc)
清华源配置,通常配置写入标准库的内容即可,若要使用附加库的内容才将其插入“ - defaults”那一行前面:12345678910channels: ...
SpringCloud(5)
服务降级
服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟进行隔离和管理,以便单个依赖关系的失败,不能取消整个应用程序或系统。
HystrixHystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类以熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不 ...
SpringCloud(4)
负载均衡RibbonSpring Cloud Ribbon是基于Netflix Ribbon3实现的一套客户端负载均衡的工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们很容易使用Ribbo实现自定义的负载均衡算法。
当前Ribbon已经进入维护阶段
LB负载均衡(Load Balance)是什么?简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用)。常见的负载均衡有软件Nginx,LVS,硬件F5等。
Ribbon本地负载均衡客户端VS Nginx服务端负载均衡区别Nginx是服务器负载均衡,客户端所有请求都会交给nginx,然后由nginx实现转发请求。即负载均衡是由服务端实现的。Ribbon本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到 ...
SpringCloud(3)
服务注册中心Eureka什么是服务治理?springcloud封装了Netflix公司开发的Eureka模块来实现服务治理
在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂。所有要使用夫妇治理,管理服务与服务之间的依赖关系,可以实现服务调用,负载均衡,容错等。实现服务发现和注册。
单机Eureka搭建步骤
构建服务端修改pom文件:123456789101112131415161718192021222324252627282930<dependencies><!-- 自定义api通用包--> <dependency> <groupId>top.zfxt.springcloud</groupId> <artifactId>cloud-api-commons</artifactId> <version>1.0-SNAPSHOT</version> ...