从永久故障中恢复

        上面的例子允许我们向加入到同一使用者组的成员发送信息,处理各自的消息子集,并从故障中恢复,继续读取曾经发送过来的、被挂起的消息。但是,在现实情况,使用者可能发生永久故障而不再恢复,那么对不知何故不再恢复的使用者,那些挂起的信息怎么办呢?

        在这种情况下,Redis提供了一个方法,用以回收特定用户的挂起信息,改变它们的所有权,将它们分配给另一个不同的用户。这个特性的目标非常明确,使用者必须能检查挂起的信息列表,并可以用一个特别的命令来获取这些特定信息的所有权,否则这些挂起的信息将永远属于原来的使用者。不同的应用可以选择是否采用或怎么采用这种方法。

       这个过程的第一步是可以检查使用者组被挂起信息条目的命令,它叫做XPENDING,它是一个只“读”操作的命令,并不会使信息条目的所有权发生变化,所以总是安全的。它最简单的使用方式,有两个参数:流的名字和使用者组的名字。

> XPENDING mystream mygroup
1) (integer) 2
2) 1526569498055-0
3) 1526569506935-0
4) 1) 1) "Bob"2) "2"

        采用这种使用方式,命令输出使用者组被挂起的信息总数、挂起信息的最小ID和最大ID,使用者列表以及对应的挂起信息个数。上面例子中,总挂起数是2,因为Alice的那条请求信息已被XACK过了,所以仅有Bob的两条挂起信息,

       给XPENDING提供更多的参数,我们可以得到更多的信息,这个命令完整的格式如下:

XPENDING <key> <groupname> [<start-id> <end-id> <count> [<consumer-name>]]

        提供起、止ID(可以是- +,XRANGE命令中那样)和一个控制返回信息个数的数字,我们就能知道更多关于挂起的信息。最后一个可选的参数是使用者的名字,如果提供,就得到特定使用者的挂起信息,但在下面例子中我们不采用该参数。

> XPENDING mystream mygroup - + 10
1) 1) 1526569498055-02) "Bob"3) (integer) 741704584) (integer) 1
2) 1) 1526569506935-02) "Bob"3) (integer) 741704584) (integer) 1

        现在我们得到了每条信息的细节:ID,使用者名字,未操作时间(该条目发送给某用户到现在的毫秒数),以及条目被发送的次数。我们有两条Bob的信息,它们已“等待”了74170458毫秒(大约20小时)。我们可以用XRANGE看看上面第一条信息的内容是什么,这些任何人都可以做。

> XRANGE mystream 1526569498055-0 1526569498055-0
1) 1) 1526569498055-02) 1) "message"2) "orange"

       在上面命令中,我们将同一ID重复了两遍来查看它,现在我们就会有想法了,Alice可能认为Bob20个小时后还没处理消息,已经不会及时恢复了,所以现在是时候替代Bob重新处理该信息了。此时,我们要用XCLAIM命令。

         这个命令非常复杂,因为它是用来响应使用者变化的,因而完整的形式有很多选项。但是我们仅用我们所需要的格式,此时,它使用的格式就如下面这样简单:

XCLAIM <key> <group> <consumer> <min-idle-time> <ID-1> <ID-2> ... <ID-N>

        基本上我们可以这样说,对特定的流和使用者组,我想让那些指定ID的信息改变所有者,即赋给指定的用户<consumer>。我们也可以提供一个最小的未操作时间,即仅针对那些未操作时间大于指定时间的信息。这很有用,因为可能有两个用户在同时尝试获得一条信息的所有权:

Client 1: XCLAIM mystream mygroup Alice 3600000 1526569498055-0
Client 2: XCLAIM mystream mygroup Lora 3600000 1526569498055-0

       获取一条信息的所有权,有一个副作用就是重置它的未操作时间和增加它的发送次数值,所以第二个用户将不会成功。采用这种方法,我们避免了琐碎的再处理(即便通常你不能一次获得成功)。

      以下是这条命令的执行结果:

