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

原创 Java 8 时间日期库使用示例(二)

本文翻译:梁开权在上一个章节中我们使用Java8提供的时间日期库,能更加便捷和灵活的操作时间日期,本章节我们将接着之前的内容继续跟大家分享Java8的时间日期库###如何增加时间里面的小时数很多时候我们需要增加小时,分或者秒来计算出将来的时间。Java 8不仅提供了不可变且线程安全的类,它还提供了一些更方便的方法譬如plusHours()来替换原来的add()方法。顺便说一下,这些方法...

2019-02-16 09:29:18 496

原创 Java 8 时间日期库使用示例(一)

本文翻译:梁开权###Java 8是如何处理时间及日期的有人问学习一个新库的最佳途径是什么?其实就是就是在实际项目中那样去使用它。在一个真实的项目中会有各种各样的需求,这会促使开发人员去探索和研究这个新库。简言之,只有任务本身才会真正促使你去探索及学习。java 8的新的日期及时间API也是一样。为了学习Java 8的这个新库,这里我创建了几个以任务为导向的例子。我们先从一个简单的任务...

2019-02-16 09:28:02 420

原创 Flink官方入门项目简介

本文作者:林伟兵,叩丁狼高级讲师。原创文章,转载请注明出处。1. Flink简介Flink 提供了三个核心的用户API:BatchStreamingTalbe & SQL​ 本文不介绍Flink是什么,Flink的核心组件和特性,本文从用户的角度解读Batch和Streaming代码的实现方式,本文使用Flink1.6.1版本作为讲解。首先需要下载官方的案例,地址是...

2019-02-16 09:25:54 859

原创 Phoenix入门(下)

本文作者:林伟兵,叩丁狼高级讲师。原创文章,转载请注明出处。3.5.使用DBeaver客户端Phoenix常见的客户端连接工具有SQuirrel和DBeaver,这里主要介绍DBeaver客户端的使用方式。安装DBeaver,启动DBeaver,将 phoenix-[version]-client.jar 拷贝到客户端。注意:客户端如何缺失某些参数配置,可以上面第4步的驱动...

2019-02-16 09:23:24 608 1

原创 Phoenix入门(上)

本文作者:林伟兵,叩丁狼高级讲师。原创文章,转载请注明出处。1.Phoenix概述Phoenix是一个开源的HBASE SQL层API。Phoeinx可以用标准的JDBC API替代HBASE client API来创建表,插入和查询查询HBASE中的数据。Phoenix作为应用层和HBASE之间的中间件,以下特性使它在大数据量的简单查询场景有着独有的优势:支持二级索引.编译SQL成...

2019-02-16 09:21:25 1237

原创 从0开始写框架(三)—分布式事务解决方案

本文作者:罗海鹏,叩丁狼高级讲师。原创文章,转载请注明出处。回顾  上一篇文章我们说到,各种分布式事务解决方案的特点,其中最后提到了可靠消息事务最终一致性这种解决方案,而我们这篇文章的标题也是它,没错,我们接下来要详细的分析该解决方案的实现细节了,上一篇文章在介绍该解决方案时,已经说了那个执行流程分析图,仅仅只是一个粗略图而已,实际上,可靠消息事务最终一致性的设计是非常复杂的。那么为什么要...

2019-02-16 09:18:12 294

原创 从0开始写框架(二)—分布式事务解决方案

本文作者:罗海鹏,叩丁狼高级讲师。原创文章,转载请注明出处。前言  工欲善其事必先利其器,既然我们决定要做一个分布式事务框架,那首先需要了解一下,分布式事务是怎么回事,它跟传统的本地事务有什么区别,解决方案有哪些,每种解决方案的对比等等。本地事务  在了解分布式事务之前,先回顾一下本地事务,顾名思义,本地事务就是在同一个JVM中,一个开启了事务的业务方法就是本地事务。而这一个开启了事务...

2019-02-16 09:15:45 484

原创 从0开始写框架(一)—开篇介绍

本文作者:罗海鹏,叩丁狼高级讲师。原创文章,转载请注明出处。概述  我们这个系列的文章叫做“从0开始写框架”,那从文章的标题可以知道,这系列的文章主要是讲:一个java框架是如何开发出来的。看到这里,可能已经有部分小伙伴不明觉厉了。  但其实,开发一个框架并不是什么很神秘、很高大上的事情,就跟我们平时做业务类的项目差不多,这个差不多指的是开发形式上差不多。不一样的地方就在于思想上要做一个...

