这一年也接近尾声了,也专注写了不少代码,中间有很多尝试,也有很多觉得有意义的地方值得记录一下,顺便半年没写 Blog 了,也刷下存在感(虽然本来就没有)
寒假在家的时候没事研究了一阵 Laravel 的代码,顺手修了一个 Bug, 感觉对 Laravel 的设计思想有了一些更深入的理解,但是后来的项目中也没有用过这个框架了,原本还想再开发几个 Laravel 的小插件,也不了了之了,算是一个不小的遗憾:)
回到学校的时候研究了一下 Excel 的文件结构,只了解了一下旧版本的 Excel 2003 的文件,看了很多 Microsoft 的文档,尤其是和 Compound File 有关的,对 Excel 有了更多的理解,也按照文档和理解写了一个 PHP 的 Excel 的扩展,用来快速读取一个 Excel 2003 文件,目的是为了提供一个比 PHPExcel 更加快速的读取方案,实践效果还是不错的,比 PHPExcel 快千倍(因为是纯 c 写的嘛),地址在这里 php-fast-excel,但是也是由于最后项目里没有更多的需求了,所以也没有再更新 Todo List 上面的事情了。但是在其它多个项目中有用到另一个 Excel 的扩展 php_fast_xlsxwriter,这个是用来导出为一个 Excel 07 版本的文档,利用了 xlsxwriter 的 c 库,封装成了一个 PHP 的扩展,实践证明,比 PHPExcel 运行的速度快很多,基本上瞬间就出来结果了。
由于有了两次写 PHP 扩展的经历,然后就在春天去了次 PHPCon,去听了 PHP 在实际业务中的一些应用,也从鸟哥那里了解了 PHP 7 的新特性,以及一些关键点的实现,讲实在的,去听了下还是受益匪浅的。
后来的大部分时间都是在做业务方面的东西,从理解业务到实现这个业务,在这个过程中,有尝试着去使用设计模式。发现有的时候良好的设计会给未来维护带来很大的方便,如果设计的够通用的话,有的新业务也可以用旧业务的框架进行实现,实现了事半功倍的效果。但是,有时候这也会是个双刃剑,因为业务总不可能按照一开始的设计走,所以可能有多余的设计,这一点是要注意并且避免的。所幸的是,这一年的设计基本上满足了大多数需求,也给自己省了不少工作量。但是,由于自身的不成熟,导致了这些东西只能够为自己所使用,争取在明年以及未来的设计中,能够更易用,而且能够有让其他人很容易上手的框架设计方案。
其实四月份的时候就立了另一个 iOS 的项目,因为也是第一次完整的做一个 GUI 的项目(以前做的一个纯粹是 Win32 API + BMP 图的实现),所以拖到了现在,才把功能做完,还有一些细节方面的美化,可能要到过年完后才能看到这个 App。这中间在十一我回家的时候经历了一次重构,由原先的随便拼 ViewController 的方案,改成了一个逻辑比较清晰的,后来加功能的时候也方便了很多,然后就是十二月的时候做了一下图文混排的实现,利用了 YYText 的库,发现国人做的一些开源项目已经很不错了。在做 iOS 项目的时候暴露出自己很多方面的不足,尤其是多线程,以及 UI 渲染实践的匮乏,只懂得理论,而这一次刚好是一个很好的机会,从异步多线程到 UI 渲染,都有了一次极大的理解和提升。
除了在技术方面的工作之外,在经历过几次“见世面”和“坑人及被坑”后,发现有好多地方还有很大的学习空间,不仅仅要在技术能力上下功夫,更应该在为人处世上有所注意和提升。
展望
技术方面,尽可能往更深层次走,PHP 经常被黑是因为它实在是太过于简单了,争取明年对 PHP 7 的内核有一个深入的理解;框架设计方面,尽可能做到易于他人理解,易于多人使用,更多的减少重复工作量,尽可能将系统做成可配置管理的,而不是写死在代码中的;加深对 UI 以及多线程编程的理解,争取能够再重构一下 iOS 的代码,用一些比较好的思想( Promise 什么的),来使得已经臃肿的代码更简洁、更易读;算法方面,以前都是有心情做一做,明年还是争取有个目标出来,翻了下算法导论发现八成已经学过了,争取多做做题,保持一种能做出题的状态来。并且多总结一些经验更新博客吧= =这都半年没写了,以前的也都写的是皮毛,总之文字和表述能力还需要加强。
非技术方面,争取有个女朋友:)

PHPSession失效的原因包括配置错误、Cookie问题和Session过期。1.配置错误:检查并设置正确的session.save_path。2.Cookie问题:确保Cookie设置正确。3.Session过期:调整session.gc_maxlifetime值以延长会话时间。

在PHP中调试会话问题的方法包括:1.检查会话是否正确启动;2.验证会话ID的传递;3.检查会话数据的存储和读取;4.查看服务器配置。通过输出会话ID和数据、查看会话文件内容等方法,可以有效诊断和解决会话相关的问题。

多次调用session_start()会导致警告信息和可能的数据覆盖。1)PHP会发出警告,提示session已启动。2)可能导致session数据意外覆盖。3)使用session_status()检查session状态,避免重复调用。

在PHP中配置会话生命周期可以通过设置session.gc_maxlifetime和session.cookie_lifetime来实现。1)session.gc_maxlifetime控制服务器端会话数据的存活时间,2)session.cookie_lifetime控制客户端cookie的生命周期,设置为0时cookie在浏览器关闭时过期。

使用数据库存储会话的主要优势包括持久性、可扩展性和安全性。1.持久性:即使服务器重启,会话数据也能保持不变。2.可扩展性:适用于分布式系统,确保会话数据在多服务器间同步。3.安全性:数据库提供加密存储,保护敏感信息。

在PHP中实现自定义会话处理可以通过实现SessionHandlerInterface接口来完成。具体步骤包括:1)创建实现SessionHandlerInterface的类,如CustomSessionHandler;2)重写接口中的方法(如open,close,read,write,destroy,gc)来定义会话数据的生命周期和存储方式;3)在PHP脚本中注册自定义会话处理器并启动会话。这样可以将数据存储在MySQL、Redis等介质中,提升性能、安全性和可扩展性。

SessionID是网络应用程序中用来跟踪用户会话状态的机制。1.它是一个随机生成的字符串,用于在用户与服务器之间的多次交互中保持用户的身份信息。2.服务器生成并通过cookie或URL参数发送给客户端,帮助在用户的多次请求中识别和关联这些请求。3.生成通常使用随机算法保证唯一性和不可预测性。4.在实际开发中,可以使用内存数据库如Redis来存储session数据,提升性能和安全性。

在无状态环境如API中管理会话可以通过使用JWT或cookies来实现。1.JWT适合无状态和可扩展性,但大数据时体积大。2.Cookies更传统且易实现,但需谨慎配置以确保安全性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

记事本++7.3.1
好用且免费的代码编辑器

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器