自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小城我家

菜鸟成长记

  • 博客(60)
  • 资源 (20)
  • 问答 (1)
  • 收藏
  • 关注

原创 Zookeeper的基本概念

Zookeeper是一个开源的分布式协调服务,设计目标是将那些复杂的并且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集.并以一些简单的接口提供给用户使用.Zookeeper是一个典型的分布式数据一致性解决方案,分布式应用程序,可以基于它实现诸如数据订阅,发布,负载均衡,命名服务,集群管理,分布式锁和分布式队列等功能.集群角色Leader 读写服务Followers 读服务Observer 读服务Zookeeper集群中的所有机器通过Leader选举来选定一台被称为Leader

2020-07-31 20:58:34 180

原创 ZooKeeper如何解决分布式系统⾯临的问题

分布式系统⾯临的问题以一个小团队为例,面临的问题1.通过网络进行信息共享开发Leader在会上把任务分配下去,组员通过Leader的命令或者邮件 之类的系统知道自己要干什么.在分配有变化时,Leader会通知到具体的人,或者再次开会,通过人与人之间的直接沟通,完成信息传递2. 通过共享存储Leader将任务分配放到SVN或者git等上,组员每天去svn,git上拉取最新的任务分配表,然后干活,其中svn,git 就是共享存储,更好一点的做法是,当svn,git文件更新时,触发邮件通知,每个组员再

2020-07-31 20:36:33 137

原创 Windows环境下Zookeeper的安装(单机模式和伪集群模式)

下载Zookeeperhttps://archive.apache.org/dist/zookeeper/这里下载的是3.5.8解压复制config目录中的zoo_sample.cfg 重命名为zoo.cfg修改zoo.cfgtickTime=2000initLimit=10syncLimit=5### 增加下面这个,数据目录与日志目录 dataDir=D:/datacenter/zookeeperdataLogDir=D:/datacenter/zookeeper/log

2020-07-31 15:33:21 134

原创 centos 安装Zookeeper

下载https://archive.apache.org/dist/zookeeper/这里下载3.5.8上传服务器解压、重命名tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz mv apache-zookeeper-3.5.8-bin zookeeperbin目录——zk的可执行脚本目录,包括zk服务进程,zk客户端,等脚本。其中,.sh是Linux环境下的脚本,.cmd是Windows环境下的脚本。conf目录——配置文件目录。zoo_samp

2020-07-30 19:18:51 332

原创 RMI-Java RMI 指的是远程方法调用 (Remote Method Invocation)

RMIJava RMI 指的是远程方法调用 (Remote Method Invocation),是java原生支持的远程调用 ,采用JRMP(JavaRemote Messageing protocol)作为通信协议,可以认为是纯java版本的分布式远程调用解决方案, RMI主要用于不同虚拟机之间的通信,这些虚拟机可以在不同的主机上、也可以在同一个主机上,这里的通信可以理解为一个虚拟机上的对象调用另一个虚拟机上对象的方法组成介绍1.客户端:1)存根/桩(Stub):远程对象在客户端上的代理;2)

2020-07-28 21:42:12 405

原创 搭建Dubbo源码环境

要搭建Dubbo 源码环境,你首先需要下载源码。这里你可以直接从官方仓库 https://github.com/apache/dubbofork一个到自己的仓库从自己仓库下载git clone [email protected]:ln0491/dubbo.git因为目前最新的是 Dubbo 2.7.7 版本,用这个新版本git checkout -b dubbo-2.7.7 dubbo-2.7.7 执行 mvn 命令进行编译mvn clean install -Dmaven.test.ski

2020-07-28 21:01:27 366

原创 分布式理论:分布式事务

数据库事务事务的基本特性:事务有4个非常重要的特性,即我们常说的(ACID)Atomicity(原子性):是说事务是一个不可分割的整体,所有操作要么全做,要么全不做;只要事务中有一个操作出错,回滚到事务开始前的状态的话,那么之前已经执行的所有操作都是无效的,都应该回滚到开始前的状态。Consistency(一致性):是说事务执行前后,数据从一个状态到另一个状态必须是一致的,比如A向B转账(A、B的总金额就是一个一致性状态),不可能出现A扣了钱,B却没收到的情况发生。Isolation(隔离性):多

