java
程序文化
开心工作,努力生活
展开
-
Caused by: com.dangdang.ddframe.rdb.sharding.parsing.parser.exception.SQLParsingException:
SQL syntax error, expected token is 'EQ', actual token is 'IDENTIFIER',一级目录二级目录三级目录这个问题是shardingjdbc的一个问题,因为它不支持某些SQL,如果不是必要进行分库分表的话,就不要使用 sharding-jdbc,因为会有诸多的限制和不方便(我的版本:1.5.4.1)可能是我的版本太旧了,也许升级下版本就可以了,但是我的项目比较复杂,升级可能会引出新的问题,所以就用了官方推荐的多数据源解决。进入官网:http原创 2020-12-17 11:01:51 · 1506 阅读 · 0 评论 -
JVM详解---系列
JVM基础知识JVM从编译到执行JAVA程序的执行过程三级目录JVM从编译到执行JAVA程序的执行过程一个java程序首先经过 javac 命令编译成 .class 文件,然后 JVM 将其加载到方法区,执行引擎将会执行这些字节码,执行时,会翻译成操作系统对应的函数。所以,JVM 作为 .class 文件的翻译存在:输入字节码,调用操作系统函数。调用过程如下: HelloWord.java 文件 -> javac 编译器 -> HelloWord.class 字节码-> J原创 2020-07-31 22:09:00 · 220 阅读 · 0 评论 -
Sharding-jdbc不支持sql
处理Sharding-jdbc不支持sql在很多项目中,我们可能只是对数据库中一张或两张表进行分表分库处理,其余表依然按照正常的处理逻辑。若此时所有的表的操作都交给sharding处理的话,其一 是效率会受到很大的影响,其二是sharding jdbc会不支持很多sql的写法。在这里为了绕开sharding jdbc对数据源的管理,需要多配置一个数据源 dataSourceForSpring,该数据源不交给sharding-jdbc来管理(其实还是同一个数据库也可以是分开的),而是spring直接管理。原创 2020-06-12 14:20:50 · 3632 阅读 · 0 评论 -
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsExceptionorg.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException原创 2020-06-04 11:55:26 · 4043 阅读 · 0 评论 -
Java线程基础、线程之间的共享和协作(四)
ThreadLocal 辨析接着上一篇线程的共享和协作,对synchronized 内置锁以及volatile,最轻量级的同步机制 做了辨析,接下来我们聊聊 ThreadLocal与 Synchonized 的比较ThreadLoack 和 Synchonized 都是用于解决多线程并发访问。可是ThreadLocal和Synchonized 有这本质的区别。 Synchonized 是利用锁的机制,使变量或代码块在某一时刻仅仅能被一个线程访问。ThreadLoack 是为每个线程都提供了变量原创 2020-05-31 23:17:10 · 229 阅读 · 0 评论 -
Java线程基础、线程之间的共享和协作(三)
对 Java 里的线程再多一点认识深入理解run()和start()Thead类是Java里对线程概念的抽象,可以这样理解:我们通过new Thread(),其实只是new出来一个Thread的实例,还没有真正和操作系统线程挂钩起来。只有执行了start()方法后,才实现了真正意义上的启动线程。start()方法让一个线程进入就绪队列等待分配CPU,分到CPU后才调用实现的run()方法,start()方法不能重复调用,如果重复调用会抛异常。而run()方法是业务逻辑实现的地方,本质上和任意一个类原创 2020-05-27 20:05:45 · 235 阅读 · 0 评论 -
Java线程基础、线程之间的共享和协作(二)
认识Java里的线程Java天生就是多线程一个 Java 程序从 main()方法开始执行,然后按照既定的代码逻辑执行,看似没有其他线程参与,但实际上 Java 程序天生就是多线程程序,因为执行 main()方法的是一个名称为 main 的线程。一个main线程的启动,大概做了以下几个事情:main //main 线程,用户程序入口Reference Handler//清除 Reference 的线程Finalizer // 调用对象 finalize 方法的线程Signal Dispa原创 2020-05-26 17:52:07 · 188 阅读 · 0 评论 -
Java线程基础、线程之间的共享和协作(一)
线程基础、线程之间的共享和协作目录线程基础、线程之间的共享和协作什么是进程和线程CPU核心数和线程数的关系CPU时间片轮转机制澄清并行和并发高并发编程的意义、好处和注意事项多线程程序需要注意的事项什么是进程和线程1. 进程是程序运行资源分配的最小单位进程是操作系统进行资源分配的最小单位,其中包括:CPU,内存空间、磁盘IO等,同一进程中的多条线程共享改进程中的全部系统资源,而进程和进程之间是相互独立的。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的的原创 2020-05-21 11:14:58 · 300 阅读 · 0 评论 -
Java创建线程的四种种方式
1、继承Thread类/** * @program: * @description: 通过集成Thread类 * @author: wen.yang * @create: 2020-05-13 19:53 **/public class MyThead extends Thread { // 在MyThead类中覆盖Thread类中的run方法. public void run() { // 在run方法中编写需要执行的操作 for(int i = 0; i <原创 2020-05-13 20:00:15 · 259 阅读 · 0 评论 -
mysql报错 is longer than the server configured value of 'wait_timeout'...
具体报错信息:Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:The last packet successfully received from the server was 52,075,567...转载 2020-04-20 15:42:35 · 3714 阅读 · 0 评论 -
Spring @Valid 参数校验 @RestControllerAdvice自定义返回值 不生效
如果确保代码没有任何问题,检查下 下列几项:方法上增加需要捕获的HTTP状态码 @ResponseStatus(HttpStatus.BAD_REQUEST) /** * 参数解析失败异常 */ @ExceptionHandler(HttpMessageNotReadableException.class) @ResponseStatus(HttpStatus.BAD...原创 2020-04-16 11:49:11 · 1239 阅读 · 1 评论 -
Spring中的BeanFactory和 FactoryBean的区别
Spring中beanFactory和factoryBean区别概念BeanFactory生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入概念BeanFactory首先,要理解BeanFactory 表示它是一个...原创 2020-04-02 19:53:36 · 256 阅读 · 0 评论 -
公平锁与非公平锁
前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:1. 乐...转载 2020-02-27 09:20:38 · 450 阅读 · 1 评论 -
线程池详解
Java中预定义的线程池:FixedThreadPool 创建固定线程数量的线程池,适用于负载较重的服务器,使用了无界队列。 /** * Creates a thread pool that reuses a fixed number of threads * operating off a shared unbounded queue, using the p...原创 2019-12-27 09:02:02 · 71 阅读 · 0 评论 -
notify和notifyAll应该用谁?
应该尽量使用notifyAll,使用notify因为有可能发生信号丢失的情况。eg:等待超时模式实现一个连接池:假设 等待时间时长为T,当前时间now+T以后超时,long overtime = now + T;long remainTime = T;//等待的持续时间while(remainTime>0 && result不满足条件){ wait(...原创 2019-12-15 16:31:39 · 173 阅读 · 0 评论 -
线程详解,线程间的共享和协作
基础概念 cpu核心数和线程数的关系: 核心数:线程数=1:1,使用了超线程技术后为1:2 cpu时间片轮转机制: 又称为RR调度,会导致上下文切换 进程和线程: 进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源 线程:CPU调度的最小单位,必须依赖进程而存在 并行和并发 并行:同一时刻,可以同时处理事情的能力 ...原创 2019-12-15 15:25:39 · 140 阅读 · 0 评论 -
HashMap 多线程环境下线程不安全
学习笔记:HashMap多线程环境下线程不安全主要原因是put(key,value)操作会引起死循环,hashMap中的 Entry 链表产生环形数据结构,next往下找的时候,永远找不到最后一个,所以导致死循环。 ConcurrentHashMap中如何定位某个元素在哪个位置,如何保证线程安全? JDK1.7及以前: get()方法定位segmen...原创 2019-12-04 12:28:30 · 206 阅读 · 0 评论 -
Hash详解
Hash哈希(Hash),也叫散列:把任意长度的输入通过一种算法(哈希算法),变换成为固定长度的输出,输出值叫做散列值。属于压缩映射,容易产生哈希冲突。常用Hash算法:直接取余法解决Hash冲突:开放寻址法 再散列法 链地址法PS:md4、md5、sha都是常见的Hash算法,也叫摘要算法,不可逆...原创 2019-12-02 12:43:05 · 146 阅读 · 0 评论 -
int 占几个字节
4个字节或2个字节,主要看操作系统,和编译器有关,一个int的大小是操作系统的一个字长 TC是16位系统程序,所以int是16bit,也就是两个字节 在32位linux和32位或64位的Windows下,都是4个字节,也就是目前最常用的VC和gcc结果。 C类型 32 64 char ...原创 2019-11-20 12:49:44 · 22508 阅读 · 0 评论