自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Calcifer的博客

Java, Android, iOS, RecSys

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

原创 【Redis】(3) 管理

文章目录1. Redis-cli1.1 命令行模式1.1.1 直接使用命令行执行redis命令1.1.2 指定主机、端口、密码、数据库1.1.3 SSL/TLS支持1.1.4 从其他程序获取输入1.1.5 连续运行相同的命令1.1.6 CSV输出1.2 交互模式1.2.1 登录后连接其他实例1.2.2 断开重连1.3 特殊的操作模式1.3.1 监控状态1.3.2 扫描大键1.3.3 监控命令1.3.4 监控延迟1.3.5 RDB远程备份1.3.6 LRU模拟测试2. Redis配置 1. Redis-cli

2020-06-30 18:03:11 178

原创 【Redis】(2)功能特性

文章目录1. Pipelining 流水线1.1 使用流水线的好处1.2 性能1.3 使用2. 消息发布订阅模型2.1 基本定义2.2 相关命令2.3 使用3. 1. Pipelining 流水线 1.1 使用流水线的好处 由于RedisServer是基于TCP协议、Server/Client模型的服务器,在建立TCP连接时会有往返时间(RTT, Round Trip Time)的开销,如果有大批量的命令需要执行,这些RTT将带来大量的时间成本。 因此,可以将批量的命令包装成1个请求,发送给Redis服务

2020-06-28 16:10:08 761

原创 【Spring Framework】(4)Spring表达式(SpEL)

文章目录

2020-06-25 13:28:36 148

原创 【Spring Framework】(3)校验、数据绑定、类型转换

文章目录1.校验对象1. 1 概览1.2 Validator接口1.3 Errors接口1.4 ValidationUtils1.5 DataBinder1.6 BindingResult2. BeanWrapper2.1 概念2.2 PropertyEditor3. 配置全局的日期和时间格式 1.校验对象 1. 1 概览 如果有一个Person对象,我们需要校验age>0 class Person{ public int age; } 定义Validator class PersonVa

2020-06-24 19:43:36 395

原创 【Spring Framework】(2)Resource