2020-07-28 21:00:56 62

原创 分布式理论:CAP定理

CAP 定理2000 年7月的时候,加州大学伯克利分校的Eric Brewer 教授提出了 CAP 猜想,2年后,被 来自于麻省理工的Seth Gilbert 和 Nancy Lynch 从理论上证明了猜想的可能性,从此,CAP 定理正式在学术上成为了分布式计算领域的公认定理。并深深的影响了分布式计算的发展CAP 理论含义是,一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A: Availability)和分区容错性(P:Partition tolerance)这三个基本需求

2020-07-28 21:00:39 167

原创 分布式理论:BASE 理论

什么是BASE理论BASE:全称:Basically Available(基本可用),Soft state(软状态),和 Eventually consistent(最终一致性)三个短语的缩写,来自 ebay 的架构师提出BASE是对CAP中一致性和可用性权衡的结果,BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。Basically Available(基本可用)基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性

2020-07-28 21:00:04 506

原创 RPC-基本概念

RPC全称为remote procedure call,即远程过程调用。借助RPC可以做到像本地调用一样调用远程服务,是一种进程间的通信方式比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据。需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用过程。组成一个完整的RPC架构里面包含了四个核心的组件,分别是Client,Clie

2020-07-28 20:58:32 426

原创 分布式理论:一致性

什么是分布式一致性分布式数据一致性,指的是数据在多份副本中存储时,各副本中的数据是一致的。副本一致性分布式系统当中,数据往往会有多个副本。如果是一台数据库处理所有的数据请求,那么通过ACID四原则,基本可以保证数据的一致性。而多个副本就需要保证数据会有多份拷贝。这就带来了同步的问题,因为我们几乎没有办法保证可以同时更新所有机器当中的包括备份所有数据。 网络延迟,即使我在同一时间给所有机器发送了更新数据的请求,也不能保证这些请求被响应的时间保持一致存在时间差,就会存在某些机器之间的数据不一致的情况

2020-07-27 14:21:16 143

原创 nginx 的 ssl 模块安装

我的已经有了nginx,直接进入源码目录./configure --prefix=/usr/local/nginx --with-http_ssl_modulemake使用 make 命令编译(使用make install会重新安装nginx),此时当前目录会出现 objs 文件夹。bjs/src/core/ngx_open_file_cache.o objs/src/core/ngx_crypt.o objs/src/core/ngx_proxy_protocol.o objs/src

2020-07-24 16:11:15 798

原创 搭建elastic-job控制台

https://github.com/apache/shardingsphere-elasticjob

2020-07-24 13:47:39 665

原创 Session共享问题

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

2020-07-23 19:24:33 1086

原创 quartz 简单入门

添加依赖 <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>建立自定义任务public class DemoJob implements

2020-07-22 15:28:43 104

原创 mac 安装homebrew出错 Failed to connect to raw.githubusercontent.com port 443: Connection refused e

macOS安装Homebrew时总是报错(Failed to connect to raw.githubusercontent.com port 443: Connection refused)原因:由于某些你懂的因素,导致GitHub的raw.githubusercontent.com域名解析被污染了。解决办法:通过修改hosts解决此问题。查询真实IP在https://www.ipaddress.com/查询raw.githubusercontent.com的真实IP。修改hostssud

2020-07-22 13:45:22 342

原创 集群时钟同步问题

时钟问题时钟此处指服务器时间,如果集群中各个服务器时钟不⼀致势必导致⼀系列问题,试想 “集群是各个服务器⼀起团队化作战,⼤家⼯作都不在⼀个点上,乱了套! ”举⼀个例⼦,电商⽹站业务中,新增⼀条订单,那么势必会在订单表中增加了⼀条记录,该条记录中应该会有“下单时间”这样的字段,往往我们会在程序中获取当前系统时间插⼊到数据库或者直接从数据库服务器获取时间。那我们的订单⼦系统是集群化部署,或者我们的数据库也是分库分表的集群化部署,然⽽他们的系统时钟缺不⼀致,⽐如有⼀台服务器的时间是昨天,那么这个时候下

