自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

浮云的博客

个人技术博客:http://www.sunhucheng.top

  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 mysql索引优化以及建表规约

最近阅读了一些阿里发出的索引规约手册,记录下一、建表规约1,表达是与否概念,使用is_xxx方式命名,数据类型为unsignde tinyint2, 表名,字段名使用小写字母3,不要用保留字4,唯一索引使用uk_字段名;普通索引使用idx_字段名5,小数类型使用decimal,不要用float和double6,存储字符串长度相同,使用char7,varch...

2020-04-01 11:07:43 118

转载 如何使用Redis实现电商系统的库存扣减?

解决方案 使用mysql数据库,使用一个字段来存储库存,每次扣减库存去更新这个字段。 还是使用数据库,但是将库存分层多份存到多条记录里面,扣减库存的时候路由一下,这样子增大了并发量,但是还是避免不了大量的去访问数据库来更新库存。 将库存放到redis使用redis的incrby特性来扣减库存。 分析在上面的第一种和第二种方式都是基于数据来扣减库存。基于数据库单库存第一种方式在所有请求都会在这里等待锁,获取锁有去扣减库存。在并发量不高的情况下可以使用,但是一旦并.

2022-01-07 10:15:01 214

原创 java开发-常用软件

开发 idea 接口管理 Apifox postman 数据库管理 navicat datagrip Git管理 SourceTree 服务器管理 xshell 项目管理 xmind 思维导图 压力测试工具 Jmeter

2021-12-24 15:33:51 364

原创 面试知识1

zookpperribbonredis1.分布式锁,使用setnx来添加锁,设置过期时间,防止锁没有释放2.数据结构 string hash list set zset3.数据存储在内存中,通过持久化到磁盘4.aof更安全,文件更大,回复会优先读取aof,rdb有触发条件5.缓存穿透就是用户大量查询一个不存在的缓存,数据库也没有,但会一直查询,大量进行io交互,给数据库压力,1.可以设置不存在数据也缓存下来,给个比较短的时间,2.设置服务降级,熔断6.缓存雪崩,就是缓存大批量.

2021-08-02 16:55:59 121

原创 JVM运行机制(四) 参数配置考虑需求

1.每日的请求量级有多大?百万 千万2.请求集中在什么时间?有多久? 几个小时3.请求量/时间 算出平均请求数4.所需创建对象需要的数据量有多大 一个Int 4字节 一个long 8字节5.有几台机器?平均每台机器所需承载多大请求?6.创建对象*每台机器所需承载量 算出机器所需要的空间大小7.机器有多少内存分配 除去机器本身需求内存、堆空间所需内存、老年代所需内存、剩下的才是青年代能获得的内存...

2021-07-27 12:31:21 99

原创 JVM运行机制(三)垃圾回收机制

java垃圾回收机制是按年代分的,青年代、老年代、永久代青年代java所有的垃圾回收对象都会优先放在青年代内,当青年代满了之后,还要创建新的对象,就会触发垃圾回收,将所有未被引用的对象回收老年代对象会有限创建在青年代内,但是如果他一直有被引用,比如常量实列,那么每经过一次垃圾回收就默认他涨一岁,当他达到15岁时,就会被移入老年代,那么老年代内都时长时间被引用的对象,如何垃圾回收呢?同理,老年代满的时候,就会触发垃圾回收机制永久代其实指的就是方法区,永久代会不会有垃圾回收.

2021-07-27 12:08:35 160

原创 jvm运行原理流程图

2021-07-23 15:54:38 241

原创 JVM运行机制(二)内存区域的划分

jvm加载类到内存中,会将类大体分为 栈空间 堆空间 方法区(元数据空间)

2021-07-20 18:02:01 55

原创 springcloud(十四) 配置中心

简介微服务不可能只有一个,会有很多很多个,比如所有微服务都需要配置mybatis,那么需要修改用户密码时,就需要每个都修改一次,如果有几百个会很难维护,所有我们可以把这些公共配置提取出来放到git里,所有微服务都先去git读取公共配置,这样就很方便了https://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.2.1.RELEASE/reference/html/服务端配置与测试创建git仓库本地clo.

2021-07-19 17:54:26 94

原创 JVM运行机制(一)