> XCLAIM mystream mygroup Alice 3600000 1526569498055-0
1) 1) 1526569498055-02) 1) "message"2) "orange"

        这条信息被Alice成功获取所有权,现在可以确认并处理这条信息,这样即使最初的使用者没有恢复,也可以继续下面的事情。

         从上面的例子可以清楚地看出采用XCLAIM成功获取一条信息的所有权的一个副作用是它返回了信息,这不是必需的,可以用JUSTID选项,仅返回信息的ID,如果你想减少服务器与客户端的通讯以提供性能,并且你不关心信息内容,因为挂起的信息会被不时地扫描,那么这样的方式就是有用的。

        获取信息所有权也可以由一个单独的过程来完成:它仅检查挂起的信息列表并将信息赋给看起来像是在线(活跃)的使用者。如何获得活跃的使用者,就要用到Redis流的一个查看特性,这是下一节的内容。

获取所有权以及发送计数

        在XPENDING命令的输出中,你看到的数字是信息的发送计数。这个计数有两种方式增加:当信息被XCLAIM命令成功获取所有权时,或者使用XREADGROUP命令来获取挂起信息的历史时。

         如果有故障发生,信息可能被多次发送,这很自然,通常信息最终会被处理。但是,有时候对一条特定的信息,处理它的代码会触发一个bug,导致失败,此时,用户端就会不断地处理这条信息。因此,我们就可以利用发送计数,来检查那些由于某些原因根本不会正确处理的信息,当发送计数一旦达到一个你设置的大值时,比较明智的做法是将它们放到另一个流中,并给系统管理员发送一条通知。以上基本上就是Redis流中实现“死信息”(dead letter)概念的思路。

流的可查看特征

        消息系统如果缺乏可查看特性将会非常难以使用。如果不知道谁在使用信息,哪些信息挂起了,一个流中有哪些在线用户等,都将使事情变得晦涩。正因如此,Redis流和使用者组有不同的方式来查看正在发生什么。我们已经讲述了XPENDING,它允许我们检查某一时刻那些没被处理的信息,包括它们的未操作时间和发送计数。

        但是我们还想要更多的东西,XINFO命令就是一个查看接口,它可以和子命令一起,得到关于流和使用者组的信息。

        这个命令采用子命令的方式是为了显示流和使用者状态的不同信息,例如,XINFO STREAM会得到流自身的信息。

> XINFO STREAM mystream1) length2) (integer) 133) radix-tree-keys4) (integer) 15) radix-tree-nodes6) (integer) 27) groups8) (integer) 29) first-entry
10) 1) 1526569495631-02) 1) "message"2) "apple"
11) last-entry
12) 1) 1526569544280-02) 1) "message"2) "banana"

        上面输出显示了流在内部是如何存储的,以及第一和最后一条信息,另外,还可以得到与这个流相关联的使用者组的数量。我们可以深入了解使用者组的信息。

> XINFO GROUPS mystream
1) 1) name2) "mygroup"3) consumers4) (integer) 25) pending6) (integer) 2
2) 1) name2) "some-other-group"3) consumers4) (integer) 15) pending6) (integer) 0

如果你没有记住命令的句法,由命令本身可查看帮助。

> XINFO HELP
1) XINFO <subcommand> arg arg ... arg. Subcommands are:
2) CONSUMERS <key> <groupname>  -- Show consumer groups of group <groupname>.
3) GROUPS <key>                 -- Show the stream consumer groups.
4) STREAM <key>                 -- Show information about the stream.
5) HELP                         -- Print this help.