2020-07-21 11:27:42 195

原创 普通Hash与一致性Hash

Hash算法应⽤场景Hash算法在分布式集群架构中的应⽤场景Hash算法在很多分布式集群产品中都有应⽤,⽐如分布式集群架构Redis、 Hadoop、 ElasticSearch,Mysql分库分表, Nginx负载均衡等应⽤场景主要有2个请求的负载均衡(⽐如nginx的ip_hash策略)Nginx的IP_hash策略可以在客户端ip不变的情况下,将其发出的请求始终路由到同⼀个⽬标服务器上,实现会话粘滞,避免处理session共享问题如果没有IP_hash策略,那么如何实现会话粘滞?可

2020-07-21 09:35:07 243

原创 nginx安装模块

nginx安装模块https://github.com/replay/ngx_http_consistent_hash下载上传服务器并解压已经安装过Nginx在原来的nginx源码目录中./configure --add-module=/usr/local/nginxmodule/ngx_http_consistent_hash-mastermake不要make install编译好的在objs目录下备份原来的nginx/sbin目录下的文件复制objs目录下的nginx到

2020-07-20 16:16:29 242

原创 centos 安装redis

下载文件http://download.redis.io/releases/上传服务器解压tar -zxvf redis-3.2.10.tar.gzcd redis-3.2.10makesudo vim redis.conf注释掉该行配置,这样在就不会只能本主机访问redis了将bind 127.0.0.1 改成 #bind 127.0.0.1 关闭保护模式protected-mode yes 改成 protected-mode no修改使用守护模式,这样不会独占窗口

2020-07-20 16:10:49 81

原创 CentOS7使用firewalld打开关闭防火墙与端口

firewalld的基本使用启动: systemctl start firewalld查看状态: systemctl status firewalld 停止: systemctl disable firewalld禁用: systemctl stop firewalldsystemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。启动一个服务:systemctl start firewalld.service关闭一个服务:system

2020-07-16 08:27:02 81

原创 centos7安装nginx-代理tomcat测试

http://nginx.org/en/download.html安装依赖yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel上传文件解压tar -zxvf nginx-1.18.0.tar.gz进入目录cd nginx-1.18.0./configure sudo makesudo make install在/usr/local目录下生成nginx目录进入cd nginx/sbin

2020-07-15 21:23:54 218

原创 centos安装tomcat

下载与上传解压与移动tar -zxvf apache-tomcat-7.0.79.tar.gz 移动sudo mv apache-tomcat-7.0.79/ /usr/local/tomcat7-1当前目录/usr/local/tomcat7-1运行进入bin目录运行sudo ./startup.sh报以下错[ln0491@localhost bin]$ sudo ./startup.sh Neither the JAVA_HOME nor the JRE_HOME en

2020-07-15 21:04:36 107

原创 centos安装jdk与配置环境变量

下载JDKjdk-8u141-linux-x64.tar.gzjdk上传至centos上解压 tar -zxvf jdk-8u141-linux-x64.tar.gz移动sudo mv jdk1.8.0_141/ /usr/local/jdk1.8设置环境变量当前路径/usr/local/jdk1.8sudo vim /etc/profile在最下面添加export JAVA_HOME=/usr/local/jdk1.8export JRE_HOME=$JAVA_HOM

2020-07-15 20:47:49 376

原创 Tomcat 性能优化策略

