自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

沉潜飞动

人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。

  • 博客(141)
  • 资源 (13)
  • 论坛 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 JDK 每半年就会更新一次新特性,再不掌握就要落伍了:JDK8 的新特性

该图片由Alexandr Podvalny在Pixabay上发布你好,我是看山。本文收录在 《Java 进阶》 系列专栏中。从 2017 年开始,JDK 版本更新策略从原来的每两年一个新版本,改为每六个月一个新版本,以快速验证新特性,推动 Java 的发展。从 《JVM Ecosystem Report 2021》 中可以看出,目前开发环境中仍有近半的环境使用 JDK8,有近半的人转移到了 JDK11,随着 JDK17 的发布,相信比例会有所变化。因此,准备出一个系列,配合示例讲解,阐述从..

2021-11-25 08:11:49 2573 19

原创 从零实现“百度网盘批量重命名”工具

该图片由Roshan Bhatia在Pixabay上发布你好,我是看山。工具的发明能够节省体力,同时也可以减少重复劳动,软件也是工具的一种。今天要说的是,引用 IT 技术,减少大量文件重命名这种重复的劳动。一直在用的存储云盘是百度网盘,里面收集了大量文件。各种资料、电子书,使用空间达到了 2500G。之前还清理过一些低质的书籍,结果使用工具导出发现,在待整理目录中,居然有 1942 条电子书的记录。如果有小伙伴想要什么书,可以从公号留言,只要不是商用,无私共享。提出需求书归正传,这么多的文..

2021-11-18 07:59:37 1359 34

原创 人人都会设计模式:策略模式

该图片由daschorsch在Pixabay上发布你好,我是看山。本文收录在《一个架构师的职业素养》专栏,日拱一卒,功不唐捐。定义策略模式,英文全称是 Strategy Design Pattern。在 GoF 的《设计模式》一书中,它是这样定义的:Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary in..

2021-11-16 08:18:49 4561 64

原创 Java 进阶:使用 Lambda 表达式实现超强的排序功能

该图片由Michael Kleinsasser在Pixabay上发布你好,我是看山。本文被《Java 进阶》专栏收录,在公众号「看山的小屋」,回复“java”可获取源码。我们在系统开发过程中,对数据排序是很常见的场景。一般来说,我们可以采用两种方式:借助存储系统(SQL、NoSQL、NewSQL 都支持)的排序功能,查询的结果即是排好序的结果查询结果为无序数据,在内存中排序。今天要说的是第二种排序方式,在内存中实现数据排序。首先,我们定义一个基础类,后面我们将根据这个基础类演示..

2021-11-08 23:13:31 1929 52

原创 SpringBoot 实战:加载和读取资源文件

