peek

Ubuntu下的录GIF神器——Peek

老子叫甜甜 提交于 2019-12-08 18:08:31
最近一直在找Ubuntu下面录GIF好用方便的软件一直没找到,很多都是要获取录屏四角的坐标,现在终于找到了,就是我们的录GIF神器——Peek。 1 获取Peek的ppa源 sudo add-apt-repository ppa:peek-developers/stable 2 更新源 sudo apt-get update 3 安装Peek sudo apt-get install peek 使用 Peek的使用非常简单,只有录制GiF,结束录制,然后点击结束录制之后就是选择存放路径,十分的简便快捷,存放文件的格式可以选择为GIF,APNG,WebM,MP4. 作者:CristianoC 链接:https://zhuanlan.zhihu.com/p/74926901 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 来源: https://www.cnblogs.com/yibeimingyue/p/12006536.html

C++ fstream function that reads a line without extracting?

六月ゝ 毕业季﹏ 提交于 2019-12-08 15:40:16
问题 In C++, is there a function in the fstream library (or any library) that allows me to read a line to a delimiter of '\n' without extracting? I know the peek() function allows the program to 'peek' at the next character its reading in without extracting but I need a peek() like function that does that but for a whole line. 回答1: You can do this with a combination of getline , tellg and seekg . #include <fstream> #include <iostream> #include <ios> int main () { std::fstream fs(__FILE__); std:

GUAVA--集合(集合扩展工具类)

China☆狼群 提交于 2019-12-07 10:29:47
一、简介 有时候你需要实现自己的集合扩展。也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个 Itera ble,其底层实际上是遍历数据库查询的结果集。Guava 为你,也为我们自己提供了若干工具方法,以便让类似 的工作变得更简单。(毕竟,我们自己也要用这些工具扩展集合框架。) 二、Forwarding装饰器 针对所有类型的集合接口,Guava 都提供了 Forwarding 抽象类以简化装饰者模式的使用。 Forwarding 抽象类定义了一个抽象方法:delegate(),你可以覆盖这个方法来返回被装饰对象。所有其他方法 都会直接委托给 delegate()。例如说:ForwardingList.get(int)实际上执行了 delegate().get(int)。 通过创建 ForwardingXXX 的子类并实现 delegate()方法,可以选择性地覆盖子类的方法来增加装饰功能,而不 需要自己委托每个方法——译者注:因为所有方法都默认委托给 delegate()返回的对象,你可以只覆盖需要装饰 的方法。 此外,很多集合方法都对应一个”标准方法[standardxxx]”实现,可以用来恢复被装饰对象的默认行为,以提供 相同的优点。比如在扩展 AbstractList 或 JDK 中的其他骨架类时,可以使用类似 standardAddAll 这样的方 法。

GUAVA--集合(集合扩展工具类)

岁酱吖の 提交于 2019-12-06 18:36:27
一、简介 有时候你需要实现自己的集合扩展。也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个 Itera ble,其底层实际上是遍历数据库查询的结果集。Guava 为你,也为我们自己提供了若干工具方法,以便让类似 的工作变得更简单。(毕竟,我们自己也要用这些工具扩展集合框架。) 二、Forwarding装饰器 针对所有类型的集合接口,Guava 都提供了 Forwarding 抽象类以简化装饰者模式的使用。 Forwarding 抽象类定义了一个抽象方法:delegate(),你可以覆盖这个方法来返回被装饰对象。所有其他方法 都会直接委托给 delegate()。例如说:ForwardingList.get(int)实际上执行了 delegate().get(int)。 通过创建 ForwardingXXX 的子类并实现 delegate()方法,可以选择性地覆盖子类的方法来增加装饰功能,而不 需要自己委托每个方法——译者注:因为所有方法都默认委托给 delegate()返回的对象,你可以只覆盖需要装饰 的方法。 此外,很多集合方法都对应一个”标准方法[standardxxx]”实现,可以用来恢复被装饰对象的默认行为,以提供 相同的优点。比如在扩展 AbstractList 或 JDK 中的其他骨架类时,可以使用类似 standardAddAll 这样的方 法。

StreamReader, C#, peek

