Scala - 高阶函数
文章浏览阅读579次,点赞3次,收藏8次。Scala 中允许使用高阶函数, 高阶函数可以使用其他函数作为参数,或者使用函数作为输出结果。高阶函数(Higher-Order Function)就是操作其他函数的函数。
Scala - 函数柯里化(Currying)
文章浏览阅读562次,点赞13次,收藏3次。柯里化(Currying)指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。_scala currying
实现尾递归优化
文章浏览阅读709次,点赞16次,收藏8次。当loop(1, 120)返回120时,就是最终的结果,不需要再从栈顶到栈底依次计算结果。这样做的优点是,无论n多大,都只会产生一个调用栈,节省了内存空间,也避免了栈溢出。,每次调用自身都会保存当前的参数和返回位置,等待下一次调用返回结果。为什么要进行尾递归优化,是因为尾递归可以减少调用栈的占用,从而避免栈溢出的风险,提高性能和内存利用率。当factorial(1)返回1时,才开始从栈顶到栈底依次计算结果,最后返回120。,每次调用自身都不会保存当前的参数和返回位置。这个函数在计算阶乘的过程中,_阶乘尾递归优化
Scala 类和对象
文章浏览阅读1.2k次,点赞16次,收藏16次。类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。_scala 类
Scala特殊符号含义
文章浏览阅读792次,点赞10次,收藏7次。用于字符串拼接, +=为可变数组添加元素,可以用来加数值也可以用来拼接字符串,取决于等式左边是什么类型,但是++=只能拼接字符串。::是右侧对象的方法,即它是对象b的方法,而::左侧的运算数是::方法的参数,所以1::b的含义是b.::(1)syntactic sugar 语法糖:把需要的参数、类型、函数最简化,由编译器来解析(去糖化)//如果不需要所有部件,则在不需要的部件使用_;用于连接两个Seq,eg:列表、集合、字符串、Map etc。b 有两个参数,调用是必须有两个 Int 类型的参数。_scala ::
Scala List(列表)
文章浏览阅读591次,点赞14次,收藏11次。Scala 列表类似于数组,它们所有元素的类型都相同,但是它们也有所不同:列表是不可变的,值一旦被定义了就不能改变,其次列表 具有递归的结构(也就是链接表结构)而数组不是。。列表的元素类型 T 可以写成 List[T]。
Scala Map(映射)
文章浏览阅读719次,点赞14次,收藏10次。Map(映射)是一种可迭代的键值对(key/value)结构。所有的值都可以通过键来获取。Map 中的键都是唯一的。Map 也叫哈希表(Hash tables)。Map 有两种类型,可变与不可变,区别在于可变对象可以修改它,而不可变对象不可以。默认情况下 Scala 使用不可变 Map。如果你需要使用可变集合,你需要显式的引入类在 Scala 中 你可以同时使用可变与不可变 Map,不可变的直接使用 Map,可变的使用 mutable.Map。定义 Map 时,需要为键值对定义类型。
IT老王:redis
文章浏览阅读1.1k次,点赞27次,收藏8次。Redis 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s,且 Redis 通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下: 字符串类型 String 哈希类型 Hash 列表类型 List 集合类型 Set 有序集合类型 sortedset。nosql这个技术门类的出现,更好的解决了这些问题,它告诉了世界不仅仅是sql。
Android studio模拟制作-简易的订餐交易小案例
文章浏览阅读452次,点赞4次,收藏5次。【代码】Android studio模拟制作-简易的订餐交易小案例。_android studio简单点餐界面
通过Android studio编写用户注册信息表单(实现用户交互)小demo,话不多说直接上小demo
文章浏览阅读481次。【代码】通过Android studio编写用户注册信息表单(实现用户交互)小demo,话不多说直接上小demo。_用android studio做一个表单
面向对象特性一:封装
文章浏览阅读1.1k次,点赞8次,收藏30次。提起封装,大家并不陌生。前面我们学习方法时,就提起过,将具体功能封装到方法中,学习对象时,也提过将方法封装在类中,其实这些都是封装。封装,它也是面向对象思想的特征之一。面向对象共有三个特征:封装,继承,多态。接下来我们具体学习封装。_面向对象 封装
面向对象特性二:继承
文章浏览阅读1k次,点赞26次,收藏27次。在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如公司中的研发部员工和维护部员工都属于员工,程序中便可以描述为研发部员工和维护部员工继承自员工,同理,JavaEE工程师和Android工程师继承自研发部员工,而维网络维护工程师和硬件维护工程师继承自维护部员工。这些员工之间会形成一个继承体系,具体如下图所示。_计算机可继承的关系
面向对象特性三:多态
文章浏览阅读1k次,点赞19次,收藏25次。主要原因是这些设备在生产的时候符合了这个插口的使用规则,否则将无法插入接口中,更无法使用。在开发中如果多个接口中存在相同方法,这时若有个类实现了这些接口,那么就要实现接口中的方法,由于接口中的方法是抽象方法,子类实现后也不会发生调用的不确定性。Java中多态的代码体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口)变量赋值。学习类的时候,知道类与类之间可以通过继承产生关系,接口和类之间可以通过实现产生关系,那么接口与接口之间会有什么关系。
RxJava3 异常操作符
文章浏览阅读491次。RxJava3 异常操作符:onErrorResumeNext、onErrorReturn、onErrorReturnItem、retry_onerrorresumenext
RxJava3案例 -- FlatMap+Map+OnErrorResumeNext 操作符联合应用场景
文章浏览阅读685次。该篇博客介绍了如何在Android开发中,利用RxJava的flatMap和map操作符,以及OnErrorResumeNext处理错误,来补充订单列表的售后服务状态信息。通过先请求订单列表,再根据订单号查询状态,最后将状态信息合并到订单实体中,确保即使状态接口出错,也不会影响订单列表的正常显示。
RxJava3案例 - FromIterable + Buffer操作符联合应用场景
文章浏览阅读601次。本文介绍了如何利用RxJava的FromIterable和Buffer操作符实现批量下载功能,每个下载请求需要服务器生成下载token。通过将请求依次发送并合并结果,避免了复杂的同步管理和状态跟踪。同时,针对可能出现的请求异常,提出了使用OnErrorResumeNext操作符进行默认值处理,确保下载流程的稳定性。
【转载】Post请求Body类型
文章浏览阅读4.2k次,点赞5次,收藏12次。Post请求的参数才放到请求体(Body)里面,常用类型有form-data、x-www-form-urlencoded、raw、binary,几种方式各有差别。_请求类型body
Android抓包-Charles弱网环境模拟
文章浏览阅读1.9k次,点赞2次,收藏6次。文章讨论了移动端产品在不同网络条件下的表现,特别是在弱网环境下可能出现的问题,如页面加载延迟、数据同步错误和应用崩溃等。为解决这些问题,文章介绍了如何使用Charles工具进行网络代理设置和模拟不同网络速度,以测试和优化应用在各种网络条件下的性能。
今日推荐
周排行