我开始知道在Java中,LinkedList类实现了DequeList接口和接口.这对我来说有点混乱.
在计算机科学教学大纲中,我从未被教导过队列可以是一个列表,或者更确切地说,队列可以像列表一样.也就是说,列表可以做的东西,但队列不能.但是列表可以像队列一样运行.例如,Listinterface具有以下方法:
add(E e)
add(int index, E element)
Run Code Online (Sandbox Code Playgroud)
但Queue 只有以下内容:
add(E e)
Run Code Online (Sandbox Code Playgroud)
所以很明显Queue不允许在特定索引处插入,这是允许的List.其他操作也是如此,例如Queue.remove()vs. List.remove(int index),List.get(int index)vs Queue.peek()..换句话说,list是一种更通用的数据结构,可以模拟Queue.
现在能够模拟与拥有合同子集不同.也就是说,Queue不允许某些操作(索引)List并允许某些操作仅以特定方式完成(仅插入尾部并仅从头部移除).所以Queue并没有真正对合同进行"补充" List.这正是为什么Queue不在ListJava集合框架中扩展,而是扩展Collection接口.我认为这也是为什么任何一个类都不能实现这两者的原因,因为Queue合同与合同冲突List(这就是为什么它们从Collection接口分开).但是,LinkedList实现两个接口.
我也遇到了这个答案:
该
LinkedList实施情况,以满足Deque合同,所以为什么不把它实现的接口?
我仍然不明白我们怎么说" LinkedList实施恰好满足Deque合同".队列的概念不允许插入任意索引.因此,Queue界面没有这样的方法. …
我正在读这个答案,它说的是
另请注意,使用显式数组参数调用泛型vararg方法可能会默默地产生与预期不同的行为:
Run Code Online (Sandbox Code Playgroud)public <T> void foo(T... params) { ... } int[] arr = {1, 2, 3}; foo(arr); // passes an int[][] array containing a single int[] element
类似的行为在这个答案得到解释3:
Run Code Online (Sandbox Code Playgroud)int[] myNumbers = { 1, 2, 3 }; System.out.println(ezFormat(myNumbers)); // prints "[ [I@13c5982 ]"Varargs仅适用于引用类型.自动装箱不适用于基元数组.以下作品:
Run Code Online (Sandbox Code Playgroud)Integer[] myNumbers = { 1, 2, 3 }; System.out.println(ezFormat(myNumbers)); // prints "[ 1 ][ 2 ][ 3 ]"
我尝试了更简单的例子:
private static <T> void tVarargs(T ... s)
{
System.out.println("\n\ntVarargs ==========");
System.out.println(s.getClass().getName());
System.out.println(s.length);
for(T i …Run Code Online (Sandbox Code Playgroud) 我在kafka 文档中阅读了以下内容:
- 在 Kafka 中实现消费的方式是将日志中的分区划分到消费者实例上,以便每个实例在任何时间点都是分区“公平份额”的独占消费者。
- Kafka 仅提供分区内记录的总顺序,而不提供主题中不同分区之间的总顺序。
- 对于大多数应用程序来说,按分区排序与按键分区数据的能力相结合就足够了。
- 但是,如果您需要记录的总顺序,这可以通过只有一个分区的主题来实现,尽管这意味着每个消费者组只有一个消费者进程。
我在此页面上阅读了以下内容:
- 消费者从任何单个分区读取,允许您以类似于消息生产的方式扩展消息消费的吞吐量。
- 对于给定的主题,消费者也可以被组织成消费者组——组内的每个消费者都从一个唯一的分区中读取数据,并且该组作为一个整体消费来自整个主题的所有消息。
- 如果消费者的数量多于分区,那么一些消费者将处于空闲状态,因为他们没有可供读取的分区。
- 如果您的分区比消费者多,那么消费者将收到来自多个分区的消息。
- 如果您有相同数量的消费者和分区,则每个消费者都会从一个分区中按顺序读取消息。
疑问
这是否意味着单个分区不能被多个消费者消费?我们不能有一个分区和一个有多个消费者的消费者组,并让他们都从单个分区消费?
如果单个分区只能被单个消费者消费,我在想为什么这个设计决定?
如果我需要对记录进行总订单并且仍然需要并行使用它怎么办?它在 Kafka 中是可撤销的吗?或者这样的场景没有意义?
我System.out.println()在网上阅读了几篇文章,解释了Java 中的内容。他们中的大多数是这样的:
Systemis afinalclass in thejava.langpackage.outis apublic staticobject inside theSystemclass of typePrintStream.println()prints a line of text to the output stream.
My question is when we do System.out.println() in our code, why does it end up writing to the console? This article explains how we can make it write to a file by calling System.setOut(). So my question translates to where is System.setOut() …
我尝试了以下标记化示例:
tokenizer = BertTokenizer.from_pretrained(MODEL_TYPE, do_lower_case=True)
sent = "I hate this. Not that.",
_tokenized = tokenizer(sent, padding=True, max_length=20, truncation=True)
print(_tknzr.decode(_tokenized['input_ids'][0]))
print(len(_tokenized['input_ids'][0]))
Run Code Online (Sandbox Code Playgroud)
输出是:
[CLS] i hate this. not that. [SEP]
9
Run Code Online (Sandbox Code Playgroud)
tokenizer注意:的参数max_length=20。如何让 Bert 分词器将 11 个[PAD]分词附加到这句话中以使其总计20?
nlp transformer-model bert-language-model huggingface-transformers huggingface-tokenizers
我知道重命名项目根目录可能是个坏主意,但是在执行此操作时出现以下错误:
我是这样做的:
我真的不能重命名项目根目录吗?此选项如何工作?他们有没有办法在 PyCharms 中关闭项目(及其所有文件)然后重命名?
我正在尝试生成多页 pdf 文档,读取一些py文件和其他 doc 文件。我正在尝试用SimpleDocTemplate而不是 来做到这一点Canvas。现在我尝试用十六进制值给文本着色。我尝试了以下操作:
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate
from reportlab.platypus.para import Paragraph
from reportlab.lib.styles import getSampleStyleSheet
doc_content = []
styles=getSampleStyleSheet()
doc = SimpleDocTemplate("form_letter.pdf",pagesize=letter,
rightMargin=72,leftMargin=72,
topMargin=72,bottomMargin=18)
titleFormat = '<font size="16" name="Helvetica" color="#FF8100"><b><i>%s</i></b></font>'
def generateDoc(docName):
paraTitle = Paragraph(titleFormat % 'Title', styles["Normal"])
doc_content.append(paraTitle)
doc.build(doc_content)
generateDoc("temp.pdf")
Run Code Online (Sandbox Code Playgroud)
但这给了我错误
AttributeError: module 'reportlab.lib.colors' has no attribute '#FF8100'
Run Code Online (Sandbox Code Playgroud)
我也尝试过0xFF8100,但它给出了同样的错误:
AttributeError: module 'reportlab.lib.colors' has no attribute '0xFF8100'
Run Code Online (Sandbox Code Playgroud)
当我使用一些命名颜色时red,效果很好。如何使用十六进制颜色值?
我在Java HashMap 源代码中找到了以下代码:
/**
* The bin count threshold for using a tree rather than list for a
* bin. Bins are converted to trees when adding an element to a
* bin with at least this many nodes. The value must be greater
* than 2 and should be at least 8 to mesh with assumptions in
* tree removal about conversion back to plain bins upon
* shrinkage.
*/
static final int TREEIFY_THRESHOLD = …Run Code Online (Sandbox Code Playgroud) 我试图了解 Object.clone() 在 Java 中是如何工作的。我发现了以下事实:
Cloneable接口以向 Object.clone() 方法指示该方法对该类的实例进行逐字段复制是合法的。Object方法会导致抛出异常。cloneCloneableCloneNotSupportedExceptionCloneable接口不包含该clone方法。因此,实现Cloneable不负责因未实现而引发任何错误/异常clone()。Object.clone()是一个本机方法,它从此cpp方法中调用 并抛出。JVM_Clone jvm.cppCloneNotSupportedException疑点:
Q1. 为什么Java设计者会做出这样的设计选择并这样实现呢?为什么不在其自身clone()中进行定义Cloneable,如果实现类没有提供clone().
Q2。Cloneable为什么要在运行时检查实例是否实现?
Q3。有什么具体原因要在本机代码中检查它吗?
Q4。奇怪的是Object它本身并没有实现Cloneable,但提供了一个实现clone(),它反过来检查是否有任何类实现了Cloneable实现clone()。理想情况下,不应该Object实现Cloneable(声明clone())然后提供实现吗clone()?
PS:我知道在一个问题中提出多个问题是一个坏主意。但这些都是密切相关的问题。我很可能会问一个问题,比如“为什么不Cloneable包含clone()?” 但是,我觉得,为了更好地回答这个疑问,必须涵盖这一设计决策的各个微妙方面。我努力思考更多,并提出了可能的不同微妙方面,并逐点明确地询问它们,以便回答者不会错过它们并给出总体完整的答案。
我在学习Stream.limit()说道:
返回由该流的元素组成的流,其长度被截断为不超过 maxSize。
这可以理解为:
Stream.of(1,2,3,4,5,6,7,8)
.limit(3)
.forEach(i -> {
System.out.print(i + ",");
}); //prints: 1,2,3,
Run Code Online (Sandbox Code Playgroud)
但是当与其他流方法一起使用时,它具有批量处理元素的效果:
Stream.of(1,2,3,4,5,6,7)
.filter(i -> {
System.out.println("Filtering " + i + ": " + (i%2 == 0));
return i%2 == 0;
})
.map(i-> {
System.out.println("Mapping " + i + " to " + i*i);
return i*i;
})
.limit(2)
.forEach(i -> System.out.println("---> " + i));
Run Code Online (Sandbox Code Playgroud)
印刷:
Filtering 1: false
Filtering 2: true
Mapping 2 to 4
---> 4
Filtering 3: false
Filtering 4: true
Mapping …Run Code Online (Sandbox Code Playgroud) java ×6
apache-kafka ×1
collections ×1
hashmap ×1
intellij-14 ×1
java-8 ×1
java-stream ×1
nlp ×1
pycharm ×1
python ×1
reportlab ×1