自定义博客皮肤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

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

原创 【数据库】原理、MySQL、Redis

文章目录参考数据库系统原理MySQL1. 基础内容2. 索引3. 优化Redis参考《高性能MySQL(第三版)》CyC2018/CS-NotesSnailclimb/JavaGuide数据库系统原理【数据库】(1)数据库系统原理什么是事务?事务是满足原子性、一致性、隔离性、持久性的一组操作,可以通过Commit提交一个事务,也可以使用Rollback回滚。解释一下事务的四大特性。– 原子性:事务不可分割,要么全部执行, 要么失败回滚– 一致性:多个事务对同一个数据的读取结果是相

2020-09-21 17:24:08 606 1

原创 【Java】基础、容器、JVM、并发

文章目录参考基础1. 基本类型、包装类型、缓存池2. String、StringBuilder、StringBuffer,String Pool3. 引用传递还是值传递?4. ==、equals()、hashCode()5. 重写、重载、访问权限6. static关键字8. final关键字9. 反射10. 异常11.泛型12.IO容器1. ArrayList2. HashMap3. ConcurrentHashMap4. 其他并发JVM参考《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版

2020-09-16 20:09:59 246

原创 【算法+LeetCode题解+剑指Offer题解】算法思想、排序搜索、数据结构、数学、特殊解法、设计(全总结)

文章目录前言参考1. 排序1.1 快速排序1.2 归并排序1.3 堆排序1.4 其他排序1.5 相关题目前言一个多月的时间,看完了LeetCode的题目,刷完了主要的题目。越看到后面,越觉得很多题目都是非常相似的,很多题目都是通过基本的思想扩展来的,因此需要对题型进行总结。算法题目一般分为以下几类,常见的用红色背景标出:算法思想:贪心、动态规划、分治、递归。搜索排序:排序、二分查找、DFS、BFS、回溯数据结构:字符串、数组/矩阵、栈、队列、哈希表、链表、二叉树、图数学:位运算、概率计算

2020-09-09 21:28:56 799

原创 rmtp服务搭建+ffmpeg推流+vlc播放

yum -y install pcre-devel openssl openssl-develwget https://github.com/arut/nginx-rtmp-module/archive/refs/heads/master.zipwget http://nginx.org/download/nginx-1.20.1.tar.gz在Nginx目录./configure --add-module=/root/nginx-rtmp-module-master --with-http_ss.

2021-11-07 22:54:02 2059

原创 Idea使用技巧

文章目录自定义类和方法JavaDoc模板自定义类和方法JavaDoc模板定义类注释在设置中的File and Code Templates中的Class、Interface、Enum、AnnotationType中的内容修改为#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end#parse("File Header.java")/** * @author: calcifer

2020-11-09 15:38:11 191

原创 【Gradle】使用整理

文章目录参考下载安装基础Java PluginAndroid中使用Gradle参考http://wiki.jikexueyuan.com/project/GradleUserGuide-Wiki/下载安装在官网下载https://gradle.org二进制zip包gradle-6.7-bin.zip解压后,配置环境变量vim ~/.bash_profileexport GRADLE_HOME = /Users/UFreedom/gradleexport export PATH=$PATH

2020-10-30 13:32:49 188

原创 【算法】(4)DFS、BFS、Backtracking

文章目录参考基础解题框架例1 :全排列例2:N皇后例3:目标和参考labuladong/fucking-algorithm基础如果在解决一个问题时,可以分为多个步骤,每个步骤有多个选择,这样会形成多条路径(或形成一颗决策树),那么在解决这种问题时,可以使用回溯的思想解决一个回溯问题,就是决策树的遍历过程回溯算法就是穷举所有可能的选择,遍历所有解,因此是属于一种暴力解法回溯算法需要考虑3个问题 : 路径、选择列表、结束条件– 路径:到当前节点时已经做出的选择– 选择列表:当前节点可以做出的

2020-08-20 08:05:13 243

原创 【算法】(3)动态规划

文章目录参考基础解题思路解题模板例1 : 斐波那契数列例2 : 凑硬币参考labuladong/fucking-algorithm基础动态规划一般用于求最值问题问题需要符合最优子结构,问题可以划分为子问题,通过求解子问题,得到更大规模问题的解如果存在重叠子问题,可以使用额外空间进行优化记录解题思路分析原问题的解空间(所有可能解),观察所有解之间的联系观察候选解是否能够分组,以便定义子问题分析子问题之间的关系,即是否能从1个子问题的解得到另一个子问题的解分析子问题与原问题之间的关系

