Expose

win7安装使用docker

孤者浪人 提交于 2020-08-13 00:01:19
后知后觉的学习了下docker入门,还有一些问题和不解地方,留待以后慢慢琢磨。 一、操作系统:windows7专业版;docker版本:19.03;JDK版本:1.8. 二、安装docker: 1、docker好像没有直接支持win7的版本,看网上的文章说要下载docker-toolbox,于是去网站: https://github.com/docker/toolbox/releases 下载安装文件。 2、安装docker-toolbox,没有什么好说的,一路next就好。 本机之前没有安装git,效果更好;否则在这里不要勾选“Git for windows”。而且每次运行的时候,还需要选择Git的bash.exe文件。 另外在最后的安装过程里,会安装Oracle VM VirtualBox,这个最好也安装上,电脑上不差那点空间。我第一次安装的时候,看到oralce开头直接忽视,导致后边有问题,又卸载重新安装了一遍。 3、运行docker。安装成功后,桌面上出现了3个快捷图标: 双击或以管理员身份运行这个“Docker Quickstart Terminal”,出现下面这样的工作界面: 这里可以输入任何docker命令,比如 docker version。 4、运行第一个docker镜像(对于镜像,容器,仓库等概念不做详细解释了): docker run hello-world

URP学习之七--RenderFeature

梦想与她 提交于 2020-08-12 15:21:02
Unity的URP给了我们扩展渲染Pass的接口--RenderFeature,我们之前在讲URP-ForwardRenderer的时候提到过RenderFeature,这个东西是可以用来扩展Pass的。RenderFeature是依附于ForwardRenderer的,如下图所示: 现在我们会看到RendererFeatures的列表是空的,我们来添加一个,点击加号,我们会发现只有一个RenderObjects可以选择,我们可以先用这个RenderObjects的RenderFeature来熟悉一下一个Feature是怎么执行的。添加后点击添加的条目,会有以下参数: 我们首先看这个Feature怎么用:创建一个Unlit材质,将Pass的Name修改为"TestPass",然后将ShaderPasses中的PassName设置为“TestPass“,如下图: 这样,我们就能正确的通过其他Pass来渲染这个物体了,这个Pass通过我们自己在Shader中的自定义可以实现各种效果,比如我们实现一个多Pass描边,继续刚才我们的例子,因为我们将原来的PassName改为了Feature的PassName(”TestPass“),所以URP就不会调用UniversalForwardPass了。如果我们把UniversalForwardPass加回来

URP学习之七--RenderFeature

纵然是瞬间 提交于 2020-08-12 01:54:30
Unity的URP给了我们扩展渲染Pass的接口--RenderFeature,我们之前在讲URP-ForwardRenderer的时候提到过RenderFeature,这个东西是可以用来扩展Pass的。RenderFeature是依附于ForwardRenderer的,如下图所示: 现在我们会看到RendererFeatures的列表是空的,我们来添加一个,点击加号,我们会发现只有一个RenderObjects可以选择,我们可以先用这个RenderObjects的RenderFeature来熟悉一下一个Feature是怎么执行的。添加后点击添加的条目,会有以下参数: 我们首先看这个Feature怎么用:创建一个Unlit材质,将Pass的Name修改为"TestPass",然后将ShaderPasses中的PassName设置为“TestPass“,如下图: 这样,我们就能正确的通过其他Pass来渲染这个物体了,这个Pass通过我们自己在Shader中的自定义可以实现各种效果,比如我们实现一个多Pass描边,继续刚才我们的例子,因为我们将原来的PassName改为了Feature的PassName(”TestPass“),所以URP就不会调用UniversalForwardPass了。如果我们把UniversalForwardPass加回来

让.NetCore程序跑在任何有docker的地方

时光怂恿深爱的人放手 提交于 2020-08-11 04:49:56
一.分别在Windows/Mac/Centos上安装Docker Windows上下载地址: https://docs.docker.com/docker-for-windows/install/ (window上安装的常见问题和解决方案请参考下方步骤六) Mac上下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-mac Centos上安装Docker请参考我上篇文章链接: https://www.cnblogs.com/peyshine/p/12915317.html 二.打开vs 新建一个Web程序 这里选择启动docker支持,主要是为了能够自动生成dockerfile文件,如果忘记勾选了也没关系,也可以右键解决方案,点击‘添加’,选择‘docker支持’,vs也会自动为我们生成dockerfile,大概长这个样子 对dockerfile文件解释说明: 1.FROM 通过FROM指令来设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上进行拉取 2.WORKDIR 通过workdir指令用于设置Dockerfile中的RUN、CMD和ENTRYPOINT指令执行命令的工作目录(默认为/目录)

docker build 不使用缓存重建镜像

情到浓时终转凉″ 提交于 2020-08-10 09:10:23
cache 机制注意事项 可以说,cache 机制很大程度上做到了镜像的复用,降低存储空间的同时,还大大缩短了构建时间。然而,不得不说的是,想要用好 cache 机制,那就必须了解利用 cache 机制时的一些注意事项。 1. ADD 命令与 COPY 命令:Dockerfile 没有发生任何改变,但是命令 ADD run.sh / 中 Dockerfile 当前目录下的 run.sh 却发生了变化,从而将直接导致镜像层文件系统内容的更新,原则上不应该再使用 cache。那么,判断 ADD 命令或者 COPY 命令后紧接的文件是否发生变化,则成为是否延用 cache 的重要依据。Docker 采取的策略是:获取 Dockerfile 下内容(包括文件的部分 inode 信息),计算出一个唯一的 hash 值,若 hash 值未发生变化,则可以认为文件内容没有发生变化,可以使用 cache 机制;反之亦然。 2. RUN 命令存在外部依赖:一旦 RUN 命令存在外部依赖,如 RUN apt-get update ,那么随着时间的推移,基于同一个基础镜像,一年的 apt-get update 和一年后的 apt-get update, 由于软件源软件的更新,从而导致产生的镜像理论上应该不同。如果继续使用 cache 机制,将存在不满足用户需求的情况。Docker

