static

Handler机制中的消息队列

拟墨画扇 提交于 2020-02-26 14:19:26
学习自 蘑菇街大佬 Handler机制可以看成是一个消息阻塞队列,当有消息时立即处理消息,没有消息时则阻塞.在Android系统中APP启动后很快进入死循环,不断读取MessageQueue中的消息,有消息则立即处理,没有消息则阻塞.Android的View绘制,事件响应(点击,触摸屏幕等)都是把消息发送到了主线程的消息队列,包括自己在主线程创建的handler最终也是把消息插入到了主线程消息队列中,并最终分发到到指定的handler处理消息. handler.send(msg) ->sendMessageDelayed(msg, 0) ->sendMessageAtTime(msg, SystemClock.uptimeMillis() + delayMillis) ->enqueueMessage(queue, msg, uptimeMillis) //这里就是进入到消息队列,进入的是主线程的Looper(MainLooper) ->queue.enqueueMessage(msg, uptimeMillis); 当出队的时候会根据msg中的一个成员变量target(这个target就是handler)来分发的对应的hand 大专栏 Handler机制中的消息队列 ler,这样handler就拿到了信息, for (;;) { // 不断从 MessageQueue 获取 消息

React-Navigation 使用笔记

て烟熏妆下的殇ゞ 提交于 2020-02-26 10:36:08
React-Native 的新版本取消了 navigator,使用了新的 React-Navigation 组件。这个组件非常强大。 但是有的时候我们需要自定义 Header,又不想在每个 View 上附带 Header,而是想要实现原生的效果(即 Header 是一个独立的层,和视图无关)。 参考官方文档: 普通用法:在每个 StackNavigator 管理的视图 class 中加入 static 属性 static navigationOptions = { title: 'Home', } 自定义用法:这里的 Header 是一个自定义组件 static navigationOptions = () => ( { header: () => <Header title="首页" showBack={false}></Header> } ) 注意,如果用 Redux 管理了 navigation,那么自定义的 Header 中需要 connect 一下 nav 中的 dispatch 方法。 自定义用法的参数传递: 传递 NavigationActions.navigate({ routeName: "AMap", params: { title: "地图" } }); // 结合 redux this.props.dispatch(NavigationActions

单例模式(饿汉式和懒汉式)