系统性能的衡量指标,主要是响应时间和吞吐量。1)响应时间:执⾏某个操作的耗时;2) 吞吐量:系统在给定时间内能够⽀持的事务数量,单位为TPS(Transactions PerSecond的缩写,也就是事务数/秒,⼀个事务是指⼀个客户机向服务器发送请求然后服务器做出反应的过程。Tomcat优化从两个⽅⾯进⾏1) JVM虚拟机优化(优化内存模型)2) Tomcat⾃身配置的优化(⽐如是否使⽤了共享线程池? IO模型?)JVM虚拟机优化Java 虚拟机的运⾏优化主要是内存分配和垃圾回收策略的优化:

2020-07-15 17:58:01 235

原创 Tomcat类加载机制

引导类加载器 和 扩展类加载器 的作⽤不变系统类加载器正常情况下加载的是 CLASSPATH 下的类,但是 Tomcat 的启动脚本并未使⽤该变量,⽽是加载tomcat启动的类,⽐如bootstrap.jar,通常在catalina.bat或者catalina.sh中指定。位于CATALINA_HOME/bin下Common 通⽤类加载器加载Tomcat使⽤以及应⽤通⽤的⼀些类,位于CATALINA_HOME/lib下,⽐如servlet-api.jarCatalina ClassLoade..

2020-07-15 15:02:53 201

原创 Tomcat 请求流程

2020-07-14 20:22:04 99

原创 Tomcat初始化与启动流程

初始化入口 startup.bat或者startup.shorg.apache.catalina.startup.Bootstrap#mainpublic static void main(String args[]) { synchronized (daemonLock) { if (daemon == null) { // Don't set daemon until init() has completed .

2020-07-14 18:15:34 2309

原创 手写一个迷你版本的Tomcat

