自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

舞鹤白沙编码日志

探索、追求、执着、境界、永恒

  • 博客(332)
  • 收藏
  • 关注

原创 不通过WINDOWS直接通过程序建立数据源详解(vb访问注册表)

 不通过WINDOWS直接通过程序建立数据源详解(vb访问注册表)通过程序建立WINDOWS数据源,在VB中可以通过API函数实现,这不是这篇文章所要讨论的,这里主要是利用WshShell对象让VB便捷的操作注册表以达到建立WINDOWS数据源的目的,读完本文,你绝不仅仅是学会如何通过程序建立数据源。 (一)利用WshShell操作注册表理论基础 这可以参照我BLOG中转载的《

2008-01-10 15:50:00 1212

转载 scratch3文件转exe文件方法

6.复制粘贴如下内容到记事本,其中name表示最终生成的exe所显示的文件名称,main表示使用的html文件名称(需要自行修改为第二步生成并修改后的html文件名称),icons表示最终生成的exe所显示的图标(需要自行修改为自己使用的ico文件的名称)。3.自行准备一个icon文件或者使用我给的下载地址里的“测试1.icon”,将该icon文件复制粘贴到解压缩后的文件夹nwjs-v0.52.0-win-x64内部。2.nwjs-v0.52.0-win-x64.zip,用于将html文件打包为桌面应用。

2023-04-03 13:10:43 1307

转载 GitBlit的使用教程

GitBlit的使用教程 本文是基于Win 10系统环境,测试和使用GitBlit: Win 10GitBlit 一、如何使用GitBlit (1)登入已经部署好的GitBlit服务器 在网址输入框输入GitBlit服务器的地址,如图中的1,然后在2处登入用户名和密码 (2)创建一个新的版本库 点击图中1处的“版本...

2022-03-07 23:20:10 10277 4

转载 Ribbon核⼼源码剖析

一. Ribbon⼯作原理重点:Ribbon给restTemplate添加了⼀个拦截器思考:Ribbon在做什么: 当我们访问http://lagou-service-resume/resume/openstate/的时候,ribbon应该 根据服务名lagou-service-resume获取到该服务的实例列表并按照⼀定的负载均衡 策略从实例列表中获取⼀个实例Server,并最终通过RestTemplate进⾏请求访问Ribbon细节结构图(涉及到底层的⼀些组件/类的描述.

2022-02-18 01:07:11 392

转载 Ribbon—— 第一代Spring Cloud核心组件高级应用

一. 关于负载均衡负载均衡⼀般分为服务器端负载均衡和客户端负载均衡 所谓服务器端负载均衡,⽐如Nginx、F5这些,请求到达服务器之后由这些负载均衡 器根据⼀定的算法将请求路由到⽬标服务器处理。 所谓客户端负载均衡,⽐如我们要说的Ribbon,服务消费者客户端会有⼀个服务器 地址列表,调⽤⽅在请求前通过⼀定的负载均衡算法选择⼀个服务器进⾏访问,负 载均衡算法的执⾏是在请求客户端进⾏。 Ribbon是Netflflix发布的负载均衡器。Eureka⼀般配合Ribbon进⾏使⽤,Ri

2022-02-17 23:54:30 230

转载 Eureka核⼼源码剖析

目录一. Eureka Server启动过程观察类头分析三个关注点(一)关注点1(二)关注点2(三)关注点3二. Eureka Server服务接⼝暴露策略三. Eureka Server服务注册接⼝(接受客户端注册服务)四. Eureka Server服务续约接⼝(接受客户端续约)五. Eureka Client注册服务(一)读取配置⽂件(二)启动时从EurekaServer获取服务实例信息(三)注册⾃⼰到EurekaServer(四)开启⼀..

2022-02-17 23:47:10 127

转载 Eureka —— 第一代Spring Cloud核心组件高级应用

一. Eureka介绍注意:服务注册中⼼本质上是为了解耦服务提供者和服务消费者。对于任何⼀个微服务,原则上都应存在或者⽀持多个提供者(⽐如简历微服务部署 多个实例),这是由微服务的分布式属性决定的。 更进⼀步,为了⽀持弹性扩缩容特性,⼀个微服务的提供者的数量和分布往往是动 态变化的,也是⽆法预先确定的。因此,原本在单体应⽤阶段常⽤的静态LB机制就 不再适⽤了,需要引⼊额外的组件来管理微服务提供者的注册与发现,⽽这个组件 就是服务注册中⼼。(一)服务注册中⼼⼀般原理

