test

【15】创建型-Builder模式

こ雲淡風輕ζ 提交于 2020-03-01 14:18:40
1、上下文及定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体构建细节.Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到。 2、常用场景 是为了将构建复杂对象的过程和它的部件解耦.注意: 是解耦过程和部件。 因为一个复杂的对象,不但有很多大量组成部分,如汽车,有很多部件:车轮 方向盘 发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一辆汽车,这个装配过程也很复杂(需要很好的组装技术),Builder模式就是为了将部件和组装过程分开。 在Java实际使用中,我们经常用到"池"(Pool)的概念,当资源提供者无法提供足够的资源,并且这些资源需要被很多用户反复共享时,就需要使用池。 "池"实际是一段内存,当池中有一些复杂的资源的"断肢"(比如数据库的连接池,也许有时一个连接会中断),如果循环再利用这些"断肢",将提高内存使用效率,提高池的性能.修改Builder模式中Director类使之能诊断"断肢"断在哪个部件上,再修复这个部件。 3、解决方法 首先假设一个复杂对象是由多个部件组成的,Builder模式是把复杂对象的创建和部件的创建分别开来

keras无法加载imdb文本:Object arrays cannot be loaded when allow_pickle=False

一世执手 提交于 2020-03-01 11:05:38
按照网上的教程加载imdb电影评论数据集 from keras.datasets import imdb (train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000) 结果报错:ValueError: Object arrays cannot be loaded when allow_pickle=False numpy版本的问题,numpy的的版本和keras没有完全兼容 解决方法 : #在前面加上这三行代码 import numpy as np old = np.load np.load = lambda *a,**k: old(*a,**k,allow_pickle=True) #然后再运行原代码即可 from keras.datasets import imdb (train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000) 来源: CSDN 作者: chadqiu 链接: https://blog.csdn.net/m0_37750065/article/details/104579661

D3选择集训练

