- 博客(28)
- 资源 (16)
- 收藏
- 关注
原创 Gateway服务网关
文章目录网关简介Gateway简介Gateway使用网关简介大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用。这样的架构,会存在着诸多的问题:客户端多次请求不同的微服务,增加客户端代码或配置编写的复杂性认证复杂,每个服务都需要独立认证。存在跨域请求,在一定场景下处理相对复杂。上面的这些问题可以借助API网关来解决,所谓的API网关,就是指系统的统一入口,它封装了应
2021-09-24 15:58:35 486
原创 Nacos服务治理
文章目录服务治理介绍nacos简介nacos使用搭建nacos环境商品服务注册订单服务注册服务间调用负载均衡Ribbon支持的负载均衡基于Feign实现服务调用服务治理介绍先来思考一个问题通过上一章的操作,我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址(ip,端口)等硬编码到了代码中,这种做法存在许多问题:一旦服务提供者地址变化,就需要手工修改代码;一旦是多个服务提供者,无法实现负载均衡功能;一旦服务变得越来越多,人工维护调用关系困难;那么应该怎么解决呢, 这时候就需要通
2021-09-24 13:33:43 941
原创 微服务环境搭建
文章目录案例准备技术选型模块设计微服务调用创建父工程创建基础模块创建用户微服务创建商品微服务创建订单微服务案例准备技术选型maven:3.3.9数据库:MySQL 5.7持久层: SpingData Jpa其他: SpringCloud Alibaba 技术栈模块设计springcloud-alibaba 父工程shop-common 公共模块【实体类】shop-user 用户微服务 【端口: 8071】shop-product 商品微服务 【端口: 8072】shop-order
2021-09-24 09:41:30 163
原创 设计模式--策略模式
策略模式 概念优缺点结构与实现代码实现概念策略模式(Strategy): 该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。优缺点 策略模式的主要优点如下。多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句,如 if…else 语句、switch…case 语句。策略模式提供了一系列的可供重用的算法族,恰当使用
2021-07-18 17:13:19 201
原创 synchronized
synchronized 方法内变量是线程安全实例变量是非线程安全synchronized 同步方法synchronized 错误使用 多个对象多个锁synchronized 方法和锁对象 锁住的是谁synchronized 锁重入 无限套娃不违法synchronized 锁释放 遇异常自动释放synchronized 无法继承 财产可继承 开启财产的钥匙不可以synchronized 使用错误 易出现脏读synchronized 同步代码块synchronized 底层实现方法内变量是线程安全 关于“
2021-07-18 14:41:44 128
原创 排序算法-简单排序
排序算法-简单排序插入排序算法解释核心思想算法模拟程序实现适用说明冒泡排序算法解释核心思想算法模拟程序实现适用说明选择排序算法解释算法模拟程序实现适用说明插入排序算法解释 插入排序(InsertionSort),一般也被称为直接插入排序。插入排序的工作方式非常像人们排序一手扑克牌一样。每次拾起新牌后,人们习惯按照升降序顺序将新牌插入到指定的位置。实际上,每次拿到新牌,大脑会将新牌和手中的已经排好顺序的牌进行比较。只不过大脑运行也很快以至于好像没有进行运算的感觉。核心思想把所有的元素分为两组,
2021-05-09 19:35:26 178
原创 ThreadLocal 使用
ThreadLocal使用ThreadLocal概念ThreadLocal使用基本使用多线程案例ThreadLocal使用场景场景1场景2ThreadLocal概念 ThreadLocal 是 JDK 包提供的,它提供线程本地变量,如果创建 ThreadLocal 变量,那么访问这个变量的每个线程都会有这个变量的一个副本,在实际多线程操作的时候,操作的是自己本地内存中的变量,实现了线程的数据隔离,从而规避了线程安全问题。ThreadLocal使用基本使用ThreadLocal 基本API包括:构
2021-05-02 22:22:40 176
原创 JAVA 线程安全
JAVA 线程同步线程同步6种状态状态转换图状态使用NEWRUNNABLETERMINATEDBLOCKEDWAITINGTIMED_WAITING线程同步 从源码出发,java.lang.Thread 定义了一个内部枚举 java.lang.Thread.State ,该枚举用于罗列 JAVA 线程的所有状态,分别是NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。6种状态 从源码出发,java.lang.Thread 定义了一个内部枚举
2021-04-24 00:54:40 127
原创 JAVA 线程状态
JAVA 线程状态线程状态6种状态状态转换图状态使用线程状态6种状态 从源码出发,java.lang.Thread 定义了一个内部枚举 java.lang.Thread.State ,该枚举用于罗列 JAVA 线程的所有状态,分别是NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。public enum State { NEW, RUNNABLE, BLOCKED, WA
2021-04-19 01:08:42 170 1
原创 JAVA 线程基础
JAVA 多线程基础线程概念进程概念线程概念两者关系继承Thread类实现Runable接口实现Callable接口线程概念进程概念 进程:程序在计算机上的一次执行过程,当运行一个程序,就启动了一个进程。凡是用于完成操作系统的各种功能的进程就是系统进程,而所有由用户启动的进程都是用户进程。运行一个JAVA程序会启动一个虚拟机进程,是计算机资源调用的最小单元。线程概念 线程:进程由一个或者多个线程组成,是独立运行于进程之中的子任务。是操作系统进行CPU调度的最小单位。可理解为线程是进程中的一个最小运
2021-04-18 21:19:19 105
原创 Spring Cloud Config 配置中心
Spring Cloud Config 配置中心Spring Cloud Config 配置中心 在微服务架构中,可能会有成百上千个服务模块,如果每个模块对应都有一个配置文件,那么单纯维护不同环境(生产、测试、开发)每个模块的配置都是一件很痛苦的事情。假如有一个...
2019-06-30 16:19:35 2112
原创 MYSQL优化记录
MYSQL优化记录 记录工作中的一些经验和学习的知识 主要是关于MYSQL的一些优化技巧表的设计是否合理(符合3NF)适当添加索引(index包括主键索引,普通索引,全文索引,唯一索引)分表技术(水平分割,垂直分割)读(select)写(update/delete/insert)分离技术存储过程(为什么)修改mysql配置参数(例如增加最大并发数,调整缓存大小)mysql服务器硬件升
2017-11-20 23:40:16 365
原创 mysql5.6主从复制搭建
1、环境说明: 主服务器系统:centos 从服务器系统:ubuntu 数据库:mysql5.6.35 2、搭建流程: 1)创建连接master服务器的账号mysql > GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO username@’slaveServerIP’ IDENTIFIED BY ‘password’;2)同步主服务器和从服
2017-11-02 23:56:37 239
原创 mysql5.6多实例安装
mysql多实例安装之多配置文件安装 为新实例创建数据目录并赋权#创建两个目录分别作为两个实例的数据目录mkdir -p /data/application/mysql-multi-instance/{mysql3307, mysql3308}#为两个实例的数据目录赋权,避免在初始化数据库时出错chown mysql:mysql -R /data/application/mysql-mult
2017-10-29 20:16:21 718
原创 centos7上编译安装MYSQL5.6
1、MYSQL5.6数据库安装获取mysql5.6软件包wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.35.tar.gz解压tar包tar zxvf mysql-5.6.35.tar.gz安装mysql依赖包yum list|grep ncurses-develyum -y install make gcc-c++ cmake
2017-10-29 15:55:28 958
原创 redis持久化
1.持久化的原因默认情况下,redis数据是存在内存当中,一旦出现程序宕机或者其他意外情况,所有的数据将不存在!redis数据库提供了两种数据持久化的方法来将数据存储到硬盘上,分别是:快照持久化、aof文件持久化。2.两种持久化RDB快照(快照持久化) client 可以使用save或者bgsave命令通知redis做一次快照持久化。save操作是在主线程中保存快照的,由于redis是用一个主线程来
2017-10-19 17:53:02 285
原创 nodejs+redis以最少的代码实现消息队列
1、我的认识: 查阅资料,使用redis实现消息队列主要有两种方法 - 发布订阅模式 - 生产消费模式 这里主要说使用nodejs+redis来实现生产消费模式2、代码实现:生产者实现代码redisCli.lpush('MSGQ', JSON.stringify(message), function(err, reply){ if(err){ console.log('lpu
2017-10-19 16:42:13 5834
原创 hiredis c客户端
1.hiredis 同步客户端typedef struct ReplyHandleFunc { ReplyRet (*string_handle_func)(size_t, char*); ReplyRet (*array_handle_func)(size_t, struct redisReply**); ReplyRet (*integer_ha
2016-10-28 18:23:02 518
原创 c字符和字符串操作
#include<stdio.h>#include<string.h>#include<stdlib.h>//统计字符串中某个字符出现的次数size_t char_appear_count(char* srcString, char findChar){ size_t countRet = 0; char *q = srcString; while
2016-05-28 23:33:49 365
原创 通用单链表C实现
/************************************************************************* > File Name: linklist.c > Author: yaomianwei > Mail: 13642245956@163.com > Created Time: Fri 20 May 2016 08:5
2016-05-22 23:00:11 428
原创 redis之Hiredis C编程
1.hiredis的介绍 hiredis是redis数据库一个轻量的C语言客户端库。 之所以轻量是由于它只是简单的提供了对redis操作语句支持的接口,并没有实现具体的操作语句的功能。但正是由于这种设计使我们只要熟悉了通用的redis操作语句就可以很容易的使用该库和redis数据库进行交互。 Hirides仅仅支持二进制安全的redis协议,所以你只能针对版本号大于等于1.2.0的redis服
2016-05-15 14:30:02 1063
原创 c语言指针高级话题
1.高级声明 int f; 一个整形变量。 int *f; 一个指向整形的指针。 int f(); 一个返回值为整形的函数。 int *f(); 明确表达式是如何求值的,首先执行的是函数操作符();()优先级高于*间接访问操作符,因此这是一个函数,它的返回值是指向整形的指针。 int (*f)(); 明确表达式是如何求值的,有两对括号,从左到右,第一个括号只起到聚组的作用,迫使
2016-05-09 23:42:20 476
原创 redis之其他
1.redis发布订阅 redis的这个发布订阅,类似于我们微信的发布和订阅,玩过mqtt,所以对这中模式比较熟悉。 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 PSUBSCRIBE pattern [pattern …] 订阅一个或多个符合给定模式的频道。 PUBSUB s
2016-05-02 01:08:33 343
原创 redis数据结构--下
1)set集合操作 redis的set是string的无序集合,可以包含2的32次方个元素,这个集合不允许元素重复,有基本的添加删除操作之外还有求并集,交集,差集操作。 sadd key member 添加member元素到key对应的set集合中 srem key member 从set集合中删除指定的member smove p1 p2 member 从p1对应的集合中将member移
2016-04-30 23:51:01 448
原创 redis之数据结构--上
1.redis之key-value对 *key 在存储redis内存中的数据起的变量名字 *value value 的类型可以是string, list, set, sort set, hash. 一般情况 key的命名规则是:键盘除了空格 换行外其他的大部分自焚都可以使用。建议key不要太长,占内存,也不要太短,可读性不强。 1)Keys操作 exists key 测试指定key是
2016-04-27 22:49:38 366
原创 初步认识redis
1.什么redis 2.为什么使用redis 3.什么场合使用redis 4.redis的好处 5.编译安装redis 6.redis数据结构1.什么是redis redis是remote dictionary Server(远程数据服务)的缩写,是意大利人antirez开发的一款内存高速缓存数据库。它的数据模型是key-value。它支持的数据结构有 String, list, has
2016-04-27 13:17:18 452
原创 libevent之event_base
1.什么叫event_base(总管) 每个 event_base结构体持有一个事件集合,可以检测以确定哪些事件是激活的。 每个 event_base 都有一种用于检测哪种事件已经就绪的“方法”,或者说后端。可以识别的方法有:select,poll,epoll,kqueue,devpoll,evport,win322.如何创建event_base struct event_base *even
2016-02-23 20:51:00 616
原创 ubuntu下mosquitto的安装使用
一、安装: 1.获取mosquitto包 2.解压 3.进入目录 4..make 5.sudo make install 这5个步骤一般可以的完成的了,才怪! 通常完成一件事总是要遇到一些挫折的,没出现意外我反而觉得奇怪嘞 你可能会遇到以下问题,不要怕! 例如 sudo apt-get install libc-ares-dev解决 再如: sud
2016-01-28 19:17:02 3598
sentinel.rar
2021-09-26
nginx-1.16.1.aarch64..zip
2020-12-02
mysql-5.7.30.aarch64.tar.gz
2020-12-02
Spring Cloud Gateway 2.1 使用手册中文版.pdf
2020-10-29
nginx-1.19.2.tar.gz(内含一键安装脚本和安装包)
2020-09-24
mysql5.7-install.tar.gz
2020-09-10
nacos-1.3.1.tar.gz
2020-09-10
harbor一键安装(harbor-v2.0.2软件包和harbor-v2.0.2安装脚本)
2020-09-03
harbor-offline-installer-v2.0.2.7z
2020-09-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人