我有 ac# 网络服务。当我收到新请求时,我创建一个日志记录实例。我有许多其他类的实例来处理请求,我希望它们也记录下来。共享日志记录实例而不将其传递到构造函数或属性中的最佳方法是什么?
感谢 devstack,我运行了一个安装了 Openstack 的小型 dev vagrant box。一切运行得很好,但我无法通过 ssh 连接到我的新实例。当我尝试 ssh -i ~/.ssh/id_rsa cirros@10.0.0.2 时,我收到以下消息:
ssh connect to host 10.0.0.2 port 22: No route to host
Run Code Online (Sandbox Code Playgroud)
我的安全组规则很好,但我找不到问题。
我有 cloudformation 模板,其中包含两个具有 userdata 属性的实例。
我需要从一个实例的用户数据中获取数据并将其传递给另一个实例的用户数据。
例如(如下),需要从实例1获取“test”,并传递给实例2用户数据。
示例模板:
"instance1": {
"Type": "AWS::EC2::Instance",
"Properties": {
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#!/bin/bash\n",
"set -x\n",
"echo test\n",
]]}}}},
"instance2": {
"Type": "AWS::EC2::Instance",
"Properties": {
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#!/bin/bash\n",
"set -x\n",
//fetch the value
]]}}}},
Run Code Online (Sandbox Code Playgroud) Guava 包含用于拆分和连接字符串的实用程序,但它需要实例化 Splitter/Joiner 对象才能这样做。这些是通常只包含要拆分/加入的字符的小对象。维护对这些对象的引用以便重用它们是一个好主意,还是只在需要时创建它们并让它们被垃圾收集更好?
例如,我可以通过以下两种方式实现此方法:
String joinLines(List<String> lines) {
return Joiner.on("\n").join(lines);
}
Run Code Online (Sandbox Code Playgroud)
或者
static final Joiner LINE_JOINER = Joiner.on("\n");
String joinLines(List<String> lines) {
return LINE_JOINER.join(lines);
}
Run Code Online (Sandbox Code Playgroud)
我发现第一种方法更具可读性,但每次调用该方法时都创建一个新的 Joiner 似乎很浪费。
应该使用什么来在 Swift 中创建类的实例,为什么?
请解释在 Swift 中创建实例过程中 let 和 var 的用法
以下是代码:-
class ConstantTest{
let constant: String
init(constant: String) {
self.constant = constant
}
func printConstant() {
print(constant)
}
}
let constanttest = ConstantTest(constant: "Hello")
constanttest.printConstant()
var test = ConstantTest(constant: "Hie")
test.printConstant()
Run Code Online (Sandbox Code Playgroud) 我试图通过调用创建类的主程序之外的方法来删除类的实例。我通过搜索发现,为了进行垃圾收集,实例必须没有引用者。del在主程序中使用语句可以做到这一点,但我还需要通过方法删除实例,否则实例将很快堆积起来。我的代码是这样的:
class Agent_type:
def __init__(self, type_name, properties):
self.type_name = type_name
self.properties = properties
self.agent_set = set()
class Agent:
def __init__(self, agent_type):
self.properties = agent_type.properties
self.agent_type = agent_type
agent_type.agent_set.update([self])
def kill(self):
self.agent_type.agent_set.remove(self)
del self
def kill(agent):
agent.agent_type.agent_set.remove(agent)
del agent
programmer = Agent_type('programmer', {'language' : 'python'})
agent_1 = Agent(programmer)
print(agent_1)
print(programmer.agent_set)
agent_1.die()
# kill(agent_1)
print(programmer.agent_set)
print(agent_1)
del(agent_1)
print(programmer.agent_set)
try:
print(agent_1)
except:
print("agent deleted")
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
<__main__.Agent object at 0x01A59290>
{<__main__.Agent object at 0x01A59290>}
set()
<__main__.Agent object at 0x01A59290>
set()
agent deleted …Run Code Online (Sandbox Code Playgroud) 我正在使用express 和sequelize 来创建REST API。我想只保留数据库的一个实例,并在我可能创建的所有路由中使用它。我的第一个想法是应用程序运行后立即创建实例。像这样的东西。
const express = require('express')
const databaseService = require( './services/database')
const config = require( './config')
const userRoute = require( './routes/user')
const app = express()
databaseService.connect(config.db_options).then(
connectionInstance => {
app.use('user', userRoute(connectionInstance))
app.listen(3000)
}
)
Run Code Online (Sandbox Code Playgroud)
我还没有见过这样的事情,所以我相信这不是一个好方法。
有任何想法吗 ?
我需要遍历所有 Word 实例,无论是由用户、自动化、zumbis 等打开的。
我将描述到目前为止的所有步骤:我看到并实施了我在这里得到的解决方案;
Do
For Each objWordDocument In objWordApplication.Documents
OpenDocs(iContadorDocs - 1) = objWordDocument.Name
OpenDocs(iContadorDocs) = objWordDocument.path
iContadorDocs = iContadorDocs + 2
ReDim Preserve OpenDocs(iContadorDocs)
Next objWordDocument
iWordInstances = iWordInstances + 1
objWordApplication.Quit False
Set objWordApplication = Nothing
Set objWordApplication = GetObject(, "Word.Application")
Loop While Not objWordApplication Is Nothing
Run Code Online (Sandbox Code Playgroud)
它有效,但是:
为了迭代所有单词实例,我们必须 GetObject 并关闭它,循环直到没有更多打开的实例,然后重新打开我关心的所有内容
这需要很多时间和 R/W 周期和磁盘访问
并且当然必须在 Word 之外完成,因为它可能会先关闭运行实例的代码,或者在循环中间...
所以,经过一些谷歌搜索,我看到了一些直接访问流程的例子,这里和这里是 VB。
我设法获得了所有 Winword.exe 实例的 PID,主要是对VBForums的代码进行了一些修改:
仅显示修改后的代码段:
Do
If …Run Code Online (Sandbox Code Playgroud) 多年来,我一直将 python 用于科学目的。我最近对类编写更加熟悉,但我觉得我缺少一些关于实例化类的标准方法的东西。
假设我定义了一个类MyClass。
class MyClass:
def __init__(self):
pass
Run Code Online (Sandbox Code Playgroud)
然后我知道我可以简单地映射x到一个实例MyClass
x = MyClass()
Run Code Online (Sandbox Code Playgroud)
这工作得很好,完全符合我的预期。
然而,在我看来,当我使用代码从标准库或numpy或者scipy,我不创建以同样的方式对象:据我所知,我一般不使用类的名称来实例化。根据我的理解,我会说这意味着我既不使用类方法也不使用类的默认构造函数,而是使用在类之外定义的其他函数。
例如,numpy的random模块使用一个类Generator来生成随机数。但是,numpy明确建议不要使用类构造函数来获取Generator实例,而是使用模块中的default_rng函数random。所以如果我想生成随机数,我使用
rng = numpy.random.default_rng()
Run Code Online (Sandbox Code Playgroud)
创建一个Generator实例。这是在不明确使用类名的情况下完成的。
在我看来,我使用的大部分代码都是用后一种方式编写的。为什么呢?直接调用默认类构造函数在某种程度上被认为是不好的做法吗?在模块中使用单独的函数来创建类实例是否被认为是更好的做法?仅仅是因为在创建类的实例之前通常必须进行一些预处理吗?(我想不是,因为那样的话,为什么不在类的初始化中这样做呢?)
如果这已经被问过/回答过很多次了,我很抱歉——我很难确定问题的实际是什么,因此不知道要搜索什么。
本质上,我定义了一个类:
class (MonadIO m) => Logger m where ...
Run Code Online (Sandbox Code Playgroud)
然后我有一个类型(我想说类型同义词,但我不确定这是否是正确的“术语”):
type ResourceOpT r m a = StateT (ResourceCache r) m a
Run Code Online (Sandbox Code Playgroud)
为什么这个实例是完全有效的:
instance (MonadIO m) => Logger ( StateT s m )
Run Code Online (Sandbox Code Playgroud)
但不是这个(我想第一个更抽象/更可取,但我试图理解为什么):
instance (MonadIO m) => Logger ( ResourceOpT r m )
Run Code Online (Sandbox Code Playgroud)
根据我的定义,两者不应该是等效的ResourceOpT吗?具体来说,我得到的错误是:
Run Code Online (Sandbox Code Playgroud)The type synonym 'ResourceOpT' should have 3 arguments, but has been given 2 In the instance declaration for 'Logger (ResourceOpT r m)'
我有一种感觉,我正在做的事情在概念上“应该”起作用,但要么我的语法错误,要么我遗漏了某些东西(可能是语言扩展),或者应该让它起作用。
无论如何,我很想得到您的意见并了解为什么这是错误的以及为什么我应该/不应该这样做。
提前致谢。