首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin 泛型:类型参数约束

为什么需要类型参数约束在上一篇文章里,我们使用泛型定义了一个泛型列表List,使用这个列表,我们可以在使用的时候,实例化出各种具体类型的列表,比如字符串列表List、整型列表List...: List = TODO()假如我们希望实现一个泛型拓展函数,计算返回「数值类型列表」中的每一个元素的和,会发现有点棘手:因为「类型参数」T 可以是任意类型,我们根本无法编写出一个适用于...但实际上,这是误用:把这个函数用在一个非数值列表上实际上完全没有意义。...多重约束在实际工作中,我们面临的业务场景可能会对「类型参数」提出更多的要求,也就需要我们对添加更多的约束。举个具体的例子:假设我们在编写一个打印机程序,打印机用Printer类表示。...我想 QA 同学在回归其他打印机设备的时候,心里想得肯定是给编写代码的你寄刀片吧?利用范型约束实现非空范型Kotlin 有一个为人称道的特性:不可空。但当我们使用范型时,这个特性在不幸的失效了。

2.3K31

Python数据结构与算法笔记(2)

当输入表达式被完全处理时,检查opstack,仍然在栈上的任何运算符都可以删除并加到输出列表的末尾。...如果是,将currentSecond作为时间戳添加到队列 如果打印机不忙并且有任务在等待 从打印机队列中删除一个任务并将其分配给打印机 从currentSecond...无序列表可能的操作: List()创建一个新的空列表,不需要参数,并返回一个空列表 add(item)向列表中添加一个新项,需要item作为参数,不返回任何内容,假定item不在该列表中 remove(...,需要pos作为参数并返回项,假定该项在列表中 有序列表是项的结合,其中每个项保存基于项的一些潜在的特性的相对位置,排序通常是升序或降序,并且我们假设列表具有已经定义的有意义的比较运算,需要有序列表操作与无序列表操作相同...并返回布尔值 size()返回列表中的项数,不需要参数,返回一个整数 index(item)返回项在列表中的位置,需要item作为参数并返回索引,假定该项在列表中 pop()删除并返回列表中的最后一个项

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    教你一个“必杀技”

    正常来说,在地址栏中输入\\服务器名称或者IP地址后,应该弹出窗口,让访问者输入用户名密码 然后才能打开共享的服务器,访问共享文件夹、安装共享打印机。 为什么没有提示输入用户名密码的对话框呢?...设置-》安全设置-》本地策略-》用户权限分配 ,然后在右侧双击打开“拒绝从网络访问这台计算机”,删除“Guest”账号,“确定”; 4、事情还没完呢,还需要在“安全选项”里面,把“账户:使用空密码的本地账户只允许进行控制台登录...成功执行第二个命令后,打开“此电脑”,在地址栏中输入\\pc1,无需输入用户名和密码,直接就打开了共享路径,点击鼠标右键,再点击“连接”就能安装共享打印机了; 顺便提醒两点:1、网络共享经常出问题,其实并不是系统不稳定...,多半是系统补丁引起的,如果你昨天还能打印到共享打印机,今天上班却发现无法打印,那十有八九是系统补丁惹的祸,到控制面板》程序和功能》查看已安装的更新,然后找到最新安装的补丁,重启后,基本上就能解决问题;...,打印服务器通电; 第二步,设置打印服务器IP地址; 第三步,检查打印服务器是否配置正确,USB打印机是否已经识别,然后就可以在电脑上安装TCP/IP的网络打印机了。

    4.6K20

    Spread for Windows Forms高级主题(7)---自定义打印的外观

    当你执行打印操作时,你将一个特定的表单发送给使用这些设置的打印机。如果你想为不同的表单使用不同的打印设置,那么你可能需要重置PrintInfo对象,然后在表单打印的间隔内做必要的修改。...Colors 获取或设置可在自定义页眉或页脚文本中使用的颜色列表。 ColStart和 ColEnd 用来打印表单的一部分。 FirstPageNumber 获取或设置打印在首页上的页码。...ShowBorder 获取或设置是否在表单的四周打印边界。 ShowColor 获取或设置是否打印在屏幕上出现的颜色。.../l /l 左对齐该项目(这是字母l或L,与Left等价) /n /n 插入一个新行 /p /p 插入页码 /pc /pc 插入页数(打印作业中的总页面数) /r /r 右对齐该项目 /tl /tl 使用长格式插入时间...如果颜色已经在Colors属性中进行了预定义,那么你可以从颜色列表中为文本指定一个颜色。 如果图片已经在Images属性中进行了预定义,你可以指定一个图片。 你可以添加文本包括页数和总的打印页数。

    3.6K70

    Python笔记(十一):多线程

    无论是在单核还是多核系统中,一个CPU看上去都是在并发执行多个进程,实际上这是通过处理器在进程间的切换来实现的,这种切换称为上下文切换。...这里说明下上下文的概念: 操作系统保持跟踪进程运行所需的所有状态信息。这种状态,也就是上下文,包括许多信息,比如PC和寄存器文件的当前值,以及主存的内容。...线程2:处理请求,并提供输出       线程3:负责返回资源 所以,一个进程实际上是由多个称为线程的执行单元组成的,每个线程都运行在进程的上下文中。...(计数器的值为0时,线程是处于阻塞状态的) 可以在IDE上运行下面的代码,看下输出。...方法 说明 qsize() 返回队列大小 empty() 如果队列为空,返回True,反之False full() 如果队列满了,返回True,反之False put(item, block=True,

    72970

    软件分享 | 第四期 Linux远程连接神器获取和安装

    简介 Xmanager是一款小巧、便捷的浏览远端X窗口系统的工具。在工作中经常使用Xmanager来登录远端的Linux系统,在X窗口系统上作图形化的操作。...就像运行在PC上的任何Windows应用程序一样,它可以无缝拼接到Linux应用程序中。在Linux/UNIX和Windows网络环境中,Xmanager 是最好的连通解决方案。 2....可以在本地PC上同时运行Linux/UNIX和Windows图形应用程序。 Xshell Xshell是一个用于MS Windows平台的强大的SSH,TELNET,和RLOGIN终端仿真软件。...Xftp能安全地在Linux/UNIX和Windows PC之间传输文件。 Xlpd Xlpd是一个用于MS Windows平台的LPD(行式打印机虚拟后台程序)应用程序。...安装了Xlpd后,带有打印机的本地PC就成为了一个打印服务器,来自不同远程系统的打印任务都能在网络环境中得到请求和处理。

    1.9K30

    披着狼皮的羊——寻找惠普多款打印机中的RCE漏洞

    这些攻击是毫无道理且极其不切实际的,让我们暂且忽略这些事实,来看看下面相关的打印机安全问题: 打印作业安全:打印作业安全主要通过两种方式暴露出来,一个是打印机托盘中已完成的文件,会被路过的人取走;或者是在一些打印机上...PJL的一项功能是对打印机上文件进行非常有限的管理,例如可以存储和删除文件,但只能在特定的位置,这是使用PJL语言在文件系统上不能逃离的一个小“监狱”。...每次打印机启动,当从DHCP服务器获得IP地址时,它也会在DHCP响应中查找一些特殊的配置选项。其中一个选项指定了一个TFTP服务器,打印机可以检索应用各种配置设置的配置文件。...: [jC1c7hZ.png] 关闭打印机,取出驱动器,就可以将驱动器上的许多文件读取到一个标准PC上。...,当硬盘连接到PC时,/Core/bin目录实际上是可见的,然而与/Windows/目录不同,它是空的: [6fhfkOm.png] 没能弄清为什么这个目录表现为空后,我们做了另一个尝试。

    1.9K80

    披着狼皮的羊——寻找惠普多款打印机中的RCE漏洞

    这些攻击是毫无道理且极其不切实际的,让我们暂且忽略这些事实,来看看下面相关的打印机安全问题: 打印作业安全:打印作业安全主要通过两种方式暴露出来,一个是打印机托盘中已完成的文件,会被路过的人取走;或者是在一些打印机上...重新启动设备后,我们可以让打印机将操作系统和固件从USB密钥安装到新的未加密的驱动器上: ? 关闭打印机,取出驱动器,就可以将驱动器上的许多文件读取到一个标准PC上。...文件“NK.bin”似乎每次都会返回,经过一番调查后,发现打印机上运行的操作系统是Windows CE的一个版本,Windows CE内核存储在/CEKERNEL/NK.bin。...检索/Core/bin 目录/Core/bin的内容更难以检索,当硬盘连接到PC时,/Core/bin目录实际上是可见的,然而与/Windows/目录不同,它是空的: ?...没能弄清为什么这个目录表现为空后,我们做了另一个尝试。 首先,我们检查了与硬盘上的/Core/关联的分区: ? ?

    1.1K30

    如何精准地用打印机在贺卡或邀请函上打字

    如何精准地用打印机在贺卡或邀请函上打字 2018-08-26 07:35 当你有一堆带有空位的贺卡或邀请函,你是准备手写呢,还是准备打字呢?...---- 准备:工具 你的贺卡或邀请函(为了描述方便,后面都称作邀请函,需要至少一张用来试验) 一个带有 Microsoft Word 或其他文档编辑软件的 PC 一把具有 1 ms 精度的尺子 一个打印机...无需关心到底是哪一个角,因为不同打印机打印的方向并不相同,我们马上会进行实验判断到底应该放到哪一角。 ? ▲ 对齐邀请函 用尺子将邀请函在 A4 纸上的轮廓勾勒出来: ?...▲ 放入打印机 第二步:制作 Word 文档 在 Microsoft Word 中新建一个文档,需要进行一些设置: 纸张大小:A4 纸张方向:横向 文档边距:0(注意这里的上下左右四个方向都要设置为 0...不断在刚刚已经打印过的邀请函上打印试错,直至所有文本框都得到满意的位置: ?

    11.8K10

    VFP在运行时扩展报表系统,这是报表转换任意格式的秘决

    当一个对象被画到报表页上的时候会触发 Render 方法。ReportListener 基类有一些内建的行为,但你可以建立并使用你自己的子类来扩展它。...例如,一个 ReportListener 可以动态地格式化一个字段,于是在某些条件下它打印的是红色的文本,而在另一些条件下它打印的是黑色文本。...CommandClauses 属性包含着对一个 Empty 对象的引用,该对象带有一些表示“使用在 REPORT 或者 LABEL 命令中的子句”的属性。表2列出了这些属性。...nObjectContinuationType指示一个field、shape、或者Line对象是否跨越一个带区或者页;它包含下面四种可能的值中的一个: 0:这个对象是空的;它不会延伸到下一带区或者页上;...GetPageHeight 无 在一个报表运行过程中返回页的高度 GetPageWidth 无 在一个报表运行过程中返回页的宽度 DoStatus cMessage 在一个报表运行的时候提供无模式的反馈

    1K21

    USB OTG简单介绍

    在USB2.O规范中也添加了USB嵌入式设备的标准——On-The-Go(OTG),它使外设能够在主机和设备之间相互切换,即当其连接至PC时,它是1个USB设备,而与其它USB设备相连接时,它便作为USB...为了实现这样的功能,在OTG中有一个新的概念——双功能设备(DRD:Dual-RoleDevice)。...对于嵌入式USB主机来说,提供大量的设备驱动程序是不现实的也没有必要,1个嵌入式USB主机仅仅需支持部分特定设备,这些设备就是它的外设列表。...那么,当2个DRD互连时,哪个设备作为主机,为什么要作为主机?为了解决这两个问题,在OTG中提出了新的协议——主机协商协议(HNP)。...比如,如果图1左边的B-Device为1个手持PDA,右边的A-Device为1个打印机。因为连接线的关系,打印机初始化为主机。

    1.4K20

    Windows连接Linux的常用工具

    它是一个一站式解决方案,这个软件包含有以下一些产品:Xmanager 3D(OpenGL),Xshell,Xftp和Xlpd。...你可以在你的本地PC上同时运行Unix/Linux和Windows图形应用程序。 Xshell是一个用于MS Windows平台的强大的SSH,TELNET,和RLOGIN终端仿真软件。...Xftp让你能安全地在Unix/Linux和Windows PC之间传输文件。 Xlpd是一个用于MS Windows平台的LPD(行式打印机虚拟后台程序)应用程序。...安装了Xlpd后,你的带有打印机的本地PC就成为了一个打印服务器,来自不同远程系统的打印任务都能在网络环境中得到请求和处理。...4、WinSCP WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。

    5.8K10

    一个活了 45 年的愚蠢 Bug!

    但是本文的作者在Windows 10上从一个USB 3.0 SSD向另一个SSD拷贝文件时却遭遇了一个44年前的bug,他把这个“愚蠢”的Bug分享到了博客上,并且引起了开发者们的回忆热潮。...在Unix中,这个点子是通过特殊目录下的特殊文件实现的,比如/dev/tty表示控制台,/dev/lp0表示第一个打印机等。...至于为什么我发现了这个无法拷贝文件的bug……这些特殊文件名是在操作系统级别实现的,而不是文件系统级别。所以这些文件名完全是合法的NTFS文件名,而我在Linux下使用这些NTFS文件系统。...实际上我希望看到更多向后兼容。 我只是觉得,在Windows 10上从一个USB 3.0 SSD向另一个SSD拷贝文件时,遇到个44年前的bug很奇妙。 就像你在宇宙空间站中被马踢了一样。...我们在这些匿名FTP上经常使用的“技巧”是:用这些特殊文件名创建一些嵌套的目录。

    57410

    第二十三章 : 打印

    和计算机一样,前 PC 时代的打印机都很大、很贵,并且很集中。1980年的计算机用户都是在离电脑很远的地方用一个连接电脑的终端来工作的,而打印机就放在电脑旁并受到计算机管理员的全方位监视。...首先,那时的打印机基本上都是打击式打印机。打击式打印机使用撞针打击色带的机械结构在纸上形成字符。这种流行的技术造就了当时的菊轮式打印和点阵式打印。...使用控制码,还能实现一些之前受限制的字体效果,比如粗体,就是让打印机先打印一个字符,然后退格再打印一遍来得到颜色较深的效果的。...这条命令用小于默认的格式产生了一个四列的列表。增加 CPI 可以让我们在页面上打印更多列。 另一种选择:a2ps The a2ps program is interesting....一个是 Berkeley 风格的(lprm),另一个是 System V 的(cancel)。在支持的选项上两者有较小的区别但是功能却几乎相同。

    49310

    Telnet,SSH1,SSH2,TelnetSSL,Rlogin,Serial,TAPI,RAW

    Telnet/SSL是带有SSL的Telnet。 四、Rlogin Rlogin起源于伯克利Unix,開始它仅仅能工作在Unix系统之间。如今已经能够在其它操作系统上执行。...五、Serial 串行指每次一个事件,它通常跟并行即一次发生多个事件相反。 在传输数据中,经常常使用到时分和空分技术。...这样的暗示并不总是正确的,由于串行媒质(比如,光纤电缆)可远远快于并行传输多个信号的媒质。   在PC中,打印机通常通过并行接口和电缆连接。从而可以较快的打印。...为了发送 RAW 格式的作业,打印server将打开一个针对打印机网络接口的 TCP 流。对于很多设备来说。这个接口将是port 9100。...假设设备返回了一个值,则解析系统文件tcpmon.ini来寻找匹配项。 假设打印机制造商提供了特定设备的特殊配置信息。则这些配置信息已经连同配置设置一起创建就绪。

    1.2K10

    利用流量保障搜索质量的实践

    一 背景 政采云的搜索服务是基于 Elasticsearch 的在线分布式搜索,为内部业务提供结构化和非结构化数据的多条件检索,支撑政采云PC端、APP端、小程序端的搜索能力。...// 仅供说明,非真实业务字段 描述:查询已上架的打印机 搜索条件: { "status": true, "keywords": "打印机" } 生成的模板: { "status": @,...// 仅供说明,非真实业务字段 描述:查询已上架的打印机 搜索条件1: { "status": true, "keywords": "打印机" } 生成的模板1: { "status": @,...优化后:测试用例首次执行的结果,自动复制到预期结果池,非首次执行将查询预期结果池。 为什么要建立预期结果池? 原因1:线上同一个搜索条件,间隔一段时间后再次搜索,存在返回结果不相同的情况。...会校验每一个返回结果的区域字段是否等于浙江,或者包含浙江。 重构测试规则 校验重点:全量对比返回结果和结果顺序。即同一搜索条件,新老接口返回值和返回顺序必须强一致。

    21720

    Python面试中8个必考问题

    这是因为带有默认参数的表达式在函数被定义的时候被计算,不是在调用的时候被计算。 因此list1和list3是在同一个默认列表上进行操作(计算)的。 而list2是在一个分离的列表上进行操作(计算)的。...(通过传递一个自有的空列表作为列表参数的数值)。 extendList的定义可以作如下修改。 尽管,创建一个新的列表,没有特定的列表参数。 下面这段代码可能能够产生想要的结果。...(如果引用变量名在自身类和更高级类中没有找到,将会引发一个属性错误。) 因此,在父类中设定x = 1,让变量x类(带有值1)能够在其类和其子类中被引用到。...然而,尝试获取列表的切片,开始的index超过了成员个数不会产生IndexError,而是仅仅返回一个空列表。 这成为特别让人恶心的疑难杂症,因为运行的时候没有错误产生,导致bug很难被追踪到。...输出的结果如下: 解释如下: 第一行的输出结果直觉上很容易理解,例如 list = [ [ ] ] * 5 就是简单的创造了5个空列表。

    898100

    代理设计模式详解(java版本)

    解析: 1,其他对象:目标对象,想要访问的对象,常被称为被委托对象或被代理对象。 2,提供一种代理:这里”一种”两个字比较重要,为什么不是提供一个呢?...5,代理类功能增强(思考装饰设计模式的思想):代理对象能直接访问到目标对象,这样它就能在调用目标对象的某个方法之前做一个预 处理,在调用方法之后进行一些结尾工作,这样就对目标对象的方法进行了增强,但是这并不是代理模式的核心思想...先讲一个真实场景,博主在的一家公司代理打印机产品,于是找到了一家做打印机的公司(Postek),然后将打印机卖给百丽集团,我们就成了代理者,postek成了被代理者。...Object invoke(Object proxy, Method method, Object[] args) throws Throwable 功能:在代理实例上处理方法调用并返回结果。...有些博客上面描述InvocationHandler的实现类是动态的代理类,其实并不是这样子的,我们在InvocationHandler中的invoke()方法中打印了第一个参数,观察第一个参数的返回值和

    18820

    关于响应式布局,你需要了解的知识点

    响应式布局,就是根据不同设备展示不同的布局,以免更方便用户浏览页面。 举个很简单的例子,我们在电脑上浏览网页,屏幕非常大,这时候可能采用的是如下图所示的布局方式。...这种布局方式很宽敞,能够容纳的内容也很多,能够最大程度地传递信息。 如果是在类似于 iPad Pro 的平板电脑上,由于屏幕大小原因,我们会使用不一样的布局。...如果是在更小的手机屏幕上,那不仅导航栏要隐藏起来,就连下面的文章列表也只能一行显示一篇文章,如下图所示。...这个例子只是为了简洁地向大家解释响应式布局的使用,在实际的项目使用中,响应式布局的使用会更加复杂一些。但无论如何复杂,它都是由最基本的单元组成。你理解了这个例子,你就能理解实战项目中的响应式布局。...举个很简单的例子,我们只想针对打印机或打印机预览使用某些 CSS 样式,那么我们可以这么写: @media print { /* … */ } 如果我们只想对除了打印机或打印机预览之外的其他所有设备适用

    51510

    CleanMyMac免费mac2023最新版清理功能介绍

    CleanMyMac确切地知道在哪里找到无用的文件,以及哪些文件可以安全删除。点击几下 - 你又回到了一台快速,干净的PC上。...2、让Windows注册表杂乱无章想象一下,必须在装满垃圾的壁橱里找到一些东西。可能需要几个小时。...3、卸载正确的方法以保持您的PC清洁大多数Windows应用程序都带有自己的卸载程序 - 除了它们并不总是删除整个程序并留下无用的缓存文件或工具栏。...zoneid=49983图片CleanMyMac软件特色1、减少扩展为什么要在PC上添加额外的负载,使用甚至不使用的工具栏和扩展?...许多垃圾文件分布在PC上的多个位置,占用大量磁盘空间。CleanMyMac可帮助您摆脱以下不需要的文件:还原点:Windows创建的备份文件。

    69610
    领券