小编mch*_*bok的帖子

Spring - 将响应下载为文件

我正在使用AngularJS和Spring编写应用程序.我想向服务器发送请求并下载从控制器返回的响应作为文件.在控制器中,我有csv文件的内容(作为字符串),即1;2;3;4(1行,4列).将此响应作为文件下载的最简单方法是什么?

下面,我发布了我的简化代码.在Spring控制器中:

@RequestMapping(value = "/csv", method = GET)
@ResponseBody
public String getCsvFile() {
    return getCsvContent();
}
Run Code Online (Sandbox Code Playgroud)

在javascript(AngularJS)

return $http({method: 'GET', url: 'csv/'});
Run Code Online (Sandbox Code Playgroud)

我也试图写入响应流(下面),设置标题,但在客户端我总是把这个内容作为字符串 - 而不是作为要下载的文件.

@RequestMapping(value = "/csv", method = GET)
@ResponseBody
public void getCsvFile(HttpServletResponse response) {
    response.setContentType("application/csv");
    response.setHeader("Content-Disposition", "attachment; filename=file.csv");
    response.setContentLength(getCsvContent().getBytes().length);
    ServletOutputStream out = response.getOutputStream();
    out.write(getCsvContent());
    out.flush();
    out.close();
}
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何正确编写控制器的方法,以便在客户端下载响应作为文件?

spring angularjs

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

通过访问chrome.devtools api调试Chrome扩展程序

我是Chrome扩展程序开发的初学者.我需要扩展现有的扩展(angularjs-batarang),但是我在调​​试方面遇到了一些问题.

manifest.json 有条目:

  "background": {
    "page": "background.html"
  },
  "devtools_page": "devtoolsBackground.html"
Run Code Online (Sandbox Code Playgroud)

问题是:如何调试devtools_page?我添加了manifest.json其他条目 "options_page": "devtoolsBackground.html",当我将此扩展程序添加到Chrome时,我有可能从中运行options页面chrome://extensions.它起作用,因为应用程序在断点处停止.但不幸的是,我无法访问chrome.devtoolsAPI.所以这不是解决方案.

我该如何调试它并有权访问此API?

debugging google-chrome google-chrome-extension google-chrome-devtools

17
推荐指数
1
解决办法
4942
查看次数

OpenMP - 只创建一次线程

我尝试使用OpenMP编写简单的应用程序.不幸的是我有加速问题.在这个应用程序中,我有一个while循环.该循环的主体由一些指令组成,这些指令应该顺序完成,一个循环.我用它#pragma omp parallel for来实现循环并行.这个循环没有太多工作,但经常被调用.

我准备两个版本的for循环,并在1,2和4个核心上运行应用程序.
版本1(for循环中的4次迭代):22秒,23秒,26秒.
版本2(for循环100000次迭代):20秒,10秒,6秒.

正如您所看到的,当for循环没有太多工作时,2和4核心的时间高于1核心.我想原因是#pragma omp parallel for在while循环的每次迭代中创建新线程.所以,我想问你 - 是否有可能创建一次线程(在while循环之前),并确保while循环中的某些作业将按顺序完成?

#include <omp.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(int argc, char* argv[])
{
    double sum = 0;
    while (true)
    {
        // ...
        // some work which should be done sequentially
        // ...

        #pragma omp parallel for num_threads(atoi(argv[1])) reduction(+:sum)
        for(int j=0; j<4; ++j)  // version 2: for(int j=0; j<100000; ++j)
        {
            double x = pow(j, 3.0);
            x = sqrt(x); …
Run Code Online (Sandbox Code Playgroud)

c++ openmp

5
推荐指数
2
解决办法
7720
查看次数

垂直展开div

我有div的简单问题.我想创建一个覆盖整个屏幕的大div("容器")并将其他两个div("A"和"B")放入其中."A"的高度为200px,我希望"B"能够覆盖左侧图片上的剩余空间.下面我粘贴我的代码,但它无法正常工作,因为"B"也在"容器"之外,如右图所示.有谁知道如何扩展"B"以覆盖左侧图片中"容器"中的剩余空间?我很感激答案.

我想得到什么 我的代码生成的结果

的index.html

<html>
<head>
<link rel=stylesheet href="style.css" type="text/css" media=screen>
</head>
<body>
<div id="container">
    <div id="A">text</div>
    <div id="B">text</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

style.css文件

#container {
    border-color: blue;
    width: 100%;
    height: 100%;
}

#A {
    border-color: green;
    height: 200px;
    min-height: 200px;
    max-height: 200px;
}

#B {
    border-color: red;
    height: 100%;
    overflow: hidden;
}