该图片由Marna Buys在Pixabay上发布你好,我是看山。本文聊一聊在 SpringBoot 应用中,访问加载类路径(classpath)中的文件内容的多种方法。通过Resource接口Resource接口抽象出一种更底层的方式管理资源,可以实现通过统一的方式处理各类文件资源。下面是几种获取资源实例的方法。手动加载访问类路径中的文件,我们可以直接使用ClassPathResource加载内容,比如:new ClassPathResource("data/resource-dat..

2021-10-24 10:47:43 4614 34

原创 我们如何拿到自己满意的薪资呢?这些套路还是需要掌握的

我不是教你诈,而是有些技巧需要了解。

2021-10-22 08:30:00 473 20

原创 阿里开源的这个库,让Excel导出不再复杂(填充模板的使用指南)

该图片由宅-KEN在Pixabay上发布你好,我是看山。前文 说了写操作,可以实现简单的列表导出,还能 定义样式。有时候,我们还需要导出的一个大表单,或者是表单+列表的形式,这个时候,我们就需要填充功能。内容比较多,文内只会列出关键代码,想要完整源码,可以关注公号「看山的小屋」回复“easyexcel”获取。在 EasyExcel 中,写操作可以完成大部分工作,填充的优势在于,可以实现自定义样式的,只要在模板中设置好样式,填充的数据就能够带着样式。先写个表单既然是使用模板,写来定义一个模..

2021-10-10 16:04:56 4091 17

原创 阿里开源的这个库,让 Excel 导出不再复杂(既要能写,还要写的好看)

既要能写,还要写的好看。毕竟,有时候还是要看脸。

2021-10-07 16:11:44 5062 21

原创 阿里开源的这个库,让 Excel 导出不再复杂(简简单单的写)

该图片由dae jeung kim在Pixabay上发布你好,我是看山。导出是中后台常见的功能,Excel文件是常见的导出格式。在Java栈中,常用的是JXL(目前改名为JExcel)和Apache POI。其中jxl最后的更新时间是2012,除了老系统中能看到影子,几乎见不到踪迹了。目前基本上是POI一统天下。今天要说的EasyExcel阿里巴巴开源的Excel导出类库,是对POI的封装,实现了很多高级功能,并且留出扩展口,支持扩展定制化功能。打个比喻,POI相当于乐高积木,一个个的小积木可..

2021-10-04 07:09:58 3182 9

原创 微服务系统中的数据一致性,你都会了吗

你好,我是看山。从单体架构到分布式架构,从巨石架构到微服务架构。系统之间的交互越来越复杂,系统间的数据交互量级也是指数级增长。作为一个系统,我们要保证逻辑的自洽和数据的自洽。数据自洽有两方面要求:抛开代码,数据能够自己验证自己的准确性,也就是数据彼此之间不矛盾所有数据准确且符合期望为了实现这两点,需要实现数据的一致性,为了实现一致性,就需要用到事务。需要注意一下,本文所设计的数据一致性,不是多数据副本之间保持数据一致性,而是系统之间的业务数据保持一致性。本地事务在早期的系统中,我们可.

2021-09-17 23:14:01 10799 42

原创 SpringBoot 实战:JUnit5+MockMvc+Mockito 做好单元测试

该图片由NickyPe在Pixabay上发布你好,我是看山。今天聊聊如何在 SpringBoot 中集成 Junit5、MockMvc、Mocktio。Junit5 是在 Java 栈中应用最广的测试框架,Junit4 一度霸榜。升级到 Junit5 之后,除了增加 Java8 的很多特性,做了很多功能增强,在结构上做了优化调整,拆分了很多不同的模块,可以按需引入,比如:JUnit Platform - 在 JVM 上启动测试框架JUnit Jupiter - 在 JUnit5 中编写测..

2021-09-11 23:04:08 3233 36

原创 SpringBoot 实战:在 RequestBody 中优雅的使用枚举参数(原理篇)

该图片由Johnnys_pic在Pixabay上发布你好,我是看山。在优雅的使用枚举参数(原理篇)中我们聊过,Spring对于不同的参数形式,会采用不同的处理类处理参数,这种形式,有些类似于策略模式。将针对不同参数形式的处理逻辑,拆分到不同处理类中,减少耦合和各种if-else逻辑。本文就来扒一扒,RequestBody参数中使用枚举参数的原理。找入口对 Spring 有一定基础的同学一定知道,请求入口是DispatcherServlet,所有的请求最终都会落到doDispatch方法中的h..

2021-09-02 07:50:29 1469 134

原创 在Java中实现完整的单例模式

个人认为单例模式是设计模式中最简单也是最常用的一种,是对有限资源合理利用的一种方式。这个模式看似简单,但是其中蕴含了关于并发、类加载、序列化等一系列深层次的知识,如果理解不够深,就有可能在高并发时遇到难以预期的异常,或者会造成资源浪费。

2021-08-26 08:20:39 293 83

原创 SpringBoot 实战:在 RequestBody 中优雅的使用枚举参数

该图片由Christian_Crowd在Pixabay上发布你好,我是看山。前文说到 优雅的使用枚举参数 和 实现原理,本文继续说一下如何在 RequestBody 中优雅使用枚举。本文先上实战,说一下如何实现。在 优雅的使用枚举参数 代码的基础上,我们继续实现。如果想要获取源码,可以关注公号「看山的小屋」,回复 spring 即可。确认需求需求与前文类似,只不过这里需要是在 RequestBody 中使用。与前文不同的是,这种请求是通过 Http Body 的方式传输到后端,通常是 js..

2021-08-24 07:25:26 1289 133

原创 SpringBoot 实战:优雅的使用枚举参数(原理篇)

该图片由minka2507在Pixabay上发布你好,我是看山。SpringBoot 实战:优雅的使用枚举参数 中聊了怎么优雅的使用枚举参数,本文就来扒一扒 Spring 是如何找到对应转换器 Converter 的。找入口对 Spring 有一定基础的同学一定知道,请求入口是DispatcherServlet,所有的请求最终都会落到doDispatch方法中的ha.handle(processedRequest, response, mappedHandler.getHandler())逻..

2021-08-16 09:42:13 1494 104

原创 SpringBoot 实战:优雅的使用枚举参数

该图片由Sinousxl在Pixabay上发布你好,我是看山。接口开发过程中不免有表示类型的参数,比如 0 表示未知,1 表示男,2 表示女。通常有两种做法,一种是用数字表示,另一种是使用枚举实现。使用数字表示就是通过契约形式,约定每个数字表示的含义,接口接收到参数,就按照约定对类型进行判断,接口维护成本比较大。在 Spring 体系中,使用枚举表示,是借助 Spring 的 Converter 机制,可以将数字或字符串对应到枚举的序号或者 name,然后将前端的输入转换为枚举类型。在场景..

2021-08-10 22:47:45 1695 56

原创 看山聊 Java:检查日期字符串是否合法

该图片由Анастасия Белоусова在Pixabay上发布你好,我是看山。这次说一下,怎样检查给出的字符串,是否是合法日期字符串。本文将从 Java 原生和第三方组件两种方式来说明。WHY后端接口在接收数据的时候,都需要进行检查。检查全部通过后,才能够执行业务逻辑。对于时间格式,我们一般需要检查这么几方面:字符串格式是否正确,比如格式是不是yyyy-MM-dd时间在合法范围内,比如我们需要限定在一个月内的时间字符串可以解析为正常的时间,比如 2 月 30 号就不是正常时间..

2021-08-06 22:03:29 238 11

原创 《Go 开发指南》-管理 Go 环境

该图片由krystianwin在Pixabay上发布你好,我是看山。本文源自并发编程网的翻译邀请,文章来自 Go 官方网站。本文主要讲述了如何在同一台机器上安装多个版本 Go 环境,再描述一下如何卸载 Go 环境。如果想要查看如何快速安装 Go 环境,可以访问:快速安装 Go 环境。如果想要通过源码安装,可以访问:从源码安装 Go 环境。如何安装多版本有时候,我们希望用不同版本测试我们的代码,这就需要我们在一台机器上安装多个版本。有关版本列表,可以访问https://golang...

2021-07-24 17:49:08 127

原创 《Go 开发指南》-快速安装 Go 环境

该图片由JPierre Desvigne在Pixabay上发布你好,我是看山。本文源自并发编程网的翻译邀请,文章来自 Go 官方网站。按照下面的步骤,你可以实现快速安装。如果想要通过源码安装,可以访问:从源码安装 Go 环境。如果想要安装多个版本的 Go 或者卸载,可以访问:管理 Go 环境。下载下面提供了 Linux、Mac、Windows 三种系统 Go 语言安装包的下载路径:Linux:https://golang.org/dl/go1.16.5.linux-amd64...

2021-07-24 17:47:28 171 1

原创 看山聊Java:开始使用 Java8 中的时间类

该图片由Erik Karits在Pixabay上发布你好,我是看山。前面聊了聊 Java8 新版时间 API 的类,然后又说了说怎么与旧版时间 API 的转换,今天来聊聊怎样通过新 API 实现老 API 的功能,这样我们就可以逐步替换掉旧版 API,与时俱进。Java8 之前,我们常用的时间类有java.util.date、java.util.Calendar和java.util.Timezone。还会有一些不那么常用的,java.sql.Date、java.sql.TimeStamp。这..

2021-06-30 23:11:00 156 7

原创 看山聊并发:如果非要在多线程中使用 ArrayList 会发生什么?(第二篇)

你好,我是看山。前面写过一篇文章 《如果非要在多线程中使用 ArrayList 会发生什么?》,有读者反馈,Java 11 代码已经修复,还会出现 null 元素。为了便于理解,当时只是通过代码执行顺序说明了异常原因。其实多线程中还会涉及 Java 内存模型,本文就从这方面说明一下。对比源码我们先来看看 Java 11 中,add方法做了什么调整。Java 8 中add方法的实现:public boolean add(E e) { ensureCapacityInternal(siz.

2021-06-29 23:38:39 356 21

原创 看山聊Java:Date 与 LocalDate 或 LocalDateTime 互相转换

你好,我是看山。从 Java1 到 Java8 将近 20 年,再加上 Java8 的普及时间、各种历史 API 兼容过渡时间。我们很多时候需要在旧时间 API 与新时间 API 之间切换,并行使用。今天就来说说,java.util.Date与java.time.LocalDate/LocalDateTime如何互相转换。java.util.Date转为java.time.LocalDateJava8 发行的时候,也考虑到了新旧 API 之间的转换,所以在java.util.Date中增加了toI.

2021-06-22 23:17:59 194 1

原创 看山聊Java:介绍 Java8 中的时间类及常用 API

该图片由Önder Örtel在Pixabay上发布你好,我是看山。年龄大的 Java 程序员都有体会,Java8 之前,Java 提供了一组时间类:java.util.Date、java.util.Calendar及其子类和工具类等。功能比较全面,最大的缺点是难用。所以很多团队直接放弃原生时间类,使用第三方的时间类库。后来,Java8 吸收了 joda-time 的优秀设计,提供了一组新的时间处理 APIjava.time.。本文作为这个系列的第一篇,扒一扒Date和Calendar存在的问题..

2021-06-16 08:40:06 140 1

原创 这些书都学完,绝对是编程界的大佬

你好,我是看山。今天列一下技术相关的书单,本文是第一版,后续持续更新。文中提到的部分书目我也没有读过,作为todo list,明确接下来一段时间的学习方向。Java因为本人属于Java栈,所以主要推荐的还是属于Java领域内的书目。《Java核心技术:卷I 基础知识》:本书由拥有20多年教学与研究经验的资深Java技术专家撰写(获Jolt大奖),是程序员的优选Java指南。无论是Java初学者还是有一定经验的Java工程师,这是一本非常不错的值得时常翻阅的技术手册。《Java编程思想》.

2021-06-09 07:34:04 358 4

原创 Geek 青年说北京沙龙分享

你好,我是看山。5 月 23 号参加了 infoQ 写作平台组织的线下沙龙,瞻仰了很多大佬的英姿。在 Geek 青年说的环节,也壮起胆量上台分享了自己的一些观点。第一次上台,面对台下的大佬们,难免有些紧张。不过思考不易,整理出来,希望能够帮到有相同困惑的同仁们。@文字君 阿萌提前准备了几个问题,其本意是提供一些分享的思路。奈何,京城的程序猿们比较保守,将这些思路当成了题目,完全打乱了阿萌的计划。下面是几个问题:我是如何走上写作之路的?坚持写作给我带来了什么(长期收益、隐形投资、短期回报)我的.

2021-05-31 14:29:03 145 1

原创 看山聊Java:一文掌握 Java8 的 Optional 的 6 种操作

你好,我是看山。Java8 中引入了一个特别有意思类:Optional,一个可以让我们更加轻松的避免 NPE(空指针异常,NullPointException)的工具。很久很久以前,为了避免 NPE,我们会写很多类似if (obj != null) {}的代码,有时候忘记写,就可能出现 NPE,造成线上故障。在 Java 技术栈中,如果谁的代码出现了 NPE,有极大的可能会被笑话,这个异常被很多人认为是低级错误。Optional的出现,可以让大家更加轻松的避免因为低级错误被嘲讽的概率。定义示例数据.

2021-05-20 06:16:28 298 4

原创 看山聊Java:一文掌握 Java8 Stream 中 Collectors 的 24 个操作

你好,我是看山。Java8 应该算是业界主版本了,版本中重要性很高的一个更新是Stream流处理。关于流处理内容比较多,本文主要是说一下Stream中的Collectors工具类的使用。Collectors是java.util.stream包下的一个工具类,其中各个方法的返回值可以作为java.util.stream.Stream#collect的入参,实现对队列的各种操作,包括:分组、聚合等。官方文档给出一些例子:Implementations of {@link Collector} tha.

2021-05-13 19:22:56 213 5

原创 面试真题:无重复字符的最长子串

你好,我是看山。来一个算法题,面试之后查了一下,是 LeetCode 的第三题,难度中等。居然在面试过程中碰到 LeetCode 真题,事后总结一波。加深印象。先看一下题目描述:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。输入:s = “abcabcbb”输出:3解释:因为无重复字符的最长子串是 “abc”,所以其长度为 3。输入:s = “pwwkew”输出:3解释:因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 .

2021-05-08 21:51:19 151

原创 SpringBoot 实战:自定义 Filter 优雅获取请求参数和响应结果

你好,我是看山。一个系统上线,肯定会或多或少的存在异常情况。为了更快更好的排雷,记录请求参数和响应结果是非常必要的。所以,Nginx 和 Tomcat 之类的 web 服务器,都提供了访问日志,可以帮助我们记录一些请求信息。本文是在我们的应用中,定义一个Filter来实现记录请求参数和响应结果的功能。有一定经验的都知道,如果我们在Filter中读取了HttpServletRequest或者HttpServletResponse的流,就没有办法再次读取了,这样就会造成请求异常。所以,我们需要借助 S.

2021-04-29 20:05:02 644 1

原创 SpringBoot 实战:通过 BeanPostProcessor 动态注入 ID 生成器

你好,我是看山。在分布式系统中,我们会需要 ID 生成器的组件,这个组件可以实现帮助我们生成顺序的或者带业务含义的 ID。目前有很多经典的 ID 生成方式,比如数据库自增列(自增主键或序列)、Snowflake 算法、美团 Leaf 算法等等,所以,会有一些公司级或者业务级的 ID 生成器组件的诞生。本文就是通过 BeanPostProcessor 实现动态注入 ID 生成器的实战。在 Spring 中,实现注入的方式很多,比如 springboot 的 starter,在自定义的 Configu.

2021-04-25 22:15:09 244

原创 看山聊并发:面试实战之多线程顺序打印

你好,我是看山。来个面试题,让大家练练手。这个题在阿里和小米都被问过,所以放在这个抛砖引玉,期望能够得到一个更佳的答案。实现 3 个线程 A、B、C,A 线程持续打印“A”,B 线程持续打印“B”,C 线程持续打印“C”,启动顺序是线程 C、线程 B、线程 A,打印的结果是:ABC。解法一:状态位变量控制这个问题考察的是多线程协同顺序执行。也就是第一个线程最先达到执行条件,开始执行,执行完之后,第二个线程达到执行条件,开始执行,以此类推。可以想到的是,通过状态位来表示线程执行的条件,多个线程自旋.

2021-04-11 23:05:16 160

原创 看山聊并发:synchronized 锁同步

你好,我是看山。synchronized 是 java 内置的同步锁实现,一个关键字实现对共享资源的锁定。synchronized 有 3 种使用场景,场景不同,加锁对象也不同:普通方法:锁对象是当前实例对象静态方法:锁对象是类的 Class 对象方法块:锁对象是 synchronized 括号中的对象synchronized 实现原理synchronized 是通过进入和退出 Monitor 对象实现锁机制,代码块通过一对 monitorenter/monitorexit 指令实现。在编

2021-03-28 20:18:28 150

原创 Docker 教程(三):Docker 命令

你好,我是看山。本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《Docker 教程》 中的第三篇。我们通过 Docker 命令与操作 Docker 服务,可以构建 Docker 镜像、运行 Docker 容器、将 Docker 镜像推送到远程等。本文主要介绍一些常用的 Docker 命令。Docker 有很多命令,本文不会介绍所有的命令,如果需要完整的命令教程,可以参考 Docker command line reference。请注意,根据在 Linux 系统上安装.

2021-03-21 14:19:09 142

原创 Docker 教程(二):Dockerfile

你好,我是看山。本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《Docker 教程》 中的第二篇。Dockerfile包含一组关于如何构建Docker镜像的说明,通过docker build命令执行Dockerfile文件,可以构建一个Docker镜像,本文介绍了如何编写Dockerfile文件以及构建一个Docker镜像。Dockerfile的好处Dockerfile文件以书面形式说明了如何构建一个Docker镜像,Docker镜像通常包含如下内容:首先需要一个.

2021-03-14 23:10:24 145

原创 Docker 教程(一):Docker 是什么

本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《Docker 教程》 中的第一篇,本文大概介绍了 Docker 是什么和有什么用。可能在工作中,会有专业运维同学管理服务器镜像或其他内容,但是如果不了解这些概念,很多时候我们不会全面了解到系统的全貌。Docker 是一种将应用程序和服务器配置打包成 Docker 镜像的方法,使用了一种称为 Dockerfile 的简单打包规范。Docker 镜像可以启动多个多个实例,这些运行的实例被称为 Docker 容器。这个系列的内容主要..

2021-03-07 20:50:00 112

原创 看山聊并发:Java 中 Vector 和 SynchronizedList 的区别

你好,我是看山。本文还是折腾 Java 中的队列,上次比较了 Vector、ArrayList、CopyOnWriteArrayList、SynchronizedList,当时感觉挺明白,后来想想又有些不理解的地方,所以今天在重新翻出来研究一下,我承认我钻了牛角尖了。Vector虽然种种问题,但是都属于设计上的问题,为什么不在后续版本中进行优化呢?HashMap就优化了好几次。而SynchronizedList这个内部类(也就是通过Collections.synchronizedList(new A.

2021-02-28 19:45:34 252 1

原创 软件架构-事件驱动架构

你好,我是看山。本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《软件架构》 中关于事件驱动的内容,虽然是 2014 年的文章,但是从软件架构层面上,并不过时。以下是正文。事件驱动架构是一种系统或组件之间通过发送事件和响应事件彼此交互的架构风格。当某个事件发生时,组件A不直接调用组件B,而只是发出一个事件。组件A不知道哪些组件监听并处理这些事件。事件驱动架构可以在进程内和进程间使用。比如,GUI框架中会大量使用事件驱动。【译者注:目前很多系统采用微服务架构,事件驱动使用的更.

2021-02-21 21:03:58 424 1

原创 看山聊并发:认识 Java 中的队列:Vector、ArrayList、CopyOnWriteArrayList、SynchronizedList

你好,我是看山。书接上文,上次聊了聊 在多线程中使用 ArrayList 会发生什么,这次我们说说平时常用的列表:Vector、ArrayList、CopyOnWriteArrayList、SynchronizedList。VectorVector是在 JDK 1.0 提供的,虽然没有被标记Deprecated,但是事实上已经没人使用了。主要原因是性能差,且不符合需求。从源码可以看出(这里不贴源码了),Vector是基于数组实现,几乎在所有操作方法上,都用synchronized关键字实现方法同.

2021-02-10 11:59:01 143

原创 看山聊并发:如果非要在多线程中使用ArrayList会发生什么?

你好,我是看山。我们都知道,Java中的ArrayList是非线程安全的,这个知识点太熟了,甚至面试的时候都很少问了。但是我们真的清楚原理吗?或者知道多线程情况下使用ArrayList会发生什么?前段时间,我们就踩坑了,而且直接踩了两个坑,今天就来扒一扒。翠花,上源码上代码之前先说下ArrayList的add逻辑:检查队列中数组是否还没有添加过元素如果是,设置当前需要长度为10,如果否,设置当前需要长度为当前队列长度+1判断需要长度是否大于数组大小如果是,需要扩容,将数组长度扩容1..

2021-02-04 23:19:10 507 5

原创 java import 导入包时,我们需要注意什么呢?

你好,我是看山。这篇文章起因是 code review 时和同事关于 import 导入声明的分歧。用过 IDEA 的都知道,默认情况下,通过 import 导入类时,当数量达到设置数量(类 5 个、静态变量 3 个),就会改为按需导入方式,也就是使用使用*号折叠导入。同事建议不要采用按需导入,要使用单类型导入 (single-type-import)。而我是觉得既然 IDEA 作为宇宙级的 IDE,不会在这种地方出现纰漏,所以想继续按照 IDEA 默认配置来。所以总结一下这两种方式的差异。如果对.

2021-01-31 23:50:45 796 5

JSch - Java实现的SFTP(文件下载详解篇)

浏览博客时看到的关于JSCH工具实现文件下载的功能,讲解很详细,文档中也包含了原文章的路径。

2013-08-10

Java反射动态加载实例类

Java反射动态加载实例类,动态加载实例类,帮助理解反射

2010-06-28

JSch - Java实现的SFTP(文件上传详解篇)

浏览博客时看到的关于JSCH工具实现文件上传的功能,讲解很详细,文档中也包含了原文章的路径。

2013-08-10

tuxedo详细安装步骤

关于Tuxedo的安装步骤,有过程有实例。

2013-08-10

hadoop 2.4.1 64位native库

用于替换32位的Hadoop2.4.1中的native库,是Hadoop可以运行在64位操作系统上。

2014-10-14

Java反射简单小实例

Java反射实例,可以给初学反射的同志们一定帮助。一个简单实例,可以更好的理解反射的规矩。

2010-06-28

设计模式(Java版)

Java版设计模式,提供经典实例,可为初学者提供一定帮助。

2010-06-28

GTK+2.0(中文教程)

GTK+ 2.0 教程 译者: huzheng,konghui,ferry,carton,yang_yi,ddd,tingle 版本号: V_0.1.0 2002年 6 月25 日 本文是有关通过 C 语言接口使用 GTK (the GIMP Toolkit) 的教程。

2011-04-09

Think in C++

英文版Think in C++,是对C语言的一些介绍和帮助提高。英文版,不但可以学习C语言,而且同时可以学一些专业英语。

2010-05-31

job脚本创建程序

定时执行脚本

2016-07-08

Linux常用命令合集

Linux常用命令合集 内含例子 文件管理 文件传输 文档编辑 系统管理 系统设置 网络通讯 磁盘管理 磁盘维护 备份压缩 设备管理

2011-04-09

汇编语言-教程

汇编语言教程,内容还算是比较浅显易懂,适合于初学者。

2013-08-10

UML & Rose教程.pdf

讲解统一建模语言UML与Rational Rose的协作。

2014-06-14

看山的留言板

发表于 2020-01-02 最后回复 2020-01-02

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

TA关注的人 TA的粉丝

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