2020-08-19 10:57:42 220

原创 【数据库】(1)数据库系统原理

文章目录事务1. 概念2. 四大特性3. ACID关系并发一致性问题1. 修改丢失2. 读脏数据3. 不可重复读4. 幻影读事务1. 概念事务时满足ACID特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。2. 四大特性原子性事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。一致性数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。(不能有事务读取到旧数据,所有事务对

2020-08-13 13:36:38 248

原创 【算法】(2)查找

文章目录二分查找二分查找适用于有序数组时间O(logn)private int searchRange(int[] nums, Integer num, int left, int right) { while (left < right) { int mid = (left + right) >> 1; if (nums[mid] == num) { return mid; } else if (

2020-08-11 12:59:51 117

原创 【Linux】Vim使用

文章目录三种模式命令模式1. 移动光标2. 删除3. 复制粘贴4. 其他进入编辑模式命令行模式1. 存储、退出2. 查找与替换三种模式Command Mode(命令模式)打开文件后,进入命令模式可以移动光标、删除字符、删除整列、复制、粘贴等Insert Mode(编辑模式)命令模式下输入i,a等进入编辑模式编辑文件内容Command-line Mode(命令行模式)命令模式下输入: / ?这3个字符中的其中一个进入命令行模式查找、保存、设置等命令模式1. 移

2020-07-31 08:16:47 332

原创 【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 156

原创 【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 230

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

文章目录

2020-06-25 13:28:36 131

原创 【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>0class Person{ public int age;}定义Validatorclass PersonVa

2020-06-24 19:43:36 180

原创 【Spring Framework】(2)Resource

文章目录1. Resource接口2. 六种Resource实现3. ResourceLoader1. 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 131

原创 【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 153

原创 【面向对象】(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 134

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

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

2020-06-22 13:18:08 153

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

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

2020-06-22 13:01:08 115

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

文章目录

2020-06-21 22:09:31 78

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

文章目录

2020-06-19 22:11:21 100

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

文章目录

2020-06-19 22:09:45 112

原创 【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 150

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

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

2020-06-15 22:24:39 260

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

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

2020-06-13 17:34:02 147

原创 【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 153

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

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

2020-06-10 16:07:55 109

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

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

2020-06-09 19:21:33 100

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

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

2020-06-09 19:12:15 102

原创 【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 147

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

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

2020-06-08 16:23:21 103

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

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

2020-06-08 16:12:44 82

原创 【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 83

原创 【面向对象】(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 158

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

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

2020-06-03 10:41:56 173

原创 【算法】(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 130

原创 Linux提高效率的命令行工具

1.树形目录Treeapt-get install tree2.中文手册Man1.sudo apt-get install manpages-zh # 系统会自动下载并安装2.vi ~/.bashrc # 编辑家目录下的bash配置文件3.在最后一行输入:alias cman='man -M /usr/share/man/zh_CN' # 将中文的man命令重命名为cman命令,之后保存并退出编辑4.source ~/.bashrc # 重新运行.bashrc文件使用cman tar3.

2020-05-29 18:35:39 116

原创 【树莓派】安装、配置、总结

文章目录资源参考系统安装配置ssh和wifi配置用户配置apt-get源安装Pi Dashboard资源参考树莓派4B新手篇:安装官网Raspbian Buster系统及基础配置树莓派新手教程合集系统安装在官网下载镜像.Buster Lite版https://www.raspberrypi.org/downloads/raspbian/使用Win32 Disk Imager工具,将镜像刻录到SD卡配置ssh和wifi参考无屏幕和键盘配置树莓派WiFi和SSH配置ssh:在boot目

2020-05-27 18:31:21 185

原创 【Java】位操作

文章目录进制位运算小技巧判断奇数偶数交换2个数字除以2,然后向下取整乘以2的m次方判断符号是否相同进制进制表示用二进制和十六进制表示十进制的32int a = 0b100000;//2进制int b = 0x20;//16进制进制转换//十进制转其他进制二进制:Integer.toBinaryString(int i);八进制:Integer.toOctalString(int i);十八进制:Integer.toHexString(int i);//其他进制转十进制二进制

2020-05-22 11:41:59 115

空空如也

空空如也

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

TA关注的人

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