与Kafka分区的区别

        Redis使用者组与Kafka基于分区的使用者组在有些方面看起来挺像,但请记住,它们非常不同。这里,信息分割仅是逻辑上的,信息其实是放在一个流中,所以,它能为不同的用户服务是基于谁准备好了,该处理新信息了,而不是用户要读哪个分区。例如,如果用户C3在某时刻永久宕机了,Redis会继续为C1C2提供新信息的服务,好像只有两个逻辑分区一样。

         同样,如果某个使用者处理信息的速度比其他使用者快得多,那么,这个使用者在单位时间内将会收到更多的信息,这在Redis是可以做到的,因为Redis会追踪所有未确认的信息,并记住谁收到了哪条信息和第一条未收到的信息ID

        但是,这也意味着如果你真想将流中的信息分到不同的Redis实例中,就需要采用多个流并使用类似Redis Cluster的共享系统或其他应用程序层面的共享系统。一个单一的Redis流不会自动分区到多个实例上。

       从原理上讲,我们认为以下观点是正确的:

  • 如果你采用1个流和1个使用者,则你处理信息是顺序的;
  • 如果你有N个流和N个使用者,一个使用者只处理N个流中的一部分内容,你可以将上面的11模型进行水平扩展。
  • 如果你有1个流和N个使用者,信息被“负载均衡”地发送给N个使用者,但是,此时,逻辑上关于同一事情的消息将有可能不是顺序被处理,例如,一个处理消息3的使用者可能比另外处理消息4的使用者更快(处理完)。

       所以,Kafka的分区基本上与使用N个不同的流的情况类似。Redis的使用者组是在服务器端将一个流的负载(信息)均衡到N个不同的使用者。

流的限制

        许多应用程序并不想将采集数据永久地放到流中。有时,将流中条目数限制到一个给定值很有用,一旦达到这个数目后,将数据从Redis中移到不是内存的存储器中,这个存储器可能不如内存快,但适合保存数十上百年。Redis流对此有一定的支持。一个就是用XADD命令中的MAXLEN选项,它非常简单:

> XADD mystream MAXLEN 2 * value 1
1526654998691-0
> XADD mystream MAXLEN 2 * value 2
1526654999635-0
> XADD mystream MAXLEN 2 * value 3
1526655000369-0
> XLEN mystream
(integer) 2
> XRANGE mystream - +
1) 1) 1526654999635-02) 1) "value"2) "2"
2) 1) 1526655000369-02) 1) "value"2) "3"

        使用MAXLEN后,当指定的数目达到后,旧的条目将自动去除,所以流会保持一个固定的长度。目前,还没有选项来告诉流保留不旧于某个时刻时间段的条目,因为这样的命令被不断运行的话,为去除信息条目,流就可能会产生大量的阻塞时间。可以想象一下,如果下面情况发生怎么办:一个插入尖峰(大量插入),接着暂停,阻塞流,去除那些过时的信息,然后又是一个插入,都是用同样很长的时间。所以,用户应该做一些规划,理解流最大长度的意义,并且流的长度与使用内存量是成比例的,通过时间来控制去除信息并不简单:它依赖于插入的速率,这个速率会随时发生变化(当速率不发生变化时,通过流长度来去除的代价就较小)。

        但是,用MAXLEN去除条目的代价可能是高昂的:为使内存高效,流是由基数树(redix tree)的宏节点(macro nodes)所构成的,而每一个宏节点,是由成十上百个元素构成的,修改一个宏节点,不能被优化,所以,这个命令可以有以下这个特别的形式:

XADD mystream MAXLEN ~ 1000 * ... entry fields here ...

        MAXLEN和实际条目数之间的参数~表示我并不需要刚好1000条,可以是100010101030,只要保证至少1000条就可以。采用这个参数,仅当需要删除整个宏节点时才进行删除操作,这使效率大为提升,并且就是你想要的。

        还有一个XTRIM命令,它所做的与上面XAMLEN选项所做的十分类似,但是它不需要再向流添加什么,它能独立地应用到任何流:

> XTRIM mystream MAXLEN 10

或者对上面那个XADD的例子:

> XTRIM mystream MAXLEN ~ 10

        虽然目前仅实现了XMALEN功能,但是XTRIM是要被设计成可以接受不同删除方式的。将来它可能接受按时间删除,它是一个显式命令,因此使用者知道他或她在做什么。

        一种实用的XTRIM删除策略是ID的范围,现在还不可能,但在将来可能实现,如果需要,或者简单地用XRANGEXTRIM组合来就可将将Redis数据移动到另外的存储系统中去。

