精华内容
下载资源
问答
  • 文件属性及资源文件的使用

    千次阅读 2015-02-07 13:22:41
    一、C#文件属性1、什么是文件属性文件属性可以用来指示项目系统对应文件执行的操作。具体的操作见下文。Visual Basic和Visual C#的文件都具有4个属性:“FileName”、“BuildAcition”、“CustomTool”、”...

    C#文件属性

    什么是文件属性

    文件属性可以用来指示项目系统对应文件执行的操作。具体的操作见下文。Visual Basic和Visual C#的文件都具有4个属性:“FileName”、“BuildAcition”、“CustomTool”、”CustomToolNamespace“。

    CopyToOutputDirectory属性

    这里写图片描述

    此属性指定将选定的源文件复制到输出目录所依据的条件。如果从不将文件复制到输出目录,请选择“不复制”;如果总是将文件复制到输出目录,请选择“始终复制”;如果仅当文件比输出目录中同名的现有文件新时才复制此文件,请选择“更新则复制”。

    BuildAction属性

    这里写图片描述这里写图片描述

    None:不在项目输出组中包含该文件,并且在生成进程中不会对其进行编译。例如包含文档的文本文件,如自述文件。

    Compile:将该文件编译到生成输出中。此设置用于代码文件。

    Content:不编译该文件,但将其包含在“内容”(Content)输出组中。例如,此设置是 .htm或其他类型 Web文件的默认值。

    Embedded Resource:将该文件作为 DLL或可执行文件嵌入主项目生成输出中。此设置通常用于资源文件。

    ApplicationDefinition:和Page类似,但只用于Silverlight的启动页面(默认是App.xaml)。

    Page:Silverlight中所有的usercontrol/page/childwindowxaml都属于”Page”build,其他的buildaction不能将build action不能将codebehind文件和Xaml文件连接起来。

    CodeAnalysisDictionary:自定义的CodeAnalysis字典。

    Resource:embedsthe file in a shared (by all files in the assembly with similar setting)assembly manifest resource named AppName.g.resources

    SplashScreen:Silverlight的欢迎界面。

    DesignData:Sampledata types will be created as faux types. Use this Build Action when the sampledata types are not creatable or have read-only properties that you want todefined sample data values for.

    DesignDataWithDesignTimeCreatableTypes:Sampledata types will be created using the types defined in the sample data file. Usethis Build Aciton when the sample data types are creatable using their defaultempty constructor.

    EntityDeploy:适用于Entity框架。

    注意:当在资源编辑器中添加了图像时,它会将”生成操作”设置为“无”,这是因为.resx文件会引用该图像文件。在生成时,该图像会被拖入到从.resx文件创建的.resources文件中。然后可以通过为.resx文件自动生成的强类型类轻松的访问该图像。因此,不应该将此设置更改为”嵌入的资源”,因为这样做的话会在程序集中包含图像两次。

    关于资源文件的使用,下文有介绍。

    FileName属性

    通过在“属性”窗口中单击“FileName”属性,然后键入新名称,可以重命名文件。请注意,如果更改文件的名称,则Visual Studio 将自动重命名与之关联的任何 .vb或 .resx文件。

    CustomTool属性

    自定义工具是可用于在设计时将文件从一种类型转换为另一种类型的组件。例如,自定义工具可以是一个数据集代码生成器,它在一个 XML 架构 (.xsd)文件中读取,在以编程方式公开其表和列的代码文件中生成类。产品中有一个预定义的可用自定义工具列表;此属性使您能够了解哪一个自定义工具适用于某一文件。在极少的情况下,可能需要更改此属性的值。此属性的值必须为空白或内置自定义工具之一。

    若要设置或更改自定义工具,请单击“属性”窗口中的“CustomTool”属性,然后键入自定义工具的名称。

    CustomToolNamespaces属性

    如果已经将某自定义工具分配到项目,则“CustomToolNamespace”属性将允许您指定一个命名空间,用于分配给自定义工具生成的代码。当为 CustomToolNamespace 属性指定一个值时,自定义工具生成的代码将被放入指定的命名空间中。如果此属性为空,则生成的代码将被放入转换后的文件所在文件夹的默认命名空间中;对于 Visual Basic,它是项目的根命名空间,对于 Visual C#,它对应于该文件夹的“DefaultNamespace”属性的设置。

    资源文件的使用

    什么是资源文件

    资源文件通常是应用程序使用的任意非可执行的数据文件,如图像、音频和视频文件。资源文件在某些上下文中还可能具有特定的含义。例如,在应用程序本地化的上下文中,资源文件指代 .resx文件,您可以在本地化的附属程序集中部署这些文件。

    一般通过统一资源标识符(URI)在代码或 XAML中引用资源文件。所需的 URI格式取决于部署文件的方式。您还可以选择指定相对或绝对 URI。

    补充:什么是相对和绝对URI?

    a)相对URI指定相对于应用程序根或引用XAML的资源文件位置。例如,”http://www.example.com/resources/picture.png“表示指定域中资源文件夹中的一个文件。如果资源文件所在的域不是应用程序包的宿主域,必须指定绝对 URI。

    b)绝对URI是指定资源文件的确切位置,绕过回退机制。

    补充:什么是相对于应用程序根、相对于引用XAML和指向其他程序集的URI?

    a. 具有前导斜杠的相对 URI表示相对于应用程序根的位置, 例如”/resources/image.png”。

    应用程序根是应用程序包的根文件夹或服务器上应用程序包的位置。 相对 URI回退机制首先搜索应用程序包,然后搜索服务器。 如果在前导斜杠后包括路径,则在这两个位置中搜索相同的文件夹层次结构。

    a. 不具有前导斜杠的相对 URI表示相对于引用 XAML的位置。 如果在代码中使用相对URI,则引用 XAML 是您的代码操作的 XAML。

    如果引用 XAML位于文件夹中,可以引用相对于该位置的其他文件夹中的文件。 但是,不能在应用程序根上进行搜索,例如”../resources/image.png”。 此 URI搜索包含 XAML的文件夹所在级别上的资源文件夹,假定该文件夹不是应用程序根。

    如果从应用程序包加载引用 XAML但是未找到引用的资源文件,则使用默认回退机制。 应用程序包中引用 XAML的路径用于在服务器上搜索。 例如,考虑应用程序包中以下位置的 XAML文件:/pages/xaml/MyPage.xaml。 在这种情况下,回退机制将在服务器上的以下位置搜索”../resources/image.png”:/pages/resources/image.png。

    如果将引用 XAML编译为程序集,则必须在该同一程序集中嵌入资源文件。 在这种情况下,URI回退机制由ResourceManager类提供。 此回退机制使用语言和区域性设置来查找附属程序集中的资源文件。

    c)还可以引用嵌入某程序集的资源文件,该程序集不是包含引用 XAML 的程序集。 在这种情况下,URI使用以下格式:”/assemblyShortName;component/resourceLocation, 例如”/SilverlightLibraryAssembly;component/image.png”。 请注意,需要使用前导斜杠和component关键字(后跟一个斜杠)。

    对于其他嵌入的资源,此 URI格式使用ResourceManager类提供的回退机制。

    资源文件的类型

    System.Resources命名空间支持3种资源文件:

    .txt文件,只能有字符串资源。因为不能被嵌入到 Assembly中,所以很容易暴露,被客户修改。最大缺点是仅支持字符串资源,所以不推荐使用。

    .resx文件,由 XML组成,可以加入任何资源,包括二进制。同样不能被嵌入到 Assembly 中。在 System.Resources名字空间中有专用读写的类。VS.NET创建这种文件然后将其转成 .resources文件并根据设置将其嵌入到 Assembly中。

    .resources文件,PE格式,可以加入任何资源。唯一可以被嵌入到 Assembly 的文件,在 System.Resources名字空间中有专用读写的类。

    如何配置资源文件

    在 Visual Studio中,可以将资源文件添加到 Silverlight项目并通过设置其”生成操作”值来为部署配置这些资源文件。 可以为 Silverlight项目中的资源文件使用以下生成操作:

    • 资源: 此生成操作会将文件嵌入项目程序集。 您可以将此选项用于应用程序和库项目,并且在应用程序包的内部或外部部署这些程序集。
    • 内容: 此生成操作会将文件包含到应用程序包中,而不嵌入项目程序集。 将此选项用于包中多个程序集共享的资源文件。
    • 无: 此生成操作不会将文件包含到应用程序包或程序集中。 将此选项用于要按需检索的资源文件。 通常在与应用程序包所在服务器位置相同的地方部署按需文件。

    注意:在Visual Studio中的“属性”窗口提供了“生成操作”下拉列表的其它几个值。但是当要应用到Silverlight项目时, 只能选择前3项。Silverlight嵌入资源比如始终使用“资源”生成操作,而非“嵌入的资源”生成操作,这是因为后者使用了Silverlight无法识别的格式。
    这里写图片描述

    在实战中掌握资源文件的用法

    在XAML中给Button空间添加背景图片想必都是知道的,下面我们来看看如何在后台给Button添加背景图片。我们新建一个WPF工程,在XAML中添加好Button空间后,双击来处理click事件。

    private void btn15_Click(object sender, RoutedEventArgs e)  
    {  
        ImageBrush ib = new ImageBrush();  
        ib.ImageSource = new BitmapImage(new Uri(@"Images/1.jpg",       UriKind.Relative));  
        btn.Background = ib;  
    }  

    这里写图片描述
    注意要将该图片设置成Content(内容)。

    但如果将最后编译得到的exe文件复制到其他位置后打开,便不再加载出图片,这时我们需要将图片添加到资源文件中。

    双击添加的资源文件,选择要添加的文件类型,另外有”添加现有文件“等选择。

    添加完成后会出现以下式样。

    这里写图片描述

    回到后台代码中。由于资源文件中是Bitmap类型,需要对其进行转换。

    public static BitmapSource ChangeBitmapToBitmapSource(Bitmap bmp)  
    {  
        BitmapSource returnSource;  
        try  
        {  
            returnSource = Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());  
         }  
         catch  
         {  
             returnSource = null;  
         }  
         return returnSource;  
    }  

    转换之后直接添加到Button的Background属性即可。

    private void btn_Click(object sender, RoutedEventArgs e)  
    {  
        var img2 = Game.Resource1._2;  
        btn.Background = new ImageBrush(ChangeBitmapToBitmapSource(img2));  
    }  

    Ok,本篇博客到此为止了,非常感谢Aran的指导。



    感谢访问,希望对您有所帮助。 欢迎关注或收藏、评论或点赞。


    为使本文得到斧正和提问,转载请注明出处:
    http://blog.csdn.net/nomasp


    展开全文
  • 前言: 相信有很多小伙伴都比较喜欢使用Command命令来快速的打开或运行程序,但是有些时候命令提示符会和我们开...没成想出现了:“不是内部或外部命令,也不是可运行的程序或批处理文件。” 通过各种查各种找,终于...

    本文自2018年至今已累计有十八万余次的点击,并且博友的反馈很好。所以,希望能得到各位看官的支持!

    如何支持?

    (**有Chang下载CSDN会员资源!粉丝可免费下载一次**)

    'yarn' 不是内部或外部命令,也不是可运行的程序

    ipconfig不是内部命令或外部命令

    Python不是内部或外部命令的(完美解决)

    不知不觉我跟这个“不是内部命令或外部命令,也不是可运行的程序”,打了好久的交道了,也大概摸清怎么搞定这个东西了,从最开始的用一上午去鼓捣它,到现在一分钟解决战斗,自然也是有些自己的心得。

    后续我会将我发现的好玩的规律总结一下给大家尝尝鲜!

    前言:

      相信有很多小伙伴都比较喜欢使用Command命令来快速的打开或运行程序,但是有些时候命令提示符会和我们开个小玩笑。今天我就教大家如何管教这个不听话的cmd!

     

    场景:

      看有些大神在命令提示符里输入两句命令就能执行一大串东西,本着学习的态度,先试试再说!没成想出现了:“不是内部或外部命令,也不是可运行的程序或批处理文件。”

      

    通过各种查各种找,终于发现问题的所在:原来是环境变量的配置出了问题,导致Command不能正确的执行命令。

    首先:

    确定是否能启动Command命令提示符!

    我的电脑——右击选择属性——高级系统设置

     

    选择环境变量

                       

    然后:

    找到名为ComSpec的变量,查看是否是 :“%SystemRoot%\system32\cmd.exe”,如果不是请更改。(部分需要改成64)

    (这意味着你是否能正常启动CMD)

    关键:

    然后找到名为PATH的变量,点击编辑:
    ;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Windows\SysWOW64
    将其粘贴到PATH的后面(引号中的内容,包括分号)

    最后:

    记得保存一下,点击确定,重启Command命令提示符。

     

    哒哒!大功告成,之前不能用的命令都可以玩了。希望可以帮助大家解决问题!

    小结:

    任何的限制,都是从内心开始的!
    当你不再忍耐,不再克制,才会真正的成熟!
    在做任何事情时,都要有坚定且清晰的目标,还要牢记目标!

                

           小编需要您的关注哦!您的赞是对我最大的鼓励!

    展开全文
  • Spring-使用外部属性文件01

    千次阅读 2017-08-06 11:01:19
    PropertyPlaceholderConfigurer属性文件 实例 使用PropertyPlaceholderConfigurer属性文件 PropertyPlacerholderConfigurer的其他属性 locations fileEncoding order placeholderPrefix placeholderSuffix 使用...


    导读

    Spring-使用外部属性文件01

    Spring-使用加密的属性文件02

    Spring-属性文件自身的引用03

    概述

    在进行数据源或者邮件服务器等资源配置时,用户可以直接在Spring配置文件中配置用户名、密码、连接信息等,但是有一种更好的方法是将这些配置信息独立到一个外部属性文件中,并在Spring配置文件中通过形如${user}${password}的占位符引用属性文件中的属性项。

    通过这种方式配置拥有两个明显的好处

    • 减少维护的工作量
    • 部署更加简单

    Spring提供了一个PropertyPlaceholderConfigurer,它能够使Bean在配置时引用外部属性文件。

    PropertyPlaceholderConfigurer实现了BeanFactoryPostProcessorBean接口,因而也是一个Bean工厂后处理器.


    PropertyPlaceholderConfigurer属性文件

    代码已托管到Github—> https://github.com/yangshangwei/SpringMaster

    实例

    maven项目
    这里写图片描述

    一种不太好的写法

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
            <property name="url" value="jdbc:oracle:thin:@172.25.246.11:1521:xgj"/>
            <property name="username" value="cctb"/>
            <property name="password" value="xgj2017"/>
        </bean>

    从上面的配置文件中,我们可以看到驱动器类名、JDBC的URL以及数据库的用户名和密码都写在了XML中。部署的时候,如果需要改动数据库的配置信息,需要先找到这个xml,然后修改,不是特别方便。

    根据实际应用的最佳实践,我们可以将这些信息抽取到一个配置文件中,取名为 jdbc.priperties (随意取名)

    我们先看下jdbc.priperties的配置文件

    jdbc.properties

    jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
    jdbc.url=jdbc:oracle:thin:@172.25.246.11:1521:xgj
    jdbc.username=cctb
    jdbc.password=xgj2017

    属性文件可以定义多个属性,每个属性都有一个属性名和属性值组成,二者用“=”隔开。

    使用PropertyPlaceholderConfigurer属性文件

    下面通过PropertyPlaceholderConfigurer引入jdbc.properties属性文件,调整数据源Bean的配置,为了测试,我们引入了JdbcTemplate

    beans.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!-- 扫描类包,将标注Spring注解的类自动转化Bean,同时完成Bean的注入 -->
        <context:component-scan base- package="com.xgj.ioc.propertyplacehoder"/>
    
        <!-- 引入JDBC属性文件 -->
        <bean  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
            p:location="classpath:spring/jdbc.properties"
            p:fileEncoding="utf-8"/>
    
        <!-- 通过属性名引用属性值 -->     
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
            destroy-method="close"
            p:driverClassName="${jdbc.driverClassName}"
            p:url="${jdbc.url}"
            p:username="${jdbc.username}"
            p:password="${jdbc.password}"/>
    
        <!-- 配置Jdbc模板  -->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
            p:dataSource-ref="dataSource" />
    
    </beans>
    

    通过PropertyPlaceholderConfigurer的location属性引入属性文件,这样在Bean定义的时候就可以引用属性文件中的属性了。

    然后通过${jdbc.driverClassName}等占位符来引用jdbc.properties中的属性,这样部署人员仅需要关注jdbc.properties这个配置文件即可,无需关心Spring的配置文件。

    测试:

    我们数据库中temp_user表有一条记录,我们来模拟登录查询

    这里写图片描述

    PropertyPlaceHoderTest.java

    package com.xgj.ioc.propertyplacehoder;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.stereotype.Component;
    
    @Component
    public class PropertyPlaceHoderTest {
    
        private final static String MATCH_COUNT_SQL = " SELECT count(*) FROM temp_user  "
                + " WHERE user_name =? and password=? ";
    
        private JdbcTemplate jdbcTemplate;
    
        @Autowired
        public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
            this.jdbcTemplate = jdbcTemplate;
        }
    
        /**
         * 
         * 
         * @Title: getMatchCount
         * 
         * @Description: 根据用户名和密码判断用户是否存在
         * 
         * @param username
         * @param password
         * 
         * @return: int
         */
        public int getMatchCount(String username, String password) {
            return jdbcTemplate.queryForObject(MATCH_COUNT_SQL, new Object[] {
                    username, password }, Integer.class);
        }
    
        /**
         * 
         * 
         * @Title: main
         * 
         * @Description: 测试
         * 
         * @param args
         * 
         * @return: void
         */
        public static void main(String[] args) {
            // 加载Spring配置文件
            ApplicationContext ctx = new ClassPathXmlApplicationContext(
                    "classpath:com/xgj/ioc/propertyplacehoder/beans.xml");
            // 获取通过注解标注的Bean
            PropertyPlaceHoderTest propertyPlaceHoderTest = ctx.getBean(
                    "propertyPlaceHoderTest", PropertyPlaceHoderTest.class);
            // 调用方法
            int count = propertyPlaceHoderTest.getMatchCount("xgj", "123456");
            System.out.println("匹配的用户数量:" + count);
        }
    }
    

    运行结果:

    这里写图片描述


    PropertyPlacerholderConfigurer的其他属性

    locations

    如果只有一个属性文件,则直接使用location属性指定即可,如果有多个属性文件,则可以通过locations属性进行设置,可以像配置list一样配置locations属性。

    list的配置参考 Spring-注入参数详解-[集合类型属性]


    fileEncoding

    属性文件的编码格式,Spring默认使用操作系统默认编码读取属性文件,如果属性文件使用了特殊编码,则需要通过该属性显式指定。


    order

    如果配置配置文件中定义了多个PropertyPlacehoderConfigurer,则通过该属性指定优先顺序。


    placeholderPrefix

    上面的案例,我们使用${jdbc.driverClassName}引用属性文件中的属性项, 其中, ${ 为默认的占位符前缀,可修改


    placeholderSuffix

    占位符后缀,默认为 }


    使用context:property-placehoder引用属性文件

    可以使用context命名空间定义属性文件,相比传统的PropertyPlaceholderConfigurer配置,这种方式更优雅

    <!-- 引入JDBC属性文件
        <bean  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
            p:location="classpath:spring/jdbc.properties"
            p:fileEncoding="utf-8"/>  -->
    
        <!-- 使用context命名空间,同上面的Bean等效。 -->
         <context:property-placeholder location="classpath:spring/jdbc.properties" />
    

    但是有个缺点: 如果想自定义一些额外的高级功能,比如属性加密、使用数据库表保存配置信息等,则必须扩展PropertyPlaceholderConfigurer的类并使用Bean的配置方式。


    基于注解及基于JAVA类的配置中引用属性

    在基于XML的配置文件中,通过${propName}的形式引用属性值,类似的,基于注解的Bean可以通过@Value注解为Bean的成员变量或者方法入参自动注入容器已有的属性。同样的基于JAVA类注解@Configuration的类的引用属性的方式和基于注解配置的引用方式是完全一样的,不再赘述。

    实例

    这里写图片描述

    package com.xgj.ioc.propertyplacehoder.annotation;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Component;
    
    @Component
    public class MyDataSource {
    
        private String driveClassName;
    
        private String url;
    
        private String userName;
    
        private String password;
    
        /**
         * 
         * 
         * @Title: setDriveClassName
         * 
         * @Description: 注入jdbc.driverClassName的值 (也可以直接在属性上注入)
         * 
         * @param driveClassName
         * 
         * @return: void
         */
        @Value("${jdbc.driverClassName}")
        public void setDriveClassName(String driveClassName) {
            this.driveClassName = driveClassName;
        }
    
        @Value("${jdbc.url}")
        public void setUrl(String url) {
            this.url = url;
        }
    
        @Value("${jdbc.username}")
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        @Value("${jdbc.password}")
        public void setPassword(String password) {
            this.password = password;
        }
    
        /**
         * 
         * 
         * @Title: getDriveClassName
         * 
         * @Description: 获取driveClassName
         * 
         * @return
         * 
         * @return: String
         */
        public String getDriveClassName() {
            System.out.println("getDriveClassName:" + driveClassName);
            return driveClassName;
        }
    
        public String getUrl() {
            System.out.println("getUrl:" + url);
            return url;
        }
    
        public String getUserName() {
            System.out.println("getUserName:" + userName);
            return userName;
        }
    
        public String getPassword() {
            System.out.println("getPassword:" + password);
            return password;
        }
    
    }
    

    测试类

    package com.xgj.ioc.propertyplacehoder.annotation;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class AnnotationTest {
    
        public static void main(String[] args) {
            ApplicationContext ctx = new ClassPathXmlApplicationContext(
                    "classpath:com/xgj/ioc/propertyplacehoder/beans.xml");
    
            MyDataSource myDataSource = ctx.getBean("myDataSource",
                    MyDataSource.class);
    
            myDataSource.getDriveClassName();
            myDataSource.getUrl();
            myDataSource.getUserName();
            myDataSource.getPassword();
    
        }
    }
    

    运行结果

    这里写图片描述

    注意事项

    使用的过程中,一定要确保所引用的属性值在属性文件中存在且数值匹配,否则会造成Bean创建错误。

    比如我们修改一下注入的属性@Value(“${jdbc.driverClassName1}”)

    Error creating bean with name ‘myDataSource’: Injection of autowired dependencies failed; …..

    2017-08-06 18:23:17,692  INFO [main] (AbstractApplicationContext.java:583) - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@7fae1081: startup date [Sun Aug 06 18:23:17 BOT 2017]; root of context hierarchy
    2017-08-06 18:23:17,767  INFO [main] (XmlBeanDefinitionReader.java:317) - Loading XML bean definitions from class path resource [com/xgj/ioc/propertyplacehoder/beans.xml]
    2017-08-06 18:23:18,398  WARN [main] (AbstractApplicationContext.java:551) - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myDataSource': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'jdbc.driverClassName1' in value "${jdbc.driverClassName1}"
    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myDataSource': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'jdbc.driverClassName1' in value "${jdbc.driverClassName1}"
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:372)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
        at com.xgj.ioc.propertyplacehoder.annotation.AnnotationTest.main(AnnotationTest.java:9)
    Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'jdbc.driverClassName1' in value "${jdbc.driverClassName1}"
        at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:174)
        at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126)
        at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:236)
        at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)
        at org.springframework.context.support.PropertySourcesPlaceholderConfigurer$2.resolveStringValue(PropertySourcesPlaceholderConfigurer.java:172)
        at org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(AbstractBeanFactory.java:831)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1086)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:659)
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366)
        ... 13 more
    

    展开全文
  • CentOS 7文件目录属性及权限详解

    万次阅读 2018-12-04 21:51:11
    普通文件属性及权限2.1 查看文件属性2.2 修改文件属性及权限3.文件及目录权限的意义3.1 权限对于文件的意义3.2 权限对于目录的意义3.3 案例(摘自鸟哥的私房菜)4. 文件与目录的默认权限和隐藏属性4.1 文件默认权限...

    1. 文件权限的概念

       大家在使用Linux时,肯定碰到过比如想修改某个文件,进入某个目录,却出现了Permission deny的错误,这是因为在Linux中,每个文件或者目录都包含访问权限,这些访问权限记录和决定了哪些用户能够访问以及如何访问这些文件和目录,这就是Linux的文件权限的概念。

    2. 普通文件属性及权限

    2.1 查看文件属性

      在平时使用Linux系统中,我们最常用的命令就是“ls”,它的重点在于显示文件的文件名和相关属性,当附加-al参数时,可以查看到所有具体的文件属性,例如,如下图:
    在这里插入图片描述
    (1)第一栏:文件类型与权限
      仔细查看可以可以发现,第一栏“dr-xr-xr-x”总共有十个字符,下面对这十个字符做简单的介绍。
    1)第1个字符:文件类型,比如这里显示是d,说明是目录,事实上可以是l:链接文件,c:字符文件,-:普通文件,b:块设备文件等等。
    2)第2至4字符(r-x):文件拥有者权限,其中,r表示可读(read)w表示可写(write)x表示可执行权限。而如果没有权限,则出现**-,比如此处,没有出现w**,说明文件所有者不具备写权限。
    3)第5至7字符(r-x): 所属组权限,表示该文件所属组的用户的组权限,权限说明同上。
    4)第8至10字符(r-x): 其他用户权限,即非本人且没有加入本用户组的其他账号的权限,权限说明同上。
    (2)第二栏:文件名链接数
      每个文件都会将它的权限与属性记录在文件系统的inode中,操作系统就是根据inode号来识别不同的文件(可以采用“ls -i filename”查看)。每个文件都会有一个inode,但是在Linux系统允许多个文件名指向同一个inode,这意味着可以用不同的文件名访问同样的内容,对文件内容修改会影响所有文件名,并且删除一个文件名,不影响文件名的访问,这就是Linux中的硬链接机制。
      回到正文,这栏的属性记录的就是多少不同的文件名链接到相同的一个inode号码。
    (3)第三栏:文件所有者账号
    (4)第四栏:文件的所属用户组
    (5)第五栏:文件容量的大小,默认为Bytes
    (6)第六栏:文件创建日期或最近修改日期
      这一栏分别为日期(月、日)及时间,如果时间太久,那么可能仅会显示年份信息。
    (7)第七栏:文件名
      比较值得一提的是,如果文件名前多一个**.,比如上图的“.readhead”文件,表示此文件是隐藏文件。可以使用lsls -a感受下隐藏文件与普通文件的区别。
      另外不晓得大家有没有注意,目录
    与目录.**的权限是一样,实验证明,根目录的上一层与根目录自己是同一个目录,其权限和目录属性完全一致。

    2.2 修改文件属性及权限

    (1)chgrp:修改文件所属组
      chgrp即change group的意思,但是需要注意,修改后的所属组,必须是事先存在于**/etc/group文件中,否则无法完成修改。另外,其执行命令的格式为:
      chgrp users [-R] dirname/filename
       -R
    参数表示递归地修改组属性,表示连同目录及其下属文件和目录都进行更新成为此用户组。
    (2)chown:修改文件的所有者
      chown即change owner的意思,需要注意,用户必须存在于**/etc/passwd**,否则无法生效。chown甚至可以顺带把用户组名称改了,也可以连带目录下的所有子目录或文件同时更改文件拥有者。其语法如下:
      chown [-R] 所有者名称 文件或目录
      chown [-R] 所有者名称:用户组名称 文件或目录
    (3)chmod:修改文件权限
      1)数字类型修改法
      Linux文件的基本权限有9个,分别是拥有者,所属组,其他人,三种身份各有“读、写、执行”三种权限。Linux使用了数字来代表各个权限:
      r:4
      w:2
      x:1
      其中每种身份的最终权限是需要累加的,比如当权限为“-rwxr-xr-x”表示成数字则是
      owner: 4+2+1=7,
      group: 4+1=5,
      others: 4+1 =5
      这表示该文件的权限数字为“755”,而修改权限的命令语法为:
      chmod [-R] xyz dir/filename,其中xyz就是权限数字,dir/filename表示文件或者目录名。
      2)符号类型修改法
      我们把上述的九个权限分别是 user,group,others三种身份,借由u、g、o来代表,采用a表示所有权限,其余的r、w、x分别代表读、写、执行权限。使用如下表的方法

    命令身份权限操作权限操作对象
    chmodu
    g
    o
    a
    + (加入)
    - (移除)
    = (设置)
    r
    w
    x
    文件或目录

      比如我们要对一个文件权限为“-rwxr-xr–”修改为“-rwxrwxr-x”,则需要对用户组身份的权限追加w权限,对其他用户追加x 权限,所以这样执行:
      chmod g+w, o+x filename 或者 chmod g=rwx, o=rx filename

    3.文件及目录权限的意义

    3.1 权限对于文件的意义

      我们知道,文件是实际含有数据的地方,包括一般性文件,数据库文件,二进制的可执行文件等,r/w/x各项权限对于其意义在于:
      r: 可读取此文件的实际内容,比如采用vim/nano等文本编辑器,可以查看到内容。
      w: 可以编辑/新增/修改文件内容,例如在vim下可以insert内容,但是不能删除该文件,尽管可以编辑清除文件内容。
      x: 具有执行的权限,如果该文件是一个例如 .sh, .run 等格式的文件或者是一个C代码,则可以执行,并且可以删除该文件。(文件的最高权限,一般新建的文件,不具有可执行的权限)

    3.2 权限对于目录的意义

      我们知道,在Linux系统中,一切硬件设备等都视为文件,而目录是一种特殊的文件,r/w/x各项权限对于其意义在于:
      r: 可查询此目录下文件名数据,比如ls命令。
      w: 可以建立新目录/删除已存在目录/修改已存在的目录(名称,移动其位置)。(目录的最高权限,一般不随意给出该权限)
      x: 具有执行的权限,简单地说,就是可以将该目录转换成家目录的能力,比如cd 命令。注意,x权限对于目录是极其重要的,如果没有该目录,表示你不能切换到该目录,更不能对其子目录或者文件进行操作,即使你有“r/w”权限。

    3.3 案例(摘自鸟哥的私房菜)

    操作/dir1/dir/file1/dir2重点
    读取file1内容xr-比如进入/dir1才能读取到里面的文件数据
    修改file1的内容xrw-能进入/dir1且修改file1才行
    执行file1的内容xrx-能进入dir1且能执行file1才行
    删除file1文件wx--能够进入/dir1并具有目录修改的权限即可
    将file1复制到dir2xrwx能够读file1且能修改/dir2内的数据

       上表列出了对于/dir1、/dir1/file1、/dir2这三个文件,完成上述操作所需的最小权限,我们可以发现对于dir1多数情况都必须有x权限。

    4. 文件与目录的默认权限和隐藏属性

    4.1 文件默认权限

      文件的默认权限是通过umask值来设定的,注意这不是systemctl unmask firewalld.service中的unmask,Linux会对新建的目录和文件设定一个最原始的权限值,这跟umask有关,在终端执行:umask或者 umask -S可以查看,比如:
    在这里插入图片描述
    在这里插入图片描述
    这表示umask的值0022代表的就是“u=rwx, g=rx,o=rx”,这是怎么对应的呢,默认情况下:

    • 如果用户建立文件,是没有可执行权限的,即权限表示为 -rw-rw-rw-,换算成数字就是666。
    • 如果用户建立目录,默认是全开放的,即权限表示为drwxrwxrwx,换算成数字就是777。
      umask的值,就是该默认值,需要减掉的权限,比如
    • 建立文件时,(-rw-rw-rw-)- (-----w–w-) ==-rw-r–r-- 即644
    • 建立目录时,(drwxrwxrwx)- (d----w–w-) == drwxr-xr-x 即755.
      这就是为什么我们再没有umask值时,默认创建的文件和目录权限分别为“644”和“755”了。

    4.2 文件隐藏属性

    (1)chattr(配置文件属性)
    语法:chattr [±=] [选项] filename/dir
      [选项]可以是多个,可以通过–help查看具体选项的含义,filename/dir是文件名或者目录。
    (2)lsattr [选项] filename/dir
      [选项]可以是多个,可以通过–help查看具体选项的含义,filename/dir是文件名或者目录。

    展开全文
  • Linux文件属性详解

    千次阅读 2019-05-05 12:05:16
    文件存储在硬盘上,硬盘的最小存储单位叫做"扇区"(sector)。每个"扇区"的大小为512字节(byte), ,操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太慢。他是一次性读取多个扇区,即一次性读取一个...
  • MANIFEST.MF文件属性总结理解

    千次阅读 2020-07-20 16:29:16
    MANIFEST.MF文件属性 一. 一般属性 Manifest-Version 用来定义manifest文件的版本,例如:Manifest-Version: 1.0 Created-By 声明该文件的生成者,一般该属性是由jar命令行工具生成的,例如:Created-
  • chattr可用于修改Linux文件系统上的文件属性。例如,使用chattr将某个文件设置为’i’属性(不可修改),则即使在root用户下给文件chmod成777模式,也是无法修改、删除和重命名的。可借助这个命令对某些文件进行锁定...
  • 有的时候,下载的链接文件如果是普通文件类型,如txt,我们下载文件的...download属性可以不填值,他默认就是下载链接的文件,也可以自己填上文件名。 html如下: <a href="../download/file/${fileInfoBe...
  • 通过ls -l 目录/文件可以查看其属性和权限,例如查看当前文件夹下的所有文件属性 ls -al 1. 拥有者信息 上图中间红框显示的是拥有者信息,先是用户,后是群组。 拥有者信息修改:chmod [-可选参数] user:group ...
  • 最近,学习的过程中需要处理owl文件,我的需求比较简单,不需要用到推理,但是要读取到owl文件中的所有的属性以及属性值。经过在网上大量的搜索和阅读后,发现大部分都是讲如何创建RDF文件后者是owl文件的,或者是...
  • Windows平台C语言获取文件的一些属性

    千次阅读 2013-05-26 11:03:21
    Windows平台有一个WIN32_FIND_DATA结构,用来存储文件的一些属性(这里指的属性和下面结构中文件属性成员不同。这里的属性是指下面结构的所有成员)。 该结构的定义如下。 typedef struct _WIN32_FIND_DATA { ...
  • ArcGIS 10.2以后,shp文件属性表或者导出的表格中文会有乱码的情况,如下图所示 解决方案: 用管理员权限打开命令提示符,在CMD命令行中,输入以下命令: reg add HKEY_CURRENT_USER\Software\ESRI\Desktop10.4...
  • 遇到问题的数据库是sql2000,出现这个错误的原因是 mdf文件第0页的一条记录损坏。(第0页只有1条记录) 一般0页有很多条记录是废弃的,如果槽0的偏移量指向的记录问题不大,简单修改一下就好。 如果完全是错误的,那...
  •  首先用FindFirstFile()函数将文件属性获取到WIN32_FIND_DATA 结构对象FindFileData中去,之后可以用FindClose()将其关闭,并把FindFileData中的有关文件属性信息的内容复制到自定义结构FILE_INFO的结构对象...
  • spring配置文件各个属性详解

    万次阅读 2012-08-09 11:25:45
    一、引用外部属性文件        classpath:mail.properties  classpath:jdbc.properties       我们定义了一个PropertyPlaceholderConfigurer类的实例,并将其位置属性设置为我们的属性文件。该类...
  • 使用JAVA读写Properties属性文件

    万次阅读 多人点赞 2013-06-19 09:48:06
    不过这些信息一般都是比较少的数据,没有必要使用数据库文件来保存,而使用一般的文本文件来保存,如果是通过File直接保存的话,可能在存储和读取上都不是很方便,但如果保存为Properties文件就不一样了,属性文件都...
  • Linux 文件系统扩展属性

    万次阅读 2012-06-13 21:38:34
    扩展属性(xattrs)提供了一个机制用来将《键/值》对永久地关联到文件,让现有的文件系统得以支持在原始设计中未提供的功能。扩展属性文件系统不可知论者,应用程序可以通过一个标准的接口来操纵他们,此接口不因...
  • 数据库属性文件的配置

    千次阅读 2019-05-18 00:57:07
    数据库的属性配置(oracle) 今天来给大家分享一下数据库的常用配置。在java中,我们常常会通过java代码去操作数据库(不管哪一种数据库都一样。今天在这里,作者就用oracle数据库做师范了)。我们在操作数据库之前...
  • 一、文件属性 通过ls -l可查看当前目录下文件的详细信息 输出格式:文件的类型和权限 硬链接个数 所属User 所属Group 文件大小 修改日期 文件名 ⽂件的类型和权限: 第一位若为- 则代表是普通文件 第一位若为d 则...
  • properties文件属性值过长换行处理

    万次阅读 2014-05-26 19:50:30
    Java读取Properties文件时碰到两问题: 1)资源文件中的key对应的value过长时,书写不方便,需要换行,若直接回车则回车后的内容被忽略 Ø 资源文件中的key...要解决这两个问题其实不是很难,只是大家对propert
  • IO和属性配置文件之组合拳

    千次阅读 2021-03-03 21:19:35
    文章目录非常好的设计理念:属性配置文件格式配置文件常识补充代码实现:实现截图:注意 :![在这里插入图片描述](https://img-blog.csdnimg.cn/20210303212303681.png) 非常好的设计理念: 以后经常改变的数据,可以...
  • XML文件中一些标签和属性

    千次阅读 2020-08-11 17:26:18
    了解XML中一些属性和标签。 <mapper namespace="Interface.UserMapper"> <resultMap id="userMap" type="pojo.User"> <id property="id" column="id"/> <result property="userName" ...
  • NTFS文件系统-MFT的属性

    千次阅读 2016-07-07 12:51:02
    前面说过MFT是有一个个属性组成,那么每个属性的具体结构又是如何呢?MFT属性的类型很多,但它们都有个共同的特点,那就是每个属性都有属性头和属性体。属性头又分为常驻属性和非常驻属性。常驻属性和非常驻数据最大...
  • 文件属性包括数据属性和管理属性。所谓数据属性就是文件所记录的数据,是创建一个文件的真正目的。而管理属性则是出于管理目的而产生的信息,例如文件名、文件创建时间、文件修改时间、文件权限、文件用户ID和文件组...
  • 最近写了一个文件上传和下载的简单测试demo,对于这种需要部署在服务器上的,而不是随便在本机上跑跑的那种,对于上传和下载的目录路径的选择和配置尤为重要,这个不能在代码里面写死,必须是灵活可配置的。...
  • SpringBoot从配置文件中获取属性 ...注意这里用的是$,而不是#.@Value注入的属性,一般其他属性没有关联关系. 配置文件 user: name: Manaphy age: 19 sex: male @RestController public class ConfigPr...
  • SpringBoot 配置文件默认为application.properties,但是本章节主要讲解yaml文件配置,因为现在的趋势...一、自定义属性与加载 我们把之前项目中的配置文件application.properties改成application.yml test: user:
  • 最近阅读《鸟哥的linux私房菜》,确实是一本好书,使自己在文件属性和权限方面有了较深的理解,总结如下。(注:本篇文章的图片来自于《鸟哥的linux私房菜》一书)一、提纲本篇文章主要包含以下几个部分:1. 用户和...
  • Linux获取文件属性stat()、fstat()、lstat()函数实例学习 一、我们经常用ls命令查看到的文件信息,其实都可以使用stat函数组提 取出来。 二、stat函数组  1、函数int stat(const char *path, struct stat *buf)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,281,822
精华内容 512,728
关键字:

哪个不是文件的属性