首页 文章 精选 留言 我的

精选列表

搜索[修改],共10018篇文章
优秀的个人博客,低调大师

修改centos下只读文件的权限

使用chmod命令,为文件提供其他的权限。 如果要给只读文件加上写权限,到文件所在目录下运行终端,输入 sudo chmod a+w filename 下面是chmod的详细介绍,不予赘述。 指令名称 : chmod 使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [–help] [–version] mode file… 说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。 参数 : mode : 权限设定字串,格式如下 : [ugoa…][[+-=][rwxX]…][,…],其中 u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。 + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。 r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。 -c : 若该档案权限确实已经更改,才显示其更改动作 -f : 若该档案权限无法被更改也不要显示错误讯息 -v : 显示权限变更的详细资料 -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更) –help : 显示辅助说明 –version : 显示版本 范例 :将档案 file1.txt 设为所有人皆可读取 : chmod ugo+r file1.txt 将档案 file1.txt 设为所有人皆可读取 : chmod a+r file1.txt 将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 : chmod ug+w,o-w file1.txt file2.txt 将 ex1.py 设定为只有该档案拥有者可以执行 : chmod u+x ex1.py 将目前目录下的所有档案与子目录皆设为任何人可读取 : chmod -R a+r * 此外chmod也可以用数字来表示权限如 chmod 777 file 语法为:chmod abc file 其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。 r=4,w=2,x=1 若要rwx属性则4+2+1=7; 若要rw-属性则4+2=6; 若要r-x属性则4+1=7。 范例: chmod a=rwx file 和 chmod 777 file 效果相同 chmod ug=rwx,o=x file 和 chmod 771 file 效果相同 若用chmod 4755 filename可使此程序具有root的权限. 指令名称 : chown 使用权限 : root 使用方式 : chmod [-cfhvR] [–help] [–version] user[] file… 说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。 把计 : user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group)-c : 若该档案拥有者确实已经更改,才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)–help : 显示辅助说明–version : 显示版本 范例 : 将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie : chown jessie:users file1.txt 将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport : chmod -R lamport:users * -rw——- (600) – 只有属主有读写权限。 -rw-r–r– (644) – 只有属主有读写权限;而属组用户和其他用户只有读权限。 -rwx—— (700) – 只有属主有读、写、执行权限。 -rwxr-xr-x (755) – 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。 -rwx–x–x (711) – 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。 -rw-rw-rw- (666) – 所有用户都有文件读、写权限。这种做法不可取。 -rwxrwxrwx (777) – 所有用户都有读、写、执行权限。更不可取的做法。 以下是对目录的两个普通设定: drwx—— (700) - 只有属主可在目录中读、写。 drwxr-xr-x (755) - 所有用户可读该目录,但只有属主才能改变目录中的内容。 运行 .sh 文件类型的文件: 用file命令测试一下看是什么类型的 file xxxx.sh 如果是Bourne-Again shell script 可以sh xxxx.sh 或者chmod +x xxxx.sh 再./xxx.sh 一般 .sh 的直接添加x(可执行属性) chmod +x xxx.sh 然后./xxx.sh就可以了 chmod是一个改变用户拥有指定文件的权限的命令.r:只读,w:写,x执行.也可以用数字

优秀的个人博客,低调大师

Android 修改字体,跳不过的 Typeface

