docker-python-httpruner
【Laravel】Service Providers 服务提供者
【Laravel】Service Container 服务容器用法
前言
Laravel 是一款 PHP 开源框架,最近学习了一下 Symfony,现在来了解一下 Laravel 的最新版本的一些东西。
其实说到服务器容器,相信大家都会直接提到依赖注入
的概念,其实服务容器的概念,就和我们设计模式中的对象池差不多,把所有的对象都放在一个池子里面去,而不必一个个去 new 了。而且支持每次都新建和单例,等等。
在这些的基础之上,衍生出了 2 个概念Ioc:控制反转
,Di:依赖注入
,这些概念,在我的认知里,早起出自 java 框架之中。主要的目的就是实现对象依赖解耦。具体的设计模式的理念,可以参考我博客中的设计模式一系列的文章。
下述主要参考了谋篇 laravel 服务容器介绍摘录+部分自我实践整理。对比了一下和官网的介绍差不多,更多的主要是例子的说明。
正题
Laravel 中有一大堆访问 Container 实例的姿势,比如最简单的:
1 | $container = app(); |
【OpenResty】 带你入门高性能http代理服务器应用
前言
OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。
OpenResty® 的目标是让你的 Web 服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。
以上都是官方说辞
【进制】数据库应用
概要
最近加了一个月的班,很忙,博客已经有一段时间没有写了,心里很不是滋味,今晚决心,再晚,也要写一篇。
我们平时各种系统最常打交道的系统就是数据库了,我们在数据库中,可能就是最直观,最直接的用法,很少用到一些进制相关的知识在里面,其实进制在我们的生活中处处都在渗透,今天我们重点整理一下数据库和进制相关的内容。
分库分表
我们都知道,数据库的优化策略之一就是分库分表,但是这个分库分表需要怎么分才算好呢,这里我也没有打包票说有一个固定的模式,因为这种所谓的“最优”是要结合具体的需求来说明的。
在这里我会列举其中的一些场景来具体说一下。大部分公司的订单号所以没有一个好的架构师或者比较资深的程序员,订单号一般都是最容易忽略的一个关键,一般毕业生或者初学者都会把订单号设置成简单的 int 并且 autoincrease,这样子的做法,简单粗暴有效,定义好了之后就可以撸起袖子干了。
【SSL】使用certbot工具申请letsencrypt的ssl证书
申请 ssl 证书之前,先梳理几个要点:
1、确定好拟申请 ssl 证书的域名,这里为了便于说明假设申请 ssl 的域名为:a.baicai.com,www.baicai.com、account.baicai.com 等其他域名(和主机),没有本质上的区别,仅名称上的差异;
2、确定拟申请 ssl 证书的域名正确解析到当前主机,本例也就是通过http://blog.crazylaw.com 能够正确解析到当前主机(注意是正确解析,至于是不是能正确访问依据 certbot 的模式不同要求也不同);
3、确定好拟申请 ssl 证书域名解析到当前主机后的 web 根目录,假设为:/www/blog/
Github 上拉取 cerbot
1 | git clone https://github.com/certbot/certbot |
然后进入
1 | cd cerbot |
接着看到cerbot-auto
的可执行文件
然后生成证书。
注意,如果你第一次使用 letsencrypy 的话,一般需要指定邮箱,并且 letsencrypy 会发送证书到你的邮箱,请确认订阅 letsencrypy,下面的命令是带上了邮箱信息的!
注意,需要暂时停止 nginx!
standalone 模式申请 ssl 证书
standalone 模式不需要上述梳理出的 3 个要点中的第三条,也就意味着如果你的主机需要关停 80 端口(或和 443 端口)的 web 服务,譬如正在运行的 nginx、Apache 需要关停。
1 | ##standalone模式,其中-d参数指定拟申请ssl证书的域名 #可以通过多个-d参数指定多个域名,但你得确保这些指定的多个域名均能正常解析到当前主机 |
非 standalone 模式申请 ssl 证书
这种模式需要使用-w 参数(或者–webroot-path 参数)指定当前正在运行的 web 服务器的根目录。–webroot-path 参数指定 web 根目录后,certbot工具会自动在该目录下生成.well-known的隐藏目录
,以及用于效验域名所有者的特定文件,此文件 Let’s Encrypt 的服务器会主动发起 http 请求去读取从达到效验域名所有者或者管理者就是本次操作 certbot 工具的人;certbot 工具自动生成的完整目录为:-w 参数指定的根目录/.well-known/acme-challenge
,对于 nginx 而言 web 根目录下的隐藏目录默认情况下是不允许访问的,所以 nginx 情况下再执行非 standalone 模式申请 ssl 证书之前,需要将nginx网站根目录下的.well-known隐藏目录设置成允许访问
。
1 | ##nginx对应主机的配置文件中添加允许.well-known隐藏目录的访问 |
如果熟悉 nginx,甚至可以为.well-known 隐藏目录指定单独的 root 入口;这就是 nginx 有关的合理利用了,不再补充。
1 | ##--webroot指定当前正在运行的web server的根目录 |
一般使用 standalone 模式,继续
接着如果你没订阅过的话,会在邮箱收到邮件,然后你要选择订阅。接着你会看到如下信息,选择 a
和 y
之后。
默认路径如下:
1 |
|
如何更新?这里截图写得很清楚了,再执行一次 certbot-auto
命令+参数即可,如果你想全部重新执行一边的话,可以使用 certbot-auto renew
。
nginx 配置
然后我们重启 nginx,即可。!
如何实现自动化?
- 停止 nginx
- 执行 certbot-auto
- 重启 nginx
【正则表达式】- 贪婪和非贪婪模式
模式:
在使用修饰匹配次数的特殊符号时,有几种表示方法可以使同一个表达式能够匹配不同的次数,比如:”{m,n}”, “{m,}”, “?”, “*”, “+”,具体匹配的次数随被匹配的字符串而定。这种重复匹配不定次数的表达式在匹配过程中,总是尽可能多的匹配。比如,针对文本 “dxxxdxxxd”,举例如下:
贪婪模式:
表达式 | 匹配结果 |
---|---|
(d)(\w+) | “\w+” 将匹配第一个 “d” 之后的所有字符 “xxxdxxxd” |
(d)(\w+)(d) | “\w+” 将匹配第一个 “d” 和最后一个 “d” 之间的所有字符 “xxxdxxx”。 |
虽然 “\w+” 也能够匹配上最后一个 “d”,但是为了使整个表达式匹配成功,
“\w+” 可以 “让出” 它本来能够匹配的最后一个 “d”
【正则表达式】 - 超简单练习题
【正则表达式】- 分组概念
正则我们经常用,但是对于几个特殊的用途,可以记录一下。
(exp)
匹配 exp,并捕获文本到自动命名的组里(?<name>exp)
匹配 exp,并捕获文本到名称为 name 的组里,也可以写成(?’name’exp)(?P<name>exp)
和(?<name>exp)
一个意思(?:exp)
匹配 exp,不捕获匹配的文本(?=exp)
匹配 exp 前面的位置(?<=exp)
匹配 exp 后面的位置(?!exp)
匹配后面跟的不是 exp 的位置(?<!exp)
匹配前面不是 exp 的位置(?#comment)
这种类型的组不对正则表达式的处理产生任何影响,只是为了提供让人阅读注释