RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-409013

V-CHO's questions

Martin Hope
V-CHO
Asked: 2022-08-19 20:21:46 +0000 UTC

休眠表验证[关闭]

  • 0
关闭 这个问题是题外话。目前不接受回复。

该问题是由不再复制的问题或错字引起的。虽然类似问题可能与本网站相关,但该问题的解决方案不太可能帮助未来的访问者。通常可以通过在发布问题之前编写和研究一个最小程序来重现问题来避免此类问题。

22 天前关闭。

改进问题

启动 SpringBoot Khyber 时不会验证 Postgre 中的列:

phone CHAR(10) UNIQUE NOT NULL

尽管实体设置为:

    @Column(unique=true, nullable = false, name="phone", length=10, columnDefinition = "char")
    private String phone;

你还能在这里尝试什么?

错误:

Schema-validation: wrong column type encountered in column [phone] in table [bankdemo.accounts]; found [bpchar (Types#CHAR)], but expecting [varchar(10) (Types#VARCHAR)]
java postgresql
  • 1 个回答
  • 33 Views
Martin Hope
V-CHO
Asked: 2022-08-05 19:41:58 +0000 UTC

AJAX 脚本不向指定地址发出请求

  • 0

Spring Boot 控制器方法:

    @PostMapping("/bills/add")
    @ResponseBody
    public String createBill(@RequestParam String currency) {
        
        String phone = authentication().getName();
        String answer = null;
        if(currency.isEmpty()) {
            answer = "Please choose currency type";
            return answer;
        }
        accountService.addBill(phone, currency);
        answer = "Success!!!";
        return answer;
    }

百里香叶:

<div>
<form id="currency_form">
        <select class="form-control" th:id="currency" th:name="currency" style="width:auto">
            <option value="">Select currency</option>
            <option th:each="currency : ${T(com.github.irybov.bankdemoboot.Currency).values()}"
                    th:value="${currency.name()}"
                    th:text="${currency.name()}">
            </option>
        </select>
    <button type="submit" class="btn btn-success add_bill">
        Add new bill</button>

    <p th:text="${message}" th:value="${#strings.isEmpty('currency')}" class="error"/>
</form>
</div>

jQuery:

<script>
    $(document).ready(function(){
        $('.add_bill').click(function(){
            var type = ('#currency').val();
            $('#currency_form').submit(function (ev) {
                ev.preventDefault();
                $.ajax({
                    type: 'POST',
                    url: 'http://localhost:8080/bankdemo/bills/add?currency='+type,
                    success: function(msg) {
                        alert(msg);
                    }
                    error: function (xhr, statusText, err) {
                      alert(xhr.status);
                    }
                });
            });
        });
    });
</script>

HTML 最初生成于

http://localhost:8080/bankdemo/accounts/show
    @GetMapping("/accounts/show")
    public String getAccount(ModelMap modelMap) {

        String current = authentication().getName();        
        AccountResponseDTO account = accountService.getAccountDTO(current);
        modelMap.addAttribute("account", account);
        modelMap.addAttribute("currencies", currencies);

        return "/account/private";
    }

所以问题是由于某种原因,在做 AJAX 时,url 变成了浏览器行

http://localhost:8080/bankdemo/accounts/show?currency=USD

而不是沿着脚本中指定的路径执行请求。
如果您通过 Postman 手动输入正确的 url,则控制器方法工作正常,返回响应字符串和状态 200。

javascript jquery
  • 1 个回答
  • 54 Views
Martin Hope
V-CHO
Asked: 2022-07-26 14:55:04 +0000 UTC

添加身份验证时页面崩溃并出现 500 错误

  • 0

先生们,专家,告诉我,pliz:Spring Boot / Security 项目,当添加到 html/Thymeleaf sec:authentication=”principal.authorities”浏览器发出 500 和

Error retrieving value for property "”principal.authorities”" of authentication object of class org.springframework.security.authentication.UsernamePasswordAuthenticationToken

Invalid property '”principal' of bean class [org.springframework.security.authentication.UsernamePasswordAuthenticationToken]: Bean property '”principal' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

同时,authentication.getAuthorities() 在控制台中显示值,一切都在调试中到位,如果您注释掉有问题的行,则访问限制适用于该按钮:

    <div sec:authorize="hasAuthority('ADMIN')">
    <form th:action="@{/bankdemo/accounts/show/{phone}(phone=${account.phone})}"
     th:method="delete">
        <input type="hidden" th:name="id" th:value="${bill.id}"/> 
            <button class="btn btn-danger"
            onclick="if (!(confirm('Are you sure you want to delete this bill?')))
                return false">
            Erase</button>
    </form>
    </div>

场地:

    @ElementCollection(targetClass = Role.class)
    @CollectionTable(name="roles", joinColumns = @JoinColumn(name="account_id"))
    @Enumerated(EnumType.STRING)
    private Set<Role> roles;

吸气剂:

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return roles;
    }

埃南:

public enum Role implements GrantedAuthority{
    ADMIN, CLIENT;

    @Override
    public String getAuthority() {
        return name();
    }
}

怎么了?

spring-boot spring-security
  • 1 个回答
  • 43 Views
Martin Hope
V-CHO
Asked: 2022-04-21 22:27:56 +0000 UTC

收到某个结果时中断线程创建

  • 0

有这段代码:

List<Node> nodes = generator.generateNodes(board);
int cores = Runtime.getRuntime().availableProcessors();
ExecutorService es = Executors.newFixedThreadPool(cores);
List<Future<Integer>> tasks = new CopyOnWriteArrayList<>();
try {               
loop:
    for(int i = 0; i < nodes.size(); i++) {                 
    Future<Integer> score = es.submit
            (new ArtIntel(nodes.get(i), Copier.deepCopy(board), level));
    tasks.add(score);
        for(Future<Integer> task: tasks) {
            if(task.isDone() && task.get() > 500) {
                System.out.println("Calculation interrupted in " + 
                        Thread.currentThread());
                break loop;
            }
        }
    }                   
}
catch (InterruptedException exc) {
    exc.printStackTrace();
}
catch (ExecutionException exc) {
    exc.printStackTrace();
}
finally {
    es.shutdown();          
    es.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS);
}

