04 2020 档案
摘要:https://segmentfault.com/a/1190000011282426
阅读全文
摘要:策略模式:在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。 也就是说,定义一个接口,实现该接口表示为多种策略,定义一个Context对象,Context对象会跟着策略对象的改变而改变。 1 public
阅读全文
摘要:BIO同步阻塞IO,NIO同步非阻塞IO,BIO异步非阻塞IO; 传统IO和新IO都是用于输入/输出,传统的IO存在没有读到有效数据,程序将会在此处阻塞线程的执行。新IO(NIO)采用文件映射的方式来处理IO,将文件或者文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件了。通过这种方式就
阅读全文
摘要:浅拷贝(浅复制、浅克隆):被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。 深拷贝(深复制、深克隆):被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。 那些引用其他对象
阅读全文
摘要:单例模式顾名思义也就是只有一个实例,并且它自己负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 下面介绍下单例模式的几种实现方式: 1.懒汉式 懒汉式顾名思义就是这种实例化方式比较“懒”,只有在需要的时候才去创建实例对象。用的时候才去检查有没有实例,
阅读全文
摘要:1.RPC框架有哪些?RPC重试机制如何保证幂等性? 2.手写单例模式 3.Collection接口的实现类有哪些?简述其实现的原理。 4.常见的设计模式包括哪些? 5.Mysql如何优化? 6.SQL如何优化? https://www.jianshu.com/p/ca98ca34b47e
阅读全文
摘要:Guava Cache源码简析 缓存的使用场景:在计算或者检索一个值得代价很高,并对同样的输入需要不止一次获取对应值得时候,就可以考虑缓存。 创建Cache缓存对象LoadingCache: 1 private LoadingCache<Integer, AtomicLong> loadingCac
阅读全文
摘要:https://www.cnblogs.com/aspirant/p/11628654.html
阅读全文
摘要:1.链表反向打印 1 public static void printNode(ListNode pHead){ 2 /* 3 采用栈来从尾到头打印链表 4 Stack<Integer> stack=new Stack<>(); 5 while (pHead !=null){ 6 stack.pus
阅读全文
摘要:快排序:平均时间复杂度为o(nlogn) 其主要思想就是 1.先从数列中取出一个数作为基准数。 2.将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.左右区间重复第二步,直到各区间只有一个数。 1 public void quickSort(int[] arr, int x, i
阅读全文
摘要:1.算法JAVA实现:输入一个字符串,输出该字符串中的连续相同最长的子字符串,如果有多个长度相同的子串,则输出ascii码最小的那个。 测试用例: 例如输入aaaaavvvvvvvvvcccc 输出:vvvvvvvvv; 输入asdczxcweqwe,输出a; 1 import java.util.
阅读全文
摘要:华为笔试题:https://blog.csdn.net/weixin_39029194/article/details/103540031 https://www.nowcoder.com/discuss/361649?type=post&order=time&pos=&page=2&channel
阅读全文
摘要:介绍:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库
阅读全文
摘要:参考:http://www.blogjava.net/zjusuyong/articles/304788.html 1.Cookie和Session Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力。 Session可以用
阅读全文
摘要:ListenableFuture是可以监听的Future,它是对Java原生的Future进行了拓展和增强。在java中Future表示一个多线程异步执行的任务,当任务执行完成之后可以得到一个计算结果。如果我们希望一旦计算完成之后就可以拿到结果返回或者将结果做另外的计算操作,就必须使用线程去不断查询
阅读全文
摘要:1.equal()方法 Objects.equal方法可以避免jdk的equal()方法的对象为null时抛出空指针。 1 Objects.equal("a", "a"); // returns true 2 Objects.equal(null, "a"); // returns false 3
阅读全文
摘要:Guava在Preconditions类中提供若干前置条件判断。 常用方法列表: 方法声明(不包括额外参数) 描述 检查失败时抛出的异常 checkArgument(boolean) 检查boolean是否为true,用来检查传递给方法的参数。 IllegalArgumentException ch
阅读全文
摘要:1.ls命令 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)和查看目录信息等等。 常用参数 ls -a 列出目录所有文件,包含以.开始的隐藏文件 ls -A 列出除.及..的其它文件 ls -r 反序排列 ls -t 以文件修改时间排序 ls
阅读全文
摘要:树的遍历 二叉树按层遍历 1 public class BinaryTree { 2 3 private int data; 4 5 private BinaryTree left; 6 7 private BinaryTree right; 8 9 public BinaryTree() { 10
阅读全文
摘要:使用 synchronized 来做同步处理时,锁的获取和释放都是隐式的,实现的原理是通过编译后加上不同的机器指令来实现。 而 ReentrantLock 就是一个普通的类,它是基于 AQS(AbstractQueuedSynchronizer)来实现的。 是一个重入锁:一个线程获得了锁之后仍然可以
阅读全文
摘要:前言 对于以下两种场景: 1.子线程执行完毕之后,通知主线程处理某些逻辑的场景。 2.线程A执行某个操作之后通知线程B执行某些操作。 这两种场景涉及到线程间通信,可以通过以下几种方式来实现。 1)等待通知机制 两个线程通过对同一对象调用等待 wait() 和通知 notify() 方法来进行通讯。
阅读全文
摘要:本文目录: 一、基本概念 二、volatile的基本原理 一、基本概念 volatile是一个类型修饰符。当一个变量定义为volatile之后,将具备两种特性: 1.保证此变量对所有的线程的可见性,这里的“可见性”。可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。当一个线程修改
阅读全文
摘要:一、MySQL基础 1、数据库(database): 保存有组织的数据的容器(通常是一个文件或一组文件)。 2、表(table) :某种特定类型数据的结构化清单。 3、列(column):表中的一个字段。所有表都是由一个或多个列组成的。 4、行(row) 表中的一个记录。 5、主键(primary
阅读全文
摘要:http://dubbo.apache.org/zh-cn/docs/dev/implementation.html https://www.cnblogs.com/tiancai/p/9573912.html 1.背景 在互联网的发展过程中,在以前,我们只需要一个服务器,将程序全部打包好就可以,但
阅读全文
摘要:进程vs线程: 进程:每个程序被运行加载到内存之后,都会被操作系统作为一个进程,进程是处于运行过程中的程序,是具有独立功能,被操作系统进行资源分配和调度的独立单元。 线程:一个进程里面可以拥有多个线程,线程拥有自己的堆栈,程序计数器和自己的局部变量,但是不拥有系统资源,多个线程共享进程的系统资源。
阅读全文
摘要:Lambda表达式 Predicate操作 Predicate<T>接口 返回一个boolean类型的结果。 Java8为Collection集合新增一个removeIf(Predicate filter)方法,该方法将会批量删除符合filter条件的元素。该方法需要Predicate对象作为参数,
阅读全文
摘要:Java集合类 Java集合大致分为Set,List,Queue和Map四类。Set代表无顺、不可重复的结合;List代表有序、重复的集合;而Map 代表ket-value具有映射关系的集合,Queue代表一种队列集合的实现。 Java集合类:java.util.*包 Java的集合类主要是由两个接
阅读全文
摘要:泛型 泛型:在定义类,接口,方法时使用类型形参,这个类型形参将在声明变量、创建对象、调用方法时动态地指定(即传入实际的类型参数,也可以称为类型实参)。 在定义的接口,类中声明形参,类型形参在整个接口,类里可当成类型使用。 List<String> l1 = new ArrayList<>(); Li
阅读全文