高并发之-死锁

【PHP】高并发遇到死锁不知道怎么解决,看这篇足矣! 一、什么是死锁 多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力。然而,并发执行也带来了新的问题—死锁。 死锁是指两个或两个以上的进程(线程)在运行过程中因争夺资源而造成的一种僵局(Deadly-Embrace) ) ,若无外力作用,这些进程(线程)都将无法向前推进。 下面我们通过一些实例来说明死锁现象。 先看生活中的一个实例,2个人一起吃饭但是只有一双筷子,2人轮流吃(同时拥有2只筷子才能吃)。 某一个时候,一个拿了左筷子,一人拿了右筷子,2个人都同时占用一个资源,等待另一个资源,这个时候甲 阅读详情

死锁代码 

package com.zy.concurent;

public class DeadLock {

    public static void main(String[] args) {
        Object obj1 = new Object();
        Object obj2 = new Object();
        Thread thread1 = new Thread(new DeadLockRunalbe(obj1, obj2, 1, 2, true));
        thread1.setName("thread1");
        thread1.start();
        Thread thread2 = new Thread(new DeadLockRunalbe(obj1, obj2, 2, 1, false));
        thread2.setName("thread2");
        thread2.start();
    }

    /**
     * 线程死锁等待演示
     */
    public static class DeadLockRunalbe implements Runnable {
        Object object1;
        Object object2;
        int a, b;
        boolean flag;

        public DeadLockRunalbe(Object obj1, Object obj2, int a, int b, boolean flag) {
            this.object1 = obj1;
            this.object2 = obj2;
            this.a = a;
            this.b = b;
            this.flag = flag;
        }

        @Override
        public void run() {
            try {
                if (flag) synchronized (object1) {
                    Thread.sleep(100);
                    synchronized (object2) {
                        System.out.println(a + b);
                    }
                }
                else synchronized (object2) {
                    Thread.sleep(100);
                    synchronized (object1) {
                        System.out.println(a + b);
                    }
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

}

通过jstack查看死锁信息:

通过jps -l查看死锁的进程ID:

jstack -l 8932查看死锁进程:

E:\project\interview\src\main\java\com\zy\concurent>jstack -l 8932
2020-03-15 16:21:50
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.192-b12 mixed mode):

"DestroyJavaVM" #14 prio=5 os_prio=0 tid=0x00000000030a3800 nid=0x1184 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"thread2" #13 prio=5 os_prio=0 tid=0x000000001e7c1000 nid=0x4390 waiting for monitor entry [0x000000002038e000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at com.zy.concurent.DeadLock$SynAddRunalbe.run(DeadLock.java:45)
        - waiting to lock <0x000000076b0f7480> (a com.zy.concurent.DeadLock$Obj1)
        - locked <0x000000076b0f9548> (a com.zy.concurent.DeadLock$Obj2)
        at java.lang.Thread.run(Thread.java:748)

   Locked ownable synchronizers:
        - None

"thread1" #12 prio=5 os_prio=0 tid=0x000000001e7c0000 nid=0x728 waiting for monitor entry [0x000000002028f000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at com.zy.concurent.DeadLock$SynAddRunalbe.run(DeadLock.java:39)
        - waiting to lock <0x000000076b0f9548> (a com.zy.concurent.DeadLock$Obj2)
        - locked <0x000000076b0f7480> (a com.zy.concurent.DeadLock$Obj1)
        at java.lang.Thread.run(Thread.java:748)

   Locked ownable synchronizers:
        - None

"Service Thread" #11 daemon prio=9 os_prio=0 tid=0x000000001e636800 nid=0x46b8 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"C1 CompilerThread3" #10 daemon prio=9 os_prio=2 tid=0x000000001e640800 nid=0x4548 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"C2 CompilerThread2" #9 daemon prio=9 os_prio=2 tid=0x000000001e63e000 nid=0x1a0c waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"C2 CompilerThread1" #8 daemon prio=9 os_prio=2 tid=0x000000001e63b000 nid=0x3b44 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"C2 CompilerThread0" #7 daemon prio=9 os_prio=2 tid=0x000000001e633000 nid=0x2120 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"Monitor Ctrl-Break" #6 daemon prio=5 os_prio=0 tid=0x000000001e602000 nid=0x3d88 runnable [0x000000001fb8e000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
        at java.net.SocketInputStream.read(SocketInputStream.java:171)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
        - locked <0x000000076b24fa98> (a java.io.InputStreamReader)
        at java.io.InputStreamReader.read(InputStreamReader.java:184)
        at java.io.BufferedReader.fill(BufferedReader.java:161)
        at java.io.BufferedReader.readLine(BufferedReader.java:324)
        - locked <0x000000076b24fa98> (a java.io.InputStreamReader)
        at java.io.BufferedReader.readLine(BufferedReader.java:389)
        at com.intellij.rt.execution.application.AppMainV2$1.run(AppMainV2.java:61)

   Locked ownable synchronizers:
        - None

"Attach Listener" #5 daemon prio=5 os_prio=2 tid=0x000000001e53c800 nid=0x40e4 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x000000001e592800 nid=0x46f8 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
        - None

"Finalizer" #3 daemon prio=8 os_prio=1 tid=0x000000000319a800 nid=0x4d4 in Object.wait() [0x000000001f88f000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x000000076af88ed0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
        - locked <0x000000076af88ed0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:216)

