namespace

Laravel中Contracts的理解和使用

蓝咒 提交于 2019-12-04 11:32:12
Laravel 的 Contracts 是一组定义了框架核心服务的接口。说白了就是一组接口。使用它就是为了降低耦合性。 即便如此,是不是也有同学会搞不清楚Contracts在lavarel体系中的到底在一个什么样的位置?下面上一张自制的图,也许有地方不对,但是初学的同学可以通过它大概的,简单的解决下心中的困惑。 通过这张图我们可以看到,当写好自定义的Contract接口及其实现类后,在ServiceProvider中绑定,此时服务容器已经登记上这个Contract了。之后就可以在要用到它的地方,经过服务容器解析直接使用了 下面就详细写一下怎么具体的使用: 第一步,写一个Contract接口: <?php namespace App\Contracts; interface Hello { public function hello(); } 第二步,写上面Contract的实现类: <?php namespace App\Services; use App\Contracts\Hello; class HelloWorld implements Hello { function hello(){ return "Hello!~~"; } } 第三步,写一个自定义的ServiceProvider: <?php namespace App\Providers; use

docker容器保持运行不退出

↘锁芯ラ 提交于 2019-12-04 09:25:40
nsenter工具进入docker容器 概述 对于运行在后台的docker容器,我们经常需要做的事情是进入到容器中,docker为我们提供了docker exec 、docker attach 命令,并且还提供了nsenter工具,外部工具供我们使用。docker attach存在的问题是:当多个窗口同时attach到同一个容器时,所有的窗口都会同步的显示,假如其中的一个窗口发生阻塞时,其它的窗口也会阻塞,docker attach命令可以说是最不方便的进入后台docker容器的方法。docker exec命令是在docker 1.3之后增加的一个比docker attach命令更加方便的命令。和docker exec差不多方便的命令是nsenter工具。 nsenter安装 $ cd /tmp; $ curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zxf-; cd util-linux-2.24; $ ./configure --without-ncurses $ make nsenter && sudo cp nsenter /usr/local/bin nsenter使用 在使用nsenter命令之前需要获取到docker容器的进程

Docker 容器资源隔离 namespace(十)

梦想的初衷 提交于 2019-12-04 09:05:13
一、简介 Linux Namespace 是 Linux 提供的一种内核级别环境隔离的方法。不知道你是否还记得很早以前的 Unix 有一个叫 chroot 的系统调用(通过修改根目录把用户 jail 到一个特定目录下),chroot 提供了一种简单的隔离模式:chroot 内部的文件系统无法访问外部的内容。Linux Namespace 在此基础上,提供了对 UTS、IPC、mount、PID、network、User 等的隔离机制。 举个例子,我们都知道,Linux 下的超级父亲进程的PID是1,所以,同 chroot 一样,如果我们可以把用户的进程空间 jail 到某个进程分支下,并像 chroot 那样让其下面的进程 看到的那个超级父进程的 PID 为1,于是就可以达到资源隔离的效果了(不同的 PID namespace 中的进程无法看到彼此) Linux Namespace的6大类型 类型 功能说明 Mount Namespace 提供磁盘挂载点和文件系统的隔离能力 IPC Namespace 提供进程间通信的隔离能力 Network Namespace 提供网络隔离能力 UTS Namespace 提供主机名隔离能力 PID Namespace 提供进程隔离能力 User Namespace 提供用户隔离能力 二、Mount Namespace Mount

k8s相关

徘徊边缘 提交于 2019-12-04 09:04:41
卸载kubernetes-dashboard kubectl get secret,sa,role,rolebinding,services,deployments --namespace=kube-system | grep dashboard sudo kubectl delete deployment kubernetes-dashboard --namespace=kube-system sudo kubectl delete service kubernetes-dashboard --namespace=kube-system sudo kubectl delete role kubernetes-dashboard-minimal --namespace=kube-system sudo kubectl delete rolebinding kubernetes-dashboard-minimal --namespace=kube-system sudo kubectl delete sa kubernetes-dashboard --namespace=kube-system sudo kubectl delete secret kubernetes-dashboard-certs --namespace=kube-system sudo kubectl