#A, #B, #container {
    border-style: solid;
    border-size: 1px;   
}
Run Code Online (Sandbox Code Playgroud)

html css

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

获取Spring Security中的所有登录用户

我想获得当前登录我的应用程序的所有用户的列表.我知道,我应该SessionRegistry在我的代码中注入调用getAllPrincipals()方法.不幸的是,我总是得到空名单.它似乎SessionRegistry不是填充,我不知道如何制作它.我知道,在StackOverflow上有类似的问题,但我仍然有解决问题的问题.首先,我将此代码添加到我的web.xml中:

<listener>
    <listener-class>
        org.springframework.security.web.session.HttpSessionEventPublisher
    </listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

据我所知,它允许获取有关会话的生命周期(创建,销毁)的信息.就这样.我向前迈进了很大的问题.我的安全bean文件如下:

<beans:bean id="successAuth" class="pl.fp.microblog.auth.SuccessAuth"/>
<beans:bean id="failureAuth" class="pl.fp.microblog.auth.FailureAuth"/>

<http auto-config="true">
    <intercept-url pattern="/" access="ROLE_USER" />
    <intercept-url pattern="/profile/*" access="ROLE_USER" />
    <form-login 
        login-page="/login"         
        authentication-success-handler-ref="successAuth"
        authentication-failure-handler-ref="failureAuth"
        username-parameter="username"
        password-parameter="password"           
        login-processing-url="/login_processing_url"
    />          
    <security:logout logout-url="/logout_processing_url"/>  
    <session-management>
        <concurrency-control max-sessions="1" session-registry-alias="sessionRegistry"/>
    </session-management>
</http>

<beans:bean id="saltProvider" class="org.springframework.security.authentication.dao.ReflectionSaltSource">
    <beans:property name="userPropertyToUse" value="username"></beans:property>
</beans:bean>

<beans:bean id="userService" class="pl.fp.microblog.auth.UserService">
    <beans:property name="userDAO" ref="userDAO"/>
</beans:bean>

<authentication-manager>
    <security:authentication-provider user-service-ref="userService">
        <password-encoder hash="sha-256">
            <security:salt-source ref="saltProvider"/>
        </password-encoder>         
    </security:authentication-provider>
</authentication-manager>
Run Code Online (Sandbox Code Playgroud)

在这里我调用getAllPrinciples()方法:

@Transactional
@Controller
public class SiteController {
    @Autowired
    private UserDAO userDAO; …
Run Code Online (Sandbox Code Playgroud)

session spring spring-security

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

并行Dijkstra

我正在使用OpenMP来制作Dijkstra算法的并行版本.我的代码由两部分组成.第一部分仅由一个线程(主)执行.该线程从列表中选择新节点.第二部分由其他线程执行.这些线程改变了从源到其他节点的距离.我的代码中不幸的是错误,因为执行第二部分的许多线程之一突然"消失".可能数据同步存在问题,但我不知道在哪里.如果有人能告诉我我的错误在哪里,我将不胜感激.这是代码:

map<int, int> C;
map<int, int> S;
map<int, int> D;
int init;
int nu;
int u;
int p = 3;//omp_get_num_threads();
int d;
int n = graph->getNodesNum();

#pragma omp parallel shared(n, C, d, S, init, nu, u, D, graph, p) num_threads(p)
{
    int myId = omp_get_thread_num();
    if (myId == 0)
    {
        init = 0;
        nu = 0;

        u = to;
        while (init < p - 1)
        {
        }

        while (u != 0)
        {
            S[u] = 1;
            while (nu < p - …
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing dijkstra openmp

4
推荐指数
1
解决办法
5739
查看次数