Git Proxy
前言由于网络问题,在拉取代码时会遇到,诸如1Failed to connect to github.com port 443 after 21082 ms: Timed out这时候要设置git的代理
代理设置全局代理设置http代理设置12git config --global http.proxy http://127.0.0.1:1080git config --global https.proxy https://127.0.0.1:1080
socket5代理设置12git config --global http.proxy socks5://127.0.0.1:1086git config --global https.proxy socks5://127.0.0.1:1086
选择代理使用全局代理访问国内仓库会变慢,推荐只代理github
http代理12git config --global http.https://github.com.proxy https://127.0.0.1:1080git config --global https.https://git ...
Netty入门
Netty入门什么是Netty
Netty is an asynchronous event-driven network application frameworkfor rapid development of maintainable high performance protocol servers & clients.
HelloWorld服务端1234567891011121314151617181920public class TestNettyServer { public static void main(String[] args) { new ServerBootstrap() .group(new NioEventLoopGroup()) // 创建NioEventGroup 线程池 + selector .channel(NioServerSocketChannel.class) //选择socket 的实现类 .chil ...
NIO基础
NIO基础三大组件Channel & Bufferchannel 是读写数据的双向通道,可以从channel将数据读入到buffer,也可以将buffer的数据写入到channel。
常见Channel
FileChannel
DatagramChannel
SocketChannel
ServerSocketChannel
buffer是数据的缓存区,常见的buffer有
ByteBuffer
MappedByteBuffer
DirectByteBuffer
HeapByteBuffer
ShortBuffer
IntBuffer
LongBuffer
FloatBuffer
FloatBuffer
DoubleBuffer
CharBuffer
Selector
一开始服务器每开启一个socket连接,就分配一个线程进行处理。这种方式内存开销大,线程的上下文切换成本高,只适合连接数少的情况。
然后引入线程池来管理线程,使用线程池当中的线程来处理socket,这样可以实现线程的复用,但是一个线程还是只能处理一个socket连接,仅仅适合短连接的常见。
最后 ...
Kafka
Kafaka概念传统定义
kafka是一个分布式基于发布订阅模式的消息队列,主要应用于大数据实时处理领域
发布订阅
发布者不将消息直接发送给订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息
最新的定义
开源的分布式事件流平台、用于高性能数据管道、流分析、数据集成、关键任务应用。
基础架构
一个topic分为多个分区用来提高吞吐量
配合分区,提出消费者组的概念,组内每个消费者消费一个分区的数据,并行消费
提高可用性每个partition 可以存在若干副本
zk中记录partition中 谁是leader,kafka2.80之后也可以不采用zk
名词解释
Producer
生产者,向kafka发送消息的客户端
Consumer
消费者,向kafka取消息的客户端
Consumer Group (CG)
消费者组,由多个consumer组成。组内每个消费者负责消费不同的分区,一个分区只能由一个组内消费者消费,消费者组之间互不影响。所有的消费者都属于某一个消费者组,消费者组就是逻辑上的一个订阅者。
Broker
一台kafka服务器就是 ...
Maven多模块项目构建
使用Maven构建多模块项目Multi-Module Project with Maven
[author[source]] [https://www.baeldung.com/maven-multi-module] [Multi-Module Project with Maven]
1.概览在这个教程中,我们将学习maven的多模块项目构建。首先讨论什么是多模块项目,了解多模块的优点。然后尝试搭建一个样板多模块项目。
2.Maven多模块项目一个多模块项目是通过聚合pom来构建的。聚合pom管理多个子模块。大多数情况下,聚合pom在项目的根目录。打包方式必须是pom
子模块就是maven常规项目,他们可以分别进行构建或者通过聚合pom一起构建。通过聚合pom构建项目,每个模块最终会输出不同的打包文件。
3.使用多模块的好处使用多模块构建项目的优点之一就是减少重复。假设一个项目有多个模块,我们改变功能之后,如果没有特定的构建工具,我们就必须分别对模块进行构建,或者写个脚本来编译他们的代码、测试、展示结果。当我们项目中的模块越来越多后,将越来越难维护。在实际的使用过程中,我们的项目需要使 ...
Mysql索引
Mysql索引基本概念索引是一种数据结构,通过索引可以快速检索数据,避免全表查询。
暂时无法在飞书文档外展示此内容
优点:
提高查询效率
降低数据排序成本
缺点:
占空间
降低更新表的速度
索引的结构1.概述
B+树
最常见,大部分引擎支持
Hash
哈希表实现,只支持精准查询,不支持范围查询
R-tree
MyISAM引擎的特殊索引类型,用于地理空间类型
full-text
倒排索引快速匹配文档
2.二叉树二叉树存在退化现象,退化成链表时查询性能大大降低。红黑树解决了平衡问题但是层数还是较深。
3.B树多路平衡查找树,例如max-degree为5阶,每个节点存储4个key 5个指针
节点中的key超过度数时向上分裂
非叶子节点和叶子节点都会存放数据
每一页中存储的key减少,指针减少,保存同样量级的数据,树的高度会更高
4.B+树
所有的数据都出现在叶子节点
叶子节点形成一个单向链表
非叶子节点只起到数据索引的作用
Mysql 优化后的B+树,增加了一个指向相邻节点的链表指针,利于排序,提高区间访问性能
5.哈 ...
Mysql锁
bilibili视频
概述在锁可以用来控制多个进程或者线程对共享资源的访问,确保并发访问的一致性和有效性。数据库中的数据也是多用户共享的资源,所用来控制事务的并发访问。
MySQL中锁的粒度分类:
全局锁:锁定数据库中的所有表
表级锁:锁定整张表
行级锁:锁定表中的某一行数据
全局锁对整个数据库的实例加锁,整个实例处于只读状态,DML、DDL都会被阻塞。
应用场景:全库逻辑备份
语法
加全局锁
1flush tables with read lock ;
数据备份
1mysqldump -uroot –p1234 库名 > 文件名.sql
释放锁
1unlock tables ;
存在的问题
主库备份
业务停摆
从库备份
主从数据不一致
在InnoDB引擎中,我们可以在备份时加上参数 —single-transaction 参数来完成不加锁的一致
性数据备份
1mysqldump --single-transaction -uroot –p123456 itcast > itcast.sql
表级锁每次操作对整张表加锁 ...
docker快速入门
快速入门
🔗 官方文档 https://docs.docker.com/
Dockerdocker类似于VMware是可以在linux上运行的“虚拟机”管理工具
基础命令从仓库下载镜像:从仓库下载最新的镜像
1docker pull nginx
相当于
1docker pull nginx:latest
查看本地有哪些镜像1docker images
运行容器1docker run nginx
这样只是简单的运行容器。可以添加参数
1docker run -d -p 外部:80 nginx
d后台运行容器 p配置内外端口映射,-name指定容器运行的名字 v 映射文件,比如可以讲当前文件夹映射到/usr/share/nginx/html
选项
选项简写
说明
–detach
-d
在后台运行容器,并且打印容器id。
–interactive
-i
即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用。
–tty
-t
分配一个伪tty,一般与 -i 连用。
https://blog.csdn.net/claram/article/ ...
工厂模式
大家好我是mihotel,今天来总结一下设计模式中的工厂模式,在平时编程中,构建对象最常用的方式是 new 一个对象。乍一看这种做法没什么不好,而实际上这也属于一种硬编码。每 new 一个对象,相当于客户端多知道了一个类,增加了类与类之间的联系,不利于程序的松耦合。我们可以利用工厂模式封装对象的生产过程。
简单工厂模式首先是简单工厂模式,它是通过指定一个工厂对象来创建产品实例,只需要传给工厂参数,不需要关系对象是怎样产生的.举个例子:如果我们要录制Java和Python两门课程,我们可以先创建ICourse接口, 提供录制功能:
123public interface ICourse { void record();// 录制}
然后分别创建JavaCourse类与PythonCourse类
12345678910111213public class JavaCourse implements ICourse { @Override public void record() { System.out.printl ...
单例模式
大家好我是miHotel,今天来复习一下设计模式中的单例模式,下面是思维导图。
什么是单例模式单例模式顾名思义,就是一个类从始至终只能创建一个对象,并且提供了一个全局访问点。ServletContext、ServletContextConfig、ApplicationContext、数据库连接池都是单例模式。
饿汉单例模式首先是饿汉单例模式,所谓的“饿汉”就是不采用延迟加载,在类加载的时候就初始化,并创建单例对象。饿汉单例模式是绝对线程安全的,因为在线程还没有出现的时候就初始化了。第一种写法:123456789public class HungrySingleton { private static final HungrySingleton hungrySingleton = new HungrySingleton(); private HungrySingleton() {}; public static HungrySingleton getInstance() { return hungrySingleto ...