jt

spring

不想你离开。 提交于 2019-12-10 17:37:53
一般大家习惯的用法如下: public List<Map<String, Object>> queryByFundid(int fundId) { String sql = "SELECT * FROM t_freeze_detail WHERE fund_id = ? AND flag = ? AND freeze_state = ?"; return jt.queryForList(sql, new Object[]{fundId, Const.FLAG_NORMAL, FreezeDetailBean.FREEZE_STATUS_FROZEN}); } 通过问号的顺序,在jt(JdbcTemplate).queryForList后将参数对号入座。避免程序被注入。 但是当我们使用in的时候,这种方法就不好用了,相信你想过,用List匹配问号。你会发现出现这种的SQL: select * from user where id in ([1,2]) 1 执行报错。 下面是正确的用法: 参考资料: https://codedump.io/share/wiR37rEpCp2X/1/how-to-pass-list-parameter-in-in-clause-using-jdbctemplate http://www.technicalkeeda.com/spring

Thread源码分析之join方法

南笙酒味 提交于 2019-12-06 10:43:48
join方法示例1 源码 import java.util.concurrent.TimeUnit; public class JoinWaitTest { private static int a = 0; private static int b = 100; public static void main(String... args) throws InterruptedException{ Thread t = new Thread(new WaitThread()); t.start(); t.join(); System.out.println("I'm waiting for WaitThread end."); System.out.println("The result is " + (a + b)); } static class WaitThread implements Runnable { @Override public void run() { try { for (int i = 1; i < 6; i++) { TimeUnit.SECONDS.sleep(1); a++; System.out.println(i); } } catch (InterruptedException e) { } } } } 执行结果 1 2 3 4 5 I'm

EMQ 9 月 新发 | EMQ X Enterprise 3.4.0 功能概览

泪湿孤枕 提交于 2019-11-29 07:24:55
9 月正式开启,EMQ 发布了 EMQ X Enterprise 3.4.0 正式版。该版本强化了管理配置和规则引擎功能,新增消息编解码、集群热配置及车联网协议支持,设计了全新的管理监控 Dashboard 页面,是目前企业应用推荐使用的稳定版本。 相关安装包已在 EMQ 官网 开放下载,同时官网提供 License 免费自助申请试用、在线购买 License 授权服务。 EMQ X Enterprise 企业级物联网 MQTT 消息平台,支持百万级物联网设备一站式接入、MQTT&CoAP 多协议处理、低时延实时消息通信。支持基于 SQL 的内置规则引擎,灵活处理/转发消息到后端服务,存储消息数据到各种数据库,或桥接 Kafka、RabbitMQ、Pulsar 等企业中间件。 EMQ X Enterprise 适用于各种物联网应用场景,助企业快速构建物联网应用,并支持公有云、私有云、物理机、容器/K8S 任意部署。 全新的 Dashboard UI 在以往版本的 EMQ X 里 EMQ 围绕 MQTT 消息接入,拓展了一系列方便快速构建物联网应用的基础功能,如认证鉴权/ACL,数据持久化和消息桥接(企业版)并集成至 Dashboard 中。 为了支撑更多新功能的引入及功能引入后系统易用性、监控管理能力的同步改进提升,EMQ 开发团队率先针对企业版设计了全新的 Dashboard

【动态凸包】Codeforces - 70 - D - Professor's task

拥有回忆 提交于 2019-11-29 06:31:57
题目链接 https://codeforces.com/contest/70/problem/D 题意 有两种操作: 平面上添加一个点 询问一个点,是否在已添加点形成的凸包内 题解 用set维护上凸包和下图包维护即可, 主要是一些细节的处理比较麻烦, 然后代码一定要优雅。。。 # include <iostream> # include <stdio.h> # include <algorithm> # include <time.h> # include <set> using namespace std ; typedef long long ll ; typedef double db ; typedef pair < int , int > piir ; struct Point { ll x , y ; bool operator < ( const Point k ) const { if ( x == k . x ) return y > k . y ; return x < k . x ; } Point operator - ( const Point k ) const { return ( Point ) { x - k . x , y - k . y } ; } bool operator == ( const Point k ) const {