   Locked ownable synchronizers:
        - None

"Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x000000001e523000 nid=0x2754 in Object.wait() [0x000000001f78f000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x000000076af86bf8> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:502)
        at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
        - locked <0x000000076af86bf8> (a java.lang.ref.Reference$Lock)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)

   Locked ownable synchronizers:
        - None

"VM Thread" os_prio=2 tid=0x000000001e502800 nid=0x2014 runnable

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00000000030b8800 nid=0x4524 runnable

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00000000030ba000 nid=0x4568 runnable

"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00000000030bc000 nid=0x17c4 runnable

"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00000000030be800 nid=0x273c runnable

"GC task thread#4 (ParallelGC)" os_prio=0 tid=0x00000000030c0800 nid=0x3be0 runnable

"GC task thread#5 (ParallelGC)" os_prio=0 tid=0x00000000030c1800 nid=0x338c runnable

"GC task thread#6 (ParallelGC)" os_prio=0 tid=0x00000000030c5000 nid=0x514 runnable

"GC task thread#7 (ParallelGC)" os_prio=0 tid=0x00000000030c6000 nid=0x3f44 runnable

"GC task thread#8 (ParallelGC)" os_prio=0 tid=0x00000000030c7000 nid=0x24b4 runnable

"GC task thread#9 (ParallelGC)" os_prio=0 tid=0x00000000030c8800 nid=0x472c runnable

"VM Periodic Task Thread" os_prio=2 tid=0x000000001e660800 nid=0x44f8 waiting on condition

JNI global references: 12


Found one Java-level deadlock:
=============================
"thread2":
  waiting to lock monitor 0x000000001ce43728 (object 0x000000076b0f7480, a com.zy.concurent.DeadLock$Obj1),
  which is held by "thread1"
"thread1":
  waiting to lock monitor 0x000000001ce42288 (object 0x000000076b0f9548, a com.zy.concurent.DeadLock$Obj2),
  which is held by "thread2"

Java stack information for the threads listed above:
===================================================
"thread2":
        at com.zy.concurent.DeadLock$SynAddRunalbe.run(DeadLock.java:45)
        - waiting to lock <0x000000076b0f7480> (a com.zy.concurent.DeadLock$Obj1)
        - locked <0x000000076b0f9548> (a com.zy.concurent.DeadLock$Obj2)
        at java.lang.Thread.run(Thread.java:748)
"thread1":
        at com.zy.concurent.DeadLock$SynAddRunalbe.run(DeadLock.java:39)
        - waiting to lock <0x000000076b0f9548> (a com.zy.concurent.DeadLock$Obj2)
        - locked <0x000000076b0f7480> (a com.zy.concurent.DeadLock$Obj1)
        at java.lang.Thread.run(Thread.java:748)

Found 1 deadlock.

可以看到:

 java中几种工具的介绍:

jstack

jstack是java虚拟机自带的一种堆栈跟踪工具。

jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因。如线程间死锁、死循环、请求外部资源导致长时间等待等。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就知道没有响应的线程到底在后台做什么事情,或者等待什么资源。

常用命令:

jstack -l pid

jstack -m pid

jps:

java提供的一个显示当前所有java进程pid命令。适合在Linux/unix平台简单查看当前java进程的一些简单情况。

常用:jps -l

关于SqlServer高并发死锁现象的分析排查 通过定期对生成环境SqlServer日志的梳理,发现经常会出现类似事务与另一个进程被死锁在资源上,并且已被选作死锁牺牲品,请重新运行该事务的异常 简单分析一下原因:在高并发场境下,多个事务同时对某个资源进行持锁 [ 读/写 ] 操作,同时又需要对方释放锁资源,进而出现死锁 阅读详情

相关推荐

高并发情况下,MYSQL的锁等待问题分析和解决方案

问题描述 在进行高并发性能调优的时候发现了如下的一个问题: 1. 在一个事务中同时包括了SELECT,UPDATE语句 2. SELECT和UPDATE涉及到的数据为同一张表中的同一记录 3. 在并发为10的情况下就会触发数据库锁等待和死锁的情况 问题分析 在问题分析之前引入几个概念 事务隔离级别 参考文章《事务的ACID特性》 共享锁(S锁) SELECT 语句时对查询行加的锁类型为共享锁。 共享锁的特性为:不允许其他事务对该记录加排他锁,但是允许加共享锁。 保持时间:可重复度级别中共享锁会保持到事务结束。 排他锁(X锁) MYSQL的默认隔离级别(可重复度)中,UPDATE,INSERT和

Mysql报Deadlock found when trying to get lock; try restarting transaction问题解决

Mysql报Deadlock found when trying to get lock; try restarting transaction问题解决!! 问题发生场景 今天记录一下最近项目中遇到的一个问题,前几天在部署项目后,在线上运行过程中,突然报了入下这样的错误,从报错信息中我们可以看到,是mysql在执行update操作的时候报了一个死锁的问题,今天解决了,特此记录一下. Mysql锁类型分析 MySQL有三种锁的级别:页级、表级、行级,这个地方我遇到的问题是来自于行级锁,所以重点说一下。

光头强的博客 11万+

Qt QChart实战:从零打造一个实时温度监控仪表盘(附完整源码)

本文详细介绍了如何使用Qt QChart模块从零构建一个工业级实时温度监控仪表盘。通过实战案例,展示了波形图的绘制、坐标轴配置、数据流模拟等关键技术,并提供了完整的源码实现,帮助开发者快速掌握Qt在数据可视化领域的应用。

weixin_42537919的博客 243

JAVA并发| 记录一次死锁(二)与Locked ownable synchronizers

package com.xiaobu.deadlock; import java.util.concurrent.*; /** * @author xiaobu * @version JDK1.8.0_171 * @date on 2019/8/21 17:16 * @description */ public class ExcuteLock { static Exec...

小布1994的博客 6426

在VM虚拟机的MobaXterm下安装JDK17

本文介绍了在Linux系统下安装配置JDK17的完整步骤:1)从Oracle或OpenJDK官网下载Linux版JDK17压缩包;2)上传至/usr/local目录;3)解压安装包;4)通过编辑/etc/profile文件配置环境变量,添加JAVA_HOME和PATH路径;5)使用source命令使配置生效;6)通过javac -version验证安装是否成功。整个过程涵盖了从下载到环境配置的完整流程,确保Java开发环境正确设置。

qq_2937655951的博客 442

云卓遥控器+DIY高清摄像机的方案(完美接入原系统)

发云卓H16 1080P数图控三合一10公里 其中它月

fgh00000的博客 1万+

并发 九 检查死锁与Locked ownable synchronizers

并发 九 检查死锁与Locked ownable synchronizers

qq_44884577的博客 3825

告别手动标注!PDMS NakiToolkit插件安装与初体验:以Pipeline工具为例

本文详细介绍了PDMS NakiToolkit插件的安装与使用,特别是其Pipeline工具如何通过自动化标注和材料统计功能大幅提升三维工厂设计效率。从环境准备到实战演示,帮助工程师告别繁琐的手动标注工作,实现项目交付周期的大幅缩短。

weixin_30047059的博客 351

并发(九):检查死锁与Locked ownable synchronizers

通过jstack可快速检查线程的死锁信息,用法如下:# 获取JVM ID(JAVA 进程ID),通过参数lv可以获取更详细的JAVA方法调用信息 jps -lv # 得到JVM ID后,执行jstack命令,这里假定为123 # 将结果重定向到文件,更便于查看 jstack -l 123 >> d:/123.txt翻到页底,可发现明显的死锁信息:Java stack information for

