自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Just Do IT

志存高远,脚踏实地。

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

原创 Linux 实用命令汇总

查找某个目录下最大的10个文件find . -type f -print0 | xargs -0 du -h | sort -rh | head -n 10注:-print0的目的是为了避免查找的文件中文件名包含空格会引起后续的xargs命令出现问题。-print0和xargs后面的-0是对应的。...

2019-12-04 16:17:52 266

原创 合并两个有序数组

题目链接:https://leetcode-cn.com/problems/merge-sorted-array/###题目描述给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m +...

2019-11-14 10:15:56 301

原创 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...

2019-11-14 10:13:28 308

原创 Tomcat7.0源码分析——国际化

本文主要介绍一下Tomcat国际化相关的内容,用“国际化”这么高大上的名称我心里还是很忐忑的,如果对“国际化”理解有误还望各位看官指正。简单并狭隘一点地说:本文要讨论的所谓国际化就是Tomcat在它的整个生命周期中所输出的各种字符串能够根据不同的语言环境而输出不同的内容。我们先来直观的感受一下,Tomcat的国际化想要达到的效果是什么样的。我们在启动Tomcat的时候控制台一般会输出一大堆的英文...

2019-11-14 10:12:00 299

原创 Java Logging之JUL系列——Logger Hierarchy

