自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 高并发问题排查方案

具体的错误是服务端拒绝连接,这就说明了并不是接口内部错误,而是资源不足。第一次发送一万并发还都会正常响应,第二次发的时候就会部分请求错误了.起因是我们的测试人员,在测试某个接口的时候,做了一万并发的压测,我们的测试环境突然就不能承受一万并发量了。这个时候身为开发的我,就需要排查问题了.

2024-04-24 17:46:19 173

原创 保证线程安全的时候什么情况下使用 atomic 和 锁

锁在不同的语言会有很多种实现,还会有很多种不同的锁,比如读写锁,乐观锁吗,互斥锁太多了,但是他们通用的点,一般是会进行线程切换的,所以当其中一个线程获取不到资源会有一定的机制让他下次在获取资源,不会让自己永无止境的消耗资源,也不会剥夺其他线程切换的权利.1.像java、golang等一些语言 基本类型都是有做原子性的操作的,所以我们对于基本类型,但是第一个线程赋值赋到一半的时候,另外一个线程插入进来一起赋值,就会出现混乱,2.像其他不是基本类型的,比如自定义类,又或者是string,一:atomic介绍。

2024-04-24 17:42:53 449

原创 gps路径压缩算法

gps路径压缩算法

2024-04-24 17:41:30 328

原创 元数据基础数据设计

元数据基础数据设计

2023-02-03 11:51:02 677 3

原创 用户权限设计

用户权限设计思路

2023-01-14 11:06:38 516

原创 锁 和 CPU CAS 原子操作

锁 和 CPU CAS 原子操作

2022-09-15 17:52:36 676

原创 分库分表、分区分片、NewSql做比较

分库分表、分区分片、NewSql做比较

2022-06-29 15:28:27 557

原创 微服务和服务处理

微服务和服务处理介绍​ 随着需求的变化,用户、模块越来越多。​ 我们从单一服务转变到微服务​ 对服务、数据的处理,也多出了很多种不同的方式,​ 最后只为了保障服务的性能和稳定性。​ 主要简单的介绍一些微服务的常识和我们运用保障服务的哪些方案。目录​ 一:微服务与单体​ 二:网关层​ 三:分布式锁、事物和多库DB:​ 四:分布式的一些小应用与技巧:​ 五:缓存​ 六:负载​ 七:限流、服务降级、服务熔断微服务与单体微服务 1

2021-11-30 15:06:50 397

原创 mysql索引存储及优化

具体的sql优化和索引优化 写在这边文章中:https://blog.csdn.net/weixin_43925734/article/details/115396686?spm=1001.2014.3001.5502索引主要作用:高效获取数据那么它是如何达到高效的获取数据呢?可以先从它的数据存储结构开始说起。主要以innoDB引擎的B+Tree 进行说明无索引:先说一个没有索引的数据表结构col1ool21苹果2梨子3西瓜4香蕉5西红柿

2021-04-20 14:24:29 186

原创 Go的GMP调度器

Go的GMP调度器上一篇文章关联链接地址点击前言:最后有讲系统级别多线程、多进程的问题.最大的问题其实就是资源浪费,切换成本高所以导致很多语言对线程的控制要求比较高,否则容易出现内存溢出,或者频繁的让cpu滴使用率达过高Go的GMP就很好的解决了这部分的问题。这也是Go逐渐成为热门语言的原因之一。线程补充:线程是系统级别进行控制(系统态)。线程会由机器的多核数量来达到是否存在并行的情况。协程 co-routine是有用户态进行管理操作CPUcpu只看系统态,只会看向

2021-02-20 14:32:15 189

原创 爬虫架构设计