有没有办法确保检查是在嵌套循环中执行的?底线是,如果之前的线程之一已经达到了预期的结果,那么 ExecutorService 将停止创建新线程。例如:线程 1 启动,然后线程 2 启动(而线程 1 仍在运行),然后线程 1 得到结果 > 500 和线程 3,分别根本没有创建。上面的代码说明了这个想法,但不幸的是,它什么也没做。

添加

这是在控制台中看到的:

根节点数:29

1400 1400 1400 1400 1200 140 -1700 -1700 1400 1400 1400 1600 1200 140 1400 1400 1400 1400 1400 1200 1400 140. 1400, 1400, 10,400, 10,400,

但它应该是,按照设计,例如:1400、1400,(可能还有 1-2 个会“滑倒”进行处理),然后是所有未处理节点的默认(开始)值。处理器是2核的,所以同时只有2个线程,不清楚为什么测试条件没有时间工作(控制台中没有出现“Calculation interrupted in”)。

此外,节点还由生成器(第一行代码)根据其潜在前景进行预排序。

更清楚的是:

根节点数:18

500, 500, 500, 500, 500, 500, 180, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, -2000,

任务数:18

80, 40, 120, 120, 140, 60, 1200, 120, 140, 170, 120, 80, 100, 140, 140, 100, 170, -1500,

第 7 行之后的所有节点(得分为 1200)在第二行中的值应与第一行相同,因为 用于处理的线程的创建应该被条件中断(更不用说在中断的情况下通常任务应该小于节点)。

java
  • 1 个回答
  • 10 Views
Martin Hope
V-CHO
Asked: 2022-07-22 21:38:13 +0000 UTC

使用 Externalizable 的问题

  • 2

主类中有一个初始化块:

private ScoreSheet ss;
{
    File file = new File("table.bin");
    if(!file.exists()) {
    try {
        file.createNewFile();
        ss = new ScoreSheet();
        try(FileOutputStream fos = new FileOutputStream("table.bin");
                ObjectOutputStream oos = new ObjectOutputStream(fos)){
               oos.writeObject(ss);
        }           
    }
    catch (IOException ex) {
        ex.printStackTrace();
        }
    }
    else {
    try(FileInputStream fis = new FileInputStream("table.bin");
            ObjectInputStream ois = new ObjectInputStream(fis)){
        ss = (ScoreSheet) ois.readObject();
    }
    catch (IOException | ClassNotFoundException ex) {
        ex.printStackTrace();
        }
    }
}