久未见 提交于 2020-03-01 11:01:23
基本上包括常用的了。 <!DOCTYPE html> <body> <p>Paragraph 1</p> <p>Paragraph 2</p> <p>Paragraph 3</p> <p id="para"> This is a Paragraph</p> <input id="fname" type="text" name="fullname" /> <p id="test">This <span>is</span> a Paragraph</p> <div> <p>Car</p> <p id="plane">Plane</p> <p >Ship</p> </div> </body> <script src="d3.v3.min.js" charset="UTF-8"></script> <script> var paragraphs = d3.selectAll("p"); console.log(paragraphs.empty()); console.log(paragraphs.node()); console.log(paragraphs.size()); d3.select("p").attr("class", "red bigsize"); d3.select("p").classed("red", true); d3.select("p").classed(

AI:是猫还是狗,这是个问题

心已入冬 提交于 2020-03-01 09:49:18
如果你不喜欢小猫和小狗,你可能不知道他们具体是哪一种品种,但是一般来说,你都能区分出这是猫还是狗,猫和狗的特征还是不一样的,那我们如何用机器学习的方法训练一个网络区分猫狗呢? 我们选用的是 Kaggle 的一个数据集( https://www.kaggle.com/c/dogs-vs-cats/data ),用神经网络的方法进行模型的训练。下载下来的数据集对于我们测试来说数据有点大,这里面分别有 12500 个猫和狗的训练图片,我们先来缩小一下训练集,然后再进行模型的搭建和训练。我们的做法做法是猫和狗分别选择 1000 个训练图片,500 个验证集和 500 个测试集,我们可以手工完成这个工作,需要做的就是: // 如下非可执行代码,含义非常清楚的表达,最后会附上可执行代码 mkdir dog-vs-cats-small cp dog-vs-cats/train/cat/pic-{0-999}.jpg dog-vs-cats-small/train/cat/ cp dog-vs-cats/train/dog/pic-{0-999}.jpg dog-vs-cats-small/train/dog/ cp dog-vs-cats/validation/cat/pic-{1000-1499}.jpg dog-vs-cats-small/validation/cat/ cp dog-vs

svn错误的解决方法(转)

大城市里の小女人 提交于 2020-03-01 09:40:02
标题:svn: Failed to add directory '*****': an unversioned directory of the same name already exists 内容: svn: Failed to add file 'Makefile': an unversioned file of the same name already exists 执行更新(svn up)时报错。因为其他人新增一个文件到服务器,而本地却存在一个同名文件(未版本控制) 先将本地重名文件改名,再执行"svn up",之后再比较、合并文件。或者执行 "svn up --force" /opt/csvn/bin/svn update --force . 这时可能会出现系统提示,因为subversion发现了local work copy和repository上的不一致。需要svn用户自己裁决,可以直接输入tf,即使用repository上版本即可,因为你没有更改project文件。即: Conflict discovered in ‘EuM1.xcodeproj/project.pbxproj’. Select: (p) postpone, (df) diff-full, (e) edit, (mc) mine-conflict, (tc) theirs-conflict,

【OCR技术系列之四】基于深度学习的文字识别(3755个汉字)

China☆狼群 提交于 2020-03-01 09:12:18
上一篇提到文字数据集的合成,现在我们手头上已经得到了3755个汉字(一级字库)的印刷体图像数据集,我们可以利用它们进行接下来的3755个汉字的识别系统的搭建。用深度学习做文字识别,用的网络当然是CNN,那具体使用哪个经典网络?VGG?RESNET?还是其他?我想了下,越深的网络训练得到的模型应该会更好,但是想到训练的难度以及以后线上部署时预测的速度,我觉得首先建立一个比较浅的网络(基于LeNet的改进)做基本的文字识别,然后再根据项目需求,再尝试其他的网络结构。这次任务所使用的深度学习框架是强大的Tensorflow。 网络搭建 第一步当然是搭建网络和计算图 其实文字识别就是一个多分类任务,比如这个3755文字识别就是3755个类别的分类任务。我们定义的网络非常简单,基本就是LeNet的改进版,值得注意的是我们加入了batch normalization。另外我们的损失函数选择sparse_softmax_cross_entropy_with_logits,优化器选择了Adam,学习率设为0.1 #network: conv2d->max_pool2d->conv2d->max_pool2d->conv2d->max_pool2d->conv2d->conv2d->max_pool2d->fully_connected->fully_connected def build

mongoDB-3.x启用认证

孤者浪人 提交于 2020-03-01 07:05:33
mongoDB-3.x启用认证 官方文档: https://www.mongodb.org/downloads#production https://docs.mongodb.org/manual/reference/method/js-user-management/ https://docs.mongodb.org/manual/reference/configuration-options/ https://docs.mongodb.org/manual/core/authentication/ 环境: CentOS6.5 x64 mongoDB-3.2.0 一.创建管理员用户 在启用认证前要先创建制授权用户 use admin db.createUser( { user: "myUserAdmin", pwd: "abc123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) 二.启用认证 命令行启动时加上 --auth 或 配置文件 security: authorization: enabled 三.认证用户登录 mongo --host 192.168.192.10 --port 27017 -u "myUserAdmin" -p "abc123" -

PHP7 扩展之自动化测试

百般思念 提交于 2020-03-01 05:56:13
在安装 PHP7 及各种扩展的过程中,如果你是用源码安装,会注意到在 make 成功之后总会有一句提示:Don't forget to run 'make test'. 这个 make test 就是运行 PHP 的自动化测试了。 如果你刚刚安装完 PHP7,直接运行 make test,经过漫长的等待时间之后,最终的统计结果大概是这样的: 会出现这么多 skip 和 fail 说明有一些扩展你没有安装,相关环境的配置也需要优化 不过一般来讲我们不需要运行这么多的测试脚本,尤其对单一扩展而言,针对相关接口来测试就可以了,所以我们进一步看看如何独立运行测试脚本 首先打开 php 的 Makefile文件,我们看看 make test 都做了什么 test: all @if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \ INI_FILE=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \ if test "$$INI_FILE"; then \ $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI

sed详解

℡╲_俬逩灬. 提交于 2020-03-01 05:52:15
文章目录 语法 SED工作流程 选项 SCRIPS 模式空间命令 保持空间命令 sed使用实例 1、打印: p 命令 2、删除: d 命令 3、替换: s 命令 4、追加: a 命令 5、插入:i命令 6、修改:c命令 7、打印行号:=命令 8、打印(包括控制字符):l命令 9、字符转换:y命令 10、读取下一行:n命令 11、读取文件:r命令 12、保存文件:w命令 13、退出:q命令 14、读取下一行以\n拼接上一行:N 15、打印至\n的内容:P 16、删除上一行:D 17、保持空间命令:h/H,g/G,x 改变流 1、分支 branch 2、测试 test sed(Stream EDitor),是一种流编辑器,用于文本编辑 语法 sed [option] 'SCRIPTS' FILE... SCRIPTS:[Address] [!]Command 命令地址对 SED工作流程 读取新的一行到模式空间,将“SCRIPTS”的第一个address匹配,如果符合则执行command 如果address符合则执行command,不符合取下一个地址命令对 直到所有的地址命令对应用完,输出模式空间的内容 选项 选项 功能 -f FILE 调用sed脚本处理文件 -n 抑制默认内容输出,常与p命令连用 -r 支持扩展元字符 -iSUFFIX 修改源文件,同时创建一个备份文件

Celery如何使用与项目实践

北城余情 提交于 2020-03-01 02:52:45
一. Celery介绍 参考博客:http://www.cnblogs.com/alex3714/p/6351797.html 1、celery应用举例 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用celery 你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情 Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis 2、Celery有以下优点 简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的 高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务 快速:一个单进程的celery每分钟可处理上百万个任务 灵活: 几乎celery的各个组件都可以被扩展及自定制 3、Celery基本工作流程图 user:用户程序,用于告知celery去执行一个任务。 broker: 存放任务(依赖RabbitMQ或Redis,进行存储) worker:执行任务 二. celery简单使用 1、安装