自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 线程池ThreadPoolExecutor,从0到0.6

ThreadPoolExecutor是JDK提供的在java.util.concurrent包中的一个用于创建线程池的工具类。

2023-03-07 17:33:25 663

原创 Apache Pulsar 云原生消息中间件之王

pulsar,消息中间件,是一个用于服务器到服务器的消息系统,具有多租户、高性能等优势。pulsar采用发布-订阅的设计模式,producer发布消息到topic,consumer订阅这些topic处理流入的消息,并当处理完成之后发送一个确认。一旦创建订阅,即使consumer断开连接,pulsar仍然可以保存所有消息,在consumer确认消息已处理成功之后才会删除消息。Pulsar 的关键特性如下:Pulsar 的单个实例原生支持多个集群,可在集群间无缝地完成消息复制。

2023-03-03 17:05:30 1414

原创 Spring Security 的前后端分离项目的权限方案,从0到0.8

思路分析①通过前面的分析,我们发现Spring Boot集成了默认的Spring Security之后虽然已经具备了认证授权的功能,但存在两个在实际项目中不适用的问题:默认的登录页面默认的用户名密码②同时,前面我们也说一般web应用的安全管理都是通过两条线完成的,Spring Security也是:认证授权③此外,我们结合前后端分离项目中常用的认证授权流程......

2022-09-01 15:17:37 2764

原创 java函数式编程、Lambad表达式、Stream流、Optional类、函数式接口、方法引用的使用,从0到0.8

java函数式编程、Lambad表达式、Stream流、Optional类、函数式接口、方法引用的使用

2022-08-05 12:08:12 1370

原创 Docker应用,从0到0.8

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。......

2022-08-03 11:05:23 455

原创 下载外网资源慢的解决办法

下载外网资源慢的解决办法!

2022-07-06 17:13:21 11035

原创 装饰器模式,从0到1

装饰器模式:在不改变原有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。

2022-03-19 17:01:45 421 1

原创 zookeeper,从0到0.4

目录一,简介1,工作机制2,数据结构3,Zookeeper集群角色(1)Leader(2)Follower(3)Observer二,集群安装1,下载2,解压3,修改配置4,启动zookeeper5,查看状态6,启动客户端7,退出客户端8,停止zookeeper三,配置文件详解四,命令行客户端使用1,命令行客户端2,查看znode节点信息3,创建znode节点4,修改znode节点的值5,删除znode节点6...

2022-03-17 10:34:45 896 1

原创 Alibaba微服务组件——Naocs配置中心,从0到0.8

Nacos为用户提供包括动态服务发现,配置管理,服务管理等服务基础设施,帮助用户更灵活,更轻松地构建,交付和管理他们的微服务平台,基于Nacos, 用户可以更快速的构建以“服务”为中心的现代云原生应用。Nacos可以和Spring Cloud、Kubernetes/CNCF、Dubbo 等微服务生态无缝融合,为用户提供更卓越的体验。

2022-02-24 11:52:40 858

原创 SpringCloud微服务组件——OpenFeign调用组件,从0到0.6

Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。Feign可以使HTTP请求远程服务时就像调用本地方法一样的体验。它解决了让开发者调用远程接口就像调用本地方法一样,无需关注与远程的交互细节,更无需关注分布式环境开发。

2022-01-25 17:30:09 1173

原创 Spring Cloud NetFlix微服务组件——Ribbon负载均衡器,从0到0.6

Ribbon是一个客户端负载均衡器。Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过LoadBalancer获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。Ribbon也可以实现自定义负载均衡算法。

2022-01-25 10:21:21 799

原创 MyBatis,从0到0.8

学而时习之,不亦说乎?以前只是能在项目中使用,并不懂里面的弯弯绕,而且对mybatis的认识不系统、不深刻,故在此系统的学习一下,并总结下文。

2022-01-18 14:59:10 1514 1

原创 Redis,从0到0.6