在行ss = (ScoreSheet) ois.readObject(); 在线程“AWT-EventQueue-0”java.lang.ExceptionInInitializerError 中出现异常崩溃

在堆栈跟踪的更下方是由以下原因引起的:java.util.Base64$Decoder.decode(Base64.java:549) 处的 java.lang.NullPointerException

调用对象类代码:

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.ArrayList;
import java.util.List;

public class ScoreSheet implements Externalizable {

private List<PlayerStats> players = new ArrayList<>();

public List<PlayerStats> getList() {
    return players;
}

public ScoreSheet() {}

@Override
public void writeExternal(ObjectOutput out) throws IOException {
    for(PlayerStats current: players) {
        out.writeObject(current);           
    }
}

@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
      for (int i = 0; i < players.size(); i++) {
          PlayerStats current = (PlayerStats) in.readObject();
          players.add(current);
          }
     }  
}

工作表中的对象类代码:

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Calendar;
import java.util.Date;

public class PlayerStats implements Externalizable, Comparable<PlayerStats> {

private String name;
private String pass;
private Integer score = 0;
private Date date = new Date();
    
public PlayerStats(String name, String pass) {
    this.name = name;
    this.pass = pass;
}

public PlayerStats() {}

public void setScore(Integer score) {
    this.score = score;
}
public String getName() {
    return name;
}
public String getPass() {
    return pass;
}
public Integer getScore() {
    return score;
}
public String getDate() {
    
    String pattern = "dd/MM/yyyy";
    DateFormat df = new SimpleDateFormat(pattern);

    Date today = Calendar.getInstance().getTime();

    String reportDate = df.format(today);
    
    return reportDate;
}

@Override
public int compareTo(PlayerStats another) {
    return score.compareTo(another.score);
}   
@Override
public String toString() {
    return "Player [name=" + name + ", date=" + date + ", score=" + score + "]";
}

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((name == null) ? 0 : name.hashCode());
    result = prime * result + ((pass == null) ? 0 : pass.hashCode());
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    PlayerStats other = (PlayerStats) obj;
    if (name == null) {
        if (other.name != null)
            return false;
    } else if (!name.equals(other.name))
        return false;
    if (pass == null) {
        if (other.pass != null)
            return false;
    } else if (!pass.equals(other.pass))
        return false;
    return true;
}

@Override
public void writeExternal(ObjectOutput out) throws IOException {

       out.writeObject(this.getName());
       out.writeObject(this.encryptString(this.getPass()));
       out.writeObject(this.getScore());
       out.writeObject(this.getDate());     
}
private Object encryptString(String pass2) {
    return Base64.getEncoder().encodeToString(pass.getBytes());
}
@Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {

       name = (String) in.readObject();
       pass = this.decryptString((String) in.readObject());
       score = (Integer) in.readObject();
       date = (Date) in.readObject();
}
private String decryptString(String readObject) {
    return new String(Base64.getDecoder().decode(pass));
    }   
}

当到处都是Serializable而不是Externalizable时,一切正常。

java
  • 1 个回答
  • 10 Views
Martin Hope
V-CHO
Asked: 2022-07-09 20:11:40 +0000 UTC

Tomcat 不为 JSP 编译类

  • 0

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <h1>Hello World</h1>
    <br>
    <%
        for(String name: DatabaseFacade.getBooks()){
            out.println(name + "<br/>");
        }
    %>
</body>
</html>

当该类在默认包中时,我得到:

org.apache.jasper.JasperException:无法为 JSP 编译类:

在 jsp 文件中的 [13] 行发生错误:[/index.jsp] DatabaseFacade 无法解析

10:     <h1>Hello World</h1>
11:     <br>
12:     <%
13:         for(String name: DatabaseFacade.getBooks()){
14:             out.println(name + "<br/>");
15:         }
16:     %>

如果您将其转移到带有名称(例如,test)的包中,那么所谓的缺少驱动程序就会神奇地开始发誓:

java.sql.SQLException: 找不到适合 jdbc:postgersql://localhost:5432/postgres 的驱动程序

