初始化

全局替换字体,开源库更方便!!!

南笙酒味 提交于 2020-03-23 07:04:38
序 在 Android 下使用自定义字体已经是一个比较常见的需求了,最近也做了个比较深入的研究。 那么按照惯例我又要出个一篇有关 Android 修改字体相关的文章,但是写下来发现内容还挺多的,所以我决定将它们拆分一下,分几篇来详细的讲解。主要会是一些常用的替换字体的方案,最后还会介绍一些全局替换的方案,当然也会包含最新的 『Fonts in XML』的方案。 期待你持续关注。 本篇是本系列的第九篇,之前已经发布的文章,有兴趣可以先看看。 Android 字体修改概述|开篇 修改字体需要了解 Typeface 的所有细节 简单粗暴的方式,修改字体 利用反射,修改全局字体 利用 AppCompatDelegate ,全局替换全局字体 通过修改 LayoutInflater,全局替换字体! 自定义属性,支持多个字体文件! Android 可下载字体,Font in xml! 一、前言 之前已经介绍了很多种,快速、低入侵的替换全局字体的方式。但是大多数情况下,我们需要实现的功能,一定已经有现成的实现方案。 本文就介绍一个 Github 上,比较火的全局替换字体的开源库,差不多阅读文档加集成,一个小时全局替换字体不是梦。 这个开源替换字体库就是 Calligraphy: https://github.com/chrisjenx/Calligraphy 二、如何使用Calligraphy

IIS+Asp.Net Mvc必须知道的事(解决启动/重启/自动回收站点后第一次访问慢问题)

痞子三分冷 提交于 2020-03-23 05:37:39
问题现象: Asp.net Mvc站点部署在IIS上后,第一个用户第一次访问站点,都会比较慢,确切的说是访问站点的Action页面(即非静态页面,因为静态页面直接由IIS处理返回给用户即完成请求,而Action页面IIS要转交给Aspnet_Wp工作进程,进而涉及相关初始化操作,这些初始化操作是比较慢的。第二次访问站点就不需要再初始化了所以就快了)。 这种第一次访问慢的问题不仅发生在网站第一次部署启动,也发生在 站点重启 和 站点程序池回收 (经测试,第一次部署启动初始化所用时间会多一些,然后是站点重启,然后是站点回收)。 1. 站点重启 包含手动重启和修改web.config配置、修改IIS上站点配置、更新站点bin目录的dll等引起的自动重启。如果你的站点是新上线的web或者会持续修改添加功能的web,那难免会更新dll导致重启。其它编译型语言(比如java)也是如此,更新了服务端组件,都难免要重启站点。这边会分享.net环境下如何优化此问题; 2. 站点程序池回收 是IIS建议的,本来默认是29小时回收一次。为什么要建议回收呢,大致可以这样理解:一个每日定时回收的机制就像是在发生轻微内存泄露或者其它拖累Worker进程的因素的情况下,刷新IIS的良药,站点回收即节省了资源又提高了稳定性。然而,自动回收后第一次访问慢的问题困扰了许多人,其实只要稍微设置就可以解决

c++ static

强颜欢笑 提交于 2020-03-23 05:07:07
静态全局变量 #include <iostream> using namespace std; static size_t ctr = 0; size_t count_calls() { return ++ctr; } int main() { for(size_t i=0; i < 10; ++i) { cout << "times:" << count_calls() << endl;; } } 特点 该 变量 在全局数据区分配内存 未经初始化的静态全局变量会被程序自动初始化为0 静态 全局变量 在声明它的整个文件都是可见的,而在文件之外是不可见的 结果 全局变量和全局静态变量的区别 1)全局变量是不显式用static修饰的全局变量,但全局变量默认是动态的,作用域是 整个工程 ,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。 2)全局静态变量是显式用static修饰的全局变量,作用域是声明此变量 所在的文件 ,其他的文件即使用extern声明也不能使用。 静态局部变量 #include <iostream> using namespace std; size_t count_calls() { static size_t ctr = 0; return ++ctr; } int main() { for(size_t i=0

