自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 英伟达不同系列GPU介绍

特点:GeForce系列是英伟达主打的消费级GPU产品线,注重提供高性能的图形处理能力和游戏特性。- 特点:Tegra系列是英伟达的移动处理器产品线,用于嵌入式系统、智能手机、平板电脑、汽车电子等领域。- 特点:Jetson系列是面向边缘计算和人工智能应用的嵌入式开发平台,具备强大的计算和推理能力。- 主要应用领域:主要用于计算机辅助设计(CAD)、动画制作、科学计算、虚拟现实等需要高精度计算和可靠稳定性的专业领域。- 主要应用领域:主要应用于科学计算、数据分析、深度学习等高要求的计算任务。

2023-11-26 18:44:48 1382

原创 数据库面试,以mysql为例

在从数据库中,当读取主数据库的二进制日志并执行相同的插入操作时,MySQL 会自动分配一个新的自增值,而不会使用主数据库中的自增值,以避免主从数据库中出现相同的自增主键值。这是因为 MySQL 主从复制是基于日志的,主数据库上执行的每个写操作都会被记录到二进制日志中,然后从数据库会读取这些日志并执行相同的操作,这样可以确保数据的一致性。:分库分表后的扩容和缩容相对复杂,需要设计好扩容和缩容的方案,避免数据迁移过程中的业务中断和数据丢失。,这种方式可以确保主从数据库中的数据完全一致,包括自增主键的值。

2023-11-16 19:40:42 422

原创 goland报错,加载本地终端配置失败

https://youtrack.jetbrains.com/articles/IDEA-A-19/Shell-Environment-Loading在 macOS 上,由 GUI 启动器(Finder、Dock、Spotlight 等)启动的应用程序继承了一个相对空的环境,并且没有智能的方法来改善它。这种情况引起了一些投诉:在终端中正常工作的工具,从 IDE 启动时无法正常工作。这就是 IDE 在启动时尝试加载 shell 环境的原因。为此,它在后台启动一个 shell 并指示它运行一个辅助进程。从

2022-05-30 10:40:37 910

转载 HTTP 返回状态码

