- 博客(54)
- 资源 (3)
- 收藏
- 关注
原创 SpringBoot1.5.9升级到SpringBoot2.1.3出现Hibernate唯一性约束问题(DataIntegrityViolationException)
org.springframework.dao.DataIntegrityViolationException由于Hibernate4使用的旧的生成器,而Hibernate5默认使用的是新版的生成器.可通过设置spring.jpa.hibernate.use-new-id-generator-mappings=false来解决新生成器生成的id与之前的id冲突,当然也可以用配置类的方式:...
2020-06-18 17:47:43 562
原创 MapReduce实战一手写WordCount案例
需求: 在一堆给定的文本文件中统计输出每一个单词出现的总次数如下图所示为MapReduce统计WordCount的分析图:map阶段从文件中读取数据,行号作为key,读取的每行值作为value,将每个key/value对输出给reduce阶段,reduce阶段将map阶段所有执行完的结果进行reduce操作,每个相同的key执行一次reduce方法。代码如下:WordCountM...
2018-11-04 13:15:15 2171
原创 伪分布式(yarn)运行Hadoop案例(二)
YARN 上运行 MapReduce 程序1 首先配置yarn-env.shexport JAVA_HOME=/opt/module/jdk1.8.0_144 2 配置 yarn-site.xml <!-- reducer 获取数据的方式 --><property> <name>yarn.nodemanager.aux-servi...
2018-10-28 01:11:27 356
原创 伪分布式(hdfs)运行Hadoop案例(二)
一 介绍HDFS中如下组件:1) NameNode : 存储文件的元数据,如文件名,文件目录结构,文件属性等。2) DataNode: 在文件系统中存储文件块的数据等。3)Secondary NameNode: 用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。 二 使用HDFS并运行MapReduce程序1 首先将 etc/hadoop/had...
2018-10-27 23:52:21 642
原创 本地文件运行Hadoop案例(一)
一 Hadoop运行模式(1)本地模式(默认模式): 不需要启用单独进程,直接可以运行, 测试和开发时使用。(2)伪分布式模式: 等同于完全分布式,只有一个节点。(3)完全分布式模式:多个节点一起运行。下面是官网给出的原文:This will display the usage documentation for the hadoop script.Now you are ...
2018-10-27 22:09:37 1927 2
原创 二叉树按层遍历打印
二叉树按层进行遍历,例如: ① ② ③ ④ ⑤ ⑥ 进行按层遍历的话打印就是:12 34 5 6思路: 用一个current来表示当前指针,用nextLastRight来表示最右节点的指针,例如,current一开始指向1,而下一行的nextLastRight指针指向子节点的最右...
2018-10-02 19:44:14 561
原创 剑指Offer-数组中的逆序对(归并排序应用)
最近一直在复习一些算法及数据结构方面的东西,就找了一个适合找工作笔试的题目,在剑指Offer上刷了几道题目,发现对复习知识点还是很有用的,推荐要找工作的伙伴去剑指Offer刷题。题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007...
2018-09-11 12:11:51 262
原创 归并排序
归并排序其实是采用的是分治算法,也就是分而治之,比如一个数组:{13,4,5,2,65,6},首先将这个数组分成{13,4,5},{2,65,6} ,然后继续分解{13,4} {5},{2,65},{6},最后{13},{4},{5},{2},{65},{6}递归分解多个数组后就开始比较合并,首先是13跟4比较,再合并{4,13},然后合并的就是{4,5,13},接着{2,65},{2,6...
2018-09-11 01:06:50 425
原创 剑指Offer-二叉搜索树的后序遍历序列
最近一直在复习一些算法及数据结构方面的东西,就找了一个适合找工作笔试的题目,在剑指Offer上刷了几道题目,发现对复习知识点还是很有用的,推荐要找工作的伙伴去剑指Offer刷题。题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 看到这道题,给出了二叉排序树(bst)的后...
2018-09-05 19:59:36 303
原创 剑指Offer-顺时针打印矩阵
最近一直在复习一些算法及数据结构方面的东西,就找了一个适合找工作笔试的题目,在剑指Offer上刷了几道题目,发现对复习知识点还是很有用的,推荐要找工作的伙伴去剑指Offer刷题。 题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打...
2018-09-04 23:49:24 255
原创 剑指Offer-数值的正数次方
最近一直在复习一些算法及数据结构方面的东西,就找了一个适合找工作笔试的题目,在剑指Offer上刷了几道题目,发现对复习知识点还是很有用的,推荐要找工作的伙伴去剑指Offer刷题。 题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 这是一道整数快速幂的题目,根据二进制的进位来进行乘法运算,大大减...
2018-09-04 09:20:52 204
原创 剑指Offer-连续子数组的最大和
最近一直在复习一些算法及数据结构方面的东西,就找了一个适合找工作笔试的题目,在剑指Offer上刷了几道题目,发现对复习知识点还是很有用的,推荐要找工作的伙伴去剑指Offer刷题。题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否...
2018-09-03 00:08:50 245
原创 剑指Offer-把数组排成最小的数
最近一直在复习一些算法及数据结构方面的东西,就找了一个适合找工作笔试的题目,在剑指Offer上刷了几道题目,发现对复习知识点还是很有用的,做到重建二叉树这块。递归传值出了点问题,debug半小时才找出错误,所有还是写篇博客记录一下。也推荐要找工作的伙伴去剑指Offer刷题。 题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。...
2018-09-02 23:54:04 197
原创 剑指Offer-矩形覆盖
最近一直在复习一些算法及数据结构方面的东西,就找了一个适合找工作笔试的题目,在剑指Offer上刷了几道题目,发现对复习知识点还是很有用的,做到重建二叉树这块。递归传值出了点问题,debug半小时才找出错误,所有还是写篇博客记录一下。也推荐要找工作的伙伴去剑指Offer刷题。 题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一...
2018-09-01 22:19:31 236
原创 剑指Offer-跳台阶
最近一直在复习一些算法及数据结构方面的东西,就找了一个适合找工作笔试的题目,在剑指Offer上刷了几道题目,发现对复习知识点还是很有用的,做到重建二叉树这块。递归传值出了点问题,debug半小时才找出错误,所有还是写篇博客记录一下。也推荐要找工作的伙伴去剑指Offer刷题。 题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先...
2018-09-01 20:05:40 183
原创 剑指Offer-用两个栈实现队列
最近一直在复习一些算法及数据结构方面的东西,就找了一个适合找工作笔试的题目,在剑指Offer上刷了几道题目,发现对复习知识点还是很有用的,做到重建二叉树这块。递归传值出了点问题,debug半小时才找出错误,所有还是写篇博客记录一下。也推荐要找工作的伙伴去剑指Offer刷题。 题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。i...
2018-09-01 19:50:28 229
原创 剑指Offer-重建二叉树
最近一直在复习一些算法及数据结构方面的东西,就找了一个适合找工作笔试的题目,在剑指Offer上刷了几道题目,发现对复习知识点还是很有用的,做到重建二叉树这块。递归传值出了点问题,debug半小时才找出错误,所有还是写篇博客记录一下。也推荐要找工作的伙伴去剑指Offer刷题。 题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历...
2018-09-01 19:07:26 325
原创 解决Netty中TCP拆包、粘包问题
一 概述在基于流的传输里比如TCP/IP,接收到的数据会先被存储到一个socket接收缓冲里。不幸的是,基于流的传输并不是一个数据包队列,而是一个字节队列。即使你发送了2个独立的数据包,操作系统也不会作为2个消息处理而仅仅是作为一连串的字节而言。因此这是不能保证你远程写入的数据就会准确地读取。举个例子,让我们假设操作系统的TCP/TP协议栈已经接收了3个数据包:由于基于流传输的协议的这...
2018-08-21 12:18:13 8117
原创 Netty5
在上一篇文章写了JAVA的NIO1.0,这一篇写的Netty其实是基于NIO2(AIO)的一个NIO框架,我们知道传统的IO是一种同步阻塞式的IO,而JDK1.4之后处理的NIO1是一种同步非阻塞式的IO,他们都有一个共同的特点就是都是同步的,这样在多个线程并发访问的时候效率是不高的,NIO2是一种异步非阻塞的IO,效率非常的高,类似ajax和Future模式。如果自己去实现NI...
2018-08-20 22:49:04 1875
原创 JAVA NIO
一 简介Java NIO, 是从Java 1.4版本开始引入的 一个新的IO API,可以替代标准的Java IO API。 NIO与原来的IO有同样的作用和目的,但是使用 的方式完全不同, NIO支持面向缓冲区的、基于 通道的IO操作。 NIO将以更加高效的方式进行文 件的读写操作。io 与 nio的区别如下IO NIO 面向流(Stream Oriented) 面向...
2018-08-20 17:12:09 213 1
原创 并发编程框架----disruptor框架(二)
一 从上一篇博客可以知道disruptor的工作图如下:给人的印象就是RingBuffer是其核心,生产者向RingBuffer中写入元素,消费者从RingBuffer中消费元素。 RingBuffer其实就是一个环,首尾连接的一个环,只维护一个next()指向的下一个元素,当数据超过最大的限制的时候,其实就是一个覆盖操作,打个比方现在RingBuffer的长度为2^3=...
2018-08-19 00:31:17 494
原创 并发编程框架----disruptor框架(一)
一 简介 Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Disruptor。Disruptor它是一个开源的...
2018-08-18 20:44:34 646
原创 Java -jar 如何在后台运行项目
说到运行jar包通常我们都会以下面的方式运行:[root@iZ2zei8ft0h4q485kxwxjgZ babyshark]# java -jar babyshark-0.0.1-SNAPSHOT.jar这样运行的话会有一个问题,就是我们一关闭当前窗口就会停止运行项目,要想解决这个问题,就需要在后台运行。[root@iZ2zei8ft0h4q485kxwxjgZ babysh...
2018-08-15 20:32:53 118637 4
原创 Nginx编译安装Lua模块遇到的大坑
昨晚一直在弄Nginx安装Lua模块,一开始我是yum install nginx安装的Nginx,这样的话就不需要编译安装的那么麻烦,在安装Lua模块的过程中,我想更新下Pcre的版本,结果把系统搞炸了,删除了不该删的文件(可能当时我用的root权限的,直接rpm -e --nodeps xxxx)就把pcre给卸载了,结果阿里云的服务器炸了,远程连接也断了,后面尝试着恢复,但是...
2018-08-13 10:46:17 18551 1
原创 强大的Stream并行流
一 了解StreamStream API(java.util.stream.*) Stream 是JAVA8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作,就类似于使用SQL执行数据查询一样。也可使用StreamAPI做并行操作,总之,StreamAPI提供了一种高效且易于使用的处理数据的方...
2018-08-01 22:31:46 24407 4
原创 多线程实现的四种方式
实现多线程有以下四种方式:1. 继承Thread类2.实现Runnable接口3.实现Callable接口4.线程池:提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。体系结构:java.util.concurrent.Executor : 负责线程的使用与调度的根接口 |--ExecutorService 子...
2018-07-31 16:52:46 54024 2
原创 用于解决多线程安全问题的三种方式
用于解决多线程安全问题的方式:1. 同步代码块 (隐式锁)2. 同步方法(隐式锁)3. 同步锁 Lock( jdk 1.5 后) 注意:是一个显示锁,需要通过 lock() 方法上锁,必须通过 unlock() 方法进行释放锁下面举一个售票例子:1)同步代码块package com.lxj.juc;public class TestSync { public stat...
2018-07-30 21:35:28 4918
原创 Java之23种设计模式-单例模式
单例模式 单例对象(Singleton)是一种常用的设计模式。在 Java 应用中,单例对象能保证在一个 JVM 中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了 new 操作符,降低了系统内存的使用频率,减轻 GC 压力。3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多...
2018-07-30 14:28:11 218
原创 Java之23种设计模式-抽象工厂模式
一 抽象工厂模式(工厂方法模式请点我)工厂方法模式和抽象工厂模式不好分清楚,他们的区别如下:工厂方法模式:一个抽象产品类,可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类只能创建一个具体产品类的实例。抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类可以创建多个具体产...
2018-07-29 21:15:32 213
原创 Java之23种设计模式-工厂方法模式
一 简单工厂模式在说工厂方法模式之前,先看看简单工厂模式。简单工厂模式分为三种。1)普通就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图: 下面举一个发短信和邮箱的例子:Sender.javapackage com.lxj.simplefactory;public interface Sender { public void se...
2018-07-29 19:26:20 770
原创 JAVASE之JAVAI/O流篇
一 Java IOIO流用来处理设备之间的数据传输。Java程序中,对于数据的输入/输出操作以”流(stream)” 的方式进行。java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中。...
2018-07-29 01:56:54 333
原创 JAVASE之JAVA注解篇
一 注解Annotation概述从 JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 也就是 Annotation(注解)Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理. 通过使用 Annotation, 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息.Annotatio...
2018-07-28 19:57:58 230
原创 JAVASE之JAVA枚举篇
一 概述JDK5.0之前需要自定义枚举类,而JDK5.0新增的enum关键字用于定于枚举类,若枚举只有一个成员,则可以作为一种单例模式的实现方式枚举类对象的属性不应允许被改动,所以应该使用private final修饰,应该在构造器为其赋值,若枚举类显式的定义了带参数的个构造器,则在列出枚举类时,也必须对应的传入参数。二 Enum枚举类必须在枚举类的第一行声明枚举类对象。...
2018-07-28 18:36:59 361
原创 JAVASE之JAVA泛型篇
一 概述 泛型,JDK1.5新加入的,解决数据类型的安全性问题,其主要原理是在类声明时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这样在类声明或实例化时只要指定好需要的具体的类型即可。 Java泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生ClassCastException异常。同时,代码更加简洁、健壮。如下图描述:二 使用泛型1...
2018-07-28 17:51:35 285
原创 JAVASE之JAVA集合篇
一 集合概述 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组。JAVA集合可分为Collection和Map两中体系: ...
2018-07-28 16:29:17 289
原创 JAVA实现动态代理
一 动态代理 动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象,下面直接看代码: 二 测试Animal.javapackage com.lxj.dynamic.proxy;public interface Animal { public void action(); public void breat...
2018-07-28 00:56:16 934 2
原创 JAVA实现静态代理
首先看看什么是代理模式。一 代理模式 使用一个代理对象将对象包装起来,然后用该代理对象来取代该对象,任何对原始对象的调用都要通过代理,代理对象决定是否以及何时调用原始对象的方法二 静态模式 要求被代理类和代理类同时实现相应的一套接口,通过代理类调用重写接口的方法,实际上调用的是原始对象的同样的方法。如下图:Cilent调用Source的method(...
2018-07-27 23:40:24 8111 9
原创 JAVA实现快速排序
package com.lxj.alg;public class QuickSorted { public static void main(String[] args) { int [] array = {545,654,2,-11,24,745,58,35,64,75,253,35}; //int [] array = {10,9,8,7,6,5,4,3,2,...
2018-07-26 21:57:21 457
原创 Mybatis中如何调用存储过程
下面就用一个例子来测试Mybatis调用存储过程,并进行分页的例子:使用的是oracle数据库1 存储过程代码如下:create or replace procedure test_page( page_start in int,page_end in int,page_count out int, page_emps out sys_refcursor)asb...
2018-07-21 10:38:35 17765
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人