自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Lupu's journey - 生活、分享

一只菜鸟的奇幻之旅

原创 MapStruct 入门使用

1. 概述 MapStruct 可以将某几种类型的对象映射为另外一种类型,如将多个Domain 对象转换为 DTO,涉及到类似之间对象转换的都可以用它来完成。其主要作用就是:Java bean mappings 详细信息可以参考最新版本的文档:MapStruct 1.3.0.Final Refer...

2020-01-04 15:25:42

阅读数 21

评论数 0

原创 Swagger Codegen使用

一、Swagger Codegen简介 Swagger Codegen是一个开源的代码生成器,根据Swagger定义的RESTful API可以自动建立服务端和客户端的连接。官方简介看这里:Swagger Codegen 二、Swagger简单使用 新建一个SpringBoot项目 引入依赖 ...

2019-12-29 12:40:11

阅读数 43

评论数 0

原创 MongoDB - Spring Data MongoTemplate使用

Spring Data MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate类,方便我们通过java代码对MongoDB进行CRUD的操作。 一、增加:save、insert <T> T save(T var1);...

2019-09-25 23:19:24

阅读数 12

评论数 0

原创 MongoDB - 入门使用

官方文档 1. 查询 - find 操作 1.1. find db.getCollection("core-user").find({'account':'admin'},{'account':1,'pass...

2019-09-25 22:48:00

阅读数 11

评论数 0

原创 Java并发工具类 - ThreadLocal

1. ThreadLocal概念 ThreadLocal用于线程间的数据隔离。应用场合,最适合的是按线程多实例(每个线程对应一个实例)的对象的访问,并且这个对象很多地方都要用到。 ThreadLocal是一个本地线程副本变量工具类。当使用ThreadLocal维护变量时,ThreadLocal为每...

2019-08-04 14:04:58

阅读数 23

评论数 0

原创 Java并发基础 - CAS之AtomicStampedReference、AtomicMarkableReference

在前一篇文章Java并发基础 - CAS里提到了CAS的缺点中有一条是存在ABA问题,JUC中有类解决了此问题。如AtomicStampedReference、AtomicMarkableReference。此处重点看一下AtomicStampedReference的实现方式。 1. ABA问题测...

2019-08-01 11:24:09

阅读数 29

评论数 0

原创 IDEA中Thread.activeCount()的问题记录

之前在测试多线程程序时,使用了Thread.activeCount() > 1来判断当前线程组中的活跃线程,但是发现永远都是>1的,导致程序进入了死循环。于是猜测应该不止一个main线程。编写如下程序进行验证: public class ActiveCountTest { pu...

2019-07-31 19:12:11

阅读数 49

评论数 0

原创 Java并发基础 - CAS(Compare and swap)

1. Java中的原子操作 在java中,下列操作是原子操作: all assignments of primitive types except for long and double,除long和double的原始类型赋值 all assignments of references,应用类型...

2019-07-31 19:01:47

阅读数 46

评论数 0

原创 Java并发基础 - AbstractQueuedSynchronizer

AbstractQueuedSynchronizer 1. 什么是AQS? 抽象的队列式的同步器,AQS定义了一套多线程访问 共享资源的同步器框架,许多同步类实现都依赖于它,如常用的 ReentrantLock/Semaphore/CountDownLatch。 2. 此类的重要信息 stati...

2019-07-30 19:35:09

阅读数 22

评论数 0

原创 Java并发工具类 - CountDownLatch、CyclicBarrier、Semaphore

1. CountDownLatch 实现类似计数器的功能,将一个任务分为多个任务进行执行。 public class MyCountDownLatch { //要处理的任务 -倒计时门栓,任务是独立的 class MyTask implements Callable<Str...

2019-07-30 18:51:41

阅读数 34

评论数 0

原创 JDK和CGLIB动态代理

JDK动态代理 定义接口: public interface HelloWorld { void sayHelloWorld(); } 实现代理类,继承自InvocationHandler: public class JdkProxyDemo implements InvocationH...

2019-07-22 22:34:12

阅读数 23

评论数 0

原创 Dell XPS15 9570 拆机&升级内存

1. 购买理由: 电子垃圾,小米笔记本Pro15.6,毁我青春、颓我精神、败我钱财… 2. 新机如下: 2.1 外形: 金属外壳,颜值尚可,Dell的logo是银色的,并非图中拍下的黑色。 2.2 重量 实测,裸机重2259g,加上充电器重2794g。重量不算很轻,但也不重。 2.3 乞丐版配...

2019-07-20 21:05:38

阅读数 6454

评论数 3

原创 JVM - 常量池理解

1. 字符串常量池 Heap中,在编译阶段就把所有的字符串文字放进去 是一个StringTable类,它是一个哈希表,里面存的是字面值(也就是我们常说的用双引号括起来的)的引用(而不是字面值实例本身) 字符串常量池的位置 在JDK6.0及之前版本,字符串常量池是放在Perm Gen区(也就是...

2019-07-19 21:35:33

阅读数 31

评论数 0

原创 JVM - 垃圾回收

1. 对象已死吗? 引用计数算法:给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时就减1。无法解决对象之间循环引用的问题。 可达性分析算法:通过一系列的“GC Roots”的对象作为起始点,从这些起始点向下搜索,走过的路径称为引用链,当一个对象到GC Root...

2019-07-18 22:51:40

阅读数 21

评论数 0

原创 Java Collection - HashMap

一、 Map<String, String> map = new HashMap<>(16) 调用构造函数时,并没有初始化,设置参数:load_factor、容量等 //有初始容量的构造函数 public HashMap(int initialCapacity) { ...

2019-07-18 20:45:45

阅读数 13

评论数 0

原创 Mybatis与Spring集成:SqlSessionTemplate

Mybatis与Spring集成:SqlSessionTemplate SqlSessionTemplate构造方法 public SqlSessionTemplate(SqlSessionFactory sqlSessionFactory, ExecutorType executorType...

2019-07-17 19:41:04

阅读数 67

评论数 0

原创 Oracle开启远程访问

Oracle开启远程访问 最近安装了Oracle11g以后,在另一台电脑上却无法连接上,一度造成了困扰,最后发现是设置错误导致的。在此记录一下。 安装Oracle11g 此处是直接安装的,没有做远程访问的配置,所以无法从另外的电脑连接。如果做了配置,可能是可以直接连接的,则不需要再做此配置。 ...

2019-07-15 19:20:50

阅读数 1028

评论数 1

原创 Java并发基础 - ReentrantLock

主要内容: ReentrantLock Demo示例 公平锁和非公平锁的详细实现 公平和非公平的定义 ReentrantLock使用场景 和synchronized的简单比较 一、 ReentrantLock 1. 先看Demo示例,再细细道来原理: @Slf4j public class L...

2019-07-10 21:44:51

阅读数 22

评论数 0

原创 Java Collection - ArrayList & LinkedList

ArrayList 基础属性: transient Object[] elementData; 存储数据的数组 private static final int DEFAULT_CAPACITY = 10; 默认长度 private static final Object[] DEFA...

2019-07-09 21:42:21

阅读数 10

评论数 0

原创 Spring Boot - Bean的作用域

基础概念 Spring提供了两种容器类型:BeanFactory和ApplicationContext。 BeanFactory。基础类型IoC容器,提供完整的IoC服务支持。()Spring框架提倡使用POJO,那么把每个业务对象看作一个JavaBean对象,或许更容易理解为什么Spring的...

2019-07-08 22:05:30

阅读数 41

评论数 0

原创 Docker学习笔记2:Docker Compose使用

Docker Compose是Docker官方的开源编排工具,它可以让用户通过编写一个简单的模板文件,快速的创建和管理基于Docker容器的应用集群。 一、安装 查看官网,有多种方式可以安装,此处使用比较简单的一种,直接使用命令行安装,并赋给执行权限: curl -L https://github...

2019-07-06 10:31:54

阅读数 38

评论数 0

原创 Dubbo入门使用

1. Dubbo简介 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案。 Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。Dubbo框架...

2019-07-04 21:16:19

阅读数 25

评论数 0

原创 Kafka初识

1. Kafka概念 kafka是一个分布式消息队列。具有高性能、持久化、多副本备份、横向扩展能力。 生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。 一般在架构设计中起到解耦、削峰、异步处理的作用。最大的特性就是可以实时的处理大量数据以满足各种需求场景 1.1 重要术语 Broke...

2019-07-03 21:20:59

阅读数 51

评论数 0

原创 SpringCloud初识

1. 服务注册中心 - eureka 失效剔除 对于已经异常下线的服务Eureka采用了定时清除:Eureka Server在启动的时候会创建一个定时任务,每隔60秒就去将当前服务提供者列表中超过90秒还没续约的服务剔除出去 自我保护 Eureka Server在运行期间会去统计心跳失败比例在15...

2019-07-03 00:09:42

阅读数 13

评论数 0

原创 Java常用集合类

1. Arrays 2. HashMap 3. ArrayList 文章主要内容是从本人的OneNote笔记中复制过来的,部分图片来源于网络,侵删。

2019-06-30 23:49:23

阅读数 20

评论数 0

原创 JVM - 内存区域与内存溢出异常

程序计数器:一块较小的内存空间,当前线程所执行的字节码的行号指示器。Java栈也称作虚拟机栈、栈内存,为JVM执行Java方法(也就是字节码)服务。 Ø 本地方法栈(native)。Java堆(Heap)。 方法区(Non-Heap)

2019-05-06 11:01:43

阅读数 41

评论数 0

原创 Spring Boot运行原理0 - 自定义starter

关于Spring Boot的运行原理,还是要回归到@SpringBootApplication注解上来,此注解是一个组合注解。其核心@EnableAutoConfiguration借助@Import的帮助,将所有符合自动配置条件的bean定义加载到IoC容器...

2019-04-29 22:56:31

阅读数 23

评论数 0

原创 Java异常体系

检查异常-checked异常; 非检查异常-unchecked异常 (运行时异常)。 一般来说,我们在方法体内出现异常,我们用throw 关键字将异常对象或异常对象的引用抛出,如果当前方法无法处理异常,那么必须在方法的参数列表后方法体前必须用throws 声明异常所属类,交给调用者去处理。 R...

2019-04-28 23:40:23

阅读数 25

评论数 0

原创 线程安全与锁优化入门

Come from OneNote…

2019-04-28 23:31:22

阅读数 40

评论数 0

原创 Java内存模型-synchronized、volatile

内存模型:在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。 1. 主内存和工作内存: Java内存模型规定了所有的变量都存储在主内存中(此处的主内存仅是虚拟机内存的一部分,共享)每条线程还有自己的工作内存(可类比处理器的高速缓存)。。。。

2019-04-28 23:24:52

阅读数 22

评论数 0

原创 IDEA源码编译Jmeter 5.1.1

1. 下载jmeter源码 可以从Apache官网下载zip包后解压得到源码。源码的结构如图所示: 2.修改文件名称 打开命令行,切换到放置源码的地方,将下图中的两个文件名称修改一下,使其可以当做Eclipse工程导入IDEA。 3. 导入项目 ...... 4. 安装依赖 由于jmeter使用...

2019-04-12 00:11:58

阅读数 536

评论数 1

原创 IDEA实用插件推荐

在Java开发神器IDEA里面,插件是基础组件,自带的插件可以完成很多功能。在这里记录一下几个实用插件 ......

2019-04-10 21:36:30

阅读数 2815

评论数 0

原创 Ubuntu16.04安装中文输入法

一直以来在Ubuntu下都是使用英文环境的,基本也很少输入中文,今天尝试着安装了一下中文输入法,踩了好几个莫名其妙的坑… 首先要明白,Ubuntu中的输入法是安装在输入法框架之上的,常见的有ibus、fcitx等等。在安装相应的输入法之前,进入设置-语言支持-键盘输入法系统中,将此项改为我们想要的...

2017-08-27 11:22:19

阅读数 518

评论数 0

原创 Robot Framework使用2-脚本格式

在使用Robot Framework进行测试时,一般会借助使用RIDE来在图形界面里编辑脚本。不使用RIDE也是可以的,这篇文档的目的就是介绍一下在RIDE中编辑出的脚本的样式,使得我们可以不借助RIDE来写脚本。一、项目在RIDE中的界面上图中,有一个项目,在这个项目下有两个test suite...

2017-08-13 18:28:20

阅读数 2118

评论数 0

原创 Robot Framework使用1-入门

一、RobotFramework简介Robot Framework 是一款基于 Python 的功能自动化测试框架。它具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD Acceptance Te...

2017-08-13 15:36:19

阅读数 351

评论数 0

原创 Docker学习笔记1:入门使用

Docker简介 Docker (访问官网) 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。(以上信息来源于百度百科)好吧,读完之后,对于初学者来说,没...

2017-08-09 22:27:59

阅读数 321

评论数 0

原创 Appium自动化测试-同时运行多个设备

在之前的文章中,学习了Appium的基本使用,可以参考Appium自动化测试-入门,我们接着学习一下在一台电脑中同时运行多设备的方法,这样在测试多种设备的时候,可以直接在本地完成。一、启动Appium一个appium服务器只能连接一个测试设备进行测试,如果要在一台电脑上同时测试多个设备,解决方法是...

2017-07-29 16:28:46

阅读数 8296

评论数 0

原创 Java内存区域初识

Java虚拟机在执行Java程序的过程中会把它管理的内存划分为几个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。

2017-07-06 12:43:14

阅读数 130

评论数 0

原创 TestNG单元测试框架使用

一、TestNG简介和安装TestNG(Test Next Generation)是一个测试框架,和Unit类似,但引入了一些新的功能,使其功能更强大,使用更方便。TestNG作为Java项目的单元测试框架,在参数化测试、依赖测试和套件测试(分组概念)方面更加突出。 TestNG用于高级测试和复杂...

2017-07-04 17:30:59

阅读数 1801

评论数 0

原创 Python从零开始写爬虫(二)BeautifulSoup库使用

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库, BeautifulSoup在解析的时候是依赖于解析器的,它除了支持Python标准库中的HTML解析器,还支持一些第三方的解析器比如lxml等。可以从其官网得到更详细的信息:http://beautiful...

2017-07-01 10:16:54

阅读数 506

评论数 0

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