小编v1s*_*hnu的帖子

将字符串拆分为键值对

我有一个像这样的字符串:

pet:cat::car:honda::location:Japan::food:sushi
Run Code Online (Sandbox Code Playgroud)

现在:指示键值对,同时::分离对.我想将键值对添加到地图中.

我可以使用以下方法实现:

Map<String, String> map = new HashMap<String, String>();
String test = "pet:cat::car:honda::location:Japan::food:sushi";
String[] test1 = test.split("::");

for (String s : test1) {
    String[] t = s.split(":");
    map.put(t[0], t[1]);
}

for (String s : map.keySet()) {
    System.out.println(s + " is " + map.get(s));
}
Run Code Online (Sandbox Code Playgroud)

但是有一种有效的方法吗?


我觉得代码是低效的,因为我使用了2个String[]对象并且split两次调用了函数.此外,我正在使用t[0],如果没有值t[1],可能会抛出一个ArrayIndexOutOfBoundsException.

java hashmap

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

等待React Redux中的操作完成

我是新手react,redux并且一直在探索它与它的不同之处angular.

我正在尝试做一个简单的登录页面,但我无法达到我想要的效果.从登录表单中获取用户名和密码后,我将其提交如下:

  submitHandler(e){
    e.preventDefault();
    var user = {
      name : this.state.username,
      password: this.state.password
    }
    this.props.authenticateUser(user);
    browserHistory.push('/home');
    this.setState({
      username:'',
      password:''
    })
  }
Run Code Online (Sandbox Code Playgroud)

这里authenticateUser是我的reducer中的一个函数(如下所示),它从已经存在的用户列表中检查,然后检查具有属性的状态isAuthenticated:

 case 'AUTHENTICATE_USER':
        var users = state.userslist;
        var payloadUser = action.payload;
        for (let i = 0; i < users.length; i++) {
            let user = users[i]
            if (user.name === payloadUser.name) {
                return {...state, isAuthenticated: true };
            }
        };
        return {...state, isAuthenticated: false };
Run Code Online (Sandbox Code Playgroud)

现在,在角度,我只是等待这个调用来完成,并检查该值是否是truefalse,并使用导航到主页angular-router. …

reactjs react-router redux react-redux

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

ExpressJS AngularJS POST

我正在学习AngularJS,我想知道如何使用ExpressJS正确地将它与Node连接.

这是我的控制器:

app.controller('view1Ctrl', function($scope, $http) {

    $scope.sub = function(desc) {
        console.log(desc);
        $http.post('/view1', desc).
        then(function(response) {
            console.log("posted successfully");
        }).catch(function(response) {
            console.error("error in posting");
        })
    }
});
Run Code Online (Sandbox Code Playgroud)

这是我的server.js:

app.post('/view1', function(req, res) {
    console.log(res.desc);
    res.end();
});
Run Code Online (Sandbox Code Playgroud)

我没有使用body-parser.当我在控制器中使用函数时,我不知道如何使用body-parser从html获取表单值.使用正文解析器时,在点击提交时是否从html获取值,或者是从我将表单值作为参数传递的函数中获取值.请告诉我它是如何完成的.

编辑:这是我的HTML:

<form>
      <input type="text" ng-model="desc" placeholder="Enter desc" />
      <button class="btn btn-primary" ng-click="sub(desc)">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

编辑2: 完整的server.js代码:

var express = require('express'),
    http = require('http'),
    path = require('path'),
    bodyParser= require('body-parser');

var app = express();

app.set('port', 3000);

app.use(express.static(path.normalize(__dirname + '/')));
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); …
Run Code Online (Sandbox Code Playgroud)

node.js express angularjs

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

this.setState()在componentWillReceiveProps中不起作用

我有一个登录页面,我用它componentWillReceiveProps来路由到下一页.但state我设置的内容componentWillReceiveProps似乎没有设定.

这是我的componentWillReceiveProps方法:

  componentWillReceiveProps(nextProps) {
      if (nextProps.isAuthenticated === true) {
          browserHistory.push('/home');
      } else {
        console.log("this.props :::" + JSON.stringify(this.props))
          console.log("this.state :::" + JSON.stringify(this.state))
          console.log("nextProps :::" + JSON.stringify(nextProps))
          this.setState({
              errorMessage: nextProps.authenticationError
          })
          console.log("this.state :::" + JSON.stringify(this.state))
      }
  }