java代码是怎么运行的?1.Java代码都是以xxx.java的文件形式存在的2.我们会将java文件打包生产xxx.class字节码文件3.通过类加载器将class文件加载到jvm中,生产类4.运行代码jvm会在什么情况下去加载一个类?1.一个类被加载通常会经过下面的经历:加载->验证->准备->解析->初始化->使用->卸载2.jvm会在类被调用的情况下采取加载一个类验证验证代码合不合代码规范,可不可以.

2021-07-13 15:27:52 111 1

原创 springcloud(十三) 服务网关Geteway

概念服务网关可以理解为医院的分诊台,控制请求可不可以进来,进到哪里,之前是使用zuul网关,但是zuul2一直跳票所以spring官方基于webFlux框架开发了geteway,相比zuul1稳定性更好,支持异步非阻塞 ,可以实现反向代理,熔断,监控等功能核心路由断言过滤工作流程...

2021-07-09 14:01:45 909 2

转载 Mysql千万级大数据量查询优化

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!=或<>操作符,否则引擎将放..

2021-06-29 14:32:49 446

原创 分布式RPC框架Apache Dubbo

2.1 Dubbo简介Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。什么是RPC?RPC全称为remote procedure call,即远程过程调用。比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据。需要注意的

2021-06-22 19:53:38 54

原创 springcloud(十二) Hystrix 工作流程以及服务监控

概述一、分布式系统面临着什么复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这..

2021-06-18 12:18:51 256

原创 springcloud(十一) OpenFeign服务调用、超时控制以及日志增强

OpenFeign声明式webservice客户端,定义一个服务端接口添加注解,使用更方便,内部包换了ribbon支持负载均衡Feign能干什么 前面在使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。所以,Feign在此基础上做了进一步封装,由...

2021-06-16 18:19:54 254

原创 springcloud (十) 服务注册中心小结 eureak zookeeper consul 异同点

一、首先需要了解的是微服务的数据层级架构原则(CAP) ps:不是系统层面C: 数据强一致性A: 高可用P: 分区容错性二、一个系统不可能满足cap全部需求,因此将数据根据cap分为一下三类CA: 单点集群 满足 一致性 可用性 可扩展性不高CP: 满足一致性, 分区容错性 ,性能不高AP: 满足可用性,分区容错性,对数据一致性要求低一点而现在服务都要求容错性必须,所以现在一般都是 cp apcap示意图三、 注册中心区别AP: eurek...

2021-06-04 16:42:21 96

原创 springcloud (九) 服务注册之consul

建立模块 配置pom 配置yml 配置主启动 配置业务类 测试

2021-06-04 16:07:53 79

原创 springcloud (八) 服务注册之zookeeper

启动zookeepe运行成功配置模块 创建 配置pom 配置yml 主启动 controler 启动8004注册进zooleeper 测试

2021-06-01 17:33:25 76

原创 springcloud (七) actuator服务监管配置、服务发现Discovery以及eureka自我保护

配置eureka服务id未配置之前配置eureka: instance: hostname: localhost #配置服务id instance-id: payment8002配置后服务改为自定义id,更方便管理,可以根据地区,ip来做细化配置显示ip未配置前配置eureka: instance: hostname: localhost instance-id: payment8002 ..

2021-05-25 15:53:31 309 3

原创 springcloud (六) Eureka集群构建以及负载均衡

集群原理 微服务RPC远程服务调用最核心的是什么? 高可用,如果服务注册中心里只有一台机器,如果挂了那就无法访问,所以需要配置多台机器来解决这个问题,一台机器挂了还有另外的机器可以访问。 搭建注册中心集群,实现负载均衡+故障容错参考cloud-eureka-server7001搭建cloud-eureka-server7002 修改pom 修改yml 单机改为集群服务名不能相同需要修改hostname以及注册地址 (多台机器需要相互注册) 7002配置 ...

2021-05-19 17:49:13 414 1

转载 springcloud (五) 微服务Eureka服务注册与发现

什么是服务治理  Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。什么是服务注册与发现Eureka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用...

2021-05-12 18:15:49 79

原创 springcloud(四) 基础项目搭建以及devtools热部署、工程重构

建立项目 创建cloud-provider-payment8001项目 配置pom 因为是子项目所以可以不用配置groupid、version 调用父类配置不写version <?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-ins

