小编luc*_*umt的帖子

java中定时等待结束后线程未唤醒

我正在研究java中的等待(长时间超时),在官方文档中我发现了以下描述:

  • 其他某个线程调用该对象的notify方法,而线程T恰好被任意选择为要唤醒的线程。
  • 其他一些线程调用该对象的notifyAll 方法。
  • 其他一些线程中断线程 T。
  • 或多或少已经过了指定的实时时间。然而,如果超时为零,则不考虑实时性,线程只是等待直到收到通知。

最后一项说The specified amount of real time has elapsed, more or less,所以在我的选择中,如果我们调用wait(time),当时间流逝时,线程应该唤醒自己。

所以我写了下面的代码进行测试。

public static void testTimedWait() {
    Object lock = new Object();
    DateTimeFormatter df = DateTimeFormatter.ofPattern("HH:mm:ss:SSS");
    new Thread(() -> {
        synchronized (lock) {
            try {
                System.out.println(LocalTime.now().format(df) + "\t" + Thread.currentThread().getName() + " start to run");
                lock.wait(5_000);
                System.out.println(LocalTime.now().format(df) + "\t" + Thread.currentThread().getName() + " finished running");
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        } …
Run Code Online (Sandbox Code Playgroud)

java java-threads

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

如何转储MySQL中的所有函数和过程(不包括表)?

我的数据库中有两个程序,名为test_proc1test_proc2。我想导出这两个程序的代码,但我发现导出的文件不包含任何内容,我不知道为什么。下面是我的问题的详细描述:

1.过程test_proc1的代码:

DELIMITER $$

USE `testmanagementb`$$

DROP PROCEDURE IF EXISTS `test_proc1`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `test_proc1`()
BEGIN
    SELECT * FROM system_users;
    END$$

DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

2.过程test_proc2的代码:

DELIMITER $$

USE `testmanagementb`$$

DROP PROCEDURE IF EXISTS `test_proc2`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `test_proc2`()
BEGIN
      SELECT * FROM testcase_node;
    END$$

DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

3.导出程序的命令(数据库名称为testmanagementb):

mysqldump -u root -p -ntdR testmanagementb > procs.sql

4.导出结果如下:

-- MySQL dump 10.11
--
-- Host: localhost    Database: testmanagementb
-- ------------------------------------------------------
-- …
Run Code Online (Sandbox Code Playgroud)

mysql

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

SpringMVC中Model和HttpServletRequest的用法有什么区别?HttpServletRequest可以完全替代Model吗?

我正在使用开发我的Web项目,但我想将参数传递给jsp页面,我发现了一个问题并希望得到答案:

SpringMVC中ModelHttpServletRequest的用法有什么区别 ?HttpServletRequest可以完全替代Model吗?

我发现我可以使用它们来传递参数,并且我发现它们似乎具有相同的效果。现在我想知道何时使用Model和何时使用HttpServletRequest,我感觉Model似乎是一个重复的类,可以吗替换为HttpServletRequest完全

例如,如果我想通过将用户列表和当前日期传递到 jsp 页面,我可以通过三种不同的方式来完成:

  • 仅使用模型
@RequestMapping(value = "queryUserPage")
public String queryUserPage(int pageNo,int pageSize,Model model) {
    PageBean<UserModel> pageBean = new PageBean<UserModel>();
    pageBean.setPageNo(pageNo);
    pageBean.setPageSize(pageSize);
    pageBean.setResultList(userService.queryUserPage(pageBean));
    model.addAttribute("pageBean", pageBean);
    model.addAttribute("currentTime",new Date());
    return "settings/userManagement.jsp";
}
Run Code Online (Sandbox Code Playgroud)

- 仅使用HttpServletRequest

@RequestMapping(value = "queryUserPage")
public String queryUserPage(int pageNo,int pageSize,HttpServletRequest request) {
    PageBean<UserModel> pageBean = new PageBean<UserModel>();
    pageBean.setPageNo(pageNo);
    pageBean.setPageSize(pageSize);
    pageBean.setResultList(userService.queryUserPage(pageBean));
    request.setAttribute("pageBean", pageBean);
    request.setAttribute("currentTime",new Date());
    return "settings/userManagement.jsp";
}
Run Code Online (Sandbox Code Playgroud)

-同时使用HttpServletRequest和 …

spring spring-mvc

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

java-静态方法隐式线程安全吗?

我的java 静态方法之一可以由多个线程访问。是否需要通过synced关键字显式地同步该方法?

有时我读了一本书说

静态方法是隐式线程安全的,因为该方法不是特定于对象的

众所周知的示例是Singleton实现。在哪个getInstance()中是静态的,是否还需要将其标记为已同步?

 public synchronized static Logger getInstance() {
         if( instance == null ){
             instance = new Logger();
         }

         return instance;
     }
Run Code Online (Sandbox Code Playgroud)

谢谢

java singleton multithreading synchronized

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

如何用MySQL删除列中的特殊字符?

我参与了一个项目并遇到了别人的糟糕设计,我们有一个叫做task的表,每个任务都有很多用户,任务表如下:

+----------------+---------------+------+-----+---------+-------+
| Field          | Type          | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| id             | varchar(40)   | NO   | PRI | NULL    |       |
| name           | varchar(100)  | YES  |     | NULL    |       |
| task_users     | varchar(1000) | YES  |     | NULL    |       |
Run Code Online (Sandbox Code Playgroud)

并且用户存储aaa,bbb,ccctask_users列中,这意味着许多用户ID被放入一列,我知道这是一个非常糟糕的设计,但由于它是一个旧项目,我无法修改表设计.

现在我遇到了问题,如果用户被删除,我该如何从task_users列中删除它?

用户ID是由UUID生成的,它的长度是固定长度的32个字符,因此每个用户ID都是唯一的,例如40cf5f01eb2f4d2c954412f27b3bf6eb,但问题是用户ID可能位于task_users列的任何位置,所以我不知道如何去掉它

aaa,40cf5f01eb2f4d2c954412f27b3bf6eb,bbb -- in center
40cf5f01eb2f4d2c954412f27b3bf6eb,aaa,bbb -- in head
aaa,bbb,40cf5f01eb2f4d2c954412f27b3bf6eb -- in end
Run Code Online (Sandbox Code Playgroud)

删除用户ID时,更新的结果就像

   aaa,bbb
Run Code Online (Sandbox Code Playgroud)

我想知道我们可以使用一个更新sql删除指定的用户ID并仍保持相同的数据格式吗?

注意:我在MySQL存储过程中执行此操作,其他变量可能会有所帮助,但我仍然只想使用一个sql来执行此操作,MySQL版本为5.0 …

mysql sql mysql-5.0

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

当我们处理非常大的数据时,什么时候使用Bloom filter,什么时候使用BitMap?

我正在学习Bloom filterBitMap(也称为Bit Array)并遇到一个问题,有人能给我一些关于何时使用布隆过滤器以及何时使用 BitMap 的说明吗?

在我的理解中我认为当我们需要找到最大的数字或者想要对庞大的数据进行排序时,BitMap 更适合(对于纯数字)。

如果我们想检查一些IP地址是否包含在数十亿条现有记录中,那么布隆过滤器更适合(用于字符串或其他非纯数字)。

但是,我想有人给我更详细的说明或建议,我在谷歌上搜索过,没有找到一些有用的信息。提前致谢!

另外我不知道我是否应该将这个问题放在stackoverflow或其他站点上,如果它不是正确的站点,希望有人指出,谢谢!

algorithm bit bloom-filter bitset

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

数据表正在工作,但在单击页面时重定向到未定义的页面

我的数据表有效,但是当我单击表的另一个页面时,它会将页面重定向到不存在的“未定义”页面。当我单击一个页码时,它会简要显示正确的结果,但随后它会被重定向到“未定义”页面。

查询

$('#branchtables').DataTable( {
     "pagingType": "full_numbers",
       "paging": true,

} );
Run Code Online (Sandbox Code Playgroud)

HTML

<table id = "branchtables" class="table table-borderless table-data3">
    <thead>
        <tr>
            <th>Partner ID</th>
            <th>Partner Name</th>
            <th>Mobile Number</th>
            <th>Parent DSP</th>

        </tr>
    </thead>
    <tbody>
        <core:forEach var="data" items="${partners}" varStatus="count" >
            <tr id="removetable">

                <core:choose>
                <core:when test = "${data.parentid eq PID}">
                    <td id="removetable" class="tablefonts mytablewidth"><a href="managebranches?pid=${data.branchid}">${data.branchid}</a></td>
                </core:when>
                <core:otherwise>
                    <td id="removetable" class="tablefonts mytablewidth">${data.branchid}</td>
                </core:otherwise>
                </core:choose>

                <td id="removetable" class="tablefonts mytablewidth">${data.branchname}</td>
                <td id="removetable" class="tablefonts mytablewidth">${data.email}</td>
                <td id="removetable" class="tablefonts mytablewidth">${data.parentpartner}</td>

            </tr>
        </core:forEach>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

数据表链接

   <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.15/css/jquery.dataTables.min.css"/>  
   <script …
Run Code Online (Sandbox Code Playgroud)

jquery jsp spring-mvc datatables bootstrap-4

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

为什么结果是4?

如果有人遇到这个问题,请解释一下,为什么当我们在引号中添加值而不添加引号时,结果会得到 4?“1”+2=4?

js 似乎只是将键中的值相乘,不带引号

let obj = {
    "0": 1,
    0: 2
};

console.log(obj["0"] + obj[0]);
Run Code Online (Sandbox Code Playgroud)

javascript

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