Linux 实用命令汇总 查找某个目录下最大的10个文件find . -type f -print0 | xargs -0 du -h | sort -rh | head -n 10注:-print0的目的是为了避免查找的文件中文件名包含空格会引起后续的xargs命令出现问题。-print0和xargs后面的-0是对应的。...
合并两个有序数组 题目链接:https://leetcode-cn.com/problems/merge-sorted-array/###题目描述给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m +...
maven dependencyManagement的作用 从Maven的继承开始说起:假设有两个子模块sub-1和sub-2,其pom文件分别如下所示:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.or...
Tomcat7.0源码分析——国际化 本文主要介绍一下Tomcat国际化相关的内容,用“国际化”这么高大上的名称我心里还是很忐忑的,如果对“国际化”理解有误还望各位看官指正。简单并狭隘一点地说:本文要讨论的所谓国际化就是Tomcat在它的整个生命周期中所输出的各种字符串能够根据不同的语言环境而输出不同的内容。我们先来直观的感受一下,Tomcat的国际化想要达到的效果是什么样的。我们在启动Tomcat的时候控制台一般会输出一大堆的英文...
Java Logging之JUL系列——Logger Hierarchy 本文介绍JUL中日志记录器Logger的层级结构,JUL中Logger是按照树状结构进行组织的,日志记录器之间的父子关系是根据点号(.)进行区分的,比如有两个日志记录器,名字分别是cn.codecrazy和cn.codecrazy.logging,那么前者就是后者的父日志记录器。通过后者的getParent()得到的Logger就是名字为cn.codecrazy的Logger。根日志记录器(Ro...
Java Logging之JUL系列——Handler 前面的文章我们提到过,Handler是真正执行日志输出操作的地方,JUL中的Handler由java.util.logging.Handler抽象类来表示。有两个实现类直接继承自Handler,分别是StreamHandler和MemoryHandler,而StreamHandler又有三个直接子类分别是ConsoleHandler,FileHandler以及SocketHandler。Hand...
Java Logging之JUL系列——LogRecord 上文提到过,LogRecord可以理解为是一个DTO,那么LogRecord里面到底存储了哪些数据呢?我们可以看一下LogRecord类中含有哪些get/set方法,get方法如下所示:Level getLevel()String getLoggerName()String getMessage()long getMillis()Object[] ...
Java Logging之JUL系列——Filter 本文介绍日志过滤器(Filter),顾名思义,Filter就是用来对输出的日志信息进行过滤作用的,我们可以根据很多维度来对日志信息进行过滤,比如只输出message中包含某段文本信息的日志,或者只输出某个方法中记录的日志等等。具体能根据哪些维度来过滤我们后面介绍LogRecord的时候再回顾一下。本文我只举两个例子,一个是根据具体文本信息进行过滤,另一个是根据方法名来过滤。先简单地说一下java...
Java Logging之JUL系列——Log Levels JDK自带的日志组件在java.util.logging包中,该组件将日志级别分为如下九种,级别从上到下依次降低,每种级别都对应一个整数值,如下所示:OFF(Integer.MAX_VALUE)SEVERE(1000)WARNING(900)INFO(800)CONFIG(700)FINE(500)FINER(400)FINEST(300)ALL(Integer.MIN_VAL...
Kafka-生产者-分区器详解 注:本文源码解析基于Kafka2.1.0版本我们知道,Kafka中的每个Topic一般会分配N个Partition,那么生产者(Producer)在将消息记录(ProducerRecord)发送到某个Topic对应的Partition时采用何种策略呢?Kafka中采用了分区器(Partitioner)来为我们进行分区路由的操作。本文将详细讨论Kafka给我们提供的分区器实现DefaultPa...
Java重复类问题探究 集成开发环境(IDE)是一把双刃剑,为我们提供莫大便利的同时也隐藏了很多的问题。一旦出现问题,如果不了解内部的一些机制会让我们手足无措。本文抛开IDE,用最原始的方式还原重复类引发的一个问题,希望能给大家一点启发。重复类的定义重复类可能引起的问题重复类举例重复类报错原因分析重复类的定义重复类是指程序中存在两个或者多个包名以及类名都一致的类。如果只是类...
Java注解浅析 注解(Annotation)是JDK1.5引入的机制,我们平时经常会遇到一些注解,比如@Override,@Test等,也知道这些注解是在哪些情况下使用的,但是却很少去关注注解这一机制本身,比如注解是如何定义的,注解的实现机制是什么样的等等。本文将介绍注解的一些相关概念,并在文章最后实现一个自定义注解来强化我们对注解这一机制的认识。常见注解举例如何定义一个注解元注解Tar...
git备忘录 1、拉取远程的某个分支到本地git fetch origin remote_branchname:local_branchname若local_branchname不存在,则创建该本地分支
Tomcat如何配置Https访问方式 前提条件:已经下载并安装配置好Tomcat,访问http://localhost:8080的时候会出现tomcat的界面。第一步:配置hosts文件添加一行127.0.0.1 codecrazy.cn。这一步不是必要的,只是为了访问的时候效果更好(逼格更高)一点。此时就可以通过http://codecrazy.cn:8080进行访问了。第二步:生成证书这里采用JDK自带的keytool工具来生成
Guava Cache 本地缓存组件浅析 cache组件中核心的类和接口列举如下: 接口:Cache 本地缓存的顶级接口,提供一些对缓存进行get,put的方法,以及获取缓存统计数据的方法等。LoadingCache 继承了Cache接口,并另外提供了一些当get数据不存在时自动去load相关key(s)所对应的value(s)的契约(即接口中的抽象方法),具体实现见LoadingCache的具体实现类。RemovalListene
从Tomcat中学习责任链模式 通过对Tomcat8.5.5版本的源码进行学习,发现Tomcat中有2个地方用到了责任链模式,一个是管道中的阀门,另一个是过滤器链中的过滤器。下面我们分别来看一下这两个责任链模式具体是如何使用的。首先分析过滤器链中的过滤器: 注:以下示例代码摘自Tomcat8.5.5的源码并对其进行了简化,保留核心部分。Filter接口如下所示:public interface Filter { pu
Linux 下指定默认的java版本 查看java版本信息可以使用 java -version,如果系统中安装了多个java版本,想切换java版本,可以使用update-alternatives命令,该命令的作用是通过维持符号链接来决定默认执行的命令,说白了就是用来设置默认打开程序。比如系统中装了好几个编辑器,双击某个文件的时候默认该用哪个编辑器来打开呢,差不多就这个意思。类似的,系统中如果装了多个版本的java,那我们输入java命
设计模式之工厂方法 四种角色:抽象工厂,具体工厂,抽象产品,具体产品,具体工厂和具体产品之间是一对一的关系 抽象工厂一般由抽象类或者接口实现:public interface Factory { Car create();}具体工厂是具体的类,实现了抽象工厂中的方法,两个具体工厂如下所示:public class BenzFactory implements Factory { public Car
字符串全组合与全排列 public class Main { public static void main(String[] args) { combination("abc"); permutation("abc".toCharArray(), 0, "abc".length()-1); } public static void combination(Strin