我有这样的想法(不知道好坏)。我有实用程序,它通过 reglament 连接到 SQL Server 并将一些数据获取到应用程序。数据很简单(2 个 varchar 文本属性),但数据数量约为 300 万行。因此,我的应用程序非常频繁地使用网络。我可以通过编程方式减少(限制、节流等)SQL 的网络带宽使用吗DataReader
?让它运行得更慢,但不要给服务器和客户端带来压力。这个主意好不好?如果没有,我必须做什么?
到目前为止,这是代码:
using (SqlConnection con = new SqlConnection("My connection string here"))
{
con.Open();
using (SqlCommand command = new SqlCommand(query, con))
{
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
yield return new MyDBObject()
{
Date = (DateTime)reader["close_date"],
JsonResult = (string)reader["json_result"]
};
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我需要使用 PostForm 方法使用带有身份验证的代理。如果我使用类似(简化)的东西:
request, err := http.NewRequest("GET", url.String(), nil)
response, err := client.Do(request)
Run Code Online (Sandbox Code Playgroud)
我可以轻松做到request.Header.Add("Proxy-Authorization", basicAuth)
,而且效果很好。但是现在,我正在编辑第三方包,并尝试将代理添加到现有代码中:
proxyStr := "http://proxy.com:8080"
proxyURL, _ := url.Parse(proxyStr)
transport := &http.Transport{
Proxy: http.ProxyURL(proxyURL),
}
bot.Client = &http.Client{
Transport: transport,
}
resp, err := bot.Client.PostForm(method, params)
auth := "username:password"
basicAuth := "Basic " + base64.StdEncoding.EncodeToString([]byte(auth))
resp.Header.Add("Proxy-Authorization", basicAuth)
Run Code Online (Sandbox Code Playgroud)
它不起作用,在我看来,它在 string 处失败resp.Header.Add("Proxy-Authorization", basicAuth)
。在这个例子中,没有身份验证的代理工作正常。有谁知道,在这种情况下我可以使用带有身份验证的代理吗?
我的问题看起来很简单,但是我还没有解决。.用户输入金额xx.xx作为字符串。之后,我将字符串转换为浮点值(例如美元,美分),例如,将其设为655.18(float64)。然后,我需要将此金额转换为美分-655.18 * 100,结果是65517.9999999,所以当我进行强制转换时将此值转换为int,我得到65517,所以损失了1美分。我如何避免这种行为?
码:
package main
import (
"fmt"
"strconv"
)
func CheckParamsPur(sa string) (amount float64) {
amount, _ = strconv.ParseFloat(sa, 64)
return amount
}
func main() {
fmt.Print("Enter a number: ")
var input string
fmt.Scanf("%s", &input)
amount := int(CheckParamsPur(input) * (100))
fmt.Println(amount)
}
Run Code Online (Sandbox Code Playgroud) 当程序等待时,我想在控制台中创建动画。有很多简单的方法可以做到这一点,通常,我们只是在某个循环的迭代中绘制符号。让我们的代码是:
func Spinner(delay time.Duration) {
for !StopSpinner{
for _, r := range `-\|/` {
fmt.Printf("\r%c", r)
time.Sleep(delay)
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是 - 如何在控制台屏幕中不需要动画时删除动画。我尝试了转义序列,如 fmt.Print("\b") 或 fmt.Printf("\r%s", "") 但没有结果。我无法从屏幕上删除最后一个符号,它与下一个文本连接。如何擦除已打印到控制台的字符?
go ×3
c# ×1
datareader ×1
erase ×1
http ×1
proxy ×1
rounding ×1
sql-server ×1
symbols ×1
variables ×1