一、开篇 如果你想要操作字体,无论是使用 Android 系统自带的字体,还是加载自己内置的 .ttf(TureType) 或者 .otf(OpenType) 格式的字体文件,你都需要使用到 Typeface 这个类。 本文就单独来分析 Typeface 的一些源码细节,本文在本系列中,可能相对枯燥一些,但是我觉得它又是不可或缺的一部分,所以单独拿出一篇文章来细细说它。 二、加载一个 Typeface Typeface 的细节,要讲内容还是挺多的,切听我细细道来。 2.1 通过 AssetManager 加载字体 一般我们会将需要的内置字体文件,放在 assets 目录下面,之后就可以通过Typeface.createFromAsset()方法,获得一个 Typeface 对象。 例如,现在在项目的 assets/fonts 目录下,放一个字体 .ttf 文件。 然后,我们就可以在需要的时候加载它,这也是一段比较常见的代码。 继续看看createFromAsset()的源码。 代码很简单,逻辑也很清晰。 首先会有判断 sFallbackFonts 不能为 null ,否则直接抛出异常,sFallbackFonts 不是重点,这个之后再讲。 它依赖 sDynamicTypefaceCache 来保证线程的安全。并且会使用createAssetUid()来获取到这个字体的唯一 key ,通过这个唯一 key ,从 sDynamicTypefaceCache 中获取已经被加载过的字体,如果没有的话,再创建一个 FontFamily 的对象,通过FontFamily.addFontFromAsset()方法,将这个字体文件加入进去,最后通过createFromFamiliesWithDefault()中,直接创建一个字体,最终存放到 sDynamicTypefaceCache 中去做一道缓存。 createFromFamiliesWithDefault()方法需要传递一个 FontFamily 的数组,它本身也只是将这些 FontFamily 所代表的共性提取出来,最终调用nativeCreateFromArray()这个 native 的方法,所以效率上应该不会有太大的问题。 这也说明,其实放在 assets 目录下的字体,只要通过 Typeface 加载过之后,它本身就会有一道缓存,之后再取也只是从缓存中获取,并不会影响性能。 而 sDynamicTypefaceCache 是一个基于 Lru 算法的,最大存储 16 个字体的一个缓存。 2.2 通过文件路径加载字体 Typeface 除了可以从 assets 目录下,加载字体文件,它还可以加载其它地方存储的字体文件,并提供了方便的 Api。 最终也是通过字体文件的绝对路径进行加载,这部分逻辑也很好理解。一样是使用到了 FontFamily ,一样是使用到了createFromFamilyWithDefault()。 这些并没有用到什么新的内容,就不再展开细说一遍了。 2.3 通过字体名称获取字体 我们知道,Typeface 还可以管理一些 Android 系统自带的字体,这些字体,如果想要获取,也可以通过 Typeface 来加载,只需要传递进去对应的名称即可。 可以看到,它除了需要传递一个 familyName 之外,还需要传递一个 style ,这里的 style ,就是之前说的android:textStyle传递的值,用于设定字体的粗体(bold)、斜体(italic)等参数的。 这个方法,其实最终调用的是另外一个create()方法的重载,这个方法后面会详细讲解到。将它单拎出来讲解,是因为它其中涉及到一个 sSystemFontMap 对象。 sSystemFontMap 是在 Typeface 的初始化方法init()中进行初始化的。 可以看到,它实际上是通过getSystemFontConfigLocation() 中,读取到本地支持的字体文件,然后将它们一次性加载进行,供后面直接使用。 秉承了 Linux 的传统,所有的配置都写在文件里,这里也是直接从文件里读取,getSystemFontConfigLocation()方法获取到的只是一个配置的路径,最终读取的是FONTS_CONFIG配置的fonts.xml文件。 2.4 通过 Typeface 获得一个新的 Typeface 到这里,该讲到前面提到的create()方法了,这里需要传递进来一个 Typeface 对象,并通过设置 style,为这个原始的 Typeface 字体类附加新的效果。 而这个过程也是不需要我们额外关心效率的问题的。它也提供了一个 sTypefaceCache 的缓存,来缓存我们曾经使用的的系统默认字体。 三、Typeface 的其它细节 到这里基本上就已经讲解清楚 Typeface 的使用了,但是还有一些其它的细节,可以单独拎出来进行额外的讲解。 3.1 Typeface 的初始化 Typeface 的初始化,是放在静态代码块中的,它会初始化一些我们常用的系统默认字体,存储起来方便我们使用。 这里会先调用init()方法,加载系统自带的字体,然后再初始化一系列,例如 DEFAULT 、SNAS_SERIF 等自带字体。 所以如果我们只是需要获取一个系统自带的字体,直接使用这里初始化的一些常量字体即可。 它还会将 DEFAULT 字体,默认初始化一个 sDefaults 的数组,在其中帮我们预加载好粗体、斜体等常用的 Style。 如果想要使用它,Typeface 也提供了对应的方法。 3.2 Typeface 中的 Style 前面一直有提到一个 Style 的概念,它是可以通过android:textStyle属性设置的,包括粗体、斜体等样式。 在 Typeface 中,这些样式也对应了一个个的常量,并且 Typeface 也提供了对应的 Api,让我们获取到当前字体的样式。 3.3 Typeface 中的 Native 方法 在 Typeface 中,所有最终操作到加载字体的部分,全部都是 native 的方法。而 native 方法就是以效率著称的,这里只需要保证不频繁的调用(Typeface 已经做好了缓存,不会频繁的调用),基本上也不会存在效率的问题。 3.4 简单了解一下 FontFamily FontFamily 在前面很多方法内都用到了。它实际上就是去读取字体文件的数据流,然后再通过 native 方法去加载字体。 拿addFont()方法举例,它会先获取 FileInputStream 对象,转换成一个 ByteBuffer 然后传递给 native 方法nAddFont()来加载字体。 这个对象,了解一下就可以了,没有什么太复杂的逻辑。 四、小结 到这里就已经讲解清楚 Typeface 的所有内容,看完本篇文章心里也有底去使用 Typeface 了。 总结来说: Typeface 提供了一系列的createXxx()方法用于从不同的地方加载字体。 Typeface 支持从系统默认字体、字体文件以及 assets 目录下,加载字体。 Typeface 本身已经支持字体缓存,我们只需要放心使用,不需要自身再额外缓存一遍。 Typeface 内部最终调用的都是 native 方法,所以也不存在什么效率的问题。 本文转自承香墨影博客园博客,原文链接:http://www.cnblogs.com/plokmju/p/7570612.html,如需转载请自行联系原作者

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册