PHP 核心特性 - 命名空间

对着背影说爱祢 提交于 2019-12-04 06:56:37
   提出 在命名空间提出之前,不同的组件很容易碰到命名的冲突,例如 Request 、 Response 等常见的命名。PHP 在 5.3 后提出了命名空间用来解决组件之间的命名冲突问题,主要参考了文件系统的设计: 同一个目录下不允许有相同的文件名 - 同一个命名空间下不允许有相同的类; 不同的目录可以有同名文件 - 不同的命名空间可以有相同的类; 定义 使用 namespace 关键字来定义一个命名空间。其中,顶层命名空间通常为厂商名,不同开发者的厂商命名空间是唯一的。命名空间不需要与文件目录一一对应,但是最好遵守 PSR-4 规范。 1 <?php 2 3 namespace Symfony\Component\HttpFoundation; 4 5 class Request { 6 7 } 8 命名空间必须在所有代码之前声明,唯一的例外就是 declare 关键字。 9 10 <?php 11 12 declare(strict_types=1); 13 14 namespace App; 命名空间内可包含任意 PHP 代码,但是仅对类 (包括抽象类和 Trait)、接口、函数和常量这四种类型生效。 1 <?php 2 namespace MyProject; 3 4 const CONNECT_OK = 1; 5 class FOO {} 6 interface Foo

解决INVALID BOUND STATEMENT (NOT FOUND)(MYBATIS的MAPPER绑定问题)

老子叫甜甜 提交于 2019-12-04 04:31:48
一、问题描述 使用mybatis的项目在本地可以正常运行,但当使用maven或Jenkins打包部署到服务器上时出现了绑定错误,异常信息为: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.yo.news.user.mapper.UserMapper.getUserByTelPwd 二、问题分析和解决方法 首先,给定的异常提示信息并不精准,有多个错误原因都会抛出该异常。mybatis出现这个问题,通常是由Mapper interface和对应的xml文件的定义对应不上引起的,这时就需要仔细检查对比包名、xml中的namespace、接口中的方法名称等是否对应。我之前就因为称忘记在xml标签的id属性中添加方法名或写错方法名而出现这个错误。 出现这个错误时,按以下步骤检查一般就会解决问题: 1:检查xml文件所在package名称是否和Mapper interface所在的包名一一对应; 2:检查xml的namespace是否和xml文件的package名称一一对应; 3:检查方法名称是否对应; 4:去除xml文件中的中文注释; 5:随意在xml文件中加一个空格或者空行然后保存。 -------------------------------- 但是!!!!!

测试clang-format的格式化效果