牧云@^-^@ 提交于 2019-12-06 12:07:00
问题 I have a StreamReader that once in a while check if it has more to read from a simple text file. It uses peek property. The problem is that when I am using peek the position is changed, althougth not suppose to. FileStream m_fsReader = new FileStream( m_strDataFileName, FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite ); StreamReader m_SR = new StreamReader(m_fsReader); Console.WriteLine("IfCanRead SR Position " + m_fsReader.Position + " and Length " + m_fsReader.Length); if (m_SR

技术精讲:Java 8 Stream API

心已入冬 提交于 2019-12-06 10:50:25
Stream(流)是在Java 8中新增的新特性,首先需要为Java 8 Stream正名:Java 8中的Stream跟Java I/O Stream(例如:InputStream,OutputStream等)没有任何的关系。Stream是Java中数据源的包装器,通过Stream我们可以快速的对数据源进行操作(例如:过滤,排序、求和等等),且Stream不对任何数据进行存储,所以Stream也不是数据结构。 ​ 在Java 8中,Stream增强了Array,List等对象操作数据的能力,Stream提供了一些列的方法使的这些原有的集合类可以轻松创建Stream对象实例。通过Stream API提供的静态方法,可以快速的生成有限/无限的数据流。特别指出,Stream只是增强了原有集合类的能力,并未对底层的源码做任何的修改。 1.Stream的工作流程 ​ 接下来,将介绍使用Java Stream的基本步骤。在Java 8中,Stream的生命周期一共有三个阶段: 1.获取数据源并创建Stream实例。数据源可以是数组、列表、对象或者I/O流 2.执行中间操作(Intermediate Operations)。中间操作可以是过滤、排序、类型转换等操作 3.执行终端操作(Terminal Operation)。终端操作主要是对最终结果进行计数、求和、创建新集合等操作 图1

请在该类型中实现一个能够得到栈中所含最小元素的min函数

假装没事ソ 提交于 2019-12-06 07:49:29
import java.util.Stack; public class Solution { Stack<Integer> stack1=new Stack<Integer>(); Stack<Integer> stack2=new Stack<Integer>(); public void push(int node) { stack1.push(node); if(stack2.isEmpty()) stack2.push(node); else if(stack2.peek()>=node) stack2.push(node); } public void pop() { if(stack1.peek()==stack2.peek()) stack2.pop(); stack1.pop(); } public int top() { return stack1.peek(); } public int min() { return stack2.peek(); } } 来源: https://my.oschina.net/u/2511906/blog/3136279

[数据结构] 栈

柔情痞子 提交于 2019-12-05 23:05:46
二、栈    栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。栈被称为一种 后入先出 (LIFO,last-in-first-out)的数据结构。   由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问。为了得到栈底的元 素,必须先拿掉上面的元素。   对栈的两种主要操作是将一个元素压入栈和将一个元素弹出栈。入栈使用 push() 方法,出 栈使用 pop() 方法(调用了pop方法后,栈顶元素也从栈中被永久性地删除了),想要预览栈顶元素可以使用peek()方法,该方法只会返回栈顶元素,而不会删除它。 // 定义一个push方法 function push(element) { this.dataStore[this.stackSize++] = element; return this; // 此处return this,等于retern的是实例对象,以便后面链式操作 } function pop() { this.stackSize--; // 数组里的元素弹出后,栈的长度应该对应-1 return this.dataStore.pop(); // 操作数组,弹出并删除栈顶元素 } function peek() { return this.dataStore[this.stackSize-1]; // 返回栈顶元素 } function

并发容器与框架——并发容器(二)

扶醉桌前 提交于 2019-12-05 22:25:37
1.何为阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。 支持阻塞的插入方法:意思是当队列满(无界队列除外)时,队列会阻塞插入元素的线程,直到队列不满。 支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。 阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。阻塞队列就是生产者用来存放元素、消费者用来获取元素的容器。阻塞队列对插入和移除两个附加操作提供了4种处理方式。 抛出异常:当队列满时,如果再往队列里插入元素,会抛出IllegalStateException("Queuefull")异常。当队列空时,从队列里获取元素会抛出NoSuchElementException异常。 ·返回特殊值:当往队列插入元素时,会返回元素是否插入成功,成功返回true。如果是移除方法,则是从队列里取出一个元素,如果没有则返回null。 ·一直阻塞:当阻塞队列满时,如果生产者线程往队列里put元素,队列会一直阻塞生产者线程,直到队列可用或者响应中断退出。当队列空时,如果消费者线程从队列里take元素,队列会阻塞住消费者线程,直到队列不为空。 ·超时退出:当阻塞队列满时,如果生产者线程往队列里插入元素,队列会阻塞生产者线程一段时间,如果超过了指定的时间

Java 8 Stream Api 中的 peek 操作

浪子不回头ぞ 提交于 2019-12-05 15:31:19
1. 前言 我在 Java8 Stream API 详细使用指南 中讲述了 Java 8 Stream API 中 map 操作和 flatMap 操作的区别。然后有小伙伴告诉我 peek 操作 也能实现元素的处理。但是你知道 map 和 peek 的区别吗? map 我们在开头文章已经讲过了,你可以去详细了解一下它,本文将重点讲解一下 peek 操作。 2. peek peek 操作接收的是一个 Consumer<T> 函数。顾名思义 peek 操作会按照 Consumer<T> 函数提供的逻辑去消费流中的每一个元素,同时有可能改变元素内部的一些属性。 这里我们要提一下这个 Consumer<T> 以理解 什么时消费。 2.1 什么是消费 (Consumer) package java.util.function; import java.util.Objects; @FunctionalInterface public interface Consumer<T> { void accept(T t); // 嵌套accept , 顺序为先执行 accept 后执行参数里的 after.accpet default Consumer<T> andThen(Consumer<? super T> after) { Objects.requireNonNull(after);