kotlin的private和java的private
在kotlin中存在
修饰符1.1. 在 Kotlin 中,修饰符有:open/final,private/protected/internal/public1.2 open/final:一个类能不能被继承。1.3. private/protected/internal/public:一个类中或 Kotlin 文件中的变量或方法能不能被其他类或其他 Kotlin 文件访问。
open/final2.1 一个类在类的定义前加上 open 修饰符才可以被继承。如果没有加 open 关键字,那么默认是 final,即不可被继承的。2.2 被 open 修饰的类中只有被 open 修饰的属性或方法才可以被子类重写,如果在属性或方法前没有加 open 关键字,那么默认是 final,是不可被覆盖重写的。2.3 在子类中覆盖重写父类中的属性或方法是,需要使用关键字 override 修饰。2.4 子类中重写了父类的属性或方法,那么此时子类中的属性或方法没有加 open 关键字,子类的子类也是可以重写的,也 ...
SpringCloud(11)
Nacos服务注册和配置中心nacos安装在官网下载压缩包https://nacos.io/zh-cn/docs/quick-start.html然后执行对应的命令。启动完成后,访问localhost:8848/nacos即可访问该界面。账号密码都是nacos
服务注册中心
生产者:POM:
123456789101112131415161718192021 <dependencies><!-- alibabanacos--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org. ...
SpringCloud(10)
分布式请求链路监控Sleuth在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。
zipkin dashboard监控
下载zipkin的jar包,然后直接运行jar包出现以上界面就算zipkin部署完成然后访问localhost:9411/zipkin/即可访问
依次启用8001,80微服务当然这些服务理应完成一些配置POM.XML:12345<!-- 包含了zipkin+sleuth--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
applica ...
SpringCloud(9)
stream消息驱动官方定义Spring Cloud Stream是一个构建消息驱动微服务的框架
应用程序通过inputs或者outputs来与Spring Cloud Stream中binder对象交互。通过我们配置来binding(绑定),而Spring Cloud Stream的binder对象负责与消息中间件交互。所以,我们只需要搞清楚如何与Spring Cloud Stream交互就可以方便使用消息驱动的方式。通过使用Spring Integration来连接消息代理中间件以实现消息事件驱动.Spring Cloud Stream为一些供应商的消息中间件产品提供了个性化的自动化配置实现,引用了发布-订阅、消费组、分区的三个核心概念。(目前支持rabbitmq,kafka)
他出现的场景在于:有没有一种新的技术诞生,让我们不再关注具体MQ的细节。我们只需要用一种适配绑定的方式,自动的给我们在各种MQ内切换。我们就不需要考虑这么多rabbitmq,kafka,rocketmq等。这样可以降低开发难度和学习难度。屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型标准MQ ...
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服务器的微服务名 cloud: ...
SpringCloud(7)
Config微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的动态的配置管理设施是必不可少的。
spring configServer就可以解决这个问题将相同的配置抽调出来放于ConfigServer中去解决。
服务端使用configServer通常与git,github相结合,通过在git上修改配置文件,从而让每个客户端自己读取到新的配置文件而不用重启。
现在GitHub上建立一个新仓库,这个仓库作为以后会使用到的配置文件中心
然后是构建服务端(module,pom,yml,主启动类,业务)以下是一些相关的包1234567891011121314<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-se ...
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> <artifactId>spring-cloud-starter-gateway</artifactId> ...
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") implementation("androidx.camera:camera-video:$cameraxVer ...
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 version通常发展的比java版本慢很多,他与我们可以使用到语言特 ...
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") id("com.google.dagger.hilt.android"))dependences ...