自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (6)
  • 收藏
  • 关注

原创 go mysql使用

【简代码】go mysql使用。

2022-07-31 21:03:42 172

原创 tpch数据集的 sql优化案例

数据集:tpch 2.18 scale factor20,数据量大约1.2亿selecto_orderpriority,count(*) as order_countfromorderswhereo_orderdate >= date '1993-03-16'and o_orderdate < date '1993-03-16' + interval '3' monthand exists (select*fromlineitemwherel_orderkey

2021-04-11 21:43:39 390

原创 compeletableFuture解析和响应式框架对比

compeletableFutureAltResult返回结果的简化AltResult is used to box null as a result, as well as to hold exceptions.NIL null的简化Minor simplifications rely on (static) NIL (to* box null results) being the only AltResult with a null* exception field, so we don

2021-04-04 12:22:39 665 1

原创 rxjava从源码完全理解运行原理

compeletableFutureAltResult返回结果的简化AltResult is used to box null as a result, as well as to hold exceptions.NIL null的简化Minor simplifications rely on (static) NIL (to* box null results) being the only AltResult with a null* exception field, so we don

2021-04-03 22:42:05 310

原创 leetcode212--网格搜索单词

字典树回溯剪枝class Solution { int[] dx = {0, 0, -1, 1}; int[] dy = {-1, 1, 0, 0}; boolean[][] visited = null; List<String > result = new ArrayList<>(); public List<String> findWords(char[][] board, String[] words) { .

2021-03-28 23:01:34 118

原创 分布式一致性协议2pc 3pc paxos zab 和zookeeper原理解析

从paxos到zookeeper 分布式一致性1分布式架构大型主机,集中式 分布式事务 问题 通信异常 网络分区,脑裂:由于节点间的网络延时不断增加,会造成只有部分节点能正常通信,形成小集群,造成网络分区,有时网络分区会导致部分节点完成需要所有节点参与的事务。 三态:成功,失败,超时 节点故障 从acid到cap、base Acid A:成功或者失败 C:数据是否正确状态 I:幻读:两次事务,同样的读操作出现不一致,导致业务处理问题.

2020-12-31 22:06:08 266

原创 spring整合feign和hystrix实现RPC熔断降级和监控

背景在spring应用中,原始的openfeign生成的代理对象是没有直接在spring容器中注入的,要使用openfeign的原生使用方式如下所示。feign的使用这种方式,对一个有追求的程序员来说很不优雅,本文来解决将feign整合到spring中的问题,实现feign的优雅使用。解决上一个问题,之后我们还问自己一个问题,feign的作用是http的rpc调用,但是http的调用如何优雅的实现服务熔断和降级呢?很明显用hystrix,这里又有问题了,hystrix和feign分别生成的动态代理

2020-12-26 17:56:18 519

原创 netty和dubbo的hashwheel时间轮定时器原理和源码解析

时间轮定时器时间轮定时器的论文ppt参考:论文ppt:http://www.cse.wustl.edu/~cdgill/courses/cs6874/TimingWheels.ppthash时间轮结构基本过程跟时钟类似,秒针每间隔一段时间跳一格,每格桶判断存储的任务列表中的任务是否超时。涉及的两个重要概念:1.Tick Duration时间轮跳动的时间间隔,默认是100ms,不是精确的时间。2.Ticks per Wheel (Wheel Size)时间轮的格数默认是 512.时间轮处理过

2020-12-24 21:16:36 704

原创 springboot自动配置原理、自定义stater、启动流程精讲

springboot enable注解自动配置流程自动配置流程核心只有4步@EnableCircuitBreaker@MapperScan("com.github.chengzhx76.service.order.dao")public class OrderServiceApplication { public static void main(String[] args) { SpringApplication.run(OrderServiceApplication.c

2020-12-23 01:05:52 352

原创 springcloud之hystrix原理和实践总结

Hystrix解决什么问题分布式微服务系统以来很多子服务,每个子系统都可能出现故障和错误,如果服务不相互隔离,那么每个服务的错误都可能压垮其他服务,导致服务雪崩。假设每个服务的可用性为9999,那么30个自服务的整体可用性为99.9930= 99.7% uptime0.3% of 1 billion requests = 3,000,000 failures2+ hours downtime/month even if all dependencies have excellent up.

2020-12-23 00:47:44 266

原创 mysql查询性能优化总结

性能监控和分析性能定义性能如何度量,核心指标:1.吞吐量 tps,olap数据库偏向吞吐量2.时延,oltp应用偏向时延低性能分析性能监控 set profiling 1 show profile看各个阶段的耗时 看官方文档 https://dev.mysql.com/doc/refman/5.7/en/show-profile.html 查看cpu 磁盘等所有的信息 基于session不会持久化 mysql performance sche.

2020-12-23 00:36:15 276

原创 什么是块存储、文件存储、对象存储

块存储,文件系统存储,对象存储区别概念层级的区别1.块级概念:块级是指以扇区为基础,一个或我连续的扇区组成一个块,也叫物理块。它是在文件系统与块设备(例如:磁盘驱动器)之间。2.文件级概念:文件级是指文件系统,单个文件可能由于一个或多个逻辑块组成,且逻辑块之间是不连续分布。逻辑块大于或等于物理块整数倍,3.物理块与文件系统之间的关系图:映射关系:扇区→物理块→逻辑块→文件系统【块存储】典型设备:磁盘阵列,硬盘,虚拟硬盘传统的文件系统,是直接访问存储数据的硬件介质的。介质不关心也无法去关心

2020-12-14 20:32:07 7681 1

原创 ElasticSearch ES权威指南和深入理解ES笔记

ES使用场景搜索引擎elk站内搜索特点1. 默认配置2. 分布式,可扩展,对等架构p2p3. 无模式4. 准实时3. 故障检测master node4. 故障恢复rebalance选主集群架构高可用故障恢复转移选主节点数节点数=分片数*(副本数+1)过半节点类型data候选master协调节点非以上几种就可以子主题 3https://zhuanlan.zhihu.com

2020-12-11 17:06:22 459 3

原创 redis系列一:必学知识点

redis特性快nio单线程单进程内存高可用主从复制全量部分读写分离sentinel自动故障转移原理选举leader sentinel架构cluster分片扩缩容数据迁移路由movedask故障发现转移运维flush恢复分布式可扩展clusterproxy一致性数据结构stringrawemstrintbitmapslistziplistlinkedl

2020-11-20 21:18:10 122

原创 tomcat深入剖析之一、源码下载、编译和运行

准备jdk8 tomcat8源码下载:官网 https://tomcat.apache.org/download-80.cgi#8.5.35 idea maven编译将解压的源码添加到idea 添加pom文件,如下,待依赖下载完毕<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://ma...

2020-03-27 02:10:44 181

转载 faststone capture注册码

企业版序列号: name:bluman serial/序列号/注册码:VPISCJULXUFGDDXYAUYF FastStone Capture 注册码 序列号: name/用户名:TEAM JiOO key/注册码:CPCWXRVCZW30HMKE8KQQUXW USER NAME:TEAM_BRAiGHTLiNG_2007 CODE:XPNMF-ISDYF-LCSED-...

2019-07-12 01:02:55 892

原创 手把手教你学习netty源码及原理

手把手教你学习netty源码及原理本文通过netty的简单例子,从源码视角分析netty工作原理。netty是基于reactor的高性能网络nio框架,对nio的阻塞、异步、reactor模式不熟悉的同学可以参考上一篇的博文 https://blog.csdn.net/Houson_c/article/details/86114771。netty的核心组件channel:对应jdkchan...

2019-02-11 23:34:44 1402

原创 java bio/nio/aio实战基于java nio实现双reactor模型nio server

目录unix io模型——理解阻塞和同步java bio nio aio实战基于reactor模式实现nio Servernetty解析和实战,unix io模型——理解阻塞和同步什么是阻塞什么是非阻塞,阻塞==同步?要理解两个概念的区别我们看unix 操作系统的io模型是怎么定义的。操作系统的io操作需要经历两个阶段,io就绪,就是等待数据从网卡输入,os将数据读取内核空...

2019-01-09 02:21:41 516

原创 springclound 之feign原理源码解析一篇就够了

springclound 之feign原理源码解析及使用详解目录feign作用feign是一款基于注解和动态代理实现的声明式restful http客户端,它提供了类似retrofit、 jaxrs的api和使用方式,但他更加简洁、扩展性也很强,能根据需求扩展http请求各个阶段的处理,使用一系列模板简化了这些请求操作,例如头部、请求参数、参数拼装、结果处理、错误处理等。feign基本用法...

2018-12-16 02:27:54 3238

原创 JobIntentService详解及使用

Android o新特性–后台限制Android8.0对系统资源的管控更加严格,添加了后台限制规则。如果满足以下任意条件,应用将被视为处于前台:具有可见 Activity(不管该 Activity 已启动还是已暂停)。具有前台服务。另一个前台应用已关联到该应用(不管是通过绑定到其中一个服务,还是通过使用其中一个内容提供程序)。 例如,如果另一个应用绑定到该应用的服务,那么该应用处于前台:IM

2017-11-06 20:49:09 31404 10

原创 并查集--leetcode200. 岛屿数量

什么是并查集有多个集合,集合内有多个元素 并查集算法用来查找一个元素所属的集合,合并两个元素各自所属的集合。称为并查集算法举例亲戚关系的等价问题,犯罪团伙的头目。 给出很多人的亲戚相互间关系,查找任意两人是否为亲戚。 多个犯罪分子各自在自己的团伙中,找到犯罪团伙的数量。算法思路使用树的数据结构来实现并查集算法。关键点: 1. 初始化集合,刚开始每个元素为一个集合,该元素就代表了该集合;如果有

2017-05-20 22:20:45 781

原创 负权边的最短路径--Bellman-Ford算法及其优化

算法思想核心思想:要求源点到其余顶点的最短路径,根据宽度优先搜索的经验一层一层扩展,这样来考虑,从源点开始经过其相邻的一条边(所有边走一遍)可以得到一个暂时的到各个顶点的最短路径,保存到distance数组中;然后考虑经过在之前的走过边基础上,再走一条边得到可以得到到各顶点的最短路径,就相当于经过两条边得到的最短路径,这里走第二条边时需要将每条边都走一遍才能确定下来走两条边得到的最短路径;最多可以走

2017-05-20 10:04:58 1560

原创 算法:理解单源最短路径——Dijkstra

单源最短路径指一个顶点到其余各个顶点的最短距离,算法思路分析下面以下图为例分析,算法的步骤。 根据上面的单向图,将其转化为邻接矩阵如下所示 dijkstra算法基于贪心思想,要求单源点的最短路径,从未走过的边中取一条最短的。 将设要求源点1 到其他顶点的最短路径,用一个数组dis[6]来保存到各个顶点的距离,初始化为dis[6]={0,1,12,1000,1000,1000}//1000表

2017-05-18 22:13:29 652

原创 算法:理解多源最短路径--floyd算法

算法作用floyd用于求单向图的任意两点之间的最短距离,即通过floyd算法计算之后,图的邻接矩阵中每个(I,j)点的权值是最小的。算法思路以下面的双向图为例,求每对顶点之间的最短路径。 得到其邻接矩阵,在不经过中间点时,顶点只能到达其邻接点,所以这个矩阵就是其每对顶点的最短路径。根据经验知道,两点之间的距离经过第三个点可能是会变短的,并且经过的中间点不同可能得到距离更短的点,因此,floyd

2017-05-17 22:52:53 1554

原创 图遍历--深度优先和广度优先

图的存储方式有两种:邻接矩阵和邻接表,这两种方式都可以用深度优先和广度优先的方式进行遍历。以下面的图为例说明遍历,其临街矩阵如作图所示。注意后面的代码中,顶点从0开始。 1. 深度优先深度优先基于递归的思想,假设开始从顶点1开始遍历,找到其第一个相邻的顶点2,一直往“深”处遍历,找顶点2的相邻顶点4,再找顶点4的相邻点,直到没有相邻点或者相邻点都被访问过进行回溯,同理对其他顶点进行遍历,直到所有顶

2017-05-17 21:11:09 689

原创 深度优先搜索DFS 走迷宫

要求: 1. 障碍物坐标处值为1,可走的为0. 2. 迷宫长宽小于50 3. 找到最短路径 4. 输出路径深度优先的关键点 1. 函数的形式参数 2. 递归结束条件 3. 下一步的坐标计算 4. 判断是否下一步可走 5. 已走过的路做标记 6. 回溯时将当前步标记清除分析: 1. 二维数组表示迷宫,参数需要当前坐标x,y,以及当前是第几步。 2. 结束条件为,找到目标。

2017-05-14 13:53:06 1520

原创 使用递归求全排列

全排列:如123三个数字的全排列:123,132,213,231,312,321;可以使用穷举的方式使用三个for循环来解决。但是如果数字很多或者数字的个数不确定那肯定不能用这种方法。以一个案例来说明。 假设手上有三封信123,三个信箱123,将三封信投递到三个信箱中正是一个全排列问题。信箱1 信箱2 信箱3 (信箱4)信1 信2 信3 假设是以上投法,当信全部投完,需要从信箱

2017-05-14 00:06:58 1143

原创 Linux的启动和关机的流程、引导加载程序

本文为鸟哥中18章笔记18.1 启动流程不能随意关机,多用户的操作系统,关机导致其他在线用户数据丢失后台任务的数据丢失,硬盘损坏启动过程加载bios,获取第一个启动设备的代号读取第一个启动设备的MBR的引导程序grub或lilo的启动信息加载操作系统核心,解压缩、尝试驱动所有硬件设备核心执行init程序并获取运行信息init执行/etc/

2017-05-07 22:25:56 1482

原创 数据结构总结-- 树和二叉树

树的性质1.树的结点数 = 结点度数和 + 1;(n0 + n1 + nm ….+1) 2.度为m的数第i层最多m^(i-1)次方个结点 3.高度为h的m次树,最多(m^h)/(m-1) 4.n个结点的m次树,最小高度logm(n(m-1)+1)二叉树的定义结点定义,根节点,左孩子,右孩子 java代码:/** * 结点类 * * @author Admini

2016-09-03 20:25:18 635 2

原创 十大排序算法总结

排序算法包括:内排序和外排序内排序包括:插入排序,选择排序,交换排序,归并排序,分配排序以下排序均指从小到大排序。均通过测试交换排序冒泡排序思想:从左到右扫描,如果左边大于右边则交换,一次排序之后,最大数就排在了最后面,经过n-1次排序就排好了。时间复杂度:O(n2)/** * 交换数组的两个位置值 ps : 快速排序不能使用想减的方式交换 * * @param ar

2016-09-02 15:41:57 722

原创 查找算法总结:顺序查找,二分查找,分块查找,散列查找,二叉排序树查找

查找算法包括:顺序查找,二分查找,分块查找,散列查找,二叉排序树查找,B树 B树用于查找磁盘数据,这里不进行分析顺序查找思想:从头到尾一个一个比较,简单,时间复杂度O(n)java实现:public static int seqSearch(List<Integer> arr, int key) { for (int i = 0; i < arr.size(); i++) {

2016-08-29 20:56:32 5931

原创 Android 性能优化二 内存优化

Android内存管理是由JVM进行管理的,不熟悉可以参考http://note.youdao.com/yws/public/redirect/share?id=eabcd96832004fb98c00afd34b42cfde&type=falsehttp://note.youdao.com/yws/public/redirect/share?id=59ae46025f3eaac9eee144e8e

2016-08-21 13:52:03 631

原创 Anddroid 性能优化一 UI性能优化

UI性能优化思路就是减少ui加载的时间,提高流畅性。布局优化思路:减少布局层级,减少布局复杂度,减少绘制时间1.在不需要嵌套的情况下,使用LinearLayout或者FrameLayout代替RelativeLayout2.需要嵌套情况下,使用RelativeLayout代替LinearLayout。3.使用 标签标签用于布局的复用,标签用于被复用的布局中,减少布局的嵌套层级。include标签只支

2016-08-21 13:30:13 397

原创 Android 广播

广播是典型的观察者模式,发送发不关心接收方是否收到,也不关心接收方如何处理,实现发送方和接收方的解耦。Android广播分为,普通广播,有序广播,本地广播,和sticky广播普通广播普通广播,通过sendBroadcast()方法发送的广播,优点:消息传递效率高。缺点:1.所有接收器的执行顺序不一致,广播消息的处理结果不能发送给下一个接受者。2.不能终止广播的传播,直到没有接受者为止。使用步骤:1.

2016-08-21 13:12:48 387

原创 Sqlite数据库基础

1.Sqlite基本介绍SQLite是一个Acid的数据库管理系统,不是一般的C/S结构,而是被连接到程序中,成为应用的一部分,减少了跨进程通信的开销,采用写入数据时加锁,但同时也支持多任务操作。SQLite只支持部分触发器,不支持对Alter table的删除和修改列,不进行类型检查。主要优点:1.零配置,无需安装。 2.跨平台, 3.最大支持2T 4.足够小,3万行代码 5.开源主要有两

2016-08-21 11:35:20 1649

原创 HTTP协议简介

HTTP请求响应的过程1.客户端执行请求,从url中解析主机名,有主机名解析IP,解析端口号(默认8080)。2.客户端与服务器建立TCP连接3.客户端通过Socket输出流发送Http请求3.服务器向客户端返回http响应报文,客户端通过输入流解析获得报文内容。4.关闭TCP连接,更新ui或数据HTTP的请求方式7中请求方式:GET,POST,DELETE,PUT,HEAD,TRACE,OPTIO

2016-08-21 11:02:44 547

原创 java多线程和线程池

1.创建线程方法有两种:继承Thread实现run()方法,实现runnable实run()方法,其实thread类也是实现了runnable接口的, TestThread t=new TestThread(); 启动线程t.start(); 同一个线程对象只能启动一次,调用多次start()是无效的,出现异常。实现Runnable接口相对于继承Thread类来说,有如下显著的优势: (1

2016-08-21 10:56:13 881

原创 Android IPC机制之 Android的各种IPC方式

使用BundleBundle实现了Parcelable接口,可以在四大组建之间传递数据,使用Intent将Bundle传递过去,Bundle支持的数据类型: 基本数据类型,实现parcel的数据类型,bundle等使用文件共享数据将对象序列化到文件系统,然后在另一个进程中进行反序列化,虽然得到的对象内容是一样的,但是不是同一个对象了,该方式需要考虑并发读写的问题使用MessagerMessager

2016-08-12 23:48:25 1195

原创 Android IPC机制之 理解Binder

服务端 IBinder类的创建Binder是Android一个类实现了Ibinder接口,Binder也是Android跨进程通信的一种方式,Binder是连接Android各种manager和ManagerService的桥梁,Binder还是服务端和客户端通信的媒介, bindService时,服务端会返回一个包含了服务端一些方法的Binder对象,通过该对象我们可以调用服务端的服务。我们通常

2016-08-12 23:47:36 400

原创 Android IPC机制之IPC概念、Android 多进程和相关基础知识

1.IPC 的基本概念1.1 IPC的使用场景IPC 即 Inter-Process Communication 进程间通信,IPC用于多进程,而Android的多进程情况一般有:1.一个应用需要在多进程模式下运行,例如,一些组件需要再单独的进程中运行,或者,为了增加应用可使用的内存。2.当前应用需要获取其他应用的数据,例如content provider。2.Android的多进程模式Androi

2016-08-12 23:46:41 398

reactorio模型

reactor的线程模型支持高并发请求,是nio的一种设计模式。

2019-01-09

内存bytebuf读写模型

java的bytebuffer必须要进行读写模式的手动切换,否则不能正常读写数据

2019-01-09

服务端的bio 模型

bio模型,每个客户端连接必须要有一个连接与之对应,性能较低

2019-01-09

linux io 模型

linux io模型,区分阻塞非阻塞同步异步的概念,从底层理解io。

2019-01-09

feign原理解析时序图

feign原理解析时序图,展示了springcloud的rpc组件的原理

2018-12-16

空空如也

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

TA关注的人

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