精华内容
下载资源
问答
  • 主要介绍了thinkphp中空模板与空模块的用法,以实例形式演示了空模板与空模块具体实现方法,一般空模块多用于系统找不到指定模块的情况,如定位错误页面与URL优化等情况,具有一定的实用价值,需要的朋友可以参考下
  • 中空氧化锌微球的碳模板法制备及其性能测试,岑远,胡军,中空氧化锌微球因为它的低密度,大比表面以及出色的表面渗透性,所以备受关注。由于中空氧化锌的种种性质所以经常被用于各种方面
  • 以SDS-PVP项链状软团簇为模板合成Cu2O中空亚微球,胡瑾,陈方博,在SDS-PVP水溶液中采用N2H4•H2O还原CuSO4,在pH 10±0.5、(40±1.0) oC条件下反应55 min得到橙色Cu2O溶胶,离心分离产物经XRD鉴定为Cu2O立方晶系�
  • 采用乳液聚合法合成聚苯乙烯微球,将其作为模板,以正硅酸乙酯和乙烯基三乙氧基硅烷为硅源,制备中空SiO2微球。采用透射电子显微镜对中空SiO2微球的形貌进行表征,并对中空SiO2微球的制备工艺进行优化。然后,采用...
  • 通过对模板法制备中空材料进行介绍,主要包括硬模板法(例如聚合物、无机非金属、金属粒子等化合物为模板)、软模板法(例如细菌、液滴、囊泡等为模板)这2种传统模板法,及无模板(例如Ostwald熟化技术)的制备方法,了解了...
  • 分子印迹聚醚砜中空纤维膜筛分性能研究,李浩程,余彬玉,以聚醚砜(PES)为基材,双酚A(BPA)为模板分子,利用相分离的原理,采用干-湿法制备BPA印迹中空纤维膜及空白对照膜,并制备了中空纤�
  • 以磺化聚苯乙烯为模板,酚醛树脂为前驱体,利用模板法制备了球壳厚度为50~85 nm的中空碳球。采用红外光谱(FT-IR)表征聚苯乙烯的磺化程度,并借助扫描电子显微镜(SEM)和透射电子显微镜(TEM)研究中空碳球的中空结构。...
  • 分子印迹聚醚砜中空纤维膜对双酚A的转运,王婷,余彬玉,以双酚A (BPA)为模板分子,采用干湿法制备了BPA印迹聚醚砜(PES)中空纤维膜,并制备了有效面积约200 cm2的滤器。通过中空纤维滤器研究�
  • 中空SiO2/PMA复合薄膜的制备及其阻尼性能,吕凤柱,张以河,为了制备性能优异的高分子基阻尼材料,采用模板法制备了粒径在50-70 nm的中空二氧化硅(SiO2),用3-丙烯酸酯丙氧基三甲氧基硅(KH-570)改性
  • 采用磺化聚苯乙烯(PS)微球为模板制备出了以 Fe3O4-PANi(聚苯胺)为壳,PS为核的具有核壳结构多功能 Fe3O4-PANi/PS复合微球.采用溶剂抽提溶解去除 PS核得到 Fe3O4-PANi具有导电导磁双功能中空微球.中空微球空 腔尺寸...
  • WO3/TiO2中空微球体的制备及其光催化性能,钟凌云,雷惊雷,以葡萄糖、钛酸四正丁酯和钨酸铵为原料,采用模板法及溶剂热法制备了WO3/TiO2中空微球体光催化剂,利用 X 射线衍射、场发射扫描电镜�
  • 通过模板法制备中空SiO2/Fe3O4磁性微球,采用分散聚合法制备了大尺寸的聚苯乙烯微球作为模板,以界面沉积法制备了Fe3O4/PS复合粒子,溶胶凝胶法制备SiO2/Fe3O4/PS微球;经过高温煅烧使模板聚苯乙烯分解,得到中空...
  • 八面体中空银纳米笼的高效合成及其表面增强拉曼性能研究,黄凤琴,郭林,以八面体Cu2O为模板,柠檬酸钠作为保护剂,NaBH4和AgNO3反应产生的银纳米颗粒在模板表面沉积形成银包覆氧化亚铜的核壳结构,最后用乙�
  • 以十二烷基硫酸钠(SDS)-聚乙烯吡咯烷酮(PVP)组成的项链状软物质团簇为可调性软模板,采用N2H4·H2O为还原剂,还原CuSO4制备Cu2O中空亚微球。xRD结果确定产物为Cu2O立方晶系晶体;表面孔径吸附测试确定其表面多孔...
  • 以无水碳酸钠、氯化钙为原料,磺化脱氢松香酸单钠盐为模板,油酸为有机质,制备了中空球形碳酸钙。采用SEM分析其形貌,碳酸钙为中空球形结构,球形粒径为2~3μm,中空直径约为1μm。FTIR、TG分析表明有机质已成功对...
  • SDS-PVP软团簇制备Cu2O中空亚微球及其光学性能研究,樊晔,冯冯,本文以十二烷基硫酸钠(SDS)-聚乙烯吡咯烷酮(PVP)组成的项链状软物质团簇为可调性软模板,采用N2H4•H2O为还原剂,还原CuSO4制备Cu2O中�
  • .net Core中间件实战

    2018-08-01 13:47:00
    新建一个ASP.NET Core Web Application 项目选中空模板 然后为项目添加一个Microsoft.Extensions.Logging.Console 由于我用的.net core1.1 则选择对应1.1版本 添加好了以后新建一个类...

       新建一个ASP.NET Core Web Application 项目选中空模板

    image.png

    image.png

     

    然后为项目添加一个Microsoft.Extensions.Logging.Console

    image.png

    由于我用的.net core1.1 则选择对应1.1版本

     

    添加好了以后新建一个类RequestIPMiddleware.cs

     

    using Microsoft.AspNetCore.Http;
    using Microsoft.Extensions.Logging;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    namespace xzyCore
    { 
      public class RequestIPMiddleware  
      {       
        private readonly RequestDelegate _next;
              
        private readonly ILogger _logger;
             
        public RequestIPMiddleware(RequestDelegate next, ILoggerFactory loggerFactory) {
            _next = next;
            _logger =loggerFactory.CreateLogger<RequestIPMiddleware>();
        }
             
        public async Task Invoke(HttpContext context) {      
            _logger.LogInformation("User IP:" + context.Connection.RemoteIpAddress.ToString());
            await _next.Invoke(context);
        } 
      }
    }

     

      然后在创建一个RequestIPExtensions.cs

    using Microsoft.AspNetCore.Builder;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    namespace xzyCore
    {
      public static class RequestIPExtensions  
      {       
        public static IApplicationBuilder UseRequestIP(this IApplicationBuilder builder) {
            return builder.UseMiddleware<RequestIPMiddleware>();      
        } 
      }
    }

    这样就编写好一个中间件了。

    在Startup.cs中添加app.UseRequestIP();

     // This method gets called by the runtime. Use this
    method to configure the HTTP request pipeline.   
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)     
    {
                loggerFactory.AddConsole();
                app.UseRequestIP();
                if(env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                } 
                app.Run(async (context) =>
                {
                   await context.Response.WriteAsync("Hello
    World!");
                });
    }

    然后在运行程序

    image.png

    成功运行,这里我们还可以对这个中间件进行进一步改进,增加更多的功能,如限制访问等。

     

    转载于:https://www.cnblogs.com/xuzeyu/p/9400793.html

    展开全文
  • 这项工作设计了一个简单,灵敏,低成本,一次性的电化学平台,通过使用中空的氧化锰@介Kong氧化硅(Mn3O4 @ SiO2)核壳纳米杂种作为敏感材料来检测抗生素利福平(RIF)。 通过一种简便的聚丙烯酸软模板法制备的Mn3O4...
  • 以有序介孔为模板,通过前驱体的填充、还原、去模板化等‘纳米铸造’工艺,可以获得各种有序孔纳米晶,包括金属氧化物,金属及合金等。然而,时至今日,与纳米晶在自由溶液体系中成功实现其控制合成不同的是,通过...

    自上个世纪九十年代,有序介孔二氧化硅的发现至今,介孔因其在生物传感、分离、吸附、催化等领域广泛的应用前景而吸引了研究人员浓厚的兴趣。以有序介孔为模板,通过前驱体的填充、还原、去模板化等‘纳米铸造’工艺,可以获得各种有序孔纳米晶,包括金属氧化物,金属及合金等。然而,时至今日,与纳米晶在自由溶液体系中成功实现其控制合成不同的是,通过纳米铸造的办法,在介孔通道的受限空间内调控金属纳米晶的生长仍是个巨大挑战。这是由于金属在二氧化硅模板内具有较高的迁移能力,导致金属前驱体的引入及后续还原中抑制产物向介孔模板外迁移成为困难。

    在过去几年,某大学教授课题组一直专注于有序介孔在等离激元纳米光学中的应用研究。课题组利用纳米铸造的办法,获得了贵金属纳米粒子超晶格结构,借助其超小的纳米粒子间距(~2纳米)实现了对光的捕获与增强,获得了高灵敏度的表面增强拉曼散射光谱。这些研究是国际上较早的将介孔纳米铸造技术引入等离激元纳米光学的典型工作。

    近日,利用分子筛为模板获得了多种组分、高纯、单分散的高质量贵金属纳米结构,成功的解决了贵金属纳米铸造过程中,产物向介孔模板外扩散这一长期的技术难题。如图1所示,当金属前驱体离子在分子筛模板内被还原剂还原成原子的过程中,金属原子或离子常常会扩散迁移到模板外面,形成在模板外面的生长,而如果将预先填充有金属前驱体的分子筛模板进入到一种有机溶剂中,金属前驱体不能溶解进入该溶剂而还原剂分子可以穿过该溶剂进入分子筛中,将分子筛中的金属离子还原成原子并生长成纳米晶。

    1.通过‘软包裹’的方案控制纳米晶在分子筛内的可控合成示意图。

    该方法不仅可以控制纯金属在分子筛模板中生长,而且可以控制制备合金纳米,如下面图2所示的就是该方法制备出的去除分子筛模板之后的AuAg合金纳米结构。

    2.去除分子筛模板之后的AuAg纳米结构。

    下面图3显示的是在分子筛模板中制备的各种形貌的Au颗粒,从骨头状的纳米颗粒到多孔超结构颗粒,可控性的制备多种纳米结构形貌。

    3.分子筛模板中制备的多种形貌的Au纳米颗粒。

    通过该方法能够控制合成出的孔道结构高度均匀一致的各种贵金属超结构纳米颗粒将在纳米光学、纳米生物医学、以及化学催化等众多领域有着潜在应用价值。如图4展示了AuAg超结构纳米颗粒在甲醇的电化学催化氧化中的优异性能。

    4.AuAg纳米超结构在甲醇的电催化氧化中的性能。

    实验证实,‘软包裹’方法对多种分子筛模板中制备多种纳米都具有很好的控制合成效果,具有非常广泛的适用性。

    我们有糖产品、科研试剂、多肽、石墨烯、MAX相陶瓷,碳纳米管、原料药、钙钛矿、量子点

    相关产品

    纳米SiO2接枝超支化聚酰胺

    氨基化二氧化硅接枝青冈栎单宁

    纳米SiO2接枝V型聚合物杂化

    SiO2接枝聚酰胺固化剂增韧改性环氧树脂

    纳米SiO2接枝丙烯酸树脂

    SiO2接枝水性丙烯酸环氧树脂的复合防腐

    SiO2接枝聚合物的发光水凝胶

    聚芳酯树枝状分子接枝改性纳米二氧化硅

    纳米SiO2表面接枝聚合改性及其聚丙烯基复合物

    改性纳米SiO2表面自由基接枝PMMA

    纳米氧化硅表面阴离子接枝聚合苯乙烯

    超支化聚(胺-酯)接枝改性纳米二氧化硅

    PVC/SiO2复合物

    聚甲醛/低密度聚乙烯接枝纳米二氧化硅复合物(POM/PE—LD-g—SiO2)

    超支化聚乙烯亚胺接枝二氧化硅

    以上源于齐岳生物

    zl 04.22

    展开全文
  • 其中重点关于核-壳结构凝胶微球的制备,并以此为模板制备包覆复合微球和中空微球,实现复合微球的形貌和特征尺寸的控制.通过化学改性对单分散聚苯乙烯胶体微粒进行处理,制备了具有核-壳结构的单分散凝胶粒子.以核...
  • 以苯乙烯-丙烯酸聚合物微球为模板,利用核/壳法制备了不同粒径的CdS中空球壳。首次采用了酸性萃取剂二(2-乙基己基)磷酸(P204)的钠盐作为制备苯丙颗粒模板的乳化剂。当乳化剂的质量分数在1.56%~3.54%范围内逐渐...
  • #include //在本程序中空==0 using namespace std; #define FLASE 0 #define TRUE 1 #define ERROR 0 #define OK 1 typedef int TElemType; typedef int Status; typedef struct BiTNode { TEl
    #include <iostream>
    #include <cstdio>
    #include <malloc.h>   //在本程序中空==0
    using namespace std;
    #define FLASE 0
    #define TRUE 1
    #define ERROR 0
    #define OK 1
    typedef int TElemType;
    typedef int Status;
    typedef struct BiTNode
    {
        TElemType data; //结点的值
        BiTNode *lchild, *rchild;//左右孩子指针
    }BiTNode,*BiTree;
    typedef BiTree QElemType;
    typedef struct QNode
    {
       QElemType data;
       QNode *next;
    }*QueueRtr;
    struct LinkQueue
    {
        QueueRtr ifront,irear;
    };
    void DestroyBiTree(BiTree &T);
    void InitQueue(LinkQueue &Q)
    {
        Q.ifront=Q.irear=(QueueRtr)malloc(sizeof(QNode));//生成头结点
        if(!Q.ifront)
            exit(0);
        Q.ifront->next=NULL;//头结点的next域为空
    }
    void DestroyQueue(LinkQueue &Q)
    {
        while(Q.ifront) //Q.ifront不为空
        {
            Q.irear=Q.ifront->next;//Q.rear指向Q.front的下一个结点
            free(Q.ifront);//释放Q.front所指的结点
            Q.ifront=Q.irear; //Q.front指向Q,front的下一个结点
        }
    }
    
    Status QueueEmpty(LinkQueue Q)
    {
        if(Q.ifront->next==NULL)
            return TRUE;
        else
            return FLASE;
    }
    int QueueLength(LinkQueue Q)
    {
        int i=0;
        QueueRtr p=Q.ifront;//p指向头结点
        while(Q.irear!=p)  //p所指的不是尾结点
        {
            i++;
            p=p->next; //p指向下一个结点
        }
        return i;
    }
    void EnQueue(LinkQueue &Q,QElemType e)
    {//插入元素e为队列的新的队尾元素
        QueueRtr p;
        p=(QueueRtr)malloc(sizeof(QNode));
        if(!p)
            exit(0);
        p->data=e;    //将e赋值给新结点
        p->next=NULL;   //新结点的指针域为空
        Q.irear->next=p;   //原队尾结点的指针指向新结点
        Q.irear=p;  // 尾指针指向新结点
    }
    Status DeQueue(LinkQueue &Q,QElemType  &e)
    {//若队列Q不空,删除Q的队头元素,用e返回其值
        QueueRtr p;
        if(Q.ifront==Q.irear)
            return ERROR;
        p=Q.ifront->next;//p指向队头
        e=p->data;   //赋值
        Q.ifront->next=p->next;//头节点指向下一个结点
        if(Q.irear==p)  //s删除的是队尾结点
            Q.irear=Q.ifront;
        free(p);
        return OK;
    }
    void QueueTraverse(LinkQueue &Q)
    {
        QueueRtr p=Q.ifront->next;
        while(p)
        {
            printf("%d  ",p->data);
            p=p->next;
        }
        printf("\n");
    }
    BiTree Point(BiTree T,TElemType s)
    {//返回二叉树T中指向元素之为s的结点的指针
        LinkQueue q;
        QElemType a;
        if(T)  //非空树
        {
            InitQueue(q);//初始化队列
            EnQueue(q,T);//根指针入队
            while(!QueueEmpty(q)) //队不为空
            {
                DeQueue(q,a); //出队,队列元素赋值给a;
                if(a->data==s)   //a所指的结点的值为s
                    {
                        DestroyQueue(q);//销毁队列s
                        return a;
                    }
                if(a->lchild) //有左孩子
                EnQueue(q,a->lchild);  //入队左孩子
                if(a->rchild) //有右孩子
                EnQueue(q,a->rchild);  //入队右孩子
    
            }
            DestroyQueue(q); //销毁队列q;
    
        }
        return NULL; //二叉树中没有元素值为s的结点
    }
    TElemType LeftChild(BiTree T,TElemType e)
    {//返回e的左孩子,若e无左孩子,则返回空
        BiTree a;
        if(T) //非空树
        {
            a=Point(T,e);   //a是指向结点e的指针;
            if(a&&a->lchild) //T中存在结点e且e存在左孩子
                return a->lchild->data;  //返回e的左孩子的值
        }
        return 0;
    
    }
    TElemType RightChild(BiTree T,TElemType e)
    {//返回e的右孩子,若e无右孩子,则返回空
        BiTree a;
        if(T) //非空树
        {
            a=Point(T,e);   //a是指向结点e的指针;
             if(a&&a->rchild) //T中存在结点e且e存在右孩子
                return a->rchild->data;  //返回e的右孩子的值
        }
        return 0;
    }
    Status DeleteChild(BiTree p,int LR)
    {//根据LR为0或1,p删除T中所指结点的左右子树
        if(p) //p不为空
        {
            if(LR==0)//删除左子树
              DestroyBiTree(p->lchild); //清空p所指结点的左子树
            else if(LR==1)//删除右子树
                DestroyBiTree(p->rchild); //清空p所指结点的右子树
            return OK;
        }
        return ERROR;
    }
    void InitBiTree(BiTree &T)
    {
        T=NULL;
    }
    void DestroyBiTree(BiTree &T)
    {
        if(T){  //非空树
            DestroyBiTree(T->lchild); //递归销毁左子树,如无左子树,则不执行任何操作
            DestroyBiTree(T->rchild); //递归销毁右子树,如无右子树,则不执行任何操作
            free(T);  //释放根节点
            T=NULL;   //空指针赋值
        }
    }
    void PreOrderTraverse(BiTree T)//先序递归遍历T
    {
        if(T)
        {
            printf("%d",T->data);   //先访问根节点
            PreOrderTraverse(T->lchild);  //再先序遍历左子树
            PreOrderTraverse(T->rchild);   //最后先序遍历右子树
        }
    }
    void InOrderTraverse(BiTree T)//中序递归遍历T
    {
        if(T)
        {
            InOrderTraverse(T->lchild);  //先遍历左子树
            printf("%d",T->data);     //在访问根节点
            InOrderTraverse(T->rchild);  //最后遍历右子树
        }
    }
    void PostOrderTraverse(BiTree T)
    {
    if(T)
        {
            PostOrderTraverse(T->lchild);  //先遍历左子树
            PostOrderTraverse(T->rchild);  //再遍历右子树
            printf("%d",T->data);     //在访问根节点
        }
    }
    Status BiTreeEmpty(BiTree T)
    {
        if(T)
            return FLASE;
        else
            return TRUE;
    }
    int BiTreeDepth(BiTree T)
    {
        int i,j;
        if(!T)
        return 0;//树的深度为0
        i=BiTreeDepth(T->lchild); //i为左子树的深度
        j=BiTreeDepth(T->rchild); //j为右子树的深度
        return i>j?i+1:j+1;  //T的深度为其左右子树的深度中的大者+1
    }
    TElemType Root(BiTree T)//返回T的根
    {
        if(BiTreeEmpty(T)) //二叉树为空
         return  0;
        else
        return T->data;
    }
    TElemType Value(BiTree p) //二叉树T存在,p指向T中的某个结点,结果返回p所指的结点
    {
        return p->data;
    }
    void  Assign(BiTree p,TElemType value)
    {
        p->data=value;
    }
    void CreateBiTree(BiTree &T)  //按照先序次序输入二叉树中结点的值
    {
       TElemType ch;
       scanf("%d",&ch);
       if(ch==0)  //当输入的值为0的时候结点的值为空
        T=NULL;
       else  //结点值不为空
       {
           T=(BiTree)malloc(sizeof(BiTNode));  //生成根节点
           if(!T)
            exit(0);
            T->data=ch;
            CreateBiTree(T->lchild);   //递归构造左子树
            CreateBiTree(T->rchild);    //递归构造右子树
       }
    }
    void LeveOrderTraverse(BiTree T)
    {//层序遍历T
        LinkQueue q;
        QElemType a;
        if(T)
        {
            InitQueue(q);
            EnQueue(q,T);  //根指针入队
           while(!QueueEmpty(q))  //队列不空
           {
               DeQueue(q,a);   //出队元素指针,赋给a
               printf("%d",a->data);
               if(a->lchild!=NULL)   //a有左孩子
                EnQueue(q,a->lchild);  //入队a的左孩子
               if(a->rchild!=NULL)  //a有右孩子
                EnQueue(q,a->rchild);  //入队a的右孩子
           }
           printf("\n");
           DestroyQueue(q);
        }
    
    }
    
    TElemType Parent(BiTree T,TElemType e)
    {//若e是T的非根节点,则返回他的双亲,否则返回空
      LinkQueue q;
      QElemType a;
      if(T)
      {
          InitQueue(q);//初始化队列
          EnQueue(q,T);  //树根指针入队
          while(!QueueEmpty(q)); //队不空
          {
              DeQueue(q,a); //出队.队列元素赋给a
              if((a->lchild&&a->lchild->data==e)||(a->rchild&&a->rchild->data==e))
                 return a->data; //返回e的双亲的值
              else//若未找到e,则入队其左右孩子指针(如果非空)
              {
                  if(a->lchild)  //a有左孩子
                    EnQueue(q,a->lchild); //入队左孩子指针
                  else if(a->rchild)
                    EnQueue(q,a->rchild);
              }
    
          }
      }
      return 0;
    }
    TElemType LeftSibling(BiTree T,TElemType e)
    {//返回e的左兄弟,若e是T的左孩子或无左兄弟,返回空
       TElemType a;
       BiTree p;
       if(T)
       {
          a=Parent(T,e); //a为e的双亲
          if(a!=0) //找到e的双亲
          {
              p=Point(T,a);//p为指向结点a的指针
              if(p->lchild&&p->rchild&&p->rchild->data==e)//p存在左右孩子且右孩子是e
                return p->lchild->data;  //返回p的左孩子
          }
       }
       return 0;
    }
    TElemType RightSibling(BiTree T,TElemType e)
    {//返回e的右兄弟,若e是T的右孩子或无右兄弟,返回空
       TElemType a;
       BiTree p;
       if(T)
       {
          a=Parent(T,e); //a为e的双亲
          if(a!=0) //找到e的双亲
          {
              p=Point(T,a);//p为指向结点a的指针
              if(p->lchild&&p->rchild&&p->lchild->data==e)//p存在左右孩子且右孩子是e
                return p->rchild->data;  //返回p的左孩子
          }
       }
       return 0;
    }
    Status InsertChild(BiTree p,int LR,BiTree c)
    {//LR为0或1,插入c为T中所指结点的左或右子树,p所指结点的原有左或右子树则成为C的右子树
        if(p)
        {
            if(LR==0)//把二叉树c插为p所指向结点的左子树
            {
                c->rchild=p->lchild;//p所指向的原有左子树成为C的右子树
                p->lchild=c;//二叉树c成为p的左子树
            }
            else//把二叉树c插为p所指结点的右子树
            {
                c->rchild=p->rchild;//p所指结点的原有右子树成为c的右子树
                p->rchild=c;//二叉树c成为p的右子树
    
            }
            return OK;
        }
        return ERROR;
    }
    int main()
    {
        int i;
        BiTree T;
        TElemType e1;
        InitBiTree(T);  //初始化二叉树T
        printf("构造二叉树后,树是否为空?%d(1:是 0:否) 树的深度%d\n",BiTreeEmpty(T),BiTreeDepth(T));
        e1=Root(T);
        if(e1!=0)
            printf("二叉树的根是%d\n",e1);
        else
            printf("无根\n");
        CreateBiTree(T);
         printf("建立二叉树后,树是否为空?%d(1:是 0:否) 树的深度\n",BiTreeEmpty(T),BiTreeDepth(T));
        e1=Root(T);
        if(e1!=0)
            printf("二叉树的根是%d\n",e1);
        else
            printf("无根\n");
        printf("先序遍历递归二叉树:\n");
        PreOrderTraverse(T); printf("\n");
        printf("中序遍历递归二叉树:\n");
        InOrderTraverse(T);  printf("\n");
        printf("后序遍历递归二叉树:\n");
        PostOrderTraverse(T); printf("\n");
    
    }
    

    展开全文
  • 中空结构被认为是有前途的电极材料。 它们提高的表面积/体积比导致电解质和电极之间的接触面积增加,从而使活性材料具有更高的可及性。 在这里,一种简便的水热方法被用来合成由排列良好的纳米纤维组装的空心Cu2O球...
  • 限制域生长法制备具有层状Silicalite-1 外壳的中空沸石微球,陈汇勇,,本文提出综合运用软/硬模板制备方法,合成出具有层状silicalite-1外壳的中空沸石微球,该微球成功复制得到大孔碳模板的500nm球状形貌,
  • 首先新建一个ASP.NET Core 项目,选中空模板,如下图所示 在NuGet包中添加Microsoft.AspNetCore.StaticFiles 添加好以后我们在Startup.cs中添加对应的中间件(如果不明白中间件是什么查看上一篇) 默认...

      首先新建一个ASP.NET Core 项目,选中空的模板,如下图所示

    image.png

    在NuGet包中添加Microsoft.AspNetCore.StaticFiles

    image.png

    添加好以后我们在Startup.cs中添加对应的中间件(如果不明白中间件是什么查看上一篇)

     

    默认文件夹是wwwroot 如果不想使用wwwroot需要使用StaticFileOptions来设置目录。

    这里设置一下目录到项目根目录

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)      
    {
                loggerFactory.AddConsole();
                var staticfile = new StaticFileOptions();
                staticfile.FileProvider = new PhysicalFileProvider(@"F:\xm\core\XzyFilesServer\XzyFilesServer\bin\Debug\netcoreapp1.1\");
                app.UseStaticFiles(staticfile);//使用默认文件夹wwwroot
                if(env.IsDevelopment())
                {           
                    app.UseDeveloperExceptionPage();
                }   
                app.Run(async (context) =>{
                    await context.Response.WriteAsync("HelloWorld!");
                });
    }

    这里我们设置到项目根目录

    然后在根目录创建一个readme.txt文件 

    image.png

    在里面写入.net core

    image.png

    然后程序运行起来访问我们的文件可以看见 成功浏览readme.txt文件

    如果我们需要浏览所有的文件夹及文件,就需要用到UseDirectoryBorwser ,具体如下

    public void ConfigureServices(IServiceCollection services)     
    {
                services.AddDirectoryBrowser();    
    }
           
    // This method gets called by the
    runtime. Use this method to configure the HTTP request pipeline.
          
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)      
    {
                loggerFactory.AddConsole();
                var dir = new DirectoryBrowserOptions();
                dir.FileProvider = new PhysicalFileProvider(@"F:\xm\core\XzyFilesServer\XzyFilesServer\bin\Debug\netcoreapp1.1\");
                app.UseDirectoryBrowser(dir);
                var staticfile = new StaticFileOptions();
                //制定目录也可以指定其他文件夹
                staticfile.FileProvider = new PhysicalFileProvider(@"F:\xm\core\XzyFilesServer\XzyFilesServer\bin\Debug\netcoreapp1.1\");
                //如果不指定使用默认文件夹wwwroot
                app.UseStaticFiles(staticfile);
                if(env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                app.Run(async (context) =>
                {
                    await context.Response.WriteAsync("HelloWorld!");
                });
            }

    这里需要在Startup的ConfigureServices方法中加入services.AddDirectoryBrowser();

    image.png

    程序运行起来后,结果如上图

    我们在换成C盘试一试

     

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)      
    {
                loggerFactory.AddConsole();
                var dir = new DirectoryBrowserOptions();
                dir.FileProvider = new PhysicalFileProvider(@"C:\");
                app.UseDirectoryBrowser(dir);
                var staticfile = new StaticFileOptions();
                //制定目录也可以指定其他文件夹
                staticfile.FileProvider = new PhysicalFileProvider(@"F:\xm\core\XzyFilesServer\XzyFilesServer\bin\Debug\netcoreapp1.1\");
                //如果不指定使用默认文件夹wwwroot
                app.UseStaticFiles(staticfile);
                if(env.IsDevelopment())
                {               
                    app.UseDeveloperExceptionPage();     
                }
                app.Run(async (context) =>
                {
                    await context.Response.WriteAsync("HelloWorld!");
                });
    }

    image.png

    可以看到,我们可以访问C盘的所有文件夹及文件了。

    当打开一些文件时会发现,有些文件可以打开,有些文件会出现404错误,那是因为MIME Type没有识别出来。

             我们可以手动设置这些MIME Type,也可以给这些未识别的设置一个默认值。具体代码如下:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)       
    {
                loggerFactory.AddConsole();
                var dir = new DirectoryBrowserOptions();
                dir.FileProvider = new PhysicalFileProvider(@"C:\");
                app.UseDirectoryBrowser(dir);
                var staticfile = new StaticFileOptions();
                //制定目录也可以指定其他文件夹
                staticfile.FileProvider = new PhysicalFileProvider(@"C:\");
                staticfile.ServeUnknownFileTypes = true;
                staticfile.DefaultContentType = "application/x-msdownload";//设置默认MIMEType
                //如果不指定使用默认文件夹wwwroot
                app.UseStaticFiles(staticfile);
                if(env.IsDevelopment())
                {         
                    app.UseDeveloperExceptionPage();
                }
                app.Run(async (context) =>
                {
                    await context.Response.WriteAsync("HelloWorld!");
                });
    }

    设置好后 对于未识别的,默认浏览器会下载这些文件。

    如果想用手机查看电脑的图片或者视频等文件,则在加入一句代码就可以实现了。

    public class Program  
    {     
        public static void Main(string[] args)      
        {
                 var host = new WebHostBuilder().UseKestrel()
                  .UseContentRoot(Directory.GetCurrentDirectory())
                  .UseIISIntegration()
                  .UseUrls("http://*:5000")//加上这个就能通过ip+端口访问了
                  .UseStartup<Startup>()
                  .UseApplicationInsights()
                  .Build();
                  host.Run();       
        }
    }

    image.png

    手机访问效果图如上

    转载于:https://www.cnblogs.com/xuzeyu/p/9400806.html

    展开全文
  • 与实心球和非球形材料相比,中空微球是内部中空的特殊球形材料,具有许多特殊和优异的物理化学性质。本文采用聚合物胶粒模板法制备SiO2空心球,研究不同pH值和正硅酸乙酯用量对SiO2/PS微球包覆效果的影响。利用透射电子...
  • 具有多级孔结构的CuO中空球的合成及其气体传感性能研究,秦瑶,周燕洁,本文在低温下无模板一步法制备了具有三级多孔(准微孔:1.0~2.2nm; 介孔:5-30nm;大孔:2~4μm)的CuO中空球。同时,结构分析发现,CuO�
  • 基于实测研究结果,采用有限元分析软件ABAQUS开展轴向集中荷载作用下钢管混凝土柱的变形破坏特征...在此基础上提出双壁空心柱沿空留巷巷旁充填结构的设计思想,即采用同心钢管作为充填模板,中空位置充填高水速凝材料。

空空如也

空空如也

1 2 3
收藏数 43
精华内容 17
关键字:

中空模板