本篇基于RxJava中文文档https://mcxiaoke.gitbooks.io/rxdocs/content/做个小结,温故知新。 1、Single Single类似于Observable,不同的是,它总是只发射一个值,或者一个错误通知,而不是发射一系列的值。 订阅Single只需要两个方法: onSuccess:Single发射单个值到这个方法。 onError:如果无法发射需要的值,Single发射一个Throwable对象到这个方法。 Single只会调用这两个方法中的一个,而且只会调用一次,调用了任何一个方法之后,订阅关系终止。 2、Subject Subject可以看成一个桥梁或代理,它同时充当了Observer和Observable的角色。因为它是一个Observer,它可以订阅一个或多个Observable;又因为它是一个Observable,它可以转发它收到(Observe)的数据,也可以发射新的数据。 由于一个Subject订阅一个Observable,它可以触发这个Observable开始发射数据(如果那个Observable是"冷"的--就是说,它等待有订阅才开始发射数据)。因此有这样的效果,Subject可以把原来那个"冷"的Observable变成"热"的。 AsyncSubject 一个AsyncSubject只在原始Observable完成后,发射来自原始Observable的最后一个值。(如果原始Observable没有发射任何值,AsyncObject也不发射任何值)它会把这最后一个值发射给任何后续的观察者。 AsyncSubject subject = AsyncSubject.create(); Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(4); } }).subscribe(subject); subject.onComplete(); //要调onComplete(),下游才会收到 subject.subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(Integer value) { Log.d("-------", ""+value); //收到4 } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); BehaviorSubject 当观察者订阅BehaviorSubject时,它开始发射原始Observable最近发射的数据(如果此时还没有收到任何数据,它会发射一个默认值),然后继续发射其它任何来自原始Observable的数据。 //BehaviorSubject.create()没默认值 BehaviorSubject subject = BehaviorSubject.createDefault(1); subscribe(subject); //在这里订阅将收到1,1,2,4 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(4); } }).subscribe(subject); //subject.onComplete(); 在订阅之前调用则收不到任何数据 // subscribe(subject); //在这里订阅将收到4 private void subscribe(BehaviorSubject subject) { subject.subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(Integer value) { Log.d("-------", ""+value); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } PublishSubject PublishSubject只会把在订阅发生的时间点之后来自原始Observable的数据发射给观察者。 PublishSubject subject = PublishSubject.create(); subscribe(subject); Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(4); } }).subscribe(subject); //subscribe(subject); //这里将收不到 ReplaySubject ReplaySubject会发射所有来自原始Observable的数据给观察者,无论它们是何时订阅的。也有其它版本的ReplaySubject,在重放缓存增长到一定大小的时候或过了一段时间后会丢弃旧的数据(原始Observable发射的)。 3、操作符 Defer 直到有观察者订阅时才创建Observable,并且为每个观察者创建一个新的Observable。 Observable objectObservable = Observable.defer(new Callable>() { @Override public ObservableSource call() throws Exception { return Observable.just(a); //此时a为0 } }); a = 1; objectObservable.subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(Integer value) { Log.d("-------",value+""); //输出1 } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); Empty、Never、Throw Empty:创建一个不发射任何数据但是正常终止的Observable。 Never:创建一个不发射数据也不终止的Observable。 Throw:创建一个不发射数据以一个错误终止的Observable。 Observable.empty().subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { Log.d("----","onSubscribe"); //Never 只走onSubscribe } @Override public void onNext(Object value) { } @Override public void onError(Throwable e) { Log.d("----","onError"); //Throw只走,onError,onComplete } @Override public void onComplete() { Log.d("----","onComplete"); //Empty不会走onNext,只走,onSubscribe,onComplete } }); From 将其它种类的对象和数据类型转换为Observable Integer[] items = { 0, 1, 2, 3, 4, 5 }; Observable.fromArray(items).subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("--------",integer+""); //依次打印0到5 } }); Observable.fromFuture(new Future() { @Override public boolean cancel(boolean mayInterruptIfRunning) { return false; } @Override public boolean isCancelled() { return false; } @Override public boolean isDone() { return false; } @Override public Integer get() throws InterruptedException, ExecutionException { return 1; } @Override public Integer get(long timeout, @NonNull TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { return null; } }).subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("--------",integer+""); //Future.get()方法返回的单个数据 } }); List list = new ArrayList<>(); //集合继承了Iterable list.add(1); list.add(2); Observable.fromIterable((Iterable) list).subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("--------",integer+""); //依次收到1,2 } }); Interval 创建一个按固定时间间隔发射整数序列的Observable。 //参数一是间隔几秒开始发送,参数二是发送间隔 mSubscribe = Observable.interval(4000, 2000, TimeUnit.MILLISECONDS).subscribe(new Consumer() { @Override public void accept(Long aLong) throws Exception { Log.d("----------", Thread.currentThread().getName()); //interval默认子线程 Log.d("-------", aLong + ""); if (aLong == 5.0){ mSubscribe.dispose(); } } }); Just 创建一个发射指定值的Observable。 Observable.just(1,2,3).subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("---------",integer+""); } }); Range 发射一个范围内的有序整数序列,你可以指定范围的起始和长度。 Observable.range(1,10).subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("-------",integer+""); //依次收到1到10 } }); Repeat 创建一个发射特定数据重复多次的Observable。 Observable.just(1).repeat(3).subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("-------",integer+""); //收到3次 } }); Timer 创建一个Observable,它在一个给定的延迟后发射一个特殊的值。 Observable.timer(1000, TimeUnit.MILLISECONDS).subscribe(new Consumer() { @Override public void accept(Long aLong) throws Exception { Log.d("------",aLong+""); //它在延迟一段给定的时间后发射一个简单的数字0 } }); Buffer 定期收集Observable的数据放进一个数据包裹,然后发射这些数据包裹,而不是一次发射一个值。 Observable.just(1,2,3,4,5,6).buffer(3).subscribe(new Consumer>() { @Override public void accept(List integers) throws Exception { Log.d("--------",integers+""); //输出[1,2,3]、[4,5,6] } }); Observable.just(1,2,3,4,5,6).buffer(3,2).subscribe(new Consumer>() { @Override public void accept(List integers) throws Exception { Log.d("--------",integers+""); //输出[1,2,3]、[3,4,5]、[5,6] } }); Map 对Observable发射的每一项数据应用一个函数,执行变换操作 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); } }).map(new Function() { @Override public String apply(Integer integer) throws Exception { return "转换"+integer; } }).subscribe(new Consumer() { @Override public void accept(String s) throws Exception { Log.d("--------",s); } Cast cast操作符将原始Observable发射的每一项数据都强制转换为一个指定的类型,然后再发射数据,它是map的一个特殊版本。 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); } }).cast(String.class).subscribe(new Consumer() { @Override public void accept(String s) throws Exception { Log.d("--------",s); } }); FlatMap FlatMap将一个发射数据的Observable变换为多个Observables,然后将它们发射的数据合并后放进一个单独的Observable。注意:FlatMap对这些Observables发射的数据做的是合并(merge)操作,因此它们可能是交错的。 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); } }).flatMap(new Function>() { @Override public ObservableSource apply(Integer integer) throws Exception { final List list = new ArrayList<>(); for (int i = 0; i < 3; i++) { list.add("I am value " + integer); } return Observable.fromIterable(list).delay(10, TimeUnit.MILLISECONDS); } }).subscribe(new Consumer() { @Override public void accept(String s) throws Exception { Log.d("-------------",s); //并不一定就是1,2,3的顺序 } }); FlatMapIterable flatMapIterable这个变体成对的打包数据,然后生成Iterable而不是原始数据和生成的Observables,但是处理方式是相同的。 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); } }).flatMapIterable(new Function>() { @Override public Iterable apply(Integer integer) throws Exception { List list = new ArrayList(); list.add(integer+"---"); return list; } }).subscribe(new Consumer() { @Override public void accept(String s) throws Exception { Log.d("------",s); } }); concatMap 它和flatMap的作用几乎一模一样, 只是它的结果是严格按照上游发送的顺序来发送的。 switchMap 当原始Observable发射一个新的数据(Observable)时,它将取消订阅并停止监视产生执之前那个数据的Observable,只监视当前这一个。 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); } }).switchMap(new Function>() { @Override public ObservableSource apply(Integer integer) throws Exception { return Observable.just(integer+"").subscribeOn(Schedulers.io()); //并发 } }).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer() { @Override public void accept(String s) throws Exception { Log.d("------",s); //只打印出3 } groupBy GroupBy操作符将原始Observable分拆为一些Observables集合,它们中的每一个发射原始Observable数据序列的一个子序列。哪个数据项由哪一个Observable发射是由一个函数判定的,这个函数给每一项指定一个Key,Key相同的数据会被同一个Observable发射。 注意:groupBy将原始Observable分解为一个发射多个GroupedObservable的Observable,一旦有订阅,每个GroupedObservable就开始缓存数据。因此,如果你忽略这些GroupedObservable中的任何一个,这个缓存可能形成一个潜在的内存泄露。 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); } }).groupBy(new Function() { @Override public String apply(Integer integer) throws Exception { return integer+""; //返回值相同的在同一组 } }).subscribe(new Consumer>() { @Override public void accept(final GroupedObservable stringIntegerGroupedObservable) throws Exception { stringIntegerGroupedObservable.subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("---------",stringIntegerGroupedObservable.getKey()+"---"+integer+""); } }); } }); Scan Scan操作符对原始Observable发射的第一项数据应用一个函数,然后将那个函数的结果作为自己的第一项数据发射。它将函数的结果同第二项数据一起填充给这个函数来产生它自己的第二项数据。它持续进行这个过程来产生剩余的数据序列。 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); } }).scan(new BiFunction() { @Override //其中一个参数是接收的值,另一个是累加的值 public Integer apply(Integer integer, Integer integer2) throws Exception { return integer*integer2; //第一次是1,累加的值是0,输出1,第二次是2,累加的值是1,2*1=2 } }).subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("-------",integer+""); } }); window Window和Buffer类似,但不是发射来自原始Observable的数据包,它发射的是Observables,这些Observables中的每一个都发射原始Observable数据的一个子集,最后发射一个onCompleted通知。 Distinct 抑制(过滤掉)重复的数据项。 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(1); e.onNext(3); e.onNext(2); e.onNext(3); } }).distinct().subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("------",integer+""); //输出1,3,2 } }); Debounce 仅在过了一段指定的时间还没发射数据时才发射一个数据。 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(1); e.onNext(3); e.onNext(2); e.onNext(3); } }).debounce(100, TimeUnit.MILLISECONDS).subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("------",integer+""); //输出3 } }); ElementAt 只发射第N项数据 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); } }).elementAt(0).subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("------",integer+""); //输出1 } }); Filter 过滤操作 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); } }).filter(new Predicate() { @Override public boolean test(Integer integer) throws Exception { return integer == 2; } }).subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("------",integer+""); //输出2 } }); ofType ofType是filter操作符的一个特殊形式。它过滤一个Observable只返回指定类型的数据。 First 只发射第一项(或者满足某个条件的第一项)数据。 IgnoreElements 不发射任何数据,只发射Observable的终止通知。 Last 只发射最后一项(或者满足某个条件的最后一项)数据。 Sample 定期发射Observable最近发射的数据项。 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); } }).sample(10, TimeUnit.MILLISECONDS).subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("------",integer+""); //输出3 } }); Skip 抑制Observable发射的前N项数据。 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); } }).skip(1).subscribe(new Consumer() { @Override public void accept(Integer integer) throws Exception { Log.d("------",integer+""); //输出2,3,忽略了1 } }); SkipLast 抑制Observable发射的后N项数据。 Take 只发射前面的N项数据。 TakeLast 发射Observable发射的最后N项数据。 你可能感兴趣的:(RxJava操作符小结) web&安卓逆向之必学CSS基础知识 安替-AnTi 前端csswebandroid逆向 文章目录CSS基础知识一、CSS的介绍1.CSS的定义2.CSS的作用3.CSS的基本语法4.小结二、css的引入方式1.行内式语法格式:特点:适用场景:2.内嵌式(内部样式)语法格式:特点:适用场景:3.外链式语法格式:特点:适用场景:4.CSS引入方式选择选择建议:5.小结三、css选择器1.CSS选择器的定义2.CSS选择器的种类标签选择器类选择器层级选择器(后代选择器)ID选择器组选择器伪 写给前端工程师的-Flutter-详细教程 2401_84544495 程序员前端flutter =和其他符号的组合:*=、~/=、&=、|=……级联操作符(Cascadenotation…)//想想这样省了多少变量声明querySelect(‘#button’)…text=“Confirm”…classes.add(‘important’)…onClick.listen((e)=>window.alert(‘Confirmed’))甚至可以重写操作符classVector{finalintx LINQ应用与实践:第 3 章 LINQ 查询操作符 caifox菜狐狸 LINQ应用与实践linqc#开发语言LambdaExpressionssql数据库 在LINQ(LanguageIntegratedQuery)中,查询操作符是实现数据查询和操作的核心工具。通过使用这些操作符,开发者可以轻松地对数据进行筛选、排序、分组、聚合等操作。本章将详细介绍LINQ提供的各种查询操作符,并通过实际案例展示它们的用法。通过学习本章内容,你将能够:掌握LINQ查询操作符的基本分类和功能。理解每种操作符的具体用途和应用场景。将所学知识应用于实际开发场景。1.限制操 2020-12-23 C++字符串的读入与操作函数小结 寒冰雪松 DEVC++学习c++字符串 DEVC++字符串读入操作小结:一、char字符串1、读入:chara[50]1、cin>>a;//遇空格,回车符结束2、scanf(%s,a);//遇空格,回车符结束3、cin.get(a,50);//可接收空格,字符数读到最大值或遇回车符结束4、cin.getline(a,50);//可接收空格,字符数读到最大值或遇回车符结束5、cin.get(a,50,'#');//可接收空格,回车符。字符 Hive 内置集合函数 雾岛与鲸 hivehive大数据 目录size(Map[K,V])size(Array[V])map_keys(Map[K.V])map_values(Map[K.V])array_contains(Array[T],value)sort_array(Array[T])小结size(Map[K,V])解释返回Map类型中的元素数。使用案例selectsize(map类型参数);--返回map中的元素个数size(Array[V]) 开发指南097-数据库兼容-字符串相加 大道不孤,众行致远 平台开发指南数据库 各数据库字符串相加语法完全不同,mysql用concat函数,oracle用||操作符号,sqlserver用+操作,平台希望用一套代码兼容所有数据库。平台设计的机制如下:QLMContants类定义了平台级别参数:publicstaticStringDatabaseType;//数据类型平台启动时,会调用判断数据类型函数:publicstaticStringjudgeDatabaseType(S 【机器学习】嘿马机器学习(算法篇)第6篇:线性回归,学习目标【附代码文档】... 广江鹏 算法机器学习线性回归学习人工智能 本教程的知识点为:机器学习算法定位、K-近邻算法1.4k值的选择1K值选择说明1.6案例:鸢尾花种类预测–数据集介绍1案例:鸢尾花种类预测1.8案例:鸢尾花种类预测—流程实现1再识K-近邻算法API1.11案例2:预测facebook签到位置1项目描述线性回归2.3数学:求导1常见函数的导数线性回归2.5梯度下降方法介绍1详解梯度下降算法线性回归2.6线性回归api再介绍小结线性回归2.9正则化线 C#结合html2canvas生成切割图片并导出到PDF 初九之潜龙勿用 UI专栏C#应用与开发c#pdf开发语言htmluiasp.net 目录需求开发运行环境实现生成HTML范例片断HTML元素转BASE64BASE64转图片切割长图片生成PDF文件小结需求html2canvas是一个JavaScript库,它可以把任意一个网页中的元素(包括整个网页)绘制到指定的canvas中,适用于生成网截图或将指定元素容器内容保存为图像等。现有需求如下:1、C#后台输出HTML片段内容到客户端;2、引入html2canvas库,放置canvas Python异步编程实战:深入理解asyncio walkskyer 我爱pythongolang开发语言后端 Python异步编程实战:深入理解asyncio引言基础概念异步编程与同步编程事件循环(EventLoop)协程(Coroutine)任务(Task)未来(Future)环境准备Python版本虚拟环境安装异步库快速入门创建第一个异步程序理解事件循环执行多个协程深入事件循环事件循环的工作原理创建和运行事件循环自定义和控制事件循环小结使用协程进行异步编程定义和运行协程`await`:暂停和等待组合和 第9章 Ext文件系统族 (3) 山下小童 linuxc语言服务器网络架构 目录9.2Ext2文件系统9.2.3创建文件系统9.2.4文件系统操作9.3Ext3文件系统9.3.1概念9.3.2数据结构9.4小结本专栏文章将有70篇左右,欢迎+关注,查看后续文章。9.2Ext2文件系统9.2.3创建文件系统如何创建文件系统?mkfs命令。创建Ext2文件系统时,分配子目录"lost+found",用于容纳介质上的坏块。若没有坏块,lost+found目录为空。创建步骤:1. Go基本数据类型----布尔类型与数字类型 yangoo-22 Go入门 Go基本数据类型----布尔类型与数字类型运算符下面是Go语言中支持的运算符号的优先级排列PrecedenceOperator5*/%>&&^4+-|^3==!=>=2&&1||&&和||操作符有短路行为:如果运算符左边值已经可以确定整个布尔表达式的值,那么运算符右边的值将不再被求值对于上表中前两行的运算符,例如+运算符还有一个与赋值相结合的对应运算符+=,可以用于简化赋值语句。Go语言中没有自增 MySQL再叙(体系结构、存储引擎、索引、SQL执行过程) Hi-Sunshine MySQLmysql数据库 文章目录体系结构存储引擎SQL执行过程select的执行过程update的执行过程索引小结提起MySQL,大家一定不陌生,MySQL是最流行的关系型数据库管理系统,MySQL的历史可以追溯到1979年,至今MySQL的最新版本已经达到了8.0以上,发展很迅速,并且现在MySQL的功能也很齐全,接下来从MySQL的体系结构,存储引擎,SQL执行过程,索引这几个维度和大家聊一聊MySQL。体系结构通过 第十九章:特殊工具与技术 CleverCleverTang C++Primer笔记javajvm开发语言C++linux操作系统 第十九章:特殊工具与技术对于很多程序员来说,他们很少会用到本章的介绍的内容。一.控制内存分配我们能够重载new和delete,但其实不是对new和delete的重载,只是对new和delete操作符后面的函数进行重载。当我们使用一条new表达式的时候,第一步new表达式调用一个名为operatornew或operatornew[]的函数分配内存空间。第二步,编译器运行构造函数构造对象并传入初始值, 基于无线网状网的变电站视频监控系统的设计与实现(源码+万字报告+实物) 炳烛之明科技 单片机嵌入式硬件 目录摘要3ABSTRACT4目录61引言71.1研究背景与意义71.2国内外发展现状81.2.1国外发展现状81.2.2国内发展现状91.3论文的组织结构111.4本章小结112相关理论122.1无线网状网基本理论122.1.1无线网状网的概念122.1.2无线网状网的组成与基本结构132.2无线网状网关键技术152.2.1无线网状网路由器传输技术152.2.2媒体访问控制接入技术162.2.3无 BFS算法篇——FloodFill问题的高效解决之道(上) 诚丞成 常用算法讲解算法宽度优先 文章目录前言一.FloodFill问题概述二.BFS在FloodFill中的应用三.BFSFloodFill算法的优势四.BFSFloodFill的实现小结前言BFS(广度优先搜索,Breadth-FirstSearch)是一种图搜索算法,主要用于遍历或搜索树或图的所有节点。BFS从根节点开始,首先访问当前节点的所有邻居节点,然后按层次逐步向外扩展。该算法通常用于找出两点之间的最短路径、计算连通区 async-http-client使用示例 光芒再现0394 http网络协议网络 文章目录概要整体架构流程技术名词解释技术细节小结概要async-http-client是一个用于Java平台的高性能、非阻塞HTTP客户端库,它允许开发者以异步的方式发送HTTP请求并处理响应,从而提高应用程序的性能和响应性。主要特点异步处理:基于Netty框架实现,支持异步发送HTTP请求和处理响应,避免了传统同步请求中的阻塞。支持多种请求方法:支持GET、POST、PUT、DELETE等常见的 Java 创建数组 *Snowgrass* JavaJava创建数组 Java语言使用new操作符来创建数组。创建数组方法1:dataType[]arrayRefVar={value0,value1,...,valuek};方法2:dataType[]arrayRefVar=newdataType[arraySize];数组的元素是通过索引访问的。数组索引从0开始,所以索引值从0到arrayRefVar.length-1。方法1实例:publicclassTest{ Day 6 真假美猴王:AI质检的“火眼金睛”与“乌龙大赏”--美的AI质检员一夜“开除”50名老师傅!只因发现肉眼看不见的0.01mm致命气泡! 泛泛不谈 智能制造暗黑进化史制造经验分享 目录一、血腥开场:微波炉内胆的“隐形杀手”二、死亡案例:AI把工人影子当“缺陷”三、AI质检段位表:从“睁眼瞎”到“钛合金眼”四、乐高教学:3步训练“AI质检员”五、装逼话术实战指南六、专业名词扫盲:AI质检黑话手册1.GAN(造假大师)2.数据增强(AI的“PS术”)3.F1Score(AI的“考试成绩”)4.迁移学习(AI的“抄作业”)5.边缘计算(AI的“现场办案”)课堂小结:AI质检是什么 后缀表达式的转换(栈的运用) Want595 C语言数据结构与算法算法蓝桥杯数据结构 后缀表达式又称逆波兰式,在后缀表达式中,操作符始终在两个操作数之后将表达式转换为后缀表达式主要借助字符栈来实现,下面让我们一起来看看吧~目录一、主要思路二、具体分析三、核心算法四、完整代码五、运行结果附:系列文章一、主要思路由于操作符具有优先级,因此我们应该先设置操作符的优先级操作符的优先级操作符#(+-*/ 仓颉语言:类型转换 编程 仓颉不支持不同类型之间的隐式转换,类型转换必须显式地进行。下面将依次介绍数值类型之间的转换,Char和UInt32之间的转换,以及is和as操作符。5.1数值类型之间的转换对于数值类型(包括Int8,Int16,Int32,Int64,IntNative,UInt8,UInt16,UInt32,UInt64,UIntNative,Float16,Float32,Float64),仓颉支持使用T(e Webpack5 Asset Module 使用小结 蚂蚁二娘 webpack前端javascript 我们常用raw-loader、url-loader、file-loader来处理图片、字体等资源文件,Webpack5为我们提供了一种更简单、更方便的方式来替换上述loader,这既是本文我们将要介绍的AssetModule(即资源模块)。分类Webpack5为我们提供了asset/resource、asset/inline、asset/source、asset四种资源类型,具体介绍如下所示:as PyTorch深度学习实战(37)——CycleGAN详解与实现 盼小辉丶 生成对抗网络pytorch生成模型 PyTorch深度学习实战(37)——CycleGAN详解与实现0.前言1.CycleGAN基本原理2.CycleGAN模型分析3.实现CycleGAN小结系列链接0.前言CycleGAN是一种用于图像转换的生成对抗网络(GenerativeAdversarialNetwork,GAN),可以在不需要配对数据的情况下将一种风格的图像转换成另一种风格,而无需为每一对输入-输出图像配对训练数据。Cyc mysql8 从C++源码角度看sql生成抽象语法树 蚰蜒螟 c++sql开发语言mysql MySQL8的C++源码中,SQL语句的词法分析和语法分析是通过一个复杂的解析器实现的,这个解析器将输入的SQL文本转换成抽象语法树(AST)。以下是该过程的主要步骤和相关组件:主要组件Lexer(词法分析器):MySQL使用了一个称为MYSQL_LEX的类来进行词法分析。它负责将SQL查询字符串分解成一系列的标记(tokens),如关键字、标识符、操作符等。在dispatch_sql_comma 【Python使用】嘿马python高级进阶全体系教程第12篇:修改闭包内使用的外部变量,1. 修改闭包内使用的外部变量 python后端 本教程的知识点为:操作系统1.常见的操作系统4.小结ls命令选项2.小结mkdir和rm命令选项1.mkdir命令选项压缩和解压缩命令1.压缩格式的介绍2.tar命令及选项的使用3.zip和unzip命令及选项的使用4.小结编辑器vim1.vim的介绍2.vim的工作模式3.vim的末行模式命令4.vim的常用命令获取进程编号1.获取进程编号的目的2.获取当前进程编号3.获取当前父进程编号4.小结 gaussdb的用户与权限 张小小浩 gaussdbLinux基础知识sqlgaussdb数据库 权限分类系统权限对象权限1.数据库databasesconnect允许用户连接到指定的数据库create允许在数据库中创建新的模式2.模式SCHEMACREATE允许在模式中创建新的对象USAGE允许访问包含在指定模式中的对象,若没有该权限,则只能看到这些对象的名字3.函数FUNCTIONEXECUTE允许使用指定的函数,以及利用这些函数实现的操作符4.表空间TABLESPACECREATE允许在 Python3序列类型(字符串、列表、元组) 诸神缄默不语 编程学习笔记PythonPython3字符串列表元组strlist 诸神缄默不语-个人CSDN博文目录本文介绍Python3序列类型对象(字符串、列表、元组)及其操作方法。Python中的主要序列类型:str(字符串):由字符构成的序列;list(列表):一个可以修改数据项的序列类型,使用也最灵活;tuple(元组):包含0个或多个数据项的不可变序列类型。元组生成后是固定的,其中任何数据项不能替换或删除。文章目录1.序列类型通用的操作符和函数2.str:字符串3. PyTorch深度学习实战(42)——图像字幕生成 盼小辉丶 深度学习pytorch人工智能 PyTorch深度学习实战(42)——图像字幕生成0.前言1.图像字幕1.1基本概念1.2模型分析1.3数据集分析2.图像字幕生成模型小结系列链接0.前言图像字幕生成(Imagecaptioning)模型是一种将图像与对应描述文字关联起来的神经网络模型,其主要目标是根据给定的图像生成描述性的自然语言字幕。模型通常由两个主要组件,卷积神经网络(ConvolutionalNeuralNetwork,C 架构是怎样练成的-楼宇监控系统案例 workflower 设计方法架构设计模式软件工程软件需求系统架构 目录概要项目背景原系统设计方案改进后的设计方案小结概要绝大多数人掌握的架构都是直接学习,慢慢地才能体会到一个架构的好处。架构是一种抽象,是为了复用目的而对代码做的抽象。通过一个项目的改造,理解架构是如何产生的,是因何产生的。项目背景这是一个楼宇集中监控系统,目的是对楼宇中感兴趣的设备进行集中监控,如门磁、配电柜、空调、温度湿度传感器、火警等各类安防、消防、能效、计算机设备,在中央控制室就可以尽在掌 图神经网络实战(8)——图注意力网络(Graph Attention Networks, GAT) 盼小辉丶 图神经网络从入门到项目实战图神经网络pytorch图注意力网络GNN 图神经网络实战(8)——图注意力网络0.前言1.图注意力层原理1.1线性变换1.2激活函数1.3Softmax归一化1.4多头注意力1.5改进图注意力层2.使用NumPy中实现图注意力层3.使用PyTorchGeometric实现GAT3.1在Cora数据集上训练GAT模型3.2在CiteSeer数据集上训练GAT模型3.3误差分析小结系列链接0.前言图注意力网络(GraphAttentionNe effective Objective—C 第三章笔记 安和昴 c语言笔记java 接口与API设计文章目录接口与API设计用前缀名避免命名空间冲突提供全能初始化方法小结实现description方法小结尽量使用不可变方法小结使用清晰且协调的命名方法为私有方法加前缀理解OC错误模型理解NSCopying协议小结用前缀名避免命名空间冲突OC没有其他语言所内置的那种命名空间的机制,所以我们命名的时候要设法避免潜在的一个命名冲突,在某些情况下如果在运行期载入了含重名的程序库,可能会让整 开发者关心的那些事 圣子足道 ios游戏编程apple支付 我要在app里添加IAP,必须要注册自己的产品标识符(product identifiers)。产品标识符是什么? 产品标识符(Product Identifiers)是一串字符串,它用来识别你在应用内贩卖的每件商品。App Store用产品标识符来检索产品信息,标识符只能包含大小写字母(A-Z)、数字(0-9)、下划线(-)、以及圆点(.)。你可以任意排列这些元素,但我们建议你创建标识符时使用 负载均衡器技术Nginx和F5的优缺点对比 bijian1013 nginxF5 对于数据流量过大的网络中,往往单一设备无法承担,需要多台设备进行数据分流,而负载均衡器就是用来将数据分流到多台设备的一个转发器。 目前有许多不同的负载均衡技术用以满足不同的应用需求,如软/硬件负载均衡、本地/全局负载均衡、更高 LeetCode[Math] - #9 Palindrome Number Cwind javaAlgorithm题解LeetCodeMath 原题链接:#9 Palindrome Number 要求: 判断一个整数是否是回文数,不要使用额外的存储空间 难度:简单 分析: 题目限制不允许使用额外的存储空间应指不允许使用O(n)的内存空间,O(1)的内存用于存储中间结果是可以接受的。于是考虑将该整型数反转,然后与原数字进行比较。 注:没有看到有关负数是否可以是回文数的明确结论,例如 画图板的基本实现 15700786134 画图板 要实现画图板的基本功能,除了在qq登陆界面中用到的组件和方法外,还需要添加鼠标监听器,和接口实现。 首先,需要显示一个JFrame界面: public class DrameFrame extends JFrame { //显示 linux的ps命令 被触发 linux Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。 要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行 Android 音乐播放器 下一曲 连续跳几首歌 肆无忌惮_ android 最近在写安卓音乐播放器的时候遇到个问题。在MediaPlayer播放结束时会回调 player.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mp.reset(); Log.i("H java导出txt文件的例子 知了ing javaservlet 代码很简单就一个servlet,如下: package com.eastcom.servlet; import java.io.BufferedOutputStream; import java.io.IOException; import java.net.URLEncoder; import java.sql.Connection; import java.sql.Resu Scala stack试玩, 提高第三方依赖下载速度 矮蛋蛋 scalasbt 原文地址: http://segmentfault.com/a/1190000002894524 sbt下载速度实在是惨不忍睹, 需要做些配置优化 下载typesafe离线包, 保存为ivy本地库 wget http://downloads.typesafe.com/typesafe-activator/1.3.4/typesafe-activator-1.3.4.zip 解压r phantomjs安装(linux,附带环境变量设置) ,以及casperjs安装。 alleni123 linuxspider 1. 首先从官网 http://phantomjs.org/下载phantomjs压缩包,解压缩到/root/phantomjs文件夹。 2. 安装依赖 sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6 3. 配置环境变量 vi /etc/profil JAVA IO FileInputStream和FileOutputStream,字节流的打包输出 百合不是茶 java核心思想JAVA IO操作字节流 在程序设计语言中,数据的保存是基本,如果某程序语言不能保存数据那么该语言是不可能存在的,JAVA是当今最流行的面向对象设计语言之一,在保存数据中也有自己独特的一面,字节流和字符流 1,字节流是由字节构成的,字符流是由字符构成的 字节流和字符流都是继承的InputStream和OutPutStream ,java中两种最基本的就是字节流和字符流 类 FileInputStream Spring基础实例(依赖注入和控制反转) bijian1013 spring 前提条件:在http://www.springsource.org/download网站上下载Spring框架,并将spring.jar、log4j-1.2.15.jar、commons-logging.jar加载至工程1.武器接口 package com.bijian.spring.base3; public interface Weapon { void kil HR看重的十大技能 bijian1013 提升能力HR成长 一个人掌握何种技能取决于他的兴趣、能力和聪明程度,也取决于他所能支配的资源以及制定的事业目标,拥有过硬技能的人有更多的工作机会。但是,由于经济发展前景不确定,掌握对你的事业有所帮助的技能显得尤为重要。以下是最受雇主欢迎的十种技能。 一、解决问题的能力 每天,我们都要在生活和工作中解决一些综合性的问题。那些能够发现问题、解决问题并迅速作出有效决 【Thrift一】Thrift编译安装 bit1129 thrift 什么是Thrift The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and s 【Avro三】Hadoop MapReduce读写Avro文件 bit1129 mapreduce Avro是Doug Cutting(此人绝对是神一般的存在)牵头开发的。 开发之初就是围绕着完善Hadoop生态系统的数据处理而开展的(使用Avro作为Hadoop MapReduce需要处理数据序列化和反序列化的场景),因此Hadoop MapReduce集成Avro也就是自然而然的事情。 这个例子是一个简单的Hadoop MapReduce读取Avro格式的源文件进行计数统计,然后将计算结果 nginx定制500,502,503,504页面 ronin47 nginx 错误显示 server { listen 80; error_page 500/500.html; error_page 502/502.html; error_page 503/503.html; error_page 504/504.html; location /test {return502;}} 配置很简单,和配 java-1.二叉查找树转为双向链表 bylijinnan 二叉查找树 import java.util.ArrayList; import java.util.List; public class BSTreeToLinkedList { /* 把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ Netty源码学习-HTTP-tunnel bylijinnan javanetty Netty关于HTTP tunnel的说明: http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/socket/http/package-summary.html#package_description 这个说明有点太简略了 一个完整的例子在这里: https://github.com/bylijinnan JSONUtil.serialize(map)和JSON.toJSONString(map)的区别 coder_xpf jqueryjsonmapval() JSONUtil.serialize(map)和JSON.toJSONString(map)的区别 数据库查询出来的map有一个字段为空 通过System.out.println()输出 JSONUtil.serialize(map): {"one":"1","two":"nul Hibernate缓存总结 cuishikuan 开源sshjavawebhibernate缓存三大框架 一、为什么要用Hibernate缓存? Hibernate是一个持久层框架,经常访问物理数据库。 为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。 缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。 二、Hibernate缓存原理是怎样的? Hibernate缓存包括两大类:Hib CentOs6 dalan_123 centos 首先su - 切换到root下面1、首先要先安装GCC GCC-C++ Openssl等以来模块:yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel2、再安装ncurses模块yum -y install ncurses-develyum install ncurses-devel3、下载Erang 10款用 jquery 实现滚动条至页面底端自动加载数据效果 dcj3sjt126com JavaScript 无限滚动自动翻页可以说是web2.0时代的一项堪称伟大的技术,它让我们在浏览页面的时候只需要把滚动条拉到网页底部就能自动显示下一页的结果,改变了一直以来只能通过点击下一页来翻页这种常规做法。 无限滚动自动翻页技术的鼻祖是微博的先驱:推特(twitter),后来必应图片搜索、谷歌图片搜索、google reader、箱包批发网等纷纷抄袭了这一项技术,于是靠滚动浏览器滚动条 ImageButton去边框&Button或者ImageButton的背景透明 dcj3sjt126com imagebutton 在ImageButton中载入图片后,很多人会觉得有图片周围的白边会影响到美观,其实解决这个问题有两种方法 一种方法是将ImageButton的背景改为所需要的图片。如:android:background="@drawable/XXX" 第二种方法就是将ImageButton背景改为透明,这个方法更常用 在XML里; <ImageBut JSP之c:foreach eksliang jspforearch 原文出自:http://www.cnblogs.com/draem0507/archive/2012/09/24/2699745.html <c:forEach>标签用于通用数据循环,它有以下属性 属 性 描 述 是否必须 缺省值 items 进行循环的项目 否 无 begin 开始条件 否 0 end 结束条件 否 集合中的最后一个项目 step 步长 否 1 Android实现主动连接蓝牙耳机 gqdy365 android 在Android程序中可以实现自动扫描蓝牙、配对蓝牙、建立数据通道。蓝牙分不同类型,这篇文字只讨论如何与蓝牙耳机连接。 大致可以分三步: 一、扫描蓝牙设备: 1、注册并监听广播: BluetoothAdapter.ACTION_DISCOVERY_STARTED BluetoothDevice.ACTION_FOUND BluetoothAdapter.ACTION_DIS android学习轨迹之四:org.json.JSONException: No value for hyz301 json org.json.JSONException: No value for items 在JSON解析中会遇到一种错误,很常见的错误 06-21 12:19:08.714 2098-2127/com.jikexueyuan.secret I/System.out﹕ Result:{"status":1,"page":1,& 干货分享:从零开始学编程 系列汇总 justjavac 编程 程序员总爱重新发明轮子,于是做了要给轮子汇总。 从零开始写个编译器吧系列 (知乎专栏) 从零开始写一个简单的操作系统 (伯乐在线) 从零开始写JavaScript框架 (图灵社区) 从零开始写jQuery框架 (蓝色理想 ) 从零开始nodejs系列文章 (粉丝日志) 从零开始编写网络游戏 jquery-autocomplete 使用手册 macroli jqueryAjax脚本 jquery-autocomplete学习 一、用前必备 官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/ 当前版本:1.1 需要JQuery版本:1.2.6 二、使用 <script src="./jquery-1.3.2.js" type="text/ja PLSQL-Developer或者Navicat等工具连接远程oracle数据库的详细配置以及数据库编码的修改 超声波 oracleplsql 在服务器上将Oracle安装好之后接下来要做的就是通过本地机器来远程连接服务器端的oracle数据库,常用的客户端连接工具就是PLSQL-Developer或者Navicat这些工具了。刚开始也是各种报错,什么TNS:no listener;TNS:lost connection;TNS:target hosts...花了一天的时间终于让PLSQL-Developer和Navicat等这些客户 数据仓库数据模型之:极限存储--历史拉链表 superlxw1234 极限存储数据仓库数据模型拉链历史表 在数据仓库的数据模型设计过程中,经常会遇到这样的需求: 1. 数据量比较大; 2. 表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态等等; 3. 需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态, 比如,查看某一个用户在过去某一段时间内,更新过几次等等; 4. 变化的比例和频率不是很大,比如,总共有10 10点睛Spring MVC4.1-全局异常处理 wiselyman spring mvc 10.1 全局异常处理 使用@ControllerAdvice注解来实现全局异常处理; 使用@ControllerAdvice的属性缩小处理范围 10.2 演示 演示控制器 package com.wisely.web; import org.springframework.stereotype.Controller; import org.spring 按字母分类: ABCDEFGHIJKLMNOPQRSTUVWXYZ其他