自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Git - SSL_ERROR_SYSCALL 问题解决

最近在使用 Git 时发现在使用 git clone 或 git pull 等需要访问远程仓库的操作时,总是无法连接 GitHub 服务器,很是郁闷。在查阅了多方资料后,总结了这一问题的解决方法,希望能解决这一问题。问题再现系统版本macOS Big Sur 11.2.3使用工具Terminal使用命令$ git clone https://github.com/xxx/xxx.gitfatal: unable to access 'https://github.com/xxx/xxx.gi

2021-10-13 15:52:13 6336 6

转载 MAC下 Node.js +Swagger Editor + Swagger UI 环境搭建

基于MAC的搭建教程:安装node.js下载node.js最新版https://nodejs.org/en/download/点击 安装器 node-v8.12.0.pkg 开始安装,我是一路下一步,安装完成node.js安装后验证npm -vnode -v下载Swagger-Editorhttps://github.com/swagger-api/swagger-editor/releases复制最新 release下载地址如果在终端下载 :wget https://github.

2021-04-18 16:25:41 358

转载 Lua脚本在redis分布式锁场景的运用

锁和分布式锁锁是什么?锁是一种可以封锁资源的东西。这种资源通常是共享的,通常会发生使用竞争的。为什么需要锁?需要保护共享资源正常使用,不出乱子。比方说,公司只有一间厕所,这是个共享资源,大家需要共同使用这个厕所,所以避免不了有时候会发生竞争。如果一个人正在使用,另外一个人进去了,咋办呢?如果两个人同时钻进了一个厕所,那该怎么办?结果如何?谁先用,还是一起使用?特别的,假如是一男一女同时钻进了厕所,事情会怎样呢?反正我是不懂……如果这个时候厕所门前有个锁,每个人都没法随便进入,而是需要先得到锁,才

2021-04-13 09:27:51 370

转载 JWT -- JSON WEB TOKEN

什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。起源说起JWT,我们应该来谈一谈基于token的认证和传统的session认证的区

2021-04-07 17:38:10 135

原创 MySQL中的锁(表锁、行锁,共享锁,排它锁,间隙锁)

InnoDB引擎:并发事务带来的问题相对于串行处理来说,并发事务处理能大大增加数据库资源的利用率,提高数据库系统的事务吞吐量,从而可以支持可以支持更多的用户。但并发事务处理也会带来一些问题,主要包括以下几种情况。更新丢失(Lost Update):当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,由于每个事务都不知道其他事务的存在,就会发生丢失更新问题——最后的更新覆盖了其他事务所做的更新。例如,两个编辑人员制作了同一文档的电子副本。每个编辑人员独立地更改其副本,然后保存更改后的副本,这样就

2021-04-02 14:24:48 93

原创 分布式锁

文章目录mysql中的乐观锁悲观锁使用分布式锁数据库实现:mysql中的乐观锁悲观锁使用现在我有一个购买商品的需求,我们知道当我们购买商品时,后台会进行减库存和增加购买记录的操作。我们分别在无锁和乐观锁和悲观锁进行相应的代码演示来说明问题。建表语句如下:CREATE TABLE `stock` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '' COMMENT '名称'

2021-04-02 11:31:49 61

原创 分布式事务

事务的特性:单机:强一致性(ACID),数据库对事务的支持分布式:强一致性:XA协议,比如seata,atomicos,使用2pc实现,对性能有影响最终一致性(BASE),无法保证实时一致性举例保证下单和写入本地日志表的事务一致性(一台机器上),通过定时任务轮询本地日志表,写入MQ,然后营销服务去消费,保证最终一致性。...

2021-04-02 09:21:43 91

转载 linux 权限赋予

查看权限如下: 通过 ll(ls -l) 命令查看当前文件夹下所有文件和文件夹第一行显示的就是 权限 拥有人 分组权限说明:一个用户、一个组我们来看一看 Linux 权限和所有权模型。我们已经看到每个文件属于一个用户和一个组。这正是 Linux 中权限模型的核心。您可以在 ls -l 清单中查看用户和组:$ ls -l /bin/bash-rwxr-xr-x 1 root wheel 430540 Dec 23 18:27 /bin/bash在这个特殊的示例中,/

2021-04-01 14:31:49 4793

原创 Canal实现缓存一致性

上面我们虽然实现了多级缓存架构,但是问题也出现了,如果数据库中数据发生变更,如何更新Redis缓存呢?如何更新Nginx缓存呢?我们可以使用阿里巴巴的技术解决方案Canal来实现,通过Canal监听数据库变更,并实时消费变更数据,并更新缓存。canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费学习地址:https://github.com/alibaba/canal早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,

