Swagger2边写代码边写文档 有更新!

  |   0 评论   |   0 浏览

本文最初发布在 「Java 极客技术」公众号 作为一个开发人员最怕的就是写文档了,但是要想成为一个合格的程序员,写好文档也是一个必备的技能。开发中我们经常要写接口服务,既然是服务就要跟别人对接,那难免要写接口文档,那么如何”优雅“的写接口文档呢?本文介绍一个在写代码的过程就可以写完接口文档的工具——Swagger2(江湖人称丝袜哥 😂) 下文基于 SpringBoot + Maven 介绍 Swagger2 的使用 加入依赖 <!--Swagger-ui 配置--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>s....

看自己的文章被各大平台转载是一种什么样的体验 有更新!

  |   0 评论   |   0 浏览

Java Geek Tech 一个由纯洁的微笑发起的一个团队,共同维护一个公众号 Java 极客技术(Javageektech)。该公众号主要用来分享 Java 开发的一些技能。 文章的作者都是微笑哥知识星球群友写的,有 Java 基础,有 Java 高级特性,从多线程,JVM 等很多方面的技术,也有一些面试经历。主要帮助群友或者其他人成长。 Java Geek Tech 第一篇文章 加入 Java 极客技术两周,目前投稿了两篇文章,第一篇文章是《记一次蚂蚁金服的面试经历》被网上各大平台转载,看起来大家都很喜欢。而且也收到了很多网友的评论, 转载的平台有掘金,简书,知乎,头条等很多平台。文章最初是发表发表在 Java 极客技术(Javageektech)公众号上面的,原始地址如下: 博客地址 微信公众号地址 其实自己一开始并没有想到要写这一篇文章,本来就是一场面试经历而已,而且最终也没有拿到 offer。然后在微笑哥群里聊天的时候提到了这个事,微笑哥就说写出来,投稿到公众号里面,帮大家一起进步。想了想,觉得可以帮到大家挺好的, 然后周末就花了点时间记录了一下自己的受虐过程。没想到发到公众....

基于ZK的 Dubbo-admin 与 Dubbo-monitor 搭建 有更新!

  |   0 评论   |   0 浏览

本文最初发布在 「Java 极客技术」公众号 背景 最近项目中使用了 dubbo 在实现服务注册和发现,需要实现对服务提供者和调用者的监控,之前有研究过基于 redis 作为注册中心的监控平台,不过本文基于 zk 作为注册中心,进行 dubbo-admin 和 dubbo-monitor 搭建。另外项目基于 dubbo 2.6.4 版本,所以该监控版本调整为 dubbo2.6.4。 步骤 GitHub 官方组件目前在重构,采用前后分离技术,尚未完成。本文采用的还是 master 分支的老版本 dubbo-admin git clone https://github.com/apache/incubator-dubbo-ops 将项目根目录下的 pom.xml 文件中的 dubbo 版本调整为 2.6.4 <dubbo_all_version>2.6.4</dubbo_all_version> 将 dubbo-admin 项目下的 pom.xml 文件中的 dubbo 版本进行调整,并且增加 netty 依赖 <dependency> <groupId....

聊聊面试中的 Java 线程池 有更新!

  |   0 评论   |   0 浏览

