- 博客(122)
- 资源 (29)
- 收藏
- 关注
原创 HTTP 协议系列 专题 【001】
1.了解Web以及网络基础1.1网络基础TCP/IP为了理解HTTP,我们又必要先了解一下TCP/IP协议簇。通常使用的网络(包括互联网)是在TCP/IP协议簇的基础上运作的。而HTTP属于它内部的一个子集。计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标,由哪一边先发起通信,使用那些语言进行通信,怎样结束通信规则都需要实现确定。不同的硬件,操作系统之家的通信,所有的这一切都需要一种规则。而我们把这种规则叫做协议(protocol).协议中存在各式各样的内.
2020-12-16 23:48:06 183
原创 【Java并发编程】线程调用之 FutureTask 代码 简析
多线程调用 分为两种基本情况1.需要返回结果2.不需要返回结果JAVA线程的基础实现不需要返回结果:new Thread(new Runnable(){public void run() { /**具体的内容*/}})需要返回结果:Callable<String> userCall= new UserCall();FutureTask<String> ft= new FutureTask<>(userCall);Thre..
2020-11-22 23:47:07 486 1
原创 【001】dubbo SPI扩展点加载机制
1.加载机制概述dubbo良好的扩展性与两个方面密不可分:1.整个框架中针对不同场景,恰到好处的使用了各种设计模式2.加载机制,基于Dubbo SPI加载机制,让整个框架的接口和具体实现完全解耦,从而奠定了整个框架良好可扩展的基础。提起SPI机制肯定绕不过去 JAVA自带的SPI。JAVA SPI使用了策略模式,一个接口多种实现。我们只声明接口,具体的实现并不在程序中直接确定,而是由程序外的配置掌控,用于具体实现的装配。 (1)声明接口package com.org.w...
2020-11-17 23:43:08 240 3
原创 读书笔记- 韩鹏杰 -《道德经》
要读懂《道德经》得先了解作者的背景,老子是周朝的 史官,属于史官的阶层。现在相当于国家图书馆馆长 ,兼 档案 馆的馆长,以及天文台的台长。1. 图书馆当然是方便读书呢,古代的书是刻在竹简上,别人看不到的很多的著作他都能读到,知识渊博。2.档案馆馆长 其实更为重要,这个人掌管着档案呢,前朝的,本朝的。大家都知道,我们要了解一件事的来龙去脉,了解一个朝代的兴衰更替,哪有比从档案中了解更准确更接近真相的。我们现在很多事情都是通过当时的档案来复盘当时的情况,来进行分析。《论语》中很多都是 学生提问 ..
2020-11-01 23:45:45 697
原创 【IO专栏】I/O 阻塞 、非阻塞、同步、异步总结
IO非JAVA独有的,想要搞明白这些原理要从根来说起,根其实就是操作系统UNIX操作系统下面,I/O 分为5种,同步阻塞I/O;同步非阻塞IO;I/O多路复用;信号驱动I/O;异步I/O这些名字经常听到,常常是感觉自己懂了,但是真正聊起来的时候,又不能几句话清除明了的表达出来。带着以下问题来梳理上面的名字1.这些I/O模型有什么区别?2.同步和阻塞似乎是同一回事,到底有啥不同?3.什么是I/O4.为啥需要I/OI/O 定义所谓I/O就是计算机内存与外部设备拷贝数据的过程,我们
2020-08-17 23:57:47 371
原创 【004】垃圾回收-引用计数法
GC原本是一种”释放怎么都无法被引用对象的机制“。那么人们自然而然地就会想到,可以让所有对象实现记录下”有多少程序引用自己“。让各对象知道自己的”人气指数“,从而让没有人气的对象自己消失,这就是引用计数法(Reference Counting),它是George E.Collins 于1960年研究出来的。 (60年左右可谓是 垃圾回收算法的元年)。引用计数法引入了一个概念,那就是”计数器“。计数器表示的是对象的人气指数,也就是有多少程序引用了这个对象(被引用数量)。计数器是无符号的整数,用于计数器的位
2020-08-10 07:37:35 313
原创 【003】垃圾回收算法-BiBOP、位图标记 、延迟清除法
1.BiBOPBiBOP是Big Bag Of Pages 的缩写。这么说可能比较难懂,用一句话概况就是”将大小相近的对象整理成固定大小的块 进行管理的做法“。上一篇介绍过,GC标记-清除算法中会发生碎片化。碎片化的原因之一就是堆上杂乱散布着大小各异的对象。对此,我们可以用这个方法:把堆分割成固定大小的块,让每个块只能配置同样大小的对象。这就是BiBOP法。上图,3个字的对象被整合分配到左数第一个和第三个块,2个字的对象被整合分配到左数第二个块。像这样配置的对象,就会提高内存的使..
2020-08-09 22:55:45 777
原创 【002】垃圾回收算法之-GC标记-清除算法
世界上首个值得纪念的GC算法那是GC标记-清除算法(Mark Sweeep GC)什么是GC标记-清除算法就如它的字面意思一样,GC标记-清除算法由标记阶段和清除阶段构成。标记阶段是把所有活动对象都做上标记的阶段。清除阶段是把哪些没有标记的对象,也就是非活动对象回收的阶段。通过这两个阶段,就可以令不能利用的内存空间重新得到利用。目录什么是GC标记-清除算法标记阶段在标记阶段中,collector会为堆里的所有活动对象打上标记。为此,我们首先要标记通过根直接引用的对对象。首先我们标记.
2020-08-09 09:20:43 321
原创 【001】垃圾回收的算法与实现
GC的定义GC是Garbage Collection 的简称,中文称为"垃圾回收"。在现实世界中,说到垃圾,指的是那些不读书、不穿的衣服等。这种情况下的”垃圾“指的是自己不用的东西。在GC中,"垃圾"的定义也是如此。GC把程序不用的内存空间视为垃圾。GC要做两件事1.找到内存空间里的垃圾2.回收垃圾,让程序员能再次利用这部分空间满足这两项功能的程序就是GC。GC的常见算法1.1960年,McCarthy在其论文中首次发布了GC算法GC标记-清除算法。2.1960...
2020-08-07 00:11:34 291
原创 【IO专栏】Java IO 分析之高并发IO的底层原理【001】
大家都知道,用户程序进行IO的读写,依赖于底层的IO读写,基本上会用到底层的read&write两大系统调用。在不同操作系统中,IO读写的系统调用的名称可能完全不一样,但是基本功能是一样的。这里涉及到一个基础的知识点:read系统调用,并不是直接从屋里设备把数据读取到内存中;write系统调用,也不是直接把数据写入到物理设备。上层应用无论是调用操作系统的rad,还是调用操作系统的wri...
2020-04-30 23:00:57 267
原创 【RocketMQ】源码研究【005】rocketmq事务消息的应用
事务消息:概念介绍:事务消息:消息队列RocketMQ提供 基于类似2PC 的分布式事务功能,通过消息队列RocketMQ版事务消息能达到分布式事务的最终一致性。半事务消息:暂不能投递的消息,发送方已经成功地将消息发送到了消息队列 RocketMQ 版服务端,但是服务端未收到生产者对该消息的二次确认,此时该消息被标记成“暂不能投递”状态,处于该种状态下的消息即半事务消息。消息...
2020-04-24 18:15:40 254
原创 【RocketMQ】源码系列研究-消息存储Broker(概要设计)
1.RocketMQ存储概要设计 RocketMQ主要存储的文件包括Comitlog文件、ConsumeQueue文件、IndexFIle文件。RocketMQ将所有主题的消息存储在同一个文件中,确保消息发送时顺序写文件,尽最大的能力确保消息发送的高性能与吞吐量。但由于消息中间件一般是订阅机制,这样便给按照消息主题检索代理了极大的不变。为了提高效率,RocketMQ引入了ConsumeQ...
2020-04-02 08:11:58 279
原创 jetbrain idea goland pycharm 学生优惠版申请步骤&方法
jetbrain idea goland pycharm 学生优惠版申请步骤&方法
2022-12-02 12:27:03 2905 1
原创 golang 之 List源码分析
前言go语言中集合容器类相对贫乏,对比语言可以知道 go 的slice 可以和Java的List想对应。go的 List 底层是采用双向链表来实现的,可以类比Java 中的双向链表。1.源码分析之结构定义List结构体定义如下:type List struct { root Element // sentinel list element, only &root, root.prev, and root.next are used len int // .
2021-08-12 23:32:02 505
原创 HTTP、websocket、webrtc系统压测技术选型
1.最近进行系统压力测试 一般面对的 接口类型有1.HTTP接口2.websocket接口 (包含信令)3.媒体流 相关的 RTC接口2.针对HTTP接口压力测试 有以下几种方案:1.Apache Bench 俗称 ab 测试2. jemeter3. postman4. 编写 go脚本 测试 (go 的 协程 在模拟 并发方面具有独特的优势)5.编写 python 脚本进行测试6.编写 nodejs脚本进行测试7.编写Java 脚本进行测试 (开启...
2021-07-13 11:42:13 840
原创 【002】Elasticsearch 核心概念描述
1.近实时 它是一个近实时的数据搜索和分析平台。这意味着从索引文档到可搜索文档都会有一段微小的延迟(通常是1秒以内)。 2.集群 涉及大数据相关的系统都 少不了集群。大数据需要解决 以下几个问题 (1)数据怎样存(2) 如何检索数据 (3)如何展现数据(即,如何发挥数据的价值) 这里的概念也不例外: 集群是一个或多个节点的集合,这些节点将共同拥有完整的数据,并跨节点提供联合索引,搜索和分析的功能。集群由唯一的名称标识 (...
2021-05-09 23:11:45 145
原创 【001】elasticsearch7.x入门实践-简单部署
1.环境准备 Linux 7.9注意:我本机安装的有jdk,并配置相关环境,如果没有相关环境需要参考https://blog.csdn.net/pang_ping/article/details/80570011 先配置环境1.1切换到根目录cd /1.2创建 server目录mkdir server cd /server1.3 下载 elasticsearchwgethttps://artifacts.elastic.co/download...
2021-05-09 08:31:27 256 1
原创 【mysql数据库系列】mysql数据类型以及navicate中宽度设置值
MYSQL支持常用的数据类型:数值类型、日期/时间类型和字符串(字符)类型。1.数值类型数值类型可以分为两类:整型和实数。对于实数,MYSQL支持确切精度的值(定点数)和近似精度的值(浮点数)。确切精度的数值类型有DECIMAL类型,近似精度的数值类型有单精度(FLOAT)或双精度(DOUBLE)两种类型。 (1)整型 整型包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT 下表展示了各种类型的空间占用以及表示的数值范围。...
2020-12-31 23:29:53 3399
原创 《程序员必读之软件架构》
1.什么是架构?本文通过拆解了解软件架构是什么,架构和设计的区别,敏捷的架构意味着什么,以及为什么思考软件架构很重要。在不同人的眼里面“架构”一词的意思大相径庭,互联网上对架构的定义也多如牛毛。如果你问身边人大概得到的结果如下: 模块、连接、依赖和接口大局观改变成本很高的事情难以改变的事情更加兼顾全局的设计接口而非实现审美(比如:艺术一般的整洁代码)概念模型; 满足非功能需求/质量属性;每件事都有“架构”;计划;一定程度的严格和可靠性;蓝图;系统、子系统、交互...
2020-12-24 22:36:31 987
原创 【并发编程】管程 和 信号量 理论浅析
并发编程无论在哪个服务器端语言中都是位居高级进阶位置。1.并发编程面临的问题? 如何解决好 ,分工 、同步(协作)、互斥? 1.1分工 分工就涉及到业务的拆分,这个和我们做项目一样,先进性 需求分析,划分模块,拆任务、评估工期,然后 将任务分配 到个人手里面(线程手里)。 分工完毕后,我们常用多线程、线程池、fork/join方式处理可以并行进行的任务。 1.2 同步 在项目的开发中,具体的任务之间可能有依赖呢,例如你需要调用你同事的某个接口提供服...
2020-11-25 16:20:42 236
原创 【JAVA多线程】001 线程安全的实现方法
1.互斥同步互斥同步(Mutual Exclusion &Synchronization )是常见的一种并发正确性保障手段。同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻指被一个(或者是一些,使用信号量的时候)线程使用。而互斥是实现同步的一种手段,临界区(Critical Section )、互斥量(Mutex) 和信号量(Semaphore) 都是只要的互斥实现方式。因此在这4个字里面,互斥是因,同步是果;互斥是手段,同步是目的。在JAVA中,最基本的互斥同步手段就..
2020-09-20 23:44:26 167
原创 【IO专栏】select函数以及fd_set结构体解析
I/O 多路复用的设计初衷就是解决这样的场景。我们可以把标准输入、套接字等都看做 I/O 的一路,多路复用的意思,就是在任何一路 I/O 有“事件”发生的情况下,通知应用程序去处理相应的 I/O 事件,这样我们的程序就变成了“多面手”,在同一时刻仿佛可以处理多个 I/O 事件。select 函数就是这样一种常见的 I/O 多路复用技术,我们将在后面继续讲解其他的多路复用技术。使用 select 函数,通知内核挂起进程,当一个或多个 I/O 事件发生后,控制权返还给应用程序,由应用程序进行 I/O 事件的
2020-09-08 23:16:58 858
原创 【IO专栏】003网络IO工作机制
网络IO的工作机制数据从一台主机发送到网络中的另外一台主机需要经过很多步骤。首先需要有相互沟通的意向。其次要有能够沟通的物理渠道(物理链路):是通过电话,还是直接面对面交流。再次,双方见面时语言要能够交流,而且双方说话的步调要一致,明白什么时候该自己说话,什么时候该对方说话(通信协议)。重点介绍通信协议和如何完成数据传输。1.TCP状态转化 (1)CLOSED:起始点,在超时或者链接关闭的时候进入此状态。 (2)LISTEN:Server端在等待链接时的状态...
2020-08-27 22:22:51 198
原创 【IO专栏002】JAVA I/O的工作机制
1.引言I/O问题是任何编程语言都无法回避的问题,可以说I/O问题是整个人机交互的核心问题,因为I/O是机器获取和交换信息的主要渠道。2.JAVA I/O 操作类 概括基于字节操作的I/O接口:InputStream 和OutputStream 基于字符操作的I/O接口:Write 和Reader 基于磁盘操作的I/O接口:File 基于网络操作的I/O接口:Socket前两组主要是出阿叔数据的数据格式,后两组主要是传输数据的方式,虽然Socket累并不在java.io包下,但是也仍然需
2020-08-27 00:02:04 107
原创 【spring系列】001-spring核心架构 @IBM许令波
Spring 总共有十几个组件,但是真正核心的组件只有几个,下面是 Spring 框架的总体架构图:从上图可以看出Spring 的核心组件有 三个 Beans 、Core 、Context@许令波详情参看:https://developer.ibm.com/zh/articles/j-lo-spring-principle/Spring 设计理念:上面说了Spring 的三个核心组件,如果从这三个中再选取一个核心的话,那肯定是beans莫属了。其实Spring的核心就是面向be.
2020-08-25 21:35:12 235
原创 【dubbo系列001】dubbo是什么?dubbo解决什么问题?
Dubbo是什么?Dubbo是阿里SOA服务化治理方案的核心框架。它提供了注册中心机制,解耦了消费方和服务方动态发现的问题,并提供高可靠能力,大量采用微内核+富插件设计思想,包括框架自身核心特性都作为扩展点实现,提供灵活的可扩展能力。 dubbo解决什么问题? dubbo的特性总结分类 dubbo的特性 面向接代理的高性能RPC调用 提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节 服务自动注册与发...
2020-08-18 21:30:44 745
原创 【mysql数据库002】MYSQl中的事务以及多版本并发控制
MYSQl中的事务本博客中研究的都是InnoDB引擎1.自动提交MYSQL默认采用自动提交(auto commit)模式,也就是说,如果不是显式的开始一个事务,则每个查询都被当作一个事务执行提交操作。在当前的连接中可以通过设置autocommit变量来启用或者进用自动提交模式。show VARIABLES LIKE 'AUTOCOMMIT';命令来查看是否启用自动提交。MYSQL还可以通过执行SET TRANSCTION ISOLATION LEVEL命令来设置隔离级别。新的..
2020-08-12 22:17:58 202 1
原创 【mysql数据库001】mysql数据库的逻辑架构
MYSQL服务器逻辑架构图最上层的服务并不是MYSQL所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构。例如:链接处理、授权认证、安全等等。第二层架构MYSQL的核心宫鞥你都再这一层,包括查询解析、分析、优化、缓存以及所有的内置函数(例如、日期、时间)所有跨存储引起的功能都在这一层实现:存储过程、触发器、视图第三层包含了存储引擎。存储引擎负责MYSQL中书籍的存储和提取。MYSQL支持多种存储引擎,每个存储引擎都有它的优势和劣势。服务器通过API与存储引擎进行通信。这些.
2020-08-12 16:25:38 287 1
原创 【005】JDK8 JVM 参数 配置 实战
目前生产环境使用的还是JDK8,备份一份后续详细研究具体版本如下:java version "1.8.0_151"Java(TM) SE Runtime Environment (build 1.8.0_151-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)抽出其中一个项目的启动参数如下:su - tomcat -c 'nohup java -Dserver.port=6016 -server.
2020-08-12 11:20:57 424 3
原创 【数据结构与算法】 二叉堆
什么是二叉堆?二叉堆本质上是一种完全的二叉树,它分为两个类型。1.最大堆2.最小堆什么是最大堆?最大堆的任何一个父节点的值,都大于或等于它左、右孩子节点的值。什么是最小堆?最小堆的任何一个父节点的值,都小于或等于它左、右孩子节点的值。二叉堆的根节点叫做堆顶。最大堆和最小堆的特点决定了:最大堆的堆顶是整个堆中的最大元素;最小堆的堆顶是整个堆中的最小元素。二叉堆 常见如下几种操作:1.插入节点2.删除节点3.构建二叉堆这几种操作都基于堆的自我调整。所谓堆的自我调.
2020-07-01 00:01:50 1901
原创 【二叉树的平衡策略】 AVL树
谈起AVL树,就要说起 AVL树的由来 。普通的二叉搜索树到底遇到了什么问题呢?它到底能解决什么问题呢?传统二叉搜索树存在以下问题 1. 二分查找在大多数情况下很快,但是如果 这个二叉树生成的时候有顺序,就可能 单一的偏左,或者偏右,成为普通的单链表查询方式。效率变低。 AVL二叉树 提出的解决方案 1.保留基本的搜索二叉树的规则 2.新增 左右子树平衡因子,也就是说任意节点的左右子树的高度差不能超过1. 在插入 过程中可能遇到 打破这种规则的,也就是说...
2020-06-18 11:55:41 328
原创 【解析 数据结构与算法-二叉树】
(1)为什么要使用二叉树? 因为它通常结合了另外两种数据结构的优点:1:有序数组,2:链表。在树中查找数据项的速度和在有序数组中查找一样快,并且插入数据项和删除数据项也和链表一样。 有序数组优缺点: 优点: 随机访问速度快,用二分查找法速度快。 缺点:插入,和删除都需要移动元素 物理存储结构:一般都是连续的内存地址 (也可以用链式存储结构--特殊情况) 链表优缺点 优点:插入 和删除元素快 缺点:查找数据...
2020-06-08 23:46:38 163
原创 【序列化协议】RESP(Redis Serialization Protocol) Redis序列化协议
RESP 是 Redis 序列化协议的简写。它是一种直观的文本协议,优势在于实现异常简单,解析性能极好。Redis 协议将传输的结构数据分为 5 种最小单元类型,单元结束时统一加上回车换行符号\r\n。1、单行字符串 以 + 符号开头。2、多行字符串 以 $ 符号开头,后跟字符串长度。3、整数值 以 : 符号开头,后跟整数的字符串形式。4、错误消息 以 - 符号开头。5、数组 以 * 号开头,后跟数组的长度。单行字符串 hello world+hello world\r\
2020-05-15 23:21:02 487
原创 常见分布式ID生成策略总结
分布式ID需求1.全局唯一:不能出现重复ID2.高可用:ID生成系统是基础系统,被许多关键系统调用,一旦宕机,就会造成严重影响。1.Java 的UUID方案它是在一定的范围内(从特定的名字空间到全局),唯一的机器生成的标识符,所以UUID在其他语言中也叫做GUID。UUID是经由一定的算法机器生成的,为了保证UUID的唯一性,规范定义了包含网卡,MAC地址,时间戳,名字空间(nameSpace)、随机或伪随机数,时序等元素,以及从这些元素生成UUID的算法。UUID只能由计算机生成.
2020-05-10 23:11:53 472
原创 【IO专栏】多线程的Reactor反应器模式
书接上篇:既然Reactor反应器和Handler处理器,挤在一个线程中会造成非常严重的性能缺陷。那么,可以使用多线程,对基础的反应器模式进行改造和演进。多线程池Reactor 反应器演进多线程池Reactor反应器的演进,分为两个方面:(1)首先是升级Handler处理器。即要使用多线程,又要尽可能的高效率,则可以考虑使用线程池。(2)其次是升级Reactor反应器。可...
2020-05-04 10:15:53 334
ocf电子书获取目录列表
2016-01-27
Freemarker + XML 生成word文档
2014-11-17
java给word文档插入水印并设置保护密码
2014-07-03
Aspose.Words.jdk16_c处理word文档,不带水印版本
2014-06-15
Itext生成带表格,图片的word文档代码,里面包含需要的jar包
2014-06-15
word文档处理
2014-06-14
eeplat上添加kindEditor
2013-06-15
jforum3.0项目需要的jar包
2013-03-24
jforum3.0可以运行的源码
2013-03-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人