我正在开发一个依赖于original-project
. 我现在想通过修改original-project
. 所以我克隆github.com/y/original-project
到github.com/x/my-version
并替换了所有出现的github.com/y/original-project
with github.com/x/my-version
(包括 in mod.go
)。
但我不断收到此错误:
go: github.com/x/my-version@v0.5.2: parsing go.mod:
module declares its path as: github.com/y/original-project
but was required as: github.com/x/my-version
Run Code Online (Sandbox Code Playgroud)
即使我跑步go get -u -v -f all
或github.com/x/my-version
我可能做错了什么?
我想要实现的目标可以用代码最好地解释:
给定鞋子和服装类别:
class Shoe {
constructor(public size: number){}
}
Run Code Online (Sandbox Code Playgroud)
class Dress {
constructor(public style: string){}
}
Run Code Online (Sandbox Code Playgroud)
有一个只能容纳鞋子或连衣裙的通用盒子。不能同时包含两者:
class Box <T extends Shoe | Dress > {
}
Run Code Online (Sandbox Code Playgroud)
然后有一个实用程序类来处理移动鞋子:
class ShoeMover {
constructor(public size: number[]){}
}
Run Code Online (Sandbox Code Playgroud)
另外,还有一个用于移动连衣裙的实用程序类:
class DressPacker {
constructor(public style: string[]){}
}
Run Code Online (Sandbox Code Playgroud)
然后有一个通用的移动器,如果用Box<Shoe>
or实例化,则Box<Dress>
有一个mover
使用 theShoeMover
或 the 的方法DressPacker
:
class Move<B extends Box<Shoe> | Box<Dress>> {
private box: B;
constructor(toMove: B) {
this.box = toMove;
}
public mover(tool: ShoeMover | DressPacker) { …
Run Code Online (Sandbox Code Playgroud) 我正在学习 Axum,我想将日志记录添加到我组装的服务中,但不幸的是我无法让它工作。
我已添加 tower-http 来使用TraceLayer
并将其添加到我的应用程序中:
# Cargo.toml
[dependencies]
axum = "0.6.1"
tower-http = { version = "0.3.5", features = ["trace"] }
Run Code Online (Sandbox Code Playgroud)
use tower_http::trace::TraceLayer;
let app = Router::new()
.route("/:name/path", axum::routing::get(handler))
.layer(TraceLayer::new_for_http())
Run Code Online (Sandbox Code Playgroud)
但是当我启动应用程序并向端点发出请求时,没有记录任何内容。是否有我可能错过的配置步骤?
我相信我现在应该能够在 TypeScript 中使用 BigInt ......但是更改一些代码库以使用它,我得到“找不到名称'BigInt'。(2304)”关于为什么我会收到此错误的任何想法?
$ cat test.ts
let x = BigInt(123)
console.log(x.toString())
$ tsc test.ts
test.ts:1:9 - error TS2304: Cannot find name 'BigInt'.
1 let x = BigInt(123)
~~~~~~
Found 1 error.
Run Code Online (Sandbox Code Playgroud)
现在如何在 TypeScript 中开始使用 BigInt?
我在这里使用 Reactor Netty HTTP 客户端作为独立依赖项,即不是通过,spring-webflux
因为我不想拖入 Spring 相关依赖项
从文档中可以看出,可以发出返回的请求HttpClientResponse
import reactor.netty.http.client.HttpClient;
import reactor.netty.http.client.HttpClientResponse;
public class Application {
public static void main(String[] args) {
HttpClientResponse response =
HttpClient.create()
.get()
.uri("http://example.com/")
.response()
.block();
}
}
Run Code Online (Sandbox Code Playgroud)
事情HttpClientResponse
只包含标题和状态。从这里的 Java 文档可以看出
也可以从示例中消耗数据来做到这一点
import reactor.netty.http.client.HttpClient;
public class Application {
public static void main(String[] args) {
String response =
HttpClient.create()
.get()
.uri("http://example.com/")
.responseContent()
.aggregate()
.asString()
.block();
}
}
Run Code Online (Sandbox Code Playgroud)
但这仅以字符串形式返回 http 实体数据。没有有关标头或状态代码的信息。
我现在遇到的问题是我需要发出请求并获得响应,该响应为我提供标头、状态等以及 http 响应正文。
我似乎无法找到如何。有什么想法吗?qw
我读了关于 Rust 异步编程的书的这一部分https://rust-lang.github.io/async-book/03_async_await/01_chapter.html
我看到提到语法.await
,
然后我后来看到一个博客,其中reqwest
用于获取网址。代码如下所示:
let resp200 = client.get("https://httpbin.org/ip")
.header(CONTENT_TYPE, "application/json")
.send()
.await?
.json::<GETAPIResponse>()
.await?;
Run Code Online (Sandbox Code Playgroud)
我不明白.await?
。我知道是提取案例或从带有错误的函数返回的?
简写。Ok
但据我所知,.await
不会返回Result
,所以怎么可能.await
做?
我正在构建一个需要注入状态并且还需要提取查询参数的处理程序。
我一开始只提取状态并且有效。其代码如下所示:
#[derive(ValueEnum, Clone, Debug, serde::Deserialze, serde::Serialize)]
pub enum MyParams {
Normal,
Verbose,
}
#[derive(Debug)]
pub struct MyState {
port: u16,
}
pub async fn serve(self) {
let port = self.port;
let app = Router::new()
.route("/path", axum::routing::get(path))
.with_state(Arc::new(self));
let addr = SocketAddr::from(([127, 0, 0, 1], port));
axum::Server::bind(&addr)
.serve(app.into_make_service())
.await
.unwrap();
}
async fn path(State(middle_ware): State<Arc<MyState>>) -> impl IntoResponse {
let result = middle_ware.process().await;
(StatusCode::OK, Json(result))
}
Run Code Online (Sandbox Code Playgroud)
现在我想提取查询参数,所以我更新了代码如下:
async fn path(State(middle_ware): State<Arc<MyState>>, params: Query<MyParams>) -> impl IntoResponse {
println!("{:?}", params);
let …
Run Code Online (Sandbox Code Playgroud) sqlx 有一个查询生成器。文档可以在这里查看
我看到它支持动态构建以下形式的查询:
SELECT * FROM users WHERE (id, username) IN ((1, "test_user_1"), (2, "test_user_2"))
Run Code Online (Sandbox Code Playgroud)
但我有兴趣构建更复杂的查询,例如
SELECT * from users where id = "id" AND username = "username" AND age > "10" AND age < "70" AND last_visited < 12324235435 AND last_visited > 214324324234234
Run Code Online (Sandbox Code Playgroud)
其中任何 where 子句都是可选的。所以以下也应该动态构建
SELECT * from users where id = "id" AND age > "10" AND last_visited < 12324235435
Run Code Online (Sandbox Code Playgroud)
除了必须自己手动连接 where 字符串之外,我似乎找不到使用 sqlx 执行此操作的方法
我正在阅读Elliotte撰写的Java网络编程,在“线程”一章中,他给出了这段代码,作为可以在不同线程中运行的计算的示例。
import java.io.*;
import java.security.*;
public class ReturnDigest extends Thread {
private String filename;
private byte[] digest;
public ReturnDigest(String filename) {
this.filename = filename;
}
@Override
public void run() {
try {
FileInputStream in = new FileInputStream(filename);
MessageDigest sha = MessageDigest.getInstance("SHA-256");
DigestInputStream din = new DigestInputStream(in, sha);
while (din.read() != -1) ; // read entire file
din.close();
digest = sha.digest();
} catch (IOException ex) {
System.err.println(ex);
} catch (NoSuchAlgorithmException ex) {
System.err.println(ex);
}
}
public byte[] getDigest() { …
Run Code Online (Sandbox Code Playgroud) 我对能够发出 HTTP 请求的需求非常有限。我看到 WebClient 是 RestTemplate 的新替代品。但是好像不能用WebClient,不拖整个spring boot;这不是我想做的。有没有办法在没有 Spring Boot 的情况下使用 WebClient?
rust ×4
rust-axum ×2
typescript ×2
async-await ×1
generics ×1
go ×1
java ×1
reactor ×1
rust-sqlx ×1
rust-tracing ×1
spring ×1
spring-boot ×1