- 博客(52)
- 收藏
- 关注
原创 算法练习-驼峰式匹配
题目描述:(题目来源:LeetCode)如果我们可以将小写字母插入模式串pattern得到待查询项query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。)给定待查询列表queries,和模式串pattern,返回由布尔值组成的答案列表answer。只有在待查项queries[i] 与模式串pattern 匹配时,answer[i]才为 true,否则为 false。示例 1:输入:queries = ["FooBar","F...
2021-12-23 11:55:13 187
原创 算法练习-解析布尔表达式
题目描述:(题目来源:LeetCode)给你一个以字符串形式表述的布尔表达式(boolean) expression,返回该式的运算结果。有效的表达式需遵循以下约定:"t",运算结果为 True"f",运算结果为 False"!(expr)",运算过程为对内部表达式 expr 进行逻辑 非的运算(NOT)"&(expr1,expr2,...)",运算过程为对 2 个或以上内部表达式 expr1, expr2, ... 进行逻辑 与的运算(AND)"|(expr1,expr2,..
2021-12-22 16:16:42 2346
原创 计算机网络学习笔记-概述
计算机网络指的是运行在计算机上的应用程序之间的通信。1.按照网络的作用范围进行分类可以分为1.广域网 2.城域网 3.局域网 4.个人区域网(作用范围就不再赘述)2.计算机网络的性能指标速率:在计算机网络中,所发送的数据都采用的是数字形式。也就是一个二进制数字,也称为比特。因此,比特特使信息论中使用的信息量单位。网络技术中的速率指的是数据的传送速率,也称为数据率或者比特率。速率是计算机网络中最重要的一个性能指标。其单位是bit/s,当网络速率较高时,也尝尝在bit/s钱加上一个字母,例如,4
2021-12-13 17:30:25 2142
原创 Android学习笔记:AMS启动流程(Java)(API 30)
Android中的很多使用Java语言编写的service都是在system server中启动的。system server是在系统启动的时候zygote启动的第一个Java程序。AMS是在system server中的start BootStrap Services方法中启动的,Android系统中的很多关键服务都是在这个函数中启动的,其中有一段代码: ActivityTaskManagerService atm = mSystemServiceManager.startService(
2021-11-30 14:12:47 2575
原创 设计模式 学习笔记 建造者模式
建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。例如去肯德基,汉堡、可乐、炸鸡、薯条等是不会变,而其组合是经常变化的,生成出所谓的“套餐”,这种方式的优点是建造者独立,易扩展、便于控制细节风险。缺点是产品必须有共同点,范围有限制,如内部变化复杂,会有很多的建造类。这种模式与工厂模式的区别是:建造者模式更加关注与零件装配的顺序例:interface Item { fun name(): String fun Packing(): Packing fun price(
2021-10-06 15:09:41 100
原创 设计模式 学习笔记 单例模式
单例模式是最简单的设计模式之一,这种设计模式的意图就是保证一个类仅有一个实例,并提供一个访问它的全局访问点。已解决一个全局使用的类频繁的创建于销毁的问题,缺点是没有接口,不能继承,与单一职责原则冲突,一个类只应关系内部逻辑,而不关心外面怎么样来实例化。1,懒汉式,线程不安全是否lazy初始化:是是否多线程安全:否这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有加锁synchronized,所以严格意义上来说并不算单例模式。class SingleDemo pri
2021-10-06 14:26:46 202
原创 设计模式 学习笔记:抽象工厂模式
抽象工厂模式就相当于是工厂的工厂模式,是围绕一个超级工厂去创建其他工厂。这种类型的设计模式属于创建型模式。它的优点是1:当一个产品族中的多个对象被设计成一起工作时,他能保证客户端始终只使用一个产品族中的对象缺点是1:产品族扩展非常困难,要增加一个系列的某一产品,既要在抽象的Creator中增加代码,又要在具体里增加代码。例:1.为形状创建一个接口interface Shape{ fun draw()}2.创建实现接口的实体类class Rectangle: Shape{
2021-10-03 10:28:24 92
原创 设计模式 学习笔记: 工厂模式
工厂模式就相当于日常生活中的去买东西,如我们需要去买一辆车,我们不需要去知道车是怎么生产的,我们只需要告诉卖车的我们需什么车,我们就能买这车辆车,工厂模式就是这样,工厂模式的优点是1:当我们想创建一个对象时,只需要知道名称就好了2:拓展性高,如果想增加一个产品,只要扩展一个工厂类就可以了3:屏蔽产品的具体实现,调用者只关心产品的接口。当然工厂模式也有其缺陷1:每一次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统类的依赖。例
2021-10-03 10:01:17 78
原创 android学习笔记 viewpager2+fragmentstateAdapter实现多页面滑动
先在fragment或者activity中放置一个viewpager2然后在创建一个fragmentstateAdapter的子类 重写里面的 createFragment()、getItemCount()、containsItem()和getItemId()四个方法class DemoCollectionAdapter(fragment: Fragment,val fragmentlist:List<Fragment>) : FragmentStateAdapter(frag..
2021-09-19 14:01:55 6447
原创 生命周期感知型组件的最佳做法
1.使用界面控制器(activity和fragment)尽可能保持精简。他们不应该视图获取自己的数据,而应该使用ViewModel执行此操作,并观察LiveData对象以将更改体现到视图中2.设法编写数据驱动型界面,对于此类界面,界面控制器的责任是随着数据更改而更新视图,或者将用户操作通知给ViewModel3.将数据逻辑放在ViewModel类中。ViewModel应充当界面控制器与应用其余部分之间的连接器。不过要注意,ViewModel不负责获取数据(例如,从网络获取)。但是,ViewModel
2021-09-02 16:42:56 89
原创 android学习笔记:activity(7)与Fragment通信
1.当需要在多个Fragment之间或Fragment与其宿主activity之间共享数据时,ViewModel是理想的选择,ViewModel对象可存储和管理界面数据2.这一章需要多多理解,有很多不懂的地方
2021-09-02 10:37:02 131
原创 android学习笔记:activity(7)保存与Fragment相关的状态
1.各种android系统操作都会影响Fragment的状态,为了确保用户的状态得到各种保存,Android框架会自动保存和恢复Fragment和返回栈堆。下表列出了会导致Fragment丢失状态的操作,以及各种类型的状态是否会在发生这些更改后持续存在。表中提及的状态类型如下:1.变量:Fragment中的局部变量2.视图状态:Fragment中一个或多个视图所拥有的任何数据3.SaveState:此Fragment实例固有的数据,这些数据应保存在onSaveInstanceState()中
2021-09-02 09:53:40 274
原创 android学习笔记:activity(7)-fragment lifecycle
1.To manage lifecycle,Fragment implements(实现)LifecycleOwner,exposing a Lifecycle object that you can access through the getLifecycle() method.2.The onAttach() callback is invoked(调用) when the fragment has been added to a FragmentManager and is attached(附
2021-09-01 19:00:05 458
原创 android学习笔记:activity(8)-navigate between fragments using animations
1.The Fragment API provides two ways to use motion(运动) effects and transformations to visually(形象的) connect fragments during navigation.One of these is the Animation Framework,which uses both Animation and Animator(动画片制作者).The others the Transition Framewo
2021-09-01 17:07:05 1933
原创 android学习笔记:activity(7)-fragment transactions
1.EachFragmentTransactionshould usesetReorderingAllowed(true),特别是对于行为兼容性,默认情况下不启用重新排序标志。但是,需要允许FragmentManager正确执行您的FragmentTransaction,特别是当它在后堆栈上操作并运行动画和转换时。启用该标志可确保如果同时执行多个事务,则任何中间片段(即添加后立即替换的片段)都不会经历生命周期更改,也不会执行其动画或转换。请注意,此标志影响事务的初始执行和使用popBackStack(...
2021-08-30 18:35:04 364
原创 android学习笔记:activity(6)-fragment manager
1.FragmentManager类负责对应用的 Fragment 执行一些操作,如添加、移除或替换它们,以及将它们添加到返回堆栈。2.每个FragmentActivity及其子类(如AppCompatActivity)都可以通过getSupportFragment()方法访问FragmentManager3.fragment也能够托管一个或多个子fragment,在fragment内,可以通过getChildFragmentManager()获取对管理Fragment子级的FragmentMan.
2021-08-30 17:30:00 1418
原创 android学习笔记:activity(6)
1.fragment表示应用界面中可重复使用的一部分。fragment定义和管理自己的布局,具有自己的生命周期,并且可以处理自己的输入事件。Fragment 不能独立存在,而是必须由 Activity 或另一个 Fragment 托管。Fragment 的视图层次结构会成为宿主的视图层次结构的一部分,或附加到宿主的视图层次结构。2.当activity处于started生命周期状态或更高的状态时,可以添加、替换或移除fragment。可以将这些更改记录保留在由activity管理的返回栈中,从而允许撤销这
2021-08-30 14:03:09 2293
原创 android学习笔记:activity(5)
1.parcelable和bundle对象可跨进程边界使用,例如与IPC/Binder事务之间,带有intent的activity之间等,还可以用来存储跨配置更改的瞬时状态2.当使用intent对象进行数据传递时,操作系统会将intent的基础bundle打包。然后,操作系统会创建新的activity,将数据拆包,并将intent传递给新的activity。(建议使用bundle类为intent对象设置操作系统已知的基元)(通过intent发送数据时,应小心地将数据大小限制为几kb。发送过多的数据会导致
2021-08-30 13:04:46 133
原创 android学习笔记:activity(4)
1.必须要了解不同的应用组件(特别是activity、service、broadcastreceiver)对应用进程的生命周期有何影响,为了确定在内存不足时应该终止哪些进程,Android会根据每个进程中运行的组件以及这些组件的状态,将它们放入“重要性层次结构”。这些进程类型包括(按重要性排序)前台进程:是用户目前执行操作所需的进程。在不同情况下,进程可能会因为其所包含的各种应用组件而被视为前台进程。如果以下任一条件成立,则进程会被认为位于前台 它正在用...
2021-08-30 11:27:31 9350
原创 android学习笔记:activity(3)
1.任务是用户在执行某项工作时与之互动的一系类activity的集合。这些activity按照每个activity打开的顺序排列在一个返回栈堆中2.Android7.0(API级别24)及更高版本支持多窗口环境,而在这种环境下,系统会单独管理每个窗口的任务;而每个窗口可能包含多项任务3.在当前activity启动另一个activity时,新的activity将被推送到栈顶并获得焦点,上一个activity任保留在栈堆中,但会停止。当activity停止时,系统会保留其界面的当前状态。当用户按返回返回
2021-08-29 15:26:14 379
原创 android学习笔记:activity(2)
1.用户触发和系统触发的不同事件会导致Activity从一个状态转化到另一个状态2.很多事件会触发配置更改。例如横屏和竖屏之间的方向变化,其他情况,如语言或输入设备的改变等,也可能导致配置更改,当配置发生更改时,activity会被销毁并重新创建。原始的activity实例将会触发onpause(),onstop(),ondestroy()回调,系统将创建新的Activity实例并触发onCreate(),onStart(),onResume()回调,结合使用viewmodles,onSvaeInsta
2021-08-29 13:04:35 1688
原创 android学习笔记:activity
1.oncreate(),onstart,onresume(),onpouse(),onstop(),ondistory(),如果您有一个生命周期感知型组件与您的 Activity 生命周期相关联,该组件将收到相应的ON_CREATE,ON_START事件。系统将调用带有 @OnLifecycleEvent 注释的方法,以使您的生命周期感知型组件可以执行已创建状态所需的任何设置代码。 @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) fun initi.
2021-08-29 11:30:52 96
原创 Kotlin 学习笔记 七:面向对象(下)
1.扩展方法中的this与成员方法中的this一样,也代表调用该方法的对象2.Kotlin完全支持直接对泛型类进行拓展:fun <T>List<T>.shuffle():List<T>{}3.Kotlin允许属性拓展,但是拓展的属性只能是计算属性,因此有如下限制拓展的属性不能有初始值不能用field关键字显示访问幕后字段拓展只读属性必须提供getter方法:拓展读写属性必须提供getter、setter方法。此外由于拓展属性的本质就是getter和
2021-08-26 11:32:48 129
原创 Kotlin 学习笔记 六:面向对象(上)
1.this关键字总是指向调用该方法的对象2.大部分时候。一个方法访问该类中定义的其他方法、属性时加不加this前缀,效果时一样的,但是省略this前缀只是一种假象而已.实际上在编译的时候这个this会自动添加上3.方法是类或对象行为特征的抽象,方法是类或对象最重要的组成部分4.kotlin标准库提供了pair和triple两个数据量,pair类可以包含任意两个类型数据,triple类可以包含三个5.在Kotlin类中定义属性后,被Kotlin程序使用时只能使用点语法访问属性;被Java程序
2021-08-25 14:59:13 175
原创 Kotlin 学习笔记 五:函数和lambda表达式
注意事项:1:只要在一个函数的函数体实现中再次调用了函数本身,就是递归函数。递归函数一定要向已知方向进行2.函数只返回单个表达式,则可以用等号=即可 fun area(x:Double):Double =x,而对于单表达式函数而言,编译器可以自动推断函数的返回值类型,因此也可以改为fun area(x:Double)=x...
2021-08-25 13:07:06 273
原创 Android思考:Android回调函数
回调函数是Android中的一个重要组成部分,Android的点击事件等都离不开回调函数,那么回调函数到底是什么呢,其实回调函数就是从日常生活中的映射,他分两种,一种是同步回调,一种是异步回调,同步回调就相当于是去菜鸟驿站取快递,咱们告诉取货员取货码是多少,取货员去取快递,咱就在门口等,等取完以后咱再去做别的事情,异步回调就相当于是寄快递,咱告诉快递员邮寄地址,电话啥的,咱就不用管了,快递员会帮忙完成寄快递的所有事情,等快递寄完以后,会告诉咱快递已经寄好了,这时候咱在考虑要做什么事情,或者不做。而Andro
2021-08-25 10:50:33 249
原创 Kotlin 学习笔记 四:数组和集合
注意事项:1.由于Array<T>类要求它的元素必须是引用类型,因此如果程序将基本类型的值存入Array<T>中,Kotlin会将这些基本类型的值自动装箱成包装类的实例,然后再添加到数组内2.Kotlin的数组提供了一个indices属性,该属性可以立即返回数组的索引区间,通过索引区间便遍历的实现具有更好的性能,因为Kotlin会将在底层将其编译成根据内存地址来访问数组元素,二不需要额外创建区间对象var books = arrayof("joqweu","djoqwue
2021-08-23 23:05:37 211
原创 Kotlin 学习笔记 三:流程控制
注意事项:1.使用break、continue语句不仅可以结束其所在的循环,还可以字节结束其外层循环。此时需要在break,continue后紧跟一个@标签,这个标签用于标识结束哪个循环
2021-08-23 18:57:02 81
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人