自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

在咖啡里溺水的鱼

追求内心的宁静

  • 博客(107)
  • 收藏
  • 关注

原创 Spring Data Neo4j is not a valid entity class. Please check the entity mapping

先抛结论究竟是什么原因引发的,确实没排查出来。解决方案,在POM文件中主动引入 fast-classpath-scanner 比较新的版本,问题解决。问题SpringBoot 2.1.1 集成 Spring Data Neo4j 保存一个节点的时候报错,提示 XXX is not a valid entity class. Please check the entity mapping。...

2019-09-20 22:57:52 1284

原创 SpringBoot项目 - Maven Build Lombok 报错

先抛结论被Lombok @Builder 和 @UtilityClass 修饰的类成员变量不能通过 import static 方式引入。今天遇到了一个很诡异的问题,一个SpringBoot项目,突然在某次提交之后Maven编译就开始报错了。报错信息通篇是找不到那些标记了@Data的类所自动生成的 Getter方法和Setter方法,还夹杂着一些莫名其妙的无法在静态类中引用静态方法(源码绝对...

2019-08-09 22:41:11 2160 1

原创 docker pull / docker login 报错 Error response from daemon: Get https://registry-1.docker.io/v2/: x509

docker pull 和 docker login 的时候报错Error response from daemon: Get https://registry-1.docker.io/v2/: x509: certificate is valid for bw-production.space, brickworksoftware.com, *.bw-production.space, *.b...

2019-07-15 12:05:17 17033 12

原创 【知识精解】Java8中的Lambda表达式

知识精解系列将以博主的第一视角对各类技术中的核心要点进行深入的解析,不会覆盖相关技术的全部内容,适合想要快速了解相关技术核心内容的人群阅读。 本文为 《Java8函数式编程》(Java 8 Lambdas: Functional Programming for the Masses) 第二章内容的精解,若对相关知识感兴趣,想要全面的学习相关知识,推荐购书深入阅读。若认为文章涉嫌侵权...

2018-08-20 22:20:38 357

原创 深入了解JVM——运行期优化

本文为 《深入理解Java虚拟机》第十一章内容的学习笔记,部分内容经过二次加工。若对相关知识感兴趣,推荐购书深入阅读。若认为文章涉嫌侵权,请联系作者及时删除。 本作品采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 (CC BY-NC-SA 3.0 CN) 进行许可 。非商业性质转载请注明作者和出处,禁止商业性质转载。 开源创造世界概述JIT...

2018-08-20 21:29:39 278

原创 深入了解JVM——编译器优化

本文为 《深入理解Java虚拟机》第十章内容的学习笔记,部分内容经过二次加工。若对相关知识感兴趣,推荐购书深入阅读。若认为文章涉嫌侵权,请联系作者及时删除。 本作品采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 (CC BY-NC-SA 3.0 CN) 进行许可 。非商业性质转载请注明作者和出处,禁止商业性质转载。 开源创造世界概述Java...

2018-08-20 21:28:25 280

原创 深入了解JVM——虚拟机字节码执行引擎

本文为 《深入理解Java虚拟机》第八章内容的学习笔记,部分内容经过二次加工。若对相关知识感兴趣,推荐购书深入阅读。若认为文章涉嫌侵权,请联系作者及时删除。 本作品采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 (CC BY-NC-SA 3.0 CN) 进行许可 。非商业性质转载请注明作者和出处,禁止商业性质转载。 开源创造世界概述执行引擎...

2018-08-20 21:26:32 205

原创 深入了解JVM——虚拟机类加载机制

本文为 《深入理解Java虚拟机》第三章内容的学习笔记,部分内容经过二次加工。若对相关知识感兴趣,推荐购书深入阅读。若认为文章涉嫌侵权,请联系作者及时删除。 本作品采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 (CC BY-NC-SA 3.0 CN) 进行许可 。非商业性质转载请注明作者和出处,禁止商业性质转载。 开源创造世界概述虚拟机的...

2018-08-20 21:23:24 207

原创 深入了解JVM——类文件结构

本文为 《深入理解Java虚拟机》第四章内容的学习笔记,部分内容经过二次加工。若对相关知识感兴趣,推荐购书深入阅读。若认为文章涉嫌侵权,请联系作者及时删除。 本作品采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 (CC BY-NC-SA 3.0 CN) 进行许可 。非商业性质转载请注明作者和出处,禁止商业性质转载。 开源创造世界无关性的基石...

2018-08-20 21:21:12 177

原创 深入了解JVM——虚拟机性能监控与故障处理工具

本文为 《深入理解Java虚拟机》第四章内容的学习笔记,部分内容经过二次加工。若对相关知识感兴趣,推荐购书深入阅读。若认为文章涉嫌侵权,请联系作者及时删除。 本作品采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 (CC BY-NC-SA 3.0 CN) 进行许可 。非商业性质转载请注明作者和出处,禁止商业性质转载。 开源创造世界JDK的命令行工...

2018-08-20 21:17:10 165

原创 深入了解JVM——垃圾收集器与内存分配策略

本文为 《深入理解Java虚拟机》第二章内容的学习笔记,部分内容经过二次加工。若对相关知识感兴趣,推荐购书深入阅读。若认为文章涉嫌侵权,请联系作者及时删除。 本作品采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 (CC BY-NC-SA 3.0 CN) 进行许可 。非商业性质转载请注明作者和出处,禁止商业性质转载。 开源创造世界个人练习代码:h...

2018-07-23 22:27:34 227

原创 深入了解JVM——虚拟机性能监控与故障处理工具

本文为 《深入理解Java虚拟机》第四章内容的学习笔记,部分内容经过二次加工。若对相关知识感兴趣,推荐购书深入阅读。若认为文章涉嫌侵权,请联系作者及时删除。 本作品采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 (CC BY-NC-SA 3.0 CN) 进行许可 。非商业性质转载请注明作者和出处,禁止商业性质转载。 开源创造世界个人练习代码:h...

2018-07-23 22:25:30 217

原创 深入理解JVM——Java内存区域与内存溢出异常

本文为 《深入理解Java虚拟机》第二章内容的学习笔记,部分内容经过二次加工。若对相关知识感兴趣,推荐购书深入阅读。若认为文章涉嫌侵权,请联系作者及时删除。 本作品采用 知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 (CC BY-NC-SA 3.0 CN) 进行许可 。非商业性质转载请注明作者和出处,禁止商业性质转载。 开源创造世界个人练习代码:h...

2018-06-13 22:25:44 234

原创 Eclipse报错: A class file was not written. The project may be inconsistent

一个很久没用的Eclipse打开之前用的项目报了很多错,并且Eclipse特别容易卡死。百度一下很多人都说是磁盘空间已满导致的,但我这里磁盘空间很充裕,很明显不是这个问题。由于同时报了很多文件没有权限访问,也试过使用管理员身份运行Eclipse但都无济于事。最后考虑会不会是系统账号问题,最后通过一个很特别的方式解决了这个问题。打开windows的用户账户,选择自己使用的用户,选择属性。在组...

2018-05-04 13:55:20 3539

原创 深入了解Java并发——《Java Concurrency in Practice》14.构建自定义的同步工具

虽然章节的目的是介绍如何基于AQS等基类来构建自定义的同步工具,但详细的介绍了AQS的原理,并且详细的讲解了java.util.concurrent类库中许多基于AQS的常用同步工具对AQS的实现及原理。了解AQS之后对ReentrantLock、Semaphore、CountDownLatch、ReentrantReadWritLock、FutureTask都会有一个全新的认识和豁然开朗的...

2018-04-23 23:42:19 673

原创 深入了解Java并发——《Java Concurrency in Practice》13.显式锁

需要支持轮询、定时的锁?需要可中断锁获取操作的锁?在非块结构中想要使用锁?了解支持更高级操作的显式锁。Java 5.0新增ReentrantLock并不是一种替代内置加锁的方法,而是当内置加锁机制不适用时,作为一种可选的高级功能。13.1 Lock与ReentrantLockReentrantLock实现了Lock接口,提供了与synchronized相同的互斥性和内存...

2018-04-23 23:38:05 237

原创 深入了解Java并发——《Java Concurrency in Practice》12.并发程序的测试

本章节的内容介绍了如何对并发程序进行测试,与普通程序进行测试的区别,测试过程中应当注意的问题,可以使用的技巧和方法等12.1 正确性测试在为并发类设计单元测试时,首先需要执行与测试串行类时相同的分析——找出需要检查的不变形条件和后验条件。12.1.1 基本的单元测试进行并发程序测试时,包含一组串行测试通常是有帮助的,它们有助于在开始分析数据竞争之前就找出与并发性无关的问...

2018-04-23 23:35:56 296

原创 深入了解Java并发——《Java Concurrency in Practice》11.性能与可伸缩性

本章内容介绍了并发编程中,最吸引人的性能问题。什么会导致性能问题,如何解决性能问题,我们应该在什么情况下着手解决性能问题?首先要保证程序能正确运行,然后仅当程序的性能需求和测试结果要求程序执行的更快时,才应该设法提高它的运行速度11.1 对性能的思考尽管使用多个线程的目标是提升整体性能,但与单线程的方法相比,使用多个线程总会引入一些额外的性能开销。要想通过并发来获得更好...

2018-04-23 23:34:13 217

原创 深入了解Java并发——《Java Concurrency in Practice》10.避免活跃性危险

死锁是并发编程中最容易遇到的活跃性问题,本章就死锁发生的原因、诊断、避免死锁的方案进行了细致的解读。10.1 死锁在线程A持有锁L并想获得锁M的同时,线程B持有锁M并尝试获得锁L,那么这两个线程将永远的等待下去。这种情况是最简单的死锁形式,称为 抱死 Deadly Embrace。数据库系统的设计中考虑了检测死锁以及从死锁中恢复。当检测到一组事务发生了死锁时,将选择一个牺牲者并...

2018-04-23 23:31:48 399

原创 深入了解Java并发——《Java Concurrency in Practice》8.线程池的使用

8.1 在任务与执行策略之间的隐性耦合虽然Executor框架为指定和修改执行策略都提供了相当大的灵活性,但并非所有的任务都能适用所有的执行策略。有些类型的任务需要明确的指定执行策略:依赖性任务如果提交给线程池的任务需要依赖其他任务,那么就隐含的给执行策略带来了约束。此时必须小心的维持这些执行策略以避免产生活跃性问题。使用线程封闭机制的任务单线程的Executor能够对...

2018-03-25 14:07:56 274

原创 深入了解Java并发——《Java Concurrency in Practice》7.取消与关闭

Java没有提供任何机制来安全的终止线程。(Thread.stop 和 suspend 等方法存在着一些严重缺陷,应该避免使用)。但它提供了中断 Interruption,中断是一种协作机制,能够使一个进程终止另一个进程的当前工作。一个行为良好的软件与勉强运行的软件之间的最主要区别就是,行为良好的软件能很完善的处理失败、关闭和取消等过程。7.1 任务取消如果外部代码能在某个操作正常...

2018-03-25 13:47:33 317

原创 深入了解Java并发——《Java Concurrency in Practice》学习笔记 6.任务执行

大多数并发应用程序都是围绕 任务执行 Task Execution 来构造的:任务通常是一些抽象的且离散的工作单元。通过把应用程序的工作分解到多个任务中,可以简化程序的组织结构,提供一种自然的事务边界来优化错误恢复过程,以及提供一种自然的并行工作结构来提升并发性。6.1 在线程中执行任务当围绕 任务执行 来设计应用程序结构时,第一步就是要找出清晰的任务边界。在理想情况下,各个任务之间是...

2017-11-27 18:15:10 387

原创 Java并发编程学习——《Java Concurrency in Practice》学习笔记 并发技巧清单

并发技巧清单可变状态是至关重要的 所有的并发问题都可以归结为如何协调对并发状态的访问。可变状态越少,就越容易确保线程安全性。尽量将域声明为final类型,除非需要它们是可变的不可变对象一定是线程安全的 不可变对象能极大的降低并发编程的复杂性。它们更为简单而且安全,可以任意共享而无需使用加锁或保护性复制等机制。封装有助于管理复杂性 将数据封装在对象中,更易于维持不变性条件:将同步机制封...

2017-11-27 18:14:34 240

原创 深入了解Java并发——《Java Concurrency in Practice》学习笔记 5.基础构建模块

5.1 同步容器类同步容器类包括Vector、Hashtable,以及JDK1.2中添加的一些功能相似的类,这些同步的封装器类是由Collections.synchronizedXxx等工厂方法创建的。这些类实现线程安全的方式是:将它们的状态封装起来,并对每个共有方法都进行同步,使得每次只有一个线程能访问容器的状态。(但这些类基本都被淘汰了)5.1.1 同步容器类的问题同步容器类都...

2017-11-27 18:13:45 292

原创 Java并发编程学习——《Java Concurrency in Practice》学习笔记 4.对象的组合

4.1 设计线程安全的类通过使用封装技术,可以使得在不对整个程序进行分析的情况下就可以判断一个类是否是线程安全的。再设计线程安全类的过程中,要包含的三个基本要素: - 找出构成对象状态的所有变量 - 找出约束状态变量的不变性条件 - 建立对象状态的并发访问管理策略分析对象的状态时,首先从对象的域开始。如果对象中所有的域都是基本类型的变量,那么这些域将构成对象的全部状态。如果在对象...

2017-11-27 18:13:04 250

原创 Java并发编程学习——《Java Concurrency in Practice》学习笔记 3.对象的共享

3.1 可见性在没有同步的情况下,编译器、处理器以及运行时都可能对操作的执行顺序进行一些意想不到的调整。因为它们会对代码的执行顺序进行“重排序”。在缺乏足够同步的多线程程序中,要想对内存操作的执行顺序进行判断,几乎无法得出正确的结论。 重排序 重排序指的是编译器和处理器为了优化程序性能而对指令序列进行重新排序的手段 重排序主要分为两类:编译器优化的重排序、指令级别并行的重排...

2017-11-27 18:12:20 369

原创 Java并发编程学习——《Java Concurrency in Practice》学习笔记 2.线程安全性

概述如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误。有三种方式可以修复这个问题: - 不在线程之间共享该状态变量 - 将状态变量修改为不可变的变量 - 在访问状态变量时使用同步Java语言没有强制要求将状态都封装在类中,然而,程序状态的封装性越好,就越容易实现程序的线程安全性。在某些情况中,良好的面向对象设计技术与实际情况的需求并不一致。在这些情...

2017-11-27 18:11:21 251

原创 Java并发编程学习——《Java Concurrency in Practice》学习笔记 1.简介

1.1 并发简史线程也被称为轻量级进程。在大多数现代操作系统中,都是以线程为基本的调度单位,而不是进程。1.2 线程的优势发挥多处理器的强大能力简化建模的复杂度简化异步事件的处理使用户界面响应的更加灵敏1.3 线程带来的问题安全性问题活跃性问题 —— 某件正确的事情最终会发生性能问题1.4 线程无处不在框架通过在框架线程中调用应用程序代码将...

2017-11-27 18:10:21 220

原创 Greenplum入门——基础知识、安装、常用函数

本文为博主在学习Greenplum时阅读的《Greenplum企业应用实战》时的笔记,对书中章节的知识要点进行了归纳和梳理。有兴趣的同学可以找原书学习下。如果认为文中内容涉嫌侵权请及时联系博主删除文章。软件安装及数据库初始化Greenplum架构Master主机与Segment主机的职责Master建立与客户端的会话连接和管理SQL的解析并形成分布式的执行计划将生成好的执行计划分发到每个Seg

2017-10-08 22:03:09 16281 1

原创 Greenplum入门——概览

本文内容为博主阅读《Greenplum企业应用实战》的读书笔记,对书中主要知识点进行了归纳和梳理。有兴趣的同学可以买一本原书读一读。如果认为文中内容涉嫌侵权,请及时联系博主删除文章。OLTP 与 OLAP数据库系统分为两种。 - OLTP 面向前台应用,重吞吐和高并发 - OLAP 对大数据集进行统计分析,重计算Greenplum属于OLAPOLTPOLTP 联机事务处理 On-Line Tra

2017-10-08 22:00:39 2422

原创 Oracle创建表空间

创建表空间表空间的概念 ORACLE数据库被划分成称作为表空间[1] 的逻辑区域——形成ORACLE数据库的逻辑结构。一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。 ——百度百科创建表空间CREATE TABLESPACE {TABLESP

2017-10-08 21:56:04 1002

原创 Redis核心知识——命令列表

本文内容来自于个人在Runoob 学习Redis教程时记录的笔记,筛选了知识要点和基础重点。所有内容均来自Runoob,文档为手工整理。如果认为涉嫌侵权请联系博主删除。Redis命令用于在redis服务上执行操作,需要一个redis客户端redis-cli更多命令: https://redis.io/commandsRedis Key 命令键命令用于管理redis的键 命令 描述 del

2017-10-08 21:44:14 514

原创 Redis核心知识——高级篇

本文内容来自于个人在Runoob 学习Redis教程时记录的笔记,筛选了知识要点和基础重点。所有内容均来自Runoob,文档为手工整理。如果认为涉嫌侵权请联系博主删除。Redis 数据备份与恢复备份Redis save 命令用于创建当前数据的备份该命令将在redis安装目录中创建dump.rdb文件恢复将备份文件 dump.rdb移动到redis安装目录并启动服务即可。可以使用config命令获取r

2017-10-08 21:41:47 1514

原创 Redis核心知识——基础篇

本文内容来自于个人在Runoob 学习Redis教程时记录的笔记,筛选了知识要点和基础重点。所有内容均来自Runoob,文档为手工整理。如果认为涉嫌侵权请联系博主删除。概述REmote DIctionary Server 是一个key-value存储系统特性: - 使用ANSI C编写 - 遵守BSD协议 - 支持网络 - 可基于内存亦可持久化 - 日志型、Key-Value数据库通常被称

2017-10-08 21:38:02 6426

原创 《重构-改善既有代码的设计》知识精选——代码坏味道

章节三 代码的坏味道*这一部分的内容最好在CHM文件中去阅读Duplicated Code (重复代码)同一个class内的两个函数含有相同表达式(expression)采用Extract Method提炼出重复的代码,然后让这两个地点都调用被提炼出来的那一段代码。两个互为兄弟〔sibling)的subclasses内含相同表达式对两个classes都使用Extract Method,然后再对被提炼

2017-09-03 11:55:22 495

原创 《重构-改善既有代码的设计》知识精选——重构方法合集

重新组织函数Extract Method(提炼函数)有一段代码可以被组织在一起并独立出来。将一段代码放进一个独立函数中,并让函数名称解释该函数的用途。 创造一个新函数,根据这个函数的意图来给它命名(以它「做什么」来命名, 而不是以它「怎样做」命名)。Inline Method(将函数内联化)一个函数,其本体(method body)应该与其名称(method name)同样清楚易懂。在函数调用点插入

2017-09-03 11:53:03 370

原创 《重构-改善既有代码的设计》知识精选——认识重构

章节一 重构,第一个案例重构的第一步测试过程中很重要的一部分,就是测试程序对于结果的回报方式。它们要不说 “OK”,表示所有新字符串都和参考字符串一样,要不就印出一份失败清单,显示问题字符串的出现行号。这些测试都属于自我检验(self-checking)。是的,你必须让测试有能力自我检验,否则就得耗费大把时间来回比对,这会降低你的开发速度。 TIP:重构之前,首先检查自己是否有一套可靠的测试机制

2017-09-03 11:51:19 345

原创 开发日志 2017年8月31日

今日任务解决Java客户端连接Hbase的问题日志2017年8月31日10:27:09使用Ambari下载的hbase-site.xml作为配置文件运行测试类 @Test public void test2() { try { Configuration conf = HBaseConfiguration.create();

2017-08-31 23:12:31 2017

转载 HBase的实现基础 Google Bigtable论文中文翻译

转载自:http://blog.sina.com.cn/s/blog_6a0e086b0100mpig.htmlBigtable:A Distributed System Storage System for Structured DataBigtable:一个分布式的结构化数据存储系统译者:alex摘要Bigtable是一个分布式的结构化数据存储系统,它被

2017-08-27 16:06:05 1403

原创 Clean Code 代码整洁之道 - 编码坏味道

注释不恰当的注释废弃的注释冗余的注释糟糕的注释注释掉的代码环境需要多步才能实现的构建需要多步才能做到的测试函数过多的参数输出参数标识参数死函数一般性问题一个源文件中存在多种语言明显的行为未被实现(违反 最小惊异原则 The Principle of Least Surprise)不正确的边界行为忽视安全重复在错误的抽象层级上的代码基类依赖于派生类信息过多

2017-08-22 22:05:43 797

空空如也

空空如也

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

TA关注的人

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