六月ゝ 毕业季﹏ 提交于 2020-02-26 05:20:30
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 饿汉式 public class SingletonTest1 { public static void main(String\[\] args) { Bank bank1 = Bank.getInstance(); Bank bank2 = Bank.getInstance(); System.out.println(bank1 == bank2);//true } } class Bank { //创建私有化构造器 private Bank() { } //内部提供一个当前类的实例 且为静态 private static Bank instance = new Bank(); //提供公共的静态方法,返回当前类的对象 public static Bank getInstance() { return instance; } } 懒汉式 class Order { private Order() { } private static Order instance = null; public static Order getInstance() { if (instance == null) { instance = new Order();

linuxCentos_8 安装cisco_yang-explorer(详细过程)

本秂侑毒 提交于 2020-02-26 03:03:54
linuxCentos_8 安装cisco_yang-explorer 需要先安装python2 安装python2.7 所需的依赖包 yum install gcc openssl-devel bzip2-devel 安装python2.7 yum install python2 进入linux的软连接存放位置 cd /usr/bin .查看现有python的软连接指向的版本 ls -al *python* 删除旧的软连接 sudo rm python2 建立新的软连接 sudo ln -s python2.7 python 安装 PIP2 curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" python get-pip.py ============================ 安装python2 虚拟环境 pip2 install virtualenv 安装依赖组件 yum install libxml2-devel libxslt-devel python2-devel zlib-devel graphviz(可视化图形工具) yum install graphviz 安装pyang pip2 install pyang 安装Git yum install git 安装yang-explorer

单例模式——独一无二的对象

二次信任 提交于 2020-02-26 02:37:24
面试官:带笔了吧,那写两种单例模式的实现方法吧 沙沙沙刷刷刷~~~ 写好了 面试官:你这个是怎么保证线程安全的,那你知道,volatile 关键字? 类加载器?锁机制???? 点赞+收藏 就学会系列,文章收录在 GitHub JavaEgg ,N线互联网开发必备技能兵器谱 单例模式——独一无二的对象 单例模式,从我看 《Java 10分钟入门》那天就听过的一个设计模式,还被面试过好几次的设计模式问题,今天一网打尽~~ 有一些对象我们确实只需要一个,比如,线程池、数据库连接、缓存、日志对象等,如果有多个的话,会造成程序的行为异常,资源使用过量或者不一致的问题。你也许会说,这种我用全局变量不也能实现吗,还整个单例模式,好像你很流弊的样子,如果将对象赋值给一个全局变量,那程序启动就会创建好对象,万一这个对象很耗资源,我们还可能在某些时候用不到,这就造成了资源的浪费,不合理,所以就有了单例模式。 单例模式的定义 单例模式确保一个类只有一个实例,并提供一个全局唯一访问点 单例模式的类图 单例模式的实现 饿汉式 static 变量在类装载的时候进行初始化 多个实例的 static 变量会共享同一块内存区域 用这两个知识点写出的单例类就是饿汉式了,初始化类的时候就创建,饥不择食,饿汉 public class Singleton { //构造私有化,防止直接new private

小龙告诉你,如何在核心交换机上实现非法接入?

核能气质少年 提交于 2020-02-26 01:44:28
说起网络安全我们网络工程师首先会想到企业网络的安全,那么今天提起企业网络安全就不得不提到企业有线用户如何防范非法接入。那如何做到更好的防范企业网络的非法接入呢?有很多人都会想到防火墙,行为管理设备等安全设备,确实在防范企业网非法接入时,我们的安全设备确实能够起到很好的作用。但是相对于企业规模较小,网络建设预算较低的一些中小型企业,能否去使用较为昂贵的安全设备还值得考究。 那是否有不通过安全设备还能有效的去防范企业网的非法接入问题呢?答案是肯定的。我们可以通过MAC的绑定有效的防范非法接入,那实际如何去实现呢?下面将告诉你。这是一个简单的企业三层网络,拓扑图如下: 首先我们可以为合法接入的PC分配静态IP地址(下面为其中一台PC1作为示例,其他PC同下) 在核心交换机上绑定MAC和相对的IP地址: user-bind static ip-address 192.168.10.2 mac-address 5489-98a2-6bde user-bind static ip-address 192.168.10.3 mac-address 5489-9864-6309 user-bind static ip-address 192.168.10.4 mac-address 5489-9826-1a71 user-bind static ip-address 192.168.10.5

如何解决Transaction 注解,方法内部调用无效问题

被刻印的时光 ゝ 提交于 2020-02-26 00:04:11
前提: Transaction 注解开启事务,是通过代理对象对方法进行封装开启和关闭事务,但生效的的条件是外部调用,而内部调用并不会走代理对象,这就造成了事务失效。 解决办法: 1.逻辑优化,避免内部调用(自己评估) 2.通过AopContext.currentProxy()获取当前类的代理对象 ((ArticleService)AopContext.currentProxy()).getArticleById(id); 注意:需要设置 exposeProxy=true 配置方式: <aop:aspectj-autoproxy proxy-target-class="true"expose-proxy="true"/> 注解方式: @SpringBootApplication @EnableAspectJAutoProxy(exposeProxy=true) public class DatacenterApplication { public static void main(String[] args) { SpringApplication.run(DatacenterApplication.class, args); } } 3.手动获取bean @Component public class SpringUtils implements

Java ——变量类型

邮差的信 提交于 2020-02-25 23:43:17
变量声明 int a, b, c; // 声明三个int型整数:a、 b、c int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值 byte z = 22; // 声明并初始化 z String s = "runoob"; // 声明并初始化字符串 s double pi = 3.14159; // 声明了双精度浮点型变量 pi char x = 'x'; // 声明变量 x 的值是字符 'x'。 Java语言支持的变量类型有: 类变量 :独立于方法之外的变量,用 static 修饰。 实例变量 :独立于方法之外的变量,不过没有 static 修饰。 局部变量 :类的方法中的变量。 public class Variable{ static int allClicks=0; // 类变量 String str="hello world"; // 实例变量 public void method(){ int i =0; // 局部变量 } } 举例: package hello; //首先要知道变量应该是赋值以后才能使用的,但是有些不必人为赋值就有默认初始值,但是有些要人为定义初始值 //所以有些直接使用的并不是没有赋值,而是系统自定义了初始值,所以不会报错 public class Variable { public String instance =

JAVA面试题及参考分析-JAVA基础篇-1

落爺英雄遲暮 提交于 2020-02-25 21:53:53
1.抽象和封装的不同点 抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略。 2.重载和重写的区别 重载: 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。 重写: 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为private则子类就不能重写该方法。 3.字符型常量和字符串常量的区别 字符常量是单引号引起的一个字符 字符串常量是双引号引起的若干个字符字符常量相当于一个整形值(ASCII值),可以参加表达式运算 字符串常量代表一个地址值(该字符串在内存中存放位置)字符常量只占一个字节 字符串常量占若干个字节(至少一个字符结束标志)4.成员变量与局部变量的区别有那些? 从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public,private,static等修饰符所修饰,而局部变量不能被访问控制修饰符及static所修饰;但是,成员变量和局部变量都能被final所修饰;从变量在内存中的存储方式来看,成员变量是对象的一部分,而对象存在于堆内存

变量的存储类别

蹲街弑〆低调 提交于 2020-02-25 20:22:58
一、在运行程序的时候,操作系统会将虚拟内存进行分区。 1).堆 在动态申请内存的时候,在堆里开辟内存。 2).栈 主要存放局部变量。 3).静态全局区 1:未初始化的静态全局区 静态变量(定义变量的时候,前面加static 修饰),或全局变量,没有初始化的,存在此区 2:初始化的静态全局区 全局变量、静态变量,赋过初值的,存放在此区 4).代码区 存放咱们的程序代码 5).文字常量区 存放常量的。 普通的全局变量 概念: 在函数外部定义的变量 int num=100;//num 就是一个全局变量 int main() { return 0; } 作用范围: 全局变量的作用范围,是 程序的所有地方。 只不过用之前需要声明。声明方法 extern int num; 注意声明的时候,不要赋值。 生命周期: 程序运行的整个过程,一直存在,直到程序结束。 注意:定义普通的全局变量的时候,如果不赋初值, 它的值默认为0 静态全局变量static 概念: 定义全局变量的时候,前面用static 修饰。 static int num=100;//num 就是一个静态全局变量 int main() { return 0; } 作用范围: static 限定了静态全局变量的,作用范围 只能在它定义的.c(源文件)中有效 生命周期: 在程序的整个运行过程中,一直存在。 注意:定义静态全局变量的时候