2021-03-31 23:49:32 2356 1

原创 OpenResty、Redis实现多级缓存架构

项目运行过程中往往为了提升项目对数据加载效率,一般都会增加缓存,但缓存如何加载效率最高?如何加载对后端服务造成的压力最小?我们需要设计一套完善的缓存架构体系。3.1 多级缓存架构分析用户请求到达后端服务,先经过代理层nginx,nginx将请求路由到后端tomcat服务,tomcat去数据库中取数据,这是一个非常普通的流程,但在大并发场景下,需要做优化,而缓存是最有效的手段之一。缓存优化有,执行过程如下:1:请求到达Nginx,Nginx抗压能力极强。2:Tomcat抗压能力很弱,如果直接将所有请

2021-03-31 23:17:34 669 1

原创 Lua语法学习

Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的.

2021-03-31 23:05:43 307

原创 Nginx实现动静分离站点架构

1 动静分离架构分析我们打开京东商城,搜索手机,查看网络可以发现响应页面后,页面又会发起很多请求,还没有查看多少信息就已经有393个请求发出了,而多数都是图片,一个人请求如此,人多了对后端造成的压力是非比寻常的,该如何降低静态资源对服务器的压力呢?如下图:项目完成后,项目上线如果所有请求都经过Tomcat,并发量很大的时候,对项目而言将是灭顶之灾,电商项目中一个请求返回的页面往往会再次发起很多请求,而绝大多数都是图片或者是css样式、js等静态资源,如果这些静态资源都去查询Tomcat,Tomca

2021-03-31 23:00:51 159 1

原创 OpenResty简介及搭建

1 OpenResty简介OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库(数据库,redis,ElasticSearch)、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系

2021-03-31 22:57:47 965 1

原创 分布式文件存储系统Ceph

​ Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。对比说明TFSFASTDFSMooseFSGlusterFSCEPH开发语言C++CCCC++数据存储方式块文件/Trunk块文件/块对象/文件/块在线扩容支持支持支持支持支持冗余备份支持支持支持支持支持单点故障存在不存在存在不存在不存在易用性安装复杂,官方文档少安装简单,社区相对活跃安装简单官方文档专业化

2021-03-31 21:18:49 732 1

原创 MyBatis Plus

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis Plus特性:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda 形式调

2021-03-31 20:51:51 124

转载 分布式系统开发中需要考虑的问题

1、同一个请求被发送了多次可能出现的地方:(1)和别人接口对接,别人同一份数据发送了多次(2)用户在“提交”按钮里点击了多次(3) 其他可能的一些恶意调用,尤其是涉及支付环节的,危险性非常大解决办法:(1) 在网页端,用户点击“提交”后,将按钮disable掉(2) 对于收到的数据插入到数据库或者其他一些地方,做好唯一键控制能够确定唯一的:订单号,或者几个字段拼凑在一起,或者把时间考虑进去,精确到分钟。整个md5一次,放到一个字段里,加个唯一键2、同一秒内有多次请求这个就是并发控制

2021-03-30 11:36:51 442

转载 CAP理论/AP架构/CP架构

最近有时间研究分布式架构,因为公司使用的Zookeeper,并没有使用Spring Cloud Eureka,所以想探究一下他们之间的区别,于是看到简书里的文章:Spring Cloud Eureka简介及与Zookeeper对比,明显的区别可能就是Zookeeper为CP设计,而Eureka为AP设计,但是对CAP/AP/CP很不理解,于是查阅资料,做一个简单的了解。Eureka服务治理机制与Dubbo服务治理机制的比较FeatureEurekaZookeeper服务健康检查

2021-03-18 12:25:33 239

转载 Spring Cloud Config 实现配置中心

Spring Cloud Config 是 Spring Cloud 家族中最早的配置中心,虽然后来又发布了 Consul 可以代替配置中心功能,但是 Config 依然适用于 Spring Cloud 项目,通过简单的配置即可实现功能。配置文件是我们再熟悉不过的了,尤其是 Spring Boot 项目,除了引入相应的 maven 包之外,剩下的工作就是完善配置文件了,例如 mysql、redis 、security 相关的配置。除了项目运行的基础配置之外,还有一些配置是与我们业务有关系的,比如说七牛.

2021-03-15 10:44:34 109

转载 HashMap、Hashtable、ConcurrentHashMap的原理与区别

jdk1.8发生了一些改变,请参看最新版:http://yuanrengu.com/2020/ba184259.html下面直接来干货,先说这三个Map的区别:HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化初始size为11,扩容:newsize = olesize*2+1计算index的方法:index = (hash & 0x7

2021-03-12 14:30:37 263