基本的理论先学习,然后将知识融会贯通!

2022-01-07 15:01:48 956

原创 Alibaba微服务组件——Nacos服务注册中心,从0到0.5

naocs

2022-01-04 11:38:26 2212 2

原创 Elasticsearch全文搜索引擎,从0到0.6

一,ES简介Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-E...

2021-12-19 22:14:33 1947 1

原创 一点一滴积累23种设计模式的理解

“每一个模式秒速了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次的使用该方案而不必做重复的劳动。”一,什么是设计模式设计模式,Design Pattern,是前人在软件设计和代码开发中通过对常见问题反复试验总结出的解决方案,是解决特定问题的一系列套路或模板,给后人提供了设计、编程、解决问题的思想。软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在.

2021-12-13 21:54:18 163

原创 安卓开发要点简介(部分)

1,Service组件的用法Service和都代表可执行的程序区别:Service一直在后台运行,没有用户界面,具有自己的生命周期开发Service的步骤:先开发一个Service子类在AndroidManifest.xml文件配置该Service配置时通过元素指定它可以被哪些Intent启动Android系统本身提供了大量了Service组件Service组件时可执行的程序,有足迹的生命周期(1)创建①定义一个继承Service子类②在AndroidManifest.xml文件中配置

2021-11-04 14:01:16 251

原创 Linux的JDK、Tomcat、Mysql、Redis、Maven、Nginx安装使用

一,安装JDK1,下载所用版本的JDK官网地址:Java Downloads | Oraclehttps://www.oracle.com/java/technologies/downloads/#java8

2021-11-03 17:35:26 443

原创 Spring AOP 切面编程,从0到0.6

随着Spring框架发展至今天,介绍和讲解Spring AOP的文章、视频等已经遍地都是,本文作者依然本着自我学习之后的梳理的宗旨写下这边文章,故文章结构、逻辑、条理等方面比较随性,若读者觉得不方便阅读学习请移步其他优秀的文章,当然也希望对大家有所帮助。本文依靠Spring官方文档对AOP和Spring AOP的介绍,再加上自己的理解而展开。一,对AOP的理解AOP(Aspect-oriented Programming,面向切片编程);通过于预编译方式和运行期动态代理实现不修改源代码的情

2021-08-15 20:10:39 180

原创 Spring的全局(统一)异常处理

一,什么是全局异常处理二,try...catch的弊端三,异常处理的三种方式1,实现HandlerExceptionResolver接口2,@ExceptionHandler3,@ControllerAdvice+@ExceptionHandler四,

2021-08-12 11:04:10 13320 4

原创 java多线程,从0到1

