职业生涯知识回顾-基础篇之网络传输协议
协议的本质也就是彼此之间的约定和规则。 HTTPHTTP 是一个承载于 TCP 协议上的超文本传输协议,明文,无状态。由客户端发起请求,服务器返回响应。 无状态是指协议对于事务处理没有记忆,不会保留之前请求的任何信息,也不会对后续请求进行关联。 为了弥补无状态带来的不便,产生了 Cookie 和 Session 技术。 CookieCookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向服务器请求资源时携带并发送到服务器上,通常用于告知服务端两个请求是否来自同一浏览器,比如用户的登录状态。 Cookie 一般用于以下方面: 会话状态管理(用户登录状态等) 个性化设置(主题、自定义设置等) 浏览器行为跟踪(跟踪分析用户行为等) SessionSession 是基于 Cookie 实现的,在服务器进行存储,也是一种会话跟踪技术。 一个 Session 独占一个浏览器,在浏览器关闭前,Session 一直存在。 Session 的使用场景: 用户身份验证 购物车功能 长表单或多步骤操作缓存 HTTP 的三次握手和四次挥手三次挥手是指建立一个 TCP...
Laravel Octane 和 Swoole 协程的使用分析二
又仔细研究了下 Octane 源码和 Swoole 的文档,关于前几天 Laravel Octane 和 Swoole 协程的使用分析中的猜想,得到进一步验证: Swoole 的 HTTP Server 启动后会创建一个 master 进程和一个 manager 进程;master 进程又会创建多个 reactor 线程,负责将请求转发到 work,并从 work 接收结果发送给客户端,相当于 nginx;manager 会创建多个 work 和 task 子进程,work 进程相当于 php-fpm,task 专门处理一些耗时任务,最后将结果交给 work; 而 LaravelOctane 的 concurrently 方法,其实是以 task 为基础,也就解释了为什么脱离 HTTP server 会无法使用。 Swoole
Laravel Octane 和 Swoole 协程的使用分析
之前在工作中使用 Laravel Octane 的 concurrently 处理并发时,发现在队列和定时任务中不会触发并发效果。经过分析,作了如下猜测:队列定时任务都属于一个独立的进程,与 Octane 服务无关,而 Octane conturrently 恰恰需要在 Octane 环境下才能运行。 后来通过代码进行环境检测和查看 php 的进程,证明猜想成立。 1234info('check env', [ 'served by octane' => isset($_SERVER['LARAVEL_OCTANE']) && ((int)$_SERVER['LARAVEL_OCTANE'] === 1), 'on swoole server' => (extension_loaded('swoole') || extension_loaded('openswoole')) &&...
为你的 Laravel 应用添加一个基于 Swoole 的 WebSocket 服务
做了一个基于 Swoole 的 WebSocket 扩展包,可以用来做实时状态推送,或者自定义消息处理实现 im,有需要的可以看看: [giorgio-socket] 使用方法安装安装扩展包 1composer require wu/giorgio-socket 发布配置文件 1php artisan vendor:publish --provider="GiorgioSocket\Providers\SocketServiceProvider" 运行 Socket 服务 1php artisan socket:start 注意事项 可以通过实现 GiorgioSocket\Services\Handlers\Interfaces 下的接口类来自定义自己的业务逻辑。 如果要从服务端发送消息,这里有两种方式: 第一种,借助 Laravel HTTP 客户端 123456Route::get('/socket', function () { ...
2023年9月流水账
最近沉迷 swift,忙里抽闲做了几个菜单栏小工具,外加一个小工具合集,高产似母猪,啊哈哈哈…… 看看后续能不能再多做几个,到时候搞个开发者账号发到苹果商店去。
php 国密 sm2 sm3 sm4 完整测试类
应用范围及描述 算法类型 国密算法 应用范围及描述 对称加密 SM1 128位数据加密,算法不公开,仅以IP核的形式存在于芯片中。智能IC卡、智能密码钥匙、加密卡、加密机。 非对称加密 SM2 被用来替换RSA算法。常用于身份认证,数据签名,密码交换,256位椭圆曲线。 完整性运算 SM3 256位数据摘要计算,相当于SHA256,数字签名及验证、消息认证码生成及验证、随机数生成 对称加密 SM4 128位数据加密,相当于AES(128) 相关代码php sm2 sm3 sm4 完整测试类,可拖入 laravel unit test 模块运行。基于扩展包 [ lpilp/guomi ] , sm2 与兴业银行有部分区别,sm4 已互通,未做招行验证。 sm2 密钥长度一般为 128 或 130 位,部分使用压缩密钥长度为 66,也就是将密钥分成 x、y,y是偶数就是02,y是奇数就是03,通过 x 可以算出...
2023 年计划清单
继续减肥 装修&办小红本 下半年软考-系统架构设计师 ,8月中上旬报名,11月下旬考试 我倒要看看这个证我能考几年
向我的小电驴致敬
最近天冷了,骑车上下班又多了些痛苦。 每年的这个时候,我都会出现一些对小电驴命运的担忧,它还能陪我多久呢?即使它才买了两年,但也已经伤痕累累。 截止到今天,我一共丢了两个头盔,都是因为放在车筐然后被人拿走;摔倒三次,都是因为刹车太急导致侧翻;后座的两个脚踏板都有破损,大概率是被停在旁边的车子剐蹭;前轮右侧反光条破碎,大概率同上;左闸轻微磨损,因第二次摔车路面剐蹭;右闸螺丝帽丢失,原因未知;后轮轮毂右侧轻微变形,原因未知;座桶右侧皮套破损,因台风天倒地被旁边车子刮破;后轮轻微漏气,因为我有段时间经常带人…… 每一处损伤都是小电驴的勋章,但也做实了我的不负责任,我是个渣男吧。 我总会想如果哪天我决定要离开上海,那我是该怎么处理它,低价处理掉还是找个物流公司给运回去? 运回去成本有点高,而且连续两年的高强度工作也让我略感担忧:廉颇老矣,尚能饭否?低价卖掉又觉得有点可惜,这家伙明明就性能强悍,充一次电就能驮我跑个 60 公里,如果当初能对它细心点,肯定也不至于这样…… 想来想去又都没有结果。 嗐,贱人就是矫情。
The Fucked 2022
为了应对拖延,2022 年 11 月 25 日,我打开了编辑器,准备提前开写年终总结,然后在当天午休过后,突然接到物业通知让我们赶快回家,因为隔壁公司阳了。 晚上十点,同事说接到电话被判了密接,半个小时后开始转移。十一点二十,住同区的同事说也接到了电话,于是我起床收拾了行李。十分钟后电话响了,通知我等待转移,但是房源紧张需要申请,让我先休息,保持电话畅通。 挂了电话,不安开始涌了上来。躺下,睡不着,起来,又无事可做。 最后只好和衣躺在床上,在公司群里聊天到4点半,期间不停有人上车被拉到方舱, 迷迷糊糊睡到 7 点,被居委电话吵醒,通知我房源还没下来,继续居家,尽量不要和室友接触。 10 点,居委再次来电重申上述信息。 9 点,12 点,均再次接到居委电话重申上述信息。 下午 4...