SpringCloud(9)
stream消息驱动官方定义Spring Cloud Stream是一个构建消息驱动微服务的框架 应用程序通过inputs或者outputs来与Spring Cloud Stream中binder对象交互。通过我们配置来binding(绑定),而Spring Cloud Stream的binder对象负责与消息中间件交互。所以,我们只需要搞清楚如何与Spring Cloud Stream交互就可以方便使用消息驱动的方式。通过使用Spring Integration来连接消息代理中间件以实现消息事件驱动.Spring Cloud...
SpringCloud(8)
Bus消息总线可以和消息队列(rabbitmq或kafuf)整合 安装rabbitmq可以查看我的这篇文章rabbitmq入门 springcloud 全局广播通知 先安装3355的客户端配置在配置一个3366的客户端 直接通知configServer服务中心,让所有从此获取config的微服务都得到通知 服务端添加消息总线的支持pom:1234<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency> yml12345678910111213141516171819202122232425262728293031323334353637server: port: 3344spring: application: name: cloud-config-center # 注册进Eureka服务器的微服务名 ...
SpringCloud(7)
Config微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的动态的配置管理设施是必不可少的。 spring configServer就可以解决这个问题将相同的配置抽调出来放于ConfigServer中去解决。 服务端使用configServer通常与git,github相结合,通过在git上修改配置文件,从而让每个客户端自己读取到新的配置文件而不用重启。 现在GitHub上建立一个新仓库,这个仓库作为以后会使用到的配置文件中心 然后是构建服务端(module,pom,yml,主启动类,业务)以下是一些相关的包1234567891011121314<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> ...
Springcloud(6)
路由网关Gateway 动嘴,理论。动手,架构 SpringCloud Gateway使用的Webflux中的reactor-netty响应式编程组件,底层使用了netty通讯框架。基于NIO(异步非阻塞模型) 传统框架:structs2,springmvc都是基于servlet API和Servlet容器。也就是阻塞框架,而Servlet3.1后就有了异步非阻塞的支持,WebFlux就是一个典型非阻塞异步的框架。他的核心基于Reactor 3大核心:路由,断言,过滤 静态配置有两种方式:1,修改yml文件 建module 修改pom需要导入一些新的内容包: 123456789101112131415<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> ...
CameraX的基础使用
CameraX他的特点是可以不用去申请相机等应用,而是可以直接调用硬件的相机源。当然采用这个或者调用相机都是没有问题的,这取决于你的需求 (如果你希望你的应用程序完全访问设备的相机,并且不用离开应用程序时,例如抖音,学习通)那么使用CameraX是个很好的决定。 导入包 12345678//Camera val cameraxVersion = "1.3.0-rc01" implementation("androidx.camera:camera-core:$cameraxVersion") implementation("androidx.camera:camera-camera2:$cameraxVersion") implementation("androidx.camera:camera-lifecycle:$cameraxVersion") ...
gradle&java&kotlin版本冲突问题
java&kotlin version在使用android时,通常会遇到因为jvm版本不匹配导致的报错问题,因此现在说明一下关于这些内容。 通常我们可以看到以下内容 1234567compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } java version and java bite code version通常我们写出来的代码,即直接java代码这些被称为·java version,and另一个版本就是这些代码被转化为字节码即java bitecode version。通常java版本越高,我们可以使用到的语言功能越多。而java bitecode...
android-hilt
hilt依赖注入他应该满足,只要应用程序存在,那么依赖项就一直存在,并且保持单例模式 添加依赖项首先,将 hilt-android-gradle-plugin 插件添加到项目的根级 build.gradle 文件中: 1234plugins { ... id("com.google.dagger.hilt.android") version "2.44" apply false} 然后,应用 Gradle 插件并在 app/build.gradle 文件中添加以下依赖项: 12345678910111213141516171819plugins { id("com.android.application") id("org.jetbrains.kotlin.android") kotlin("kapt") ...
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 -> ...
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...