- 博客(42)
- 资源 (9)
- 收藏
- 关注

原创 远程通信协议原理(TCP/IP 协议)
一个 http 请求的整个流程那么在分布式架构中,有一个很重要的环节,就是分布式网络中的计算机节点彼此之间需要通信。这个通信的过程一定会涉及到通信协议相关的知识点,当然大家也可能知道一些,但是我会尽可能的把通信这一块的内容串起来,加深大家的理解。我们每天都在用浏览器访问各种网站,作为用户来说,只需要需要输入一个网址并且正确跳转就行。但是作为程序员,看到的可能就是这个响应背后的整体流程。所以我想通过一个 http请求的整个流程来进行讲解通信的知识负责域名解析的 DNS 服务首先,用户访问一个域名,会
2020-08-11 00:56:37
8806
2

原创 深入浅出java线程池
线程池的概念线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL,ElasticSearch等等线程池解决的核心问题就是资源管理问题。在并发环境下,系统不能够确定在任意时刻中,有多少任务需要执行,有多少资源需要投入。这种不确定性将带来以下若干问题:频繁申请/销毁资源和调度资源,将带来额外的消耗,可能会非常巨大。对资源无限申请缺少抑制手段,易引发系统资源耗尽的风险。系统无法合理管理内部的资源分布,会降低系统的稳定性。为解决资源分配这个问题,线
2020-07-15 01:13:26
6090

原创 PB级规模数据的Elasticsearch统一日志存储冷热分离原理和实践
PB级规模数据的Elasticsearch统一日志存储冷热分离原理和实践一、目标最近在做公司的全量日志收集和检索,需要统一公司各个业务线常用的应用业务日志,统一存储,统一查看,统一前端UI组件,保障查询,写入性能,降低重复开发成本。这里提供一些实践中的心得。一、参考文献1.elastic官方指导手册: link.2.阿里云pb级日志数据分库分表实践: link.3.阿里云冷热节点数据迁...
2020-04-11 17:25:59
22201
1

原创 MYSQL百万级数据分页查询优化实战
MYSQL大数据量分页查询优化一、记一次mysql分页查询优化 最近项目中,需要将公司老的订单日志数据迁移到新的ElasticSearch统一日志存储,我们老日志数据是分库分表存储在mysql数据库中(按天分表),单表数据量在500w左右,本人就写了一个小程序负责mysql到es的数据迁移,功能其实很简单,但其中出现了一些没有考虑到的问题,比如查询的效率问题,在此做下记录。老日志数据如下 数...
2020-04-07 15:47:58
25023

