https://gravatar.cat.net/avatar/08cf681fb7c6ad1b4fe70a8269c2103c?s=96&d=mp&r=g

LengYue's Blog

0.0

给LengYue's Blog打分

start start start start start

感谢您打了2

详情

全站展示位

搭建为知笔记Docker版,以及注意事项 |

好久没有关注为知笔记了,最近考虑迁移笔记的时候,看了一下各大笔记应用,开源笔记要么不支持全平台,要么客户端完善度或者同步问题不行。突然发现为知笔记支持docker版,可以自己部署,客户端还是使用官方客户端。 安装docker docker version > /dev/null || curl -fsSL get.docker.com | bash service docker restart 启动为知笔记docker 创建文件夹,跟官方保持一致,我们也在主目录创建文件 cd ~ mkdir wizdata 启动,如果你打算使用nginx,或者配置ssl,则需要把端口调整一下。比如我的6789 docker run --name wiz --restart=always -it -d -v ~/wizdata:/wiz/storage -v /etc/localtime:/etc/localtime -p 80:80 -p 9269:9269/udp wiznote/wizserver 接下来会自动下载并运行,喝杯咖啡,等一下就可以了。 或者,可以在这个时候配置Nginx 配置Nginx 开启SSL ssl_certificate XXX/fullchain.pem; #你的证书地址 ssl_certificate_key XXX/privkey.pem; #你的证书地址 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5:!EXP; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; error_page 497 配置云存储 默认笔记是保存在本地的,你可以使用本地+云同步的方式,或者像我一样直接使用云储存, 配置阿里OSS。。。

推荐

Android清除本地数据缓存代码 |

/* 文 件 名: DataCleanManager.java 描 述: 主要功能有清除内/外缓存,清除数据库,清除sharedPreference,清除files和清 除自定义目录 */

在AndroidManifest.xml文件中的android:windowSoftInputMode属性使用| keyboard,squeezing,layout |

The AndroidManifest.xml File <activity android:windowSoftInputMode=["stateUnspecified", "stateUnchanged", "stateHidden", "stateAlwaysHidden", "stateVisible", "stateAlwaysVisible", "adjustUnspecified", "adjustResize", "adjustPan"] …… > </activity>

搭建为知笔记Docker版,以及注意事项 |

好久没有关注为知笔记了,最近考虑迁移笔记的时候,看了一下各大笔记应用,开源笔记要么不支持全平台,要么客户端完善度或者同步问题不行。突然发现为知笔记支持docker版,可以自己部署,客户端还是使用官方客户端。 安装docker docker version > /dev/null || curl -fsSL get.docker.com | bash service docker restart 启动为知笔记docker 创建文件夹,跟官方保持一致,我们也在主目录创建文件 cd ~ mkdir wizdata 启动,如果你打算使用nginx,或者配置ssl,则需要把端口调整一下。比如我的6789 docker run --name wiz --restart=always -it -d -v ~/wizdata:/wiz/storage -v /etc/localtime:/etc/localtime -p 80:80 -p 9269:9269/udp wiznote/wizserver 接下来会自动下载并运行,喝杯咖啡,等一下就可以了。 或者,可以在这个时候配置Nginx 配置Nginx 开启SSL ssl_certificate XXX/fullchain.pem; #你的证书地址 ssl_certificate_key XXX/privkey.pem; #你的证书地址 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5:!EXP; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; error_page 497 配置云存储 默认笔记是保存在本地的,你可以使用本地+云同步的方式,或者像我一样直接使用云储存, 配置阿里OSS

IOS的专利?Android也能流畅实现毛玻璃效果效果 |