甘焕的博客 3万+

从PSDK到ROS节点:实战GPS数据发布与CMake配置

本文详细介绍了如何从大疆PSDK获取GPS数据并封装为ROS节点的实战过程,包括PSDK编译、GPS数据订阅、ROS节点实现及CMake配置优化。通过具体代码示例和调试技巧,帮助开发者快速实现无人机传感器数据与ROS系统的集成,提升开发效率。

weixin_30843605的博客 457

《UDS协议从入门到精通》系列——图解0x2E:通过ID写数据

图解数据包格式+直观的通信示例,迅速认识0x2E服务!!

车载系统攻城狮 3602

使用jstack命令,排查线程死锁问题

概述 使用jstack命令,排查线程死锁问题。 jstack是什么? jstack是java虚拟机自带的一种堆栈跟踪工具。jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息 jstack有什么作用 jstack主要用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jst

阿呆的专栏 1万+

CentOS7安装OpenSSL1.1.1s

CentOS7安装OpenSSL1.1.1s

Bertram的博客 733

高并发update的 死锁产生原因

在说这个之前首先了解一下讲一下update语句sql中的情况。死锁产生的条件:出现循环等待资源。update对锁的流程:       当sql发出一个update请求之后,数据库会对表中的每条记录加上U锁。然后数据库会根据where条件,将符合条件的记录转换为X锁。对不满足条件的记录释放U锁。环境模拟1. 创建数据库环境--创建数据库 create database DeadLockTest;

赵崇 5万+

基于DRU-HVDC的构网型海上风电场环流机理仿真复现

本文介绍了基于DRU-HVDC的构网型海上风电场环流机理仿真模型的构建方法。主要内容包括: 完整的Simulink模型结构,包含主模型文件GFM_DRU_Main.slx和配置脚本GFM_DRU_Setup.m 系统参数设置,包括基础频率(20Hz)、电压基准值(690V)、功率基准值(2MVA)等 四种仿真场景配置:电压不平衡、相位不平衡、阻抗不平衡和频率不平衡 风力发电机(WT)子系统的详细构建步骤,包含电压源、输出阻抗和测量模块 变压器和DRU整流器的参数设置 该模型可用于研究构网型风电场的环流机理。

huanghm88的专栏 262

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

mysql高并发下update死锁_【开卷有益】记录一次高并发下的死锁解决思考过程

开卷有益,好久没写博客了,最近工作也挺忙的。 死锁距离我不遥远,终于还是在高并发时被我碰到了。 DeadLock Found! 尽管编程风格中会尽量避免死锁,但是还是被我碰上了。文章可能看不出来我在做什么事情,只是记录自己的一个排除死锁的过程。 事情起源于开卷有益,好久没写博客了,最近工作也挺忙的。死锁距离我不遥远,终于还是在高并发时被我碰到了。DeadLock Found!尽管编程风格中会尽量避...

weixin_29819789的博客 1310

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mysql 高并发 死锁_高并发、死锁、幂等性问题

一.介绍在短时间之内对数据表(库)的集中访问,就称为“高并发”。高并发 在使用的时候容易出现问题,在短时间之内对数据表有大量的集中修改操作,如果不做控制,数据表的修改容易出现重复。比如:多个人操作获得的剩余量(95)是一致的(操作的时间点是同一个)操作完毕对剩余量做减少操作,多人减少的数额(94)也是一样的这样数据库剩余的数据量就不准确新建数据表:create table gbf_hot_good...

weixin_39927288的博客 454

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

sqlsever高并发下死锁解决

今天业务在高并发下出现了死锁问题,sqlsever sql重现,开启两个窗口执行.其中一个会在第二次select时报死锁. Begin Transaction; SELECT * from t_export_inventory_head WHERE agent_code = '1122334455' and cop_no = 'Cop20200817001'; Waitfor Delay '00:00:10'; UPDATE t_export_inventory_head SET rem

taylor的博客 933

深入解析与解决高并发下的线程池死锁问题

在业务高峰期,系统频繁出现响应延迟甚至超时的情况,经过初步排查,发现部分服务存在线程池死锁现象,严重影响了系统的稳定性和用户体验。

David的博客 1260

mysql 高并发 死锁_谈谈MySQL死锁 一

