自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 常见大型Web项目分层

常见大型Web项目分层流行的web框架大多数是MVC框架,MVC这个概念最早是由Trygve Reenskaug在1978年提出,为了能够对GUI类型的应用进行方便扩展,将应用程序进行了3层划分。控制器(Controller):负责转发请求,对请求进行处理视图(View):洁面设计人员进行图形界面设计模型(Model):程序员编写程序应有的功能(实现算法等)、数据专家进行数据管理和数据库设计(可以实现具体的功能)随着技术的更新换代,大前端时代已然到来,与后端工程一样变得越来越复杂。为了更好的实

2022-01-21 00:52:40 954

转载 jQuery Validate

jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求。该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API。所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言。该插件是由 Jörn Zaefferer 编写和维护的,他是 jQuer

2015-12-29 09:40:30 494

转载 yum搭建lnmp环境(CentOS6.5)

在CentOS6.5下实践通过。1.关闭防火墙[root@CentOS ~]# chkconfig iptables off2.关闭selinuxvi /etc/sysconfig/selinux //将SELINUX=enforcing修改为disabled然后重启生效3、配置CentOS 6.0 第三方yum源(CentOS默认的标准源里没有nginx软件包)

2015-12-24 12:37:12 727

原创 大模型为使用Prompt提供的指导和建议

这些示例可以帮助您构建适合特定任务的 Prompt。根据您的需求,您可以根据上下文、明确的指令和示例数据来调整 Prompt,以获得满意的结果。同时,不断尝试和优化 Prompt 可能有助于改善模型的输出。当使用大型语言模型时,合适的 Prompt 对于获取理想的响应至关重要。

2023-09-18 17:27:54 550

原创 什么是架构思维?

在架构思维中,将问题分解为不同的组成部分,通过分析和理解组成部分之间的相互作用和依赖关系,以及它们在整体中的作用和影响,来构建一个可行的解决方案。架构思维在软件开发领域中尤为重要,因为软件系统通常非常复杂,包含大量的组成部分和相互依赖的模块。架构思维不仅仅是针对技术系统设计的一种思维方式,它可以应用于各种领域,如商业、管理、政策、教育等。通过架构思维,可以更好地理解事物的本质,抓住事物之间的联系和相互作用,从而找到最优解决方案。

2023-05-02 18:10:10 457

原创 亿级用户访问的架构方案

数据库集群:针对不同的应用场景和数据类型,选择合适的数据库类型(如关系型数据库、NoSQL 数据库等),并采用数据库集群来实现数据的高可用性和读写分离。CDN 可以将静态资源(如图片、视频等)缓存到全球各地的 CDN 边缘节点,使用户可以从最近的节点获取资源,减少网络延迟和带宽占用,提高用户体验和应用的可用性。缓存系统可以缓存热点数据和常用的查询结果,减少数据库的访问次数和响应时间,提高应用的性能和可扩展性。分布式文件系统可以实现数据的可扩展性、高可用性和数据的备份等功能,为应用提供数据存储和访问服务。

2023-05-02 18:06:54 219

原创 千万级别用户访问的系统架构方案

数据库集群:针对不同的应用场景和数据类型,选择合适的数据库类型(如关系型数据库、NoSQL 数据库等),并采用数据库集群来实现数据的高可用性和读写分离。CDN 可以将静态资源(如图片、视频等)缓存到全球各地的 CDN 边缘节点,使用户可以从最近的节点获取资源,减少网络延迟和带宽占用,提高用户体验和应用的可用性。缓存系统可以缓存热点数据和常用的查询结果,减少数据库的访问次数和响应时间,提高应用的性能和可扩展性。对于敏感数据和重要业务的应用,可以采用多层防御和加强安全审计,确保应用的安全性和完整性。

2023-05-02 18:06:09 444

原创 架构之道读书笔记第一章

对架构师的陈述:对于初级架构师来说,做任何事情都有很多选项,然而对于架构大师来说,好选项非常有限的,甚至只会有一个。有时是有效的,但作为架构大师的我们,应该通过元设计方法对系统和项目进行设计,进而给出正确的设计方案。(如:模式、思想、方法和可能性等),而应该聚焦于少数正确完成的方法–元设计方法。对于任何给定的设计任务,正确完成的方法通常只会是少数的,我们应当忽略影响正确设计任务的。

2023-03-12 12:43:20 367

原创 Rust中一些重要的Trait

【代码】Rust中一些重要的Trait。

2023-03-08 16:51:06 256

原创 Golang控制goroutine并发数的N种方法

golang控制协程并发数实现的N种方式

