自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (12)
  • 收藏
  • 关注

原创 Sybase使用Spring的只读事物报 Use ‘set readonly off‘ to execute BEGIN TRANSACTION.

Sybase使用Spring的只读事物报 Use 'set readonly off' to execute BEGIN TRANSACTION.

2022-07-12 20:45:39 264

原创 Stream的源码简单解析

分析下面的代码 List<Integer> red = apples.stream().filter(k -> { System.out.println("filter"); return k.getColor().equals("red"); }).map(k -> { System.out.println("map"); return k.getWei

2022-05-27 10:08:12 267

原创 深入理解ThreadLocal

深入理解ThreadLocal提出问题:ThreadLocal 是如何和线程绑定的,ThreadLocal 的存储结构,如何解决hash冲突的ThreadLocal是否会导致内存泄漏,为啥key要使用WeakReference在一个父线程开启多个子线程的情况下如何使用ThreadLocal下面我们一个一个问题来1. ThreadLocal 的存储结构,如何解决hash冲突的ThreadLocal 是如何和线程绑定的:上面的图简单描述他们的调用关系,简单来说就是当我们用ThreadLoc

2022-04-08 20:02:43 395

原创 MYSQL 存储过程中使用游标循环临时表

定义游标DECLARE column_value varchar(60);DECLARE done int default 0;DECLARE liuma CURSOR FOR SELECT DISTINCT t.column_value from ABD.dynamic_column_table t;DECLARE CONTINUE HANDLER for not found set done = 1;打开游标OPEN liuma;取游标中的数据FETCH liuma I.

2021-12-24 10:48:26 723

原创 理解Java分布式事务的实现原理

理解分布式事务的实现原理什么时候使用分布式事务实现原理最简单的实现方法实现方法升级实现的难点什么时候使用分布式事务我们需要事物的时候一般是对数据库进行了写或者删除的操作。分布式事务常用在一个项目调用了另外一个项目的api , 如果这个api执行成功了并且调用的这个service方法也没有抛出异常调用方和被调用方都同时提交,只要有一方抛出了异常就全部回滚。实现原理简单分析下我们希望达到的效果是如果A调用了B1. B如果抛出了异常就需要将A和B同时回滚,2. A如果在调用B之前抛出了异常就只回滚A,

2021-11-23 16:29:29 932

原创 java多线程部分线程串行同时部分线程并行

需求: 用id来分组,id 相同的分为一组, 同组任务串行执行,不是同组的任务并行。思路: 需要并行就要使用多线程,但是同组任务需要串行就需要一把锁。用一个list保存正在执行的id,执行任务前简单是否有相同的id正在执行任务,如果有就休眠等待,没有就继续执行。任务执行完后简单从list中移除掉,并且唤醒等待的任务。代码实现 :...

2021-11-22 20:07:39 1257 2

原创 Spring新创建的事物不生效。

在开发中可能遇到下面的代码 @Servicepublic class UserServiceImpl implements UserService{ @Override @Transactional public void saveUser() { //做一些其他操作 test(); throw new RuntimeException("errror"); }@Transactional(propagation =Propagation.REQUIRES_NEW

2021-06-10 17:36:51 152 1

原创 MYSQL 通过分组序号实现不唯一主键更新

需求:加入现在有两个临时表表一:表二:现在我们需求把表二的tag_3更新到表一. 根据tag_1 和 tag_2来更新. tag1+tag2相当于key值,但是这个key值不是唯一,但是tag3是不同的。所以常规的update 可以会出现第一列和第二列的tag3都更新为c或者d.解决:思路:因为每组没有唯一的key值,所以我们可以考虑给每组每行添加一个唯一的key值,这个唯一key值是先分组然后每组从1开始递增。然后用分组的条件+地址的数组就组成了两个表可以关联的唯一key值。分组序

2021-03-26 17:15:52 355 1

原创 使用swagger api 下载excel,excel打不开

需求今天有个常规的需求,先上传一个文件,然后解析文件填充些属性在下载下来,但是最后使用swagger测试的时候,发现下载的文件打开失败,说文件格式不匹配或者文件内容损坏。通过搜索发现需要在api上面加入这个@ApiOperation(value="测试",produces="application/octet-stream")@RequestMapping 里面也有produces 和consumes,produces ==>指定返回值类型,不但可以设置返回值类型还可以设定返..

2021-03-16 22:37:52 1412

原创 Guava的Joiner和Splitter

导入maven依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>21.0</version> ...

2019-08-09 09:52:24 225

原创 MYSQL通过逗号分隔一行转多行

转化前转化后实现sqlSET @ncr_str = 'NCR1174599,NCR1174598';SELECT substring_index(substring_index(@ncr_str, ',', b.help_topic_id + 1), ',', -1)FROM mysql.help_topic bWHERE b.help_topic_id < length(...

2019-07-10 10:09:02 4231

原创 MYSQL自减自增

set @i = 1;select @i:= @i +1;

2019-07-09 10:03:47 1435

原创 MYSQL 动态查询结果

今天遇到一个需求需要把这样的转化为这样的第一张图是从临时表来的,也就是第二个图的列名是不固定的,如果列名是固定的就是一个简单的行转列,但是现在列名不固定,我们必须使用动态的行转列, 完成这个装换我们需要使用两个知识点1. 使用动态语句执行sqlSET @sql = CONCAT("CREATE TEMPORARY TABLE dy_table( ser_no varcha...

2019-06-28 18:24:06 1340 1

原创 SpringBoot 中如何使用通过线程池使用多线程

SpringBoot对java的线程池进行了封装, 可以通过配置直接使用线程池。配置线程池@Configuration@EnableAsyncpublic class WebContextConfiguration { @Bean public Executor threadPoolTaskExecutor() { ThreadPoolTaskExe...

2019-06-21 18:40:45 909

原创 SpringBoot 中jpa 如何优雅的去除查询结果中的空格

使用场景:在sybase 数据库中,如果字段的类型为char, 那我查询出来字段的长度就为char的长度。 其中不够的值就用空格进行填充,那么查询出来就会有很多空格, 最简单的方法是在实体的get方法中使用trim, 但是如果很多字段都是char类型,那将不那么优雅,最好的方式是自定义一个数据类型。在char的字段上使用自定义的数据类型。实现:1. 自定义数据类型,继承UserType接口...

2019-06-20 16:34:46 1980

原创 中间有null值的整型集合排序

planningBos.sort((o1, o2) -> { if (o1.getGmrpPriority() != null && o2.getGmrpPriority() != null) { return o1.getGmrpPriority().compareTo(o2.getGmrpPriority()); } return ...

2019-06-19 15:09:37 202

原创 newSingleThreadExecutor的运用

运用场景:在一个api中,程序的最后要调用一个存储过程,但是存储过程调用完需要花费很多的时间,程序并并不关心最后调的存储过程的执行结果。所以想到最后重新开一个线程来调用储存过程 ,主线程直接返回结果。但是由于储存过程执行的时间很长,所以用户同时访问的时候很容易出现几个调用存储过程的线程在后台同时运行,如果他们操作了同一张表的同一条数据, 就容易导致死锁。所以我们希望调用存储过程的线程一次只有一个...

2019-06-16 18:09:47 12667 1

原创 Java 三元表示式 拆箱和装箱引起的NullPointerException

今天在写代码的时候遇到一个很怪异的空指针异常,大概代码如下public class User { private Integer id; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; }}...

2019-05-28 23:42:42 394

原创 sybase 删除库中的所有用户自定义表

sybase 删除库中的所有表SELECT 'drop tbale ' + name FROM sysobjects WHERE type = 'U'把跑出来的全部sql批量执行。

2019-05-22 18:20:22 353

原创 Sybase 生成table创建语句

在sybase中写一个存储过程,获取table的创建语句。-- [/Formatter] Formatted with Sybase T-SQL Formatter(version: 1.5.1.14696) at 05/22/2019 18:07:46 08:00:00[Formatter/]IF OBJECT_ID('get_create_sql') IS NOT NULL DROP...

2019-05-22 18:15:23 1728

原创 List 递归删除元素java.util.ConcurrentModificationException

List 递归删除元素在使用list迭代器移除元素的时候,如果存在递归调用就会报如下错Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) at java.uti...

2019-05-16 23:16:55 1222 1

原创 docker ENTRYPOINT ["/springboot-jetty-demo.sh"] error[8] fie or direct not find

遇到这问题有三种可能1. /springboot-jetty-demo.sh 这个文件在镜像中不存在。需要把本地文件拷贝到镜像中COPY docker-entrypoint.sh springboot-jetty-demo.sh2.这个文件存在,没有给这个文件赋予可执行权限, 在Dockerfile中添加RUN chmod +x $JETTY_HOME/springboot-je...

2019-02-22 18:28:56 470

原创 SpringBoot设置全局的枚举转换器

应用场景:将string转化为后端的枚举。大致思路:编写一个转换器工厂类。获取传入的目标对象,在工厂类中调用转换器,进行转换,向spring容器中注入工厂类。枚举的接口public interface BaseEnum { /** * Gets value. * * @return the value */ String...

2018-09-05 12:23:05 6063 1

原创 SpringBoot 日期转换

SpringBoot 日期转换前提:    请求参数里面的string转化为date和使用@RequestBody请求将json里面的string转化为date这是两个问题。1. 传入参数时string转换为Date2. 返回值时date转换为string对于请求参数里面string转化为date使用了全局的转换器可以解决问题,但是对于@RequestBody这种提交的不起作用`...

2018-09-04 16:17:18 3964

原创 Intellij 配置getter 和setter模板

## Intellij 配置getter 和setter模板1.点击alt + insert 选择Getter2.点击模板后面的..., 创建自己的模板3.getter模板#if($field.modifierStatic)static ###end$field.type ###set($name = $StringUtil.capitalizeWithJavaB...

2018-09-03 10:30:12 1823 2

原创 服务器数据库定期自动备份到本地

应用场景 服务器上的数据库上的信息可以通过cron实现在服务器上的定时备份,但是如果服务器被攻击导致整个服务器上的数据无法还原,重要的信息将被丢失。所有需要一个定期自动将服务器上的MySQL的数据备份到本地。大概思路1. 通过Spring Quart编写一个定时任务,使用mysqldump备份服务器上的数据库,发送数据库的备份结果到RabbitMQ,在Windows客户端 监听消息,将...

2018-08-26 18:19:23 6868

原创 RabbitMQ+Spring Quartz 实现消息的定时发送和接收

因公司需要使用RabbitMQ作为中间件实现消息的发送和接收。同时加入Spring Quartz 实现消息的定时发送。所以做了个Dome.只是做个演示。 主要有4个项目。 两个消费者一个生产者,一个调度者。生产者生产者比较简单,只是把要发送的消息保存到数据库。在界面上显示所有的消息。点击全部发送并没有发送消息只是修改消息的状态为NOT_SEND. 界面截图 调度者调度者定时重数据库查询

2017-10-06 16:13:25 7439 3

原创 Springboot发布到自定义tomcat

Springboot发布到自定义tomcat1: 修改pom文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <grou

2017-06-04 16:05:57 768

原创 java后端实现返回子线程进度条

在一个项目有一个需求是这样的,在上传一个文件后,后台加载文件插入临时表,再重临时表中查出数据返回客户端,最后在进行一段比较费时的数据计算。在计算完成前整个页面都是锁住的,用户不能做任何操作,直到计算完成,需求希望的优化是,返回数据到客户端后就直接退出,页面解锁,最后的计算由一个子线程去计算,然后在页面上显示计算的进度条。提取要点一个子进程进行计算计算过程中返回计算的百分比,比如10%,20%。。

2017-03-18 22:37:01 7826

原创 hive基础

hive是什么?一个关系数据库,一个建立在hadoop之上的数据仓库架构,他们提供了一种类似sql的语句Hive Sql 简称hql,hive会将我们写的hql解析为hadoop支持的map reduce程序并将这个map reduce交给hadoop集群来处理。 hive的存储是建立在hadoop文件系统之上的,简单的说hive中的一个表就是我们设置的数据仓库的一个文件夹,你导入的数据就

2017-03-15 09:18:54 321

原创 java api操作hive遇到的问题

package hadoop_study;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class HiveCreateDb { private static String diverName="

2017-03-14 14:08:59 716

原创 ubuntu常用命令

文件操作rm -d 目录名 #删除一个空目录rmdir 目录名 #删除一个空目录rm -r 目录名 #删除一个非空目录rm 文件名 #删除文件 sudo tar xzf hadoop-1.0.2.tar.gz #解压文件mv 旧名 新名 #修改文

2017-03-13 15:14:31 292

原创 MapReduce和HDFS

MapReduce的工作机制 简单分为3部 1)MapReduce作业的提交客户端进行编码运行后,客户端会先向JobTracker请求一个Job ID请求后JobTracker会创建这个Job id,检查job的输入输出目录,检查分片情况,如果出现异常将停止运行抛出异常,JobClient将运行作业所需要的资源(Jar文件,配置文件和计算所得输入分片)复制到一个作业ID命名的目录下JobT

2017-03-10 17:31:57 1353

原创 第一个hadoop程序

1:安装ubuntu并在ubuntu中安装hadoop 参考链接:http://www.powerxing.com/install-hadoop/ 2:安装eclispe并且在eclipse中安装hadoop插件 参考链接:https://my.oschina.net/muou/blog/408543 我用的版本是hadoop2.6 ,eclispe是kepper的,用ant编译hadoop

2017-03-07 16:16:24 359

原创 代码重构

代码重构的几点原则:存在重复的代码,可以考虑把重复的代码提到一个公共方法中。一个方法的代码太长,越长的代码越不好维护,这种情况可以把方法按照功能点切分成小的方法,while,if等都是我们切分的依据,可以把while里面的提到一个独立的方法中。参数列表过长,参数列表过长不好调用和维护,很难无法理解参数的意思,这时可以考虑把参数封装成对 象传进去,或者直接传入已有的对象。发散式变化,如果出现了

2017-03-03 18:31:34 401

原创 方法引用

方法引用方法引用就是直接访问类中的实例或者构造器或者方法,他提供了一种调用方法而不直接执行的方式,方法引用是Lambda表达式的简写,在不需要使用Lambda表达式的时候一帮不需要使用方法引用。==当Lambda表达式中只是执行一个方法调用时,不用Lambda表达式,直接通过方法引用的形式可读性更高一些。==方法引用分的分类静态方法引用实例方法引用构造方法引用静态方法引用实例//没有实现的接

2017-02-19 18:39:46 330

原创 Lambda表达式和函数式接口

Lambda表达式产生的原因Java是一门面向对象的语言,面向对象的语言使用带有方法的对象封装行为,而函数式编程使用函数封装行为,Java的对象一般比较重量级。当实例化一个对象时往往涉及到初始化他用到的其他字段和方法以及类。为了对那些只在调用处使用一次的方法提供一种轻量级的封装,Java的Lambda出生了。在没有Lambda表达式的时候我们一般使用匿名内部类来处理这种需求,但是匿名内部类有以下不足

2017-02-17 09:23:56 309

RabbitMQ+Spring Quartz 实现消息的定时发送和接收和定时任务的管理

RabbitMQ+Spring Quartz 实现消息的定时发送和接收, 进行定时任务的动态创建和管理。

2018-12-20

数据库实现本地备份

1. 使用定时任务调用mysqldump命令实现mysql数据库数据库备份。 2. 通过rabbitmq发送消息给客户端。让客户端拉取备份数据

2018-08-26

自定义类加载器实现自定义加载

自定义类加载器实现自定义加载。自定义类加载器实现自定义加载

2018-01-27

Solr in action Source Code

Solr in action 源代码。Solr实战源码。Solr实战源码。Solr实战源码。Solr实战源码

2017-10-10

RabbitMQ+Spring Quartz 实现消息的定时发送和接收

RabbitMQ+Spring Quartz 实现消息的定时发送和接收.提供了一个任务管理界面。

2017-10-06

Elasticsearch视频教程下载地址

绝对有效的Elasticsearch视频教程下载地址

2017-08-23

ik-analyzer-solr5-5.x.jar

可以直接用的solr5以上IK中文分词器,solr4可不可用还未尝试,源码可以在https://github.com/EugenePig/ik-analyzer-solr5。这个就是下载maven编译后的jar

2017-07-30

solr分词jar

solr分词jar

2017-07-13

可运行的haddoop程序

只需改下输入输出路径就可直接运行的hadoop程序,包含需要的完整jar

2017-03-07

js,jquery实现瀑布布局

使用js,jquery分别实现常见的瀑布布局

2015-08-25

js+php实现的博客

对原声的js进行了封装,包括对事件,ajx,样式的封装。用php做简单的后台。其中包含一个qq的时光轴

2015-08-25

js+php实现的博客网

自己封装的原声js,以php实现简单的后台,对js的事件,ajax都进行了封装。其中还包括一个时光轴。

2015-08-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除