本文介绍JUL中日志记录器Logger的层级结构,JUL中Logger是按照树状结构进行组织的,日志记录器之间的父子关系是根据点号(.)进行区分的,比如有两个日志记录器,名字分别是cn.codecrazy和cn.codecrazy.logging,那么前者就是后者的父日志记录器。通过后者的getParent()得到的Logger就是名字为cn.codecrazy的Logger。根日志记录器(Ro...

2019-11-14 10:10:50 7235

原创 Java Logging之JUL系列——Handler

前面的文章我们提到过,Handler是真正执行日志输出操作的地方,JUL中的Handler由java.util.logging.Handler抽象类来表示。有两个实现类直接继承自Handler,分别是StreamHandler和MemoryHandler,而StreamHandler又有三个直接子类分别是ConsoleHandler,FileHandler以及SocketHandler。Hand...

2019-11-14 10:09:31 5825 1

原创 Java Logging之JUL系列——LogRecord

上文提到过,LogRecord可以理解为是一个DTO,那么LogRecord里面到底存储了哪些数据呢?我们可以看一下LogRecord类中含有哪些get/set方法,get方法如下所示:Level getLevel()String getLoggerName()String getMessage()long getMillis()Object[]&nbsp...

2019-11-14 10:08:06 4767

原创 Java Logging之JUL系列——Filter

本文介绍日志过滤器(Filter),顾名思义,Filter就是用来对输出的日志信息进行过滤作用的,我们可以根据很多维度来对日志信息进行过滤,比如只输出message中包含某段文本信息的日志,或者只输出某个方法中记录的日志等等。具体能根据哪些维度来过滤我们后面介绍LogRecord的时候再回顾一下。本文我只举两个例子,一个是根据具体文本信息进行过滤,另一个是根据方法名来过滤。先简单地说一下java...

2019-11-14 10:05:41 9046

原创 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...

2019-11-14 10:03:59 4627

原创 Kafka-生产者-分区器详解

注:本文源码解析基于Kafka2.1.0版本我们知道,Kafka中的每个Topic一般会分配N个Partition,那么生产者(Producer)在将消息记录(ProducerRecord)发送到某个Topic对应的Partition时采用何种策略呢?Kafka中采用了分区器(Partitioner)来为我们进行分区路由的操作。本文将详细讨论Kafka给我们提供的分区器实现DefaultPa...

2018-11-26 14:37:20 3653 3

原创 Java重复类问题探究

集成开发环境(IDE)是一把双刃剑,为我们提供莫大便利的同时也隐藏了很多的问题。一旦出现问题,如果不了解内部的一些机制会让我们手足无措。本文抛开IDE,用最原始的方式还原重复类引发的一个问题,希望能给大家一点启发。重复类的定义重复类可能引起的问题重复类举例重复类报错原因分析重复类的定义重复类是指程序中存在两个或者多个包名以及类名都一致的类。如果只是类...

2018-09-01 23:58:37 17333 1

原创 Java注解浅析

注解(Annotation)是JDK1.5引入的机制,我们平时经常会遇到一些注解,比如@Override,@Test等,也知道这些注解是在哪些情况下使用的,但是却很少去关注注解这一机制本身,比如注解是如何定义的,注解的实现机制是什么样的等等。本文将介绍注解的一些相关概念,并在文章最后实现一个自定义注解来强化我们对注解这一机制的认识。常见注解举例如何定义一个注解元注解Tar...

2018-08-31 10:58:20 205

原创 git备忘录

1、拉取远程的某个分支到本地git fetch origin remote_branchname:local_branchname若local_branchname不存在,则创建该本地分支

2017-06-30 13:43:05 394

原创 Tomcat如何配置Https访问方式

前提条件:已经下载并安装配置好Tomcat,访问http://localhost:8080的时候会出现tomcat的界面。第一步:配置hosts文件添加一行127.0.0.1 codecrazy.cn。这一步不是必要的,只是为了访问的时候效果更好(逼格更高)一点。此时就可以通过http://codecrazy.cn:8080进行访问了。第二步:生成证书这里采用JDK自带的keytool工具来生成

2017-05-16 19:14:58 13269 2

原创 Guava Cache 本地缓存组件浅析

cache组件中核心的类和接口列举如下: 接口:Cache 本地缓存的顶级接口,提供一些对缓存进行get,put的方法,以及获取缓存统计数据的方法等。LoadingCache 继承了Cache接口,并另外提供了一些当get数据不存在时自动去load相关key(s)所对应的value(s)的契约(即接口中的抽象方法),具体实现见LoadingCache的具体实现类。RemovalListene

2017-03-02 12:08:46 4732 1

原创 HBase单机模式下远程客户端访问无响应

HBase单机模式下远程客户端访问无响应,既不报错,也没有数据返回,就像程序卡死了一样。

2017-02-23 18:22:01 2649

原创 从Tomcat中学习责任链模式

通过对Tomcat8.5.5版本的源码进行学习,发现Tomcat中有2个地方用到了责任链模式,一个是管道中的阀门,另一个是过滤器链中的过滤器。下面我们分别来看一下这两个责任链模式具体是如何使用的。首先分析过滤器链中的过滤器: 注:以下示例代码摘自Tomcat8.5.5的源码并对其进行了简化,保留核心部分。Filter接口如下所示:public interface Filter { pu

2016-10-21 14:24:45 3921

原创 Linux 下指定默认的java版本

查看java版本信息可以使用 java -version,如果系统中安装了多个java版本,想切换java版本,可以使用update-alternatives命令,该命令的作用是通过维持符号链接来决定默认执行的命令,说白了就是用来设置默认打开程序。比如系统中装了好几个编辑器,双击某个文件的时候默认该用哪个编辑器来打开呢,差不多就这个意思。类似的,系统中如果装了多个版本的java,那我们输入java命

2016-09-24 21:41:36 2804

原创 设计模式之工厂方法

四种角色:抽象工厂,具体工厂,抽象产品,具体产品,具体工厂和具体产品之间是一对一的关系 抽象工厂一般由抽象类或者接口实现:public interface Factory { Car create();}具体工厂是具体的类,实现了抽象工厂中的方法,两个具体工厂如下所示:public class BenzFactory implements Factory { public Car

2016-09-10 13:40:04 360

原创 字符串全组合与全排列

public class Main { public static void main(String[] args) { combination("abc"); permutation("abc".toCharArray(), 0, "abc".length()-1); } public static void combination(Strin

2016-09-05 17:02:52 411

原创 finally块中包含return语句对返回值的影响

要想弄清楚这个问题,最好是从字节码指令的层次进行分析,我们以如下代码段进行举例:public int test() { int i=0; try { i = 1; return i; } finally { i = 2; return i;

2016-08-19 19:42:06 4907 1

原创 java线程同步举例

代码功能:子线程每次循环5次,主线程每次循环10次,子线程先执行,如此交替执行50次。 分析:子线程执行过程中不能被主线程打断,主线程执行过程中不能被子线程打断,因此需要进行互斥,需要交替执行,因此需要进行同步。互斥可以利用synchronized,同步可以采用wait和notify代码如下:public class SynchronousTest { public static v

2016-08-15 11:46:11 426

原创 非静态内部类和静态内部类的区别

public class OuterClass { private String outerName = "outerName"; private static String outerStaticName = "outerStaticName"; private void outerDisplay() { System.out.println(outerNam

2016-08-11 16:12:20 403

原创 HashMap如何根据Value排序?

去某公司面试时候的一道题目,卡在这个关键的地方,关键还是要熟悉集合的那些操作。public class Main { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("aaa", 4); map.put("

2016-07-15 11:36:59 1171

原创 https中的数字证书认证过程解析

RSA非对称加密的2个用途:加密(防窃听) RSA非对称加密会用到一对密钥,分别称为公钥和私钥,公钥加密之后的数据可以通过私钥来进行解密,私钥加密的数据也同样可以用对应的公钥进行解密。在web数据传输过程中,由于客户端和服务器端是多对一的关系,因此可以让所有的客户端持有相同的公钥,服务器持有私钥,这样一来就能方便地实现数据的加密传输。签名(防篡改) 由于私钥只在某一个体手中,因此可以通过这

2016-06-30 17:09:14 9091 5

原创 git push 避免输入用户名和密码的方法

第一步: 在HOME目录下(如:/home/user)创建文件 .git-credentials(注意文件名前面有一个点)第二步: 在该文件中添加如下信息:https://username:[email protected] 将上面的username和password替换为你github的用户名和密码第三步: 执行如下命令:git config --global credential.help

2016-06-29 20:48:21 718

原创 shell编程基础——分支结构

shell编程基础——分支结构基本语法1、if-then语句if commandthen commandsfi2、if-then-else语句if commandthen commandselse commandsfi3、嵌套if语句if commandthen commandselif command2then command

2016-06-23 20:59:35 647

原创 C++模板实现Stack

Stack.h文件如下所示:#pragma once#include#includetemplateclass Stack{private: T *elementData; int capacity; int top;public: Stack(int capacity); ~Stack(void); int Size(); bool IsEmpty(); vo

2016-06-21 10:50:28 562

原创 java RMI远程方法调用编程模型初探

RMI是实现分布式编程的方法之一,java RMI的实现比较复杂,涉及到Socket编程,序列化等等,但是我们用起来却相当简单。下面举一个简单的例子来阐述一下RMI编程的大体框架。大方向分为2个部分,客户端程序和服务器端程序,这二者之间的桥梁是公共的接口,接口定义了一系列服务,也就是一系列方法。如某个接口文件IHelloWorld.java内容如下:import java.rmi.Remo

2016-06-19 15:02:39 466

原创 C++带异常处理的CharStack

头文件:CharStack.h#pragma once#include#includeclass CharStack{private: char *elementData; int capacity; int top;public: CharStack(int capacity); ~CharStack(void); int Size(); bool IsEmpty(

2016-06-18 14:47:52 647

原创 通过域名查询IP的4种方法

1、dig +short blog.csdn.net2、host blog.csdn.net3、nslookup blog.csdn.net

2016-06-16 12:29:13 6113

原创 linux命令行发送带附件的邮件

mutt -a /home/abinge/me.jpg -s "【伯乐在线-面向对象】" -- [email protected] 采用mutt进行邮件发送,-a后面指定的是附件 -s后面指定的是主题--后面跟要发送的邮箱,注意--后面有一个空格最后的 安装muttysudo yum install mutt -y安装完成后配置文件默认在:/etc/Mutt

2016-06-06 17:44:59 1347

原创 8086CPU下使用DS寄存器的注意事项

不能直接用数值改变DS寄存器中的内容,如:mov ds, 1000,而需要进行一次中转,比如可以用mov ax, 1000mov ds, ax也可以用某个内存地址中的数据来修改DS寄存器的值,比如:mov ds, [0]还需要注意的是:mov ds, ax 没有问题,但是add ds, ax或者sub ds, ax都会报错同样的mov ax, ds 没有问题,但

2016-06-04 21:20:46 1973

原创 AL寄存器中产生的进位不会存储在AH中

在8086CPU中存在4个通用寄存器,AX,BX,CX,DX,每个寄存器可以存储16bit的二进制数,为了兼容8bit的寄存器,因此AX,BX,CX,DX都可以作为2个独立的8bit寄存器来使用,如下所示:AX可分为AH和ALBX可分为BH和BLCX可分为CH和CLDX可分为DH和DL‘H’代表高8位,‘L’代表低8位而对于如下汇编指令mov ax, 00C5Hadd ax

2016-06-04 17:12:08 4158

原创 C语言实现面向对象风格带迭代器的双向链表

首先看main函数中双向链表的用法:#include #include #include "dlist.h"int main(void) { LinkedList* list = newLinkedList(); list->addLast(list, 10)->addLast(list, 20)->addLast(list, 30)->addLast(list, 40)->ad

2016-05-26 20:24:55 1439

原创 Eclipse新建C project不会自动生成Includes文件夹的解决办法

Window->Preferences->C/C++->Build->Environment点击右边的添加,环境变量的Name处输入"C_INCLUDE_PATH",Value处输入"/usr/include"

2016-05-24 21:14:25 3122 1

原创 大数乘法

#include#includeusing namespace std;string multiply(string a, string b);void add(char * a, char *b); //将b加到a上面。前提条件:a和b的长度一样长,并且最高位不会产生进位void reverse(char* a);void clear(char *a, int len);//将数据

2016-05-23 18:26:38 370

原创 Linux命令统计源码行数

统计src目录下所有.c文件的行数:find src/ -name "*.c" | xargs cat | wc -l

2016-05-20 15:24:59 1131

原创 java泛型实现链式栈

public class LinkedStack { private Node top; public LinkedStack() { this.top = new Node(); } public void push(T element) { top = new Node(element, top); } public T pop() { T result =

2016-05-19 21:48:51 1672

原创 自定义类如何重写hashCode方法

要重写自己的hashCode方法并没有什么绝对正确的答案,但是我们的目标是:不相等的对象尽可能有不同的hashCode,而且必须满足的一个通用约定是:相等的对象应该具有相同的hashCode。下面介绍一种hashCode的实现方式,这种实现方式对一般的程序来说足够了,至于如何实现更完美的hashCode方法就留给数学家或者理论家去讨论吧。第一步:定义一个初始值,一般来说取17int res...

2016-05-17 17:23:50 8160 1

空空如也

空空如也

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

TA关注的人

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