- 博客(38)
- 资源 (26)
- 收藏
- 关注
原创 Golang内存分配分三种Golang内存分配分三种类型
线程缓存(私人储物柜)用于快速处理和存储小对象。中心缓存(共享存储区)用于处理中等大小的对象,提供共享和高效的资源分配。堆分配内存(主仓库)用于处理大对象,提供最大的存储空间和资源。栈内存:个人工作台,快速处理临时任务。堆内存:主仓库,存放大包裹,需小心管理。全局/静态内存:公共工具柜,存放常用工具,随时可用。代码段:操作手册,包含所有操作指南,不能更改。BSS段:空货架,预留给未来可能用到的物品,开张时初始化为零。数据段:指定物品区,存放已准备好的物品,开张时就位。
2024-06-03 15:14:03
520
1
原创 如何保证多机房数据的一致性
Raft算法是分布式强一致性算法,易于理解且广泛使用。相比Paxos算法,Raft算法更加直观,且能保证数据操作的顺序。应用如etcd、Kafka等都采用了Raft算法。
2024-04-16 17:29:12
551
原创 DDD领域驱动设计实战
文章最后提供了一个DDD重构的路线图,包括头脑风暴、设计限界上下文、微服务设计等六个步骤。同时,提出了几个思考题,鼓励读者思考DDD的最大价值和如何成功落地DDD。
2024-04-16 15:53:04
933
原创 分析系统性能问题从哪里入手?
以上是对文档内容的概括性总结,每个大点下的小点是对主要内容的进一步细化。通过这些总结,可以更清晰地理解高性能架构的关键要素和优化方法。
2024-04-16 15:37:55
410
原创 限流器“Diana”护网站和服务免受突发高并发流量的冲击
Diana支持多种限流规则,包括全局限流、账号限流、设备限流和资源限流。本地限流在单个服务器上记录请求,而远程限流则通过共享的配置中心或Redis进行请求记录。:Diana使用YAML格式的配置文件,其中包含限流的资源地址、限流对象、时间单位、请求数限制、限流范围和算法等配置项。:作为技术中间件,限流器需要具备易用性和扩展性,以满足不同业务场景的需求,并能够在技术层面提供有效的支持和优化。:Diana能够在配置中心或Redis服务器不可用时自动降级,使用本地配置或限流,以保持系统的高可用性。
2024-04-15 21:30:47
227
原创 微博如何应对高并发
对于用户关注的微博内容更新,系统采用推拉结合的策略。:对于写操作(如发表微博),使用消息队列来平滑数据库写入压力,避免因高并发写入导致数据库崩溃。:采用用户ID分片策略,将微博数据分散到多个数据库服务器上,以提高查询效率和系统的扩展性。:应用服务器使用Redis缓存来快速检索用户关注的最新微博,减少对数据库的直接查询压力。:通过CDN和反向代理服务器来减轻带宽压力和处理用户请求,如图片和视频的缓存。:使用时间淘汰算法,缓存最近7天内的所有微博内容,以减少数据库查询压力。
2024-04-15 21:28:18
279
原创 go channel 的底层实现原理 (数据结构)
一、Channel的基本概念与特性 1.类型安全:Channel数据类型确定,发送和接收数据类型必须一致,保证传输安全。2.阻塞式通信:当接收方或发送方等待数据时,会阻塞执行,避免浪费资源。二、Channel底层结构 1.hchan结构体:包含指向接收/发送缓冲区指针,Channel容量,发送接收者数量等。三、发送与接收过程 1.发送数据:发送方将数据插入发送缓冲区,唤醒等待接收方。四、关闭与垃圾回收 1.close操作:关闭Channel,无法再发送接收数据,触发垃圾回收。3.先进先出(FIFO)
2024-04-08 16:40:45
606
原创 Go语言支持重载吗?如何实现重写?
然而,可以通过方法重写(override)来实现类似的功能。方法重写是指在子类中定义一个与父类同名的方法,从而覆盖父类中的方法。Go语言不支持传统意义上的函数和方法重载。在Go语言中,函数名或方法名不能相同但参数列表不同,因为这会导致编译错误。尽管Go语言没有传统意义上的函数和方法重载,但通过方法重写,可以实现类似的功能,从而满足不同场景下的需求。中重写后的方法,而不是父类。方法时,实际调用的是子类。
2024-04-08 16:07:10
1486
原创 Go语言中如何实现多态
在Go语言中,虽然没有像其他面向对象语言(如Java或C++)中那样的显式的类继承和多态机制,但通过接口和方法的组合,可以实现类似多态的效果。通过接口和方法的组合,可以很方便地实现多态的效果,在不同的上下文中实现相同的方法调用表现出不同的行为。多态是指在不同的上下文中,同样的方法调用可以表现出不同的行为。在Go语言中,可以通过接口来实现多态。函数,分别传入了圆形对象和矩形对象,实现了不同的行为。分别是圆形和矩形的结构体,它们都实现了。函数中,通过多态的方式,调用了。是一个接口,定义了一个方法。
2024-04-08 16:04:26
556
原创 Go语言中如何实现继承
Go语言中没有传统意义上的类和继承的概念,但可以通过嵌入类型(embedded types)来实现类似的功能。嵌入类型允许一个结构体类型(子类型)包含另一个结构体类型(父类型)的字段和方法。虽然Go语言中没有传统意义上的继承概念,但嵌入类型提供了一种更加灵活和简洁的方式来实现类似的功能。类型的方法,同时还可以定义自己的方法。类型的所有字段和方法。
2024-04-08 16:02:46
453
原创 io多路复用 和 事件驱动的关系
I/O多路复用是一种机制,允许一个进程同时监视多个I/O通道(如网络连接、文件描述符等),并在其中任何一个I/O通道上发生事件时进行处理。这样,一个进程可以同时管理多个I/O操作,而不需要为每个I/O通道创建一个单独的线程或进程。在事件驱动的编程模型中,通常会使用I/O多路复用机制来实现并发I/O操作的监听。这样,程序就可以同时监听多个I/O通道,而不会因为等待某个I/O通道的事件而阻塞。总的来说,I/O多路复用和事件驱动是在处理并发I/O操作时常用的两种技术,它们通常结合使用,以实现高效的并发编程。
2024-04-08 16:01:44
436
原创 通俗拟人 描述 epoll和select区别 ,用同一种场景对比区别
使用 select 的场景下,你需要手持地图,依次查看每个地区的送货地址,然后选择一个地区,前往派送包裹。但是,当你到达某个地区时,即使客户没有包裹需要派送,你仍然需要等待一段时间,直到下一个地区的客户需要你的服务。当你到达一个地区时,你不需要等待客户的包裹需求,而是直接拨打电话询问客户是否有包裹需要派送。只有当有客户需要派送包裹时,你才会花时间派送包裹,而不需要在每个地区等待。使用 epoll 时,你可以更高效地利用时间,因为你不会在每个地区等待,而只会在有需要时才等待。
2024-04-08 16:01:04
195
原创 通俗易懂地解释Go语言不同版本中垃圾回收机制的演进过程
Go 1.5 - 三色标记法 这种方式就像有三个箱子,白色箱子装新物品,灰色箱子装暂时需要的物品,黑色箱子装长期需要的物品。打扫时先从需要保留的主物品开始,将它和它直接相连的东西放入灰色箱子。然后再从灰色箱子里将相连的其它需要的物品放入黑色箱子,周而复始,直到灰色箱子空了。取出时如果是白色或灰色的物品,也标记为灰色。同时,主人打扫时,先将自己正在使用的物品标记为黑色,然后新放入的也是黑色,避免了中断正常活动。这个过程虽然直观,但暂停其他活动会带来很大影响,而且检查全部物品和处理没用物品也都耗费时间和空间。
2024-04-07 16:32:23
660
原创 游戏设计心理学
这些是游戏设计心理学中更深层次和更具体的原则和概念,设计师可以结合自己的项目需求和目标受众选择适合的原则进行应用和实践。通过深入理解这些原理,设计师可以更加精准地设计游戏,满足玩家的需求,并创造出更有吸引力和影响力的游戏作品。
2024-04-01 21:03:51
469
原创 《架构师程序员面试题》Kubernetes(简称 K8s)入门教程
Kubernetes(简称 K8s)是一种开源的容器编排和管理平台,它能够自动化地部署、扩展和管理容器化的应用程序。Kubernetes 提供了丰富的监控和管理工具,包括 Kubernetes Dashboard(用于可视化管理集群)、Prometheus(用于监控集群性能)、Grafana(用于可视化监控数据)等。它的目标是简化容器化应用程序的部署、扩展和管理,提供高度可靠和可扩展的基础设施。Kubernetes 允许根据需求扩展集群的规模,以满足应用程序的需求。
2024-03-28 11:50:42
700
1
原创 《程序员架构师面试题》Zabbix、Prometheus 的区别 相对于 ebpf对服务器性能的影响
Zabbix和Prometheus是两种流行的监控系统,而eBPF(Extended Berkeley Packet Filter)是一种用于增强Linux内核功能的技术。
2024-03-28 10:55:31
461
1
原创 《程序员架构师面试题》linux cache 和buffer通俗解释
综上所述,Linux中的Cache和Buffer都是用于优化文件系统性能的重要机制,它们通过将数据存储在内存中,减少了对磁盘的读写操作,从而提高了文件的访问速度和系统的整体性能。Linux中的Cache和Buffer是用于优化文件系统性能的关键概念,它们都是存储在内存中的临时数据。
2024-03-28 10:54:34
332
1
原创 《架构师实战面试题》限流、降级、熔断 手段通俗解释
熔断是一种保护系统稳定性的手段,用于在系统出现故障或异常情况下,及时中断对故障组件的访问,以避免故障扩散和进一步的系统崩溃。在分布式系统中,熔断会监控对某个服务或组件的请求,如果请求失败或超时达到一定阈值,熔断机制将中断对该服务的请求,而不是继续尝试。降级是一种应对系统压力的手段,用于在系统资源不足或出现故障的情况下,减少对关键功能的依赖,以保证系统的基本功能仍然可用。通过限制请求的速度,可以保护系统免受过多的负载和资源耗尽的影响,确保系统的稳定性和可用性。
2024-03-26 17:27:50
437
原创 排序、搜索、动态规划、贪心算法等 通俗拟人解释一下
例如,冒泡排序就像是两个人相邻交换位置,每次比较两个相邻的元素,如果它们的顺序不正确,就交换它们的位置,直到整个序列有序。它始终选择在当前情况下看起来最好的选择,而不考虑未来可能出现的情况。例如,二分搜索算法可以将一本有序的书籍翻到中间页,然后根据目标信息与当前页的比较结果,决定继续在前半部分还是后半部分继续搜索,以此类推,直到找到目标信息或确定无法找到。这些拟人化的解释旨在以生动的方式描述算法的基本概念,但请记住,算法是一种形式化的思维工具,其具体实现和性质可能更加复杂。
2024-03-26 16:28:12
204
原创 动态规划核贪心算法 在服务器业务开发的具体场景中的应用
需要注意的是,具体的服务器业务场景可能更加复杂,可能需要结合其他算法和技术来解决。在实际应用中,根据具体问题的特点和要求,选择合适的算法和技术来解决服务器业务的挑战。:在服务器集群中,负载均衡是一种常见的技术,用于将客户端请求分配到不同的服务器上,以实现服务器资源的均衡利用。贪心算法可以应用于资源分配的决策,选择当前空闲资源最多的服务器进行任务分配,以最大化资源的利用效率。贪心算法可以根据任务的优先级选择最高优先级的任务先进行处理,以提高关键任务的响应速度和用户体验。
2024-03-26 16:27:16
383
1
原创 《架构师实践》微服务拆分 降低对业务开发的影响
因此,在进行架构重构时,建议进行充分的规划和评估,并与相关的团队和利益相关者进行充分的沟通和协调。同时,采用适当的工具和技术,如自动化部署、持续集成等,可以提高拆分过程的效率和质量。这样可以确保不同微服务之间的交互和通信是清晰和规范的,减少对业务开发的影响。在每个阶段中,只拆分一小部分功能,这样可以限制对业务开发的影响,并逐步推进整个架构转换过程。并行开发和部署:在拆分过程中,尽可能进行并行的开发和部署。适当的测试和监控:在拆分后,确保进行适当的测试和监控,以确保新的微服务和整体系统的稳定性和性能。
2024-03-26 15:19:58
166
原创 《架构师实践》微服务 SOA、DDD 区别和联系
微服务架构强调的是通过拆分应用程序为独立的、自治的服务,每个服务专注于一个具体的业务功能。它倾向于更小粒度的服务,使得服务之间的解耦更加彻底,同时也带来了一些挑战,如服务间的通信、数据一致性等。与微服务相比,DDD更加关注业务领域的建模和设计,而不是架构层面的拆分和通信。与微服务相比,SOA通常更加企业级化,服务粒度较大,强调服务的可复用性和集成。在实施微服务架构时,需要仔细考虑组织的技术能力、团队的规模和复杂性、应用程序的特点等因素,并权衡其带来的利弊。
2024-03-26 15:18:45
383
原创 《架构师实践》MEA 架构评估方法
定量评估可以使用度量指标、仿真工具或模型检测技术等,以量化地评估系统在性能、可靠性、可用性等方面的表现。分析可以包括对性能瓶颈的识别、系统可靠性的分析、资源利用率的评估等。MEA架构评估方法的目标是帮助架构师和开发团队在系统设计和实现之前,对系统的关键属性进行评估和分析。通过此方法,可以发现潜在的问题,提前进行改进和优化,从而确保系统具备良好的性能、可靠性和可用性。模型(Model):首先,建立系统架构的模型。需要注意的是,MEA方法是一个通用的架构评估方法,可以根据具体的应用场景和需求进行定制和扩展。
2024-03-26 15:18:02
292
原创 《架构师实践》CAP、FLP、BASE 理论
在异地多活架构中,由于网络延迟和分区等因素,BASE理论提供了一种折衷方案,允许系统在一段时间内处于部分一致性的状态。CAP 理论(Consistency, Availability, Partition tolerance):CAP理论是分布式系统中的一个基本原则,指出在面临网络分区(Partition)时,分布式系统无法同时保证一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)。
2024-03-26 15:17:26
260
原创 kubeadm 部署全过程问题解决记录
第一步 apt-get install kubeadm出现问题 Unable to locate package kubeadm执行 apt-get update出现问题Err:1 http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial InRelease The following signatures couldn't be verified because the public key is not available.
2022-01-31 22:55:34
1470
原创 Golang 检查元素在slice中是否存在 模仿Php实现arrary_In
正常的我们会自己写一个这样的方法,但是很不通用,因为有时候是查找int 有时候查找stringfunc Find(slice []string, val string) (int, bool) {for i, item := range slice {if item == val {return i, true}}return -1, false}所以为了扩展性我推荐一个git库...
2021-10-19 11:25:35
281
转载 MySQL查询优化之explain的深入解析
在分析查询性能时,考虑EXPLAIN关键字同样很管用。EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作、以及MySQL成功返回结果集需要执行的行数。explain 可以帮助我们分析 select 语句,让我们知道查询效率低下的原因,从而改进我们查询,让查询优化器能够更好的工作。一、MySQL 查询优化器是如何工作的MySQL 查询优化器有几个目
2015-09-30 15:08:46
573
原创 Web UI⾃动化测试平台,专治Web 的各种疑难杂症。
Web UI⾃动化测试平台,专治Web 的各种疑难杂症。• Totoro - https://github.com/totorojs/totoro• Dalekjs - http://dalekjs.com/index.html• Automaton - http://indigounited.com/automaton/• Selenium - http://www.seleni
2015-09-23 10:33:54
773
原创 yum错误---Running Transaction
yum错误---TypeError: rpmdb open failed 一、错误信息今天使用yum的时候出现的报错,如下是报错和解决的办法rpmdb: Thread/process 28879/3086964416 failed: Thread died in Berkeley DB libraryerror: db4 error(-30975) from dbe
2014-07-03 13:26:17
3299
3
原创 CentOS6.2安装redmine2.3
第1步:安装支持插件和其它插件;[root@localhost/]# yum -y install zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel[root@localhost /]# yum –y install gcc gcc-c++ make wget lrz
2014-04-28 15:30:22
1827
原创 php遍历一个目录 并重命名
/**********************一个简单的目录递归函数第一种实现办法:用dir返回对象***********************/function tree($directory) { $mydir = dir($directory); echo "<ul>\n"; $i=1; while($file = $m...
2013-09-04 16:48:36
241
转载 windows下常见php集成环境安装包介绍(updated)
windows下常见php集成环境安装包介绍(updated)September 4, 2010 | 作者:猪肉有毒 WAMP是指在Windows服务器上使用Apache、MySQL和PHP的集成安装环境,可以快速安装配置Web服务器,一般说来,大家都习惯于将Apache、MySQL、PHP架设在Linux系统下,但是,不可否认的是Windows也有其优点,就是易用,
2013-07-31 21:42:22
18365
原创 ThinkSNS 仿蘑菇街 社区购物分享系统
我是在www.thinksns.com又过一年微博开发经验的php资深程序员有需要的朋友请联系 QQ:601046124 价格便宜 另有 出售 并可承担后续技术支持 ThinkSNS 仿花瓣 仿知美 兴趣图谱分享系统ThinkSNS 仿堆糖 社区购物分享系统ThinkSNS 仿美丽说 社区购物分享系统 ...
2013-02-16 22:59:48
216
原创 thinkphp+extjs +jquery CMS管理系统
thinkphp+extjs +jquery CMS管理系统 thinkphp+extjs +jquery CMS管理系统 使用了extjs 下拉树 下拉多选树 下拉表格 下拉多选框等组件http://blog.aigouw.net/博客有源码下载地址 和预览地址 ...
2012-07-16 11:47:15
228
原创 extjs多选下拉树
extjs多选下拉树发表于 2012 年 7 月 15 日 由 q601046124extjs多选下拉树 extjs多选下拉树 详情 见 http://blog.aigouw.net/?p=17var menu = new Ext.ux.ComboBoxCheckTree({name:’cname’,fieldLabel : ‘|_列表’,hi...
2012-07-16 11:14:18
429
基于 Go 语言构建企业级的 RESTful API 服务 企业级go gin 开发框架 附带源码
2023-01-04
HTML 完全手册 初学者的首选
2009-11-18
悟透JavaScript.pdf
2009-11-18
DIVCSS布局大全.pdf
2009-11-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人