Run Code Online (Sandbox Code Playgroud)

console output我得到是这样的:

this.props :::{"authenticationError":null}  
this.state :::{"username":"35135","password":"3135","errorMessage":""}  
nextProps :::{"isAuthenticated":false,"authenticationError":"Could not find user in DB."}  
this.state :::{"username":"35135","password":"3135","errorMessage":""}  
Run Code Online (Sandbox Code Playgroud)

即使在设置状态之后,我的状态也没有改变.

请告诉我,我做错了什么.

编辑:我有这个组件ErrorText,它接收errroMessage属性.

<ErrorText errorMsg={this.state.errorMessage}></ErrorText>
Run Code Online (Sandbox Code Playgroud)

reactjs

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

根据一组键/值对生成对话框

我正在处理现有的UI,我需要做一些修改.UI使用freemarker进行模板化.

HTML页面中有一个部分是:

<td>
    <#if authRole?? && authRole == 'ADMIN' >
    <#if leaf.value??>
    <a href="#" data-toggle="modal" class="href-select" data-target="#addPropertyModal" itemprop="${leaf.strValue?html}" >${leaf.name}</a> 
    <#else>
    <a href="#" data-toggle="modal" class="href-select" data-target="#addPropertyModal" itemprop="" >${leaf.name}</a> 
    </#if>
    <#else>
    ${leaf.name}
    </#if>
</td>
Run Code Online (Sandbox Code Playgroud)

在此处单击该leaf.name值将打开一个对话框,其中包含名称和值文本框.对话框的模式是这样的:

<div class="modal fade" id="addPropertyModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title" id="myModalLabel">Add Property</h4>
            </div>
            <div class="modal-body">
                <div class="input-group input-group-lg">
                    <span class="input-group-addon">Name</span>
                    <input type="text" id="newProperty"  name="newProperty" class="form-control" placeholder="name">
                    </div>
                    <br/>
                    <div class="input-group input-group-lg">
                        <span class="input-group-addon">Value</span>
                        <textarea …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery freemarker

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

使用脚本登录网站

我实际上正在编写一个 Windows 脚本,单击该脚本将打开我的默认 Web 浏览器,打开一个页面,输入我的登录详细信息,然后提交表单。

到目前为止我能做的就是用这个打开浏览器:

explorer http:\\outlook.com\website.com
Run Code Online (Sandbox Code Playgroud)

由于我找不到任何说明如何执行此操作的资源,因此我查看了 python 脚本并找到了两个库,即。urllibwebbrowser。我知道这urllib是用于抓取网站。但我不确定如何在网络浏览器中模拟相同的内容。该webbrowser库只有在新选项卡等中打开页面的命令。

请告诉我如何使用 python 或 windows 脚本完成此任务。

编辑:我的用户名和密码保存在我的浏览器中,以便它自动填充。我只想模拟 'ENTER' 按键。

python

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

从JSON确定Object的类型并使用GSON创建对象

我在我的应用程序中使用Gson,我有几个Java对象,我通过使用GSON将它转换为JSON来呈现给前端.我知道如何使用gson将JSON转换回Java对象.

我有这个用例:当我向GSON提供一个特定的JSON字符串时,我希望它找到从中获取JSON字符串的对象的类型,并给我一个该类型的对象.

使用GSON,只有在fromJson方法中传递Object类时才能返回对象.但无论如何我可以自己gson决定吗?我无法控制另一方生成的对象.

例:

Person person = new Person();
SomeRandomObject obj = new SomeRandomObject();

String personJson = gson.toJson(person);
String anotherJson = gson.toJson(obj);
Run Code Online (Sandbox Code Playgroud)

现在如果我想将它转换回对象,我使用这个:

Person p = gson.fromJson(personJson,Person.class);
Run Code Online (Sandbox Code Playgroud)

但无论如何,我可以得到这样的对象:

Object object = gson.fromJson(anotherJson,*TheCorrespondingObject.class*)
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过尝试使用GSON抛出异常的不同对象的JSON字符串来实现这一点,但我不认为这是正确的方法.

java json gson

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