流API中特殊的ID

        你可能已经注意到有几个特殊的ID可以用在Redis流API中。下面是一个扼要重述,你以后会有更深入的理解。

        首先两个特殊的ID是-和+,它们在XRANGE命令中被用来进行范围查询,分别代表最小的ID(基本上就是0-1)和最大的ID(即18446744073709551615-18446744073709551615),很明显,用-和+来代替这两个ID很简洁。

        接着,我们要说,在API中,需要流中条目最大的ID,这就是$。所以,当我在XREADGROUP命令中仅需要新信息条目时,就可以用这个ID,它表示我已经有现有的条目了,但还没有未来新插入的。同样,当我创建或设置一个使用者组,如果想让新条目发送给使用者,我可以设置最后已发送的条目ID为$。

        $并不是+,它们表达的是两件事,+是所有流中可以达到的最大ID,而$是一个给定流中所含有的给定条目中最大的ID,API通常都可以理解+或$,但要避免一个符号表达多重意思。

       另外一个特殊ID是>,这是一个仅用在XREADGROUP命令中与使用者组读有关的符号。这个符号表示我们仅想要那些迄今从没有发送给其他使用者的条目,所有, “>”基本上就是一个使用者组中最后一条被发送的条目ID。

        最后是特殊ID “*”,它仅被用在XADD命令中,意思是为新信息自动选择一个ID。

        总之,我们有-,+,$,>和*,它们有不同的意义,被用在不同的语义中。

持久化,复制和信息安全

        流,像其他Redis数据结构一样,异步复制,并可以保持到AOF和RDB文件中。但是,隐含的是使用者组的所有状态也会被传递到AOF,RDB文件和从节点上,所以,如果一条信息在主节点是一条被挂起的信息,那么从节点也有相同的信息,类似的,系统重启后,使用者组的状态也会由AOF恢复。

       需要注意的是流和使用者组使用Redis缺省方法来保持和复制,所以,

  • 如果信息条目的保存十分重要,AOF必须设置成strong fsync模式。
  • 缺省情况下,异步复制不能保证XADD命令或使用者组状态的变化能被成功复制:故障切换后有些东西可能会丢失,这取决于从节点从主节点收到的信息。
  • WAIT命令可以强制将变化传递到从若干节点上去。要注意虽然此操作不太可能造成数据丢失,但由Sentinel或者Redis集群控制的故障转移过程仅是尽最大努力检查从节点,具有最新数据但缺失数据的从节点可能被提升(从变主)。

所以,如果设计一个使用Redis流和使用者组的应用,应确保你清楚此应用的在故障时的功能属性、相应的配置,以及它在应用场景下是否足够安全。

从流中删除指定信息

        流也有一个特别的命令,指定ID,可从条目中间位置删除条目。通常情况下,对于一个仅具有添加功能的数据结构,这看起来可能有些奇怪,但实际上,对一些应用,例如有隐私规则的应用,具有意义。这个命令就是XDEL,参数是流名后面加上那些要删除的ID。

> XRANGE mystream - + COUNT 2
1) 1) 1526654999635-02) 1) "value"2) "2"
2) 1) 1526655000369-02) 1) "value"2) "3"
> XDEL mystream 1526654999635-0
(integer) 1
> XRANGE mystream - + COUNT 2
1) 1) 1526655000369-02) 1) "value"2) "3"

      在目前的实现中,内存是随着宏节点(macro node)为空才被回收的,因此,该命令可能不会回收内存,你不应滥用该命令。

零长度的流

        流与其他Redis数据结构的有一个不同,当不包含任何元素时,其他数据结构本身也被删除了,这是调用删除元素命令的一个副作用,例如,用ZREM删除sorted set中最后一个元素时,它也将被完全删除。流则不同,它允许是空,不管是通过设置MAXLEN选项为0(XADD和XTRIM命令)还是用XDEL命令。

        它们不一样的原因在于流与使用者组相关联,我们不希望仅因为流中没有信息条目了就丢掉使用者组的信息。目前,即使没有使用者组关联的流也没有被删掉,但在以后也许会发生变化。

处理一条信息的全部时延

         非阻塞流命令,像XRANGE、XREAD、或不带BLOCK选项的XREADGROUP命令,与其他Redis命令一样,讨论它们的时延没有意义,有意义的是关心它们在Redis参考文档中列出的时间复杂度。在进行范围读取时,流命令至少与sorted set命令一样快,XADD也非常快,在一台中等性能的机器上,如果采用管道,XADD可以很轻松每秒插入五十万至一百万条数据。