一、HTTP 超文本传输协议HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。一个HTTP "客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。一个HTTP "服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。HTTP 使用统一资源标识符(Uniform Res

2022-02-17 11:40:14 514

原创 Go struct 内存对齐(64位cpu和操作系统)

在64位机器上,依然按照32位来进行内存对齐。package mainimport ( "fmt" "unsafe")type demo1 struct { a int8 b int16 c int32}type demo2 struct { a int8 c int32 b int16}type demo3 struct { c int32 a struct{}}type demo4 struct { a struct{} c int32}t

2022-02-07 17:04:29 892

原创 解决Google-Chrome打开后弹出输入密码以解锁您的登录密钥

删除~/.local/share/keyrings/路径下的文件,重启系统后再启动Chrome浏览器,提示输入设定密码,留空,后面就不会再提示了!

2021-06-23 17:02:11 3568

原创 ubuntu下比较好用的复制操作

  一般windows在dos下要复制粘贴命令,会采取下面的方法  ctrl + c,ctrl + v 或 鼠标左键复制,右键粘贴  但在ubuntu终端下是行不通的,需要采取下面的2种方式(推荐第二种骚操作)  ①:ctrl + shift + c,ctrl + shift + v  ②:直接鼠标左键选中要复制的命令,然后在需要粘贴的地方按一下鼠标滚轮即可...

2021-02-25 16:50:28 687

原创 database/sql数据库连接池满了请求会怎样处理,解惑

大家已经知道执行sql语句的时候会先去连接池里拿或创建一个数据库连接。假如当我们执行sql语句的时候连接池里面没有空闲连接,因为最大连接数的限制也不能创建新连接,这个时候会怎样?此时会阻塞sql语句的执行,排队等候可用连接。为什么不是排队,如果是排队,既然有队,就有序,其实这个等候是无序的,并不按照谁先等候的顺序来响应。因为在实现上是在map里面等候。//这里是map的声明connRe...

2020-04-16 00:45:32 2204

转载 分享常用的GoLang包工具

原文地址:https://www.cnblogs.com/yxhblogs/p/10427954.html包名 链接地址 备注 Machinery异步队列 https://github.com/RichardKnop/machinery Mqtt通信 github.com/eclipse/paho.mqtt.golang go文档http://w...

2020-04-15 15:09:03 563

原创 GO的多协程程序,多核CPU执行,共享数据出现不一致的问题

package mainimport ( "fmt" "sync")var ex, ey intfunc main() { var ex, ey int var ewg sync.WaitGroup ewg.Add(2) go func() { ex = 1 fmt.Println("ey = ", ey) ewg.Done() }() go func(...

2020-04-13 00:58:02 1024

转载 Linux Futex浅析

http://blog.sina.com.cn/s/blog_e59371cc0102v29b.htmlFutex,Fast Userspace muTEXes,作为linux下的一种快速同步(互斥)机制,已经存在了很长一段时间了(since linux 2.5.7)。它有什么优势?又提供了怎样一些功能,本文就简单探讨一下。futex诞生之前在futex诞生之前,linux下的...

2020-04-13 00:14:55 265

原创 多协程并发和多核CPU、协程空间

先看看下面这个程序的执行结果,多执行几次。package mainimport ( "fmt" "sync")var num int64 = 0var max = 10000var wg sync.WaitGroupfunc main() { wg.Add(2) go addNum() go addNum() wg.Wait() fmt.Printf("num...

2020-04-11 19:40:13 1484

原创 核心源码 有些函数只有声明没有实现,答疑

比如在互斥锁的实现(m *Mutex) Lock()中使用的atomic.CompareAndSwapInt32查看定义的时候只在atomic/doc.go文件里面看见其声明,而无定义。其实原子操作的系列函数的定义是用汇编实现的,在同目录的asm.s文件里,搜对应的函数名就可以看见其实现了。...

2020-04-11 16:46:37 802

原创 网络连接正常但IP却Ping不通解答

1、交换机:禁ping,限制ICMP https://support.huawei.com/enterprise/zh/knowledge/EKB10000676692、防火墙:禁止了所有的ICMP的inboundpacket

2020-04-11 12:35:04 4910

转载 Golang协程与通道整理

协程goroutine 不由OS调度,而是用户层自行释放CPU,从而在执行体之间切换。Go在底层进行协助实现 涉及系统调用的地方由Go标准库协助释放CPU 总之,不通过OS进行切换,自行切换,系统运行开支大大降低通道channel并发编程的关键在于执行体之间的通信,go通过通过channel进行通信channel可以认为类似其他OS体系中的消息队列,只不过...

2020-04-02 11:08:47 303

转载 https://blog.csdn.net/xinzhongtianxia/article/details/86221241

https://blog.csdn.net/xinzhongtianxia/article/details/86221241从定时任务说起自然界中定时任务无处不在,太阳每天东升西落,候鸟的迁徙,树木的年轮,人们每天按时上班,每个月按时发工资、交房租,四季轮换,潮涨潮落,等等,从某种意义上说,都可以认为是定时任务。大概很少有人想过,这些“定时”是怎样做到的。当然,计算机领域的同学们可能对此比较...

2020-03-30 15:06:17 1166

原创 TCP中已有SO_KEEPALIVE选项,为什么还要在应用层加入心跳包机制??

心跳的作用:心跳除了说明应用程序还活着(进程还在,网络通畅),更重要的是表明应用程序还能正常工作。1、TCP keepalive由操作系统负责探查,即便进程死锁或阻塞,操作系统也会如常收发TCP keepalive消息。对方无法得知这种异常。2、KEEPALIVE的数据包如果碰到代理(七层、四层负载均衡)的中继设备,它会被中继设备接收并不会传到对端,造成无法准确判断连接是否存活。3、有些运营...

2020-03-22 16:49:25 502

转载 孤儿进程与僵尸进程[总结]

1、前言之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。2、基本概念我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的...

2020-03-20 17:24:05 101

原创 DNS与HTTPDNS

DNS存在的问题域名缓存问题本地做一个缓存,直接返回缓存数据。可能会导致全局负载均衡失败,因为上次进行的缓存,不一定是这次离客户最近的地方,可能会绕远路。域名转发问题如果是A运营商将解析的请求转发给B运营商,B去权威DNS服务器查询的话,权威服务器会认为你是B运营商的,就返回了B运营商的网站地址,结果每次都会夸运营商。出口NAT问题做了网络地址转化后,权威的DNS服务器,没法...

2020-03-20 16:33:49 294

原创 大端小端图解、以及其带来的问题和处理办法

不同的系统采用的字节序不同,那么发送协议栈和接收协议栈必须就字节序的传输顺序达成一致。

2020-03-19 18:00:22 415

转载 time_wait的快速回收和重用

TCP四次挥手:Time_wait产生原因及作用:time_wait状态如何产生?由上面的变迁图,首先调用close()发起主动关闭的一方,在发送最后一个ACK之后会进入time_wait的状态,也就说该发送方会保持2MSL时间之后才会回到初始状态。MSL值得是数据包在网络中的最大生存时间。产生这种结果使得这个TCP连接在2MSL连接等待期间,定义这个连接的四元组(客户端IP地址和端口,...

2020-03-18 11:20:09 324

原创 代理、协议层次的划分

OSI七层模型1-7(低到高):1.物理层2.数据链路层:ppp点对点协议 CSMA/CD3.网络层:IP协议,地址解析协议ARP,网际控制报文协议ICMP,路由选择协议,RIP4.运输层:用户数据报协议UDP,传输控制协议TCP5.会话层6.表示层7.应用层:文件传输协议(TELNET,HTTP,FTP,NFS,SMTP)HA在第四层nginx一般用在第7层做代理;最新版本的也...

2020-03-17 16:11:10 410

转载 linux下使用man查看C函数用法

大家都知道在Unix/Linux中有个man命令,可以查询常用的命令,函数。可是对于我们这样只知道用"man 函数名"来查询的人来说,会遇到很多问题,比如: man read,我想看的是ANSI C中stdio的read函数原型和说明,没想到出来的确是BASH命令的说明,这是怎么回事呢? 原来read本身是man命令的一个参数,这样输入man就会以为你要使用read的功能,而不是查看...

2020-03-16 01:48:38 1380

转载 socket读写返回值的处理

在调用socket读写函数read(),write()时,都会有返回值。如果没有正确处理返回值,就可能引入一些问题总结了以下几点1当read()或者write()函数返回值大于0时,表示实际从缓冲区读取或者写入的字节数目2当read()函数返回值为0时,表示对端已经关闭了 socket,这时候也要关闭这个socket,否则会导致socket泄露。netstat命令查看下,如果有closewa...

2020-03-16 01:39:19 777

转载 select函数详解及实例分析

Select函数在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻...

2020-03-16 00:33:50 846

转载 网游中的网络编程系列1:UDP vs. TCP

原文:[UDP vs. TCP](https://gafferongames.com/post/udp_vs_tcp/),作者是Glenn Fiedler,专注于游戏网络编程相关工作多年。目录网游中的网络编程系列1:UDP vs. TCP网游中的网络编程2:发送和接收数据包网游中的网络编程3:在UDP上建立虚拟连接TODO说在最前面的话翻译这篇文章的初衷:我在工作中根本接触不到网...

2020-03-15 17:23:17 716

原创 TCP的发送缓冲区和接收缓冲区

TCP协议是作用是用来进行端对端数据传送的,那么就会有发送端和接收端,在操作系统有两个空间即user space和kernal space。每个Tcp socket连接在内核中都有一个发送缓冲区和接收缓冲区,TCP的全双工的工作模式以及TCP的流量(拥塞)控制便是依赖于这两个独立的buffer以及buffer的填充状态。单工:只允许甲方向乙方传送信息,而乙方不能向甲方传送 ,如汽车单行道。半...

2020-03-15 16:54:24 6721

原创 socket TCP协议接收大文件时recv的buffer设置多少合适

你的接收缓冲区具体指的是哪种?tcp协议栈中的接收缓冲区还是recv()中用到的缓冲区?tcp协议栈中的接收缓冲区需要用setsockopt()的SO_RCVBUF来设置。系统默认的缓冲区大小一般来说就够用了。设置太大没什么用,网卡速度也是有限的,就算1000Mbps的网卡,除去以太网帧、ip帧头、tcp帧头等,实际的传输率也就是70、80MB/s。接收满64k差不多1ms,对于现代的cpu来...

2020-03-15 16:51:18 6651

转载 TCP的接收缓冲区满了,收到数据后会向发送方发送ACK吗?该怎么解决

问题:TCP的接收缓冲区满了,收到数据后会向发送方发送ACK吗?TCP的发送缓冲区中的数据,如果收不到接收方的ACK就不会删除,导致发送缓冲区溢出。如果接收方的缓冲区满了,收到数据后会不会向发送方发ACK呢?如果不发ACK,那么就没有接收缓冲区溢出的概念了,只要控制住发送方,就不会丢包;如果发ACK,那发送方就没办法控制是否继续发送了,接收缓冲区就会造成溢出,导致丢包。事实是怎样的呢?我这样理解...

2020-03-15 16:46:26 1890

转载 站在编译器与CPU的角度深入理解原子操作的原理与缓存一致性等一系列问题

intel的手册对lock前缀的说明如下:确保对内存的读-改-写操作原子执行。在Pentium及Pentium之前的处理器中,带有lock前缀的指令在执行期间会锁住总线,使得其他处理器暂时无法通过总线访问内存。很显然,这会带来昂贵的开销。从Pentium 4,Intel Xeon及P6处理器开始,intel在原有总线锁的基础上做了一个很有意义的优化:如果要访问的内存区域(area of memo...

2020-03-15 11:27:15 520

原创 用redis做分布式锁

WATCH mutexKey EXISTS mutexKey//检查是否可以拿锁 MULTI SETEX mutexKey 60 "anything" EXEC拿到分布式锁的请求必须在60秒内处理完,比如这个超时时间设置为30秒,在go语言里面可以在context里面设置。为什么要设置超时时间呢?当拿到锁的实例挂了后,该锁会在60秒内释放,不至于出现长时间死锁。设置每...

2020-03-15 01:38:15 76

原创 在高并发条件下对用户账号进行扣款 分析锁和隔离级别

创建测试表CREATE TABLE `account` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_id` varchar(32) NOT NULL DEFAULT '' COMMENT '用户id', `name` varchar(50) NOT NULL DEFAULT '' COMMENT '用户名', `balance...

2020-03-15 00:17:57 522

原创 mysql隔离级别以及提交模式(设置和查看)

查看mysql数据库所有变量SHOW VARIABLES;查看mysql隔离级别show variables like 'transaction_isolation';查看mysql事务提交模式show variables like 'autocommit';其中ON表示自动提交已经开启;OFF表示关闭了自动提交。设置mysql事务隔离级别设置当前会话...

2020-03-14 23:17:22 219

转载 动态重载与静态重载

了解一个概念:动态绑定和静态绑定:下面看一段代码:#include <iostream>using namespace std;class Parent{public: void virtual foo() { cout << "foo from parent!\n"; } void foo1() { ...

2020-03-06 16:49:53 1243 1

原创 Raft 选举、读写、避免脑裂

读写操作都必须经过leader处理https://cloud.tencent.com/developer/article/1185189https://blog.csdn.net/chdhust/article/details/67654512

2020-02-26 19:01:35 3238

转载 golang字符串string与字符数组[]byte高效转换 及效率分析

string与[]byte的直接转换是通过底层数据copy实现的var a = []byte("hello boy")var b = string(a)这种操作在并发量达到十万百万级别的时候会拖慢程序的处理速度通过gdb调试来看一下string和[]byte的数据结构(gdb) l main.main3 import ( "fmt")7 func main() { ...

2020-02-25 11:24:48 2024 1

转载 golang:一个高性能低精度timer实现

https://www.cnblogs.com/xiaowangba/p/6313756.html

2020-02-25 00:43:11 329

转载 Golang并发模型:无阻塞读写通道

https://blog.csdn.net/qun_y/article/details/91490107

2020-02-25 00:36:36 203

转载 深度解密Go语言之channel底层实现

并发模型并发与并行大家都知道著名的摩尔定律。1965 年,时任仙童公司的 Gordon Moore 发表文章,预测在未来十年,半导体芯片上的晶体管和电阻数量将每年增加一倍;1975 年,Moore 再次发表论文,将“每年”修改为“每两年”。这个预测在 2012 年左右基本是正确的。但随着晶体管电路逐渐接近性能极限,摩尔定律终将走到尽头。靠增加晶体管数量来提高计算机的性能不灵了。于是,人们开始转...

2020-02-25 00:09:24 4415

转载 make和new的区别

二者异同所以从这里可以看的很明白了,二者都是内存的分配(堆上),但是make只用于slice、map以及channel的初始化(非零值);而new用于类型的内存分配,并且内存置为零。所以在我们编写程序的时候,就可以根据自己的需要很好的选择了。make返回的还是这三个引用类型本身;而new返回的是指向类型的指针。其实new不常用所以有new这个内置函数,可以给我们分配一块内存让我们使用,但是...

2020-02-25 00:08:18 1448

空空如也

空空如也

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

TA关注的人

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