一,创建线程的方式一——继承Thread类线程类:public class MyThread extends Thread{//1,继承Thread类 //2,重写run方法 @Override public void run() { for(int i = 0;i<20;++i) { System.out.println("id:"+this.getId()+" name:"+this.getName()+" i="+i); } }}public class

2021-07-03 19:56:22 146 1

原创 java反射(Reflection)

一,概述反射机制允许程序在运行期间获得任何类的任何内部信息,并直接操作任意对象的内部属性和方法。正是由于反射机制的存在,使java被视为准动态语言。动态编程语言(Dynamic programming Language):动态语言是指程序在运行时可以改变其结构。比如,新的函数可以被引进,已有的函数可以被删除等在结构上的变化。静态类型语言(Statically Typed Language):静态类型语言数据类型是在编译其间检查的。即是,在写程序时要声明所有变量的数据类型。Class类:

2021-06-19 22:36:58 157

原创 java的注解类型(Annotation)

一,前言注解,在java程序中经常看到的@Override、@Deprecated,在SpringBoot中经常用到的@XX。注释:书写在代码中用以辅助 人 理解代码的文字,不参与程序的运行,对代码没有任何影响。注解:①代码中的特殊标记,以“@注释名”的形式存在于代码中,用以辅助程序的理解代码代码,②程序可以读取注解,对被标注的程序(类、方法、属性等)进行限制、规定如何运行等,③也是一种类的类型(自己的理解,不一定完整准确)。注解在java中的典型应用:通过反射技术获取被注解的代码里的注解,以决定如

2021-06-16 21:16:50 1290 1

原创 简单工厂模式+工厂方法模式+反射优化的工厂模式

平时所说的工厂模式,分为简单工厂模式、工厂方法模式和抽象工厂模式,属于设计模式中的创建型模式。创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象。——摘自百度百科工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。——摘自C语言中文网本想通过定义来进一步理解工厂模式,但看到这个定义之后感觉…,可能理科+计算机+男同志更适合采用图和代码的方式理解知识吧,所以后面我还是通过UM

2021-06-13 22:23:57 365

原创 滑动窗口+leetCode题3

曩 ,遇到滑动窗口的题时往往条件发射似的就用滑动窗口的方法解决,也没有细想什么情况下用;今,慕然回首,发现是时候展现其真正的技术了,总结使知识更清晰牢固嘛;故,认真分析一波滑动窗口这个东西的核心内容、具体操作、应用对象,并结合了一道leetCode上的题3,在深入领悟一下我的领悟。一,滑动窗口根据我的认知知识的顺序,看到滑动窗口首先想到计算机网络中的滑动窗口,于是它的样子呈现在我脑海在中:计算机网络中的滑动窗口:1,窗口:窗口内是一段连续的子序列;2,滑动:窗口向一个方面前进,这个前进是通

2021-05-25 18:56:34 139

原创 HashMap学习总结一之从源码学习HashMap底层原理

以前对HashMap的认识仅限于使用——在遇到可以用key-value形式存储的数据并需要高效的查询效率时便使用java API中的HashMap类,对其底层也只是在阅读一些博客或观看一些视频时获得的片段性的了解。毕竟,HashMap是一个秀外慧中的容器,(外:提供了高效的查询效率,内:众多数据结构的集合,包括哈希、顺序表、单向链表和红黑树),故在此通过尝试阅读源码望对其深入理解。一,类前的注释进入定义代码定位到类定义的头部的位置。看看其提供了什么信息:它是有两个泛型的泛型类,猜测K、V各代表键和

2021-05-21 19:19:31 182

原创 oracle中多行注释“/**/”引发的问题

最近在测试一个sql脚本,出现了一个语句执行的问题。测试发现,脚本文件在PL/SQL命令窗口中执行时,执行结果正常,该文件在windows控制台中执行时,界面和执行bat文件一样非正常显示。因为,执行bat文件也是在windows控制台执行该文件,所以,不能正常显示是因为在windows控制台中执行了文件,即与执行的环境有关。经过一番周折也没有发现语句的问题。后来无意中将“/*”改成 /** 问题便得到了解决。真是奇妙!含有一个星号的/*会被windows控制台(sql plus)解释为“

2020-11-17 19:48:06 2216

原创 Android之Activity的的4中加载模式

一,概述1,为什么要想Activity指定四种加载模式?Android采用Task管理多个Activity,通过一个或多个Task来管理一个应用的每个Activity;每次按下返回键将会从栈顶移除一个Activity。但,Android没有为Task提供API,所以开发人员无法直接操作Task,此时,如果开发人员需要对每一次启动的目标Activity都创建一个新实例、或需要复用已经在栈顶的Activity实例、再或需要让每一个Activity都保存在一个栈中以方便全局复用等这些操作时怎么指定是哪种呢?

2020-10-02 19:07:51 397

原创 Android之Activity生命周期概述与测试方法(横屏时Activity状态怎么变化?)

一、概述Activity的活动状态由Androin以Activity栈的形式管理,当前正在运行的Activity位于栈顶Activity生命周期的状态转换图由Activity生命周期的状态转换图可以看出,Activity存在4种状态和7个用于改变状态的系统或掉方法。4种状态:①运行状态,此时当前Activity位于前台,用户可见,可以获得焦点②暂停状态:其他Activity转入前台,但此Activity依然可见而不能获得焦点③停止状态:Activity变得完全不可见④销毁状态:Activi

2020-10-02 12:28:57 472

原创 Android多媒体应用开发之MP3音乐播放器

一,MediaPlayer类概述MediaPlayer是ANdroid自带的多媒体库,可用于实现音频操作,若结合SurfaceView和VideoView等控件可是实现视频的播放。1,创建MediaPlayer对象,并装载音频文件①可以直接使用new的方式MediaPlayer mp=new MediaPlayer();此时,需要调用setDataSource()方法指定要播放的资源文件,调用prepare(),调用start()进行播放。②使用create的方式MediaPlayer mp

2020-10-01 19:52:48 1013 1

原创 人工智能之状态空间表示法的简单应用之翻转三枚钱币

一,状态空间表示法概述1,状态空间表示法就是用来表示问题及其搜索过程的一种方法。是人工智能中最基本的形式化方法,也是讨论为题求解技巧的基础。2,状态空间表示法的基础是状态和算符(1)状态描述某一类不同事物间的差别而引入的一组最少变量q0,q1,…,qn的有序集合,例如,描述学生,变量可以有年级、班级、姓名、性别、学号……根据要解决的问题,从中选择最少的一组变量,比如:区分所有在坐的同学分别在哪一个班上课(年级、班级);区分在坐的每一位同学(姓名、性别、学号)状态变量:Q=(q0,q1,…,qn

2020-09-28 10:36:11 4965

原创 二叉树的前中后序遍历的递归与迭代算法

一,递归算法二叉树的前、中、后序遍历的思路和程序都非常简单。前中后序遍历的算法结构相同,只需要调整打印的位置。前序遍历:打印根-访问左子树-访问右子树中序遍历:访问左子树-打印根-访问右子树后序遍历:访问左子树-访问右子树-打印根????遍历二叉树的算法中的基本操作是访问结点,所以不论是按照哪一种依次进行遍历,对有n个结点的二叉树,其时间复杂度为O(n).????由于是该算法是递归调用,所需辅助空间是遍历过程中栈的最大容量,即树的深度;一般情况下为O(logn);最坏情况下树的深度为n,则此时

2020-09-06 20:05:51 640

原创 高性能的MySQL

高可用性需要解决的两个问题:一是,如何实现数据共享或同步数据二是,如何处理failover(failover指当服务器死机或出现错误时可以自动切换到其他备用服务器,不影响服务器上业务系统的运行)1,主从复制解决方案数据同步方法采用的是MySQL replication技术一个日志复制过程在复制过程中一台服务器充当主服务器,一台或多台充当从服务器????从服务器到主服务器拉取二进制日志文件,再将日志文件解析成相应的SQL在从服务器上重新执行一遍主服务器的一致性问题:MySQL replica

2020-08-24 19:06:26 208

原创 分布式监控ganglia

1,简介Ganglia是一款为HPC(高性能计算)集群而设计的可扩展性的分布式监控系统监视和显示集群中国节点的个各种状态信息由运行在各个节点上的gmond守护进程采集CPU、内存、硬盘利用率、I/O负载、网络流量情况,然后汇总到gmetad守护进程使用rrdtool存储数据将历史数据以曲线方式通过PHP页面显示特点:良好的可扩展性负载开销低,支持高并发广泛支持分钟操作系统和cpu架构,支持虚拟机2,组成三部分组成gmond:守护进程运行在每一个需要监视的节点收集节点的信息并发送

2020-08-23 21:42:11 211

原创 pssh、pdsh、mussh应用场景简介

1,并行SSH运维工具pssh全称:parallel-ssh用python编写????可以并发在远程服务器上批量执行命令????支持文件并行复制(核心)、远程并行执行命令、杀掉远程主机上的进程使用条件:保证本地主机和要管理的远程主机之间单向信任,即要在本地主机和远程所有主机上配置密钥认证访问附上密钥配置过程:(1)本地主机上创建RSA密钥和公钥mkdir ~/.ssh #在本地主机用户的根目录内创建.ssh目录chomd 700 ~/.ssh #设置读取权限cd ~/.sshssh-

2020-08-23 19:43:12 739

原创 数据安全工具DRBD

DRBD-分布式设备复制基于软件的、基于网络的块复制存储解决方案主要用于对服务器之间的磁盘、分区、逻辑卷等进行镜像当用户将数据保存在本地磁盘时,同时将数据发送到网络中国另一台主机的磁盘上,以此保持本地主机(主节点)和远程主机(备节点)的数据实时同步。1,基本功能核心功能:数据镜像实现方式:通过网络镜像整个磁盘设备或磁盘分区,将一个节点的数据通过网络实时传送到另一个远程节点,保证两个节点数据的一致性特点:实时性,数据复制是立即发生的透明性,同步镜像,本地应用申请写操作时,同时远程主机开始进

2020-08-23 19:06:20 307

原创 高性能web服务器nginx简介

Nginx是一个高性能的HTTP和反向代理服务器软件,是IMAP/POP3/SMTP代理服务器1,Nginx的组成和工作原理Nginx由内核和模块组成内核:设计微小简洁工作,通缩查找配置文件将客户端请求映射到一个location block,location是Nginx配置的一个命令,用于URL匹配模块:核心模块、基础模块、第三方模块Nginx的模块从功能上分为三类:处理器模块、过滤器模块、代理类模块在工作方式上分为:单工作进场,(默认),除主进程外还有一个单线程多工作进程,每个工作

2020-08-23 17:08:02 144

原创 应用JDBC进行数据库开发

1,JDBC的用途与数据库连接发送SQL语句处理语句执行结果同时,JDBC是一种低级的API接口,直接调用SQL语句,在其基础上可以建立起高级API;通过JDBC可以很方便的向各种关系数据库发送SQL语句并获得执行结果2,JDBC体系结构JDBC API:屏蔽不同的数据库驱动程序之间的差别,使得程序设计人员有一个标准的、纯java的数据库程序设计接口,可以使ijava访问任意类型的数据库驱动程序管理器:为应用程序加载数据库驱动程序数据库驱动程序:与具体的数据库相关,用于向数据库提交SQL请

2020-08-22 22:39:14 407

原创 高性能集群软件keepalived

Keepalived主要是通过虚拟路由冗余来实现高可用功能部署和使用简单,所有配置只需要一个配置文件1,Keepalived起初为LVS设计:(服务器章台检测和故障隔离功能)专门用来监控集群几桶中各个服务节点的状态根据TCP/IP参考模型的第三、第四和第五层交换机制检测每个服务节点的状态自动将出现故障的服务节点从集群系统中剔除自动将人工修复好的服务节点重新加入服务器集群中后来加入VRRP功能:(HA cluster功能)VRRP——虚拟路由器冗余协议为了解决静态路由出现的单点故障问题,通

2020-08-22 13:23:08 180

原创 千万级高并发负载均衡软件HAProxy

基于硬件的负载均衡设备,如F5、Big-IP基于软件的负载均衡设备:——基于操作系统的软负载实现,如LVS(基于Linux操作系统)——基于第三方医用的软负载实现,如HAProxy1,HAProxy简介开源的、高性能的、基于TCP(第四层)和HTTP(第七层)优点:①可靠性和稳定性非常好②最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求书为20000,最大数据处理能力可达10Gps③支持多余于8中负载均衡算法,支持session保持④支持虚拟主机功能⑤支持链接

2020-08-22 10:33:58 750

空空如也

空空如也

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

TA关注的人

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