.Net Core 2.2升级3.1的避坑指南

萝らか妹 提交于 2020-08-10 04:19:52
写在前面   微软在更新.Net Core版本的时候,动作往往很大,使得每次更新版本的时候都得小心翼翼,坑实在是太多。往往是悄咪咪的移除了某项功能或者组件,或者不在支持XX方法,这就很花时间去找回需要的东西了,下面是个人在迁移.Net Core WebApi项目过程中遇到的问题汇总: 开始迁移 1. 修改*.csproj项目文件 <TargetFramework>netcoreapp2. 2 </TargetFramework> 修改为 <TargetFramework>netcoreapp3.1</TargetFramework> 2 修改Program public static void Main( string [] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder( string [] args) => WebHost.CreateDefaultBuilder(args) .UseStartup <Startup>().ConfigureAppConfiguration((hostingContext, config) => { config.AddJsonFile($ " 你的json文件.json " ,

Repository 返回 IQueryable?还是 IEnumerable?

筅森魡賤 提交于 2020-08-09 13:48:08
这是一个很有意思的问题,我们一步一步来探讨,首先需要明确两个概念(来自 MSDN): IQueryable:提供对未指定数据类型的特定数据源的查询进行计算的功能。 IEnumerable:公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。 IQueryable 继承自 IEnumerable,它们俩最大的区别是,IQueryable 是表达式树处理,可以延迟查询,而 IEnumerable 只能查询在本地内存中,Repository 的概念就不多说了,在“伪 DDD”设计中,你可以把它看作是数据访问层。 下面我们先实现 Repository 返回 IEnumerable: public interface IBookRepository { Book GetById(); IEnumerable<Book> GetAllBooks(); IEnumerable<Book> GetBy....(); void Add(Book book); void Delete(Book book); void SaveChanges(); } 上面是我们的一般接口设计,包含查询、增加、删除操作,你发现并没有修改,其实我们可以先通过 GetById 操作,然后取得 Book 对象,进行修改,最后执行 SaveChanges 就可以了,在持久化数据库的时候,会判断实体状态值的概念,最后进行应用改变

kubectl源码分析之expose

巧了我就是萌 提交于 2020-08-09 02:24:58
发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967 课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。 腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518 第二个视频发布 https://edu.csdn.net/course/detail/27109 腾讯课堂连接地址https://ke.qq.com/course/484107?tuin=ba64518 介绍主要的k8s资源的使用配置和命令。包括configmap,pod,service,replicaset,namespace,deployment,daemonset,ingress,pv,pvc,sc,role,rolebinding,clusterrole,clusterrolebinding,secret,serviceaccount,statefulset,job,cronjob,podDisruptionbudget,podSecurityPolicy,networkPolicy,resourceQuota,limitrange

Spring 如何在一个事务中开启另一个事务?

試著忘記壹切 提交于 2020-08-07 00:28:33
作者:Mazin https://my.oschina.net/u/3441184/blog/893628 这样的情景可能不常见,但是还是会有的,一旦遇到,如果业务比较复杂,就会很麻烦,但是还是有解决的方案的,比如将一个service方法拆成两个方法,也就是将两个操作的事务分开。 但是这只适用与业务比较简单的,如果出现多次数据库的写操作,而我们调用的系统只需要其中一个写操作的最新数据,如果我们将它分开,那么如果调用目标系统出现异常的时候,那么之前的写操作就不能回滚了。 举个简单的例子: @Service public class ServiceA { @Transactional public void doSomething(){ 向数据库中添加数据; 调用其他系统; } } 这里就用伪代码来做示例了,当我们执行了“向数据库中添加数据”,我们去数据库中查询,发现并没有我们添加的数据,但是当我们的 service 这个方法执行完成之后,数据库中就有这条数据了,这是由于数据库的隔离性造成的。 Spring中的事务注解 @transactional 提供了一个参数: Propagation propagation() default Propagation.REQUIRED; 这个参数是定义 **Spring事务的传递性的,默认值为:**required,也就是如果有事务,就加入事务

再也不用为跨域而苦恼

∥☆過路亽.° 提交于 2020-08-06 04:35:50
前言 最近没时间写博客,只好把以前写的博客整理到自己的博客网站上去 跨域 跨域解决的方案有好几种,熟练掌握 CORS 就行了,并晓得一些原理。 jsonp 基本告别了,了解即可。 将前端的域与后端保持一致就行了,通过 nginx 代理转发。 什么情况下会跨域呢? 跨域是指从一个源去请求另一个源的资源,浏览器基于完全考虑并遵循同源策略,禁止跨域访问。 但是我们可以通过一些手段 JSONP 或者 CORS 来实现跨域。 <font color=red>跨域只会发生在浏览器中,后端服务之间的接口调用是没有跨域一说的。</font> 简单理解:当 url 中的协议/域名/端口不同时,就产生了跨域。 跨域的解决方案? nginx 反向代理,将请求的接口全部转发就行了 jsonp cors nginx 反向代理解决跨域 location /api { proxy_pass http://192.168.202.50:8082/; } 匹配 url 中以 /api 开头的路径 http://192.168.202.50:8081/api --> http://192.168.202.50:8082 http://192.168.202.50:8081/api/users/2 --> http://192.168.202.50:8082/users/2 来自 8081 的页面请求了 /api