自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

aruba的博客

安卓高级UI、NDK、kotlin、协程、数据结构与算法、MVVM架构、JetPack等技术分享

  • 博客(238)
  • 收藏
  • 关注

原创 Flutter(三)--可滚动布局

上面我们使用了Flutter内置的Sliver模型布局,针对大量数据达到复用组件,以提高性能,覆盖了大多数应用场景实际上SliverSliver:复用机制的核心,按需进行构建和布局ViewPort:滚动布局中,用于渲染当前视口中需要显示的SliverScrollable:监听到用户滑动行为后,根据最新的滑动偏移构建Viewport上面的滚动布局这三大角色都是1:1:1的,但对于一些特殊的需要组合滚动布局的情况,Flutter也提供了组件,创建一个公共的Scrollable和Viewport,然后它的。

2023-04-12 17:09:08 2532

原创 Flutter(二)--布局&容器

基础组件大多数都是一个个单个的控件,控件在View树中处于叶子节点,单个的控件对我们UI的搭建显然是不够的,还需要布局来摆放它们,今天介绍布局与容器,它们其实都算是布局,只不过容器的自定义性比布局低一些,上次的Chip也算是一种容器,它包含了一组摆放固定位置的子控件。

2023-04-06 16:23:53 1376

原创 Flutter(一)--初入Flutter&基础组件

之前有个Dart的语言基础后,现在开始进入真正的跨平台Flutter开发,如果你学习过Jetpack Compose,那么Flutter的学习会变得十分简单,两者之间的概念几乎一样,都有含有状态、组件。同时状态是声明式UI中最重要的一环,在后续过程会逐渐使用。

2023-03-31 16:56:20 1433 1

原创 Dart(四)--泛型&使用库&异步&生成器&注解

T value;} main() {运行结果:由于Dart支持var方式定义变量,所以直观上来说,使用泛型并没有什么区别,方法上使用该泛型类型T value;除了类上定义泛型,单独的方法中可以定义泛型,下面我们在方法上定义一个泛型F,并且通过一个transform函数返回F类型的结果,transform函数接收一个T类型参数,并返回一个F类型结果,转换实现交由外部调用者实现T value;

2023-03-27 16:33:04 1114

原创 Dart(三)--类

name;// 可空对象不初始化,值默认为null int?age;使用mixin关键字,定义一个模板类// 定义mixin mixin Logger {} } } // 使用mixin class Hi with Logger {Hi() {Hi();

2023-03-24 17:16:39 985

原创 Dart(二)--函数&运算符&条件语句&异常

返回类型] ([参数类型] 参数名, ...){ return 返回值 },可以看出通过Dart的类型推断返回类型和参数类型可以省略,但官方还是推荐写全// 定义一个求和函数 int sum(int a , int b) {} main() {

2023-03-23 13:13:09 600

原创 Dart(一)--初入Dart 环境配置&变量&内置类型