为使用者服务的阻塞过程怎么工作

       在提供性能测试前,有必要理解Redis是采用什么模型来分派信息的(用通常的话说,等待数据产生的阻塞操作是如何管理的)

  • 采用一个哈希表,将流与等待这个流的使用者(至少有一个阻塞的用户)映射起来,因此,某流收到数据后,我们就可以将数据发给等待的用户。
  • 当用XADD命令进行写操作时,signalAsReady()被调用,因为有阻塞的使用者需要流的数据,这个函数把流名关键字放入待处理的一个列表中, 这些“已有数据的流(ready keys)”将在后续的过程被处理,所以,在同一个处理周期内,有可能流会接收多个数据写入。
  • 最后,在处理周期返回以前,这些“已有数据的流”被处理,如果可性,等待这些流的用户会收到信息,也就是使用者请求的有效范围内的信息条目。

       基本上,你可以看出,处理周期返回前,调用XADD的用户回复信息和阻塞等待信息的用户的回复信息,都会被放到输出缓存区内,所以这些用户几乎会同时收到信息。

       这一模型是基于“推“模式的,因为将信息添加到使用者缓存区的行为是由调用XADD所引起的,这一过程的时延也是可以准确预计的。

时延测试结果

        为了测试时延特性,采用Ruby程序,多个实例做了一个测试,将具有计算机毫秒时间域的信息推到流中,并从使用者组中读取,处理它们。处理的过程包括比较当前计算机时间与信息中的时间,从而得到总的时延。

       这个测试程序不做优化,运行在一台两核计算机上,Redis也运行在其中,这是为了提供一个未优化场景下的测试结果。信息按每秒10K的速率产生,以10个用户同时从同一个用户组读取并处理信息。

获得的结果如下:

Processed between 0 and 1 ms -> 74.11%

Processed between 1 and 2 ms -> 25.80%

Processed between 2 and 3 ms -> 0.06%

Processed between 3 and 4 ms -> 0.01%

Processed between 4 and 5 ms -> 0.02%