Spring Scheduled任务不会在应用程序启动时启动

@Scheduled我的应用程序中有一个任务,设置使用CRON并每4小时运行一次.我面临的问题是,CRON应用程序启动后作业不会立即启动,但它只在应用程序启动后4小时启动.

我试图@PostConstruct在任务中使用一个方法来调用它,但是由于未初始化的Spring上下文而导致错误.

请告诉我如何在应用程序部署时立即运行计划任务,然后在部署后每4小时运行一次.

编辑:
我不会使用,@PostConstruct因为我的预定方法取决于其他Bean,当这个PostConstruct方法由于某种原因运行时未初始化.

java spring spring-scheduled

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

在python中获取第一个和第二个管道之间的数据

这是我的样本数据

78|Indonesia|Pamela|Reid|preid25@gravatar.com|147.3.67.193
Run Code Online (Sandbox Code Playgroud)

我希望得到结果

Indonesia
Run Code Online (Sandbox Code Playgroud)

目前我在字符串上使用split并访问该值.但我想用正则表达式.

需要注意的一些条件:数据可能为空数据不包含管道(|)

我想使用正则表达式而不是拆分,因为我认为正则表达式更有效.我希望它尽可能高效的原因是因为源文件是70gb.

编辑:

这是我将使用它的整个代码

def main(argv):
    mylist = set();
    input_file = open("test.txt", 'r')

    for row in input_file:
        rowsplit = row.split("|");

        if rowsplit[1] !='':
            if rowsplit[1] in mylist:
                filename= "bby_"+rowsplit[1]+".dat";
                existingFile=open(filename,'a')
                existingFile.write(row);
                existingFile.close()
            else:
                mylist.add(rowsplit[1])
                filename= "bby_"+rowsplit[1]+".dat";
                newFile = open(filename,'a')
                newFile.write(row);
                newFile.close();
        else:
            print "Empty"
    print mylist
Run Code Online (Sandbox Code Playgroud)

我只是对我现在应该使用哪些答案感到困惑:(

我只是希望这段代码很快.而已.

python regex

3
推荐指数
1
解决办法
960
查看次数

oracle sql 分页总页数或总条目数

我正在尝试从数据库访问分页结果。按照以下查询:

SELECT * FROM
(
    SELECT a.*, rownum r__
    FROM
    (
        SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%'
        ORDER BY OrderDate DESC, ShippingDate DESC
    ) a
    WHERE rownum < ((pageNumber * pageSize) + 1 )
)
WHERE r__ >= (((pageNumber-1) * pageSize) + 1)
Run Code Online (Sandbox Code Playgroud)

这里,我能够实现分页。

我修改了如下查询,以便也获得总计数:

SELECT * FROM
(
    SELECT a.*, rownum r__ , count(OrderDate)
    FROM
    (
        SELECT * FROM ORDERS WHERE CustomerID LIKE 'A%'
        ORDER BY OrderDate DESC, ShippingDate DESC
    ) a    group by OrderDate …
Run Code Online (Sandbox Code Playgroud)

oracle pagination

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

Observable 不是异步的

我正在学习RxJava并正在测试从数据库读取数据然后将其发布到队列的场景。我只是对整个过程做了一个样本模拟,但我似乎没有找到Observable我想要的工作,即。异步。

这是我的代码:

package rxJava;

import java.util.ArrayList;
import java.util.List;

import rx.Observable;
import rx.Observer;
import rx.functions.Action1;

public class TestClass {

    public static void main(String[] args) {

        TestClass test = new TestClass();
        System.out.println("---START---");

        test.getFromDB().subscribe(new Observer<String>() {

            @Override
            public void onCompleted() {
                System.out.println("Publish complete.");
            }

            @Override
            public void onError(Throwable t) {
                System.out.println(t.getMessage());
            }

            @Override
            public void onNext(String s) {
                test.publishToQueue(s).subscribe(new Observer<Boolean>() {

                    @Override
                    public void onNext(Boolean b) {
                        if (b) {
                            System.out.println("Successfully published.");
                        }
                    }

                    @Override
                    public void onCompleted() { …
Run Code Online (Sandbox Code Playgroud)

java multithreading asynchronous rx-java

0
推荐指数
1
解决办法
2857
查看次数