vue项目中在单独的js文件中使用element ui

vue项目中在单独的js文件中使用element ui 例如要使用MessageBox组件 例如要使用MessageBox组件 1.引入组件 import { MessageBox } from "element-ui"; 2.使用 MessageBox.confirm("这是一个内容", "这是一个标题" ,{undefined distinguishCancelAndClose: true, confirmButtonText: ‘确认’, showClose:false, showCancelButton:false }).then(()=>{undefined // 点击确认按钮的回调 }) 一般是在响应拦截器中使用,亲测有效 ———————————————— 版权声明:本文为CSDN博主「流年*痕迹」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_52007839/article/details/111663753

干货:详解asp.net Core3.0区域与路由配置的方法

在ASP.NET Core 3.0中路由配置和2.0不一样了 一、MVC 服务注册 ASP.NET Core 3.0 添加了用于注册内部的 MVC 方案的新选项Startup.ConfigureServices。 三个新的顶级扩展方法与 MVC 方案上IServiceCollection可用。 模板使用这些新方法,而不是UseMvc。 但是,AddMvc继续像它已在以前的版本。 下面的示例将添加对控制器和与 API 相关的功能,但不是视图或页面的支持。 API 模板使用此代码:

  下面的示例将添加对控制器、 与 API 相关的功能,和视图,但不是页面的支持。 Web 应用程序 (MVC) 模板使用此代码:

  下面的示例添加支持 Razor 页面和最小控制器支持。 Web 应用程序模板使用此代码:

  此外可以组合的新方法。 下面的示例是等效于调用AddMvcASP.NET Core 2.2 中:

  二、Startup.Configure配置 一般不建议: 添加UseRouting。 如果该应用程序调用UseStaticFiles,将置于UseStaticFiles之前 UseRouting。 如果应用使用身份验证/授权功能,如AuthorizePage或[Authorize],将对UseAuthentication并UseAuthorization后 UseRouting。 如果应用使用CORS功能,如[EnableCors],将放置UseCors下一步。 替换UseMvc或UseSignalR与UseEndpoints。 以下是一种Startup.Configure典型的 ASP.NET Core 2.2 应用中:

  现在的控制器映射内发生UseEndpoints。 添加MapControllers如果应用使用属性路由。 由于路由包括对许多框架在 ASP.NET Core 3.0 或更高版本的支持,添加属性路由的控制器是参加。 将为以下内容: MapRoute 使用 MapControllerRoute MapAreaRoute 使用 MapAreaControllerRoute 由于路由现在包括对不止是 MVC 的支持,已更改了术语进行明确说明他们所做的这些方法。 如传统路由MapControllerRoute / MapAreaControllerRoute / MapDefaultControllerRoute它们要添加的顺序应用。 将第一位更具体的路由 (如某一区域的路由)。 如下示例中: […]

VirtualBox打开虚拟电脑提示Call to NEMR0InitVMPart2 failed: VERR_NEM_INIT_FAILED (VERR_NEM_VM_CREATE_FAILED)

不能为虚拟电脑 CentOS7a 打开一个新任务. Call to NEMR0InitVMPart2 failed: VERR_NEM_INIT_FAILED (VERR_NEM_VM_CREATE_FAILED).

  解决方案:禁用Hyper-V 以管理员身份运行cmd输入

  重启电脑 ———————————————— 版权声明:本文为CSDN博主「1home」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_45673166/article/details/120982710

input [type=search] 搜索框去掉默认边框和旁边的小图标

input[type="search"]{-webkit-appearance:none;} input::-webkit-search-cancel-button {display: none;} http://www.html-5.cn/WebApp/css/10243.html ———————————————— 版权声明:本文为CSDN博主「LYC_2011_ACM」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/LYC_2011_ACM/article/details/9149071

Linux zip打包排除某个目录或只打包某个目录

需求:zip打包某个目录但是要排除目录下某个文件或者某个目录。

-x参数后加要排除的文件或目录的完整路径。注意引号不可少。   需求:zip打包只打包某个目录下单个目录(其实这个有点多余,直接打包这个目录就是了,应用的场景就是能保留目录树)

-i参数后加要打包的文件或目录的完整路径。注意引号不可少。   补充zip的相关参数:

  from:https://www.cnblogs.com/yuanwanli/p/12771220.html

vim命令替换操作

替换当前行第一个 vivian为sky

  替换当前行所有 vivian为sky

  替换第 n 行开始到最后一行中,每一行的第一个vivian为sky

  替换第 n 行开始到最后一行中,每一行所有vivian为sky n为数字,若n为.,表示从当前行开始到最后一行

  替换每一行的第一个vivian为sky(等同于 :g/vivian/s//sky/)

  替换每一行中所有 vivian为sky(等同于 :g/vivian/s//sky/g)

    from:https://www.cnblogs.com/configure/p/10233565.html

Vue解决报错8_打包时TyeError: Class extends value undefined is not a constructor or null

一、问题描述 执行 npm run build:prod

执行num run build:prod 报错,但是npm run dev没问题 二、解决 TypeError: Class extends value undefined is not a constructor or null at Object.<anonymous> (C:\Users\司超龙\IdeaProjects\vue\base_education_vue\base_education_third_3.0+\grass-roots teaching system\node_modules\mini-css-extract-plugin\dist\CssDependency.js:12:46) CssDependency的问题,依赖包不兼容 执行npm add webpack@4.5.0,解决   from:https://blog.csdn.net/qq_24654501/article/details/115254960

docker logs 查看实时日志

docker logs -f -t --since="2017-05-31" --tail=10 edu_web_1   --since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志。 -f : 查看实时日志 -t : 查看日志产生的日期 -tail=10 : 查看最后的10条日志。 edu_web_1 : 容器名称   from:https://www.cnblogs.com/qufanblog/p/6927411.html

MYSQL设置触发器权限问题的解决方法

本文实例讲述了MYSQL设置触发器权限的方法,针对权限错误的情况非常实用。具体分析如下: mysql导入数据提示没有SUPER Privilege权限处理,如下所示:

  导入function 、 trigger 到 MySQL database,报错:

  原因: function / trigger 中有dangerous statements修改数据库,错误只在启用binary logging选项进行主从复制的服务器上出现。 解决方法如下: 1)导入数据的用户不仅需要CREATE ROUTINE, ALTER ROUTINE, CREATE TRIGGER, ALTER TRIGGER, CREATE FUNCTION 和 ALTER FUNCTION 权限,还需要SUPER privileges 权限,使用超级用户导入数据。 2)让所有用户具有执行类似functions的权限,危险,不推荐,

  3)如果不需要复制,或者是从库,关闭binlog,

  希望本文所述对大家的MySQL数据库设计有所帮助。 from:https://www.jb51.net/article/54635.htm

Centos7上安装docker

Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。 社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。  一、安装docker 1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。 通过 uname -r 命令查看你当前的内核版本

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

3、卸载旧版本(如果安装过旧版本的话)

4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

5、设置yum源

6、可以查看所有仓库中所有docker版本,并选择特定版本安装

7、安装docker

8、启动并加入开机启动

9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

   二、问题 1、因为之前已经安装过旧版本的docker,在安装的时候报错如下:

2、卸载旧版本的包

3、再次安装docker

  from:https://www.cnblogs.com/yufeng218/p/8370670.html

领导:谁再用定时任务实现关闭订单,立马滚蛋!

在电商、支付等领域,往往会有这样的场景,用户下单后放弃支付了,那这笔订单会在指定的时间段后进行关闭操作,细心的你一定发现了像某宝、某东都有这样的逻辑,而且时间很准确,误差在1s内;那他们是怎么实现的呢? 一般的做法有如下几种 定时任务关闭订单 rocketmq延迟队列 rabbitmq死信队列 时间轮算法 redis过期监听 一、定时任务关闭订单(最low) 一般情况下,最不推荐的方式就是关单方式就是定时任务方式,原因我们可以看下面的图来说明 我们假设,关单时间为下单后10分钟,定时任务间隔也是10分钟;通过上图我们看出,如果在第1分钟下单,在第20分钟的时候才能被扫描到执行关单操作,这样误差达到10分钟,这在很多场景下是不可接受的,另外需要频繁扫描主订单号造成网络IO和磁盘IO的消耗,对实时交易造成一定的冲击,所以PASS 二、rocketmq延迟队列方式 延迟消息 生产者把消息发送到消息服务器后,并不希望被立即消费,而是等待指定时间后才可以被消费者消费,这类消息通常被称为延迟消息。 在RocketMQ开源版本中,支持延迟消息,但是不支持任意时间精度的延迟消息,只支持特定级别的延迟消息。 消息延迟级别分别为1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h,共18个级别。 发送延迟消息(生产者)

  消费延迟消息(消费者)

  实现监听类,处理具体逻辑

 

  这种方式相比定时任务好了很多,但是有一个致命的缺点,就是延迟等级只有18种(商业版本支持自定义时间),如果我们想把关闭订单时间设置在15分钟该如何处理呢?显然不够灵活。 三、rabbitmq死信队列的方式 Rabbitmq本身是没有延迟队列的,只能通过Rabbitmq本身队列的特性来实现,想要Rabbitmq实现延迟队列,需要使用Rabbitmq的死信交换机(Exchange)和消息的存活时间TTL(Time To Live) 死信交换机 一个消息在满足如下条件下,会进死信交换机,记住这里是交换机而不是队列,一个交换机可以对应很多队列。 一个消息被Consumer拒收了,并且reject方法的参数里requeue是false。也就是说不会被再次放在队列里,被其他消费者使用。 上面的消息的TTL到了,消息过期了。 队列的长度限制满了。排在前面的消息会被丢弃或者扔到死信路由上。 死信交换机就是普通的交换机,只是因为我们把过期的消息扔进去,所以叫死信交换机,并不是说死信交换机是某种特定的交换机 消息TTL(消息存活时间) 消息的TTL就是消息的存活时间。RabbitMQ可以对队列和消息分别设置TTL。对队列设置就是队列没有消费者连着的保留时间,也可以对每一个单独的消息做单独的设置。超过了这个时间,我们认为这个消息就死了,称之为死信。如果队列设置了,消息也设置了,那么会取值较小的。所以一个消息如果被路由到不同的队列中,这个消息死亡的时间有可能不一样(不同的队列设置)。这里单讲单个消息的TTL,因为它才是实现延迟任务的关键。

  可以通过设置消息的expiration字段或者x-message-ttl属性来设置时间,两者是一样的效果。只是expiration字段是字符串参数,所以要写个int类型的字符串:当上面的消息扔到队列中后,过了60秒,如果没有被消费,它就死了。不会被消费者消费到。这个消息后面的,没有“死掉”的消息对顶上来,被消费者消费。死信在队列中并不会被删除和释放,它会被统计到队列的消息数中去 处理流程图 创建交换机(Exchanges)和队列(Queues) 创建死信交换机 如图所示,就是创建一个普通的交换机,这里为了方便区分,把交换机的名字取为:delay 创建自动过期消息队列 这个队列的主要作用是让消息定时过期的,比如我们需要2小时候关闭订单,我们就需要把消息放进这个队列里面,把消息过期时间设置为2小时 创建一个一个名为delay_queue1的自动过期的队列,当然图片上面的参数并不会让消息自动过期,因为我们并没有设置x-message-ttl参数,如果整个队列的消息有消息都是相同的,可以设置,这里为了灵活,所以并没有设置,另外两个参数x-dead-letter-exchange代表消息过期后,消息要进入的交换机,这里配置的是delay,也就是死信交换机,x-dead-letter-routing-key是配置消息过期后,进入死信交换机的routing-key,跟发送消息的routing-key一个道理,根据这个key将消息放入不同的队列 创建消息处理队列 这个队列才是真正处理消息的队列,所有进入这个队列的消息都会被处理 消息队列的名字为delay_queue2 消息队列绑定到交换机 进入交换机详情页面,将创建的2个队列(delayqueue1和delayqueue2)绑定到交换机上面 自动过期消息队列的routing key 设置为delay 绑定delayqueue2 delayqueue2 的key要设置为创建自动过期的队列的x-dead-letter-routing-key参数,这样当消息过期的时候就可以自动把消息放入delay_queue2这个队列中了 绑定后的管理页面如下图: 当然这个绑定也可以使用代码来实现,只是为了直观表现,所以本文使用的管理平台来操作 发送消息

  设置了让消息6秒后过期 注意:因为要让消息自动过期,所以一定不能设置delay_queue1的监听,不能让这个队列里面的消息被接受到,否则消息一旦被消费,就不存在过期了 接收消息 接收消息配置好delay_queue2的监听就好了

  […]

@RequestMapping 使用详解

这一节虽然简单,但是很繁琐,可以先了解 @RequestMapping 的使用,不是很明白也没有关系,先继续往下学习,等你回头再看一遍的时候,你会发现 @RequestMapping 竟然是如此的简单! @RequestMapping可以在控制器类上或者控制器方法上使用。 在类的级别上的注解会将一个特定请求或者请求模式映射到一个控制器之上。之后你还可以另外添加方法级别的注解来进一步指定到处理方法的映射关系。 基础用法: 下面的 @RequestMapping("/index") 等同于 @RequestMapping(value = "/index")

  method 参数支持:GET, PUT, POST, DELETE 以及 PATCH。使用 method 可以限制接受的请求类型。 hello() 方法将只接受请求方式为 GET 方式,请求地址为:/index/hello 的请求。 world() 方法将只接受请求方式为 POST 方式,请求地址为:/index/world 的请求。 @GetMapping("/hello") 等同于 @RequestMapping(value="/hello", method=RequestMethod.GET) @PostMapping("/world") 等同于 @RequestMapping(value="/world", method=RequestMethod.POST) 映射多个地址: @RequestMapping 还可以将多个请求映射到一个方法上,只需要给 value 来指定一个包含多个路径的列表。

  URI模板: URI模板可以为快速访问 @RequestMapping 中指定的URL的一个特定的部分提供很大的便利。 使用 @PathVariable 可以获取到 {name} 的值,并在控制台进行输出。比如请求地址为:http://localhost:8080/SpringMVC/hello/jack 那么控制台上将会把 jack 进行输出。

  如果路径中的URI变量和方法中的参数名不一样的话,那么需要在 @PathVariable 中显示的绑定参数。

  一个方法可以拥有任意数量的 @PathVariable 注解:

  @PathVariable 可以被应用于所有 简单类型 的参数上,比如 int、long、Date 等类型。Spring会自动地帮你把参数转化成合适的类型,如果转换失败,就抛出一个 TypeMismatchException。如果你需要处理其他数据类型的转换,也可以注册自己的类。 带正则表达式的URI模板: 你可以使用正则表达式来准确的描述可以接受的请求路径:

  Ant风格的路径模式: 除了URI模板外,@RequestMapping注解还支持Ant风格的路径模式(如/hello/*.do等)。不仅如此,还可以把URI模板变量和Ant风格的glob组合起来使用(比如/hello/*/user/{userId}这样的用法等)。其中*则表示任意字符串。但是遇到 / 那么就会认为是下一部分的URI,所以 * 中不能有 / 。

  那么想要匹配带 / 的路径那该怎么办?可以使用 ** 来进行匹配。例如 /hello/**/user/{userId} 则会匹配 /hello/ 和 /user/{userId} 之间的部分。

  路径样式的匹配(Path Pattern Comparison): 当一个URL同时匹配多个模板(pattern)时,我们将需要一个算法来决定其中最匹配的一个。 URI模板变量的数目和通配符数量的总和最少的那个路径模板更准确。举个例子,/hotels/{hotel}/*这个路径拥有一个URI变量和一个通配符,而/hotels/{hotel}/**这个路径则拥有一个URI变量和两个通配符,因此,我们认为前者是更准确的路径模板。 如果两个模板的URI模板数量和通配符数量总和一致,则路径更长的那个模板更准确。举个例子,/foo/bar*就被认为比/foo/*更准确,因为前者的路径更长。 如果两个模板的数量和长度均一致,则那个具有更少通配符的模板是更加准确的。比如,/hotels/{hotel}就比/hotels/*更精确。 […]