2024 年计划清单
找份好工作
家具家电购置
等大美丽毕业,拍婚纱照
结 fen~
软考继续
我倒要看看这个证我还得考几年
职业生涯知识回顾-关于抽象类和接口的思考
抽象类和接口是两个很容易产生疑惑的概念,分不清它们的使用场景,其实只要记住两点就比较好理解:
接口是对行为的抽象
抽象类是对子类有哪些属性和行为的抽象
当你需要对一个类有哪些行为进行约束时,使用接口;需要为其他类提供一个模板以及一些通用的属性和行为,使用抽象类。
在理解什么是抽象类和接口的前提下,延伸出一些思考:在一定程度上,接口似乎是比抽象类更底层的存在,是否可以理解为先有行为,对行为进行组合才能有类?
那么下面代码中,抽象类对接口的实现有没有实际意义?
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061<?phpinterface IAnimal{ public function move(): void; public function sleep(): void; public function eat(): void;}interface Wag{ ...
职业生涯知识回顾-基础篇之网络传输协议
协议的本质也就是彼此之间的约定和规则。
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
职业生涯知识回顾-基础篇之面向对象
时间飞逝,一眨眼已经工作7年。趁着最近赋闲在家,对职业生涯做个回顾和总结,避免浮躁和焦虑。
将代码写好是一件难事,我见过刚入行就能把代码写成诗的,也见过工作十年还把代码写成屎的,无论是刚入行的小白,还是工作多年的大佬,都要对面向对象有一个清晰的认知。因为到后边你会发现,我们常说的高内聚、低耦合,三大特性五大原则,甚至是设计模式,都是对面向对象编程思想的补充和扩展,这玩意儿将贯穿我们整个职业生涯,是我们写好代码的关键。
上古时代,很多人对于好代码的评判标准往往是能运行、不出错。但是随着技术的日益更替,优雅,才是我们如今更高的追求。
面向对象一千个人中有一千个哈姆雷特,每个人对面向对象的看法都不完全相同,我自己每隔一段时间进行回顾,也都会有一些不一样的收获。
首先面向对象是一种软件开发方式,核心思想是将具体事物看作是一个对象,然后对其行为和属性进行封装。
例如:我有一只小狗,将小狗看作是一个对象,那么它的年龄、性别、名字都是它的属性,狗会跑、会叫、会吃东西,都是其行为。
我有一只小狗,你也有一只小狗,当我们对大家的小狗进行共性抽取,也就形成了类:狗。
狗的年龄、性别这些属性,就是类中的数据 ...
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')) && app()- ...
为你的 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 () { \Illuminate\Support\Facades\Http::asForm ...
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 可以算出 y。
123456789101112131415161718192021222324252627282930313233343536373839404 ...
2023 年计划清单
继续减肥
装修&办小红本
下半年软考-系统架构设计师 ,8月中上旬报名,11月下旬考试
我倒要看看这个证我能考几年