深入理解final和static关键字

淺唱寂寞╮ 提交于 2020-03-23 04:55:47
深入理解final和static关键字 # 参考: http://blog.csdn.net/qq1028951741/article/details/53418852 final关键字 final关键字可以应用于类、方法以及变量。 final声明变量 final声明变量可以保证在构造器函数返回之前,这个变量的值已经被设置。详细可以看 final声明的重排序规则 。分为三种情况: final声明基本数据类型变量 :该变量只能被赋值一次,赋值后值不再改变。 final声明引用数据类型变量 :final只保证这个引用类型变量所引用的地址不会改变,即一直引用同一个对象,但是这个对象的内容(对象的非final成员变量的值可以改变)完全可以发生改变(比如 final int[] intArray; ,intArray不允许再引用其他对象,但是intArray内的int值却可以被修改)。 final声明方法参数或者局部变量 :用来保证该参数或者局部变量在这个函数内部不允许被修改。 final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。接口中声明的所有变量本身是final的。另外,final变量定义的时候,可以先声明,而不给初值,这种变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是

深入了解Zookeeper

蓝咒 提交于 2020-03-23 03:56:11
一. 系统模型 数据模型 1. ZNode是Zookeeper中数据的最小单元,每个ZNode上可以保存数据,也可以挂载子节点,因此构成了一个层次化的命名空间,称之为树; 2. Zookeeper中事务是指能改变Zookeeper服务器状态的操作,一般包括数据节点创建于删除,数据节点内容更新和客户端会话创建于失效等; 对于每一个事务请求,都会分配一个全局唯一的事务ID,用ZXID来表示,通常是一个64位数字,从ZXID中可以间接的识别这些请求的全局顺序; 节点特性 1. 节点类型可以分为持久节点PERSISTENT,临时节点EPHEMERAL,顺序节点SEQUENTIAL; 2. 持久节点是指被创建后会一直保存在服务器上,直到有删除操作主动清除这个节点; 3. 临时节点的声明周期和客户端的会话绑定在一起,临时节点不能创建子节点; 4. 顺序节点指创建节点时,Zookeeper会自动为节点名加上一个数字后缀,后缀上线是整型的最大值; 5. 每个数据节点也存储了本身的一些状态信息Stat,包括事务ID,版本信息和子节点个数等; 版本 1. 每个数据节点都具有三种类型的版本信息:version,cversion,aversion; 2. 版本表示数据变更操作的次数,即使变更没有引起数据内容的变化; Watcher 1. 一次性:客户端和服务端注册的Watcher一旦被触发

【C#】C#语法基础---转

