技术文章

Docker 使用指南 —— 基本操作

牧云@^-^@ 提交于 2021-02-19 11:39:10
Docker 是一个能够把开发应用程序自动部署到容器的开源引擎。它由Docker公司的团队编写,基于Apache 2.0开源协议授权。它提供了一个简单、轻量的建模方式,使开发生命周期更高效快速,鼓励了面向服务的架构设计。Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。 Docker 的特点: 更快速的交付和部署 更高效的虚拟化 更轻松的迁移和扩展 更简单的管理 容器技术与传统虚拟机性能对比 Docker与虚拟机建构对比 Docker 容器本质上是宿主机上的一个进程。Docker 通过 namespace 实现了资源隔离,通过 cgroups 实现了资源的限制,通过写时复制机制(copy-on-write)实现了高效的文件操作。 Docker有五个命名空间:进程、网络、挂载、宿主和共享内存,为了隔离有问题的应用,Docker运用Namespace将进程隔离,为进程或进程组创建已隔离的运行空间,为进程提供不同的命名空间视图。这样,每一个隔离出来的进程组,对外就表现为一个container(容器)。需要注意的是

SpringBoot项目新建遇到问题整理(一)

梦想与她 提交于 2021-02-19 11:04:02
1.新建了一个SpringBoot项目:只引用需要用到的spring boot相关的jar包,除此之外没有任何的配置 启动application.java报错: APPLICATION FAILED TO START *************************** Description: Cannot determine embedded database driver class for database type NONE Action: If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active). --——————>原因:因为spring boot只要你在pom中引入了spring-boot-starter-data-jpa,他就会默认需要加载数据库相关的配置 你要是没有在配置文件中配置数据库相关信息,它会加载默认的配置(不存在的) 然后就报错了, 所以你要是要用数据库相关的东西 你就完善配置 不用数据库相关的东西

集成 AWTK 到 iotjs

删除回忆录丶 提交于 2021-02-19 11:03:34
集成 AWTK 到 iotjs iotjs 是三星开源的 javascript 物联网开发平台。它为 javascript 应用程序提供了访问硬件、网络、文件系统和异步化的能力,功能类似于 nodejs,但无论是代码体积还是内存需求,iotjs 都要小很多,是用 javascript 开发 iot 设备应用程序的首选。 AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。 用 C 语言来扩展 iotjs 不是太难的事情,但是将 GUI 集成到 iotjs 却是有些麻烦的。主要原因在于 iotjs 有个主循环 (main loop),GUI 自己也有个主循环 (main loop),两者不同并存,只能选一个。这里 AWTK 为例,介绍一下如何将 GUI 集成到 iotjs 中,这对将 GUI 集成到 nodejs 也是有参考价值。 一、以谁为主 在集成 AWTK 到 iotjs 时,我选择了以 iotjs 的主循环为主。这并不是唯一的正确方案,做这个选择的主要原因有: 让 AWTK 作为 iotjs 的模块,保持 iotjs 本身的开发方式。 避免修改 iotjs。iotjs

全连接层

北战南征 提交于 2021-02-19 11:03:23
[TOC] Outline Matmul Neural Network Deep Learning Multi-Layer Recap out = f(X@W + b) out = relut(X@W + b) Neural Network h = relut(X@W + b) $h_0 = relu(X@W_1 + b_1)$ # Input $h_1 = relu(h_0@W_2 + b_2)$ # Hidden $out = relu(h_1@W_3 + b_3)$ # Output Neural Network in the 1980s 3~5 layers Here comes Deep Learning Deep Learning now $n \approx {1200},layers$ Heros 推动深度学习发展的功臣: BigDATA ReLU Dropout BatchNorm ResNet Xavier Initialization Caffe/TensorFlow/PyTorch ... Fully connected layer import tensorflow as tf x = tf.random.normal([4, 784]) net = tf.keras.layers.Dense(512) out = net(x) out.shape

Django rest framework(1)----认证