2023-03-04 15:25:33 520

原创 golang协程报deadlock解决

当多个协程共同工作时,每个协程手机都持有相同资源的一部分,有需要另外一部分资源来完成当前工作,相互等待对方持有的资源而有不肯释放自身的资源,就这样僵持下去谁也得不到需要需要的资源,也无法执行自身的任务,最终就形成了Deadlock。读写操作放到不同的协程里,就不会发生Deadlock了,因为写操作的阻塞分别放生在子协程和main主协程里,main主协程就会认为还有等下去的希望,黄天不负主协程,最终他等来了子协程写入的数据,成功读取了并打印出来。,对其读写操作均会导致当前协程阻塞。

2023-03-03 21:54:07 476

原创 康威四大定律

康威定律指导微服务架构设计的必备宝典

2023-03-01 10:25:28 221

原创 如何修改rust中Mutex<String>类型的值?

在学习Rust的过程中遇到Mutex类型变量更新时遇到的坑,在此记录一下。

2022-11-05 09:37:23 460

原创 领域驱动正当时

软件世界的本质就是对现实世界的模拟。现实世界是什么样子的,软件就可以怎么设计,那么按照这种方式设计出来的软件是易于维护的。不管日后需求如何变更,软件变更都能轻松应对。如何将软件开发与现实时间对应起来呢?读者可以参考如下方式:+ 将真实世界的事物映射为软件世界的对象+ 将真实世界事物的行为方式映射为软件世界的方法操作+ 将真实世界事物的联系映射为软件世界对象间的关系按照领取驱动的设计思想,可以把真实世界中的事物、行为和联系转化为一个个的领域模型,然后再按照领域模型指导程序设计和数

2022-09-07 23:47:35 295

原创 4A模型架构

文化做接受、设计做创建、落地做使用、治理做维护

2022-08-14 23:40:29 1652

原创 分布式链路追踪到底是什么鬼?

单体应用环境下,一次请求的过程可以通过记录日志踩点的方式近似还原请求的执行的过程,但是到了微服务环境下,这种方式就先得捉襟见肘了。当出错误或系统性能瓶颈时,可观测的请求拓扑和调用链详情对解决问题就显得异常重要了。分布式链路追踪就是将分布式环境下的一次请求还原成调用链路,并将调用过程的详细信息通过可视化方式展现在我们面前,比如各个节点上接口的耗时、接口的错误信息、请求状态以及问题发生在哪台机器上等。谈到链路追踪就会涉及到。...

2022-07-25 23:46:42 201

原创 Rust使用关键字dyn返回Trait

编译器需要知道每个函数返回类型的占用空间大小,这意味着你编写的所有函数都需要返回一个具体的类型。于其它语言不同的是你不能返回。会尽可能的明确在堆上分配内存的大小,如果你使用了指向堆内存方式的引用作为函数的返回值,那么你需要在返回值类型前面加上。使用堆上的一个引用,因为引用具体静态的大小,所以编译器可确保它指向了堆上分配了。),因为不同的实现方式有导致不同内存空间的占用大小。不过,解决方案也很简单,我们的函数可以使用包裹了。类型的地址,那么我们的函数就可以间接的返回。作为返回值,而不再返回。...

2022-07-25 23:23:23 1029

原创 基于kind构建kubernetes集群

使用之前需要先在本地主机安装环境。换句话说你必须在你的操作系统安装 kind 工具,例如,在系统可以使用安装:使用kind创建kubernetes集群下面的命令将会创建一个带有默认选项的集群:输出内容如下所示:如果我们想要通过创建多个集群怎么办呢?其实也考虑到了这种场景,通过在创建集群命令对的后面增加参数指定集群的标识名就可以了。输出内容如下:默认命令创建的集群名称是, 如果不指定标识没名称而使用默认命令再次创建,你将得到一个错误提示,大意是集群创建失败,原因名称为的集群已经存在了。输出如下:

2022-06-13 17:09:16 985

原创 微服务生态系统之实施挑战

在微服务演进的道路上,我们的目标是将一个个大的单体应用拆分成多个可独立工作的业务单元,这些业务单元是可以独立开发、测试、部署和运维的工作节点。但是,微服务系统架构归根结底是分布式系统,我们都知道分布式系统是复杂的,是为微服务实施不可避免的挑战。实施微服务面临的挑战有以下几点:微服务的演进不仅仅是架构的演进,也是架构、实践、组织架构等的综合演进,这是一个系统过的大工程。...

2022-06-05 20:50:02 113

原创 TLS 1.3 握手过程

TLS 1.3 握手过程图

2022-06-01 15:05:51 184