转载 docker 搭建 zipkin

拉取镜像docker pull openzipkin/zipkin运行镜像docker run -d --restart always -p 9411:9411 --name zipkin openzipkin/zipkin 访问在浏览器访问:http://ip:9411/zipkin/

2021-03-11 17:25:51 324

转载 Docker 安装 Redis

拉取镜像docker pull redis查看镜像docker imges配置文件首先创建一个redis的目录mkdir /usr/local/redis下载配置文件到指定目录wget -P /usr/local/redis http://download.redis.io/redis-stable/redis.conf修改配置文件vi /usr/local/redis/redis.conf进入文件命令模式后,输入‘/bind 127.0.0.1’查找关键字找到对应的行,

2021-03-11 17:09:33 56

转载 docker安装kafka

1.前置条件:先按zookeeperdocker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper2.正题:安装kafkadocker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=10.9.44.11:2181 -e KAFKA_ADVERTISE

2021-03-11 16:45:12 326

转载 TCP的报文格式及具体内容分析,TCP三次握手(从wireshark捕获到的TCP包观察)

TCP的报文具体内容:从下图可以看到wireshark捕获到的TCP包中的每个字段。TCP三次握手的实例:Wireshark抓包完成后,在wireshark中输入http过滤”tcp.stream eq 5”, 然后选中你要查看的记录,右键然后点击"Follow TCP Stream"(跟踪流)。这样做的目的是为了得到与浏览器打开网站相关的数据包,将得到如下图图中可以看到wireshark截获到了三次握手的三个数据包。第四个包才是HTTP的, 这说明HTTP的确是使用TCP建立连接的。第

2021-02-02 14:25:16 2524

原创 docker-阿里云部署web项目

环境centos7、docker、xshell/royal TSX步骤1. 创建专用网络# 新建一个docker网络docker network create -d bridge my-net# -d 参数指定 Docker 网络类型,有 bridge overlay# 查看docker inspect my-net2. 安装应用(指定网络)# 安装mysqldocker pull mysql:5.7.22# -d:让容器在后台运行,并且打印容器id。# –interactive

2021-02-02 11:37:33 269

原创 本地上传文件到服务器

mac打开命令行,并在shell菜单中选择"新建远程连接"。在弹出的对话框中,选择sftp,并且在最下面的输入框中填入云服务器的地址和用户名,最后点击“连接”按钮。这时,会自动打开一个新的命令行窗口,要求我们输入服务器中对应帐户的密码,我们输入完成后,点击回车。(注意,输入密码时是没有提示的)登录成功后,我们就可以输入命令“ put 本地文件路径 远程路径 ”将本地的文件上传到服务器了。注意:put命令不能直接上传文件夹,如何文件夹过多的话,可以将所有文件及文件夹一起打包上传,上传成功后

2021-01-20 22:00:49 2014

原创 docker安装

1、安装安装必要的依赖sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2配置阿里云镜像https://blog.csdn.net/wohaqiyi/article/details/89335932安装dockersudo yum install -y docker-ce docker-ce-cli containerd.io启动dockersudo systemctl start d

2021-01-18 10:51:08 57

原创 k8s-搭建kubeadm(一主两从)

2.2.1 版本统一Docker 18.09.0kubeadm-1.14.0-0kubelet-1.14.0-0kubectl-1.14.0-0k8s.gcr.io/kube-apiserver:v1.14.0k8s.gcr.io/kube-controller-manager:v1.14.0k8s.gcr.io/kube-scheduler:v1.14.0k8s.gcr.io/kube-proxy:v1.14.0k8s.gcr.io/pause:3.1k8s.gcr.io/etcd

2021-01-18 10:18:01 341

原创 CronExpression表达式详解和案例

1.cron表达式格式:{秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}2. cron表达式各占位符解释:{秒数} ==> 允许值范围: 0~59 ,不允许为空值,若值不合法,调度器将抛出SchedulerException异常“*” 代表每隔1秒钟触发;“,” 代表在指定的秒数触发,比如"0,15,45"代表0秒、15秒和45秒时触发任务“-” 代表在指定的范围内触发,比如"25-45"代表从25秒开始触发到45秒结束触发,每隔1秒触发1次“/” 代表触发

2021-01-15 14:44:23 224

原创 spring注解解析、IOC装配机制及IOC注入bean的五种方式

使用注解定义bean:通过注解的形式,将bean以及相应的属性值放入IOC容器中步骤:1、在该类中使用注解在类文件的开头写上以下中一个(具体哪一个自己看情况选择)(1)、@Component(“id”) :通用的(2)、@Repository(“id”) :dao层注解(3)、@Service(“id”) :service层注解(4)、@Conroller(“id”) :控制器层注解例如,在Student类前面加上@Component(“student”);并且导入相应的包import o