2019-02-16 09:12:11 409

原创 并发面试题--什么是ThreadLocal本地局部变量?

本文作者:黄海燕,叩丁狼高级讲师。原创文章,转载请注明出处。ThreadLocal是一个本地线程副本变量工具类,可以理解为线程的本地变量。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,实现了线程的数据隔离,是线程独有的所以本身就是线程安全,特别适用于各个线程依赖多个不同的变量值完成操作的场景。如:数据库连接、Session管理等。##1...

2019-02-16 09:09:36 885 1

原创 并发面试题:java中有几种方法可以实现一个线程?

本文作者:黄海燕,叩丁狼高级讲师。原创文章,转载请注明出处。##1.创建并启动线程的6种方式:1)继承Thread类创建线程2)实现Runnable接口创建线程3)使用Callable和FutureTask创建线程4)使用线程池,例如用Executor框架5)Spring实现多线程(底层是线程池)6)定时器Timer (底层封装了一个TimerThread对象)##...

2019-02-16 09:06:15 857

原创 线程并发—线程池

本文作者:黄海燕,叩丁狼高级讲师。原创文章,转载请注明出处。1.1 为什么要使用线程池?所谓线程池,其实和连接池的概念很像,就是在内存中实现创建好了多个线程,我们使用的时候直接从里面拿,不用的时候直接放回去,并且线程池我们是可以进行管理的,很好的控制多个线程,并且减少了创建和销毁的过程减小了内存中的消耗。相比起普通的创建线程,线程池的好处:重用存在的线程,减少对象创建、消亡的开销,...

2019-02-15 15:37:20 252

原创 NIO-缓冲区

本文作者:杨龙,叩丁狼高级讲师。原创文章,转载请注明出处。定义I/O 操作也就是向操作系统发出请求,让它要么把缓冲区里的数据排干(写),要么用数据把缓冲区填满(读)。那么在 NIO 中使用 Buffer 进行对缓冲区抽象。概念上,缓冲区是包在一个对象内的基本数据元素数组,直白说就是数据的容器。Buffer 类相比一个简单数组的优点是它将关于数据的数据内容和信息包含在一个单一的对象中。Buf...

2019-02-15 15:33:03 307

原创 NIO-简介

本文作者:杨龙,叩丁狼高级讲师。原创文章,转载请注明出处。IO 操作问题在 Java 的早期,JVM 在解释字节码时往往很少或没有运行时优化。这就意味着,Java 程序运行速率大大低于本地编译代码,因而对操作系统 I/O 子系统的要求并不太高。在运行时优化方面,JVM 已然前进了一大步。现在 JVM 运行字节码的速率已经接近本地编译代码,借助动态运行时优化,其表现甚至还有所超越。这就意味着...

2019-02-15 15:31:21 349

原创 一次完整的HTTP请求所经历的步骤

本文作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。HTTP通信机制是在一次完整的HTTP通信过程中,Web 浏览器与 Web 服务器之间将完成下列几个步骤:1. 建立TCP连接在 HTTP 工作开始之前,Web 浏览器首先要通过网络与 Web 服务器建立连接,该连接是通过TCP来完成的,该协议与 IP 协议共同构建 Internet,即著名的 TCP/IP 协议,因此 Inte...

2019-02-15 15:28:39 921

原创 高性能的关键异步请求的原生态

本文作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。前言:说到异步请求咱们得先知道何为同步请求,从而对比来理解异步请求.同步请求简述, 浏览器发送请求->web服务器开启线程处理请求->处理完把结果返回给浏览器. 咱们来看下程序中同步请求的业务逻辑图.同步请求对于同步操作来说,web服务器开启请求处理线程之后需要等待业务的处理完成才能做响应.对于同步请求来说这是...

2019-02-15 15:26:28 191

原创 Gradle 高级-gretty

本文作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。概要:目前很多企业都开始使用Gradle 来进行项目的管理,对于 Java Web 项目来说,war 插件的出现,让项目部署只需复制粘贴即可,那有没有办法让 JavaWeb 项目的部署像PC 端软件一样双击某个执行文件即可?有没有办法自动检测项目的更新,自由编译与加载从而方便开发人员呢?答案是yes,咱们可以使用 gretty 来...

