docker 容器访问宿主机端口
运行在 docker 容器中的一个项目需要访问宿主机的某个端口,比如容器 A 中的项目访问宿主机 B,在 A 的项目中以下边的地址来访问即可: 1host.docker.internal 之前是可以运行的,但是今天不知道什么情况突然 500 了,重启电脑后,在容器中 ping 这个地址: 1234567PING host.docker.internal (192.168.65.2) 56(84) bytes of data.64 bytes from 192.168.65.2: icmp_seq=1 ttl=37 time=2.09 ms64 bytes from 192.168.65.2: icmp_seq=2 ttl=37 time=1.05 ms64 bytes from 192.168.65.2: icmp_seq=3 ttl=37 time=1.05 ms64 bytes from 192.168.65.2: icmp_seq=4 ttl=37 time=1.16 ms64 bytes from 192.168.65.2: icmp_seq=5 ttl=37...
哈!
很久很久以前,有只自认为自己是狼的哈士奇,叫大哈。 后来,他找到了一个让他愿意把骨头让出来的人。 祝他做一只幸福的哈士奇,每天都有骨头吃。
卷积神经网络学习
卷积神经网络,计算机视觉应用几乎都在使用的一种深度学习模型。 一般用于训练数据集较小的问题,比如图像分类。 简介卷积神经网络是一种多层神经网络,主要由输入层,卷积层,激励函数,池化层和全连接层组成,可以通过一系列方法,成功将数据量庞大的图片识别问题不断降维,最终使其能够被训练。 输入层即数据的输入。 通过传入参数 input_shape=(28, 28, 1) 来设置网络接收张量的形状。 卷积层使用卷积核来进行特征提取和特征映射。 当我们输入的图像是 28 * 28 * 1 ,定义一个 3 * 3 的卷积核来对图像进行卷积操作(可以理解为一个滑动窗口,把卷积核与对应的图像像素做乘积然后求和),得到了 3 * 3 的卷积结果。 这个过程我们可以理解为我们使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。 激励层激励层主要对卷积层的输出进行一个非线性映射,因为卷积层的计算还是一种线性计算。 使用的激励函数一般是...
laravel 广播系统学习
看到广播系统,先想起了曾经虐过我的即时通讯。 虽然都是对 websocket 的应用,但是好像又有点区别,这里好好学习一下。 laravel 的广播与事件紧密相关,广播即对事件进行广播,因此在学习广播之前,要先阅读事件和监听器的相关文档。 配置老规矩,先来看配置文件 config/broadcasting.php 里边的配置选项: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960<?phpreturn [ /* |-------------------------------------------------------------------------- | Default Broadcaster |-------------------------------------------------------------------------- | |...
laravel 测试模块学习
学习下 larave 内置的测试模块。 当你想把一些东西写到 print 语句或者调试表达式中时,别这么做,将其写成一个测试来代替。 –Martin Fowler 最开始看到的关于 laravel 测试的信息是借助模型工厂来生成测试数据,今天查完资料发现,这只是测试中的一小部分。 laravel 内置了 PHPUnit 来做测试,并且已经做好了配置文件,还提供了一些便利的辅助函数,可以更直观的测试程序。 在 laravel 的项目中,包含一个 tests 目录,这个目录又有两个子目录:Feature 和 Unit 分别用来做功能测试和单元测试。 功能测试用于测试较大区块的代码,包括若干组件之间的交互,甚至一个完整的 HTTP 请求。 单元测试用于小的 、相互隔离的代码。 配置可以使用默认的配置,也可以创建一个 .env.testing 文件,在运行测试或执行带有 --env=testing 开关的 Artisan 命令时覆盖 .env 文件中的环境变量。 创建 & 运行测试运行 artisan 生成测试用例: 12345// 在...
深度学习 -- 基于 keras 的手写数字识别示例
MNIST 是 keras 中一个入门级的计算机视觉数据集,这个数据集包含各种各样的手写数字图片,其中包含 60000 张训练图像和 10000 张测试图像。 是解决手写数字分类问题的经典数据集,可以看做是深度学习的 ‘Hello World’。 下载数据123from keras.datasets import mnist(train_images, train_labels), (test_images, test_labels) = mnist.load_data() 这两行代码需要先运行,下载数据集。 下载过程会失败,多试几次,不需要翻墙。 train_images 和 train_labels 为训练集, 分别为图片数据和标签数据。模型将从这些数据中进行学习。 然后在测试集: test_images 和 test_labels 上对模型进行测试。 构建网络12345from keras import modelsfrom keras import layersnetwork =...
laravel 队列学习
学习下 laravel 的队列系统。 队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短 Web 请求和相应的时间。 常用的队列后台有: Beanstalk,Amazon SQS,Redis 等。 配置laravel 为多种队列服务做了统一的API,在配置文件 config/queue.php 中可以找到每种队列驱动的配置。 其中每种驱动都有一个默认的 queue 属性,用来存放使用时没有显示定义队列的任务。 12345// 分发到默认队列Job::dispatch();// 分发到 emails 队列Job::dispatch()->onQueue('emails'); 在项目的配置文件中,可以指定驱动,老版本中为 QUEUE_DRIVER,新版本中为QUEUE_CONNECTION , 驱动默认为 sync,这是一个本地的同步驱动,方便调试队列里的任务。 先以 redis 为例做一个邮件发送队列。 因为 laravel 的 redis 默认使用了 predis,所以先装下扩展: 1composer require...
laravel 事件系统学习
学习下 laravel 的事件系统。 Laravel 的事件提供了一个简单的观察者实现,能够订阅和监听应用中发生的各种事件。 先以一个登陆日志来作为例子开始事件的学习吧。 注册事件 && 监听器在 app\Providers\EventServiceProvider.php 中,添加以下内容: 12345678protected $listen = [ Registered::class => [ SendEmailVerificationNotification::class, ], 'App\Events\LoginEvent' => [ 'App\Listeners\LoginListener' ]]; 然后运行命令,生成事件和监听器: 1php artisan event:generate 运行结束后,事件和监听器都会被自动创建好。 在监听中打个 log: info(‘user login...
laradock 中 php5.6 连接 mysql 报错解决
laradock 中 php 5.6 连接 mysql 报错的解决方法。 之前弄的是默认版本的 php 7.2 和 mysql 8,配置好以后一直都能正常使用。 最近因为需要切换 php 版本,突然发现切换后连接 mysql 时无法识别 host。 emmmm……,最开始还以为是 php 的锅,各种重新 build,无果,最后在 github 上找到别人发出来的解决办法: rm -rf ~/.laradock/data/mysql删除老版本的数据 docker-compose build mysql重新构建 mysql 进入 mysql 容器mysql -uroot -prootALTER USER root IDENTIFIED WITH mysql_native_password BY ‘root’;exit; 到这里也就可以了。 有这个问题是因为 8 和 5.7 的配置不一样,不清掉老数据的话会引起报错,一有请求去连接 mysql 马上就宕机。
Laravel 服务容器
在 Laravel 生命周期中,我们了解到框架运行过程中,会通过创建应用实例来完成很多事情,这个应用实例,也就是我们今天的主角,服务容器。 Laravel 的服务容器,是用于管理类的依赖和执行依赖注入的工具。 依赖注入 DI开始之前,需要我们先了解一下,什么是依赖注入。 简单来说,就是将类的依赖通过参数或其他方式注入。 比如: 12345678910111213141516171819202122232425262728293031323334interface Storage{ public function set($key, $value); public function get($key);}class SessionStorage implements Storage{ function __construct($cookieName='PHPSESSID'){ session_name($cookieName); session_start(); ...