
网站开发
文章平均质量分 74
王中阳讲编程
公司技术总监,创办就业陪跑服务,辅导学员拿到600多个offer。专注程序员的就业辅导、简历优化、模拟面试等。
展开
-
【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享
因为我既对接过session、cookie,也对接过JWT,今年因为工作需要也对接了gtoken的2个版本,对这方面的理解还算深入。尤其是看到官方文档评论区又小伙伴表示看不懂,所以做了这期视频内容出来:视频在这里:本期内容对应B站的开源视频因为涉及的知识点比较多,视频内容比较长。如果你觉得看视频浪费时间,可以直接阅读源码:goframe v2版本集成gtokengoframe v1版本集成gtokengoframe v2版本集成jwtgoframe v2版本session登录官方调用示例文档jwt和sess原创 2022-12-07 15:11:12 · 3199 阅读 · 16 评论 -
技术男的春天:小姐姐求助&暖男分析
4年前坐地铁还不用戴口罩,那时候头发还很厚。4年前PHP写的那么溜,现在却又玩起了Go。原创 2022-12-05 16:13:29 · 1874 阅读 · 14 评论 -
我的网站被攻击了,运维大佬给了我自动封禁ip的脚本。
我的网站被攻击了,发现友圈最近出现这种情况的还不少,真是神奇了,这事也能扎堆发生。分享出来给大家,万一以后用得着呢~原创 2022-12-01 10:54:03 · 10295 阅读 · 14 评论 -
【总结思考】如何提高项目的稳定性和开发效率
除了保证项目如期上线,如何保证项目上线后的运行速度,如何提高容灾能力,减少bug同样是我们需要考虑的问题。我们从以下几个方面来探究思考,抛砖引玉,看看大家是否有其他维度来提高项目,欢迎在评论区留言。作者:王中阳来源:公众号「程序员升级打怪之旅」转载请联系授权(微信ID:wangzhongyang1993)原创 2022-10-03 10:56:39 · 1064 阅读 · 6 评论 -
记录一次网站首页被刷量的经历,对网站页面静态化处理的思考和尝试
有一个N多年前的老项目,接到了服务器的报警短信,带宽和CPU都超过了80%。紧接着网站打开特别慢,然后挂掉了, 首先查询统计平台,发现同时在线人数为0,感觉很奇怪。马上想到因为网站已经挂掉了,无法执行有一个N多年前的老项目,接到了服务器的报警短信,带宽和CPU都超过了80%。紧接着网站打开特别慢,然后挂掉了, 首先查询统计平台,发现同时在线人数为0,感觉很奇怪。马上想到因为网站已经挂掉了,无法执行原创 2022-10-01 22:11:27 · 1206 阅读 · 1 评论 -
排查服务器异常流量保姆级教程
这是7年前刚入行时做的项目,单机部署,排查思路比较简单清晰:查日志,封ip。在微服务+分布式成为主流的今天,又要用哪些思路和工具排查问题呢?关注我,持续更新干货好文。原创 2022-08-16 10:26:14 · 1187 阅读 · 0 评论 -
性能优化反思:不要在for循环中操作DB
文章目录举个栗子场景说明举例说明:进一步优化性能对比注意参与互动如何提高程序运行速度,减轻服务器压力是服务端开发必须面对的一个问题。简单且朴素的原则:不要在for循环中操作DB,包括关系型数据库和NoSql。我们应该根据自己的业务场景,在for循环之前批量拿到数据,用尽量少的sql查询批量查到结果。在for循环中进行数据的匹配组装。举个栗子场景说明业务在多个情景下需要获得用户的详细信息,有点可以通过查询用户表直接获取到,有的需要查询关联关系表获取到,有的只保存了关联的id,并没有单独创建原创 2021-11-02 23:05:16 · 984 阅读 · 1 评论 -
如何及时定位到非必现问题?接口慢查询和接口报错的及时追踪。
非常高兴能参加【优快云1024程序员节】的活动文章目录修改日志配置自定义钉钉Handler实现慢查询的核心思路:response中间件:排查非必现的问题总结之前写过一篇类似的文章,反馈还不错,本篇做进一步升级,又添加了几个应用场景。接口报错的详细信息(请求参数、请求体、响应时间、错误信息等)实时同步到钉钉群慢查询接口信息同步到钉钉群(支持添加接口白名单)非必现问题错误信息同步到钉钉群,及时追踪定位基于上述场景,抛转引玉,大家可以借鉴这个思路,在评论区讨论更好的实现方式和应用场景。首先.原创 2021-10-24 09:00:00 · 1793 阅读 · 3 评论 -
Git使用实战:多人协同开发,紧急修复线上bug的Git操作指南。
文章目录使用场景解决思路操作流程附录:Git使用的小技巧Git命令别名总结使用场景团队协同开发时,生产环境出现bug,需要紧急修复。每位同学在本地开发,对应本地的dev分支,本地测试通过后提交到测试环境的dev分支。测试环境有其他同学提交的代码,正在测试中,无法提交到生产环境的master分支。以上情况导致我们不能在本地基于dev分支修复bug,因为会和其他同学提交的测试中的代码“撞车”,导致无法及时提及到生产环境。这个时候如何正确使用Git管理代码呢?解决思路首先我们从master.原创 2021-10-22 16:51:51 · 2619 阅读 · 3 评论 -
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 134217736 bytes)
亲测最简单有效的解决方案:php -d memory_limit=-1 /usr/local/bin/composer require xxx/xxxx原创 2021-10-21 10:06:36 · 376 阅读 · 0 评论 -
Laravel解决高并发问题的思路
问题复现客户端并发请求扣费接口,导致重复扣费;服务端的加锁逻辑不正确,锁加到了非核心逻辑上,即加到了消费记录表,而不是加到了核心业务表。有问题的代码首次进入聊天房则扣费,再次进入不重复扣费这个思路无法规避并发问题 public function agoraToken(Request $request) { . . . try { DB::connection('footpri原创 2021-09-11 14:13:21 · 2057 阅读 · 1 评论 -
Laravel如何优雅的设置全局变量 | PHP Laravel专栏
思考:PHP如何定义全局变量,不需要通过controller传递,就可以在model中直接使用?场景和考虑model层封装消费逻辑,需要区分是Android端的请求还是iOS端的请求,分别扣除不同账户的金币要精简代码逻辑,不想需要调用的地方都一层一层的传值到消费model,这样太繁琐了。优雅一点~经过一番调研之后,找到了解决办法如下:如何获得全局变量?Request::get(“deviceType”) 获得了全局变量设备类型,即deviceType。这段代码是在model层中.原创 2021-09-06 14:56:06 · 2525 阅读 · 0 评论 -
如何自动收到错误报警?
啥样的后端程序员是好程序员?能机器做的事绝不自己做,哈哈。场景复现客户端:后端接口报错了,我解析数据失败,你看看为啥?服务端:好,我查查log。你把请求参数给我打印出来。客户端:我咋打印?服务端:…我还是自己查log吧以上这种场景在开发中是不是时有发生?是不是很难顶?有啥好办法让debug更智能一点吗?分析不管哪个语言做服务端开发,一定有异常处理和日志。找到一个三方平台,当捕获到异常或者有新的打印日志时回调,推送错误日志给我们。经过一番调研之后,发现钉钉的机器人是个好工作.原创 2021-07-19 17:27:50 · 235 阅读 · 0 评论 -
记录一次网站首页被刷量的经历,对网站页面静态化处理的思考和尝试
还原故事背景接到了服务器的报警短信,带宽和CPU都超过了80%。紧接着网站无法打开了第一反应就是被刷量了定位问题首先查询统计平台,发现同时在线人数为0,感觉很奇怪。马上想到因为网站已经挂掉了,无法执行到统计js,所以在线人数并不为0马上查询Nginx的logtail -f /data/logs/nginx/access.log 在查询access.log的时候发现几个接口以肉眼可见的速度疯狂滚屏,问题就在这里了。分析日志,发现这些接口的请求竟然是自己的机器,说明攻击者不是再curl原创 2021-03-26 17:05:15 · 431 阅读 · 0 评论 -
如何优雅的通过Shell脚本一键部署GO项目到服务器?
文章目录引言脚本一键操作部署流程脚本代码注意执行效果示例手动分步操作部署项目跨平台编译之:windows跨平台编译之:Mac其他问题欢迎交流引言如何优雅的部署go项目到服务器呢?我们可以通过shell脚本把以下操作进行封装:代码同步,打包,编译,重启进程,启动服务;一键执行shell,避免重复劳动。脚本一键操作部署流程本地把最新代码提交到git在服务器切换到shekk脚本目录下,运行shell脚本,一键部署./setup.sh脚本代码说明:下面的 RunningManageS原创 2021-03-26 14:08:58 · 4329 阅读 · 13 评论 -
进程 线程 协程 各自的概念以及三者的对比分析
文章目录进程线程进程和线程的区别和联系区别联系举例说明进程和线程的区别进程/线程之间的亲缘性协程线程(执行一个函数)和协程的区别和联系协程和多线程的优势?为什么有了多线程还要引入协程?更多参考进程概念进程,直观点说,保存在硬盘上的程序运行之后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆,上级挂靠单位是操作系统。特点操作系统会以进程为单位,分配系统资源(CPU时间片,内存等资源),进程是资源分配的最小单位。示意图线程概念线程,有时被称为轻原创 2021-03-09 15:53:43 · 4864 阅读 · 5 评论 -
web开发必懂的概念和底层原理,通过对比的方式让大家更好的理解和使用。
文章目录TCP协议和UDP协议的对比?TCP协议的优点:TCP协议的缺点:各种攻击的名词解释阻塞调用和同步调用的区别?关于同步异步I/O 和 阻塞非阻塞I/O 更深刻的理解http与https的区别?session与cookie的对比?输入一个网址到浏览器渲染出页面的流程是什么?TCP协议和UDP协议的对比?TCP协议的优点:可靠稳定TCP在传输数据之前,会有三次握手来建立连接TCP在传输数据时,有确认、窗口、重传、拥塞控制机制TCP在传输数据完成后,会断开连接用来节省系统资源TCP协议的原创 2021-03-08 18:45:47 · 3315 阅读 · 1 评论 -
百度智能云 API鉴权总结
最近在研究百度云的一些服务,处理api接口鉴权时花了不少时间,总结一下,方便大家对接:Signer.php:签名工具类,鉴权签名的核心方法都在这里Utils.php:封装的工具类,鉴权,返回json数据等都在这里Account.php:示例Controller,请求百度云接口文章目录签名工具类封装的工具类,集成了常用的方法业务层controller:百度api在请求接口的同时做权限校验使用的tp5框架,代码仅供参考,思路可以供大家借鉴,如有不当之处,欢迎指正签名工具类Signer..原创 2021-03-08 14:32:39 · 2550 阅读 · 6 评论 -
多维度思考:如何提高项目的开发时间、提高安全性、提高运行速度,从多个维度带来的一些思考。
除了保证项目如期上线,如何保证项目上线后的运行速度,如何提高容灾能力,减少bug同样是我们需要考虑的问题。我们从以下几个方面来探究思考,抛砖引玉,看看大家是否有其他维度来提高项目,欢迎在评论区留言。文章目录1.框架选择方面(开发速度、项目性能)我们来探究一下相较于其他框架,为什么swoole的速度更快?swoole是如何做到的?2.数据库存储引擎方面(性能)我们通过对MySQL的MyISAM和InnoDB存储引擎做对比,来分析数据库对项目性能的影响3.算法方面(性能)我们通过深入了解算法相关的概.原创 2021-03-05 09:23:23 · 1854 阅读 · 19 评论 -
如何通过查源码的方式解决编程中遇到的问题?查源码定位问题的思路是什么?
首先抛出我的疑问:laravel的底层是如何处理HTTP请求的?laravel的Request是如何实现的?为什么不需要配置Nginx的url解析,也不需要在laravel的router中配置参数名称,却可以通过Request接收到参数呢?实现原理是什么?下面开始进入查源码之旅:首先调研了一下laravel的request是基于什么实现的?知识点如下:laravel的很多底层组件是基于Symfony实现的,比如:请求、响应、cookie、命令行,文件等。其中HttpFoundation组件原创 2021-03-03 18:16:39 · 7802 阅读 · 22 评论