两盒软妹~` 提交于 2019-12-04 03:59:16
  我自己写的业余框架已告一段落,主体功能已完成,剩下的就是优化。第一个要优化的,就是代码格式。我一直是用编辑器写代码的,从之前的UltraEdit到notepad++到sublime text,再到现在的VS Code。由于代码都是我一个人写,风格也比较统一,虽然说不上美观,但至少说得过去。但寻思着以后万一有人要用这代码,总得有个较为通用的代码风格才行,而且我也不太可能去人工约束别人怎么写,那就用工具吧。   C++不像Java、C#、TypeScript这些语言,他们都有较为通用的代码风格标准,比较通用的IDE,基本是自带代码格式化,因此整体上来说比较容易统一。但C++就没有,比如我在公司是用Visual Studio,在家有时候用的VS Code,有时候用的Qt。现在流行的C++代码格式化工具,大概有3个:clang-format、uncrustify、astyle。   clang-format是随 LLVM项目 而来的后起之秀,也是这次测试的重点。原因是它的开发现在是最活跃的,格式化选项是最多的,集成也是最多的( VS2017以后有集成 ,VS Code有插件,Qt在新版本中已经集成)。我花了点时间,尝试了解clang-format的配置,并做了些测试。 /* 测试clang-format格式化效果 */ class Test { // 对齐这个public修饰符

模板仓库

梦想与她 提交于 2019-12-04 03:37:39
字符串类 后缀数组 #include<bits/stdc++.h> using namespace std; #define maxn 1000007 void read(int &x){ x=0;char ch=1;int fh; while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar(); if(ch=='-') fh=-1,ch=getchar(); else fh=1; while(ch>='0'&&ch<='9'){ x=(x<<1)+(x<<3)+ch-'0'; ch=getchar(); } x*=fh; } char s[maxn]; int n,m,sa[maxn],x[maxn],y[maxn],ct[maxn]; void SA(){ for(register int i=1;i<=n;i++) ct[x[i]=s[i]]++; for(register int i=2;i<=m;i++) ct[i]+=ct[i-1]; for(register int i=n;i>=1;i--) sa[ct[x[i]]--]=i; for(register int k=1;k<=n;k<<=1){ int tot=0; for(register int i=n-k+1;i<=n;i++) y[++tot]=i; for(register

Mybaits 源码解析 (九)----- 全网最详细,没有之一:一级缓存和二级缓存源码分析

无人久伴 提交于 2019-12-04 01:20:37
像Mybatis、Hibernate这样的ORM框架,封装了JDBC的大部分操作,极大的简化了我们对 数据库 的操作。 在实际项目中,我们发现在一个事务中查询同样的语句两次的时候,第二次没有进行数据库查询,直接返回了结果,实际这种情况我们就可以称为缓存。 Mybatis的缓存级别 一级缓存 MyBatis的一级查询缓存(也叫作本地缓存)是基于org.apache.ibatis.cache.impl.PerpetualCache 类的 HashMap本地缓存,其作用域是SqlSession,myBatis 默认一级查询缓存是开启状态,且不能关闭。 在同一个SqlSession中两次执行相同的 sql查询语句,第一次执行完毕后,会将查询结果写入到缓存中,第二次会从缓存中直接获取数据,而不再到数据库中进行查询,这样就减少了数据库的访问,从而提高查询效率。 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,PerpetualCache 对象是在SqlSession中的Executor的localcache属性当中存放,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空。 二级缓存 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap存储,不同在于其存储作用域为

深(爆)搜专题整理

血红的双手。 提交于 2019-12-04 01:02:27
就要考CSP了,小C每天说要把暴力打满,然后就开了个爆搜专题。。 发现自己好久没打搜索了。。 问题 A: 汽车问题 有一个人在某个公共汽车站上,从12:00到12:59观察公共汽车到达本站的情况,该站被多条公共汽车线路所公用,他依次记下公共汽车到达本站的时刻。 在12:00-12:59期间,同一条线路上的公共汽车以相同的时间间隔到站。 时间单位用“分”表示,从0到59 。 每条公共汽车线路至少有两辆车到达本站。 公共汽车线路数K一定≤17,汽车数目N一定小于300。 来自不同线路的公共汽车可能在同一时刻到达本站。 不同公共汽车线路的车首次到站时间和到站的时间间隔都有可能相同。 请为公共汽车线路编一个调度表,目标是:公共汽车线路数目最少的情况下,使公共汽车到达本站的时刻满足输入数据的要求。 输入: 第一个整数n 接下来n个数字,表示每次到达的时间。 输出: 输出一个整数,表示最少的班次。 友情提示:看到的公交汽车线路一定是完整的:比如样例1中 0,3 是不符合要求的 而应该是 0,3,6,9... 直到最后看到的那辆车为止 先上代码: #include<bits/stdc++.h> #define debug(a) cout<<#a<<"="<<a<<endl #define LL long long using namespace std; const int N=305; int