MiniProfiler 是一款性能分析的轻量级程序,可以基于action(request)记录每个阶段的耗时时长,还是可以显示访问数据库时的SQL等。
系列教程 本篇主要介绍.Net Core 3.1下如何使用Swagger集成MiniProfiler来对我们的WebAPI接口进行监控。
安装Nuget Install-Package MiniProfiler.AspNetCore.Mvc Install-Package MiniProfiler.EntityFrameworkCore MiniProfiler.EntityFrameworkCore 用来监控EF Core生成的SQL
配置 在startup.cs 中配置服务ConfigureServices
services.AddMiniProfiler(options => { options.RouteBasePath = /profiler; }).AddEntityFramework(); 激活中间件,启用MiniProfiler服务,放在UseEndpoints方法之前。
app.UseMiniProfiler(); 配置Swagger页面 先下载自定义Swagger页面 https://github.com/xuke353/swaggerui/blob/master/index.html 将该文件放到API层的根目录下,设置文件属性为【嵌入的资源】 在Startup.cs文件中,我们需要修改UseSwaggerUI中间件的配置 app.UseSwaggerUI(c => { c.IndexStream = () => GetType().GetTypeInfo().Assembly.GetManifestResourceStream(AdmBoots.Api.index.html); c.RoutePrefix = string.Empty; c.SwaggerEndpoint(/swagger/v1/swagger.json, My API V1); }); 注意:这里AdmBoots.Api是项目的命名空间名 当前这个时候还不能使用,我们还需要在 Swagger的index.html中进行配置,以便它能在 Swagger 中使用。 重点来了 我们首先需要获取用于显示MiniProfiler的html代码片段,随便写个控制器,使用MiniProfiler的API输出一下就可以了。
[HttpGet(nameof(GetSwaggerJs))] public IActionResult GetSwaggerJs() { var html = MiniProfiler.
VM16 + CentOS7 版 Linux 下安装 VASP6.1.2。
一、准备工作 主要是各种所需软件的安装和上传 VASP 相关的安装包。
1 VM16 的安装 虚拟机的安装,这里选用的是 VM16 版本,可以一并把 Linux 图形化界面安装上去。 双击一步一步往下安装,点击完成就行了,这里不再展示。
2 Linux 系统安装 安装所用的 Linux 系统相关环境
2.1 Linux 镜像安装 打开 VM16 点击创建新的虚拟机 会进入虚拟机的安装向导里,选择典型安装,点击下一步 选择程序光盘映像文件安装,在这里选择附带的包里的 CentOS-7-x86_64-DVD-1908.iso 这个文件,点击下一步 填写全名,用户名,密码,和确认密码这些选项框信息,点击下一步 选择 Linux 系统安装在哪里,选择一个内存空间比较大的盘,不要选 C 盘,点击下一步 Linux 系统的可用空间,因为安装 VASP 所需要的的那个英特尔环境会占用很大空间,所以我们这边选择 60GB 内存,防止因为空间不够导致安装失败。点击下一步 点击完成,开始安装,不用动它,可能会提示是否安装虚拟工具之类的,点否就行。这个时间有点久,耐心等待,这里用了不到 20 分钟。 2.2 进入 Linux 系统 安装成功,点击头像输入密码 123456,点击 Sign in,出现引导窗口,关闭即可。 2.3 安装相关环境 安装 C/C++ 的环境,以及 vim 编辑器,执行一下三个命令(一行一个命令分布执行,前面加 # 号的不是命令,只是注释,不用执行,下面所有命令框都是这样的)
2、JavaScript能做些什么? 2.1 直接写入 HTML 输出流 .html代码
<!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title>js直接写入练习</title> </head> <body> <p> JavaScript 能够直接写入 HTML 输出流中: </p> <script> document.write(<h1>这是一个标题</h1>); document.write(<p>这是一个段落。</p>); </script> <p> 只能在 HTML 输出流中使用 <strong>document.write</strong>。 如果在文档已加载后使用它(比如在函数中),会覆盖整个文档。 </p> </body> </html> 生成页面效果 需要注意的是:只能在 HTML 输出中使用 document.write。如果在文档加载后使用该方法,会覆盖整个文档。
2.2 对事件的反应(以alert为例) .html代码
<!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <title>alert练习</title> </head> <body> <h1>我的第一个 JavaScript</h1> <p> JavaScript 能够对事件作出反应。比如对按钮的点击: </p> <button type=button onclick=alert('欢迎学习JavaScript!')>点我获取网页提示</button> </body> </html> 生成页面效果 2.
https://kodango.com/avoid-repeated-source-in-shell
${!_sourced_}是间接引用,这个执行没问题,source 会报错 bad substitution _sourced_=__sourced_$$__ echo Flag variable $_sourced_=${!_sourced_} if [ -z ${!_sourced_} ]; then eval $_sourced_=1 echo It is the first time to source script else echo The script have been sourced fi 改为下面就可以正常source
_sourced_=__sourced_$$__ sourced=`eval echo '$'$_sourced_` echo Flag variable $_sourced_=${sourced} if [ -z ${sourced} ]; then eval $_sourced_=1 echo It is the first time to source script else echo The script have been sourced fi 或者
Shell函数 系统函数 系统自带的函数,Linux自带的一些命令就是系统已经封装好的函数,下面简单介绍两个系统函数用法
basename:用于打印末尾目录或者文件的基本名称
查看基本用法
[root@zookeeper1 shell]# basename --help Usage: basename NAME [SUFFIX] or: basename OPTION... NAME... Print NAME with any leading directory components removed. If specified, also remove a trailing SUFFIX. Mandatory arguments to long options are mandatory for short options too. -a, --multiple support multiple arguments and treat each as a NAME -s, --suffix=SUFFIX remove a trailing SUFFIX -z, --zero separate output with NUL rather than newline --help 显示此帮助信息并退出 --version 显示版本信息并退出 Examples: basename /usr/bin/sort -> sort basename include/stdio.
删除指定日期分区表
-- t_log={data_dt, content} ,part20220101=分区名称 -- 分离分区 alter table t_log detach partition part20220101 into t_log_20220101; -- 删除分离出来的表 drop table t_log_20220101; -- 查看分区 select * from syscat.datapartition where tabname = 't_log';
Java泛型 目录 为什么要有泛型
在集合中使用泛型
自定义范型结构
泛型在继承上的体现
通配符的使用
泛型应用举例
1 为什么要有泛型 泛型:标签
泛型的设计背景
集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object, JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型。Collection<E>,List<E>, ArrayList<E> 这个<E>就是类型参数,即泛型。
泛型的概念
所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时(例如,继承或实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实际的类型参数,也称为类型实参)。
从JDK1.5以后,java引入了“参数化类型”的概念,允许我们在创建集合时再指定集合元素的类型,正如:List<String>,这表明该List只能保存字符串类型的对象。
JDK1.5改写了集合框架中的全部接口和类,为这些接口、类增加了泛型支持,从而可以在声明集合变量、创建集合对象时传入类型实参。
(类型不能是基本数据类型):整形可以把int改成Integer类。
2 在集合中使用泛型 package com.xue.java5; import org.junit.Test; import java.util.*; /** * Created with IntelliJ IDEA. * User: xinxueqi * Date: 2022/4/20 20:22 * Description: * 泛型的使用: * 1. jdk5.0 新增的特性 * 2. 在集合中使用泛型 * 总结: * 1) 集合接口或集合类在jdk5.
1. 安装node环境 http://nodejs.cn/download/ 傻瓜式安装后,管理员运行 cmd 通过 node -v 查看版本 由于现在版本的nodejs已经集成npm所以无需安装,可以用npm -v 查看版本 如果你安装的是旧版本的 npm,可以很容易得通过 npm 命令来升级,命令如下: npm install npm -g
2. 替换淘宝镜像 npm install -g cnpm --registry=https://registry.npmmirror.com 之后可以使用 cnpm 进行安装
3. 安装vue脚手架 cnpm install -g vue-cli 安装完整后,通过 vue -V 查看vue版本 4. 初始化vue项目 vue init webpack myproject 5. 安装依赖 运行 cnpm install 安装依赖项 6. 使用命令启动项目 cnpm run dev 7. 打包项目 npm run build 或者 cnpm 会编译打包到项目dist文件夹下,然后就可以部署到服务器上
主: # yum install -y ntp ntpdate # cat /etc/ntp.conf driftfile /var/lib/ntp/drift restrict default nomodify notrap nopeer noquery restrict 127.0.0.1 restrict ::1 server ntp1.aliyun.com iburst includefile /etc/ntp/crypto/pw keys /etc/ntp/keys disable monitor # systemctl start ntpd # ntpq -p# timedatectl 从: # yum install -y ntp ntpdate # cat /etc/ntp.conf driftfile /var/lib/ntp/drift restrict default nomodify notrap nopeer noquery restrict 127.0.0.1 restrict ::1 server 主IP iburst includefile /etc/ntp/crypto/pw keys /etc/ntp/keys disable monitor # systemctl start ntpd # ntpq -p # timedatectl 同步没成功:
-- 视图-- 准备数据create database if not exists mydb6_view;use mydb6_view;create table dept( deptno int primary key, dname varchar(20), loc varchar(20));insert into dept values(10, '教研部','北京'),(20, '学工部','上海'),(30, '销售部','广州'),(40, '财务部','武汉');
create table emp( empno int primary key, ename varchar(20), job varchar(20), mgr int, hiredate date, sal numeric(8,2), comm numeric(8, 2), deptno int,-- FOREIGN KEY (mgr) REFERENCES emp(empno), FOREIGN KEY (deptno) REFERENCES dept(deptno) ON DELETE SET NULL ON UPDATE CASCADE);insert into emp values(1001, '甘宁', '文员', 1013, '2000-12-17', 8000.