小编Kar*_*son的帖子

使用BASH如何杀死TCP端口16969?

我有一个使用端口TCP 16969的应用程序.它有时需要快速重启软件内核.但如果我发动得太快,那么我就会被锁定Exception in thread "main" java.net.BindException: Address already in use.

所以没有任何借口我想触发我的BASH脚本,它可以用16969杀死任何正在运行或监听的端口.但是我该怎么做呢?

$ lsof -w -n -i tcp:16969 # this gives me a list of 50 lines but how can i tell apply kill to all on this port?
Run Code Online (Sandbox Code Playgroud)

linux bash ubuntu tcp

13
推荐指数
4
解决办法
6万
查看次数

覆盖 FastAPI 中 jsonable_encoder 的默认编码器

我有使用Fast API 的代码,看起来像这样:

class EnumTestT(Enum):
    test_t_value = 0

object = { 
    test: test_t_value
}

enum_mapping = {
    test_t_value: "Test"
}

def enum_encoder(val: EnumTestT) -> str:
    return enum_mapping[val]

custom_encoder = {
    EnumTestT: enum_encoder
}

@app.get("/test")
async def test_get():
    return jsonable_encoder(object, custom_encoder=custom_encoder)
Run Code Online (Sandbox Code Playgroud)

问题是jsonable_encoder在默认编码器之后应用自定义编码器。有什么方法可以在默认编码器之前应用它们。因为对于Enum任何派生类,报告的是枚举值而不是映射值。

python fastapi

9
推荐指数
2
解决办法
2万
查看次数

strftime性能与snprintf

我遇到了一个有趣的性能难题,但在我开始深入研究glibc并在左右中心输入错误之前,我只想获得可能存在的任何洞察力.

我有一个代码,在其中一个函数中执行此操作:

gettimeofday( &tv, 0);
localtime_r( &tv.tv_sec, &local_tm );
char result[25];
strftime( result, 24, "%Y-%m-%d %H:%M:%S", &local_tm);
Run Code Online (Sandbox Code Playgroud)

其余代码与此问题无关.当我用这个替换它:

gettimeofday( &tv, 0);
localtime_r( &tv.tv_sec, &local_tm );
char result[25];
snprintf(result, sizeof(result), "%04d-%02d-%02d %02d:%02d:%02d",
         local_tm.tm_year+1900, local_tm.tm_mon+1,
         local_tm.tm_mday, local_tm.tm_hour, local_tm.tm_min,
         local_tm.tm_sec);
Run Code Online (Sandbox Code Playgroud)

平均而言,我的性能提升了20%.

有没有人碰到这个?这个操作系统特定吗?

c c++ performance printf strftime

7
推荐指数
1
解决办法
1709
查看次数

python 进程间共享内存持久化

有没有办法让SharedMemoryPython创建的对象在进程之间持久存在?

如果在交互式 python 会话中调用以下代码:

>>> from multiprocessing import shared_memory
>>> shm = shared_memory.SharedMemory(name='test_smm', size=1000000, create=True)
Run Code Online (Sandbox Code Playgroud)

/dev/shm/它在 Linux 机器上创建一个文件。

ls /dev/shm/test_smm 
/dev/shm/test_smm
Run Code Online (Sandbox Code Playgroud)

但是当 python 会话结束时,我得到以下信息:

