- 博客(26)
- 资源 (2)
- 收藏
- 关注
原创 使用 React 构建前端应用(2)优化结构
前言上一篇已经使用 React template 创建好了应用,以及引入了 Reactrouter 。从本篇开始,就开始实现准备实现的功能了。不用手动写路由,用循环来搞定。本篇的代码还是在上一章的 https://github.com/crazyhl/react-practise 代码中继续实现的。下面是预计实现的功能JSON格式化,查找base64 decode/encodemd5urlencodeunicode to 中文今天一个都不实现,只是先把基础打好。正文开始先整理一波代
2021-10-25 13:56:34
172
原创 使用 React Template 构建前端应用
前言原本我一直都是用 vue 的,但是呢,我主力还是后端,所以前端这方面的东西也是属于浅尝辄止的。最近想弄一些前端的东西,观察了一圈,react 貌似还是要比 vue 的生态好一些。既然如此,那就开始用 react 好了。另外为什么要用 typescript 呢,当我在用 vue + typescript 的时候我名没有太明显的感受到跟 js 的区别。但是当我在用 ts 实现公司的一个真实的东西的时候,我体会到了 ts 的爽。所以从那以后我都是尽可能的用 ts 了。好了,正式开始吧,不知道关于 react
2021-10-19 09:34:02
827
原创 使用tdd构建golang Web 应用(5)最终篇
前置说明本文以及接下来的文章都是来自 https://quii.gitbook.io/learn-go-with-tests/ 这个系列文章的。主要分析说明的部分是 Build An Application 部分。这并不是原文的翻译,而是记录一些自己的东西。混合式笔记,实现书中代码,加上我的思考正文开始从这篇文章开始,就加上了规则部分,大家可自己看看,我读的有点晕,先假装理解了规则好了。无非就是盲注以及时长相关。先从测试盲注提醒开始。t.Run("it schedules printing o
2021-10-08 09:33:59
145
原创 使用tdd构建golang Web 应用(4)
前置说明本文以及接下来的文章都是来自 https://quii.gitbook.io/learn-go-with-tests/ 这个系列文章的。主要分析说明的部分是 Build An Application 部分。这并不是原文的翻译,而是记录一些自己的东西。混合式笔记,实现书中代码,加上我的思考正文开始看到标题,问题就来了,前面的文件结构都是按照我以前的认知来构建的,不过 golang 的结构,和跟以往了解的 php 有一些区别,虽然看了一些 golang 的结构,但是感觉使用起来不是很顺手。正好
2021-10-04 15:10:31
140
原创 使用tdd构建golang Web 应用(3)
前置说明本文以及接下来的文章都是来自 https://quii.gitbook.io/learn-go-with-tests/ 这个系列文章的。主要分析说明的部分是 Build An Application 部分。这并不是原文的翻译,而是记录一些自己的东西。混合式笔记,实现书中代码,加上我的思考正文开始又想到了问题,虽然后续有了集成测试,来测试 InMemoryPlayerStore 。但是在常规测试的时候呢,把测试分别存储到了 3 个不同的属性里面。为什么在测试的时候不这样操作呢?难道这样会跟继
2021-10-03 10:01:17
127
原创 使用tdd构建golang Web 应用(2)
前置说明本文以及接下来的文章都是来自 https://quii.gitbook.io/learn-go-with-tests/ 这个系列文章的。主要分析说明的部分是 Build An Application 部分。这并不是原文的翻译,而是记录一些自己的东西。混合式笔记,实现书中代码,加上我的思考正文开始上一篇最后还留下了我的几个疑问,看看今天是否解开了。而且今天有了新的需求,新建一个 /league 的路径,返回所有玩家列表,并且返回 JSON。从测试开始吧。func TestLeague(t
2021-10-02 08:28:57
117
原创 使用tdd构建golang Web 应用(1)
前置说明本文以及接下来的文章都是来自 https://quii.gitbook.io/learn-go-with-tests/ 这个系列文章的。主要分析说明的部分是 Build An Application 部分。这并不是原文的翻译,而是记录一些自己的东西。混合式笔记,实现书中代码,加上我的思考正文开始我们要创建一个 HTTP 服务,用户可以追踪一个玩家获得胜利的数量。有两个接口GET /player/{name} GET 请求 会返回传入玩家的胜利总数POST /player/{name}
2021-10-01 10:33:54
200
原创 聊聊 PHP 的 OPcache
前两天被问到了问题,关于 OPcache 我配置过有多少?当时简单的想了一下,貌似这个东西我没配置过几个,就说了调整了五六个选项。然后又大概说了一下这五六个都调整了什么,我就说了一下缓存时长,跳过文件,内存大小,文件数量什么的。因为自己印象里面貌似能记住的就这几个了,然后对方告诉我 OPcache 有 30 多个可调整选项。说实话,我当时都惊了,这么多!!! 事后回家翻了一下我自己的配置部分,发现我配置的也有十几个了,但是分类呢,也就是我上面说的那几个。所以呢,今天就重新翻了一波文档,并且结合自己的理解,说
2021-09-26 11:29:21
456
原创 golang grpc 开发流程
golang grpc 开发流程定义 proto 文件开发 server 端开发 clientdemoserverclient定义 proto 文件这个部分就参照文档定义吧,总之记住一个个人认为最重要的点就是,别删。不用了注释掉,也别删,留个记录啥的,以免序号乱了。生成对应语言的文件开发 server 端定义结构体,包含上面生成代码中的 UnimplementedXXXServer 紧接着,实现各种方法。设置网络监听的 ip 端口初始化 grpc 服务器注册 server启动服务开发
2021-09-04 19:16:07
131
原创 golang 代码生成
目录为什么要写这个先说说 `stringer`再说说 `template`写在正文之后为什么要写这个主要还是为了加深自己的理解。第一次接触代码生成的东西,这玩意原来也可以分为各种流派的。比如,用 template 来生成整个代码文件。比如用 stringer 来生成一些辅助方法啥的。注意这个 stringer 不是 https://pkg.go.dev/fmt#Stringer, 而是 https://pkg.go.dev/golang.org/x/tools/cmd/stringer。不得不说,咱们国
2021-09-04 14:30:10
1354
原创 设计模式系列-监听模式
先说点什么设计模式以前也看过,但大都走马观花。最近也是巧,发现了一本书 《人人都懂设计模式》,简单翻了几页,觉得我能开心的读进去,并且我也觉得我到了可以思考设计模式的时候了。在以前,经验比较少,一些场景没接触过,也没法感同身受的思考为什么要这么设计?有时候明明把代码弄得层次多了更复杂了,读起来也麻烦了。为什么还要搞这么个东西呢?随着经验的增多,更多的理解了折中取舍,为了系统的稳定,为了将来开发的更舒爽,一些初期的痛也是要承受的。所以,开始了 设计模式。Let’s do it。什么是监听模式Defin
2020-09-03 21:00:05
573
原创 跳表 Golang 实现
前言第一次接触跳表就是在 16 年的时候,那时候看《Redis 设计与实现》了解到了跳表,当时还参考了其他的代码用 php 实现了一份。这次巧了,又一次是看 redis 相关的东西又一次看到了跳表,于是我就找以前的代码,可是找不到了,那么干脆就在实现一次好了目标由于之前是参考代码,我觉得理解的并不是很深,尤其是为什么要用那些属性,为什么没有就不行呢?所以这次我参考了比较偏理论的文章 跳表──没听过但很犀利的数据结构,没有任何代码,事后全部靠自己思考来实现出来。Let’s Go先来个图如果是自
2020-08-26 14:25:29
860
原创 利用Jenkins+Github自动部署hugo博客
今天要弄的时候利用 Jenkins + Github 自动部署我们的 hugo 博客。服务器快到期了,需要迁移服务器,以前的博客都是自己敲命令用 rsync 同步的。迁移就需要准备很多东西了,在让我以后同步博客,肯定是不会很开心的,既然如此,就让自动化来搞定,给自己节省更多的时间。安装我们就不说了,可以参考官方文档,都是中文的,我是用 docker 部署到我自己的服务器上面的。插件我除了推荐的...
2020-04-11 21:12:13
660
原创 争取能让大家都能看懂的 DFA 算法
为什么要学习这个算法我们公司一直都有的一个敏感词检测服务,前一段时间遇到了瓶颈,因为词库太多了导致会有一些速度过慢,而且一个正则表达式已经放不下了,需要进行拆分正则才可以。正好我以前看过有关 dfa 的介绍,但是并没有深入的进行研究,所以就趁着周末好好的了解一下这个东西。跟 php 的正则进行一下对比,看看速度如何,如果表现较好,说不定还能用得上。什么是 dfa通过百度可以知道 dfa 是...
2020-03-30 12:07:12
9771
9
原创 浅谈AOP、IOC
为什么要说这个东西呢,是因为前几天我媳妇在面试一个小姐姐的时候那个小姐姐的简历提到了了解 IOC、AOP。我忽然就笑了起来,13年来北京实习的时候面试准备的就是IOC、AOP。当时还记得面试辅导老师给我们讲,背下来背下来,几乎都会问道,但是具体让我们背下来多少概念,到现在我也记不清了,但是当提到这两个词我总会想起那些日子。兜兜转转开发做到现在,估计你要在面试的时候问我这些概念,什么叫面相切面,什...
2020-03-26 12:45:55
222
原创 Typecho 源码分析(10)-- DoAction 分析
目录前情提要正文开始下期预告前情提要前面我们分析了插件列表,看到 html 部分,我们看到了请求的url 包含 action 我们这篇就分析这里。正文开始在做到插件启用相关部分的时候。发现了一个链接,http://typecho.test/index.php/action/plugins-edit?activate=HelloWorld&_=a05deb76f571cfb798d...
2019-12-29 22:39:18
641
原创 Typecho 源码分析(9)-- 部分Security&User 组件分析
目录前情提要正文开始下期预告前情提要前面我们分析了插件列表,但是 html 部分我们没有分析,今天我们就来分析一下 url 生成部分。正文开始后台的 common.php 会加载 Security 组件。先看 Security 的 execute 方法,/** * 初始化函数 * */ public function execute() {...
2019-12-24 22:45:41
412
原创 Typecho 源码分析(8)-- 后台插件列表
目录前情提要正文开始下期预告前情提要前面 7 篇文章基本上已经分析完成 Typecho 的运行流程了,从本篇开始就开始分析各种模块了,原本是想分析路由的,但是我更对插件感兴趣,所以就从插件开始了。正文开始我们先不分析插件的加载流程,因为我们还没有启用任何插件,所以我们从后台的插件列表开始。我们打开 admin\plugins.php 文件。前面的几行加载我们稍后再说,直奔重点插件列表而去。...
2019-12-21 22:35:25
541
原创 Typecho 源码分析(7)
目录题外话前情提要正文开始下期预告题外话两周之前搬了家,以前搬家从来没觉得东西这么多,收拾起来这么麻烦,基本上整理整理就可以过日子了。这次换了个整租,才发现屋子大了也不好,东西找不到,现在基本上算是步入正轨了,不过nas还没有就位,等我再整理整理在看看吧nas放到哪里。机械硬盘实在是太吵了,这次要放到一个安静的地方。前情提要第五篇简单分析了插件,其实什么都没说。上一篇分析了路由部分,也说的...
2019-12-15 22:53:40
467
原创 Typecho 源码分析(6)
目录前情提要正文开始下期预告前情提要上一篇说了一下插件相关的东西,可是发现插件需要很多东西去说,于是就没说全,因为还是要抓紧把全部流程跑通,所以就省略下来了,这篇我们说一下路由相关的。等这个说完,等于就把全部流程跑通了。后面我们就可以展开来说各种模块了。正文开始/** 开始路由分发 */Typecho_Router::dispatch();index 文件的最后一行了。开始吧,让我们...
2019-11-21 22:22:11
394
原创 Typecho 源码分析(5)
目录前情提要正文开始下期预告前情提要上一篇我们已经分析完了组件的初始化相关的东西,今天我们继续。插件部分。正文开始/** 注册一个初始化插件 */Typecho_Plugin::factory('index.php')->begin();进入方法内部 /** * 获取实例化插件对象 * * @access public * @p...
2019-11-18 22:02:17
362
原创 Typecho 源码分析(4)
目录上篇文章忘记说的正文开始下期预告上篇文章忘记说的我们还是在入口文件徘徊,而且还是在初始化 widget 的第一行。我们来到了初始化 Widget_Init 的地方。在 Init->execute 方法中,我们到了初始化 option 的地方。初始化的构造地方,还初始化了 db 数据库。数据库连接的地方在,index 文件的引入 config 有构造连接,大家不要忘记哦。正文开始...
2019-11-14 21:56:03
475
原创 Typecho 源码分析(3)
目录前情提要正文开始前情提要通过之前我们的分析,我们已经把安装流程搞定可,本篇开始,我们分析前台相关的流程。正文开始我们又一次回到了 index.php 在第一篇说完前几行判断是否安装之后,我们就暂时离开了这个文件,当我们安装完以后,进入首页就又回到了这里,我们跳过判断安装那一块,直接看后面。/** 初始化组件 */Typecho_Widget::widget('Widget_Init...
2019-11-13 21:51:20
527
原创 Typecho 源码分析(2)
目录前情提要进入安装流程安装第一步进入配置来到 `start`结语前情提要上一篇我们分析到了 install.php 文件的 set_include_path。今天我们继续。进入安装流程来到了引入 Typecho/Common.php 这样,也许你会很奇怪,找不到这个目录呢?不要忘了我们上面设置了好几个引入路径,所以我们要一个个的查找,最后我们会在 var 目录下,找到 Typecho/C...
2019-11-09 20:24:03
1077
原创 说说 php 文件的加载
目录从 `get_include_path` 开始走进 `set_include_path`在进一步 `__autoload`升级 `spl_autoload_register`大步走向 `composer`结语从 get_include_path 开始<?php$path = get_include_path();var_dump($path);输出root@c6c2fe3c...
2019-11-07 18:14:21
192
原创 Typecho 源码分析(1)
目录先说点前置的东西为什么选用 typecho ?我分析的流程正文开始进入 `index.php`来到 `install.php`先暂停一下PS先说点前置的东西从今天开始我要开始写源码分析的文章了,以前用 csdn 博客写过一些 android 和 java 的东西,后来脑袋抽筋被我删除了。所以这次等于是全新的开始,准备输出一些东西了。做了 5 年的开发,发现自己缺乏很多东西,所以这次从源码分...
2019-11-06 22:15:03
1402
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人