2022-02-17 21:27:31 250

转载 微服务案例引入及问题剖析

一. 案例说明本部分我们按照普通⽅式模拟⼀个微服务之间的调⽤(后续我们将⼀步步使⽤ Spring Cloud的组件对案例进⾏改造)。拉勾App⾥有这样⼀个功能:“⾯试直通⻋”,当求职⽤户开启了⾯试直通⻋之后,会 根据企业客户的招聘岗位需求进⾏双向匹配。其中有⼀个操作是:为企业⽤户开启 ⼀个定时任务,根据企业录⼊的⽤⼈条件,每⽇匹配⼀定数量的应聘者“投递”到企业 的资源池中去,那么系统在将匹配到的应聘者投递到资源池的时候需要先检查:此 时应聘者默认简历的状态(公开/隐藏),如

2022-02-14 23:40:13 168

转载 微服务架构及Spring Cloud概述

一. 微服务架构(一)互联⽹应⽤架构发展(回顾) 随着互联⽹的发展,⽤户群体逐渐扩⼤,⽹站的流量成倍增⻓,常规的单体架构已 ⽆法满⾜请求压⼒和业务的快速迭代,架构的变化势在必⾏。下⾯我们就以拉勾⽹ 的架构演进为例,从最开始的单体架构分析,⼀步步的到现在的微服务架构。1. 单体应⽤架构在诞⽣之初,拉勾的⽤户量、数据量规模都⽐较⼩,项⽬所有的功能模块都放在⼀ 个⼯程中编码、编译、打包并且部署在⼀个Tomcat容器中的架构模式就是单体应⽤ 架构,这样的架构既简单实 ⽤...

2022-02-14 19:10:52 228

原创 基于Zookeeper实现简易版服务的注册与发现机制

一. 题目要求(一)需求一在基于Netty的自定义RPC的案例基础上,进行改造。基于Zookeeper实现简易版服务的注册与发现机制要求完成改造版本:\1. 启动2个服务端,可以将IP及端口信息自动注册到Zookeeper\2. 客户端启动时,从Zookeeper中获取所有服务提供端节点信息,客户端与每一个服务端都建立连接\3. 某个服务端下线后,Zookeeper注册列表会自动剔除下线的服务端节点,客户端与下线的服务端断开连接\4. 服务端重新上线,客户端能感知到,并且与重新上

2022-02-10 18:22:30 1243

原创 Dubbo进阶(二)Dubbo高级实战

一. SPI(一)SPI简介SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现,简单来说,它就是一种动态替换发现的机制。使用SPI机制的优势是实现解耦, 使得第三方服务模块的装配控制逻辑与调用者的业务代码分离。(二)JDK中的SPIJava中如果想要使用SPI功能,先提供标准服务接口,然后再提供相关接口实现和调用者。这样就可以通过SPI机制中约定好的信息进行查询相应的接口实现。 .

2022-02-10 18:16:23 850

原创 Dubbo进阶(一)之Dubbo基础回顾