99.9%的请求时延不大于2毫秒,余下的值也非常接近平均值。

      即使流中有成百上千万的未确认信息,也不会影响测试结果,大部分请求的时延非常短。

      以下是一些说明:

  • 这里我们处理的速率达到10K/每一周期,这意味着XREADGROUP的COUNT的参数设置为10000,这样会增加很多时延,但是必需的,因为需要让慢的使用者能跟上信息产生速度,所以,在实际的环境中,时延会小很多。
  • 做测试的这个硬件系统比当前的标准系统慢很多。
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Spring面试题(二)

    一、Spring概述 1、什么是 spring? 一、Spring概述 1、什么是 spring?Spring是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程…...

    2024/4/16 4:53:23
  2. 专访美团外卖曹振团:天下武功唯快不破

    本文转自InfoQ中文网站,首发地址:http://www.infoq.com/cn/news/2016/06/Meituan-take-away马云曾经说过:世界是懒人创造出来的。在“懒人”们的推动下,O2O的战火已经燃烧到了外卖行业。据报告,2015年外卖市场年交易额已经达到450余亿元,其中美团外卖从2013年底上线以来,…...

    2024/4/1 2:34:37
  3. Spring高级面试篇(一)

    一、Spring框架 1、什么是 Spring 框架?Spring 框架有哪些主要模块?Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。Spring 帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring 框架本身亦是按照设计模…...

    2024/4/16 4:53:54
  4. 知识图谱入门 【六】- 知识融合

    知识图谱入门 【一】- 认识图谱技术知识图谱入门 【二】- 知识表示与知识建模知识图谱入门 【三】- 知识抽取知识图谱入门 【四】- 知识挖掘知识图谱入门 【五】- 知识存储知识图谱入门 【六】- 知识融合知识融合简介知识融合,即合并两个知识图谱(本体),基本的问题都是研究怎…...

    2024/4/17 21:20:23
  5. 学习笔记(2):第09章-局域网技术-局域网拓扑结构

    立即学习:https://edu.csdn.net/course/play/4226/73985?utm_source=blogtoedu物理拓扑 carrier sense mutiple access with collision detection csma/cd 令牌环网 IEEE802.3 802.11...

    2024/4/6 16:51:31
  6. 设计模式实战之桥接模式

    1 定义 将抽象部分与它的实现部分分离,使之任意删减,而无需受其它约束 2 结构Abstraction: 定义抽象类的接口,维护一个指向Implementor类型对象的指针,将Client的请求转发给它的Implementor.RefinedAbstraction扩充由Abstraction定义的接口.定义了基于基本操作的较高层次的操…...

    2024/4/16 4:52:58
  7. Flink常见的面试问题汇总

    文章目录11.1.面试题一:应用架构,公司怎么提交的实时任务,有多少 Job Manager?11.2.怎么做压力测试和监控?11.3、为什么使用 Flink 替代 Spark?11.4、Flink 的 checkpoint 存在哪里?11.5、问题:如果下级存储不支持事务,Flink 怎么保证 exactly-once?11.5.1、Flink …...

    2024/4/19 19:27:44
  8. Java枚举(Enum)类型使用的正确姿势

    关于Java Enum的介绍及原理参见 Java枚举(Enum)类型的基本介绍与原理探求 Enum类型的基本使用 定义一个枚举类的主要作用就是在逻辑代码中对某个变量的值进行比较。同样以季节的枚举类SeasonEnum为例,看一下以下比较方式:SeasonEnum season = SeasonEnum.SPRING;Assert.asser…...

    2024/4/4 20:24:11
  9. 使用设计模式出任CEO迎娶白富美(2)--老板就喜欢聊设计模式?

    一个朋友 夜晚的烟雾随晨光飘散,逝水比喻着时光的荏苒。 二毛从一个悲伤的梦中醒过来,梦的最后一幕是一望无际的草原,淡淡的身影渐渐的远去。 这时,一个电话响起,通讯录显示:老猫,二毛突然开心起来。 老猫是二毛大一届学长,说起来奇葩,老猫是因为喜欢林林而林林却喜欢…...

    2024/4/16 4:53:59
  10. MoviePy v2.0.0.dev1尚不成熟,不建议大家使用

    ☞ ░ 前往老猿Python博文目录 ░ 在《重要消息:MoviePy v2.0.0.dev1预发布版本已经可以下载安装使用》之后老猿就安装了MoviePy v2.0.0.dev1这个版本,但使用这么长时间后发现这个版本问题比较多,以前1.03解决的一些BUG都出来了,同时除了发现time_mirror性能提升很大外,也…...

    2024/4/16 4:53:13
  11. 技术交流(2)--精准水表检测台

    1. 背景 新入职几个月的员工,在老员工的带领下,开发精准水表检测台软件部分。以下为其工作总结。 2. 内容...

    2024/4/18 5:39:37
  12. d神奇的内标签

    static foreach (T; Types)() {innerloop: while (haveMoreData){...break innerloop;...}} ();...

    2024/4/19 11:41:56
  13. Python数据分析学习笔记三--Pandas数据清洗

    前言 上一次我们已经学习了Pandas的基础知识,接下来让我们一起继续探索Pandas的魅力吧~ - ~ 第一步当然是导入相应的库啦! import numpy as np import pandas as pd from pandas import DataFrame好了,让我们开始这次清洗活动吧。GOGOGO!!! 1 pandas处理空值 首先我们先定义…...

    2024/4/1 2:34:26
  14. 如何在h5页面中调用摄像头来完成拍照之类的操作

    一.该案例情况框架:vue;运行环境:PC;二.准备在pc端中需要使用https地址才可以访问到摄像头流信息,所以在生产环境中,我们可以通过vue.config.js来配置localhost的https地址在正式环境中,可以给域名配置https证书达到要求,所以影响不大vue.config.js主要代码/* webpack配…...

    2024/4/16 5:02:39
  15. 05-云数据中心IT基础设施层概述

    云数据中心IT基础设施层概述1.云数据中心架构硬件基础设施层:各种各样的服务器,存储设备,网络设备,提供计算,存储,网络资源云平台层:华为FsionSphere解决方案,使用FusionCompute或VMware vSphere虚拟化软件,可以底层物理服务器和存储设备虚拟化成计算资源和存储资源。…...

    2024/4/16 5:01:28
  16. Freemarker编写ES语句 JSON解析

    Freemarker编写ES语句 JSON解析Freemarker编写ES语句 JSON解析模板引擎语句工具类Configuration的配置读取模板引擎 Freemarker编写ES语句 JSON解析 业务上需要使用ES json语句做检索。又想类似Mybatis Mapper SQL写法,比起ES的API,SQL语句的可读性较高。遂采用Freemarker模板…...

    2024/3/28 18:29:22
  17. 顺序表和链表的不同之处(整理)

    1.存储空间方面 顺序表需要一次性预先分配,链表可在需要时进行再次分配 2.存储密度方面 顺序表存储率为100%,即存储密度等于1;而链表的存储率小于100%,即存储密度小于1 3.存储效率方面 顺序表根据其可进行随机访问的特性,支持随机存取;链表只能采取顺序存取,如要读取链表…...

    2024/4/16 5:02:29
  18. 19-1 JavaScript基础 运算符

    1 - 运算符(操作符) 1.1 运算符的分类 运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。 JavaScript中常用的运算符有:算数运算符 递增和递减运算符 比较运算符 逻辑运算符 赋值运算符1.2 算数运算符算术运算符概述 概念:算术运算使用…...

    2024/4/16 5:02:39
  19. Javaweb生成验证码实例操作

    验证码是网页中很常见的一个功能,基本所有实现都需验证码验证; 接下来就是如何实现基本的验证码的生成: 1.首先定义一个用来生成验证码的JAVA基本类: package cn.java.code; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletResponse; import java.aw…...

    2024/4/18 22:30:53
  20. linux中su命令的实现

    linux中su命令的实现 //su.c #include <stdio.h> #include <sys/types.h> #include <string.h> #include <unistd.h> #include <termios.h> #include <shadow.h> #include <assert.h> #include <pwd.h> #include <stdlib.h…...

    2024/4/16 5:02:44

最新文章

  1. 如何在Windows 11上退出安全模式?这里提供详细步骤

    序言 安全模式是对电脑进行故障排除的强大工具。通过仅使用关键和必要的软件和服务启动电脑,它可以帮助你确定后台进程是否干扰了你的正常日常使用,或者是否有任何第三方软件导致电脑出现问题并使其难以使用。 如果你想退出安全模式,最简单的方法是重新启动你的电脑。只要…...

    2024/4/20 14:26:23
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理

    Windows系统C盘空间优化进阶&#xff1a;磁盘清理与Docker日志管理 文章目录 Windows系统C盘空间优化进阶&#xff1a;磁盘清理与Docker日志管理磁盘清理工具 使用“运行”命令访问磁盘清理利用存储感知自动管理空间清理WinSxS文件夹结合手动清理策略 小结删除临时文件总结&…...

    2024/4/20 11:51:48
  4. 方案分享 | 嵌入式指纹方案

    随着智能设备的持续发展&#xff0c;指纹识别技术成为了现在智能终端市场和移动支付市场中占有率最高的生物识别技术。凭借高识别率、短耗时等优势&#xff0c;被广泛地运用在智能门锁、智能手机、智能家居等设备上。 我们推荐的品牌早已在2015年进入指纹识别应用领域&#xff…...

    2024/4/16 10:23:30
  5. vue想要突破全局样式限制又不影响别的页面样式怎么办

    <!-- 用scope盖不住全局&#xff0c;随意来个class匹配私定&#xff0c;搜索关键词&#xff1a;不要随便改&#xff0c;乱打class名 --> <style> .lkajsdfjkalsfhkljashkflhaskl .el-input.el-input--default.el-input--suffix { width: 160px !important; } …...

    2024/4/17 1:29:00
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/19 14:24:02
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/19 18:20:22
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/19 11:57:31
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/19 11:57:31
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/19 11:57:52
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/19 11:57:53
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/19 11:58:14
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/19 11:58:20
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/20 7:40:48
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/19 11:58:39
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/19 11:58:51
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/20 3:12:02
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/19 11:59:15
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/19 11:59:23
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/19 11:59:44
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/19 11:59:48
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/19 12:00:06
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/19 16:57:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/19 12:00:25
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/19 12:00:40
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57