文章目录1. Resource接口2. 六种Resource实现3. ResourceLoader 1. Resource接口 Spring定义了Resource接口来抽象对低层次的数据的访问。 主要有下面的一些方法 boolean exists(); boolean isOpen(); URL getURL() throws IOException; File getFile() throws IOException; Resource createRelative(String relati

2020-06-24 16:48:15 145

原创 【Spring Framework】(1)控制反转与依赖注入

文章目录基本问题控制反转与依赖注入思想Spring的IoC容器1. IoC容器和Bean概述2. 装配Bean2.1 自动装配 基本问题 class A{} class B{ B(){this.a = new A(...)}//紧耦合 } class C{ C(A a){this.a = a}//松耦合 } 依赖:如果B类需要使用到A类,那么类B就依赖于A。上面例子中,B依赖于A,C依赖于A。 耦合:存在依赖,就存在耦合。 – 上面例子中,A与B存在耦合,A与C存在耦合。 – 但耦合是有松紧的,

2020-06-22 15:54:02 165

原创 【面向对象】(4)6个设计原则

文章目录单一责任原则(The Single Responsibility Principle,SRP)开放封闭原则(The Open Closed Principle,OCP)里氏替换原则(The Liskov Substitution Principle,LSP)接口隔离原则(The Interface Segregation Principle,ISP)依赖倒置原则(The Dependency Inversion Principle,DIP)迪米特法则 单一责任原则(The Single Respon

2020-06-22 13:45:46 150

转载 【面向对象】(3) UML

文章目录类图1. 泛化关系(extends)2. 实现关系(implements)3. 聚合关系4. 组合关系5. 关联关系6. 依赖关系 类图 1. 泛化关系(extends) 2. 实现关系(implements) 3. 聚合关系 表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。 4. 组合关系 和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存 在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。 5. 关

2020-06-22 13:18:08 183

原创 【面向对象】(2) 三大特性

文章目录封装继承多态 封装 封装将复杂模块或系统的逻辑实现细节隐藏,让使用者只需要关心这个模块或系统怎么使用,而不用关心这个模块或系统是怎么实现的。 封装后需要明确允许外部使用的接口(public/protected的成员变量和方法) 大型软件包括很多封装好的模块,模块之间通过接口互相调用,易于测试、维护、降低耦合。 继承 继承实现IS-A关系,如果多个类有共同的成员变量和方法,那么可以提取出来放入父类中。 实现了多态以及代码的重用,解决了系统的重用性和扩展性。 思考:应该使用组合还是继承? 组合实

2020-06-22 13:01:08 124

原创 【JVM】(4)性能监控、调优

文章目录

2020-06-21 22:09:31 85

原创 【JVM】(3)类文件结构与加载机制

文章目录

2020-06-19 22:11:21 109

原创 【JVM】(2)垃圾收集

文章目录

2020-06-19 22:09:45 492

原创 【JVM】(1)Java内存区域

文章目录内存区域划分1.Java8 之前2.Java8及之后各块区域解释1. 程序计数器2. `Java虚拟机栈`3. 本地方法栈4. `堆`5. 方法区6. 运行时常量池7. 直接内存例子StackOverflowOutOfMemory 内存区域划分 1.Java8 之前 2.Java8及之后 各块区域解释 1. 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 字节码解释器工作时就是通过改变这个计数

2020-06-19 22:06:16 287

原创 【Java并发】(4)JUC框架

文章目录ReentrantLock1. ReentrantLock使用2. ReentrantLock和synchronized对比 ReentrantLock 1. ReentrantLock使用 获取锁lock()/释放锁unlock() 三个线程依次获取锁/释放锁 public class TestReentrantLock { static ReentrantLock lock = new ReentrantLock(); static void f(){ l

2020-06-15 22:24:39 275

原创 【Java并发】(3)线程安全

文章目录Java内存模型 参考 《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》 《Java并发编程的艺术》 CyC2018/CS-Notes Java内存模型 Java 内存模型(Java Memoty Model,JMM)可以屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果,从而使Java的并发编程达到跨平台的效果。如果使用C语言等直接对操作系统的内存模型进行操作,可能需要编写不同的代码。 Java线程之间的数据通信需要依靠 .

2020-06-13 17:34:02 259

原创 【Java并发】(2)使用线程和线程池

文章目录创建线程1. 实现Runnable接口2. 实现Callable接口3. 继承Thread类`继承Thread类和实现Runnable接口哪个更好?`Thread类解析1. 线程优先级2. Daemon(守护)线程3. sleep方法4. yield方法5. start和run方法6. interrupted和interrupt方法7. 安全的终止线程8.join方法9.其他属性和方法线程池1.好处2.ThreadPoolExecutor 创建线程 1. 实现Runnable接口 public cl

2020-06-11 10:32:46 501

原创 【Java并发】(1)多线程基础

文章目录1. 进程与线程2.多线程的优点和挑战3. Java线程的生命周期(状态) 1. 进程与线程 进程定义:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位。 线程定义:现代操作系统调度的最小单元是线程,也叫轻量级进程,在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。 Java进程与线程的关系? 在Java中,当我们启动main函数时,就启动了一个JVM的进程,其中包括几个同时运行的线程,main函数的执行位于其中一个线程中。 多

2020-06-10 16:07:55 120

原创 【Java容器】(7)HashSet、LinkedHashSet、TreeSet

文章目录HashSetLinkedHashSetTreeSet HashSet HashSet内部通过HashMap实现的,HashSet中的每个元素都被包装成键值对插入在HashMap中,全部元素共同使用一个static的Object类型变量PRESENT最为值,这样可以节约空间,因为我们只关注key。 HashSet非线程安全,如果需要线程安全,可以使用CopyOnWriteArraySet、Collections.synchronizedSet(set)、ConcurrentSkipListSet、

2020-06-09 19:21:33 107

原创 【Java容器】(6)TreeMap、LinkedHashMap、Hashtable、WeakHashMap

文章目录TreeMapLinkedHashMapHashtableWeakHashMap TreeMap 底层实现是红黑树 Put方法的实现: (a) 如果TreeMap是空的,直接插入为根节点 (b) 否则就要确定插入位置。如果指定了Comparetor,那么直接使用Comparetor来决定插入位置,如果没指定比较器,则会认为Key实现了Comparable接口,直接调用Key的CompareTo方法,如果Key没有实现Comparable,那么会抛出ClassCastException异常。 (c)

2020-06-09 19:12:15 111

原创 【Java容器】(5)HashMap

文章目录基础Java8之前的HashMap1.底层实现2.成员变量和常量3.put(K,V)方法4.get(K)方法5.性能分析Java8的HashMap1.底层实现2.hash(key)方法3.putVal()方法4.resize方法 基础 HashMap中对相同对象的判定:当且仅当hashCode一致,并且equals一致的对象,才会被HashMap认定为同一个对象。 Hash冲突: 哈希是通过对数据进行再压缩,提高效率的一种解决方法。但由于通过哈希函数产生的哈希值是有限的,而数据可能比较多,导致经

2020-06-08 23:01:51 155

原创 【Java容器】(4)Queue和PriorityQueue

//todo:先看map相关的再来更新这里

2020-06-08 16:23:21 112

原创 【Java容器】(3)Vector和Stack

文章目录VectorStack注意事项 Vector Vector是线程安全的 Vector每次扩容为之前的2倍 Stack Stack继承自Vector Stack提供了表达栈含义的一些方法(push、pop、peek、empty、search),但用户如果想访问非栈顶元素,也是可以通过索引访问到的。 注意事项 Stack和Vector使用了大量的synchronized关键字来实现线程安全,效率较低,因此这两个类可以被看作过时的容器。 ...

2020-06-08 16:12:44 89

原创 【Java容器】(2)LinkedList

文章目录特点成员变量和常量方法 特点 顺序访问,访问节点需要O(n)的时间 写快读慢,插入/删除只需要O(1)的时间 实现了Deque双向队列接口,因此LinkedList是一个双向链表 使用Iterator比index更快 非线程安全 成员变量和常量 transient int size 使用一个变量,记录链表的大小,提高效率 transient Node<E> first 头结点 transient Node<E> last 尾结点 方法 访问getFirst/getL

2020-06-08 16:03:45 91

原创 【面向对象】(1) Java23种设计模式总结

文章目录创建型1.单例(Singleton)简单工厂(Simple Factory)2.工厂方法(工厂模式)3.抽象工厂(Abstract Factory)4.生成器(Builder)5.原型(Prototype)行为型6.责任链模式7.命令(Command)结构型 创建型 1.单例(Singleton) 目的:单例类在全局只有一个实例,并提供一个全局访问点; 优点:减少内存开销、避免对资源的多重占用; 缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化;

2020-06-04 22:09:45 191

原创 【二叉树】概念、算法、扩展、应用

文章目录几种常见的树的定义二叉搜索树BST红黑树树的遍历1.深度优先搜索(DFS)方法前序遍历中序遍历后续遍历2.广度优先搜索(BFS)方法层序遍历相关题目 几种常见的树的定义 树 定义 完全二叉树 除了最后一层外都填满,最后一层有叶子节点,并且从左到右排布 满二叉树 每一层全部填满(国内定义) 二叉搜索树(BST) 左子树全部节点<根节点<右子树全部节点 平衡二叉树(AVL树) 是BST,并且它的左右两个子树的高度差的绝对值不超过1 红黑树 自平衡的BST,可以

2020-06-03 10:41:56 187

原创 【算法】(1)排序

文章目录冒泡排序选择排序插入排序希尔排序 冒泡排序 思路:遍历n-1次数组,每次遍历就把最大的放在末尾,末尾元素不会进入下一次遍历。 实现 public void bubbleSort(int[] nums) { int l = nums.length;//待排序数组长度 while (l > 1) { boolean isSorted = true;//判断这一次遍历中有没有发生交换,如果没有发生交换,那么数组就直接是有序的,可以提前结束。 for

2020-06-03 09:28:55 192

空空如也

空空如也

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

TA关注的人

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