- 博客(111)
- 资源 (7)
- 收藏
- 关注
原创 CDN,Content Distribute Network,Content Delivery Network
CDNCDNCDN是什么?IDC是什么?IDC与CDN什么关系?IDC的分布情况?IDC与CDN计费方式?CDN容器化优势?CDN容器化过程?ReferenceCDNCDN是什么?通过中心平台的负载均衡内容分发,调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN,Content Distribute Network 或Content Delivery Network ,即内容分发网络或内容交付网络,主要为网站提供访问加速的功能。其基本思路是尽可能避开互联网上
2022-02-22 14:39:13
256
原创 常见排序算法Java版实现(algorithm)
排序算法排序算法简介排序算法类型排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。稳定性:排序后2个相等键值的顺序和排序之前
2022-02-11 15:29:07
839
原创 T4、5K、ECS、云原生、异地多活、混合云、混部
5K、ECS、云原生、异地多活、混合云、混部前言ECSECS是什么?如何理解ECS做的事情?POD是什么?Docker 与 Name Space、Control Groups的关系?POD的本质是什么?K8S是什么?5K如何理解云计算的诞生?如何理解云计算底层的技术挑战?5K是什么?云原生、异地多活、混合云、混部什么是云原生?什么是异地多活?什么是数据中心?什么是混合云?什么是混部?阿里的混部技术发展?混部需要解决的问题?ReferenceA Word前言技术很多时候在围绕资源扩充(横向扩容、弹性扩容
2022-02-07 13:14:43
958
原创 JVM调优
JVM调优Jvm介绍Java体系结构JDK->JRE->JVM跨平台JVM虚拟机堆:new 出来对象一般放在堆里面。初始对象放到Eden园区。GC ROOT:可达性分析算法对象头:方法区(元空间):.class文件存储到方法区。常量、静态变量、类信息。JDK1.8之后,替换为元数据区。栈(虚拟栈/线程栈,线程独有):局部变量。main方法一旦开始运行,栈分出一小块给到main线程。其他线程运行也会被分配一块属于自己的线程栈。每个线程都
2022-01-22 20:38:03
266
原创 currentPackage(CAS、AQS、CLH、LOCK、ReentrantLock、CountDownLatch等)
currentPackage目录currentPackageCAS(Compare and Swap)CAS是什么?CAS原理?有什么特性?AbstractQueuedSynchronizer(AQS)AQS是什么?AQS核心思想?AQS原理?CLH(Craig,Landin,and Hagersten)队列是?AQS实现?独占与共享?LockReentrantLock:基于AQS的一个同步组件可重入状态如何记录?CountDownLatchCompletableFutureCyclicBarrierSe
2022-01-09 19:58:53
581
原创 RestFul、SOAP、RPC、SOA、微服务、分布式
RestFul、SOAP、RPC、SOA、微服务、分布式Web主流通信方案(RestFul、SOAP)RestFul(Representational State Transfer)SOAP(Simple Object Access Protocol)RPC(Remote Procedure Call)SOA(Service Oriented Architecture)RPC和SOAP都是SOA的具体实现微服务分布式ReferenceWeb主流通信方案(RestFul、SOAP)RestFul(Repr
2022-01-09 10:41:33
489
原创 一个线程有多大?
一个线程占用JVM多大内存?java里每新起一个线程,jvm会向操作系统请求新起一个本地线程,此时操作系统会用空闲的内存空间来分配这个线程。所以java里线程并不会占用jvm的内存空间,而是会占用操作系统空闲的内存空间。jdk1.4默认的单个线程是占用256k的内存jdk1.5+默认的单个线程是占用1M的内存可以通过-Xss参数设定,一般默认就好PCB:进程控制块标识、文件、内存、优先级、上下文信息、状态、信号、I/O相关。在32位平台下,系统会给一个进程分配4G的虚拟
2022-01-08 18:05:50
2406
原创 Spring之AOP相关概念理解
切面切面在指定的连接点被织入到目标对象中。连接点:joinPoint方法的前前后后都可以是连接点。连接点(Join point):连接点是在应用执行过程中能够插入切面的一个点。通知:advice 指定 何时?通知:advice,比如:安全、事物、日志等通知(Advice):切面的工作被称为通知。通知定义了切面是什么以及何时使用。除了描述切面要完成的工作,通知还解决了何时执行这个工作的问题。前置通知(Before):在目标方法被调用之前调用通知功能后置通知(After):在目标方法完成
2022-01-08 18:00:56
131
原创 MySql两个日期字符串相减
MySql两个日期字符串相减SELECT id,(UNIX_TIMESTAMP(DATE_FORMAT(end_time, '%Y-%m-%d %H:%i:%s')) - UNIX_TIMESTAMP(DATE_FORMAT(start_time, '%Y-%m-%d %H:%i:%s')))/60/60 as diff_hours FROM `your_table_name` where start_time > 0order by diff_hours desc;...
2022-01-04 09:41:51
1945
原创 线程池监控与管理
线程池监控与管理Java线程池创建工作线程Worker的流程图Executor、ExecutorService、ThreadPoolExecutorExecutor:public interface Executor { /** * Executes the given command at some time in the future. The command * may execute in a new thread, in a pooled thread,
2021-12-20 09:30:56
182
原创 自旋锁实现理解
文章目录自旋锁实现理解锁类型一种自旋锁的简单实现TicketLock实现CLHLockMCSLockCLH锁与MCS锁的比较Reference自旋锁实现理解锁类型可重入锁:基于线程维度,递归锁定、再一层一层释放。可中断锁:等待锁期间可以被中断。公平锁:等待时间最长的锁优先被给到。读写锁:读写分离,一个读锁,一个写锁,提高并发。自旋锁:自旋是一种"原地忙等"策略,线程未获得锁则原地等待,不去睡眠,直到锁被释放,即不放弃CPU时间片,避免线程进入阻塞状态的开销(线程的阻塞挂起处
2021-12-19 18:46:39
741
原创 多线程之线程状态机
线程的状态图解线程状态简单图解线程状态详细图解线程状态机图解线程状态语义New:初始状态实现Runnable接口和继承Thread可以得到一个线程类,new一个实例出来,线程就进入了初始状态。Runnable之Ready:就绪状态具备运行的前提条件,等待被执行。(万事俱备,只欠东风)调用线程的start()方法,此线程进入就绪状态。当前线程sleep()方法结束,其他线程join()结束,等待用户输入完毕,某个线程拿到对象锁,这些线程也将进入就绪状态。当前线程时间片用完了,
2021-12-19 15:34:44
1914
原创 ThreadLocal原理
文章目录ThreadLocal源码ThreadLocal类内部常用方法:源码分析:应用场景:重要思想:table的下标是如何计算的?静态内部类的设计意图?ThreadLocal Value为什么不是弱引用?ReferenceThreadLocalThreadLocal作用是存储线程局部变量。空间解决并发共享变量冲突问题,为每个线程分别持有自己的存储空间,存储相应的值(分身独有)。源码ThreadLocal类内部常用方法:// ThreadLocal values pertaining to t
2021-12-19 09:59:03
264
原创 Synchronized关键字实现原理
Synchronized关键字实现原理Synchronized关键字实现原理基础概念原理实现Mark WordMonitor同步代码块原理同步方法原理synchronized锁的优化Lock锁与synchronizedReferenceSynchronized关键字实现原理基础概念修饰的类或者对象的所有操作都是原子的。是实现线程同步的关键字。修饰执行的代码块必须获得对象sync Object。执行前先获得类或者对象的锁,直到执行完才能释放,中间过程无法被中断。原理实现Mark Word
2021-12-18 11:32:53
226
原创 unSafe是什么?
unSafeunSafeJava中unSafe类是什么?如何使用?应用?ReferenceunSafeJava中unSafe类是什么?java.util.concurrent包或者java.nio包中经常会看到sun.misc.Unsafe,类如其名,就是不建议使用(不安全、不轻便、不稳定)的、可以用于观察HotSpot JVM内部结构并且可以对其进行修改的一个“后门类”。(有时也可以用来做性能监控和开发工具)Java官方不推荐使用,因为很难正确使用,如果使用错误会给JVM带来致命问题。但是很多
2021-12-08 19:25:12
645
原创 天天算法之回溯
天天算法之回溯回溯天天算法之回溯思想实践leetCode国际版类型题思想利用递归+栈来刻画行为逻辑,遍历问题的所有可能的解法。回溯依赖栈的方式进行诠释。实践Next Permutation首先要理解题目,也就是求一组数的下一个全排列(字典顺序)。然后进行步骤推演,首先找到第一个正序对,如果正序对是末尾的最后两个元素,则直接交换即可。如果正序对不是最后两个末尾的元素的情况,则需要 在正序对终止元素后面的 倒序数列中 找到比正序对起始元素大 且在倒序数列中最小的数 并与之交换位置。
2021-12-05 15:34:56
272
原创 线程池文章
线程池存在意义Executors实现分析Reference存在意义线程长连接,比如文件下载,网络请求不是很频繁,正常使用线程。线程短连接,频繁的读写,获取连接,关闭连接,对服务资源可能造成很大浪费,策略机制保障效能,所以有线程池。Executors使用方式:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
2021-11-28 15:59:40
267
原创 EventBus
EventBusEventBus是什么?EventBus特性?EventBus使用?EventBus源码?ReferenceEventBus是什么?EventBus is a publish/subscribe event bus for Android and Java.EventBus特性?1. 发送者 接收者 解耦。发布-订阅模式框架。让多个观察者对象同时监听某一个主题对象。2. 在活动、片段和后台线程中表现良好。3. 避免复杂且容易出错的依赖关系和生命周期问题。4. 让代码更简洁。
2021-11-28 15:50:35
194
原创 Serverless
Serverless什么是serveless?Less is More。less server,无服务器。构建和运行不需要服务器管理的应用程序的概念。普遍认为:Serverless = FaaS + BaaS,即:无服务期计算=函数计算+后端即服务。抛开部署模式,FaaS本质上是事件驱动的途径或者事件流。什么是Knative?是通过整合容器构建或者函数、工作负载管理和动态扩缩以及事件模型这三者来实现的一套 Serverless 标准。Referencehttps://
2021-11-21 16:32:30
681
原创 Disruptor
DisruptorDisruptor是什么?高性能的异步处理框架,一个轻量级的JMS,和JDK中的BlockingQueue有相似处。处理速度非常快,号称“一个线程一秒钟可以处理600W个订单”。什么是JMS?Java Message Service(JMS):可以理解为一种消息通讯的规范和标准,即异步通讯的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建、发送、读取消息等,用于支持JAVA应用程序开发。JMS与RMI不同,发送消息的时候,接收者不需要在线。服务器发送了消息,
2021-11-14 18:03:56
1056
原创 Spring中@within与@target的区别
区别:@within:定义在哪里,就作用在哪里。(有点静态编译的味道)@target:运行在哪里,就作用在哪里。(类比动态执行的感觉)其实用@target更符合我们想要的结果,在某个类上面加一个注解,拦截的时候就会获取这个类上面的注解,跟父类完全没有关系了。但这个时候会遇到一个问题,就是不相关的类都会生成代理类。...
2021-11-12 15:26:06
977
原创 Theme21SourceCode
Theme21SourceCode简化源码Spring Bean容器初始化1. 第一版beanDefinition 容器定义类 持有 object(普通对象)beanFactory 工厂 持有 currnetHashMap 存储 beanDefinition:put 模拟注册get 模拟获取使用2. 第二版bean对象 -> bean类信息容器初始化时候再实例化bean对象对外来的考虑:活动频发、流量爆增、需求迭代。单例获取->缓存3. 第三版bean的创建方式
2021-11-10 14:59:29
457
原创 作业帮 PB 级低成本日志检索服务解读
背景需求高峰日志写入压力大:每秒千万级日志条数。实时要求高:日志采集到被检索最好1s内,高峰3s。成本不小:要求保存半年的日志可以回溯查询,百PB级别。备注:1PB = 1024TB,1TB = 1024GB设计思路技术选型ElasticSearch简介:1. ES负责存储和索引日志。2. 底层依赖Lucene的倒排索引技术。3. 通过shard数据分片实现分布式。缺陷:1. 为了提升写入性能,可以作聚合提交、延迟索引、减少refresh等,但始终要建立索引。日志流量巨大,每
2021-11-08 10:56:00
708
原创 ETL(Extract-Transform-Load)
ETL(Extract-Transform-Load)Big Data ETL一、异构数据聚合1. 合并2. 连接3. 转换二、异构数据处理1. 自定义操作函数2. 重命名3. 别名4. 选择三、聚合镜像:新的存储介质单维度,介质存储更优,与多维度异构多源数据保持一致。Referencehttps://www.sohu.com/a/226021588_99944406(漫画:什么是数据仓库和ETL? )...
2021-11-01 16:19:31
826
原创 Sentinel
Sentinel如何确定限流的具体QPS?需要找到临界点。临界点之前:压力测试线性增大QPS,TPS也在逐步提高,时延相对稳定。临界点附近:压力测试线性增大QPS,TPS负载接近满额(达到峰值),服务中请求处理出现排队情况,时延非线性上涨。临界点之后:压力测试线性增大QPS,计算资源超额负载,进一步导致GC,进程调度、网络等资源压力导致TPS迅速下降(反噬),请求排队过长,导致时延进一步指数级上升,最终导致服务资源耗尽导致宕机无响应等情况。将TPS定点附近值作为对QPS的限制阈值相对理想。
2021-10-22 15:30:35
244
原创 DRC(Data Replicate Center)
DRC(Data Replicate Center)DRC用来做什么?数据双向复制和数据订阅。比如:跨机房的 Mysql 数据复制。比如:数据订阅,监听数据库实时变更情况。DRC设计目标?1. 实时双向数据复制,延时 < 1s ,并能够解决双向修改时的数据冲突。2. 数据变更订阅,能够在DB数据发生变化时通知到相关订阅方。3. 高度可靠和保持顺序,不能丢失数据,也不能因为错乱执行顺序导致数据错误。DRC主体设计?总体架构设计?DRC核心能力就是 数据获取 和 投递。(有点
2021-10-18 17:43:20
1407
原创 Tair理解
TairTair是什么?淘宝开发的、分布式的、key/value存储引擎。Tair怎么存数据?支持内存存储。支持文件存储:LDB引擎,SSD磁盘上的LevelDB存储引擎。Tair靠谱吗?线上热扩展,自动负载均衡。(Tair负载均衡:一致性哈希算法)桶的分布均衡行->数据分布的均衡性。主备存储->高可用。数据存储:持久化。多单元机房自动同步。Tair适用场景?通过Tair来加速以及承担大流量的目的。淘宝天猫用户登陆、浏览商品详情页、购物车信息等。Ta
2021-10-16 19:42:54
431
原创 多线程之线程池
Java并发&锁&多线程Java并发进程与线程任何事物都需要不同粒度的划分。豆腐要一块一块卖。程序要一个一个跑。这里的一个一个跑,不是指串行,而是指资源的划分,执行程序的界定。什么是进程?百度百科进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体。在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述
2021-10-16 19:39:31
180
原创 IGraph
IGraph1. 建模时考虑的方面: 1.1 查询性能 1.2 存储空间 1.3 更新成本2. kv 还是 kkv 2.1 a->b,b->c存储: 额外的查询、更少的存储、更新更低成本。(适合属性规模大、有更新需求) 2.2 a->bc存储: 查询优、冗余存储、更新成本高。(适合查询性能要求高)3. 关系召回:与我最近购买的商品相似的商品。4. primary key:源端到关系hash定位,O(1)。 secondary key:目标端meta信息。
2021-10-16 19:38:16
288
原创 canal
canal干货译意:水道/管道/沟渠。用途:是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。由来我们都知道一个系统最重要的是数据,数据是保存在数据库里。但是很多时候不单要保存在数据库中,还要同步保存到Elastic Search、HBase、Redis等等。异地介质存储,需要数据同步。能力优势:对业务代码没有侵入,因为是基于监听binlog日志去进行同步数据的。实时性也能做到准实时,其实是很多企业一种比较常见的数据同步的方案。(异步解耦)实现ca
2021-10-16 19:36:05
184
原创 软负载之理解
软负载域名管理策略机制域名管理:软负载名字服务发现服务1. 域名映射机器,全量心跳检测->分量心跳检测(分而治之思想)2. 同机房优先策略,同网段优先、同单元优先等(服务提供方与服务调用方之间的“就近原则”)。3. 流量分配管控承载机制: 3.1 单打独斗不行,则找帮手。全局能力允许,则保障一致性。 引入“跨机房保护策略”,用于决定要不要跨机房。 跨机房保护策略:设定单个机房服务器可用比例阈值,低于阈值(说明单个机房的可用机器已不足以独立支撑),当前机房服务器不可用
2021-10-16 19:24:34
535
原创 Tree-LSM
二分法二分法很简单,很精妙!一半一半的舍弃,一倍一倍的填充。(O(LogN))->树????树????的类型什么是普通的树?无序、混沌、自然、简单、墒减!什么是动态查找树?动态查找树主要有: 二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)。其都是动态结构。在删除,插入操作的时候,都不需要彻底重建原始的索引树。最多就是执行一定量的旋转,变色操作来有限的改变树的形态。其查找的时间复杂度大体维持在O(log(N))数量级上。
2021-10-13 14:58:54
253
原创 性能优化篇
性能优化性能优化相关概念如何理解JDK、JRE和JVM?JDK(Java Develop Kit):Java开发工具。编译成对应特定机器码。JRE(Java Resource Environment):Java运行环境。只能运行.class文件,不能编译.class文件。JRE + 各种Java工具(javac/java/jdb等) + Java基础的类库(即Java API 包括rt.jar) 等效于 JDK。其中,rt.jar是基础类库。JVM(Java Virtual Ma
2021-10-09 14:56:36
326
原创 Redis
RedisRedis是为了解决什么问题?Redis是什么?Redis:RemoteDictionaryServer(远程数据服务),是一个开源的、基于内存的数据结构存储器,可以用作数据库、缓存和消息中间件,最受欢迎的NoSQL数据库之一。遵守BSD协议:基本上是为所欲为,不作恶的意思。可以二次开发后商业销售,但是不可以借用原软件的名义进行推广。开源但尊重原作者。单操作原子性,多操作支持事务。Redis能干什么?(广)解决高并发。丰富数据类型,数据结构灵活,方便扩展。(key-va
2021-10-09 14:54:24
223
原创 分布式一致性协议:拜占庭将军问题
拜占庭将军问题什么是拜占庭将军问题?故事影射的问题1. 拜占庭将军问题是一个协议问题,只有所有将军达成共识,一同攻击某个敌军,才能成功。(目的是达成共识,且结果代表大多数人的意见)2. 分散的军队,军队内可能有叛徒和敌军间谍,左右将军们的决策。在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。(在缺少可信任的中央节点和可信任的通道的情况下,分布在网络中的各个节点应如何达成共识)3. 拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及
2021-09-28 22:45:24
9808
原创 Mysql慢查询
Mysql慢查询常用命令Reference常用命令Mysql自带profiling性能分析工具: 1. show variables like "%profiling%"; 2. profiling 为 ON 表示开启。Mysql慢查询时长阈值设置: 1. show variables like 'long%'; 2. value 为 1 表示超过1s为慢查询。explain解析: 1. explain select count(*) from item_tb; 2.
2021-09-28 19:09:24
110
原创 JVM&JMM
JVM&JMMJVMJVM是什么?线程共享部分: 1. 方法区:包括Class元数据、常量、静态变量、运行时常量池、JIT编译后的机器码也在方法区。 2. 堆区:实例对象、字符串常量池。线程独享部分: 1. 程序计数器(PC寄存器):指向当前正在运行的指令地址。 2. Java虚拟机栈(栈内存):保存局部变量表、基本数据类型、堆内存中对象引用变量以及方法返回地址。 3. 本地方法栈:调度native方法。什么是程序计数器?程序计数器(Program Counte
2021-09-23 20:44:07
176
原创 Git、Maven、SubText、clipy
Git、Maven、SubText、ClipyGitgit command远程分支同步主分支:git branchgit branch -rgit checkout yourBranch// git merge master 是当前分支合并master分支的代码过来。git merge master解决冲突git add .git pushgit push --set-upstream origin yourNewOriginBranch.gitignore忽略targe
2021-09-23 19:02:38
164
原创 LUCENE
LUCENELucene全文检索流程与原理如何在一篇文章中,查找一个单词?答:顺序查找,全文遍历查找。如果数据量很大怎么办?全文遍历查找很慢。答:结构数据,可以创建索引(比如:mysql B+树)。非结构化数据,如何建立索引机制?答:没有结构,提取结构。没有索引,创建索引。 1. 可以录入文章到lucene。(文档录入) 2. 将原文档传递给分词器(Tokenizer),分词器提取一个一个的单词,将标点符号去掉,去除停词(stop the world,比如:the、this)
2021-09-23 18:56:10
160
JavaSwing小程序
2018-06-24
平衡搜索树
2018-06-03
一款轻量级的沙箱一个好用的沙盘
2018-05-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人