一.Dubbo架构概述分布式系统架构解决方案—Dubbo(介绍)_舞鹤白沙编码日志-CSDN博客二. Dubbo入门案例Dubbo快速入门_舞鹤白沙编码日志-CSDN博客Dubbo综合实战演练_舞鹤白沙编码日志-CSDN博客(一)简单入门案例完整代码查看代码(请点击)(二)最接近官方的入门案例注解形式完整代码查看代码(请点击)(三)最接近官方的入门案例XML形式完整代码查看代码(请点击)(四)整合MyBatis实现用户注册的Dubbo入门案例完整代码查看代码(

2022-02-08 15:07:00 1082

转载 dubbo连接zookeeper报Exception in thread “main“ java.lang.IllegalStateException: zookeeper not connected

修改办法方法一:适用于xml配置dubbo的方案。 <dubbo:registry id="registry1" address="zookeeper://localhost:2181" timeout="25000"/>或者 <dubbo:config-center timeout="25000"/>方法二:适用于api配置dubbo的方案。 private static void startWithBootstrap() {

2022-02-08 12:11:27 355

原创 Zookeeper源码分析

一. 源码环境搭建(一)源码下载1. 官方下载网址:zookeeper-release-3.5.4下载地址::https://github.com/apache/zookeeper/tree/release-3.5.4apache-ant-1.10.6-bin下载地址:https://ant.apache.org/bindownload.cgi2. 百度网盘下载地址zookeeper-release-3.5.4下载地址:zookeeper-release-3.5.4.

2022-02-05 15:48:21 1894

原创 zookeeper源码分析之集群模式服务端

集群模式下启动所有的ZK节点启动⼊⼝都是QuorumPeerMain类的main⽅法。 main⽅法加载配置⽂件以后,最终会调⽤到QuorumPeer的start⽅法,来看下:public void runFromConfig(QuorumPeerConfig config) throws IOException, AdminServerException { try { ManagedUtil.registerLog..

2022-02-05 11:47:20 962

原创 zookeeper源码分析之单机模式服务端启动

一. 源码分析前的准备1. 在idea中打开Run/Debug Configurations,2. 添加一个Application3.运⾏主类 org.apache.zookeeper.server.QuorumPeerMain ,将zoo.cfg的完整路径配置在Program arguments。 4. 在VM options配置,即指定到conf⽬录下的log4j.properties:-Dlog4j.configuration=file:/javawork/zooke..

2022-02-05 10:06:25 1159 1

原创 Zookeeper应用场景及深入进阶

一. Zookeeper应⽤场景ZooKeeper是⼀个典型的发布/订阅模式的分布式数据管理与协调框架,我们可以使⽤它来进⾏分布式数据的发布与订阅。另⼀⽅⾯,通过对ZooKeeper中丰富的数据节点类型进⾏交叉使⽤,配合Watcher 事件通知机制,可以⾮常⽅便地构建⼀系列分布式应⽤中都会涉及的核⼼功能,如数据发布/订阅、命名 服务、集群管理、Master选举、分布式锁和分布式队列等。那接下来就针对这些典型的分布式应⽤场景 来做下介绍。(二)数据发布/订阅数据发布/订阅(Publish/Su

2022-02-03 22:17:25 145

原创 Zookeeper环境搭建和基本使用回顾

目录一. Zookeeper简介(一)分布式系统定义及⾯临的问题(二)zookeeper的基本概念二. Zookeeper环境搭建(一)单机模式(二)伪集群模式:(三)集群模式:三. Zookeeper基本使⽤(一)ZooKeeper系统模型1. ZooKeeper数据模型Znode2. ZNode 的类型3. 事务ID4. ZNode 的状态信息5. Watcher--数据变更通知6. ACL--保障数据的安全7. 权限模式:Schem.

2022-02-03 13:50:06 914

转载 分布式理论与分布式架构设计理论

目录一. 分布式架构介绍(一)什么是分布式系统(二)分布式与集群的区别(三)分布式系统特性(四)分布式系统面临的问题​二.分布式理论(一)数据一致性1.什么是分布式数据一致性2. 副本一致性3. 一致性分类(二)CAP定理1.CAP定理介绍2. CAP三者不可能同时满足论证3. CAP三者如何权衡(三)BASE理论三. 分布式一致性协议(一)两阶段提交协议(2PC)1.两阶段提交协议2.2PC执行流程...

2022-02-02 02:29:33 149

原创 RPC框架设计

一. Socket回顾与I/0模型(一)Socket网络编程回顾 1. Socket概述Socket,套接字就是两台主机之间逻辑连接的端点。TCP/IP协议是传输层协议,主要解决数据如何 在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信 息:连接使用的协议、本地主机的IP地址、本地进程的协议端口、远程主机的IP地址、远程进程的协议端口。2

2022-02-02 01:05:05 2071

原创 Netty核心源码剖析(四)Netty消息出站源码流程分析

目录一. 分析入口二. 出站Handler的write方法执行追踪分析三. 出站Handler中的flush方法执行追踪分析​一. 分析入口上图处打上断点以后,首先Debug启动服务端,普通方式启动客户端,客户端启动后,程序停在断点处:接下来我们一直往下跟踪,直到如下图位置:进入pipeline.fireChannelReadComplete()方法继续跟踪:注意:上图继续跟踪后,程序将跳入我们的 NettyServer...

2022-01-29 22:58:12 918 2

原创 Netty核心源码剖析(三)Netty消息入站源码流程分析

目录一. 流程分析(一)流程图(二)netty模型图二. 主要流程源码(一)分析入口(二)处理第一个SelectedKey:连接事件(三)处理第二个SelectedKey:读事件BossGroup主要负责监听. workGroup负责消息处理. 主要看下BossGroup如何将通道交给workGroup的,和如何处理消息读取的.即入站 一. 流程分析(一)流程图(二)netty模型图二. 主要流程源码(一)分析入口首先保持服...

2022-01-29 21:11:22 833

原创 Netty核心源码剖析(二)Netty启动源码流程分析

目录一. 启动流程分析(一)流程图(二)Netty模型图​二. 主要源码跟踪(一)初始化与注册(二)通道初始化​(三)注册通道(四)执行execute方法(五)startThread-->run方法启动线程(六)runAllTasks方法(七)register0方法 (八)ServerBootstrapAcceptor解析一. 启动流程分析 (一)流程图(二)Netty模型图二. 主要源码跟踪(一)初始化与...

2022-01-29 16:32:55 845

原创 Netty核心源码剖析(一)线程组创建源码流程分析

EventLoopGroup 是一组 EventLoop 的抽象,Netty 为了更好的利用多核 CPU 资源,一般会有多 个 EventLoop 同时工作,每个 EventLoop 维护着一个 Selector 实例。 一. 线程组创建源码流程分析线程组创建流程分析:1. 创建线程组EventLoopGroup 2. 根据创建EventLoopGroup 线程组时设置的参数决定在线程组内创建线程的个数,如未写参数,则默认创建的线程为当前主机CPU线程数*2,在实际案例中,一般b

2022-01-29 14:00:49 1001

转载 解决安装Mysql失败:GPG密钥已安装,但是不适用于此软件包的问题

平台:阿里云ECS 操作系统:CentOS-7\CentOS-8 操作步骤: wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm yum -y install mysql57-c...

2022-01-26 14:53:23 14759 18

原创 springboot项目打成war包放入tomcat中运行解析

一. pom配置1. <packaging>war</packaging>2. 去内嵌tomcat<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions&g

2022-01-26 11:25:02 370

转载 分布式集群架构场景化解决⽅案(五)Session共享问题

Session共享及Session保持或者叫做Session⼀致性一. Session问题原因分析出现这个问题的原因,从根本上来说是因为Http协议是⽆状态的协议。客户端和服务端在某次会话中产⽣的数据不会被保留下来,所以第⼆次请求服务端⽆法认识到你曾经来过, Http为什么要设计为⽆状态 协议?早期都是静态⻚⾯⽆所谓有⽆状态,后来有动态的内容更丰富,就需要有状态,出现了两种⽤于 保持Http状态的技术,那就是Cookie和Session。⽽出现上述不停让登录的问题,分析如下图: 场景:.

2022-01-26 10:50:17 85

转载 分布式集群架构场景化解决⽅案(四)分布式调度问题

调度—>定时任务,分布式调度—>在分布式集群环境下定时任务这件事 Elastic-job(当当⽹开源的分布式调度框架)一. 定时任务的场景定时任务形式:每隔⼀定时间/特定某⼀时刻执⾏ 例如:订单审核、出库 订单超时⾃动取消、⽀付退款 礼券同步、⽣成、发放作业 物流信息推送、抓取作业、退换货处理作业 数据积压监控、⽇志监控、服务可⽤性探测作业 定时备份数据 ⾦融系统每天的定时结算 数据归档、清理作业 报表、离线数据分析作业二. 什么是分

2022-01-26 10:40:43 223

原创 Centos 7 安装 JDK-11.0.6

一. jdk下载地址jdk版本:jdk-11.0.6_linux-x64_bin.tar.gz(点击下载)二. 安装1. tar -zxvf jdk-11.0.6_linux-x64_bin.tar.gz 解压后的文件夹名:jdk-11.0.62. mv jdk-11.0.6 /usr3. vi /etc/profile在配置文件最后添加:export JAVA_HOME=/usr/jdk-11.0.6exportPATH=$JAVA_HOME/bin:$PATH.

2022-01-26 01:00:10 1702 1

转载 linux下查看已经安装的jdk 并卸载jdk

一、查看Jdk的安装路径: whereis javawhich java (java执行路径)echo $JAVA_HOMEecho $PATH 备注:如果是windows中,可以使用:set java_home:查看JDK安装路径java -version:查看JDK版本 二、卸载旧版本的JDK: 1. 确定JDK的版本:rpm -qa | grep jdkrpm -qa | grep gcj 可能的结果是:libgcj-4.

2022-01-26 00:18:45 1824

转载 linux下实时查看tomcat运行日志

1、先切换到:cd tomcat/logs 2、tail -f catalina.out 3、这样运行时就可以实时查看运行日志了

2022-01-26 00:15:07 348

转载 SpringBoot 拦截器(Interceptor)的使用

拦截器intercprot  和 过滤器 Filter 其实作用类似在最开始接触java 使用struts2的时候,里面都是filter后来springmvc时就用interceptor没太在意过区别,反正就是起检查作用的,仔细阅读 过滤器(filter)和拦截器(interceptor)的区别 后明白了不少最重要的要记住他们的执行顺序: 先filter 后 intercep...

2022-01-26 00:09:34 793

转载 2021最新版本 在idea中设置可以多次启动同一个启动类

Idea启动允许多实例 第一步 第二步 允许多实例 然后应用

2022-01-26 00:06:29 677

转载 Zookeeper数据查看工具ZooInspector

1、下载https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip;2、解压进入目录ZooInspector\build,运行zookeeper-dev-ZooInspector.jar;imagejava -jar zookeeper-dev-ZooInspector.jar //执行成功后,会弹出java ui clientimage3、点击左上角连接按钮,输入zk服务地址:ip

2022-01-26 00:04:51 2248 1

转载 CentOS7 linux 中提示 bash: ls: 未找到命令

记录一次CentOS7里执行ls命令失败的问题执行ls命令时报找不到命令,原因是环境变量PATH被修改,解决办法:执行    export PATH=/bin:/usr/bin:$PATH 然后ls问题解决!   :)

2022-01-25 23:51:13 1989

转载 linux 下安装安装rz/sz命令

我们在linux上部署代码的时候经常需要上传文件到linux,有时候也需要从linux上下载文件到本地,大部分人都直接借助于ftp工具,然而其实我们可以直接通过rz和sz上传下载文件,但是rz和sz命令不是linux默认自带的命令,需要我们自己安装,那么如何安装呢手动安装wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz #下载lrzsz安装包tar zxvf lrzsz-0.12.20.tar.gz && cd.

2022-01-25 23:47:59 10259

转载 分布式集群架构场景化解决⽅案(三)分布式ID解决⽅案

目录一. UUID(可以⽤)​ 二. 独⽴数据库的⾃增ID(不推荐)三. SnowFlake 雪花算法(可以⽤,推荐)四. 借助Redis的Incr命令获取全局唯⼀ID(首选)(一)Redis安装:(二)Java代码中使⽤Jedis客户端调⽤Reids的incr命令获得⼀个全局的id1. 引⼊jedis客户端jar2. Java代码(此处我们就是连接单节点,也不使⽤连接池)为什么需要分布式ID(分布式集群环境下的全局唯⼀ID)一. UUID(可以...

2022-01-24 10:43:19 252

转载 分布式集群架构场景化解决⽅案(一)集群时钟同步配置

一.集群时钟同步思路(一)分布式集群中各个服务器节点都可以连接互联⽹1. 思路:2. 操作方式#使⽤ ntpdate ⽹络时间同步命令 ntpdate -u ntp.api.bz #从⼀个时间服务器同步时间windows有计划任务 Linux也有定时任务,crond,可以使⽤linux的定时任务,每隔10分钟执⾏⼀次ntpdate命令(二)分布式集群中某⼀个服务器节点可以访问互联⽹或者所有节点都不能够访问互联⽹1. 思路: 2. 操作方式 :.

2022-01-24 08:25:14 53

转载 分布式集群架构场景化解决⽅案(一)一致性Hash问题及解决方案

目录一. 分布式与集群概念回顾二. Hash算法介绍三. Hash算法应⽤场景(一)请求的负载均衡(⽐如nginx的ip_hash策略)(二)分布式存储三. 普通Hash算法存在的问题四. ⼀致性Hash算法五. 手写实现一致性Hash算法(一)普通Hash算法实现(二)⼀致性Hash算法实现(不含虚拟节点)(三)⼀致性Hash算法实现(含虚拟节点)六. Nginx 配置⼀致性Hash负载均衡策略一. 分布式与集群概念回顾参考:分布式系统架构解决.

2022-01-24 00:19:56 168

原创 手写迷你Tomcat升级版(含解题思路及完整代码)

一. 题目要求开发Minicat V4.0,在已有Minicat基础上进一步扩展,模拟出webapps部署效果 磁盘上放置一个webapps目录,webapps中可以有多个项目,例如demo1、demo2、demo3... 每个项目中含有servlet,可以根据请求url定位对应servlet进一步处理。具体的项⽬⽐如demo1中有serlvet(也即为:servlet是属于具体某⼀个项⽬的servlet),这样的话在Minicat初始化配置加载,以及根据请求url查找对应serlvet时都需要进⼀步.

2022-01-23 00:48:00 163

空空如也

空空如也

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

TA关注的人

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