- 博客(117)
- 收藏
- 关注
原创 设计模式5——自定义Spring框架
Spring就是面向Bean的编程(BOP, Bean Oriented Programming),Bean在Spring中处于核心地位。Bean对于Spring的意义就向Object对于OOP的意义一样,Spring中没有Bean也就没有Spring存在的意义。Spring IoC 容器通过配置文件或者注解的方式来管理bean对象之间的依赖关系。为什么Bean如此重要呢?Spring将Bean对象交由一个叫IoC容器进行管理;
2023-03-10 10:16:25 524 1
原创 设计模式4——行为型模式
在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。
2023-03-10 10:16:11 837
原创 设计模式3——结构型模式
由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。定义:将一个类的接口转换成客户端希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的哪些类能一起工作。
2023-03-10 10:12:06 479
原创 设计模式2——创建者模式
需求:设计一个咖啡店点餐系统。设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡(AmericanCoffee)和拿铁咖啡(LatteCoffee)),再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。/*** 咖啡类*/// 加糖System.out.println("加糖");// 加奶System.out.println("加奶");/*** 美式咖啡*/@Overridereturn "美式咖啡";/*** 拿铁咖啡*/
2023-03-10 10:11:45 497
原创 MySQL 进阶
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。-- 在创建表时,指定存储引擎create table 表名(字段1 字段1类型 [comment '字段1注释'],字段2 字段2类型 [comment '字段2注释'],...字段n 字段n类型 [comment '字段n注释']) engine=INNODB [comment '表注释'];-- 查询建表语句 -- MySQL默认存储引擎为InnoDB。
2023-03-10 10:08:07 667
原创 MQTT 5.0
MQTT 是物联网 (IoT) 最常用的消息传递协议。MQTT 代表 MQ 遥测传输。该协议是一组规则,定义了物联网设备如何通过互联网发布和订阅数据。MQTT 用于物联网和工业物联网 (IIoT) 设备之间的消息传递和数据交换,例如嵌入式设备、传感器、工业 PLC 等。该协议是事件驱动的,并使用发布/订阅 (Pub/Sub) 模式连接设备。发送者(Publisher)和接收者(Subscriber)通过 Topics 进行通信,相互解耦。它们之间的连接由 MQTT 代理处理。
2023-03-10 09:56:13 862
原创 MQTT基础知识
MQTT是一个客户端服务器发布/订阅消息的传输协议。它是轻量级的、开放的、简单的,而且设计得很容易实现。这些特点使它在许多情况下都是理想的选择,包括受限制的环境,如机器对机器(M2M)和物联网(IoT)背景下的通信,其中需要较小的代码足迹和/或网络带宽是有优势的。”—— MQTT 3.1.1规范MQTT规范的摘要很好地描述了MQTT的内容。它是一个非常轻量级的二进制协议,由于其最小的数据包开销,与HTTP等协议相比,MQTT在电线上传输数据时表现出色。
2023-03-10 09:52:56 5605
原创 Java Sound Programmer‘s Guide
应用程序开发人员:希望使用音频或 MIDI 编写 Java 应用程序或小程序的软件程序员。大多数读者都属于这一类。服务提供者:扩展 Java Sound 应用程序编程接口 (API) 实现功能的软件模块开发人员。例如,供应商可能会提供新的音频混音器或 MIDI 合成器,或者提供读写新文件格式的能力。Java Sound API 旨在让程序自动访问特定系统上可用的所有此类“插件”模块。API 实现者:开发人员创建 Java Sound API 的新实现。假定读者具有 Java 语言编程的基本知识。
2023-03-10 09:20:23 256
原创 FL Studio 20 Getting Started Manual
每个通道由一个按钮(如上图所示)表示,并包含一个单独的乐器插件或示例。单击按钮打开乐器界面。通道按钮后面通常是16步音序器步骤。如果你喜欢音乐,这些是16个音符。如果没有,可以将每组4步想象为一个节拍,因此16步是基本4x4鼓循环的四个节拍。如果需要,可以单击并拖动通道机架的右下角以显示更多步骤。单击一个步来激活它,这将告诉FL Studio在条或循环中的该点出发乐器。例如,选择了第一个Kick通道的第1、5、9和13步,告诉FL Studio在循环中播放4此Kick鼓声。
2023-03-10 09:15:24 514
原创 Flux数据脚本语言
Flux 的 from() 函数定义了一个 InfluxDB 数据源。它需要一个桶参数。对于此示例,使用 telegraf/autogen,这是 TICK 堆栈提供的默认数据库和保留策略的组合。使用 first() 或 last() 函数返回输入表中的第一个或最后一条记录。
2022-09-06 15:33:08 6394
原创 InfluxDB1.8
为了支持大量的时间序列,即数据库存储的唯一时间序列数量的基数非常高,InfluxData 添加了新的时间序列索引(TSI)。InfluxData 支持客户使用 InfluxDB 数以千万计的时间序列。然而,InfluxData 的目标是扩大到数亿,最终达到数十亿。使用 InfluxData 的 TSI 存储引擎,用户应该能够拥有数百万个独特的时间序列。目标是系列的数量应该不受服务器硬件上的内存量的限制。重要的是,数据库中存在的系列数量对数据库启动时间的影响可以忽略不计。
2022-09-06 13:46:37 2780
原创 JavaWeb开发框架——SSM整合
浏览器输入:localhost:80/account/save,并输入用户名和金额,然后提交。浏览器输入:localhost:80/account/findAll。
2022-08-24 15:33:23 490
原创 Java并发编程学习笔记7——共享模型之工具
让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务,也可以将其归类为分工模式,它的典型实现就是线程池,也体现了经典设计模式中的享元模式。例如,海底捞的服务员(线程),轮流处理每位客人的点餐任务,如果为每位客人都配一名专属的服务员,那么成本就太高了(对比另一种多线程设计模式:Thread-Per-Message)。注意,不同任务类型应该使用不同的线程池,这样能够避免饥饿,并能提升效率。
2022-08-19 16:56:38 298
原创 Java并发编程学习笔记4——共享模型之内存
JMM(JavaMemoryModel),它定义了主存、工作内存等抽象概念,底层对应着CPU寄存器、缓存、硬件内存、CPU指令优化等。
2022-08-08 19:33:27 222
原创 Git分布式版本控制工具
集中式版本控制工具,版本库是集中存放在中央服务器的,team里每个人work时从中央服务器下载代码,是必须联网才能工作,局域网或互联网,个人修改后提交到中央版本库。如:SVN和CVS。分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,不需要联网了,因为版本库就在你自己的电脑上,多人协作只需要将各自的修改推送给对方,就能互相看到对方的修改了。命令如下:一些基本的linux命令:2.1、Git环境配置2.1.1、Git下载与安装下载地址:https://gi
2022-06-22 20:03:39 275
原创 设计模式学习笔记1——概述 & UML图 & 软件设计原则
“设计模式”最初并不是出现在软件设计中,而是被用于建筑领域的设计中。1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任里克斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了253中关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。1990年软件工程界开始讨论设计模式的话题,后来召开了多次关于设计模式的研讨会。知道1995年,艾瑞克·伽马(Erich Gamma)、理查德·海尔姆(Richa
2022-06-17 17:27:39 763
原创 Kafka消息队列学习笔记3——Kafka高级
生产者写入消息到topic,Kafka将依据不同的策略将数据分配到不同的分区中。默认的分配策略,也是使用最多的策略,可以最大限度保证所有消息平均分配到一个分区;如果在生产消息时,key为null,则使用轮序算法均衡地分配分区。随机策略,每次都随机地将消息分配到每个分区。在较早的版本,默认的分区策略就是随机策略,也是为了将消息均衡地写入到每个分区。但后续轮询策略表现更佳,所以基本上很少会使用随机策略。按key分配策略,有可能会出现【数据倾斜】,例如,某个key包含了大量的数据,因为key值一样,所有的数据都将
2022-06-14 11:41:06 988
原创 Kafka消息队列学习笔记2——Kafka入门2
目录1、Java编程操作Kafka1.1、同步生产消息到Kafka中1.1.1、需求1.1.2、准备工作1.1.3、生产者程序开发1.2、从Kafka的topic中消费消息1.2.1、需求1.2.2、准备工作1.2.3、消费者程序开发1.3、异步使用带有回调函数方法生产消息2、Kafka架构2.1、Kafka重要概念2.1.1、broker2.1.2、zookeeper2.1.3、producer(生产者)2.1.4、consumer(消费者)2.1.5、consumer group(消费者组)2.1.6、
2022-06-13 17:06:27 1011
原创 Kafka消息队列学习笔记1——Kafka入门1
Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。Kafka最新定义:Kafka是一个开源的分布式事件流平台(Event Stream Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。目前企业中比较常见的消息队列产品主要有Kafka、ActiveMQ、RabbitMQ、Roc
2022-06-10 13:55:23 1007
原创 Java并发编程学习笔记3——synchronized原理
目录1、共享带来的问题1.1、临界区(Critical Section)1.2、竞态条件(Race Condition)2、synchronize解决方案2.1、应用之互斥2.2、synchronized2.3、面向对象改进3、方法上的synchronized4、变量的线程安全分析4.1、成员变量和静态变量是否线程安全?4.2、局部变量是否线程安全?4.3、常见线程安全类4.3.1、线程安全类方法的组合4.3.2、不可变类线程安全性5、Monitor(锁)概念5.1、Java对象头5.2、Monitor(锁
2022-06-10 09:47:58 1536
原创 Java并发编程学习笔记2——Java线程
例如:1.2、方法2——使用Runnable配合Thread把【线程】和【任务】(要执行的代码)分开。Java8以后可以使用lambda精简代码。1.3、方法3——FutureTask配合ThreadFutureTask能够接收Callable类型的参数,用来处理有返回结果的情况。2、原理之Thread与Runnable的关系 方法1是把线程和任务合并在了一起,方法2是吧线程和任务分开了; 用Runnable更容易与线程池等高级API配合; 用Runnable让任务
2022-06-09 11:41:02 271
原创 Java并发编程学习笔记1——进程与线程
1、进程与线程进程:程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的; 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个线程; 进程就可以视为程序的一个实例,大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(如网易云音乐、360安全卫士等)。线程:一个进程之内可以分为一到多个线程; 一个线程就
2022-05-30 20:13:40 316
原创 Nginx——Nginx实现服务端集群搭建
1、Nginx与Tomcat部署我们知道Nginx在高并发场景和处理静态资源是非常高性能的,但是在实际项目中除了静态资源还有就是后台业务代码模块,一般后台业务代码模块都会被部署在Tomcat,weblogic或者是websphere等web服务器上,那么如何使用Nginx接收用户的请求并把请求转发到后台web服务器?步骤分析:准备Tomcat环境,并在Tomcat上部署一个web项目; 准备Nginx环境,使用Nginx接收请求,并把请求分发到Tomcat上。 upstream we
2022-05-12 17:39:26 5082
原创 Nginx——Nginx缓存集成
1、缓存的概念缓存就是数据交换的缓冲区(称作:Cache),当用户要获取数据的时候,会先从缓存中去查询获取数据,如果缓存中有就会直接返回给用户,如果缓存中没有,则会发请求从服务器重新查询数据,将数据返回给用户的同时将数据放入缓存,下次用户就会直接从缓存中获取数据。缓存其实在很多场景中都有用到,比如:场景 作用 操作系统磁盘缓存 减少磁盘机械操作 数据库缓存 减少文件系统的IO操作 应用程序缓存 减少对数据库的查询 Web服务器缓存 减少对应用服务器请
2022-05-12 11:43:50 963 1
原创 Nginx——Nginx负载均衡
1、负载均衡概述早期的网站流量和业务功能都比较简单,单台服务器足以满足基本的需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也跟着越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,因此需要多台服务器进行性能的水平扩展及避免单点故障出现,那么如何将不同用户的请求流量分发到不同的服务器上呢?1.1、...
2022-05-11 17:39:53 39622 5
原创 Nginx——Nginx反向代理
1、Nginx反向代理概述正向代理代理的对象是客户端,反向代理代理的是服务端,这是两者最大的区别。Nginx既可以实现正向代理,也可以实现反向代理。1.1、Nginx正向代理1、服务端的设置 log_format main 'client send request=>clientIp=$remote_addr serverIp=$host'; server { listen 80; server_name localhost; # 指定日志文件存放位置和格式
2022-05-11 11:42:16 3579 1
原创 Nginx——进阶篇
1、Nginx服务器基础配置实例前面我们已经对Nginx服务器默认配置文件的结构和涉及的基本指令做了详细的阐述。通过这些指令的合理配置,我们就可以让一台Nginx服务器正常工作,并且提供基本的web服务器功能。接下来将通过一个比较完整和最简单的基础配置实例,来巩固下前面所学习的指令及其配置。需求如下:1、有如下访问 http://192.168.200.133:8081/server1/location1 访问的是:index_sr1_location1.html
2022-05-09 17:32:43 1885
原创 Node.js学习笔记1——
1、初识Node.js1.1、Node.js简介1.1.1、什么是Node.jsNode.js是一个基于Chrome V8 引擎的JavaScript运行环境。Node.js的官网地址:https://nodejs.org/zh-cn/1.1.2、Node.js中的JavaScript运行环境V8引擎; 内置API:fs、path、http、JS内置对象、querystring、...注意:浏览器是JavaScript的前端运行环境; Node.js是JavaScript的
2022-05-06 11:54:19 222
原创 Nginx——基础篇
1、Nginx简介Nginx(“engine x”)一个具有高性能的HTTP和反向代理的WEB服务器,同时也是一个POP3/SMTP/IMAP代理服务器,是由伊戈尔·塞索耶夫(俄罗斯人)使用C语言编写的,Nginx的第一个版本是2004年10月4号发布的0.0.0版本。另外值得一提的是伊戈尔·塞索耶夫将Nginx源码进行了开源,这也为Nginx的发展提供了良好的保障。POP3(Post Offic Protocol):邮局协议的第三个版本。 SMTP(Simple Mail Tranfer Pro
2022-05-05 11:47:16 3107
原创 SpringBoot——1、基础篇
1、快速上手SpringBoot1.1、parent开发SpringBoot程序要继承spring-boot-starter-parent,所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的; spring-boot-starter-parent中定义了若干依赖管理,各版本间存在着诸多坐标版本不同; 继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突; 继承parent的形式也可以采用引入依赖的形式实现效果。1.2
2022-04-28 20:18:05 1594
原创 远动监控技术
1、概论1.1、基本概念1.1.1、监控系统凡是基于计算机的生产过程的监视、监测、控制、管理的系统都可称之为监控系统。1.1.2、远动技术监控系统调度端(控制中心)与执行(被控)端之间实现遥控、遥信、遥测、遥调、遥视技术的总称。1.1.3、遥控 YK(Remote Control,Telecontrol)从调度端发出命令以实现远方操作和切换:如开关的“分”,“合”,故障信号的复归等。1.1.4、遥信 YX(Telesignal)将被控站的设备状态信号远距离传送给调度端,如
2022-04-27 11:44:43 4547
原创 电力系统远动及其规约
1、电力系统远动的基本概念1.1、电力系统远动的定义定义:调度控制中心对分布于不同地点的发电厂、变电站等进行监视和控制,这就是电力系统远动,或称远程监控。1.2、电力系统远动的任务任务:将表征电力系统运行状态和各厂、站设备的实时信息采集到调度中心;把调度中心的命令发往相关厂、站,完成对电力设备的控制和调度。1.3、RTU(Remote Terminal Unit)RTU称为远方监控终端,是远离调度端对发电厂或变电所现场信息实现检测和控制的装置。1.4、远动系统远动系统由厂站端
2022-04-26 11:50:17 3121
原创 Netty——进阶
1、粘包与半包TCP以一个段(segment)为单位,每发送一个段就要进行一次确认应答(ack)处理,但如果这么做,缺点是包的往返时间越长性能就越差。为了解决此问题,引入了窗口概念,窗口大小即决定了无需等待应答而可以继续发送的数据最大值。窗口实际就起到一个缓冲区的作用,同时也能起到流量控制的作用。1.1、现象分析粘包现象:发送abc def,接收abcdef。原因:应用层:接收方ByteBuf设置太大(Netty默认1024); 滑动窗口:假设发送方256Bytes表示一个完整报文,但
2022-04-25 11:43:50 1136
原创 IEC104规约
1、IEC104规约简介IEC60870-5-104实际处于应用层协议的位置;基于TCP/IP的应用层协议很多,每一种应用层协议都对应着一个网络端口号,根据其在传输层上使用的是TCP协议(传输控制协议)还是UDP(用户数据报文协议),端口号又分为TCP端口号和UDP端口号(端口号0~65535)。IEC60870-5-104规定传输层使用的是TCP协议。常用的TCP端口有:ftp文件传输协议,使用21号端口;telnet远程登录协议,使用23号端口;SMTP简单邮件传送协议,使用25号端口;http
2022-04-24 17:41:29 24622 3
原创 Netty——入门
1、概述1.1、Netty是什么Netty是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。1.2、Netty的地位Netty在Java网络应用框架中的地位就好比Spring框架在JavaEE开发中的地位。以下的框架都使用了Netty,因为它们有网络通信要求:Cassandra - nosql数据库 Spark - 大数据分布式计算框架 Hadoop - 大数据分布式存储框架 RocketMQ - ali开源的消息队列 ElasticSea
2022-04-22 17:38:16 2109
原创 Netty——NIO基础
现在的互联网环境下,分布式系统大行其道,而分布式系统的根基在于网络编程,而Netty恰恰是Java领域网络编程的王者。如果要致力于开发高性能的服务器程序、高性能的客户端程序,必须掌握Netty,而本课程的目的就是带你进入基于Netty的网络编程世界。1、三大组件NIO(non-blocking io,非阻塞IO)。1.1、Channel & Bufferchannel有一点类似于stream,它就是读写数据的双向通道,可以从channel将数据读入buffer,也可以将buffer的
2022-04-21 11:45:29 1380
原创 数据结构(C语言)之——链队列
#include<stdio.h>#include<stdlib.h>#include<string.h>typedef char ElemType; //定义元素类型typedef struct LinkNode { //链队列结点 ElemType elem; struct LinkNode *next; }LinkNode;typedef struct LinkQueue { LinkNode *front, *rear; //链队列的队首.
2022-04-12 16:36:34 1501
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人