原创 使用Golang如何将[]byte字节数组转成int类型

可以通过使用encoding/binary下的ByteOrder将go语言的字节数组转成int类型,下面以小端序的字节数组[8 0 0 0]转成uint32为例:package mainimport ( "encoding/binary" "fmt")func main() { byteArr := []byte{8, 0, 0, 0} fmt.Println("原始字节数组为:") fmt.Println(byteArr) data := binary.LittleEndian.U

2022-05-16 14:46:44 10621

翻译 没有依赖的方式创建本地可信任的HTTPS证书

mkcertmkcert is a simple tool for making locally-trusted development certificates. It requires no configuration.$ mkcert -installCreated a new local CA 💥The local CA is now installed in the system trust store! ⚡️The local CA is now installed in the Fi

2022-05-11 17:24:22 492

原创 containerd 1.4.9 Unimplemented desc = unknown service runtime.v1alpha2.RuntimeService

Just a blank config with systemd_cgroup fixed issue for me:cat > /etc/containerd/config.toml <<EOF[plugins."io.containerd.grpc.v1.cri"] systemd_cgroup = trueEOFsystemctl restart containerd

2022-05-06 16:39:52 3567 3

原创 go语言中避免main函数退出的必要性

在GO语言中main函数的过早退出有时是有害的,原因是main函数的退出会导致整个程序的退出,如果程序是基于协程来实现的,那么main函数的退出必然导致协程无法执行完成而退出,从而导致程序出现非预期的结果。因此,在很多时候我们是不希望main函数提前退出的。下面几种方式可以阻止main函数提前退出。方式一func main() { defer func() { for {} }()}方式二func main() { defer func() { <- make(chan b

2022-03-26 23:13:36 1259

原创 基于go的多通道示例

package mainimport ( "fmt" "time")func main() { pool := make(chan chan int, 10) chi := make(chan int) chi2 := make(chan int) go func() { for { pool <- chi pool <- chi2 select { case aa := <-chi: fmt.Println("aa:", aa)

2022-03-25 18:20:09 264

原创 分布式架构中的八大谬误

分布式架构之所以在性能、可伸缩性和可用性方面比单体架构强大的多,是因为这些都是建立在大量折中的基础上的。所有的分布式架构都会面临这样的一组问题-——“分布式计算的谬误”。谬误是被认为或嘉定正确但实际上是一种错误的言论,时至今日这8个描述仍然适用。谬误一:网络是可靠的谬误二:网络传输零延迟谬误三:带宽是无限的谬误四:网络是安全的谬误五:网络拓扑结构从不会改变谬误六:只有一个管理员谬误七:网络传输成本为零谬误八:网络是同构的除了上述8个谬误的问题之外,分布式架构还面临其他问题和挑战,如下:

2022-02-18 22:51:43 454

原创 架构师眼中的架构设计反模式

通常架构设计都会遵循多种设计模式,但是,由于资源不足或者时间紧迫,团队会妥协进而可能偏离最佳时间。因此,架构师们需要在架构设计中持续关注以下反模式(某种不良系统设计的示例):在反模式中,伸缩是被动的,需要手动完成。如:服务器磁盘容量已满时,将会拒绝用户正常访问,在反模式下,直到用户投诉后,开发和管理员才发现问题不妙,需要增加磁盘并重启服务器来恢复服务。不幸的是,在服务器未完全起来之前是无法正常提供服务的,总是需要几分钟的时间。缺少自动化。应用服务崩溃时,管理员必须手动启动并配置新夫妻,还要手动通知用户

2022-02-15 22:25:50 211

原创 遗留系统架构设计

2022-02-13 21:36:28 624 1

原创 云原生与12因素

12因素是云原生应用的设计理念,用于指导开发者充分利用云平台提供的优势开发出易维护、高可靠和便于扩展的应用程序。具体内容如下:Codebase: 基准代码,一份基准代码多分部署。用一个代码长裤进行版本控制和应用程序的多次部署,胚子、初始化数据都应该纳入版本控制进行管理,在统一的代码库中为代码配置、测试和部署脚本都建立独立的项目和模块Dependencies:依赖,显式生命依赖的关系。医用程序通过适当的工具(如:NPM、Cargo、Composer)隔离依赖,目的不依赖部署环境Config:

2022-02-13 17:57:27 531

原创 微服务设计的六大原则

微服务架构是目前比较流行的一种趋势,不仅带了软件基础架构上的革新,也带了一系列良好的设计理念和原则,这些原则不仅适用于实现最佳的微服务架构场景,同样也适用其他的架构设计场景,下面我们看下微服务设计的一些原则:高内聚低耦合单一职责轻量级通信服务间的契约高度自治能够独立开发、部署和发布进程隔离独立的代码库和流水线以业务为中心每个服务代表了特定的业务逻辑更快的响应业务变化围绕业务组织团队弹性设计容错服务降级日志与监控日志聚合监控与告警自动化

2022-02-13 17:21:20 1538

原创 分布式系统之“超时重试”

2022-01-20 23:10:50 1465

原创 对架构师的角色期望的理解

软件架构师这一角色的有效性以及是否成功的首要关键因素在于对这些期望的理解和实践制定架构决策架构师需要制定架构决策和设计原则, 用于知道团队、部门或者整个企业进行技术决策持续架构分析架构师需要持续分析当前架构和技术上下文环境, 然后提供优化和改进意见掌握最新趋势架构师不要不断滴探索和学习, 掌握最新的技术和行业趋势确保决策被遵循架构师需要确保架构决策和设计原则被遵守丰富的经历和经验架构师需要涉猎各种各样的技术、框架、平台、环境和架构, 不仅要丰富自己知识库的深度

2022-01-03 09:57:11 4265

原创 架构师这一角色的期望状态

众所周知每个企业的软件架构都是不同的, 我们很难去定义什么是软件架构以及什么样的软件架构是最好的, 只有不断的演进和取舍才能最适合企业的架构. 对于架构这一角色也是同样, 与其花费时间去定义什么是架构师, 倒不如关注对软件架构师的期望.软件架构师的8项核心期望:制定架构决策持续分析架构掌握最新趋势确保决策被遵循丰富的经历和经验具备业务领域知识具备人际交往能力了解并驾驭企业整治软件架构师职责:...

2022-01-02 15:22:21 877

原创 去重并统计每个月账单金额

使用rust进行账单去重并统计

2021-12-16 15:29:16 234

原创 基于Go实现自定义Prometheus监控指标

使用go自定义prometheus监控指标package mainimport ( "fmt" "net/http" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "log" "math/rand" "time")var ( counter = prometheus.NewCounter( prometheu

2021-10-14 11:06:26 2435

原创 Konga面板接入LDAP踩坑实战

Konga面板接入LDAP踩坑实战基于docker-compose构建konga面板,脚本内容如下:docker-compose.ymlversion: '3.7'services: konga: image: pantsel/konga container_name: konga restart: always environment: - KONGA_AUTH_PROVIDER=${KONGA_AUTH_PROVIDER} - KON

2021-07-20 16:42:30 302

原创 我所理解的模板方法模式

定义在父类中定义处理流程的框架,在子类中实现具体处理的模式就称为模板方法模式参与角色抽象类(AbstractClass)抽象类不仅负责实现模板方法,还负责声明在模板方法中所使用到的抽象方法。具体类(子类)该角色负责具体实现抽象类角色中定义的抽象方法。这里实现的方法将会在抽象类角色的模板方法中被调用。优点封装不变部分,扩展可变部分提取公共部分代码,便于维护行为由父类控制,子类...

2018-09-19 17:28:58 201 1

转载 微信开放平台开发 微信登录

在这篇微信公众平台开发教程中,我们将介绍如何使用微信开放平台接口实现微信扫码登录的功能。 准备工作网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。在进行微信OAuth2.在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,

2016-01-12 17:54:18 6738 1

转载 微信web开发者工具

概述为帮助开发者更方便、更安全地开发和调试基于微信的网页,我们推出了 web 开发者工具。它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在 PC 或者 Mac 上进行开发和调试工作。立即下载体验你可以:使用自己的微信号来调试微信网页授权调试、检验页面的 JS-SDK 相关功能与权限,模拟大部分 SDK 的输入和输出使用基于 weinre 的移动

2016-01-12 17:50:12 2906 1

转载 微信连wifi portal验证

创建公众账号门店1.添加功能门店管理2.创建门店添加微信连Wi-Fi设备 完成后提交,获得门店Wi-Fi设备改造信息,包括:appId,shop_id,ssid,secretkey。开发移动端

2016-01-12 17:47:13 43873 6

通联支付代码

通联支付的扩展包,可以直接用于项目中,呼起通联支付的收银台,进而进行相应的支付

2018-03-27

DS18B20文档

温度传感器DS18B20的完全详细介绍DS18B20 的 内 部 有 64 位 的 ROM 单元,和 9 字节的暂存器 单 元 。 64 位 ROM 包 含 了 , DS18B20 唯一的序列号(唯一 的名字)。

2013-08-27

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

TA关注的人

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