原创 Http协议详解(深入理解)
引入超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted...
2018-09-26 15:12:01
125355
14
原创 详解redis高级特性和工作原理
目标1、学习Redis的一些高级特性,包括发布订阅、事务、Lua脚本等2、掌握Redis的底层原理,包括单线程工作机制、内存回收、持久化发布订阅模式列表的局限前面我们说通过队列的rpush和lpop可以实现消息队列(队尾进队头出),但是消费者需要不停地调用lpop查看List中是否有等待处理的消息(比如写一个while循环)。为了减少通信的消耗,可以sleep()一段时间再消费,但是会有两个问题:1、如果生产者生产消息的速度远大于消费者消费消息的速度,List会占用大量的内存。2、消息的实时性
2020-10-24 18:44:51
826
原创 修改docker镜像并重新推送到镜像仓库
使用场景最近工作中遇到的问题,需要对已有的镜像进行修改并重新上传。具体操作第一步 查看需要修改的镜像docker image ls 镜像tagdocker image ls harborinner.517la.com:1111/dev/cluserappweb:2020-10-09-18-15-17第二步 进入需要修改的镜像docker run -it ‘镜像id’ /bin/sh或者docker run -it ‘镜像的tag’ /bin/shdocker run -it dc48
2020-10-14 18:57:56
15855
原创 超全,超详细的Redis基础,你掌握了多少?
Redis 入门Redis 诞生历程从一个故事开始08年的时候有一个意大利西西里岛的小伙子,笔名antirez(http://invece.org/),创建了一个访客信息网站LLOOGG.COM。有的时候我们需要知道网站的访问情况,比如访客的IP、操作系统、浏览器、使用的搜索关键词、所在地区、访问的网页地址等等。在国内,有很多网站提供了这个功能,比如 CNZZ,百度统计,国外也有谷歌的 GoogleAnalytics。我们不用自己写代码去实现这个功能,只需要在全局的footer里面嵌入一段J
2020-10-07 15:30:31
1394
原创 并发编程(五)常见并发工具的基本原理分析
Condition在前面学习 synchronized 的时候,有讲到 wait/notify 的基本使用,结合 synchronized 可以实现对线程的通信。那么这个时候我就在思考了,既然 J.U.C 里面提供了锁的实现机制,那 J.U.C 里面有没有提供类似的线程通信的工具呢?于是找阿找,发现了一个 Condition 工具类。Condition 是一个多线程协调通信的工具类,可以让某些线程一起等待某个条件(condition),只有满足条件时,线程才会被唤醒Condition 的基本使用Con
2020-08-03 19:25:05
2705
原创 并发编程(四)AQS的底层原理分析
J.U.C 简介Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等。并发包的作者是大名鼎鼎的 Doug Lea。我们在接下来的课程中,回去剖析一些经典的比较常用的组件的设计思想LockLock 在 J.U.C 中是最核心的组件,前面我们讲 synchronized 的时候说过,锁最重要的特性就是解决并发安全问题。为什么要以 Lock 作为切入点呢?如果有同学看过 J.U.C 包中的所有组件
2020-07-28 23:43:44
3129
1
原创 并发编程(三)多线程基础和原理(volatile关键字)
初步认识 Volatile一段代码引发的思考下面这段代码,演示了一个使用 volatile 以及没使用 volatile这个关键字,对于变量更新的影响public class App { public /*volatile*/ static boolean stop=false; public static void main( String[] args ) throws InterruptedException { Thread t1=new Thread((
2020-07-21 01:22:28
2461
原创 并发编程(二)多线程基础和原理(synchronized关键字)
由一个问题引发的思考线程的合理使用能够提升程序的处理性能,主要有两个方面,第一个是能够利用多核 cpu 以及超线程技术来实现线程的并行执行;第二个是线程的异步化执行相比于同步执行来说,异步执行能够很好的优化程序的处理性能提升并发吞吐量同时,也带来了很多麻烦,举个简单的例子多线程对于共享变量访问带来的安全性问题一个变量 i. 假如一个线程去访问这个变量进行修改,这个时候对于数据的修改和访问没有任何问题。但是如果多个线程对于这同一个变量进行修改,就会存在一个数据安全性问题对于线程安全性,本质上是管理对
2020-07-20 15:30:43
2682
原创 并发编程(一)多线程基础和原理
多线程基础 最近,准备回顾下多线程相关的知识体系,顺便在这里做个记录。并发的发展历史最早的计算机只能解决简单的数学运算问题,比如正弦、 余弦等。运行方式:程序员首先把程序写到纸上,然后穿 孔成卡片,再把卡片盒带入到专门的输入室。输入室会有 专门的操作员将卡片的程序输入到计算机上。计算机运行 完当前的任务以后,把计算结果从打印机上进行输出,操 作员再把打印出来的结果送入到输出室,程序员就可以从 输出室取到结果。然后,操作员再继续从已经送入到输入 室的卡片盒中读入另一个任务重复上述的步骤。操作员在机
2020-07-19 01:44:02
4267
原创 面向对象七大设计原则
面向对象设计的七大原则前言在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,我们能要尽量根据 7 条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。面向对象设计原则概述可维护性:指软件能够被理解、改正、适应及扩展的难易程度。可复用性:指软件能够被重复使用的难易程度。面向对象设计的目标之一在于支持可维护性复用,一方面需要实现设计方案或者源代码的复用,另一方面要确保系统能够易于扩展和修改,具有良好的可维护性。面向对象设计原则为支持可维护性复用而诞生
2020-06-15 23:49:37
8137
原创 VUE环境搭建与安装的方法步骤
Vue.js 是什么Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。三种安装方式1.直接用在Vue.js的官网上直接下...
2020-05-08 10:27:25
19564
1
原创 类加载器
类加载器类与类加载器判断类是否“相等”任意一个类,都由加载它的类加载器和这个类本身一同确立其在 Java 虚拟机中的唯一性,每一个类加载器,都有一个独立的类名称空间。因此,比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个 Class 文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那么这两个类就必定不相等。这里的“相等”,...
2020-04-26 21:18:03
14958
原创 类加载的过程
类加载类的加载概念类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构。什么时候才会启动类加载器其实,类加载器并不需要等到某个类被“首次主动使用”时再加载它,JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到了.class文件...
2020-04-20 18:29:44
20476
原创 类文件结构
类文件结构JVM 的“无关性”谈论 JVM 的无关性,主要有以下两个:平台无关性:任何操作系统都能运行 Java 代码语言无关性: JVM 能运行除 Java 以外的其他代码Java 源代码首先需要使用 Javac 编译器编译成 .class 文件,然后由 JVM 执行 .class 文件,从而程序开始运行。JVM 只认识 .class 文件,它不关心是何种语言生成了 .class...
2020-04-16 10:39:12
20756
原创 内存分配与回收策略
内存分配与回收策略对象的内存分配,就是在堆上分配(也可能经过 JIT 编译后被拆散为标量类型并间接在栈上分配),对象主要分配在新生代的 Eden 区上,少数情况下可能直接分配在老年代,分配规则不固定,取决于当前使用的垃圾收集器组合以及相关的参数配置。以下列举几条最普遍的内存分配规则,供大家学习。对象优先在 Eden 分配大多数情况下,对象在新生代 Eden 区中分配。当 Eden 区没有足...
2020-04-15 16:46:50
20719
原创 HotSpot 垃圾收集器
HotSpot 垃圾收集器HotSpot 虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,虽然我们要对各个收集器进行比较,但并非为了挑选出一个最好的收集器。我们选择的只是对具体应用最合适的收集器。新生代垃圾收集器Serial 垃圾收集器(单线程)只开启一条 GC 线程进行垃圾回收,并且在垃圾收集过程中停止一切用户线程(Stop The World)。一般客户端应用所需内存较小,不会...
2020-04-15 16:18:41
20790
原创 垃圾收集策略与算法
垃圾收集策略与算法程序计数器、虚拟机栈、本地方法栈随线程而生,也随线程而灭;栈帧随着方法的开始而入栈,随着方法的结束而出栈。这几个区域的内存分配和回收都具有确定性,在这几个区域内不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收了。而对于 Java 堆和方法区,我们只有在程序运行期间才能知道会创建哪些对象,这部分内存的分配和回收都是动态的,垃圾收集器所关注的正是这部分内...
2020-04-13 21:54:11
20664
原创 HotSpot 虚拟机对象探秘
标题对象的内存布局在 HotSpot 虚拟机中,对象的内存布局分为以下 3 块区域:对象头(Header)实例数据(Instance Data)对齐填充(Padding)对象头对象头记录了对象在运行过程中所需要使用的一些数据:哈希码GC 分代年龄锁状态标志线程持有的锁偏向线程 ID偏向时间戳对象头可能包含类型指针,通过该指针能确定对象属于哪个类。如果对象是一个数...
2020-04-13 21:08:23
20692
原创 Java内存区域
一、运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是 依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范》的规定,Java虚拟机所管理的内存 将会包括以下几个运行时数据区域...
2020-04-13 16:38:38
20683
原创 linux下编译openjdk12
一、为什么要自己编译JDK源码想要窥探Java虚拟机内部的实现原理,最直接的一条路径就是编译一套自己的JDK,通过阅读和 跟踪调试JDK源码来了解Java技术体系的运作。了解技术的本质,提高自己的职场竞争力二、openjdk和jdk的的联系区别从java发展史中我们知道,openjdk是sun公司在2006年年末把Java开源而形成的项目,,例如OracleJDK、Oracle Ope...
2020-04-06 01:08:32
24181
原创 设计模式学习(十五) 桥梁模式
引入定义:桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者独立的变化”。举例:今天我要说说我自己,梦想中的我自己,我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都很赚钱,天天帮我在累加财富,其实是...
2019-04-10 16:04:52
23688
原创 设计模式学习(十四) 建造者模式
引入定义:创建者模式又叫建造者模式,是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。举例:又是一个周三,快要下班了,老大突然又拉住我,喜滋滋的告诉我“牛叉公司很满意我们做的模型, 又签订了一个合同,把奔驰、宝马的车辆模型都交给我我...
2019-04-09 14:52:57
23143
原创 设计模式学习(十三) 抽象工厂模式
引入定义:就是对一组具有相同主题的工厂进行封装(维基百科解释的很到位);例如:生产一台PC机,使用工厂方法模式的话,一般会有cpu工厂,内存工厂,显卡工厂...但是使用抽象工厂模式的话,只有一个工厂就是PC工厂,但是一个PC工厂涵盖了cpu工厂,内存工厂,显卡工厂等要做的所有事;举例:上一节讲到女娲造人,人是造出来了,世界时热闹了,可是低头一看,都是清一色的类型,缺少关爱、仇恨...
2019-03-28 11:07:42
23023
原创 设计模式学习(十二) 多例模式
引入定义:作为对象的创建模式,多例模式中的多例类可以有多个实例,而且多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。特点:所谓的多例模式(Multiton Pattern),实际上就是单例模式的自然推广。作为对象的创建模式,多例模式或多例类有如下的特点:(1)多例类可有多个实例(2)多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。(3)根据是否有实例...
2019-03-14 18:11:08
23562
原创 设计模式学习(十一) 代理模式
引入定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用特点:1.中介隔离作用:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。2.开闭原则,增加功能:代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功能来扩展委托类的功能,这样做我们只需...
2019-03-14 16:08:05
23033
原创 设计模式学习(十) 策略模式
引入定义:其思想是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而是它们可以相互替换。策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能。特点:策略模式体现了面向对象程序设计中非常重要的两个原则:封装变化的概念。 编程中使用接口,而不是使用的是具体的实现类(面向接口编程)。举例:刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)...
2019-03-14 11:28:53
23040
原创 设计模式学习(九) 迭代器模式
引入定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示uml类图这个模式提供了一种方法,可以顺序访问一个聚集对象中的元素,而又不用知道内部是如何表示的。迭代器模式把在元素之间游走的职责交给迭代器,而不是聚合对象。这不仅让聚合的接口和实现变得更简洁,也可以让聚合更专注在它所应该专注的事情上面(也就是管理对象集合),而不必理会遍历的事情。迭代器模式角色:...
2018-10-25 16:31:12
23073
原创 设计模式学习(八) 模板方法模式
引入定义:在一个方法中定义了一个算法的骨架,而将一些一些步骤延迟到子类中。模板方法使得子类可以在不改变算法接口的情况下,重新定义算法中的某些步骤。uml类图这个模式是用来创建一个算法的模板,什么是模板?如你所见的,模板就是一个方法。更具体地说,这个方法将算法定义成一组步骤,其中任何步骤都可以使抽象的,由子类负责实现,这样可以确保算法的结构保持不变,同时由子类提供部分实现。示例...
2018-09-22 15:31:01
23204
原创 设计模式学习(七) 外观模式
引入定义:外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。UML类图这个模式类图我么可以感受到,外观的意图是提供一个简单的接口,好让一个子系统更容易使用。1.Facade 角色 对外提供统一的接口,让客户端访问子系统2.子系统是一个集合或者多个系统,每个子系统都可以被客户端直接调用,或者通过facade调用。示...
2018-09-20 16:40:38
23098
原创 设计模式学习(六) 适配器模式
引入什么是适配器?引用head first 的一幅图它位于插头和插座中间,目的是将欧式插座转换为美式插座,从而让美式插头插进这个插座得到电力。或者可以这么理解:适配器改变了插座的接口,以符合美式笔记本电脑的需求。在面向对象中的适配器,将一个接口转换成另一个接口,以符合客户的期望。定义:将一个类的接口,转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作无闻。UML...
2018-09-18 19:05:40
23175
原创 设计模式学习(五) 装饰者模式
引入本节可以称为 “给爱用继承的人一个全新的设计眼界”。我们即将再度讨论典型的继承滥用问题,在本章学到如何使用对象组合的方式,做到运行时装饰类,一旦你熟悉了装饰的技巧,你将能够在不修改任何底层代码的情况下,给你的对象赋予新的职责。开放-关闭原则:类应该对扩展开放,对修改关闭引用head first定义:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方...
2018-09-17 19:13:18
23070
原创 设计模式学习(四) 工厂模式
引入定义:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。认识工厂模式工厂方法模式(Factory Method Pattern)定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到子类,这样的设计将对象的创建封装其来,以便于得到更松耦合,更有弹性的设计。需要生成的对象叫做产品,生成对象的地方叫做工厂...
2018-09-17 12:05:00
23040
原创 设计模式学习(三) 观察者模式
引入定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,他的所有依赖都会收到通知并自动更新。认识观察者模式例子:报纸和杂志的订阅1.报社的业务就是出版报纸2.向某家报社订阅报纸,只要有新的报纸出版,就会一直为你送报纸3.当你取消了订阅后,将不会为你送新报纸4.只要报社在运营,就会一直有人或单位订阅报纸或取消订阅。出版社+订阅者=观察者 模式UM...
2018-09-14 18:21:38
23163
原创 设计模式学习(二) 命令模式
引入定义:将"请求"封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。UML类图命令模式的角色介绍:Receiver:接收者角色 该类负责具体实施或执行一个请求,说的通俗一点就是,执行具体逻辑的角色,以上面说到的“关机”操作命令为例,其接收者角色就是真正执行各项关机逻辑的底层代码。任何一个类都能成为一个接收者,而接收者类中封装具体...
2018-09-14 16:36:41
23022
原创 设计模式学习(一) 单例模式
引入何为单间模式?简单的描述,用来创建独一无二的,只能有一个实例的对象的入场券。定义:确保一个类只有一个实例,并提供一个全局访问点揭破经典的单例模式实现package com.zpkj.project10;public class Singleton { //利用一个静态变量来记录Singleton的唯一实例 private static Singl...
2018-09-13 16:38:50
23234
boot2docker.iso-v19.03.12.zip
2020-08-05
Rabbitmq.zip
2020-07-15
navicat.zip
2020-07-15
notepad++带插件32位.zip
2020-07-15
SecureCRT.rar
2020-07-15
apache_jmeter_3.0_-_压力测试工具.rar
2020-07-15
redis-windows版本.zip
2020-07-15
ES-ElasticSearch-head-chorm插件.zip
2020-07-15
openjdk12源码.zip
2020-04-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人