2021-04-29 15:49:56 116

原创 springcloud(三) 父工程pom注意事项

定义父工程 <groupId>com.atguigu.springcloud</groupId> <artifactId>clouad2020</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging>jar版本统一管理 <!--jar版本统一管理--> &lt.

2021-04-28 18:04:54 534

原创 springcloud(一) 技术选型

微服务分为服务注册中心、服务调用、服务降级、服务网关、服务配置、服务总线等就是一个个springboot项目组成的微服务

2021-04-26 18:45:54 339

原创 springcloud(二) 开发前准备

约定>配置>编码1.new peoject2.聚合副总工程名字3.maven选版本4.工程名字5.字符编码6.注解生效配置7.java编译版本选择8.过滤无用文件只有地基打好,之后开发才能避免很多坑,以及不该出现的bug概率...

2021-04-26 18:40:25 79

原创 java-基础-字节缓冲流

字节缓冲流lBufferOutputStream:该类实现缓冲输出流。 通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用 lBufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数组。 当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节字符流字符流的介绍字符流 = 字节流 + 编码表中文的字节存储方式用字节流复制文本文件时,文本...

2020-11-16 11:50:04 93

转载 第2章 rsync(二):inotify+rsync详细说明和sersync

1.inotify+rsync如果要实现定时同步数据,可以在客户端将rsync加入定时任务,但是定时任务的同步时间粒度并不能达到实时同步的要求。在Linux kernel 2.6.13后提供了inotify文件系统监控机制。通过rsync+inotify组合可以实现实时同步。inotify实现工具有几款:inotify本身、sersync、lsyncd。其中sersync是金山的周洋开发的工具,克服了inotify的缺陷,且提供了几个插件作为可选工具。此处先介绍inotify的用法以及它的缺陷,通过

2020-08-18 17:01:22 294

转载 rsync(一):基本命令和用法

原文地址:https://www.cnblogs.com/f-ck-need-u/p/7220009.html#blog212.1 说在前面的话rsync官方网站:https://www.samba.org/ftp/rsync/rsync.htmlrsync是可以实现增量备份的工具。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时同步。rsync可以实现scp的远程拷贝(rsync不支持远程到远程的拷贝,但scp支持)、cp的本地拷贝、.

2020-08-18 16:55:34 407

原创 linux获取最新执行程序id号

先用ps查看进程语法ps [options] [--help]参数:ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义 -A 列出所有的行程 -w 显示加宽可以显示较多的资讯 -au 显示较详细的资讯 -aux 显示所有包含其他使用者的行程 au(x) 输出格式 : USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER: 行程拥有者 PID: pid %CPU: 占用的 CPU 使用率 .

2020-06-08 13:10:05 408

转载 Linux 中查询 CPU 的核数的方法

以一台 Linux 服务器为例。这台 Linux 包括两颗 Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz CPU, 单颗 CPU 包括 10 个 cpu core, 使用超线程包含 20 个逻辑 cpu core, 具体的官方介绍:E5-2630 V4。下面让我们通过 Linux 的命令来查找对应的参数,看看是否符合官方的介绍,主要是查看 /proc/cpuinfo 的信息获得。查看 CPU 的型号cat/proc/cpuinfo|gre...

2020-05-27 13:39:50 384

原创 redis持久化详解之AOF

目录使用AOFAOF持久化跟RDB不同,它是将写命令记录到日志中,并将这些写操作保存到aof文件中使用AOF开启aof需要开启配置:appendonlyyes ,默认不开启,aof文件名通过appendfilename配置,默认文件名APPendonly.aof ;保存路径跟RDB相同,通过 dir 配置持久化配置#启用aof持久化方式appendonly yes #每次收到写命令就立即强制写入磁盘, 最慢的大概只有几百的TPS, 但是保证完全的持久化, 不...

2020-05-19 12:21:14 306

原创 redis持久化详解之RDB