背景介绍 上图就是我们在IOS设备上经常能够见到的毛玻璃(高斯模糊)效果。不得不说,这种效果在适合的场景下使用,能够获得绝佳的美感。但是鉴于Android设备性能和兼容性问题,我们通常很难在Android设备上见到这种效果。 但这并不是IOS的专利效果,Android也能轻松流畅的实现。本篇文章将会详细的讲解如何实现。 Android中的高斯模糊 我为什么选择RenderScript实现高斯模糊 目前Android设备上实现高斯模糊效果的方式通常有: 云端处理,移动客户端直接从网络获取处理好的图片。这种方式局限性很大。 FastBlur等开源库。这种方式兼容性不错,但是效率极低。 c实现。不懂c的理解困难。 OpenGL实现。效果很好,但电量和内存消耗比较高。 RenderScript实现。效果略弱于第4种,但是使用方便,速度很快,性能消耗在可接受范围内,加上Google的兼容性解决方案,可以说是能够作为优先考虑的方式。 RenderScript RenderScript主要在android中的对图形进行处理,RenderScript采用C99语法进行编写,主要优势在于性能较高。在Api11的时候被加入到Android中。同时,Google提供了android.support.v8.renderscript兼容包,能够实现更低版本的兼容。 RenderScript提供了一个用于实现高斯模糊的封装类ScriptIntrinsicBlur ,这货在Api17才被收编Android所以在不使用兼容包的情况下只能兼容到4.2的设备。但是,我们有兼容包啊向下兼容不是梦。 准备阶段 ###引入兼容包 方法很简单,只需在build.gradle中加入: defaultConfig { 。 。 。 //就是这么简单 renderscriptTargetApi 19 renderscriptSupportModeEnabled true } 你以为这样就好了?nonono。 由于一些坑人的厂商会深度定制Android系统,所以一些必要的依赖文件会被它们直接去掉!!这导致一些型号的设备上调用RenderScriptd的部分方法时会报错。所以我们得加上这些可能丢失的文件。 其实也简单,打开android_sdk/build-tools/选择19以上版本/renderscript/lib/packaged我们可以看见3个包含.os文件的文件夹。 直接复制这三个文件加到项目工程的jniLibs 包下。什么?找不见jniLibs包?自己建一个喽。 注意,这时候,我们很可能遇到一个崩溃,找不到.os文件。莫慌莫慌… 在build.gradle的android{}中加入: sourceSets { main { jniLibs.srcDirs = ['libs'] } } 没完没了!最后一步只针对使用的混淆的同学,需要在混淆中加入: -keep class android.support.v8.renderscript.** { *; } 实现高斯模糊 终于可以开始写代码了。先来看看效果。下图高斯模糊半径逐渐增大的效果,请忽略渣渣录屏效果 将ScriptIntrinsicBlur封装成工具类。咱们代码里接着款 import android.support.v8.renderscript.*; //这句很重要啊,v8包的,不然不能向下兼容啊。 public class RenderScriptGaussianBlur { private RenderScript rs; public RenderScriptGaussianBlur(Context context) { // 创建RenderScript内核对象 this.

心灵鸡汤

006、《老人与乌龟》

有个老人到了90岁还觉得没活够,于是去山神庙求山神,山神问:“你只是祈求长寿吗?”他说:“是的。”山神说:“那么你就放心地回去吧。”老人往回走的时候,身子逐渐缩小,变成了一只乌龟,这个龟慢腾腾往回爬行的时候碰见石缝里的另一只龟,那只龟对他说:“我原先也是一个祈求长寿的人,山神把我变成乌龟后度过了漫长的三百年,除了僵硬的躯壳和微弱的呼吸外,一点生活乐趣都没有,想死也死不了,看来痛痛快快做人过三天也比没有意义的三百年强啊。”

列表展示

主站展示位

使用 Rust 开发 Android 底层库,并简化 Java 与 Rust 相互操作 |

