自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猫耳山在天边

不可一日无书,不可气量如鼠

  • 博客(70)
  • 资源 (3)
  • 收藏
  • 关注

原创 Jenkins构建报错问题记录

Jenkins构建报错问题记录一次在公司的jenkins上构建,报了这个错误:Could not parse metadata xx/xx/maven-metadata-local.xml报错的引发其实是因为当时页面有点卡,我没注意连续点了两下,于是同时构建了两次,导致两次都在对同一份xml文件操作,于是导致了错误。当时参考了这篇文章:https://blog.csdn.net/jiadajing267/article/details/80830219,文章给出的方法是删除对应的maven-m.

2021-01-09 08:20:53 876

原创 mybatis plus同时使用逻辑删除和唯一索引的问题及解决办法

1、问题背景在开发中,我们经常会有逻辑删除和唯一索引同时使用的情况。但当使用mybatis plus时,如果同时使用逻辑删除和唯一索引,会报数据重复Duplicate entry的问题。举例来说,有表user,建立唯一索引(user_name,is_del)CREATE TABLE `user` ( `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Id', `user_name` varchar(64) DEFAULT..

2021-01-02 07:52:53 2708 3

原创 读写文件同时获取流数据大小

读写文件同时获取流数据大小之前有一次做一个需求,需要在用户下载资源后,记录下载大小。这时如果重新把源读一遍再记录显然是比较浪费资源的,调研了一下后,发现可以用一个包装流,包装输出流并记录通过流的数据大小。Apache Commons IO以及Google guava包中都已经提供了这种支持,类名都是CountingOutputStream(当然也有对应的CountingOutputStream),它们都是用的装饰器模式。参考:https://stackoverflow.com/questions/175

2020-12-20 06:52:26 395 1

原创 加解密工具并发问题

最近在使用javax.crypto.Mac做加解密时,发现用压测工具做高并发的压测时会出问题,查了一下原因,为了优化性能,全局只提前为每一秘钥生成了一个Mac类,而这个类在进行计算时会改变内部数据结构,所以在高并发的时候会报错,解决办法有两个:1、每次使用时,clone一个Mac类2、使用threadlocal为每个线程新建一个Mac类下面是我用threadlocal的例子:import com.google.common.cache.Cache;import lombok.exter.

2020-12-13 09:41:10 374

原创 java多线程编程核心技术(第七章)-读书笔记

java多线程编程核心技术第七章、拾遗增补7.1 线程的状态线程对象在不同的运行时期有不同的状态,状态信息就存在于Thread.State枚举类中。可以使用Thread.currentThread().getState()方法获取线程状态。7.2 线程组可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程。这样的组织结构有些类似于树的形式。线程组的...

2019-10-31 21:19:29 185

原创 java多线程编程核心技术(第四章)-读书笔记

java多线程编程核心技术第四章、Lock的使用4.1 使用ReentrantLock类ReentrantLock可以达到synchronized同样的效果,并且在扩展功能上也更加强大,比如具有嗅探锁定、多路分支通知等功能。4.1.1 使用ReentrantLock实现同步:测试调用ReentrantLock对象的lock()方法获取锁,调用unlock()方法释放锁。调用lock()...

2019-10-29 22:47:59 185

原创 java多线程编程核心技术(第三章)-读书笔记

java多线程编程核心技术第三章、线程间通信3.1 等待/通知机制3.1.3 等待/通知机制的实现方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法用来将当前线程置入“预执行队列”中,并且在wait()所在的代码行出停止执行,直到接到通知或被中断为止。在调用wait()方法之前,线程必须获得该对象的对象级别锁,即只能在同步方法或同步代码块...

2019-10-25 21:20:41 212

原创 java多线程编程核心技术(第二章)-读书笔记

java多线程编程核心技术第二章、对象及变量的并发访问2.1 synchronized同步方法2.1.1 方法内的变量为线程安全“非线程安全”问题存在于“实例”变量中,如果是方法内部的私有变量,则不存在“非线程安全”问题,所得结论也就是“线程安全”的了。2.1.2 实例变量非线程安全如果多个线程共同访问1个对象中的实例变量,则有可能出现“非线程安全”问题。在两个线程访问同一个对象中的...

2019-10-16 22:47:24 189

原创 java多线程编程核心技术(第一章)-读书笔记

java多线程编程核心技术第一章、java多线程技能1.1进程和多线程的概念及线程的优点线程定义:线程可以理解成是在进程中独立运行的子任务。1.2使用多线程使用多线程,或者继承Thread类,或者实现Runable接口多次调用start方法会抛异常,原因是Thread类的threadStatus属性会在线程启动后改变,每次执行start方法会判断这个属性,只要值不为0就会抛Illega...

2019-10-11 22:11:19 165

原创 URL类的setURLStreamHandlerFactory支持多个factory的方法

之前碰到一个问题,需要支持hadoop的url,而java的URL类的setURLStreamHandlerFactory方法只能set一个factory public static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac) { synchronized (streamHandlerLock...

2018-07-23 22:59:48 3870

原创 hdfs2.6.2源码学习:Day2-DataNode启动流程分析

DataNode启动流程分析DataNode类源码学习这个类代码比较多,就不全部浏览了,先把开头部分的参数以及构造器大致浏览一下,然后看main方法这一句比较有意思:* DataNodes spend their lives in an endless loop of asking* the NameNode for something to do. A NameNod

2017-11-04 20:03:15 499

原创 hdfs2.6.2源码学习:Day1-NameNode启动流程分析

NameNode启动流程分析一、shell调用梳理启动hdfs的shell脚本是${HADOOP_HDFS_HOME}/sbin/start-dfs.sh其中在启动namenode、datanode、secondarynamenode、journalnode、zkfc等服务时都是调用了${HADOOP_PREFIX}/sbin/hadoop-daemons.sh

2017-11-04 20:02:47 401

原创 java1.8 过时集合源码学习:Hashtable

1、api此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。为了成功地在哈希表中存储和获取对象,用作键的对象必须实现 hashCode 方法和 equals 方法。Hashtable 的实例有两个参数影响其性能:初始容量 和加载因子。容量 是哈希表中桶 的数量,初始容量 就是哈希表创建时的容量。注意,哈希表的状态为 open:在发生“哈希冲

2017-10-28 16:27:15 438

原创 java1.8 过时集合源码学习:Vector

1、apiVector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。每个向量会试图通过维护 capacity 和 capacityIncrement 来优化存储管理。capacity 始终至少应与向量的大小相等;这个值通常比后者大些,因为随着将组件添加到向

2017-10-28 16:26:39 536

原创 java1.8 常用集合源码学习:TreeSet

1、api基于 TreeMap 的 NavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。此实现为基本操作(add、remove 和 contains)提供受保证的 log(n) 时间开销。注意,如果要正确实现 Set 接口,则 set 维护的顺序(无论是否提供了显式比较器)必

2017-10-28 16:26:19 405

原创 java1.8 常用集合源码学习:TreeMap

1、api基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。此实现为 containsKey、get、put 和 remove 操作提供受保证的 log(n) 时间开销。这些算法是 Cormen、Leiserson 和 Rivest 的 In

2017-10-28 16:26:00 322

原创 java1.8 常用集合源码学习:LinkedList

1、apiList 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。此类实现 Deque 接口,为 add、poll 提供先进先出队列操作,以及其他堆栈和双端队列操作。

2017-10-28 16:25:26 231

原创 java1.8 常用集合源码学习:PriorityQueue

1、api一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法。优先级队列不允许使用 null 元素。依靠自然顺序的优先级队列还不允许插入不可比较的对象(这样做可能导致 ClassCastException)。此队列的头 是按指定排序方式确定的最小 元素。如果多个元素都是最小值,则头是

2017-10-21 14:57:29 375

原创 java1.8 常用集合源码学习:ArrayDeque

1、apiDeque 接口的大小可变数组的实现。数组双端队列没有容量限制;它们可根据需要增加以支持使用。它们不是线程安全的;在没有外部同步时,它们不支持多个线程的并发访问。禁止 null 元素。此类很可能在用作堆栈时快于 Stack,在用作队列时快于 LinkedList。此类的 iterator 方法返回的迭代器是快速失败 的:如果在创建迭代器后的任意时间通过除迭代器本身的 

2017-10-21 14:57:07 310

原创 java1.8 常用集合源码学习:ArrayList

1、apiList 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)size、isEmpty、get、set、iterator 和 listIterator 操作都以固定时间运行。add 操作以分摊的固

2017-10-21 14:56:37 274

原创 java1.8 常用集合源码学习:LinkedHashSet

1、api具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。此实现与 HashSet 的不同之外在于,它维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,即按照将元素插入到 set 中的顺序(插入顺序)进行迭代。注意,插入顺序不 受在 set 中重新插入的 元素的影响。(如果在 s.contains(e) 返回 true 后立即调用 s.add(e),则元素 e 会

2017-10-21 14:55:20 327

原创 java1.8 常用集合源码学习:LinkedHashMap

1、apiMap 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,它维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注意,如果在映射中重新插入 键,则插入顺序不受影响。(如果在调用 m.put(k, v) 前 m.containsKey(k) 返回了 true,则调用

2017-10-21 14:54:44 298

原创 java1.8 常用集合源码学习:HashSet

1、api此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。此类为基本操作提供了稳定性能,这些基本操作包括 add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。对此 set 进行迭代所需的时间与 HashSet 实例的

2017-10-21 14:52:55 253

原创 高性能mysql第三版读书笔记

第1章 MySQL 架构与历史MySQL最重要、最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理(Query Processing)以及其他系统任务(Server Task)和数据的存储/提取相分离。这种处理和存储分离的设计可以在使用时根据性能、特性,以及其他需求来选择数据存储的方式。1.1 MySQL逻辑架构1.1.1 连接管理与安全性每个客户端连接都会在服务器进程中拥有一个线程,这个

2017-10-21 14:49:35 1893 4

原创 java源码中的生词摘录成有道词典单词本

最近在背英文单词,恰好需要技术方面的单词,想到把一些源码里(包括注释)的生词都摘下来背一遍,以后再看注释和源码应该会比较轻松。于是写了个简单程序摘录了一下java源码以及一些大数据项目(hadoop hive spark zeppelin)中的英文单词,并且用java的robot写了类似按键精灵的脚本导入了有道词典里,导入的时候挺费时间的,希望别人不用重复这个过程。全部导入以后又导出来了,

2017-10-09 18:06:49 1185

原创 《Linux命令行与shell脚本编程大全》(第三版)读书笔记

第一部分 Linux命令行第三章、基本的bash shell命令bash手册man 命令例子:man cat空格翻页、回车下一行、左右键看右侧(左侧)内容、q退出infoinfo info展示info页面,没看出有什么特别的hostname设置hostnamehostname mycomputer浏览文件系统遍历目录cd切换目录cd /home/a 切换到/home/a目录,绝对路径c

2017-10-09 15:50:50 1778

原创 java1.8 常用集合源码学习:HashMap

1、先看api基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代

2017-10-09 15:47:51 329

原创 spark2.2.0源码学习过程记录:Day10

1、读《apache spark 源码剖析》第七章第2节接着昨天的来2、源码学习DataSet中的ofRows方法调用了sparkSession.sessionState.executePlan,返回一个QueryExecution对象类SessionState类注释A class that holds all session-specific state in

2017-09-09 18:13:57 395

原创 spark2.2.0源码学习过程记录:Day9

由于工作原因,今天需要学习一下FileSystem等类类FileSystem通用的文件系统,他主要有两个实现LocalFileSystem、DistributedFileSystem,分别是本地文件系统和hdfs文件系统使用Cache类来存放已经创建过的FileSystem以复用他们使用statisticsTable来统计每个FileSystem类的统计信息(文件系统中有多

2017-09-09 18:13:15 353

原创 spark2.2.0源码学习过程记录:Day8

1、《apache spark 源码剖析》浏览第六、七、八、九章后面的几章中只准备学习其中的spark sql部分,所以首先全部浏览了一下,再回过头来看第七章2、读《apache spark 源码剖析》第七章第1节、第2.1节SQL语句在分析执行过程中会经理几个步骤:(1)语法解析。(2)操作绑定。(3)优化执行策略。(4)交付执行。3、源码学习从书中看出入口类

2017-09-09 18:12:45 1172

原创 spark2.2.0源码学习过程记录:Day7

1、读《apache spark 源码剖析》第四章第3节、第五章上面读的这些部分中,暂时只关心第五章部署方式分析中的第4节的内容(5.4 原生集群Standalone Cluster),所以就一直读到了这章结束,下面开始看源码2、源码学习Standalone Cluster方式启动集群时,只要有两条线:Master、Worker(其中还有Executor的启动)Ma

2017-09-09 18:12:24 333

原创 spark2.2.0源码学习过程记录:Day6

1、读《apache spark 源码剖析》第四章第2节2.4任务执行、2.5节Checkpoint和Cache、2.6节WebUI和Metrics由于后面两个小节我目前并不关心,所以暂时只读一下就好2、源码学习类Executor顺序读这个类,很快看到launchTask方法,这个方法创建一个TaskRunner,然后放到runningTasks队列中,然后使用th

2017-09-02 16:08:24 372

原创 spark2.2.0源码学习过程记录:Day5

1、读《apache spark 源码剖析》第四章第2.3节任务的创建和分发2、源码学习类DAGScheduler首先看DAGScheduler类的submitMissingTasks方法,方法中首先取得了需要计算的partitions然后根据stage的类型(ShuffleMapStage或ResultStage)使用outputCommitCoordin

2017-09-02 16:07:46 314

原创 spark2.2.0源码学习过程记录:Day4

1、读《apache spark 源码剖析》第四章第1节作业提交我也使用简单的WordCount例子sc.textFile("/hdfs-site.xml").flatMap(line=>line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)来学习2、源码学习把例子像书中一样分成了几个子句,在命令行中敲了一下,看看转

2017-09-02 16:07:21 364

原创 spark2.2.0源码学习过程记录:Day3

Day31、读《apache spark 源码剖析》第三章第3.2节、3.3节因为3.3节的内容是是讲repl的,我暂时并不关系,所以这部分内容看看书就可以了而3.2节的内容是讲SparkContext的初始化,比较重要,这部分要看完书后自己再看下源码2、源码学习书中3.2节讲的是SparkContext的初始化,但是我学习的版本是2.2.0,初始化是Spark

2017-09-02 16:05:42 1586

原创 spark2.2.0源码学习过程记录:Day1 Day2

Day1就像上学时候第一节课都不是正式上课,我第一天的学习也只是看了一些博客,以及《apache spark 源码剖析》的前面两张(概念介绍和环境搭建等)1、先看博客,有总体感觉,预热http://www.cnblogs.com/hframe/p/6735123.html2、看《apache spark 源码剖析》第一章、第二章Day2第二天开始看源

2017-08-26 22:57:50 552

原创 spark2.2.0源码学习过程记录:序

因为之前并没有系统学习过某个项目源码,为了能更流畅的进入到学习状态,更高效的学习,决定一边看《apache spark源码剖析》一边学习。希望可以写成一个系列博客,这个博客并不会去分析spark的源码实现架构等等高深的问题,只是如实的做一个自己学习的记录,以供以后参考。

2017-08-26 22:44:40 385

原创 MongoDB入库、更新、查询效率简单测试

单mongod测试(即只有一个mongod程序实例) 所有测试机均为4g内存双核cpu(64位系统)测试所用文档为简单的三个字段的文档:DBObject doc = newBasicDBObject();                                  doc.put("test","test"+insertNum);

2014-12-02 15:26:25 5599

原创 java.net-学习(浏览)

为实现网络应用程序提供类。接口摘要ContentHandlerFactory 此接口定义内容处理程序的工厂。CookiePolicy CookiePolicy 实现决定应该接受哪个 cookie 以及应该拒绝哪个 cookie。CookieStore 表示 cookie 存储区的 CookieStore 对象。DatagramSocketImplFactory 此接口定

2014-12-02 09:48:32 444

原创 java.sql-学习(浏览)

提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。接口摘要Array SQL 类型 ARRAY 在 Java 编程语言中的映射关系。Blob SQL BLOB 值在 JavaTM 编程语言中的表示形式(映射关系)。CallableStatement 用于执行 SQL 存储过程的接口。Clob SQL 类型 CLOB 在 J

2014-12-02 09:47:22 415

python基础教程(第二版 中文 扫描版 带标签目录)pdf

python基础教程(第二版 中文 扫描版 带标签目录)pdf

2017-08-14

空空如也

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

TA关注的人

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