和自甴很熟 提交于 2021-02-19 11:03:04
目录 Django组件库之(一) APIView源码 Django restframework (1) ----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Django rest framework(4)----版本 Django rest framework(5)----解析器 Django rest framework(6)----序列化 Django rest framework(7)----分页 一、基础 1.1.安装 两种方式: github pip直接安装 pip install djangorestframework 1.2.需要先了解的一些知识 理解下面两个知识点非常重要,django-rest-framework源码中到处都是基于CBV和面向对象的封装 (1)面向对象封装的两大特性 把同一类方法封装到类中 将数据封装到对象中 (2)CBV 基于反射实现根据请求方式不同,执行不同的方法 原理:url-->view方法-->dispatch方法(反射执行其它方法:GET/POST/PUT/DELETE等等) 二、简单实例 2.1.settings 先创建一个project和一个app(我这里命名为API) 首先要在settings的app中添加 INSTALLED_APPS = [

springcloud -- sleuth+zipkin整合rabbitMQ详解

巧了我就是萌 提交于 2021-02-19 11:02:40
为什么使用RabbitMQ? 我们已经知道,zipkin的原理是服务之间的调用关系会通过HTTP方式上报到zipkin-server端,然后我们再通过zipkin-ui去调用查看追踪服务之间的调用链路。但是这种方式存在一个隐患,如果微服务之间与zipkin服务端网络不通,或调用链路上的网络闪断,http通信收集方式就无法工作。而且zipkin默认是将数据存储在内存中的,如果服务端重启或宕机,就会导致数据丢失。 所以我们不仅将数据存储在zipkin-serve中,同时还能通过某个消息存储的容器将本次调用其他服务的消息数据进行持久化存储,这样不就可以解决问题吗?结合RabbitMQ证好解决了这一问题,再发一份到消息队列中去。 安装RabbitMQ 查找镜像 进入docker hub镜像仓库地址: https://hub.docker.com/_/rabbitmq?tab=description ,选择带有 "management" 的版本(包含管理界面) docker 搜素下载 docker search rabbitmq:management 拉取镜像 docker pull rabbitmq:3.7.7-management // 1 docker pull rabbitmq:management // 2 运行rabbitMQ docker run -d -p 5672:5672

张朝阳一天只睡4小时?不知道,反正我每天都睡足7小时

别说谁变了你拦得住时间么 提交于 2021-02-19 11:02:26
这是头哥侃码的第213篇原创 周末,一个很久没联系过的朋友突然在微信上发给我一个链接。 我打开一看,原来是搜狐老板张朝阳近日发表的一个有关睡眠的神论,大致是说他每天只睡四小时,白天状态还特别好,每天员工到公司的时候,我已经工作好几个小时了。 最后,他不仅告诫大家要早睡早起,睡太多不太好,而且还表示要 “推广四小时睡眠法” ....... 说 完,他还不忘调侃我: “你瞧,牛人就是不一样。 别人在睡觉,他在努力,别人在泡妞,他还在努力……” “头哥,我记得你每天好像也只睡几个小时,而且为了保持身体状态,你每天还凌晨去健身房加练,对吧?” “另外,张朝阳说他每天只睡4小时,那白天不困吗?会不会对身体有什么损害啊?” 看完这几句话,我苦笑了下,对着微信写道: “流言这东西,比流感蔓延的速度快,比流星蕴含的能量大,比流氓更具有恶意,比流产更能让人心力憔悴。“ “ 针对这个话题,我有几点需要说明一下。” “ 第一,我既不是健美选手,也不是夜猫子,健身只不过是我众多爱好中的一项。 之所以选择晨练,那是因为我的生物钟与工作作息的驱使。” “ 第二,张朝阳到底一天睡几个小时,我不知道,反正我每天都必须睡足7小时。 ” “ 第三,睡眠这东西因人而异,有些东西大象吃了补身体,但老鼠吃了却能一击毙命。 ” 1 自己内心抑郁,不要来教唆别人 有点科学常识的人都知道, 良好的睡眠是健康的根本

基于hprose-golang创建RPC微服务

女生的网名这么多〃 提交于 2021-02-19 11:02:12
Hprose (High Performance Remote Object Service Engine) 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。 官网: https://hprose.com/ 本文将讲解如何使用 Hprose go 服务端编写一个微服务,并实现客户端调用。 本文的涉及的项目代码托管在github: https://github.com/52fhy/hprose-sample 。 使用Go实现服务端 初始化 git初始化: git init echo "main" >> .gitignore echo "# hprose-sample" >> README.md 项目使用 go mod 管理依赖,请确保安装的Go版本支持该命令。先初始化 go.mod 文件: go mod init sample 最终项目目录结构一览: ├── config │ └── rd.ini ├── dao ├── main.go ├── model └── util ├── config.go └── state.go ├── service │ └── sample.go ├── go.mod ├── go.sum ├── client_test.go ├── README.md ├── php ├── logs

Python+request 登录接口reponse的返回值token跨py文件的传递《二》

独自空忆成欢 提交于 2021-02-19 11:01:58
主要使用场景:   一般我们在进行接口测试时,依赖登录接口后reponse中的某些返回值,因此需要将login接口单独写一个py文件,另外的py文件均可调用login的reponse返回值使用。共用登录接口。 操作步骤:   1、创建gol命名的py文件,对全局变量的使用方法进行封装,后期有用到全局变量时均可使用   2、单独创建login的py文件,和todo的py文件。   3、todo文件中调用login并运行,查看结果 页面结构如下截图:    操作步骤代码如下: 1、gol.py 文件中主要是对之后全局变量可使用的封装 # -*- coding: utf-8 -*- # 全局变量使用 def _init(): # 初始化 global _global_dict _global_dict = {} def set_value(key, value= None): """ 定义一个全局变量 """ _global_dict[key] = value def get_value(key, defValue= None): """ 获得一个全局变量,不存在则返回默认值 """ try : return _global_dict[key] except KeyError: return defValue 2、login.py 文件是登录接口的方法。注意点:   (1)需调用

Java NIO用法详解

孤街醉人 提交于 2021-02-19 11:01:47
对于Java NIO,其主要由三个组件组成:Channel、Selector和Buffer。关于这三个组件的作用主要如下: Channel是客户端连接的一个抽象,当每个客户端连接到服务器时,服务器都会为其生成一个Channel对象; Selector则是Java NIO实现高性能的关键,其本质上使用了IO多路复用的原理,通过一个线程不断的监听多个Channel连接来实现多所有这些Channel事件进行处理,这样的优点在于只需要一个线程就可以处理大量的客户端连接,当有客户端事件到达时,再将其分发出去交由其它线程处理; Buffer从字面上讲是一个缓存,本质上其是一个字节数组,通过Buffer,可以从Channel上读取数据,然后交由下层的处理器进行处理。这里的Buffer的优点在于其封装了一套非常简单的用于读取和写入数据Api。 关于Channel和Selector的整体结构,可以通过下图进行的理解,这也是IO多路复用的原理图: 可以看到,对于每个Channel对象,其只要注册到Selector上,那么Selector上监听的线程就会监听这个Channel的事件,当任何一个Channel有对应的事件到达时,Selector就会将该事件分发到下层的应用进行处理。 本文首先会对Channel,Selector和Buffer的主要Api进行讲解