前言 提到JNI,大家都会想到C,C++.不过如今Rust又给我们增加了一个选项,借助rust的jni库( 关于 Rust 环境搭建、配置 Rust Android targets、linker,以及如何在 Android 上如何直接运行 Rust 代码,可以看上篇文章 将 Rust 编译为可在 Android 上使用的二进制文件 本文主要介绍如何使用 Rust 借助 J4RS 方便快捷的编写 Android Jni: 阅读本文,你需要具备、了解一下知识: Android 编写 JNI 的基本流程 Rust 代码基本的阅读能力 Android 开发的基本流程 Android 集成 Rust 配置 Rust Android Gradle Plugin Rust Android Gradle Plugin 这个 Gradle 插件的主要功能是帮你自动配置 Rust-Android 交叉编译,并将编译产物自动添加到 Android 项目。 这并不是必须的,你同样可以手动 build rust 项目。然后手动复制到 Android Studio 中使用。 因为我使用的是最新版本的 gradle , 采用 Kotlin kts 编写。在语法上稍有不同,旧版本写法可以在项目的 README 查看

将 Rust 编译为可在 Android 上使用的二进制文件 |

Rust 语言已经成为了越来越受欢迎的一种系统级编程语言。它被广泛使用来开发高性能的系统软件,模块化的库,以及并发和并行计算应用程序。不仅如此,它还可以为其他平台和设备生成二进制代码,包括 Android 操作系统。如果你也想在 Android 上利用 Rust 开发应用程序 创建Rust项目 首先创建 Rust 项目 cargo new rustDemo 为了跟前文(使用 GoMobile 创建 Android、iOS 跨平台 WebSocket Library)呼应,我们这里也使用 Rust 借助 tokio 写一个 WebSocket Server。 main.rs use async_trait::async_trait; use ezsockets::Error; use ezsockets::Server; use ezsockets::Socket; use std::net::SocketAddr; type SessionID = u16; type Session = ezsockets::Session<SessionID, ()>; struct EchoServer {} #[async_trait] impl ezsockets::ServerExt for EchoServer { type Session = EchoSession; type Call = (); async fn on_connect( &mut self, socket: Socket, address: SocketAddr, _args: (), ) -> Result<Session, Error> { let id = address.

使用 GoMobile 创建 Android、iOS 跨平台 WebSocket Library |

GoMobile 是 Go 语言的扩展,将 Go 代码编译为可在移动设备上运行的静态库或动态库,可在 iOS 和 Android 平台上使用。本文介绍如何使用 GoMobile 创建 Android 应用并在其中调用 Go 语言 WebSocket。 安装 GoMobile go install golang.org/x/mobile/cmd/gomobile@latest 创建 Go WebSocket 库 首先创建一个 Go WebSocket 服务端: mkdir go-websocket cd go-websocket go mod init go-socket // 使用 gomobile 初始 gomobile init 如果你无法使用 gomobile init 请检查 GOBIN 是否加入环境变量 我们使用在go 中广泛使用的gorilla/websocket来创建websocket服务端: go get github.com/gorilla/websocket 编写WebSocket服务端代码: package socket import ( "flag" "log" "net/

慧极必伤,情深不寿,强极则辱,谦谦君子,温润如玉 |

慧极必伤,情深不寿,强极则辱,谦谦君子,温润如玉: 这是金先生<书剑>里,乾隆送陈家洛佩玉上的刻字。大意:一个人太聪明智慧便会对自己有损伤,过于沉迷和执着的感情不会持续长久,过于突出的人势必会受到屈辱,君子应该如玉一般的温润沉稳,含蓄坚毅,不张扬,却自显价值。 金庸在《书剑恩仇录》中,借乾隆送陈家洛佩玉上之刻字,道出自己人生特别推崇的境界,正是这四句十六字。 但很有意思的是,如此佳句居然没有人能查其出处(人们都认为其境界颇深定有出处)。有人查遍孔孟老庄,以及四书五经,均无所获,故将此难题贴于网上,一年多来终无所获,故被称为“武侠与国文的一个绝题”。其中,最接近的答案是《国风·秦风·小戎》里有“言念君子,温其如玉。”,《易经》第十五卦中有“谦谦君子”,但仅此而已。 金庸“谦谦君子,温润如玉”之说不知其出处,但从《书剑》所蕴涵的他早期的人生 理想来看,这似乎是金庸所推崇的一种人生境界。 飞扬跳脱的个性不属于谦谦君子,因为,玉的光芒是凛于内而非形于外的。雍容自若的神采,豁达潇洒的风度,不露锋芒,不事张扬,无大悲大喜,无偏执激狂,生命的状态在这里呈现出一种成熟的圆润。 佛家有一个词,圆融,是跟这种成熟的圆润颇为相似的境界。是以佛家讲求戒嗔、戒痴、戒贪,无欲无求,尔后能不动声色、不滞于心。谦谦君子的圆润亦同此理。 而要达到这种境界是需要修炼的。修炼是一个很奇妙的词语,人生在世实质上就是一个修炼的过程,只不过并不是人人都可以修成正果。 修成佛、修成仙是尘世之人遥不可及的梦想,但磨去棱角、收敛光华、修成谦谦君子却并非太难的事情。容人之量是修成谦谦君子的前提。斤斤计较、小肚鸡肠修不成君子,开阔的心胸、通透的眼光,才是君子的气量。 于是,我们常常可以看到这样的人,荣损得失面前,总能一笑置之。正所谓,宠辱不惊,闲看庭前花开花落;去留无意,漫随天外云卷云舒。 剑有双刃,谦谦君子亲切柔和,少了无拘无束的冲动莽撞,却也少了率性率真的刚猛豪放。正如一个人磨砺的过程一样,成熟的获得是以天真童趣的无可追回为代价的。 当然,“情深不寿,强极则辱”的背后,似乎也透着一种淡淡的无奈。试想,人活一世,谁人不想追求恒久?只是恒久不可强求,于是退一步海阔天空。这何尝不是一种迂回的战术、以求得宛转的余地?谁能说这种淡淡的无奈不是一种生存的智慧。

GetX Router 设置返回值 |

通过别名导航: var result = await Get.toNamed(Routes.WEB_VIEW, arguments: { "url": item?.link ?? "", "index": index, "collect": item?.collect ?? false, }); 返回值: Get.back(result: {"collect": collect.value}); 完整代码: () async { /// 导航到新的界面 var result = await Get.toNamed(Routes.WEB_VIEW, arguments: { "url": item?.link ?? "", "index": index, "collect": item?.collect ?? false, }); /// 接收返回值 bool collect = result["collect"]; }

Android中GPS定位(获取经纬度) |

AndroidGPS定位问题,众所周知是一个蛮麻烦的问题.当初我是新手,现在我也是新手,也搞了我头大,网上搜索了很多的例子,一直处于僵持阶段,而现在终于搞定了,因为我现在只需要获取到经纬度就可以了,反正获取经纬度可以从我这篇文章中看看;上代码。 在AndroidManifest.xml中加入权限: <uses-permission android:name=”android.permission.ACCESSFINELOCATION”/> <uses-permission android:name=”android.permission.ACCESSCOARSELOCATION”/>

【MongoDB for Java】Java操作MongoDB |

一、准备工作 1、 首先,下载mongoDB对Java支持的驱动包 驱动包下载地址: mongoDB对Java的相关支持、技术: 驱动源码下载: 在线查看源码:

unable to connect to 5555: connection refused |

I had the same issue since the android 6 upgrading. I noticed that for some reason the device is playing “hard to get” when you try to contact it over WIFI. Try these following steps: Make sure that Aggressive Wi-Fi to Cellular handover under Networking section in the device’s developer options is turned off. ping continuously from your pc to the device to make sure it’s not in network idle mode ping -t 192.

Flutter中嵌入Native组件 |

Flutter官方提供的控件AndroidView、UiKitView就是一种比较优雅的解决方案了。这里做了一个简单的嵌入TextView的demo(使用这种方式会增加性能上的开销,应该尽量避免使用) 使用方式 native端 跟MethodChannel的使用方法类似,在native侧,我们实现一个PlatformViewFactory(iOS是FlutterPlatformViewFactory),在create方法中,使用平台方法创建View返回。 override fun create(context: Context?, i: Int, any: Any?): PlatformView { return object : PlatformView { override fun getView(): View { val text = TextView(context) text.layoutParams = ViewGroup.LayoutParams(SizeUtils.dp2px(200f), SizeUtils.dp2px(200f)) text.apply { setText("Android View") setTextColor(Color.BLUE) setBackgroundColor(Color.RED) } return text } override fun dispose() { } } } func create(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?

利用Android源码,轻松实现汉字转拼音功能 |

今天和大家分享一个从Android系统源代码提取出来的汉字转成拼音实现方案,只要一个类,560多行代码就可以让你轻松实现汉字转成拼音的功能,且无需其他任何第三方依赖。

android根据银行卡卡号判断银行 |

根据银行卡号判断是哪个银行的卡,依据是银行卡号的前6位数,称之为bin号。 我们把bin号转化为长整形,再把各个银行卡的bin号做成有序表。通过二分查找的方法,找到bin号在有序表的位置,然后读出银行卡的信息。

未命名 |

她是江南一带有名的妓 他是战功显赫的将军 前几日他失去妻子 在歌妓面前喝的烂醉 把妓当成她 第二天看到床上的落红 将军嘲笑妓 终究是婊子 他穿衣离去 妓九岁被卖到青楼 几年来只卖艺不卖身 直到那晚遇到他 她羞涩 笨拙 把自己给了他 他凶狠 粗鲁 嘴里叫着妻子的名字 妓只喜欢了这一个人 却喜欢了一辈子 将军在外战沙场 歌姬城内待他归 将军入城 从不多看一眼 只是在深夜敲开她的房门 他在外时日久 她抱着他褪下他的衣服 细数他身上的疤痕 他抱她上床 没有情话 只有缠绵 她轻触他疤痕 你娶我吧 我想给你一个家 将军穿好衣服起身离去 留她一人愣愣的 看他离去的方向 做妓的最怕有了感情 可她偏偏中了这世间最愁的毒 妓说 我不想再做这行了 那夜她主动寻他 月光下她红色的唇格外迷人 那夜她用尽万种风情 将军你吻我 将军毫不动意 一夜缠绵 她离去 妓知道将军不会寻她 毕竟她只是个妓 一日为妓 终身为娼 不久将军带兵出征 两军交战 在敌方的主帅身旁发现一身红衣的她 她一身红衣依靠在另一个男人怀里 将军满眼尽是讽刺 战争的号角吹响 她藏在袖中的匕首直刺敌将心脏 敌将并不惊讶 像是早已预料 将军愣住 这是她第一次看到他除了冷漠意外的表情 战火硝烟 她闭上双眼 妓知道 他安全了 从此以后他都安全了 她可以放心了 也总算帮了他一次

已经有女朋友了,又遇到更喜欢的对象怎么办? |

在知乎上开到这个问题,我只能说提问题的人,你还搞不懂“喜欢一个人”和“对一个人有感情”之间的区别。 我举两个不恰当的例子。比如说养狗,虚构两个情景。 情景一:  某天你去宠物市场闲逛,发现有一只泰迪很可爱,伶俐活泼聪明漂亮,还特别粘着你。你当时就动心了,打算买下它。  一问价格,要1500块钱。你身上没带这么多钱,也没带银行卡。当时是下午了,宠物市场马上要关门了。你只能第二天来买了。  于是你嘱咐店主千万不要卖给别人。一定要等你明天早上过来卖给你。店主答应了。 可你回家了还是不放心。晚上在床上都睡不着觉。生怕店主不守信用,把这狗狗卖给别人了。那感觉,就像是爱上了一个姑娘一样。  第二天一早,你就揣了1500块钱奔向宠物市场。  这次,你是从市场的另外一个门进去的,还没有走到昨天那个摊位,你突然发现了另外一只泰迪,比昨天那只更漂亮,更聪明,更可爱,更粘你,价格还更便宜,只要1200元。  我相信,只要你智商正常,你都会选择买1200的这一只。虽然,你为了1500的那一只牵挂了一晚上。但那又如何,遇上更好的,你立刻就移情别恋了。 我们都是这样的人。 因为,我们对那只泰迪,没有感情。 情景二:  某雨天你下班回家,看到一只流浪的小狗趴在你的家门前瑟瑟发抖。你一下子恻隐之心上来了,把它抱回家,给它洗澡,给它喂食,让它睡在毛毯子上。  从此,它就成了你的家人。  接下来的一年,每天早上是它叫你起床。每天你疲惫的下班回到家中,是它在门口等着你。你出去逛街,它走在你前面。有小偷偷你的包,它疯狂吠叫。你看电视,它就睡在你腿上。你上网,它就趴在你脚尖。 它已经成为了你生活的一部分。  一年后。有一个人,也不知道脑子怎么进水了,想要拿一只名贵的纯种狗狗来换你这只不值钱的收养的流浪狗。 你会换吗? 如果是我,当然不换。 因为我对它有感情了。 这就是感情。

⾃定义布局流程 |

⾃定义布局流程 布局过程 确定每个 View 的位置和尺⼨ 作⽤:为绘制和触摸范围做⽀持 绘制:知道往哪⾥绘制 触摸反馈:知道⽤户点的是哪⾥– 流程 从整体看 测量流程:从根 View 递归调⽤每⼀级⼦ View 的 measure() ⽅法,对它们进⾏测量 布局流程:从根 View 递归调⽤每⼀级⼦ View 的 layout() ⽅法,把测量过程得出的⼦ View 的位置和尺⼨传给⼦ View,⼦ View 保存 为什么要分两个流程? 从个体看,对于每个 View: 运⾏前,开发者在 xml ⽂件⾥写⼊对 View 的布局要求 layout_xxx ⽗ View 在⾃⼰的 onMeasure() 中,根据开发者在 xml 中写的对⼦ View 的要求,和⾃⼰的可⽤空间,得出对⼦ View 的具体尺⼨要求

Android实现图片缩放与旋转 |

本文使用Matrix实现Android实现图片缩放与旋转。示例代码如下: package com.android.matrix;import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ImageView.ScaleType; /** * Android实现图片缩放与旋转。 * @author Administrator * */ public class MatixActivity extends Activity { public void onCreate(Bundle icicle) { super.onCreate(icicle); setTitle("Android实现图片缩放与旋转。"); LinearLayout linLayout = new LinearLayout(this); //加载需要操作的图片,这里是一张图片 Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),R.drawable.r); //获取这个图片的宽和高 int width = bitmapOrg.

Connection with adb was interrupted.解决办法 |

[2012-10-16 10:49:35 – My First App] [2012-10-16 10:49:35 – My First App] Android Launch! [2012-10-16 10:49:35 – My First App] Connection with adb was interrupted. [2012-10-16 10:49:35 – My First App] 0 attempts have been made to reconnect. [2012-10-16 10:49:35 – My First App] You may want to manually restart adb from the Devices view.

Android Manifest之receiver元素中文注释 |

语法(SYNTAX): <receiver android:enabled=["true" | "false"] android:exported=["true" | "false"] android:icon="drawable resource" android:label="string resource" android:name="string" android:permission="string" android:process="string" > . . . </receiver>

RxJava操作符分类 |

ReactiveX的每种编程语言的实现都实现了一组操作符的集合。不同的实现之间有很多重叠的部分,也有一些操作符只存在特定的实现中。每种实现都倾向于用那种编程语言中他们熟悉的上下文中相似的方法给这些操作符命名。 本文首先会给出ReactiveX的核心操作符列表和对应的文档链接,后面还有一个决策树用于帮助你根据具体的场景选择合适的操作符。最后有一个语言特定实现的按字母排序的操作符列表。 如果你想实现你自己的操作符,可以参考这里:实现自定义操作符 创建操作 用于创建Observable的操作符 Create — 通过调用观察者的方法从头创建一个Observable Defer — 在观察者订阅之前不创建这个Observable,为每一个观察者创建一个新的Observable Empty/Never/Throw — 创建行为受限的特殊Observable From — 将其它的对象或数据结构转换为Observable Interval — 创建一个定时发射整数序列的Observable Just — 将对象或者对象集合转换为一个会发射这些对象的Observable Range — 创建发射指定范围的整数序列的Observable Repeat — 创建重复发射特定的数据或数据序列的Observable Start — 创建发射一个函数的返回值的Observable Timer — 创建在一个指定的延迟之后发射单个数据的Observable 变换操作 这些操作符可用于对Observable发射的数据进行变换,详细解释可以看每个操作符的文档 uffer — 缓存,可以简单的理解为缓存,它定期从Observable收集数据到一个集合,然后把这些数据集合打包发射,而不是一次发射一个 latMap — 扁平映射,将Observable发射的数据变换为Observables集合,然后将这些Observable发射的数据平坦化的放进一个单独的Observable,可以认为是一个将嵌套的数据结构展开的过程。 roupBy — 分组,将原来的Observable分拆为Observable集合,将原始Observable发射的数据按Key分组,每一个Observable发射一组不同的数据 ap — 映射,通过对序列的每一项都应用一个函数变换Observable发射的数据,实质是对序列中的每一项执行一个函数,函数的参数就是这个数据项 can — 扫描,对Observable发射的每一项数据应用一个函数,然后按顺序依次发射这些值 indow — 窗口,定期将来自Observable的数据分拆成一些Observable窗口,然后发射这些窗口,而不是每次发射一项。类似于Buffer,但Buffer发射的是数据,Window发射的是Observable,每一个Observable发射原始Observable的数据的一个子集 过滤操作 这些操作符用于从Observable发射的数据中进行选择 Debounce — 只有在空闲了一段时间后才发射数据,通俗的说,就是如果一段时间没有操作,就执行一次操作 Distinct — 去重,过滤掉重复数据项 ElementAt — 取值,取特定位置的数据项 Filter — 过滤,过滤掉没有通过谓词测试的数据项,只发射通过测试的 First — 首项,只发射满足条件的第一条数据 IgnoreElements — 忽略所有的数据,只保留终止通知(onError或onCompleted) Last — 末项,只发射最后一条数据 Sample — 取样,定期发射最新的数据,等于是数据抽样,有的实现里叫ThrottleFirst Skip — 跳过前面的若干项数据 SkipLast — 跳过后面的若干项数据 Take — 只保留前面的若干项数据 TakeLast — 只保留后面的若干项数据 组合操作 组合操作符用于将多个Observable组合成一个单一的Observable

岁月如歌 |

琥珀之月,空谷之兰,皆是孤芳,既是孤芳,但求自赏便罢!

博客寄语:

    从14年开始写博客,到现在再有2年就10年了。

实时播报:

博客号-学习成长

相信每一分耕耘都有每一分收获,致力帮助博客主所创作的博客能更快的被收录! 如果有其它需求,可联系下方邮箱。