2021-01-15 14:42:54 363

转载 非对称加密概述

@TODO

2021-01-15 14:42:34 833

原创 一个完整的HTTP请求的详细过程

整个流程域名解析 —> 与服务器建立连接 —> 发起HTTP请求 —> 服务器响应HTTP请求,浏览器得到html代码 —> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片) —> 浏览器对页面进行渲染呈现给用户1、域名解析以Chrome浏览器为例:① Chrome浏览器 会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否有https://www.cnblogs.com 对应的条目,

2021-01-15 14:41:14 5657

转载 解决中文乱码汇总

关于JAVA IDE开发工具,Eclipse系列和Intelli IDEA是大部分公司的主要选择,从开发者的选择角度,Intellij IDEA似乎比Eclipse系列更受欢迎一些。当我们使用Intellij IDEA开发时,我们发现出现中文乱码问题,造成中文乱码的根本原因时开发工具和系统环境编码格式不匹配,本篇采用理论结合实际的角度,彻底解决该问题。一 Intellij IDEA乱码问题记录如下图所示,Intellij IDEA显示中文为乱码。二 解决问题(一)问题识别根据Intellij

2021-01-15 14:40:37 31162

原创 Spring中线程安全问题

1. 前言spring中的作用域(scope)有singleton/prototype/request/session/global session。scope选择的原则:有状态(有成员变量)的bean可以设置为prototype作用域,而对无状态(stateless)的bean使用singleton作用域。无状态的单例是线程安全的,容器中只存在一个共享的实例,有状态(stateful)的原型模式(prototype)是线程安全的,每次会重新创建一个实例。有状态的bean有如下方法解决多线程问题,sp

2021-01-15 14:39:24 867

原创 docker-自定义Dockerfile实战

1、创建一个SpringBoot项目2、mvn clean package打成一个jar包3、在docker环境中新建一个目录“first-dockerfile”4、上传“dockerfile-demo-0.0.1-SNAPSHOT.jar”到该目录下,并且在此目录创建Dockerfile5、创建Dockerfile文件,编写内容FROM openjdk:8MAINTAINER kanmeijieLABEL name="dockerfile-demo" version="2.0" auth.

2021-01-15 14:37:45 172

原创 docker-安装使用mssqlserver实战

# 拉取镜像(在docker hub中搜索要拉取的镜像,也可以从其他一些镜像仓库,比如自己的阿里云)docker pull mcr.microsoft.com/mssql/server:2017-latest# 启动一个sqlserver(-v sqlvolume:/var/opt/mssql 这一部分, 用于为这个sql server创建一个volume名为sqlvolume,并且这个容器的位置在docker虚拟的linux的/var/opt/mssql中),-h(to explicitly set

2021-01-15 14:36:19 318

转载 idea搭建spring源码阅读环境

1.安装gradle1.下载gradlehttps://gradle.org/releases/2.把下载好的zip包解压到安装路径3.配置环境变量把环境变量添加到path中安装成功2.下载项目码云项目路径: https://gitee.com/mirrors/Spring-Framework/tree/5.1.x/下载并切换分支命令: git clone https://gitee.com/mirrors/Spring-Framework.git -b 5.1.x3.导入项目

2020-12-22 18:55:20 884 1

转载 负载均衡的原理

本文转载自:负载均衡的原理这是1998年一个普通的上午。一上班,老板就把张大胖叫进了办公室,一边舒服地喝茶一边发难:“大胖啊,我们公司开发的这个网站,现在怎么越来越慢了? ”还好张大胖也注意到了这个问题,他早有准备,一脸无奈地说: “唉,我昨天检查了一下系统,现在的访问量已经越来越大了,无论是CPU,还是硬盘、内存都不堪重负了,高峰期的响应速度越来越慢。”顿了一下,他试探地问道:“老板,能不能买个好机器? 把现在的‘老破小’服务器给替换掉。我听说IBM的服务器挺好的,性能强劲,要不来一台?”(码农

2020-12-12 23:19:43 182 1

转载 vagrant-基础命令总结

Vagrant (Ruby工具)1、简介Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。Vagrant支持单机模拟多台机器,而且支持一个配置文件Vagrntfile就可以跑分布式系统。快速建立产品网络的多机器环境,例如web服务器、db服务器建立一个分布式系统,学习他们是如何交互的测试API和其他组件的通信容灾模拟,网络断网、机器死机、连接超时等情况https:/

2020-11-19 15:52:41 133

空空如也

空空如也

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

TA关注的人

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