web开发
文章平均质量分 85
shanxiaoshuai
独学而无友,则孤陋而寡闻
展开
-
业务网关的设计与实践
上图为简易的请求链路图,其主要展示了请求从用户端发出到到达业务应用之间的链路。在完整的系统架构图中通常会把这部分概括为网关层,细分的话会先后经历CDN节点、流量网关、业务网关。CDN的作用大家都清楚,这里就不做赘述。流量网关和业务网关则各自有自己的定位和职责。原创 2024-04-04 22:20:06 · 725 阅读 · 0 评论 -
【golang】golang面向包的设计
最近在做重构,并且是一个基础组件的重构,所以想写点关于如何写代码的东西。如何写代码是一个很大很大的话题,可以涉及到的内容很多,比如相对基础的有设计原则、设计模式、代码规范等,相对高阶一点指导代码架构的简洁架构、领域驱动等。本篇的内容会聚焦于代码架构层的内容。同时因为作为基础组件,不包含复杂的业务,所以类似领域驱动的内容也不会涉及。所以本篇的内容可以定位为中等复杂程度的golang项目应该如何组织代码。原创 2022-11-20 18:49:57 · 1034 阅读 · 0 评论 -
【微服务系列】Protocol buffer和grpc动态解析
protobuf and grpc的动态解析原创 2022-06-02 00:31:55 · 1296 阅读 · 8 评论 -
【golang】性能优化
文章目录GC优化技巧slice预分配内存map预分配内存字符串拼接其他内存优化的例子计时器优化excel导出内存优化这篇文章打算聊聊go的性能优化。性能优化其实是一个很大的话题,要是铺开来讲十篇文章也讲不完。所以我加了两个限制词:golang和内存,把主题从性能优化减小到语言层面的内存相关的性能优化。文章内容会先介绍golang的GC,同样按我以往文章的风格,GC这部分不会写得太详细,因为已经有太多优秀的文章了。然后会讲一些性能优化技巧。最后是我在最近做的和内存相关的两个优化,一个是定时器相关,一个exc原创 2021-12-04 20:14:18 · 2243 阅读 · 0 评论 -
【存储】MySQL 和 MongoDB
这篇文章主要想聊聊mysql和mongoDB。这两个数据库的定位都是持久化的主存储。mysql的地位不用多说,mongoDB的应用也越来越广泛。在学习mongoDB的过程中,发现其在设计上和mysql有很多相似的地方,所以想着写一篇关于mysql和mongoDB文章。本文的内容会包括技术选型、索引、事务、日志、数据一致性等,因为内容较多,可能很难一次写完。我会尽量督促自己多思考、多总结、多写、多分享。然后内容可能不会太详细,后面会慢慢完善,包括补充一些图片。技术选型:MySQL or MongoDB说原创 2021-11-27 16:41:49 · 3476 阅读 · 2 评论 -
词频分析方案
在我们做的调研产品中,最近有个词频分析的需求,其希望能从用户的文本作答中提取关键词并按照频次排序展示,同时可以从关键词得到其来源的完整作答。预期的效果是这样的,当然前端如何展示我们并不是那么关心。从后端的角度,可以将需求做如下拆分:分词:将文本作答进行分词处理得到关键词;存储:需要将分词结果进行持久化的存储;查询:对分词的结果进行聚合并按频次排序,根据关键词召回其来源的作答;在技术选型上,说起分词,首先想到的其实就是es。除了内置的分词功能外,es的聚合功能和搜索功能也满足对关键词进行聚合原创 2021-10-13 21:15:49 · 2402 阅读 · 0 评论 -
基于websocket实现长连接服务
最近做了一个长连接相关的小需求,业务场景为报告的评论。当对报告进行评论时,其他在浏览该报告的用户会得到评论的推送。具体的该功能的实现是基于公司提供的长连接的基础服务,我们只需要接入该平台,申请的得到类似appId的服务标识,并实现相应的rpc方法即可。基于这个需求,也顺便去了解了websocket的相关内容以及如何自己实现一个websocket服务。关于websocket的内容这里就不多说了,其是一个基于TCP的应用层协议,利用http进行握手而建立连接,最大的特点就是全双工通信,即服务端可以主动向客户原创 2021-10-12 23:29:28 · 1603 阅读 · 0 评论 -
单点登录和第三方登录
最近做了一些登录相关的工作,顺便看了下常见的登录方案,这里主要从后端的角度梳理一些技术细节。单点登录单点登录(Single Sign On),简称SSO,是目前比较流行的一种解决方案,其表现为对一组相互信任的应用,用户只需要登录其中一个应用,就可以访问所有相互信任的应用,登出依然。最常见的就是淘宝和天猫,当登录其中之一后,另外一个天然的共享登录态。单点登录实现需要依赖独立部署的认证服务来实现。我们假设有A和B两个相互信任的应用,共同接入了独立部署的认证中心sso(接入采用的是OAuth,在第三方登原创 2021-07-31 22:18:01 · 2795 阅读 · 0 评论 -
【go】gomock的使用方法及源码解析
gomock是官方提供的mock框架,用于解决单元测试中遇到的外部依赖问题,并且还有mockgen工具用来辅助生成相关的mock代码。gomock的原理是:针对 interface 生成对应的Mock代码文件,其中包含了一个实现该接口的结构,并提供了操作该结构行为的方法。使用该结构代替真实的依赖,可以控制下游按我们想要的方式进行某些操作和返回结果,以此达到解除外部依赖的目的。1. 安装gomock和mockgen# 安装gomock和mockgengo get -u github.com/golan原创 2021-04-07 18:21:37 · 2213 阅读 · 0 评论 -
【git】git底层原理及相关命令
写在前面git是一款非常好用的分布式的版本控制软件,然后最近看了git底层实现的一些东西(也不是很底层),记录总结一下,以便更好的理解使用git。本文主要是从三个对象说起。三个对象三个对象分别是git对象、tree对象、commit对象。三个对象对我们理解git如何组织和保存数据,以及git的各种操作如何实现非常有帮助。git对象git对象对应的是单个的文件内容,保存在版本库中。git对象没有名字,是通过文件内容的哈希值来进行标识的。可以通过底层命令git hash-object 文件路径原创 2021-01-12 18:42:35 · 227 阅读 · 0 评论 -
【python】正则表达式
写在前面:最开始接触正则表达式是看了廖师傅的教程。里面介绍了一些基础的内容,最近看flask的源码,看路由部分的时候又涉及了很多正则表达式的内容,所以准备开个帖子,将正则表达式的内容整理一下,以后遇到的新的内容也添加进来~分组()当在正则表达式的pattern中使用()将某一部分括起来的时候,就是使用了分组的功能。对匹配成功后返回的match对象,可以调用group方法来查看分组的结果。>>> m = re.match(r'^(\d{3})-(\d{5})$', '010-5432原创 2020-11-29 13:06:07 · 98 阅读 · 0 评论 -
【flask】nginx+uwsgi部署flask应用
最近几天研究了一下运行flask应用的方式,所以就总结一下。内容包括nginx+uwsgi部署flask应用,但是也包括一下其它的相关内容。一、使用flask自带的web server当我们完成一个flask应用的时候,通常会添加下面这段代码。if __name__ == '__main__': app.run('127.0.0.1', 8080)这就是以flask自带的web_server运行了我们所写的flask应用。点进去可以看到这个web_server是通过werkzeug.se原创 2020-11-24 23:14:34 · 591 阅读 · 0 评论 -
【linux】虚拟机centos7安装python3
https://www.cnblogs.com/mosson/p/12485517.html原创 2020-11-23 13:45:24 · 463 阅读 · 0 评论 -
【nginx】下载安装和启动
依赖环境准备一. gcc 安装安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:yum install gcc-c++二. PCRE pcre-devel 安装PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 p原创 2020-11-19 22:09:39 · 139 阅读 · 0 评论 -
【nginx】上传模块upload module
这两天刚好在做上传文件的功能,趁机系统地整理一下nginx的upload模块。一、upload模块的工作原理upload模块通过nginx server来接受用户上传的文件,解析请求体中的文件并将其存放在upload_store指定的路径下。之后,从请求体中解析出文件信息,并按照nginx.conf中的upload模块的配置对请求信息进行一些处理,然后传递给upload_pass指定的段处理。处理过程如下:1、用户提交表单;2、浏览器将文件和文件信息作为请求的一部分发送给服务器;3、服务器将该请原创 2020-09-21 21:05:44 · 1384 阅读 · 0 评论 -
【nginx】简介及常用配置
转载两篇文章:其中nginx模块开发入门对nginx原理部分的描述个人觉得很好,模块开发方面后面有空会深入看看。nginx常用模块处理对常用模块的配置做了总结转载 2020-09-14 15:09:21 · 79 阅读 · 0 评论 -
flask报错-Did you forget to specify values [‘name‘]?
今天在联系flask反向生成URL的时候出现了一个错误,报错及代码如图所示。可以看到是在对视图函数login进行反向生成URL的时候报错,这是因为在login的路由中我用了转换器,相当于一个变量,所以在反向生成URL的时候flask不知道/username/的部分是什么,需要我们specify。...原创 2020-08-12 11:59:47 · 1383 阅读 · 0 评论