爬虫架构设计前言公司要求:需要获取并分析数据,所以干起了爬虫工程师的事情,分享一下最近学习的经验.由于团队人手不够,目前是自己独自负责这部分(搭建、爬取、解析),可能会有不完善的地方,如果觉得有可以优化的地方或者是更好的方案可以私信交流。目标:京东、考拉、淘宝、costco、amazon(自己现阶段的需求就是这些了)使用到的数据库:mysql、mongo、redis目录:1.简易爬虫2.框架设计(分布式框架爬虫)3.服务器自动扩容(程序自动增减服务器设备)4.反爬一:简易爬虫1.

2021-02-19 16:25:47 4268 6

原创 sql性能优化

sql性能优化1、当x越来越大时,因为会查询出x跳记录然后过滤出需要的y条,查询效率会显著降低,为此,有几下集中解决方案:1先查出上一页结束的数据记录:SELECT * FROM table WHERE id>= (SELECT id FROM table LIMIT 1000000, 1) LIMIT 10`2.如果id是连续的,建议使用betweenSELECT * FROM table WHERE id BETWEEN 1000000 AND 1000010;3.还有一种,可以在查询

2021-04-02 13:43:10 108

原创 CPU的调度

初期CPU:是一个单进程操作系统,按照时间顺序执行,执行线程也是如此(一核 :核执行的基本单位是线程) ,同一时间只能执行一个线程.单进程时代的问题: 1.只能顺序执行,一个一个进行处理,效率慢。 2.进程租塞时(执行时卡在某个位置)会带来cpu时间的浪费. 这时就有了多线程/多进程操作系统多线程/多进程的操作系统如何调度条件:一个小时执行三个线程.这个时候cpu如何进行调度. 首先会把整个时间线,分成各个时间片,可以理解为时间断落,也就是当前线程最大的执行时间, 如果当前线程的

2021-02-18 17:51:44 252 1

原创 字符串在内存里的存储方式

字符串在内存里的存储方式.一、整数在内存里的二进制表达方式很简单:计算机内存存储方式本来就是用二进制来存储的,所以可以直接存储整数十进制二进制0000100120103011那么字符串需要如何存储呢?.二、字符串会使用编号进行存储,可以理解为一个中间编号例如:A = 65 = 01010101字符串A 等于 65编号 等于01010101这也就是字符集,通过01010101则能存储对应的字符串AASCII字符集加上拓展字符一共是2

2020-12-18 18:02:12 10390 5

原创 数据库双A同步实现方案

需求:工作中的业务数据,目前分别存储在美国的服务器和中国的服务器(mysql),需要把对应的表实施数据同步。解决方案canal(源码java)这个工具还是挺强大的,主要实现其实类似于mysql的主从同步机制,监控数据库的bin-log日志从而达到数据同步。这里简单介绍下它可做的同步流程:一:既然说了是监控bin-log日志而达到的同步,肯定需要mysql开启bin-log,一般如果是用阿里云服务器和别的商家其实是默认支持的,不需要调整配置。二:搭建canal,admin为web控制面板(里

2020-08-27 17:44:34 1729 2

原创 统一实现rpc,grpc,tcp,http等协议简单的负载均衡

**统一实现rpc,grpc,tcp,http等协议简单的负载均衡**利用:zookeeper或者etcd来实现.(zookeeper的源码为java,etcd的源码为go)本文选用zookeeper来实现服务之间的调用负载。原因:作为一个go开发程序员,我觉得zookeeper部署加运用容易点,不过听说etcd是会好一点,具体我是没有做实验进行对比的,有空的话可以试试。(部署自行google 不管是哪个系统都容易的很)实现思路:程序之所以能调用肯定是分为了serve以及client,那么就得先

2020-06-28 16:59:44 671

原创 携程并发两小坑

携程:协程和线程的区别是:协程避免了无意义的调度,由此可以提高性能,但也因此,程序员必须自己承担调度的责任,和多线程比,线程数量越多,协程的性能优势就越明显。独占CPU导致其他Groutine饿死。Groutine是协作式抢占调度,Groutine本身不会主动放弃CPU.func GoroutineCpu(){ runtime.GOMAXPROCS(4) //开核 go func() ...

2020-02-21 16:53:00 293

原创 数组、切片之优化

数组:数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成,位数不同类型也就不同,int64 != int32切片:切片就是一种简化版的动态数组,因为动态数组的长度不固定,所以切片的长度自然也就不能是类型的组成部分了。切片数组的内存增长:其实这种类型的内存增长不用做过多的介绍,因为一般的情况下不管是什么语言,他们的数组以及线程等,存入内存时,在扩容的时候都是以D...

2020-02-20 16:54:31 210

原创 tcp解决粘包

代码链接: https://github.com/wjw1758548031/Golang/blob/master/tcp.gotcp协议相对于udp协议的差别TCP UDP是否连接 面向连接 面向非连接传输可靠性 可靠 不可靠应用场合 少量数据 传输大量数据速度 慢 快根据这个确定运用场...

2019-12-25 10:27:29 152

原创 golang Map和指针优化

小编不啰嗦,直接上代码:执行结果:这里的内存分配容量和次数都为0,因为此次定义的数据量较小,直接忽略不计。结果:带指针的结构明显执行速度比值传递快。为什么会发生这样的情况呢,而且在我以前的文章中也能找到,频繁的带入指针,还会影响到Gc回收,造成压力,那么在此处,为何性能快了这么多。原因:值传递,传入过去会分配两个内存空间,意思是内存会分配两个容量存储。而直接使用指针的话,可以直接...

2019-12-19 16:27:19 1449

原创 github标记Verified提交GPG验证

github提交验证,直接生效验证方式为:GPG验证1.如果没有gpg则下个pgp2.创建gpg秘钥3.把gpg密码加入github管理中4.配置本地上传校验gpg这是总网址:https://help.github.com/cn/github/authenticating-to-github/checking-for-existing-gpg-keys//查看自己的gpg秘钥 如果为...

2019-12-05 11:48:00 706

原创 go Gc

**GC受值类型和引用类型的影响(golang)**前言:此篇介绍的是优化,引用传递返回值,还是值返回各自给gc带来的压力一下是代碼:**测试开始:**下方是引用类型传递所返回的接口(也就是代码里调用的test):下方是值类型传递所返回的接口(也就是代码里调用的testOne):总结:很明显的看出来,值传递gc所占用的堆明显比引用要少,而且引用还在不停地叠加,因为gc无法...

2019-09-17 14:36:41 237

原创 sync.Map源码原理

shell实现简单的检测程序停止则进行重启#!/bin/sh#无线循环while truedoecho jinru .shecho jinru1 .shecho jinru2 .shma="[email protected]"#判断4011端口是否在执行if netstat -lntp | grep -q ‘:4011’thenecho anquanelse./ceshi#...

2019-04-18 15:58:09 370

原创 Golang小技巧与原理

Golang小技巧与原理前言:每个部分写的不太清楚,只是指出了思路,可以直接根据思路百度,应该都有相应教程。1:&是地址 是值 当&为参数传入方法时会影响之前的值,否则不会影响(包括)3:切面和map都是线程不安全的,建议不要开携程,否则就需要加锁。4:for k := rang item //第一个默认值就是k而不是v5: i:=make([]int,10);...

2019-04-18 14:39:05 177

原创 处理与理解高并发

处理与理解高并发前言:在许多程序员眼里,遇到高并发和解决高并发,已经是烂大街的事情,觉得并不需要去深入的探讨和理解,但我认为,这却恰恰相反,解决高并发的手法、技术通常都有高低之分,适合的场景运用恰当的技术,往往能够使程序的性能提高不少,而我们最终的产品、项目不就是为了能够实现业务的同时,让用户有一个良好的体验,所以提升自我解决高并发的能力非常有必要,以下是小编的菜鸟个人理解,不对之处,请提醒...

2019-03-03 13:13:05 825

空空如也

空空如也

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

TA关注的人

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