JAVA
文章平均质量分 52
Run_the_ant
我曾写过的每一行代码,都是对现实世界的序列化,所以我要尽自己最大的努力,让序列化后的世界更美一点!
展开
-
JPA连接达梦数据库导致auto-ddl失效问题解决
这个映射部分源码要跟的很深,总的来说就是从数据库拿到的表名都是小写的,但是匹配的时候是将实体类上@Table的name值转为大写后再进行映射,而且这个是在达梦数据库的驱动里面设置的,重写方言的buildIdentifierHelper方法也没用。项目使用了JPA,并且auto-ddl设置的为update,在连接达梦数据库的时候,第一次启动没有问题,但是后面重启就会报错,发现错误为重复建表,也就是说已经建好的表没有检测到,又重新走的建表流程。1、达梦数据库创建数据库实例的时候使用默认的规则,区分大小写。原创 2023-07-26 16:56:03 · 1378 阅读 · 0 评论 -
JpaRepository.save()居然调用了2次insert?
先描述一下场景:我需要对用户实体进行数据鉴权,所以期望的是监听用户的save()方法执行后,同步执行新增数据权限,并且给对应的用户分配该数据权限。问题来了,在没有做数据权限前,save方法执行正常,加入了监听器之后,save方法就insert了2次,然后就是报主键冲突(因为是同一个对象)。看一下实现:第一步,创建用户实例第二步,创建监听器第三步,User对象注册监听器第四步,开始测试可以看到,一模一样的数据被insert了2次。然后跟到源码查了一下原因,...原创 2022-05-09 19:00:37 · 1556 阅读 · 2 评论 -
你的applicationContext.getResources(source)为什么只拿到了一个配置文件?
解决applicationContext.getResources(source)只拿到了一个配置文件原创 2022-04-15 11:20:40 · 656 阅读 · 0 评论 -
Parent ‘Unknown:Unknown:Unknown‘ has problems 异常的处理
maven无法引入依赖,导致的项目编译报错原创 2022-03-07 15:02:32 · 12116 阅读 · 4 评论 -
JSON数据生成扁平化字段名
用标准规则生成扁平化数据是无法直接作为数据库的列名定义的,如果想直接用于列名定义请查看,如果想用标准化的扁平化方案,请搜索JsonFlattener的使用 /** * JSON扁平化总入口 * * 会将所有的_去除 * 会将_后的第一个字母大写 * @param json * @return */ public static JSONArray unfold(String json) { if (jso原创 2021-01-19 16:21:58 · 767 阅读 · 2 评论 -
根据JSON数据自动生成ClickHouse的Insert语句
如果你还不知道怎么建表请移步根据JsonSchema生成阿里云ClickHouse建表语句这里就直接贴代码了,建表的规则,字段规则都在上方链接 private static final String SCHEMA_TYPE = "type"; private static final String SCHEMA_TYPE_OBJECT = "object"; private static final String SCHEMA_TYPE_ARRAY = "array"; .原创 2021-01-19 16:15:32 · 3554 阅读 · 0 评论 -
根据JsonSchema生成阿里云ClickHouse建表语句
mybatis对ClickHouse的支持不是很好,JPA又没有对应的方言,做数仓需要大批量解析JSON数据,希望能自动根据JSONSchema定义来自动建表,节省工作量,并且不用为了复杂JSON建对象,还要服务发版。这个工具应用场景可能不是那个多,希望能帮到你,自己写也挺麻烦的。如果想要获取根据JSON数据生成Insert语句的同学请查看下一篇文章生成规则1、表数量与JsonSchema的properties节点数保持一致2、数据类型转换: schemaType ...原创 2021-01-19 16:11:04 · 1017 阅读 · 1 评论 -
根据JsonSchema生成数据库表名
生成方式根据JsonSchema的各层级的key,用下划线拼接 private static final String SCHEMA_TYPE = "type"; private static final String SCHEMA_TYPE_OBJECT = "object"; private static final String SCHEMA_TYPE_ARRAY = "array"; private static final String SCHEMA_TYP原创 2021-01-19 16:01:24 · 582 阅读 · 0 评论 -
如何自己写一个lambda方法来完成多线程批量处理数据
最近要做一个初始版的数据仓库项目,有一大批的MYSQL基础数据要通过整合后写入到ES,有部分数据量非常庞大,单线程批量写入会耗时很久,就想到了使用线程池来多线程做写入操作。这个写法不要局限于我这个应用场景,别的应用场景也可以修改一下里面的逻辑。java版本要求在 1.8以上附代码:import org.apache.commons.collections.CollectionUtils;import java.util.List;import java.util.concurrent原创 2020-10-23 23:04:44 · 719 阅读 · 4 评论 -
Spring的容器创建过程,refresh()方法的执行
public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefresh(); // Tell the sub...原创 2018-12-11 14:53:09 · 2495 阅读 · 0 评论 -
SpringBoot应用AOP及各注解的执行顺序
首先第一步,POM引入jar <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency...原创 2018-12-11 11:17:57 · 12287 阅读 · 0 评论 -
org.apache.commons.httpclient.ConnectTimeoutException异常
org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 3000 ms at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSock...原创 2018-10-26 09:56:33 · 11668 阅读 · 1 评论 -
线程轮询的有数据启动,无数据停止,节省服务器资源,线程的启动和暂停
现实场景有这样一个需求:某工作大厅,有几百个工作人员,当有某个工作人员向离岗出去,要点击自己工位上的暂离按钮,回岗的时候点击工位上的回岗按钮,如果离岗超过20分钟还没有回岗则短信提醒该工作人员离岗超时,该回岗了!我们需要怎么处理这个业务呢?首先要有一个缓存Map,存放工作人员的userid和超时时间。然后针对该Map提供数据删除和添加的方法,回岗就删除,离岗就添加。最后再起一个...原创 2018-09-14 11:24:40 · 509 阅读 · 0 评论 -
Freemarker学习
转自: http://blog.csdn.net/chenghui0317/article/details/7832474一、Freemarker的介绍 Freemarker 是一款模板引擎,是一种基于模版生成静态文件的通用 工具,它是为java程序员提供的一个开发包,或者说是一个类库,它不是面向最终用户的,而是为程序员提供了一款可以嵌入他们开发产品的应用程序转载 2018-01-03 10:28:43 · 243 阅读 · 0 评论 -
JAVA拷贝Map中的值到对象
在java中写接口,很多都是以JSON方式传参, 然后再序列化成各种对象~~~Map也是其中一种, 但是呢,Map中的参数有可能是很多个对象属性都在里面, 难道我要一个个的去get(“aa”),get(“bb”),get(“cc”).......这样我觉得太low了。。。然后我就写了一个拷贝的东西, 你只要给我一个Map, 一个对象, 我就把这个Map中的key=对象字段名的值,原创 2017-12-29 10:11:15 · 4799 阅读 · 4 评论 -
关于JSch的使用,执行ssh命令,文件上传和下载以及连接方式
对JSch操作的心得,实现方法详解,如有考虑不周,希望能共同探讨,望谅解~原创 2017-12-12 23:22:59 · 2410 阅读 · 2 评论 -
JAVA中的DFA算法构建敏感词树,从0开始!
关于DFA算法构建敏感词树;应用于JAVA中,敏感词匹配查找,敏感词替换等等原创 2017-12-05 15:00:01 · 879 阅读 · 0 评论 -
多线程
/** * ldap数据同步类 * @author wangyijie * @date 2017年5月25日 * @version 1.0 */@Servicepublic class LdapSynchronizeTask implements Runnable{ private ReentrantLock lock = new ReentrantLock();原创 2017-12-29 14:23:24 · 276 阅读 · 0 评论 -
tomcat配置https的方法
tomcat配置https方法如下:打开Tomcat根目录下的/conf/server.xml,修改为如下:<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />修改参数=><Connecto原创 2018-04-25 17:17:26 · 316 阅读 · 0 评论 -
Spring快速应用WebSocket
最近做一个新项目,由于作为项目负责人比较忙,比较久没更了,今天抽个时间写一点,也是给自己做个日记。 实现WebSocket我只写了三个类,直接上代码:import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation....原创 2018-08-15 11:02:08 · 880 阅读 · 0 评论 -
tomcat启动后进行系统初始化及系统销毁执行业务
有些时候,我们有某些业务,或者某些设置是需要在项目启动的时候要进行初始化,比如,自动SQL执行、初始化fastJSON序列化过滤器,初始化系统权限等等,还有在系统销毁的时候执行某些业务,这个时候就需要了解一下GenericServlet这个类的init方法和destory方法;了解一下这个类,这个类是一个抽象类,要想对这个类进行扩展就需要实现这个类的所有抽象方法,看看这个类的方法:dest...原创 2018-08-17 10:48:00 · 847 阅读 · 1 评论 -
关于初始化Spinrg容器、获取Spring容器实例及根据Spring容器获取Bean
上篇文章说到了在tomcat启动后如何进行系统的初始化工作:想看的可点击—— tomcat启动后进行系统初始化及系统销毁执行业务关于Spring容器初始化及获取实例,就要用到2个容器了:一个是ServletContext,一个是WebApplicationContext。ServletContext是servlet容器。用于获取web.xml中配置的参数,或者其他用户。WebA...原创 2018-08-17 11:36:04 · 700 阅读 · 0 评论 -
系统初始化功能扩展,一个具有良好扩展性的初始化工厂!代码其实可以写的更美~
上篇文章是关于Spring容器初始化以及根据容器获取bean的方法扩展等,然后涉及到系统初始化工厂,说在下一篇文章说一下这个问题。有兴趣可以了解一下上篇文章:Spring容器初始化,根据容器获取Bean,初始化工厂应该在什么时候运行一个好的顶层设计,一个好的设计模式,一个合适的设计模式,会让这块的业务更加明确,功能更加完善,代码更好梳理,让开发更加简单,让代码更加优美~那么,怎么写好一...原创 2018-08-20 14:47:21 · 792 阅读 · 0 评论 -
阿里云短信发送接口直接HTTP请求调用
最新一个个性化项目,客户要求使用阿里云短信发送接口。但是实在不想引入阿里云的SDK,就自己生成签名,拼接URL实现, 其实用他们的SDK最终也是一哥GET请求进行调用,归根接底还是HTTP请求。import java.io.IOException;import java.net.MalformedURLException;import java.net.URLEncoder;imp原创 2018-01-11 10:04:32 · 9306 阅读 · 3 评论