耗尽温柔 提交于 2020-03-22 16:42:57
一,注释语句 /*注释语句包含在"反斜杠* "和" *反斜杠"中, 或者两个反斜杠和换行符之中, 或者三个反斜杠和换行符之中(可以被VS自动识别为文件注释以提取) 要注意注释中的\,该续行符会把下一行连上来一起注释掉出错。*/ static void Main(string[] args)   {//语句块包含在{}中     int MyInterger;//语句以;结束     string MyString;///忽略空白字符(空格/回车/TAB)     MyInterger = 17;   } //要注意防止注释嵌套出错,可用#if,#endif预处理语句。 二,数据类型 1,基本型/内置型 用户自定义型 A,内置类型:CS使用.net FrameWork ? 库中的数据类型 sbyte = System.SByte,... 类型 字节数 解释 byte 1 无符号字节型 sbyte 1 有符号字节型 short 2 有符号短字节型 ushort 2 无符号短字节型 int 4 有符号整型 uint 4 无符号整型 long 8 有符号长整型 ulong 8 无符号长整型 float 4 浮点数 double 8 双精度数 decimal 8 固定精度数 string ? unicode字串型 char ? unicode字符型 bool ? 真假布尔型/

uboot的中断向量初始化

柔情痞子 提交于 2020-03-22 07:33:48
第一层引导程序的开始部分如下,正常启动的情况下程序从_start入口执行(config.mk定义,地址为0x00000000)。 但是开始有个疑问:就是_start入口后,第一个指令就执行了b reset,进入了reset标签,正常启动了,对于改指令后的红色部分,并不能有效执行,怎么才能把中断向量正常初始化呢?(中断函数在其他地方也没有执行、或定义过,只有此地方)。 经查,根据s3c2440的定义,中断向量的定义,是固定定义在0x0000000开始的地址上的,比如reset中断的地址是0x00000000,undefined_instruction是0x00000004,.......,这就可以解释了,编译时在固定位置上存储指定的中断处理方式即可(就是直接存储中断函数到pc,进行中断跳转)。而正常情况下是不需要执行的! 之所以执行b reset,是因为在启动时,中断已经发生了(重启)。 .globl _start _start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq _undefined_instruction:

Kmeans原理与实现

早过忘川 提交于 2020-03-22 04:45:44
原理 http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html 实现 http://www.cnblogs.com/zjutzz/p/5924762.html 无监督学习之K-均值算法分析与MATLAB代码实现 转载 https://blog.csdn.net/liweibin1994/article/details/77898341 前言 K-均值是一种无监督的聚类算法。首先我们要知道什么是无监督,无监督就是说在数据集中,数据是没有标签的。在有监督的数据集中,数据的形式可能是这样: { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } {(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}。而在无监督的数据集中,数据的形式是: { x ( 1 ) , x ( 2 ) , . . . , x ( m ) } {x(1),x(2),...,x(m)}。所谓的标签,就是有没有y。 无监督学习一般用来做什么呢?比如市场分割,也许在你的数据库中有很多用户的数据,你希望将用户分成不同的客户群,这样对不同类型的客户你可以分别提供更合适的服务。再比如 图片压缩 ,假如图片有256种颜色

类的生命周期

假装没事ソ 提交于 2020-03-22 03:08:00
1.java虚拟机及程序的生命周期 java虚拟机的生命周期:java虚拟机进程从启动到终止的过程. 在以下情况下java虚拟机将结束生命周期 01.程序正常执行结束; 02.程序在执行中因为出现异常或错误而异常终止; 03.执行类System.exit()方法. 04.由于操作系统出现错误而导致java虚拟机进程终止. java程序的生命周期: java程序从运行到终止到过程称为程序的生命周期,它和java虚拟机的生命周期是一致的. 2.类的加载,连接和初始化 当java程序需要使用某个类时,java虚拟机会确保这个类已经被加载,连接,初始化,其中连接包括:加载,连接,初始化 过程如下图: 这些步骤必须严格的按照这个顺序执行: (1).加载:查找并加载类的二进制数据. (2).连接:包括验证.准备和解析类的二进制数据. 01.验证:确保被加载类的正确性; 02.准备:为类的静态变量分配内存.并将其初始化为默认值; 03.解析:把类中的符号引用转换为直接引用. (3).初始化.给类的静态变量赋予正确的初始值. 2.1.类的加载 类的加载: 1把.class文件中的二进制数据读取到内存中 2把它放在运行时数据区的方法区 3.在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构(类的加载的最终产品便是运行时数据区的堆区的Class对象)

JAVA 中的static、final

北城以北 提交于 2020-03-22 03:07:12
1、static 如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main(),所以它被声明为static。 有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static成员的最常见的例子是main( )。因为在程序开始执行时必须调用main(),所以它被声明为static。 static变量: 声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量,也就是说不管你new多少个类的对象,这个static变量永远只有一个。 static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何。 在static后加大括号({)里面有一段代码,是用来进行显式的静态变量初始化,这段代码只会初始化一次