redis持久化 : redis数据是存在内存里的,这样虽然很快(官方提供的数据大概是 QPS: 10w+/S),但也会导致关机或者进程退出数九就会永久丢失,需要将数据以某种形式定时写入磁盘,这样就可以利用磁盘恢复数据,这就是redis持久化,简单来说就是将数据从内存写入磁盘。redis持久化分为RDB和AOF ;rdb是将数据写入磁盘生成一个.rdb的文件 ;aof是将每次执行的命令保存到磁盘生成一个.aof的文件触发机制手动触发(save)和自动触发(bgsav...

2020-05-14 16:18:04 385

原创 php多维数组转一维数组

假设有一个这样的一个二维数组现在需要将他转化为一维数组,而且相同键值不会覆盖类似1array_reduce函数他是向用户自定义函数发送数组中的值,并返回一个字符串可以这样写$result = array_reduce($user, function ($result, $value) { return array_merge($result, array_values($value));}, array())因为array_merge函数会把相同字...

2020-05-13 11:19:53 444

原创 linux命令-后台运行

要使命令再后台一直运行的话 需要用到 nohup命令nohup会不挂断的运行,但不是后台运行 需要使用 & 才能永久再后台运行nohup会将运行日志写入到nohup.out文件中,但是我并不想让他写入这个文件中,所以可以指定文件将日志写入ass.log如:nohup node internalTask.js > ass.log &操作系统中有三...

2020-05-07 11:30:22 182

原创 CGI跟FASTCGI区别

首先,看个图cgi全称通用网关接口 是客户端想服务端请求数据传输的一种协议它规定了服务器传输到php解释器的数据类型以及格式不同类型的语言只要符合了cgi的标准,就成作为一个cgi程序跟服务器交互特点他在高并发模式下性能很差,他会在客户端请求的时候读取并解析php.ini重新载入扩展并处理数据,然后返回数据给服务器并且他的接口安全性较差,因为他对p...

2020-04-24 17:40:09 1306

原创 定时脚本备份数据库或某些表

备份指定表:#!/bin/bash#设置mysql备份目录folder=/xx/xxx/xxxcd $folderday=`date +%Y%m%d`rm -rf $daymkdir $daycd $day#数据库服务 iphost=localhost#用户名user=xxx#密码 #&这些需要转义加\password=...

2020-04-24 11:31:20 379

转载 php生产环境部署代码后访问的以前的代码

有一次上线,运维部署代码后测试,发现没有新加的功能,访问的还是更新前的功能。上服务器,查看有更新后的代码,为保留上个版本的代码,采用的是每个版本一个文件夹,软链最新的版本为线上版本,进入最新文件夹发现,没有产生任何日志,就推测访问的是上个版本的代码,进入上个版本发现有访问日志,日志文件一般一天产生一次,新的明天才会在新版本产生。找了很久没有找到原因,后来运维屏蔽了服务器访问,...

2020-04-21 10:56:53 247

原创 mysql日志以及目录结构

mysql目录结构一般如下bin目录一般存放一些可执行文件,,如mysql、 mysqld等data目录主要存放数据文件以及日志include放一些扩展文件share一般存放一些字符集、语言等信息my.ini是mysql的配置文件data目录内主要有数据库文件已数据库名存在的文件夹等其内有.frm 表结构.MYD mysiam 数据文件.MY...

2020-04-17 15:02:08 380

原创 关系型数据库与非关系型数据库区别

关系型数据库,是建立在关系模型之上的数据库,借助于集合代数等数学概念的方式来处理数据的,主流有mysql、oracle、sqlserver等传统数据库而非关系形数据库(Not Only Sql)其实是种数据结构化存储的方式,可以是键值对,文档等,主要分为临时性键值存储(memcached、redis) 、永久性键值存储(redis、roma)、面向文档的数据库(mongoDB、couchD...

2020-04-16 14:28:52 520

原创 按指定字段合并数组

类似于以下的二维数组,按prefecture字段进行合并只需要以下代码就可以完成 $arr = []; foreach ($data as $k => $v){ $arr[$v['prefecture']][] = $v; }查看效果:完成,如果觉得中文的不好看我们可以重置下keyarr...

2020-04-10 14:52:41 566

laravel7 最新版

laravel最新框架 Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable, creative experience to be truly fulfilling. Laravel attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as: Simple, fast routing engine. Powerful dependency injection container. Multiple back-ends for session and cache storage. Database agnostic schema migrations. Robust background job processing. Real-time event broadcasting.

2020-06-01

空空如也

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

TA关注的人

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