/usr/lib/python3.8/multiprocessing/resource_tracker.py:216: UserWarning: resource_tracker: There appear to be 1 leaked shared_memory objects to clean up at shutdown
  warnings.warn('resource_tracker: There appear to be %d 
Run Code Online (Sandbox Code Playgroud)

并且test_smm消失了:

ls /dev/shm/test_smm 
ls: cannot access '/dev/shm/test_smm': No such file or directory
Run Code Online (Sandbox Code Playgroud)

那么有没有什么方法可以让Python中创建的共享内存对象在进程运行中持久存在呢?

使用Python 3.8运行

python shared-memory multiprocessing python-3.x

7
推荐指数
1
解决办法
2788
查看次数

使用公共列复制表数据

我需要将数据从一个表复制到另一个表.表没有所有相同的列或顺序; 但是要复制的数据总是在同一列中; foo应该将列中的数据复制到列中foo.

如果只有两个表我可以像硬编码的列名:

INSERT INTO table_target ( column1, column2, column4 ) 
  SELECT column1, column2, column4 FROM table_source;
Run Code Online (Sandbox Code Playgroud)

然而,有几十个表,并且需要进行一些额外的转换,所以如果我可以说:复制任何匹配的列并忽略其余的,那将是很好的.

我已经设法弄清楚如何获得常见列的列表,但现在我被卡住了.

SELECT src.col
  FROM (SELECT COLUMN_NAME as col
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'table_target') as trg
INNER JOIN 
  (SELECT COLUMN_NAME as col
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'table_source') as src ON (src.col=trg.col)
; 
Run Code Online (Sandbox Code Playgroud)

mysql sql

5
推荐指数
1
解决办法
479
查看次数

在C中使用函数指针的Typedef?

我是C的新手,我很难阅读这行代码并理解它:

typedef void (*getnxtbyte_t)(void *stream);
Run Code Online (Sandbox Code Playgroud)

从环顾四周,我现在知道它是指向一个函数的指针.但任何人都可以帮助我进一步澄清这一点吗?这种新型号的名称是什么?它指向什么功能?是函数的参数(void* stream)吗?

提前致谢!

c typedef function-pointers

2
推荐指数
1
解决办法
801
查看次数

SQL - joing表 - 如果不匹配则返回null

晚上,我不确定我在这里问什么,但我会尽力解释.我不是最好的SQL,但我确实尝试...

SELECT 
    qu.job_id, qu.engineer_id, qu.id AS `quote_id`, 
    jb.author, jb.image_ref, jb.job_title 
FROM 
    `ecom_quotes` qu, `ecom_jobs` jb 
WHERE 
    jb.author = 1 
AND 
    qu.job_id = jb.image_ref
GROUP BY 
    jb.image_ref
Run Code Online (Sandbox Code Playgroud)

我使用上面的方法列出用户发布的作业,并根据作业ID从其他表中获取其他信息.

问题在于,如果作业没有为其发布引号,则不会显示(qu.job_id = jb.image_ref).

所以作为一个快速修复(或者我认为),我用它替换了它

( ( qu.job_id = jb.image_ref ) OR ( jb.image_ref != '' ) )
Run Code Online (Sandbox Code Playgroud)

哪个确实有效,但是当没有与之关联的报价时它会返回一个报价ID.

有什么我可以做的吗?

mysql sql

2
推荐指数
1
解决办法
1228
查看次数

使用 Apache Pulsar 中注册的模式发布到主题

如Pulsar Schema 注册表文档中的示例所示

\n\n
Producer<User> producer = client.newProducer(JSONSchema.of(User.class))\n    .topic(topic)\n    .create();\nUser user = new User(\xe2\x80\x9cTom\xe2\x80\x9d, 28);\nproducer.send(User);\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以使用 Java 客户端注册生产者和消费者的架构。还提到其他语言的客户端不支持模式注册。

\n\n

现在是否可以从 Python API 生产者发送关于 Pulsar 主题的消息,该消息将由具有注册模式的消费者使用?例如

\n\n
processor = PulsarClient.builder()\n            .serviceUrl("pulsar://pulsarhost:6650")\n            .build()\n            .newConsumer(JSONSchema.of(User.class))\n            .topic("sometopic")\n            .subscriptionName("somesubscription")\n            .subscribe();\n
Run Code Online (Sandbox Code Playgroud)\n\n

Python:\n 导入脉冲星

\n\n
client = pulsar.Client(\'pulsar://pulsarhost:6650\')\n\nproducer = client.create_producer(\'sometopic\')\nclient.close()\n
Run Code Online (Sandbox Code Playgroud)\n

python-pulsar apache-pulsar

2
推荐指数
1
解决办法
1661
查看次数