数据越来越和我们的生活离不开,数据在生命周期的各个阶段有着不同的痛点和需求以及特殊场景。CURD是数据的四大基本需求:写入,更新,读取,删除.今天,来谈一谈死锁问题死锁是高并发下MySQL不可回避的一个问题。这句话可以引申四个问题:1.什么是死锁?2.MySQL什么时候会检测死锁?3.数据库系统如何处理死锁?4.有哪些典型的高并发死锁场景?1.我们先来看看什么是死锁。在《数据库系统实现》第八章第二...

weixin_39570838的博客 404

高并发场景下MySQL死锁的预防措施选择

高并发场景下MySQL死锁预防的关键在于平衡业务正确性与系统性能。核心原则包括优先保证数据一致性、评估方案ROI和渐进优化。具体措施分四层面:事务设计(缩短时长、固定访问顺序)、SQL优化(精确查询、合理索引)、配置调整(隔离级别、锁等待参数)和架构优化(分库分表、读写分离)。实施路径建议从快速见效的事务顺序调整开始,中期优化SQL和事务粒度,长期考虑架构改造。必须避免过度优化和一刀切方案,持续监控死锁情况,针对不同业务模块采取组合策略。最终要在数据一致性和系统性能间找到动态平衡。

csdn_tom_168的博客 962

【高并发】优化加锁方式时竟然死锁了!!

假设有线程A和线程B两个线程同时运行在两个不同的CPU上,线程A执行账户A向账户B转账的操作,线程B执行账户B向账户A转账的操作。当线程A和线程B执行到 synchronized(this)代码时,线程A获得了账户A的锁,线程B获得了账户B的锁。当执行到synchronized(target)代码时,线程A尝试获得账户B的锁时,发现账户B已经被线程B锁定,此时线程A开始等待线程B释放账户B的锁;而线程B尝试获得账户A的锁时,发现账户A已经被线程A锁定,此时线程B开始等待线程A释放账户A的锁。

冰河的专栏 1164

【开卷故意】记录一次高并发下的死锁解决思考过程

开卷故意,好久没写博客了,近期工作也挺忙的。 死锁距离我不遥远。最终还是在高并发时被我碰到了。 DeadLock Found! 虽然编程风格中会尽量避免死锁,可是还是被我碰上了。文章可能看不出来我在做什么事情。仅仅是记录自己的一个排除死锁的过程。 事情起源于两个联动的缓存+redis+异步数据库读写操作。 事务中的这句出现死锁: ...

aofan9566的博客 244

java高并发带来的数据库死锁,【一本万利】记录一次高并发下的死锁解决思考过程...

【开卷有益】记录一次高并发下的死锁解决思考过程开卷有益,好久没写博客了,最近工作也挺忙的。死锁距离我不遥远,终于还是在高并发时被我碰到了。DeadLock Found!尽管编程风格中会尽量避免死锁,但是还是被我碰上了。文章可能看不出来我在做什么事情,只是记录自己的一个排除死锁的过程。事情起源于两个联动的缓存+redis+异步数据库读写操作。事务中的这句出现死锁:DELETE FROM table ...

weixin_42099302的博客 368

高并发事物死锁问题解决方案

问题描述: 1、方法中加入了注解式事物,且存在多次操作数据库中同一条记录,场景:创建用户接口,需要同事创建用户、印章、用户印章关联关系记录,一个用户可以有多个印章,但是只能有一个默认印章,接口如下: /** * 1、创建用户 * 2、创建印章 * 3、将用户的所有关联印章设置为非默认 * 4、创建用户-印章关联关系 * 5、设置当前印章为默认印章 */ @Transactional public vod createUser(){ // 创建用户 User user = new User(); use

品学兼忧的博客 1577

高并发状态下Replace Into造成的死锁问题思考

问题出现: 在测试阶段,大数据并发的情况下,发现sql语句造成表的死锁,过一段时间,死锁消失。于是进行排查 报错如下: 对应的sql语句如下: @Insert("replace into ${tableName}( windcode,date, \n" + " code, high, open, low, \n" + " `close`, volume, turnover,gtm_modify) "

PigeonEssence的博客 1万+
上一篇: java8的元空间到底存储了什么?
下一篇: zookeeper之分布式队列
给自己加加油
博客等级 码龄8年 302粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值