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

原创 使用Springboot+Feign Clients快速搭建REST客户端应用

本文翻译:吴嘉俊,叩丁狼高级讲师。   在本文中,我们会快速的使用Springboot,配合Feign搭建一个简单的REST客户端应用。通过本示例,让大家对这两个框架的配合有一个基本的了解。Spring Boot 是一个Java的快速开发框架,用于简化web和企业级应用开发。Spring boot内置tomcat服务器,提供了大量的starter配置,实现多种组件的自动装配。Feign...

2018-10-31 18:28:45 770

原创 Eureka-server源码分析

作者:陈刚,叩丁狼高级讲师。本文为原创文章,转载请注明出处。    我们在分析eureka-client的时候发现他是通过Http Rest 的方式做请求的,那么eureka-server一定是基于Rest风格 类似SpringMvc一样的模式接受处理请求。在 EurekaServerAutoConfiguration 自动配置类中有一个 jerseyFilterRegistration方法,...

2018-10-31 18:27:36 700

原创 Eureka Client源码分析

作者:陈刚,叩丁狼高级讲师。本文为原创文章,转载请注明出处。    对于一个优秀的程序员而言,一个技术不仅要会用,还要知道他的实现原理和思想,即不仅要知其然还要知其所以然,这样我们写代码才会特别自信,出现bug才能很快定位到问题所在。接下来我们就来简单探讨一下SpringCloud的实现原理,即:源码分析一.服务注册服务注册与发现是SpringCloud最基础的部分,我们就从这部分开始...

2018-10-31 18:26:11 1279

原创 Tomcat8.5性能优化

作者:梁开权,叩丁狼高级讲师。本文为原创文章,转载请注明出处。    tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈。tomcat内存优化windows修改TOMCAT_HOME/bin/catalina.bat,在前面加入set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize...

2018-10-30 11:24:22 5553

原创 在Jetty中快速搭建SSL

本文翻译:吴嘉俊,叩丁狼高级讲师。  你是否遇到过需要快速搭建SSL环境的需求,但是感觉比较迷糊?我敢肯定,你不是一个人,我也遇到过这个麻烦,下面我简单分享一下我的解决方案。下面我会分享如何在Jetty中开启SSL。注意:下面的指令只是作为在开发环境中搭建SSL,如果是在生产环境,需要注意更多的安全因素,这个话题就不在本文中阐述了。 首先安装好Jetty服务; 为了方便...

2018-10-30 11:22:48 589

原创 Scala中的面向对象