2019-02-15 15:21:30 873

原创 Gradle 入门-项目发布

本文作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。接下来咱们来看下构建工具的最后一个环节,项目发布.项目发布可以将咱们写好的模块发布给别人去使用,也可以发布到公司的公共仓库以供依赖的项目使用.这是公司中多项目协同合作的重要环节.以下是Gradle 发布项目流程Gradle 项目发布流程由 Gradle 将项目打包和创建 metadata 文件按要求发布到本地仓库或者远程仓...

2019-02-15 15:18:58 664

原创 Gradle 入门-自动化测试

本文作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。测试是每个项目必不可少的一步,每一款软件都需要测试通过才能上线.由于测试的必需性,所以有了一些测试框架的面世,比如 Junit,TestNG 等,能够帮咱们编写可复用的结构化测试,运行这些测试都需要先编译.测试代码只在测试环境下使用,不应该发布到生产环境中,一般把源代码和测试代码分开.对于所有项目就应该存在的测试,Gradle 又为...

2019-02-15 15:16:34 717

原创 线程基础—并发容器:PriorityBlockingQueue

本文作者:王一飞,叩丁狼高级讲师。原创文章,转载请注明出处。#####概述按api上的解释,PriorityBlockingQueue 是有一个带有优先级级别的无界阻塞队列,不支持null元素入列,并且要求队列对象必须为可以比较对象。这点跟PriorityQueue类 类似,区别是PriorityBlockingQueue 带有阻塞功能。PriorityBlockingQueue 出列具...

2019-02-15 15:11:44 245

原创 线程基础—并发容器:LinkedBlockingQueue

本文作者:王一飞,叩丁狼高级讲师。原创文章,转载请注明出处。#####概念LinkedBlockingQueue按照api解释:一个基于链表而实现的有界阻塞队列。遵循先进先出原则,由队头入列,再从队尾出列。具体操作上跟ArrayBlockingQueue类似,区别在于底层维护数据上,LinkedBlockingQueue底层是一个链接,而ArrayBlockingQueue是一个数组。...

2019-02-15 15:04:43 1184 1

原创 基于Mapper接口动态代理实现原理

本文作者:孔维胜,叩丁狼高级讲师。原创文章,转载请注明出处。基于Mapper接口动态代理实现原理看文章前的技术要求在学习MyBatis的初级篇之前,有两个前提要求,第一.必须学会使用IDEA,因为在文章中,使用的工具为IDEA,文章中的案例也都是基于IDEA的。第二.必须学会使用MAVEN,因为在案例中需要的jar包,都是通过MAVEN来管理的。文章中的案例的开发环境JDK 1.8...

2019-01-05 10:27:54 1374

原创 MyBatis中通过package标签加载mapper映射文件的方式分析

本文作者:孔维胜,叩丁狼高级讲师。原创文章,转载请注明出处。MyBatis中通过package标签加载mapper映射文件的方式分析看文章前的要求在学习MyBatis的初级篇之前,有两个前提要求,第一.必须学会使用IDEA,因为在文章中,使用的工具为IDEA,文章中的案例也都是基于IDEA的。第二.必须学会使用MAVEN,因为在案例中需要的jar包,都是通过MAVEN来管理的。文章中的...

2019-01-05 10:16:45 8074 4

原创 (十五)使用Java操作Elasticsearch

本文作者:罗海鹏,叩丁狼高级讲师。原创文章,转载请注明出处。前言  到目前为止,我们一直都是使用RESTful风格的 API操作elasticsearch服务,但是通过我们之前的学习知道,elasticsearch提供了很多语言的客户端用于操作elasticsearch服务,例如:java、python、.net、JavaScript、PHP等。而我们此次就学习如何使用java语言来操作e...

2019-01-04 14:55:13 482

原创 SpringCloud-源码分析 Hystrix 熔断器

本文作者:陈刚,叩丁狼高级讲师。原创文章,转载请注明出处。回顾为了防止服务之间的调用异常造成的连锁反应,在SpringCloud中提供了Hystrix组件来实现服务调用异常的处理,或对高并发情况下的服务降级处理 。简单回顾一下Hystrix的使用:1.要使用 Hystrix熔断机制处理引入它本身的依赖之外,我们需要在主程序配置类上贴 @EnableHystrix 标签 开启Hystri...