因此,我在开头添加了包的导入:

<%@ page import="test.DatabaseFacade" %>

数据库是10版本,ping正常,所有请求都是手动走的。Tomcat 9,JRE 8。我将带有基本驱动程序的 JAR 放在不同的文件夹中(正如其他人经常建议的那样)——同样的事情......

类代码以防万一:

package test;

import java.util.ArrayList;
import java.util.List;
import java.sql.*;

public class DatabaseFacade {

    public static List<String> getBooks(){
    
        List<String> result = new ArrayList<String>();
    
        try(Connection connection = 
DriverManager.getConnection("jdbc:postgersql://localhost:5432/postgres", "postgres", "2309")){
        
            Statement statement = connection.createStatement();
            ResultSet resultset = statement.executeQuery("SELECT * FROM books.books");
            while(resultset.next()){
                result.add(resultset.getString("name"));
            }
        }
        catch(SQLException e){
            e.printStackTrace();
        }
        return result;
    }   
}

UPD:在Win7上的Eclipse中运行;尝试了 Tomsat 8.5 而不是 9 - 都一样;在项目设置中将 JRE 更改为 JDK 也无济于事。有趣的是,较旧的软件(Eclipse Neon + Java 8 + WinXP/SP3 + Tomcat 7 + PostgreSQL 9.4)也有绝对相似的问题。

java
  • 1 个回答
  • 10 Views
Martin Hope
V-CHO
Asked: 2022-01-09 16:47:46 +0000 UTC

重绘部分界面挂起

  • 1

写了一个国际象棋程序。该板由 JButton 矩阵表示。进入else if条件时,出现如下问题:第一次调用updateGUI()重绘方法没有执行到最后,即 图形没有立即“通过”/重绘到指定的单元格,由于某种原因,程序沿着清单走得更远,调用计算计算机响应的方法 move plate.compute()并绘制两者移动后的最终情况侧面(显然,在第二次调用updateGUI 方法 ()结束时)- 在等待时,GUI 似乎“粘住”,并且通过按下按钮以标准视觉效果突出显示目标单元格。

    for(int r=0;r<4;r++) {
        for(int c=0;c<3;c++) {
            squares[r][c] = new JButton();
            squares[r][c].setSize(200, 200);
            squares[r][c].setBorder(new LineBorder(Color.GRAY));
            squares[r][c].setBackground(Color.decode("#db9356"));
                squares[r][c].addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    JButton theButton = (JButton) e.getSource();
                    for(int r=0;r<4;r++) {
                        for(int c=0;c<3;c++) {
                    if(theButton == squares[r][c] & click == 1 & plate.list(squares[r][c].getName())){
                        squares[r][c].setBackground(Color.YELLOW);
                        highlight(r, c);
                        plate.from(r, c, squares[r][c].getName());
                        click = 2;
                        output.setText(Piece.name(squares[r][c].getName()) +" choosen");
                        drop = false;
                        return;
                        }
                    else if(theButton == squares[r][c] & click == 2 & plate.list(squares[r][c].getName())==false){
                        if(plate.to(r, c)){
                            squares[r][c].setBackground(Color.decode("#db9356"));
                            click = 1;
                            if(drop & squares[r][c].getName()==" "){
                                plate.drop();
                            }
                            else{
                                plate.move();
                            }
                            updateGUI();
                            drop = false;
                            plate.compute();
                            updateGUI();
                            return;
                            }

如果将plate.compute()调用和响应后的更新分别移动到外循环,那么它可以正常绘制,但是要激活计算机对移动的思考,您需要单击一个空单元格,这不是这个案子,当然……

主要问题:原则上,JButtons 不能按照这样的逻辑工作,或者我不知道/不了解 Swing 的某些内容?

如有必要,更新方法本身(向 GUI 和 AI 之间的中间类发送请求并接收基于基板 - 字符串矩阵的重绘信息):

    void updateGUI() {
    
    for(int r=0;r<4;r++) {
        for(int c=0;c<3;c++) {
            squares[r][c].setBackground(Color.decode("#db9356"));
            squares[r][c].setName(plate.refresh(r,c));
            squares[r][c].setIcon(new ImageIcon(getClass().getResource(image(plate.refresh(r,c)))));
        }
    }       
}
java
  • 2 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5