背景 关于 Java 的线程池我想大家肯定不会陌生,在工作中或者自己平时的学习中多多少少都会用到,那你真的有了解过底层的实现原理吗?还是说只停留在用的阶段呢?而且关于 Java 线程池也是在面试中的一个高频的面试题,就像 HashMap 的实现原理一样,基本上面试必问,估计都已经被问烂大街了。 题外话:HashMap 的实现原理真的已经被问烂了,在我自身的多次面试中都不知道被问了几遍了,有的时候想想很奇怪,为什么这个被问的烂大街的问题还是会一直被问呢?但是从面试官的角度来想一下,如果一个被问的都烂大街的问题你都不好好准备对待,那怎么能好好的对待工作呢(个人愚见)。 常用的几种线程池 我们先来看下常用的几种线程池的创建方式,以及底层采用的实现原理 单个线程: Executors.newSingleThreadExecutor(); public static ExecutorService newSingleThreadExecutor() { return new FinalizableDelegatedExecutorService (new ThreadPoolExecut....

聊聊面试中的 ThreadLocal 原理和使用场景 有更新!

  |   0 评论   |   0 浏览

相信大家不管是在网上做题还是在面试中都经常被问过 ThreadLocal 的原理和用法,虽然一直知道这个东西的存在但是一直没有好好的研究一下原理,没有自己的知识体系。今天花点时间好好学习了一下,分享给有需要的朋友。 ThreadLocal 是什么 ThreadLocal 是 JDK java.lang 包中的一个用来实现相同线程数据共享不同的线程数据隔离的一个工具。 我们来看下 JDK 源码中是如何解释的: This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has its own, independently initialized copy of the variable. ThreadLocal instances are typically private static fields in classes....

面试你应该知道的 MySQL 的锁 有更新!

  |   0 评论   |   0 浏览

背景 数据库的锁是在多线程高并发的情况下用来保证数据稳定性和一致性的一种机制。MySQL 根据底层存储引擎的不同,锁的支持粒度和实现机制也不同。MyISAM 只支持表锁,InnoDB 支持行锁和表锁。目前 MySQL 默认的存储引擎是 InnoDB,这里主要介绍 InnoDB 的锁。 InnoDB 存储引擎 使用 InnoDB 的两大优点:一是支持事务;二是支持行锁。 MySQL 的事务 在高并发的情况下事务的并发处理会带来几个问题 脏读:**指在事务 A 处理过程里读取到了事务 B 未提交的事务中的数据。**比如在转账的例子中:小 A 开了一个事务给小 B 转了 1000 块,还没提交事务的时候就跟小 B 说,钱已经到账了。这个时候小 B 去看了一下余额,发现果真到账了(然后就开开心心刷抖音去了),这个时候小 A 回滚了事务,把 1000 块又搞回去了。小 B 刷完抖音再去看下余额,发现钱又不见了。 不可重复读:**指在一个事务执行的过程中多次查询某一数据的时候结果不一致的现象,由于在执行的过程中被另一个事务修改了这个数据并提交了事务。**比如:事务 A 第一次读小明的年龄是 ....

聊聊 Redis 的事务 有更新!

  |   0 评论   |   0 浏览

背景 提到事务想必大家一定不会陌生,工作面试中多多少少都会了解到,这篇文章主要带大家再简单回忆一下事务的基本知识,然后重点介绍下 Redis 的事务,关于 Redis 的事务有何不同我们继续往下看就知道了。 什么事务 说到事务,首先我们需要知道什么是事务。首先事务是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行。事务是一个不可分割的逻辑单元。 事务的四大特性 A(原子性)事务的各步操作是不可分的,保证一系列的操作要么都完成,要么都不完成; C(一致性)事务完成,数据必须处于一致的状态; I(隔离性)对数据进行修改的所有并发事务彼此之间是相互隔离,这表明事务必须是独立的,不应以任何方式依赖或影响其他事务; D(持久性)表示事务对数据处理结束后,对数据更改必须持久化,不管是事务成功还是回滚。事务日志都能够保持事务的永久性。 以上是常规的事务以及事务的特性。下面我们来看一下什么是 Redis 的事务,以及 Redis 事务有什么特殊性质。 Redis 事务 关于 Redis 的性质官方文档如下 MULTI, EXEC, DISCARD and ....

分布式下必备神器之分布式锁 有更新!

  |   0 评论   |   0 浏览

今天这篇文章我们来聊聊在分布式环境下的一个神兵利器——分布式锁!在看这篇文章的时候,默认大家对锁已经了解了,如果不了解的朋友可以去翻翻公号前面的文章,有很多篇详细介绍了锁的一些知识。 写这篇文章的主要原因是之前星球中有朋友说面试中被问的频率有点高,虽然知道分布式锁是什么,但是还是不能很好的说出来,这篇文章就是帮助大家好好梳理一下分布式锁的原理,希望对大家有帮助。 另外欢迎到 Java 极客技术知识星球中,我们一起煮酒论技术~ 什么是分布式锁 首先我们先来简单了解一下什么是分布式锁(关于什么是锁,可以翻翻之前公号的文章或者到我们的网站 http://www.justdojava.com/ 上看看之前的文章)。 在引入分布式锁之前大家应该都知道经典的 CAP 理论提到任何一个系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)三者的,同一时刻只能满足两个,在这种情况下分布式锁就出现了,分布式锁就是用来解决数据一致性问题的。 在以前单体应用的环境下,Java 的 API 提供了很多控制并发的接口,包括 s....

聊聊目标管理之 OKR 有更新!

  |   0 评论   |   0 浏览

这篇文章我们不谈技术,聊点轻松的,那聊什么呢?聊一下最近很火的目标管理 OKR。不知道小伙伴你们的公司什么情况,我的公司今年开始推行 OKR,用了大半年的时间,感觉效果还不错,上周六又参加了一天的复盘培训会,刚好借此机会总结一下顺便跟大家分享一下这个优秀的工具。 什么是 OKR OKRs:Objectives & Key Results(目标与关键结果)。是一种企业,团队,个人目标设定与沟通的工具,是通过结果去衡量过程的方法与实践。 上面的解释说起来可能比较虚无缥缈,用通俗的语言来说就是一种自我激励督促的手段。对企业来说以前对员工的考核大部分情况都是采用 KPI 的方式,只要员工完成了 KPI 就可以了。OKR 是一种与 KPI 类似的工具,但是两者的出发点是完全不同的。KPI 强调的硬性指标,自上而下分配的任务,完全完全指导考核结果;但是 OKR 不一样,OKR 是一种激励督促的方式,强调的是创新性与挑战性,而且有自上而下或者自下而上两种方式,并且最大的特点是 OKR 的打分不直接与绩效考核挂钩。当然这里说的是不直接,但是还是会影响的~~。 简史 OKR 的创立是英特尔前首席....

这么多优秀的面试题,你不心动吗? 有更新!

  |   0 评论   |   0 浏览

人生有涯,学海无涯。 今天给大家分享一些《Java 极客技术》知识星球的部分优质的面试题内容,在分享这些内容之前先解答几个大家疑惑的问题。既然有了《Java 极客技术》的公众号,为什么还要有《Java 极客技术》的知识星球?直接在公众号里面看文章不行吗,为什么要加入到知识星球中去? 解惑 大家有问题,有疑惑很好,人的成长中最怕的是没有问题。那么既然有了问题,下一步自然是提出问题,可惜很遗憾,由于微信的规定导致,我们的《Java 极客技术》的公众号没有留言功能!!!没有留言功能,自然无法让你们提问。大家可能会说,那我在后台留言啊。很好,这是一个方案,但是遗憾的告诉大家,首先后台留言的消息只能保存短暂的几天时间,我们很难在第一时间内看到并回复;其次我们做的是公众号,不是服务号,大家除了日常的工作还要为星球中的用户输出优质的内容,时间不够用,而且我们还要创造更多有趣好玩的干货;最后也是最重要的一个原因是,后台留言的回复只能一对一!!!这个是最严重的问题,同一个问题,成千上万的用户询问,难道我们要一一回复吗?可以很明确的说,这是不可能,也不现实的。 由于上面的种种原因才有了《Java 极客技....

怎么让你的 Java 技术变得牛逼 有更新!

  |   0 评论   |   0 浏览

​ 每个 Java 技术人员心里多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。 第一:心态 其实最大的困难是在于克服自己。只要你有恒心,学好 Java 并不难。就算你没有基础,没有经验,没有任何概念。可是即使是发明 Java 的人,发明计算机的人在起初也是一张白纸。 他们也是不断琢磨,不断学习和实践才出结果的。所有的 Java 高手都是从什么也不会学到什么都会的。兴趣很重要,只要你有兴趣,就会发现学习 Java 和打篮球一样简单。 第二:学习方法 掌握好的学习方法,就是事半功倍的效果。很多同学在写代码的时候,都是照葫画瓢,没有自己半点的理解,往往是把从书上背下来的再全堆上去。这样写着写着就没有了思路,这是缺少编程思想的原因。所以说,理解最重要。一旦建立起编程思想,有了自己的想法,写东西自然就会容易多了! 第三:坚持 Java 刚开始的时候相对还是简单一些,大家都还有学习的积极性。越到后面越难,很多人开始打退堂鼓,甚至产生想要放弃的念头。这和爬山是一个道理,你都快到山顶了,肯定是走不动了,但是如果再坚持一下下,就会看到胜利的日出。 ....

Docker 安装 Redis、MySQL、Gogs 有更新!

  |   0 评论   |   0 浏览

人生有涯,学海无涯 最近接到一个项目,由于项目的独特性需要自己搭建一些环境,刚好之前学了一些 Docker(这里如果大家不熟悉 Docker 可以查看公号前面松哥写的 Docker 的系列文章),所以就决定采用 Docker 搭建,毕竟搭建方便、简单、快速。 01、Docker 安装 Redis 搜索镜像 docker search redis:使用该命令可以搜索出所有的 redis 镜像列表 如果没有特殊版本需求,可以使用:docker pull redis 命令直接安装最新版本 Redis 下载过后使用 docker images | grep redis 命令查看已经获取到的镜像 启动 Redis 服务:docker run --name redis -d -p 6379:6379 redis --requirepass "zxcvbnmdfghjk09876" docker run:表示创建并运行一个容器; --name redis:表示创建一个名字为 redis 的容器; -d:表示后台运行; -p 6379:6379:表示将宿主机的 6379 端口映射到....

关于知识付费的那些事

  |   0 评论   |   0 浏览

背景 从 2017 年开始知识付费渐渐普及,不管是得到,还是即刻,喜马拉雅等一系列的知识付费软件进入了大众的视野。 一开始是比较排斥的,觉得完全是浪费钱,完全没有必要,现在的网络这么发达,需要什么完全可以在网上免费的获取到,没有必要花那个冤枉钱。但是随着接触到的一些人,遇到的一些事,渐渐的开始理解了。刚好这个时候一直关注的一个公众号的作者创业了,做的就是知识付费的软件,专门为技术人员提供这方面的需求,所以渐渐的也走上了这个道路。 付费系列 自我感觉值得阅读系列 《36 讲 从技术到管理的进阶之路——朱赟》 这个系列虽然说的是从技术到管理的进阶,其实不尽然。除了一些作者在硅谷工作的随笔之外,作者主要从新人和领导两个角色来对职场进行讲述。从职场新人的角度上来讲述一个职场新人应该怎么和领导以及同事相处,如何作一个领导眼中的有担当的职员。从领导的角度,主要讲述了如何带领新人培养新人快速的适应职场,以及一些工作中的经验。 系列目录如下: 返现通道: 《微服务架构 160 讲——杨波》 第二个比较喜欢的是杨波老师的微服务架构,这个 160 讲是第二个系列,之前的一个系列内容比较宽泛,讲的都是大概,并没有深....

Consul-template, Nginx实现Thrift Consul负载均衡

  |   0 评论   |   0 浏览

Consul-template, Nginx 实现 Thrift Consul 负载均衡 流程 说明 本例子是进行 RPC 的负载均衡,RPC 是 tcp 协议,所以 Nginx 要配置 tcp 模块,支持 tcp 负载均衡。 Consul 集群 用于服务注册,注册多个服务实例,对外提供 RPC 服务。 Consul-template 用于实时监测 Consul 中服务的状态,配合自身一个模板文件,生成 Nginx 的配置文件。 Nginx 使用自身的配置文件和第二步生成的配置文件,进行负载均衡。 Nginx 安装 安装最新版 Nginx,保证 Nginx 版本在 1.9.0 以上 1.9.0 版本以上才支持 TCP 转发,据说不是默认安装了该模块,安装完成可以查询一下,如果有--with-stream 参数,表示已经支持 TCP。如果没有就重新编译增加参数安装。 我的 Nginx 安装在/etc/nginx 目录下 安装完成使用 nginx -t 监测一下是否成功。 Consul-template 本文旨在负载均衡,Consul 集群搭建不作介绍。 下载对应系统版本文件 https://releases.hashicorp.com/co....