2019-01-04 14:51:36 1038

原创 SpringCloud-源码分析 zuul (二)

本文作者:陈刚,叩丁狼高级讲师。原创文章,转载请注明出处。在上一章节我们分析了Zuul中的各种filter,那这一章我们来跟踪一下zuul的执行流程。那么入口肯定是我们的 ZuulServlet ,他类似于 DispatcherServlet 在请求的最前面做分发。我们来看一下他的源码/** * Core Zuul servlet which intializes and orchest...

2019-01-04 14:34:01 332

原创 线程并发--AQS抽象队列同步器

本文作者:黄海燕,叩丁狼高级讲师。原创文章,转载请注明出处。AQS队列同步器英文全称AbstractQueuedSynchronizer,这是一个抽象类,为什么我们今天需要学习这个抽象类呢?这个抽象类它的神奇之处到底是什么呢?我们一起来掀开它的神奇面纱吧!什么是AQS(AbstractQueuedSynchronizer)?AQS中文翻译为同步器,Lock接口的实现类基本都是通过包含A...

2019-01-04 14:12:21 316

原创 从面向对象角度看javascript的闭包

翻译:梁开权###javascript的"闭包"是这样定义的:闭包就是能够读取其他函数内部变量的函数。在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。###从面向对象的角度来理解"闭包"在面向对象中,我们是这样定义类:public class User { private String name;

2019-01-04 11:56:35 165

原创 微信公众号开发教程(九)长链接转短链接

本文作者:陈惠,叩丁狼高级讲师。原创文章,转载请注明出处。应用场景:1.很多时候,我们的链接由于域名太长或者参数太多会导致整个链接很长很长,如果直接使用该链接来生成二维码的话,比如(商品二维码、支付二维码等),会导致扫码解析的速度和成功率都会下降,但是如果我们先把长链接转为短链接,再去生成二维码,就可以提高速度和成功率了。2.就算不是用于二维码,链接越长也会有很多问题,比如不利于传播与推...

2019-01-04 11:38:10 10838

原创 微信公众号开发教程(八)获取用户地理位置,并打开微信内置地图

本文作者:陈惠,叩丁狼高级讲师。原创文章,转载请注明出处。本篇文章实现效果如下:用户点击微信公众号底部【校区位置】菜单,打开应用页面,该页面中调用微信JSSDK打开微信内置地图,并设置目标地点(叩丁狼教育校区),此时可看到用户当前位置与目标地点位置的距离,还可通过右下角绿色按钮,调用百度地图等第三方软件,点击后会自动设置用户的位置作为起点,目标地点作为终点,自动查询方案路线。实现步骤...

2019-01-04 11:33:43 20557 1

原创 python-网络-tcp的几种状态介绍(二)

本文作者:黎智煊,叩丁狼高级讲师。原创文章,转载请注明出处。tcp的4次挥手(分手)协议叩丁狼教育.png通俗的4次挥手讲解 第一次挥手:双方交流的差不多了,此时客户端也已经结尾了,接下来要断开通信连接,所以告诉服务端“我说完了(FIN)”,此时自身形成等待结束连接的状态。 第二次挥手:服务端知道客户端已经没话说了,服务端此时还有两句心里话要给客户端说,“我知道...

2018-12-11 09:59:34 599

原创 微信支付之Native扫码支付功能

作者:陈惠,叩丁狼教育高级讲师。原创文章,转载请注明出处。上一篇微信支付文章:https://www.jianshu.com/p/9c322b1a5274实现了微信公众号内H5页面进行支付的功能,但是这种方式的缺点就是必须在微信中打开付款页面才能实现,所以并不适合所有的场景。那么本篇文章,会以另外一种方式实现,使用扫码的方式来进行支付。需要注意的是,扫码支付分两种形式:线下的扫码...

2018-12-11 09:58:51 9466

原创 python-网络-tcp的几种状态介绍(一)

本文作者:黎智煊,叩丁狼高级讲师。原创文章,转载请注明出处。之前介绍了很多的udp的原理和例子,现在稍微总结一下之前的tcp和udp的区别,以便更好地接下来的tcp介绍.tcp和udp的小区别 TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按...

2018-12-11 09:57:50 400

原创 python-网络编程-模拟聊天室

本文作者:黎智煊,叩丁狼高级讲师。原创文章,转载请注明出处。udp应用:echo服务器模拟的是设置一个服务器,一旦有客户端发送数据到服务端,服务端马上响应消息给客户端,类似机器人自动回复.参考代码#coding=utf-8from socket import *#1. 创建套接字udpSocket = socket(AF_INET, SOCK_DGRAM)#2. ...

2018-12-11 09:57:10 1012

原创 python-tcp/ip网络编程-网络调试助手的使用

本文作者:黎智煊,叩丁狼高级讲师。原创文章,转载请注明出处。网络调试助手的使用俗话说,好马配好鞍,今天我们来简单认识一下几个平台的网络助手如何使用.先说一下,假如不是用外部图形化工具的情况下, 我们如何捕获一些网络数据.现在假设一下你正在使用基于BSD,LINUX,UNIX或者MAC OS X,那么你可以利用nc命令进行网络测试,比如说,你用nc监听了一个本地的8889端口,然后...

2018-12-11 09:55:34 5024

原创 面试题剖析:单例设计模式线程安全问题

本文作者:黄海燕,叩丁狼高级讲师。原创文章,转载请注明出处。1. volatile 关键字1.1 volatile 关键字作用:在百度百科截取的描述如下:叩丁狼教育.png说明volatile 关键字作用作用有两点: 防止指令重排:规定了volatile 变量不能指令重排,必须先写再读。 内存可见:线程从内存中读取volatile修饰的变量的数据,直接从...

2018-12-07 14:52:45 492

原创 线程基础(二十一)-并发容器-ArrayBlockingQueue(上)

本文作者:王一飞,叩丁狼高级讲师。原创文章,转载请注明出处。在正式讲解ArrayBlockingQueue类前,先来科普一下线程中各类锁,只有了解这些锁之后,理解ArrayBlockingQueue那就更轻松了。可重入锁一种递归无阻塞的同步机制,也叫做递归锁。简单讲一个线程获取到锁对象之后,还是可以再次获取该锁对象时,不会发生阻塞。java中 synchronized 跟Ree...

2018-12-07 14:51:16 170

原创 线程基础(二十二)-并发容器-ArrayBlockingQueue(下)

本文作者:王一飞,叩丁狼高级讲师。原创文章,转载请注明出处。概念ArrayBlockingQueue 是一个有界阻塞的队列。有界原因是它底层维护了一个数组,初始化时,可以直接指定。要注意,一旦创建成功后,数组将无法进行再扩容。而阻塞是因为它对入列出列做了加锁处理,如果队列满了,再入列则需要阻塞等待, 如果队列是空的,出列时也需要阻塞等待。ArrayBlockingQueue 底层是...

2018-12-07 14:50:46 181

原创 Gradle 入门-版本冲突问题

本文作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。在之前的文章上,咱们已经知道了如何添加依赖,接下来咱们来看下如何来管理依赖.其实管理依赖的最重要的环节就是传递性依赖过程中存在的版本冲突的问题处理.接下来咱们先来看个存在传递性依赖过程中 jar 测版本冲突问题,再来看下 Gradle 有哪些的处理方法.传递性依赖中的版本冲突hibernate中slf4j的版本冲突问题...

2018-12-07 14:50:22 2106

原创 Gradle 入门-实现多项目构建

本文作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。之前咱们已经学习了Gradle 的基本原理知识点,已经了解了 Gradle 构建配置的组成部分以及构建的生命周期,如何进行依赖管理以及如何解决传递性依赖冲突.那这一篇咱们来做个实践,来看下咱们在企业中经常使用到的操作,就是如何在项目中来使用 Gradle 构建工具.咱们先来看下多项目的构建.多项目构建在企业中,一个比价复杂...

2018-12-07 14:49:59 419

原创 Oracle监听配置讲解

本文作者:贺圣军,叩丁狼高级讲师。原创文章,转载请注明出处。很多使用Oracle的朋友遇到最多的问题就是Oracle数据库已经安装完成, 但是在使用Oracle客户端pl/sql等工具却怎么都连接不上去, 如果遇到这种问题, 请好好看下这篇文章,必有收获.在这里我们简单说明一下对于oracle的网络配置基础, 主要简单介绍基本流程和两个常用的文件listener.ora和tnsname...

2018-12-07 14:49:33 1698

空空如也

空空如也

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

TA关注的人

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