我需要读取一个用ISO-8859-1(也称为latin1)编码的文件,如下所示:
var file_contents = fs.readFileSync("test_data.html", "latin1");
Run Code Online (Sandbox Code Playgroud)
但是,Node抱怨"latin1"或"ISO-8859-1"不是有效编码("错误:未知编码").
编码readFileSync接受的是什么?
在使用C/C++的sqlite3时,我了解到它有一个open-in-read-only模式选项,这对于避免意外的数据损坏非常方便.Python绑定中有这样的东西吗?
我正在尝试并行化一个非常简单的for循环,但这是我在很长一段时间内第一次尝试使用openMP.我对运行时间感到困惑.这是我的代码:
#include <vector>
#include <algorithm>
using namespace std;
int main ()
{
int n=400000, m=1000;
double x=0,y=0;
double s=0;
vector< double > shifts(n,0);
#pragma omp parallel for
for (int j=0; j<n; j++) {
double r=0.0;
for (int i=0; i < m; i++){
double rand_g1 = cos(i/double(m));
double rand_g2 = sin(i/double(m));
x += rand_g1;
y += rand_g2;
r += sqrt(rand_g1*rand_g1 + rand_g2*rand_g2);
}
shifts[j] = r / m;
}
cout << *std::max_element( shifts.begin(), shifts.end() ) << endl;
}
Run Code Online (Sandbox Code Playgroud)
我用它编译它
g++ -O3 …Run Code Online (Sandbox Code Playgroud) 我试图理解Haskell(OS X 10.10.5上的GHC 7.10.1)中的(绿色)线程有多贵.我知道它与真正的操作系统线程相比非常便宜,无论是内存使用还是CPU.
是的,所以我开始编写一个带有forks n(绿色)线程的超简单程序(使用优秀的async库),然后只需每个线程休眠m几秒钟.
嗯,这很容易:
$ cat PerTheadMem.hs
import Control.Concurrent (threadDelay)
import Control.Concurrent.Async (mapConcurrently)
import System.Environment (getArgs)
main = do
args <- getArgs
let (numThreads, sleep) = case args of
numS:sleepS:[] -> (read numS :: Int, read sleepS :: Int)
_ -> error "wrong args"
mapConcurrently (\_ -> threadDelay (sleep*1000*1000)) [1..numThreads]
Run Code Online (Sandbox Code Playgroud)
首先,让我们编译并运行它:
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.10.1
$ ghc -rtsopts -O3 -prof -auto-all -caf-all PerTheadMem.hs
$ time …Run Code Online (Sandbox Code Playgroud) 在32位模式编程中,我习惯int 3在我的程序中使用调试器在指定位置停止(将指令嵌入源中).现在64位似乎不起作用,在gdb下生成一个非常普通的SIGSEGV并且破坏程序超出希望("程序终止于信号SIGSEGV,分段错误.程序不再存在.").我想知道64位模式是否有另一种机制,或者我是否应该做一些缓存 - 刷新(int 3在这种情况下是动态生成的操作码(0xcc),是一些类似jit的代码).
我正在测试一个支持HTTP/2的站点,就像这样,我尝试使用okhttp发送请求:
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
.url("https://www.google.it")
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Response response) throws IOException {
Log.d("TestHttp", "OkHttp-Selected-Protocol: " + response.header("OkHttp-Selected-Protocol"));
Log.d("TestHttp", "Response code is " + response.code());
}
});
Run Code Online (Sandbox Code Playgroud)
在日志中我得到了这样的东西:
OkHttp-Selected-Protocol: http/1.1
Run Code Online (Sandbox Code Playgroud)
okhttpClient选择使用http/1.1,如何强制它使用HTTP/2?
从cython使用C++标准std :: string的最佳方法是什么?最后的cython发行版应该会让它变得简单,但我想知道为什么有std :: vector的包装器而不是std :: string ...
我几乎得到了GHC成本中心的处理......这是一个很棒的想法,你可以用它们的分析工具来修复内存泄漏.但我的问题是我在.hp分析中得到的信息太过截断了:
(1319)GHC.Conc.Signal.CAF 640
(1300)GHC.Event.Thread.CAF 560
(2679)hGetReplies/connect/c... 112
(2597)insideConfig/CAF:lvl2... 32
(1311)GHC.IO.Handle.FD.CAF 656
(2566)setLoggerLevels/confi... 208
(2571)configureLoggingToCon... 120
(2727)reply/Database.Redis.... 32
Run Code Online (Sandbox Code Playgroud)
我如何知道(2566)或(2559)中的全部成本中心堆栈是什么?是否有工具或命令行选项?
我认为让服务器自我报告其内存使用情况会很方便.
我已经阅读了手册中关于内存分析的部分,但是有一些缺点:
这就是我的问题,如何在GHC编译的正在运行的程序中跟踪不同的内存集?
假设我有一个服务器在网址上提供HTML文件,https://example.com/这是指网址上的css文件https://test.com/mystyles.css.是否可以将mystyles.css文件作为HTTP2连接的一部分与html内容一起推送,以便浏览器使用此css内容?
我试图在我的localhost上使用自签名证书创建这样的请求(我已经为我的浏览器中的两个主机预先创建了一个安全例外),通过在请求到达时发送html文件http://localhost/,然后推送css :authority或Host标头中的不同主机名/端口.但是,在整页刷新时,CSS文件是从服务器的单独请求中获取的,而不是使用推送的css文件.
请参阅此要点以获取我用于测试此文件的文件.如果我访问http://localhost:8080/那么文本是红色的,但如果我访问http://test:8080/它是绿色的,暗示如果原点是相同的,则使用推送的内容.
是否需要使用标头组合才能使用此功能?可能调用CORS?