作者:林伟兵,叩丁狼高级讲师。本文为原创文章,转载请注明出处。   5. 面向对象5.1 类的定义[属性和方法]可以用class来声明一个类,并用new关键字来创建一个对象。对于类中的全局变量,必须在声明的时候指定其默认值,否则就会报错。同时可以在类中定义一系列的方法,方法的定义用def 方法名(参数) :返回值 = {方法体}class Person { va...

2018-10-29 11:59:25 275 1

原创 Scala中的方法&函数的定义

作者:林伟兵,叩丁狼高级讲师。本文为原创文章,转载请注明出处。  4. 方法&函数的定义在scala中,函数是一等公民,但是一般在开发中,函数和方法是可以相互代替的。4.1 方法的定义 一个完整方法的定义如下 scala> def add(a:Int, b:Int):Int = { | return a+b | }add: (a: I...

2018-10-29 11:58:19 4086

原创 Scala快速安装及基本语法

作者:林伟兵,叩丁狼高级讲师。本文为原创文章,转载请注明出处。  1. Scala概述什么是ScalaScala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并**兼容Java程序**。为什么要学Scala 优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优...

2018-10-29 11:57:14 229

原创 Java应用中的数据校验

翻译:吴嘉俊 ,叩丁狼高级讲师。 [译者注:这篇文章是开源项目CUBA Platform的作者,在这篇文章中,作者阐述了CUBA平台中关于数据校验的设计思想和使用方式,可以作为大家在设计数据校验方面一个比较好的参考。]我接触到的很多项目中,对数据校验这方面内容都没有一个很明确的策略。这些团队常常面对即将临近的交付期压力,不明确的项目续期,所以根本没有太多时间来规划和实现项目中的校验策略...

2018-10-23 18:11:28 5613

原创 Python异常处理

作者:黎智煊,叩丁狼高级讲师。本文为原创文章,转载请注明出处。     使用except而不带任何异常类型你可以不带任何异常类型使用except,如下实例: try: 正常的操作 ......................except: 发生异常,执行这块代码 ......................else: 如果没有异常执行这块代码 以上方式t...

2018-10-23 18:08:58 183

原创 Python异常处理入门

作者:黎智煊,叩丁狼高级讲师。本文为原创文章,转载请注明出处。     什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。 一般情况下,在Python无法正常处理程序时就会发生一个异常。 异常是Python对象,表示一个错误。 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。 异常处理 捕捉异常...

2018-10-23 18:07:23 299

原创 Java 10 : 局部变量类型推断

翻译:吴嘉俊 ,叩丁狼高级讲师。在所有Java10中出现的JEP规范中,最有趣,并获得了最多讨论的,非JEP286-局部变量类型推断(Local-Variable Type Inference)。什么是局部变量类型推断在Java7中的菱形操作符允许我们这样写代码:List<String> data=new ArrayList<>();在Java8中,...

2018-10-22 10:52:28 501 1

原创 Python实现工厂模式

 作者:黎智煊,叩丁狼高级讲师。本文为原创文章,转载请注明出处。    首先,什么是工厂模式?工厂模式是一个在软件开发中用来创建对象的设计模式。工厂模式包涵一个超类。这个超类提供一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建。为了实现此方法,需要创建一个工厂类创建并返回。当程序运行输入一个“类型”的时候,需要创建于此相应的对象。这就用到了工厂模式。在...

2018-10-22 10:51:09 1914 1

原创 Python中的类属性和对象属性

作者:黎智煊 ,叩丁狼高级讲师。本文为原创文章,转载请注明出处。   在了解了类基本的东西之后,下面看一下python中这几个概念的区别先来谈一下类属性和实例属性在前面的例子中我们接触到的就是实例属性(对象属性),顾名思义,类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似。对于公有的类属性,在类外可以通过类...

2018-10-22 10:49:40 677

原创 Python中的类方法和静态方法

作者:黎智煊 ,叩丁狼高级讲师。本文为原创文章,转载请注明出处。   类方法是类对象所拥有的方法,需要用修饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是大部分人都习惯以'cls'作为第一个参数的名字,就最好用'cls'了),能够通过实例对象和类对象去访问。class Pe...

2018-10-22 10:47:46 1905

原创 JUnit5中@ParameterizedTest 处理 @CvsSource中的空值

翻译:叩丁狼教育吴嘉俊 在JUnit4中测试方法参数是非常麻烦的事情(注:针对同一个方法,测试多组不同的参数值)。JUnit5中引入了大量的新的特性,让使用同一个测试方法,测试不同的参数变得非常容易。但是,这里面有一个问题值得讨论,就是测试空值的问题。在这篇文章中,我们会讨论在JUnit5中,如何通过@CvsSource和@ValueSource为@ParameterizedTest测试传...

2018-10-19 10:47:20 2482 1

原创 Buggy Java Code:Java程序员最容易犯的10个错(2)

本文翻译:吴嘉俊,叩丁狼高级讲师。 Java语言最开始是为了交互电视机而开发的,随着时间的推移,他已经广泛应用各种软件开发领域。基于面向对象的设计,屏蔽了诸如C,C++等语言的一些复杂性,提供了垃圾回收机制,平台无关的虚拟机技术,Java创造了一种前所未有的开发方式。另一方面,得益于Java提出的“一次编码,到处运行”的口号,让Java更加出名。但是Java中的异常也是处处发生,下面我就列出了...

2018-10-18 13:20:11 278

原创 Azkaban的安装

作者:林伟兵 ,叩丁狼高级讲师。本文为原创文章,转载请注明出处。   4. Azkaban-solo-server安装在上一节的讲解中,我们已经完成Azkaban各个模块的编译。如下:$AZKABAN_SOURCE_HOME/azkaban-solo-server/build/distributions/*.tar.gz(zip)$AZKABAN_SOURCE_HOME/azk...

2018-10-18 13:19:08 171

原创 调度框架Azkaban快速入门

作者:林伟兵 ,叩丁狼高级讲师。本文为原创文章,转载请注明出处。   1. Azkaban概述Azkaban技术产生前景:​ 在大数据分析场景中,以ETL( Extract抽取 -Transform交互转换 -Load加载 )为例 ,数据的操作包含了如下流程:RDBMS ==>Sqoop ==>Hadoop ==>Sqoop ==>RDBMS/NoSQL/....

2018-10-17 16:06:25 526

原创 Buggy Java Code:Java程序员最容易犯的10个错(第一部分)

翻译:叩丁狼教育吴嘉俊Java语言最开始是为了交互电视机而开发的,随着时间的推移,他已经广泛应用各种软件开发领域。基于面向对象的设计,屏蔽了诸如C,C++等语言的一些复杂性,提供了垃圾回收机制,平台无关的虚拟机技术,Java创造了一种前所未有的开发方式。另一方面,得益于Java提出的“一次编码,到处运行”的口号,让Java更加出名。但是Java中的异常也是处处发生,下面我就列出了我认为的Jav...

2018-10-17 16:03:42 383

原创 Java8的JVM对于逃逸对象的再捕获

翻译:吴嘉俊,叩丁狼高级讲师。 背景在上一篇文章中,我们介绍了逃逸分析,并且介绍了通过EA,JVM可以直接在栈上为未逃逸对象分配空间,而不需要在堆上分配空间。在文章发布之后,Caleb Cushing问了一个很有趣的问题:如果一个逃逸对象被限定在调用者的范围之内,那么这个逃逸对象是否可以被EA优化?我在这篇文章中给出了问题的答案。一个例子我们先创建一个如下的简单类:Pe...

2018-10-16 11:29:00 528

原创 使用Gradle自定义任务task

黄少存,叩丁狼高级讲师,本文为原创文章,转载请注明出处。  任务是 Gradle 构建中的两个基本概念之一,而任务的定义和使用有多种形式,以下就给大家介绍几个task 的定义和使用。定义任务基本语法// 使用task 后带任务名称 加上执行闭包{}task t1 { println 't1'}// 任务名称后加上圆括号task t2() { println 't2'...

2018-10-16 11:27:50 4210

原创 Gradle构建脚本入门

黄少存,叩丁狼高级讲师,本文为原创文章,转载请注明出处。  上一篇咱们已经知道了Gradle构建脚本的重要性,要使用比较复杂的项目构建就需要来书写构建脚本,那Gradle 的构建脚本有哪些呢,请看构建脚本介绍.构建脚本介绍Gradle 构建脚本中最重要的两个概念是 project 和 task,任何一个 Gradle 构建都由一个或者多个project 组成,每个 project 包括...

2018-10-16 11:26:38 281 1

原创 使用Gradle快速构建项目

黄少存,叩丁狼高级讲师,本文为原创文章,转载请注明出处。 到这里,相信大家都已经知道 Gradle 就是一个构建工具,其主要的目的就是帮咱们构建项目,以下我就通过一个普通的 Java 项目和普通的 web 项目的构建带你走入 Gradle 项目构建.1 Gradle 搭建Java项目使用构建工具搭建 Java 项目的主要目的就是其自动的打包和依赖功能.以下就来看下如何使用 Gradle...

2018-10-16 11:25:09 392

原创 别让Java对象逃逸(Object Escape)

翻译:吴嘉俊,叩丁狼高级讲师  关于逃逸分析我在开源项目Speedment的开发过程中,我和项目的贡献者都意识到我们的代码不仅要良好并易懂,同时还要有较高的性能,否则他们很容易转向使用其他的解决方案。逃逸分析(Escape Analysis)允许我们在写出性能较好的代码的同时,能通过恰当的抽象,保证良好的代码风格。逃逸分析(简写为“EA”)允许java编译器在多种情况下优化我们...

2018-10-15 14:21:43 3210 1

原创 在JDK11中运行单文件代码

翻译:叩丁狼教育吴嘉俊 JEP330-启动单文件代码程序(Launch Single-File Source-Code Programs)是即将更新的JDK11(18.9)版本中一个很不错的功能。这个功能允许你直接使用java解析器运行java代码。java文件会在内存中执行编译并且直接执行。唯一的约束在于所有相关的类必须定义在东一个java文件中。这个特征非常适合刚刚准备学习java的童...

2018-10-15 14:16:34 1111

原创 使用LocalDate, LocalTime 和 LocalDateTime

翻译:吴嘉俊,叩丁狼高级讲师Java8提供了一系列的关于日期和时间API的更新,在JDK中引入了基于JSR310:Date and Time API规范的Joda Time API。新的API提供了大量关于日期和时间的优秀的功能。在本文中,我会介绍最常用的三个类:java.time.LocalDate,java.time.LocalTime和java.time.LocalDateTime。...

2018-10-15 09:50:34 857

原创 在SpringBoot2中开发特征切换功能

翻译:吴嘉俊,叩丁狼高级讲师。 众所周知,软件开发是一个协同的活动。开发中的整合工作往往都被视为邪恶的,开发人员会像魔鬼一样对待这个过程。为了应付这种情况,有非常多的方法和规则被开发出来。特征切换就是其中之一。在本文中,你将会看到什么是特征切换,了解特征标记,以及如何在你的Springboot应用中使用。什么是特征切换简单来说,特征切换是控制程序按照某种流程执行的一个变量开关。不用修改...

2018-10-15 09:31:38 427

原创 使用Permutations引爆你的JUnit5测试

翻译:吴嘉俊,叩丁狼高级讲师。写JUnit测试是一个非常枯燥无聊的事情。本文介绍使用permutations配合TestFactory方法和DynamicTest对象,让你的测试事半功倍。在本文中,我将使用Speedment【注:Speedment是一款ORM工具,使用Lambda表达式来简化SQL的书写】,因为它已经包含了一个完善的Permutation类供我们立刻使用。Speedmen...

2018-10-15 09:29:50 259

原创 使用LocalDate, LocalTime 和 LocalDateTime

翻译:吴嘉俊,叩丁狼高级讲师。 Java8提供了一系列的关于日期和时间API的更新,在JDK中引入了基于JSR310:Date and Time API规范的Joda Time API。新的API提供了大量关于日期和时间的优秀的功能。在本文中,我会介绍最常用的三个类:java.time.LocalDate,java.time.LocalTime和java.time.LocalDateTim...

2018-10-12 15:51:35 1420

原创 Java并发环境下的队列(Queue)概述

本文作者:王一飞,叩丁狼高级讲师。原创文章,转载请注明出处。   概念队列队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。正因为队列先进先出的先天特性,在一些特殊场合下称为首选项,比如:电商的秒杀。将每一个订单...

2018-10-12 10:39:20 356

原创 ConcurrentHashMap解析

本文作者:王一飞,叩丁狼高级讲师。原创文章,转载请注明出处。  接上篇,本篇主要讲解ConcurrentHashMap类在并发环境下的使用。惯例,我们先来看下ConcurrentHashMap实现原理:jdk7以前跟以后(jdk8)实现原理不一样,所以我们分2个版本研究,先看jdk7版jdk7版本ConcurrentHashMap和HashMap设计思路差不多,但是为支持并发操作,做...

2018-10-12 10:37:56 184

原创 第一个基于Apache Ignite的应用

翻译:吴嘉俊,叩丁狼高级讲师。在本文中,我们会通过创建第一个Ignite应用,用于从分布式的缓存中存放/获取值,来进一步了解Ignite的使用。在第一个例子中,我们尽可能的用最简单的代码来展示如何在Java应用中操作Apache Ignite集群的数据。本文的应用可以从GitHub中clone(https://github.com/srecon/the-apache-ignite-book...

2018-10-11 10:41:22 2958

原创 并发中的Map容器

本文作者:王一飞,叩丁狼高级讲师。原创文章,转载请注明出处。  上几篇讨论了并发环境下list容器的操作, 本篇我们来聊下另外一个集合容器:Map家族体系Map:以key-value对的形式存在,一种数据结构,一个key, 映射一个value值, map中不能包含重复的key值, 一个key最多只能映射到一个值。常用方法有:添加: V put(K key, V value);删除...

2018-10-10 11:22:53 354

原创 并发容器-CopyOnWriteArrayList

本文作者:王一飞,叩丁狼高级讲师。原创文章,转载请注明出处。  接上篇讲的并发中的list, 今天来聊聊CopyOnWriteArrayList。概念CopyOnWriteArrayList 类是JDK1.5引入的处理并发操作的容器类,他是Arraylist类的一种线程安全的变种,在并发环境下, 保证集合的读与写安全。CopyOnWriteArrayList类是线程安全的容器,但它...

2018-10-10 11:21:35 291

原创 并发中的List集合

本文作者:王一飞,叩丁狼高级讲师。原创文章,转载请注明出处。  实际开发中, 我们使用频率最高的容器估计是list集合,那肯定会遇并发操作.那该如何保证在多线程并发的环境下安全,高效的使用list集合呢?好,这就是今天我们聊话题:并发中的List集合.家族体系List: 有序集合(也称为序列 )。用户可以精确控制列表中每个元素的插入位置。 也可以通过整数索引(列表中的位置)访问元素,并...

2018-10-10 11:19:17 12152

原创 快速掌握NIO(下)

本文作者:禹明明,叩丁狼高级讲师。原创文章,转载请注明出处。  上篇文章我们已经简单了解了什么是NIO,它和IO的区别在哪里,下边我们来使用NIO方式来编写一个简单的通信Demo来看一下NIO的使用方式,解释我都写在了注释中,方便大家对照代码理解NIO网络通信-Server端package cn.wolfcode.nio;import java.io.IOException;...

2018-10-08 10:59:48 432

原创 快速掌握NIO(上)

本文作者:禹明明,叩丁狼高级讲师。原创文章,转载请注明出处。  NIO概述NIO是JDK1.4引入的新的IO模型,是New I/O的简称,现在更多人认为应该是 Non-blocking(非阻塞) IO的简称,NIO提供了比传统IO更高的性能和更优的操作方式JDK1.4之前我们使用的IO是同步阻塞的,我们可以称之为BIO(阻塞IO)JDK1.4Java学习了Linux的select...

2018-10-08 10:57:56 209

原创 SpringMVC拦截器详解

本文作者:钟昕灵,叩丁狼高级讲师。原创文章,转载请注明出处。  前言Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成...

2018-10-08 10:54:04 3302 1

原创 Bean Validation

本文作者:梁开权,叩丁狼高级讲师。原创文章,转载请注明出处。  关于 Bean Validation在任何时候,当你要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情。应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的。在通常的情况下,应用程序是分层的,不同的层由不同的开发人员来完成。很多时候同样的数据验证逻辑会出现在不同的层,这样就会导致代码冗余和一些管理...

2018-10-08 10:52:59 389

空空如也

空空如也

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

TA关注的人

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