List类型称之为列表或数组,定义方式由[]包裹元素,内置增删改一系列函数main() {// []包裹item var intArr1 = [ 1 , 2 , 3 ];intArr2;// 添加一个list intArr1 . addAll([ 4 , 6 ]);main() {// 只含有一个1 print(set1);main() {

2023-03-21 11:12:17 2410

原创 compose--附带效应、传统项目集成、导航

该文章将是compose基础系列中最后一篇,附带效应是这篇文章的重点,其余补充内容为如何在传统xml中集成compose、compose导航的使用一、附带效应有了前面的了解,我们知道compose中是由State状态发生改变来使得可组函数发生重组,状态的改变应该是在可组合函数作用域中,但有时我们需要它发生在别的作用域,如定时弹出一个消息,这就需要附带效应出场了,compose定义了一系列附带效...

2022-12-15 16:47:46 806

原创 compose--动画

compose中本身封装了很多动画,我们可以拿来直接使用,动画也可以从官网进行学习:Compose动画一、AnimationSpeccompose中的动画效果都是由AnimationSpec定义的,它包含了动画执行时长,估值器,插值器的功能,我们也可以通过AnimationSpec自定义动画效果,所以在真正使用compose动画之前,先对AnimationSpec来做学习1.springs...

2022-12-14 12:09:54 1297

原创 compose--CompositionLocal、列表LazyColumn&LazyRow、约束布局ConstraintLayout

通过前面内置组件和修饰符Modifier的使用,结合Stat状态,相信对于一般的开发需求已经没有问题了,接下来对CompositionLocal进行学习,以及对列表组件LazyColumn&LazyRow和约束布局的完善ConstraintLayout一、CompositionLocalCompositionLocal可以创建以树为作用域的具名对象,简单来说就是可组合函数的作用域内,其...

2022-12-10 22:19:02 1349

原创 compose--修饰符Modifier

上次介绍了compose中大多数的标准组件,此外还有两个重要的组件:列表LazyColumn和LazyRow,以及约束布局ConstraintLayout,在使用它们之前,先来认识Modifier修饰符ModifierModifier之前已经运用过,它能做的事情很多,不仅仅是改变组件的样式,还能够改变组件的位置,以及自定义交互事件,关于Modifier的所有用法,可以查看官方文档:https:...

2022-12-09 14:57:43 2761

原创 compose--初入compose、资源获取、标准控件与布局

compose正式发布已经一年多了,越来越多的开发人员选择使用它,声明式UI也是未来的一个主流趋势,本人也是一年前学习后,并没有真正的使用,所以本着边学习,边分享的心态,准备写个compose系列的文章首先compose目前只支持kotlin,基于google对移动端的鸿图,未来应该也不会支持其他语言,和传统安卓的xml布局不同,compose是通过kotlin定义一个一个组件,由于是通过代码定...

2022-12-05 21:37:33 2406

原创 Docker-MySQL集群搭建与SpringBoot项目部署

在实际开发中MySQL集群搭建利用percona-xtradb-cluster,有了docker后会方便很多,SpringBoot项目部署则只需要JDK环境即可,打包运行jar,就可以启动服务了一、MySQL集群percona-xtradb-cluster是为了mysql集群而推出的解决方案,实现mysql集群的强一致性1.PXC容器创建1.1 拉取镜像使用docker拉取镜像:-ba...

2022-09-07 06:43:57 601

原创 Docker-进阶(容器网络、compose、harbor、swarm)

接着Docker-入门,上次了解了Docker的基本命令,镜像容器操作,自定义镜像两种方式(容器和DockerFile),数据卷实现容器数据持久化和容器间数据共享,都是日常工作中最常用的。一、Linux中的网卡与虚拟化Docker本地容器之间的通信实现,就是利用的OS提供的网络虚拟化,所以了解OS的网卡和虚拟化有利于对Docker容器网络通信的了解1.查看网卡信息方式描述...

2022-09-07 00:53:23 670

原创 Docker-入门

Docker是基于Linux容器的虚拟化技术,基于go语言开发,生态是非常不错的,通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到一次封装,到处运行。传统虚拟技术需要虚拟出一个系统才能运行,Linux容器只是对进程进行了隔离,使得每个进程看起来都运行在一个单独的系统。不同的容器可以共用相同的库和内核,而且做到互...

2022-08-31 11:03:17 363

原创 SpringCloud--Alibaba入门(OpenFeign、GateWay、Seata)

接着SpringCloud--Alibaba入门(Nacos+Sentinel),上次使用了SpringCloudAlibaba中的Nacos和Sentinel,其中Nacos作为微服务的核心,不仅仅拥有服务注册中心、服务发现,还有配置中心的功能,并且自带Ribbon;Sentinel为保障整体微服务架构的高可用,拥有流控、熔断等功能,剩下还有OpenFeign、GateWay、Seata。一、...

2022-08-23 13:33:04 3047 2

原创 SpringCloud--Alibaba入门(Nacos+Sentinel)

上次说到Netflix已经过时了,目前除了一些大厂使用自己内部的微服务架构外,市面上使用最广泛的就是SpringCloudAlibaba,再说说后台架构的演进单体架构:整体打包为一个服务进行部署,简单,代码集中,不易于后期扩展和维护,不支持水平扩展垂体架构:将一个项目拆分成多个进行部署,项目与项目之间独立,但有冗余业务代码,如:都需要用户信息业务分布式架构: 使用RPC进行服务与服务之间的...

2022-08-17 15:03:25 703

原创 SpringCloud--Netflix入门

SpringCloud是一系列框架的集合,目的是将业务系统拆分成一个个微服务,服务于服务之间相互独立,支持水平扩展,高可用,微服务架构主要的功能有服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,Netflix虽然已经过时了,但是他框架集和其他微服务框架集作用差不多微服务整体架构如下图,看看就好:Netflix主要使用下面的组件:组件描述Eureka...

2022-08-05 06:40:19 380

原创 分布式--Spring Security入门

Spring Security是Spring推出的一个安全框架,说白了就是争对用户登录和权限的框架,所以主要功能为两块:“认证”和“授权”,对应用户登录和是否有权限去访问一些功能一、使用Spring Security1. 依赖SpringBoot项目中加入依赖:<dependency> <groupId>org.springframework...

2022-08-02 16:14:42 374

原创 分布式--RabbitMQ集成SpringBoot、消息可靠性、死信队列、延迟交换机、集群

接着上篇分布式--RabbitMQ入门一、SpringBoot中使用RabbitMQ1. 导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</ar...

2022-07-28 01:10:45 517

原创 分布式--RabbitMQ入门

一、简介1. AMQP分布式项目中,模块与模块之间的通信可以使用RPC框架,如Dubbo,但RPC中调用方模块获取到被调用方的结果是同步的,争对一些只需要异步调用的方法,如日志存储、发送消息等,RPC就显得效率低下了,AMQP协议的推出就是用来解决进程之间的异步消息通信AMQP从设计上来说,AMQP就是一个发布订阅者模式,整体可以看作一个流,核心是中间的管道,即消息队列有了AM...

2022-07-26 14:13:46 494

原创 分布式--solr搜索引擎

一、简介搜索是项目中常用的功能,对于大数据量的搜索,查询关系型数据库是非常低效的,好在有三方专门用于搜索的工具,常用的搜索解决方案为:基于Apache Lucene实现基于百度API实现基于谷歌API实现solr基于Lucene实现,本质是一个Java Web项目,并集成了Jetty服务器,Jetty和Tomcat差不多,也是一个JavaWeb容器,我们客户端只需要通过调用solr控...

2022-07-13 14:32:35 756

原创 Python--字符串、函数、异常处理、面向对象

接着上次的Python--数据类型、循环、运算符、容器的使用,首先扩展下字符串操作一、字符串字符串的操作也是我们开发中使用最频繁的操作,字符串的内存和列表一样,是一片连续的,python中字符串也是不可变的1. 查找子串索引index()和rindex()方法分别对应从左开始查找和从右开始查找子串:s = 'hello'print(s.index('l'))print(s.rind...

2022-07-11 17:01:06 402

原创 Python--数据类型、循环、运算符、容器的使用

由于最近有自动化测试的需要,对Python的语法不是很熟悉,Python的介绍就忽略了,下面开始Python基本语法的学习一、第一个Python程序下载安装Pycharm:https://www.jetbrains.com/pycharm/download/#section=windows创建工程比较简单,这边就直接开始撸码:python中的main函数使用if __name__ == '...

2022-07-07 15:13:35 368

原创 分布式--OpenResty+lua+Redis实现限流与防爬虫

上篇分布式--OpenResty+lua+Redis中,我们了解了nginx结合lua脚本的强大之处,lua结合反向代理,可以对http请求提前做一些处理,来保证业务服务器的安全性和单一职责原则,以及结合Redis提升读写缓存的效率与持久化能力一、实现限流DOS攻击是常见的攻击服务器的方式,限流可以做到防止暴力访问服务器,可以从流量方面进行限制,也可以从请求次数方面进行限制,下面为使用lua对...

2022-06-30 10:11:08 1189

原创 分布式--OpenResty+lua+Redis

前面我们已经使用了nginx,它拥有丰富的模块供我们使用,由于nginx是由c语言编写而成的,所以以前编写模块就必须使用c/c++,后来,有人将lua解释器继承到了nginx中,内建了ngx_lua模块,至此,nginx支持了lua一、OpenRestyOpenResty是基于nginx开源版本的一个扩展版本,集成了大量的lua库1. 添加repocd /etc/yum.repos.d/...

2022-06-28 16:12:05 561

原创 SpringBoot--操作Redis

在分布式--Redis的安装与数据类型的使用和分布式--Redis持久化策略、主从复制、集群中我们搭建了Redis的环境,并使用了主从复制、哨兵、集群等功能,Redis环境有了,接下来就需要Java后端对Redis进行操作一、SpringData启动器对Redis的操作也可以使用Jedis库,但Spring公司集成了对各种NoSQL数据库操作,封装成了对应的启动器,这个项目叫SpringDat...

2022-06-27 14:16:22 1050

原创 分布式--Redis持久化策略、主从复制、集群

一、持久化策略上篇提到Redis和memcached对比,还具有持久化功能,Redis支持两种持久化策略:策略描述优点缺点rdb默认模式,可以在指定间隔时间内生成数据快照,默认保存到dump.rdb文件中,每次重启会从该文件中读取数据保存在子进程中,对主进程影响小;rdb是紧凑型文件,恢复数据效率高于aof保存点之间redis崩溃,可能会丢失数据;子进程fork时,...

2022-06-27 10:33:45 230

原创 分布式--Redis的安装与数据类型的使用

Redis是一种NoSQL数据库,NoSQL的意思是不仅仅可以使用关系型数据库,由于关系型数据库的数据是存储在文件中,每次操作都是IO操作,而文件的IO操作又是比较缓慢的,NoSQL打破了原先一个表对应表字段,然后再存储数据的方式,将数据以特殊的方式存储,对程序运行效率有显著的提升目前市面上常见的NoSQL有以下几种:NoSQL描述memcached内存型数据库,所有数据存...

2022-06-24 17:11:38 139

原创 lua--协程、异常处理、面向对象

一、协程协程是单核的,是一个线程下执行的,所以每一时刻只会有一个协程在运行。线程一般由cpu调度,协程由用户调用1. 协程创建协程创建有两种方式1.1 coroutine.createcoroutine.create:创建协程 coroutine.resume:启动协程-- 创建协程cor1 = coroutine.create( function(a,b) ...

2022-06-22 13:45:37 650

原创 lua--迭代器、模块、元表

接着lua的使用,迭代器、模块和元表,元表为重点需要关注的内容一、迭代器pairs就是一个迭代器,它的返回值是key和value,下面自定义一个迭代器定义迭代器语法:function 迭代器名(终止值参数,初始值参数)end使用迭代器语法:for 第一个返回值,第二个返回值 in 迭代器名,终止值,初始值 doend-- 第一个参数:终止值 第二个参数:初始值function ...

2022-06-21 17:29:44 250

原创 lua--数据类型、变量、循环、函数、运算符的使用

lua是一种轻量级脚本语言,由c语言编写,设计lua的初衷是为了:嵌入到应用程序中,提供灵活的扩展和定制化功能lua官网:https://www.lua.org/ 可以从中下载安装lua一、第一个lua程序lua有两种编程方式:交互式和脚本式。脚本式就是编写脚本文件后执行,交互式是进入lua控制台进行编程,交互式在实际开发中并不会使用,下面都将使用脚本式进行编程1. 创建脚本文件lua...

2022-06-21 14:03:39 912

原创 分布式--Nginx入门

之前使用nginx,都是使用了它的反向代理功能,除了反向代理外,nginx还具备负载均衡、动静分离、高可用。这些都可以通过配置nginx来实现,以前对nginx的配置也是一知半解,下面来系统学习nginx的配置一、nginx配置1. 指令nginx的配置文件中,由一个个指令组成,指令分为两种:指令描述简单指令指令后面直接跟上值块指令指令后面使用{}包裹,内部含有...

2022-06-20 15:40:41 1012

原创 分布式--分布式文件系统FastDFS

大型项目中,文件服务器是很重要的角色,如果只有一台文件服务器,一旦当机,会产生很大影响,和业务服务器不同,文件服务器主要还是处理存放文件,和读取文件的功能专用分布式文件系统是基于google File System的思想,文件上传后不能修改。需要专门的api对文件进行访问,也可称作分布式文件存储服务。典型代表:MogileFS、FastDFS、TFSFastDFS由国人余庆开发,在chinaunix中担任FastDFS版主。FastDFS的架构如下:三个角色:由图可知,Tracker和Storage都支持集

2022-06-18 11:07:05 417

原创 分布式--使用Dubbo搭建分布式项目

在分布式架构中,我们会将不同功能模块化,部署到不同的服务器上,这时不同模块之间的通讯就由RPC框架完成,上次介绍了Dubbo的基本使用,知道了它基于Spring容器,因此在SpringBoot项目中可以很方便的使用一、项目配置还是利用经典的oracle部门员工表,MyBatis--初入MyBatis中可以找到创建表和数据的sql,实现mapper层和service层的分布式架构项目依赖关系如...

2022-06-17 10:58:21 1836

原创 分布式--Dubbo入门

Dubbo是阿里的内部RPC框架,于2011年对外提供,2019年捐献给Apache,至此由Apache维护更新,Dubbo依赖Spring,除了RPC访问外,还提供了服务治理功能,如:负载均衡、数据统计等结合上图,Dubbo主要分为5个角色:角色描述Provider服务提供者Container容器,即Spring容器,提供者借助Spring初始化R...

2022-06-17 09:04:51 144

原创 分布式--安装zookeeper、结合RMI实现RPC框架

对于后端大型项目开发,都会将功能模块拆分并部署在不同服务器上,那么不同模块之间的跨网络通讯是必不可少的,RPC协议就由此诞生,广义上的RPC就是跨网络通讯,具体的框架如Dubbo。从架构来说,RPC一般都带有注册中心,对客户端和服务端进行管理,服务端在注册中心提供对外接口,客户端获取服务端接口调用,实现跨网络通讯一、zookeeper安装zookeeper是分布式管理软件,一般作为R...

2022-06-16 10:48:29 325

原创 SpringBoot--MyBatis-Plus反向生成JavaBean

MyBatis本身支持逆向工程,来生成对应的实体类、映射文件以及接口,MyBatis-Plus对此进行了增强,还可以生成对应的service和mapper,并且自动使用了MyBatis-Plus的增强接口和类一、项目配置新建SpringBoot项目导入依赖:<dependency> <groupId>com.baomidou</grou...

2022-06-09 15:27:10 562

原创 SpringBoot--MyBatis-Plus

使用MyBatis进行数据库操作已经很方便了,MyBatis-Puls对MyBatis做了进一步的简化,用于常见的CURD操作一、项目配置1. 导入依赖安装插件:<dependency> <groupId>com.baomidou</groupId> <artifactId>mybat...

2022-06-02 06:32:02 197

原创 SpringBoot--文件上传

前面已经使用过SpringMVC的文件上传,SpringBoot中文件上传和SpringMVC中基本一样,只是少了一些依赖导入一、项目配置1. 导入依赖只需要导入文件服务器转存的依赖:<dependency> <groupId>com.sun.jersey</groupId> <artifactId&...

2022-06-01 15:07:40 278

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除