迷你版本的Tomcat1.0达成目标 向浏览器输出字符工具类public class HttpProtocolUtil { /** * 200的响应头 * @param length * @return */ public static String getHttpHeader200(long length){ return "HTTP/1.1 200 OK"+"\n"+ "Content

2020-07-14 10:13:11 208

原创 Tomcat-核⼼配置详解-server.xml

#### Tomcat -server.xml结构<!--Server 根元素,创建⼀个Server实例,⼦标签有 Listener、 GlobalNamingResources、Service 中有 Connector Engine Host --><?xml version="1.0" encoding="UTF-8"?><Server port="8005" shutdown="SHUTDOWN"> <Listener classNa

2020-07-13 14:09:43 265 1

原创 Tomcat Servlet 容器 Catalina-简介

Tomcat Servlet 容器 CatalinaTomcat是⼀个由⼀系列可配置(conf/server.xml)的组件构成的Web容器,⽽Catalina是Tomcat的servlet容器从另⼀个⻆度来说, Tomcat 本质上就是⼀款 Servlet 容器, 因为 Catalina 才是 Tomcat 的核⼼ , 其他模块都是为Catalina 提供⽀撑的。 ⽐如 : 通过 Coyote 模块提供链接通信, Jasper 模块提供 JSP 引擎, Naming 提供JNDI 服务, Jul

2020-07-13 11:22:58 465

原创 Tomcat 连接器组件-Coyote简介

简介Coyote 是Tomcat 中连接器的组件名称 , 是对外的接⼝。客户端通过Coyote与服务器建⽴连接、发送请求并接受响应 。Coyote 封装了底层的⽹络通信(Socket 请求及响应处理)Coyote 使Catalina 容器(容器组件)与具体的请求协议及IO操作⽅式完全解耦Coyote 将Socket 输⼊转换封装为 Request 对象,进⼀步封装后交由Catalina 容器进⾏处理,处理请求完成后, Catalina 通过Coyote 提供的Response 对象将结果写⼊输

2020-07-13 11:05:35 1124

原创 Tomcat总体架构-简单介绍

浏览器访问服务器的流程浏览器访问服务器使⽤的是Http协议, Http是应⽤层协议,⽤于定义数据通信的格式,具体的数据传输使⽤的是TCP/IP协议Tomcat 系统总体架构Tomcat处理Http请求的大致流程Tomcat是⼀个Http服务器(能够接收并且处理http请求,所以tomcat是⼀个http服务器)我们使⽤浏览器向某⼀个⽹站发起请求,发出的是Http请求,那么在远程, Http服务器接收到这个请求之后,会调⽤具体的程序(Java类)进⾏处理,往往不同的请求由不同的Java类完成处

2020-07-10 21:04:26 261

原创 Apache Tomcat 源码分析环境搭建

官网下载https://tomcat.apache.org/download-80.cgi这里下载apache-tomcat-8.5.50-src可以选择其它版本添加 pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc

2020-07-10 18:43:19 335

原创 springboot自定义RedisTemplate与RedisCacheManager

RedisTemplate看下源码@Override public void afterPropertiesSet() { super.afterPropertiesSet(); boolean defaultUsed = false; //判断默认序列化是否为空 if (defaultSerializer == null) {//为空就走JDK的序列化方式 defaultSerializer = new JdkSerializationRedisSerializer(

2020-07-09 19:34:46 1580

原创 Spring boot thymeleaf 实现简单-页面国际化

新建Spring boot项目pom.xml文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven

2020-07-09 10:48:34 305

原创 springboot-整合mybatis简单整合

引入依赖<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target>

2020-07-08 21:46:33 122

原创 SpringApplication.run方法-run方法

public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[] args) { return (new SpringApplication(primarySources)).run(args); }run方法 public ConfigurableApplicationContext run(String... args) { //创建一个StopWa..

2020-07-08 15:56:28 4301

原创 SpringApplication.run方法-创建SpringApplication对象

springboot启动类@SpringBootApplicationpublic class Task02Applicaiton { public static void main(String[] args) { SpringApplication.run(Task02Applicaiton.class,args); }}```### run方法```javapublic static ConfigurableApplicationContext run

2020-07-08 14:24:27 399

原创 SpringBootApplication-@ComponentScan

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration //就是一个加了这个Configuration注解标记,可以被Spring扫描到@EnableAutoConfiguration/** * 包扫描器 */@ComponentScan(excludeFilters = { @Filter(type = FilterType.CU.

2020-07-07 21:09:24 636 1

redis-desktop-manager-0.8.8.384.rar

redis-desktop-manager

2021-12-08

expert+one-on-one+j2ee+development+without+ejb中文版.rar

expert+one-on-one+j2ee+development+without+ejb中文版 e

2020-04-27

design-pattern-java.rar

design-pattern-java

2020-04-24

数据结构与算法 Python语言描述_裘宗燕.rar

数据结构与算法 Python语言描述_裘宗燕

2019-06-03

七周七并发模型.rar

七周七并发模型

2019-06-03

图解Java多线程设计模式.rar

图解Java多线程设计模式

2019-06-03

淘宝十年产品事 带书签目录 完整版.rar

淘宝十年产品事 带书签目录 完整版

2019-05-09

需求:缔造伟大商业传奇的根本力量完整版带.rar

需求:缔造伟大商业传奇的根本力量完整版带

2019-05-09

TCP IP详解卷1:协议 原书第2版

TCP IP详解卷1:协议 原书第2版TCP

2019-05-07

TCP IP详解卷1:协议 原书第2版

TCP IP详解卷1:协议 原书第2版

2019-05-07

C Primer Plus 第6版 非扫描版 中文版

C Primer Plus 第6版 非扫描版 中文版

2019-05-07

Netty实战 电子版

Netty实战 电子版

2019-05-07

Unix编程艺术--完整书签版

Unix编程艺术--完整书签版

2019-04-29

Go语言学习笔记

Go语言学习笔记

2019-04-04

Go实战

Go实战

2019-04-04

Go并发编程实战 第2版

Go并发编程实战 第2版

2019-04-04

GoWeb编程GoWeb编程

GoWeb编程GoWeb编程

2019-04-04

【Go程序设计语言】(详细书签、清晰完整版)

【Go程序设计语言】(详细书签、清晰完整版)

2019-04-04

Mybatis技术内幕

Mybatis技术内幕

2019-04-04

疯狂python讲义下载

疯狂python讲义下载

2019-04-04

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

TA关注的人

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