- 博客(61)
- 收藏
- 关注
原创 Protobuf 语法
protobuf 文件以.proto做为文件后缀,除结构定义外的语句以分号结尾结构定义可以包含:message、service、enumrpc方法定义结尾的分号可有可无Message命名采用驼峰命名方式。
2023-11-14 14:50:03 212
原创 RedisSearch 标签搜索 中文支持
公司需要做一个推荐系统,最后确定下来做一个初版,基于内容的推荐算法,使用相似度算法(余弦相识度)算法,目前Redis扩展 RedisSearch支持了 FLAT 和 HNSW 两种方式。HNSW 比较合适,但是因为目前我们使用 golang 语言,没有合适的框架帮助我们生产商品数据,以及时间等原因第一期暂时不适用。最终选择了 Tag 搜索来满足0到1的实现。
2023-07-20 15:35:05 441
原创 增广贤文 - 原文
增广贤文前人俗语,言浅理深。 补遗增广,集成书文。世上无难事,只怕不专心。成人不自在,自在不成人;金凭火炼方知色,与人交财便知心。乞丐无粮,懒惰而成。勤俭为无价之宝,节粮乃众妙之门。省事俭用,免得求人。量大祸不在,机深祸亦深。善为至宝深深用,心作良田世世耕。群居防口,独坐防心。体无病为富贵,身平安莫怨贫。败家子弟挥金如土,贫家子弟积土成金。富贵非关天地,祸福不是鬼神。安分贫一时,本分终不贫。不拜父母拜干亲,弟兄不和结外人。人过留名,雁过留声。择子莫择父,择亲莫择邻。爱妻之
2023-06-29 14:49:16 715
原创 Git 变基多 commit 合并成一个
开发过程中我们会不断的提交 commit , 一个需求可能会有几十上百个commit, 当我们把这些 commit 合并到 master 分支时,会看到整个开发线条凌乱不堪。为了让合并线条更加优雅,这里讨论一下变基命令。需求全部测试完毕后,发布上线前,处理好开发分支,然后提交合并请求。Notice::如果处理途中出现冲突,需要复测代码。采用变基命令将最新的代码调整至 master 上。
2023-06-29 14:48:32 189
原创 代码中坏味道
代码中坏味道*DuplicatedCode(重复代码)*LongMethod(过长函数)*LargeClass(过大的类)*LongParameterList(过长参数列)*DivergentChange(发散式变化)*ShotgunSurgery(霰弹式修改)*FeatureEnvy(依恋情结)*DataClumps(数据泥团)*PrimitiveObsession(基本类型偏执)*SwitchStatements(switch惊悚现身)*ParallelInheritanceHie
2023-06-29 14:48:19 73
原创 消息AMQP之RabbitMq
背景做新项目需要使用到异步过程,这里需要使用到消息队列,调研了下市面上的队列服务,目前考虑使用 RabbitMq队列。至于为啥选RabbitMq,是因为市场占有率高,表现比较稳定,社区活跃程度高,相对完善的文档和资料。技术选择类型值语言PHP >= 7.2框架swoft队列RabbitMq数据库Mysql前言 AMQP概要:...
2023-06-29 14:46:56 87
转载 Sublime Text 基本操作与多选变更
Ctrl + Enter在当前行下面新增一行然后跳至该行Ctrl + Shift + Enter在当前行上面增加一行并跳至该行Ctrl + ←/→进行逐词移动Ctrl + Shift + ←/→进行逐词选择Ctrl + ↑/↓移动当前显示区域Ctrl + Shift + ↑/↓移动当前行。
2023-04-27 14:54:41 606
原创 如何写出好的文档
如何更好的写文档本文档的目的是为了表述项目事项,方便他人阅读。从文本格式、句子、风格、中英文、段落等挑出八条约定。(1)全角中文字符与半角英文字符之间,应有一个半角空格。错误:本文介绍如何快速启动Windows系统。正确:本文介绍如何快速启动 Windows 系统。(2)避免使用长句,符号分隔的20字内,单一句话尽量不要超过100字。错误:本产品适用于从由一台服务器进行动作控制的单一节点结构到由多台服务器进行动作控制的并行处理程序结构等多种体系结构。正确:本产品适用于多种体系结构。无论是由一台
2022-07-29 18:12:24 506
原创 API 设计以及思考
背景当一个系统运行一段时间以后,随着业务的变化,对外提供的 API 越来越多。 那么什么样的 API 是好的设计,什么样的 API 需要下掉或者重构掉。这篇文章讨论的问题:API 应该尽量满足哪些规范。如何设计一个 API。如何重构一个不好的 API。API 四个理念在这里我参考一些资料和文章,试图总结一些好的 API 所具备的共性。清晰API 是用于程序之间的交互,对外提供服务。API 需要清晰表述提供了哪些能力,如何使用这些能力。不要出现歧义以及难以理解的情况。 使用者与维护者有
2022-05-27 17:59:03 372
原创 坏的代码25种味道
Duplicated Code (重复代码)重复代码就是不同地点,有着相同的程序结构。一般是因为需求迭代比较快,开发小伙伴担心影响已有功能,就复制粘贴造成的。重复代码很难维护的,如果你要修改其中一段的代码逻辑,就需要修改多次,很可能出现遗漏的情况。如何优化重复代码呢?分三种情况讨论:同一个类的两个函数含有相同的表达式class A { public void method1() { doSomething1 doSomething2 doSom
2022-05-12 16:14:16 199
原创 PHP OPcache 包文件不被导入问题
背景项目重构后, 新项目使用更新的laravel框架,和老版本对比 单服务器 QPS 降低了4 倍。排查php配置,nginx配置, OPcache配置 都表现正常, 排除其他原因最终怀疑到 OPcache头上。通过 CacheTool 这一非入侵式的工具,为后续的排查带来质的飞越。最终查到原因。原因开启 OPcache 后,运营在非项目包拉去后的文件时间,被设置成了 未来的一个时间,导致包未被加载到 OPcache中。参考文献折磨人的 OPCache...
2022-04-14 16:57:44 2036
原创 Docker 中进行composer 操作报错内存不够
背景需要对lumen框架进行composer移除包操作。报错信息docker composer remove Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 byt解决办法/usr/local/bin/php -d memory_limit=-1 /usr/local/sbin/composer remove xxx解释:php -d memory_limit
2021-09-18 09:51:43 344
原创 Mysql 主从复制数据库 实现 读写分离
本着学习的精神在 windows 7 上实现 mysql-5.6.10 的主从复制数据库功能。一 主从数据库概念首先 看一个 图 :在 Master 数据库的操作,在执行之后,都会写入 Binary log 日志系统中大致描述一下过程:从服务器的IO线程从主服务器获取二进制日志,并在本地保存为中继日志,然后通过SQL线程来在从上执行中继日志中的内容,从而使从库和主库
2021-07-05 14:03:09 79
原创 PHP7的 Throwable
对于php的warning和Notice 错误,在php7以前等错误信息无法被try catch 捕获。一、异常与错误的概述PHP中什么是异常:程序在运行中出现不符合预期的情况,允许发生(你也不想让他出现不正常的情况)但他是一种不正常的情况,按照我们的正常逻辑本不该出的错误,但仍然会出现的错误,属于逻辑和业务流程的错误,而不是编译或者语法上的错误。PHP中什么是错误:属于php脚本自身的...
2021-07-05 14:02:01 516
原创 swoole框架Swoft初探
查看php扩展版本php --ri Show configuration for extension .例如查看 swoole版本➜ note-swoole git:(dev) ✗ php --ri swooleswooleSwoole => enabledAuthor => Swoole Team <team@swoole.com>...
2021-07-05 14:00:15 170
原创 Centos Rabbitmq 配置systemctl启动
需求在测试环境安装Rabbitmq后,因为一些原因导致需要重启服务器。所以需要配置rabbitmq 在systemctl下启动。##实施编辑service文件vim /lib/systemd/system/rabbitmq.service输入[Unit]Description=rabbitmqAfter=network.target [Service]Type=forkingExecStart=/usr/local/rabbitmq_server-3.8.3/sbin/
2021-07-05 13:58:50 4716
原创 PHP 性能分析平台 Xhgui
背景生产环境可以监控到哪个接口比较慢,但是想要知道具体那里慢,这个就需要今天的猪脚 Xhgui 性能分析平台了。介绍XHProf 分析数据的图形界面,可以将结果存储在 MongoDB 或 PDO 数据库中。应用程序被分析并将分析数据传输到 XHGui,XHGui 获取该信息,将其保存在 MongoDB(或 PDO 数据库)中,并提供一个方便的 GUI 来使用它。安装参考: perftools/xhgui文档参考: perftools/xhgui...
2021-05-31 15:14:03 351
原创 PHP代码注解规范 - phpDoc
PHP代码注解规范背景在日常开发中,经常有小伙伴不注解,或者注解内容不规范,在这里统一列一下phpDoc的注解规范。规范@api表示这是一个提供给第三方使用的 API 接口@author作者格式 @author [名称] [<邮箱>]例如 @author mokeyjay <i@mokeyjay.com>@copyright版权声明。例如很多网站底部都有格式 @copyright [描述]例如 @copyright 1949-2016 China@d
2021-03-05 10:05:22 336 1
原创 Centos yum 安装 mysql8以及安全策略
需求Centos yum 安装 mysql8 需要用到的命令内容wget http://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpmyum -y install mysql80-community-release-el8-1.noarch.rpmyum module disable mysqlyum install mysql-community-serversystemctl status mysqld.s
2020-12-07 16:59:23 130
转载 Go Modules详解
Go modules 是 Go 语言中正式官宣的项目依赖解决方案,Go modules(前身为vgo)于 Go1.11 正式发布,在 Go1.14 已经准备好,并且可以用在生产上(ready for production)了,Go 官方也鼓励所有用户从其他依赖项管理工具迁移到 Go modules。而 Go1.14,在今天终于正式发布,Go 官方亲自 “喊” 你来用:因此在今天这篇文章中,我将给大家带来 Go modules 的 “终极入门”,欢迎大家一起共同探讨。什么是 Go ModulesGo
2020-11-25 10:32:49 12629 1
原创 ES IK分词器 - 停用词
配置如果你使用ik分词器,其实都为你解决了.但是它默认设置的停用词都是英文的,比如AND,OR等等配置中文停用词your/path/elasticsearch/config/analysis-ik打开它发现会有stopword.dic和extra_stopword.dic, stopword.dic里面的都为配置的英文停用词,而extra_stopword.dic里面的都为配置的中文停用词配置IKAnalyzer.cfg.xml中给下面这行加上 extra_stopword.dic<
2020-11-17 17:18:58 3633
原创 Mysql update join 单表批量更新
mysql 的批量插入比较便利,批量更新就有点难受了。这里记录一下,使用update join 对mysql单表的批量更新操作。单表更新案例更具表中 content_id 和 outeach_id 字段改变 sort的值,(不要问为啥不用ID,业务需要。)如下图。有一招 update joinUPDATE `表A` a JOIN (SELECT 1 AS content_id, 1 AS outreach_id, 1 AS sortUNION SELECT 1 AS content_.
2020-10-15 15:21:04 1285 1
原创 Git clone 指定tag代码
背景再使用git的时候,我比较喜欢直接用命令的方式操作。这里记录一下常用的命令,方便查找命令拉去指定tag的项目git clone --branch [tags标签] [git地址]...
2020-09-24 14:36:14 51302
原创 Docker compose 安装 xxl-job
背景公司需要安装 xxl-job ,在开发测试环境使用docker安装。Dockerversion: '3'services: xxl-job: image: xuxueli/xxl-job-admin:2.2.0 container_name: xxl-job environment: PARAMS: "--spring.datasource.url=jdbc:mysql://{数据库IP}:3306/xxl_job?useUnicode=true&am
2020-09-23 16:54:57 1919
原创 Hyperf框架实现Rabbitmq延迟队列
Hyperf框架实现Rabbitmq延迟队列Hyperf框架官方支持了Amqp,但是只是具备了基础发消息和接受消息。对于我们经常使用的延迟队列却不支持,这让人感到痛苦。设计延迟队列由于Rabbitmq默认没有支持延迟队列,需要使用官方的TTL和死信队列来实现我们的延迟队列功能.实现原理:1、rabbitmq 可以针对 Queue和Message 设置 x-message-ttl 来控制消息的生存时间,如果超时,消息变为 dead letter2、rabbitmq 的queue 可以配置
2020-07-02 11:44:01 4580 12
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人