上下文

Android 的上下文菜单: Context Menu,registerForContextMenu(getListView())

北战南征 提交于 2020-01-21 20:44:13
概述: Android 的上下文菜单类似于 PC 上的右键菜单。当为一个视图注册了上下文菜单之后,长按(2 秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单。任何视图都可以注册上下文菜单,不过,最常见的是用于列表视图ListView的item。 注意:Android 的上下文菜单不支持图标或快捷键。 创建一个上下文菜单的步骤: 1. 覆盖 Activity 的 onCreateContenxtMenu() 方法,调用 Menu 的 add 方法添加菜单项(MenuItem)。 2. 覆盖 Activity 的 onContextItemSelected() 方法,响应上下文菜单菜单项的单击事件。 3. 调用 registerForContextMenu() 方法,为视图注册上下文菜单。 示例: MainActivity.java 文件: //file name: MainActivity.java package hi.braincol.local.contextMenu; import android.app.ListActivity; import android.os.Bundle; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem;

每周一个 Python 标准库 | contextlib

别说谁变了你拦得住时间么 提交于 2020-01-21 19:49:04
技术博客:https://github.com/yongxinz/tech-blog 同时,也欢迎关注我的微信公众号 AlwaysBeta ,更多精彩内容等你来。 用于创建和使用上下文管理器的实用程序。 contextlib 模块包含用于处理上下文管理器和 with 语句的实用程序。 Context Manager API 上下文管理器负责一个代码块内的资源,从进入块时创建到退出块后清理。例如,文件上下文管理器 API,在完成所有读取或写入后来确保它们已关闭。 with open ( '/tmp/pymotw.txt' , 'wt' ) as f : f . write ( 'contents go here' ) # file is automatically closed with 语句启用了上下文管理器,API 涉及两种方法:当执行流进入内部代码块时运行 __enter__() 方法,它返回要在上下文中使用的对象。当执行流离开 with 块时,调用上下文管理器的 __exit__() 方法来清理正在使用的任何资源。 class Context : def __init__ ( self ) : print ( '__init__()' ) def __enter__ ( self ) : print ( '__enter__()' ) return self def _

性能调优,程序员转型架构师的拦路虎【3】

丶灬走出姿态 提交于 2020-01-21 01:26:47
性能调优系列前序文章索引: 程序员必须掌握的性能调优 :老兵哥结合个人经历解释了程序员往架构师方向发展时为什么要跨越性能调优这一关,以及介绍了从 X、Y、Z 三个维度优化性能的思路。 从 X 维度优化系统的性能 :老兵哥分享了从 X 维度优化系统性能的思路,包括让客户端分计算存储任务、优化交互设计等,主要是作为引子拓宽我们性能调优的思路。 应用容器 Tomcat 性能调优 :Y 维度就是从业务 HTTP 请求的横向处理流程来看,HTTP 请求会穿越网络、计算机、应用容器(Tomcat)、Spring、ORM(Hibernate)、数据库等节点,在这个流程中每个节点都有许多可以可优化的地方,此文主要介绍通过优化应用容器(Tomcat)来优化系统性能的方法。 程序员在转型架构师的过程中需要建立流程化、结构化、系统化的思维方式,而性能调优是非常难得的契机,它既给了我们压力,也给了我们动力,跨越它就是突破自己的过程。建议在阅读本文内容前,先参考下面这个系列的文章了解 Web 应用是怎样处理 HTTP 请求的: 图解 Spring:HTTP 请求的处理流程与机制【1】 图解 Spring:HTTP 请求的处理流程与机制【2】 图解 Spring:HTTP 请求的处理流程与机制【3】 图解 Spring:HTTP 请求的处理流程与机制【4】 图解 Spring:HTTP 请求的处理流程与机制

Spring注解注册bean之后,用getBean获取不到的问题

爷,独闯天下 提交于 2020-01-21 00:59:18
一下以@Repository注解为例进行说明: 1,检查一下@Repository注解设置的名字name,,如果@Repository采取默认值,则是类名首字母小写,,看一下getBean时是否有写错 2,Bean是被注册到ApplicationContext上下文中,, 3,进行 启动注解驱动 配置,<context:annotation-config /> 4,进行 启动扫描包 配置,<context:annotation-scan base-package=" " /> 5,servlet-spring.xml中配置的启动包扫描,只是针对 DispatcherServlet 扫描的mvc上下文的,而我们要设置IOC上下文设置扫描,他们说注入的容器是不一样的 来源: https://www.cnblogs.com/yuxin-555xt/p/8579946.html

Springcloud的配置文件bootstrap与application的思考

a 夏天 提交于 2020-01-21 00:38:55
加载顺序 bootstrap(.yml 或者 properties) 由父ApplicationContext加载,比application(.yml 或者 properties)优先加载 bootstrap(.yml 或者 properties) 里面的属性不能被覆盖 原理 Spring是有上下文一说的,也叫Application Context,Application Context又是有父子关系的,所以必须要理解ApplicationContext是什么。SpringCloud启动时,会先创建一个Bootstrap Context,然后创建一个Application Context,Bootstrap Context是Application Context的父上下文,Bootstrap负责从外部源加载配置并解析,这两个上下文共用一个从外部获取的Environment。Bootstrap配置具有较高的优先级,不会被本地配置覆盖。Bootstrap典型的应用场景是使用SpringConfig,这个时候你需要把配置信息配在bootstrap里面。Bootstrap属于引导配置,Application属于应用配置。 应用场景 application 自动化配置 bootstrap bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息

微服务设计学习(一)关于微服务和如何建模服务

六眼飞鱼酱① 提交于 2020-01-20 20:32:08
前言 随着互联网在21世纪初被大规模接入,互联网由基于流量点击赢利的单方面信息发布的Web 1.0业务模式,转变为由用户主导而生成内容的Web 2.0业务模式。因此,互联网应用系统所需处理的访问量和数据量均疾速增长,后端技术架构也因此面临着巨大的挑战。 Web 2.0阶段的互联网后端架构大多经历了由All in One的单体式应用架构渐渐转为更加灵活的分布式应用架构的过程,互联网开发架构开始追求更高的质量和效率。 随着智能手机的出现以及4G标准的普及,互联网应用由PC端迅速转向更加自由的移动端。移动设备由于携带方便且便于定位,因此在出行、网络购物、支付等方面彻底改变了现代人的生活方式。在技术方面,为了应对更加庞大的集群规模,单纯的分布式系统已经难于驾驭, 因此技术圈开启了一个概念爆发的时代——SOA、DevOps、容器、CI/CD、微服务、Service Mesh等概念层出不穷,而Docker、Kubernetes、Mesos、Spring Cloud、gRPC、Istio等一系列产品的出现,标志着云时代已真正到来 。 本文(或者说本系列文章),是本人在阅读完 Sam Newman 的《微服务设计》一书之后,与其他的微服务设计相关文章、《从服务化到云原生》等书籍进行关联阅读后做的笔记总结。 目的是构建分布式、微服务、云原生方面的体系化的知识结构树。 希望巩固学习的同时能够帮助到你。

SELinux介绍与设置

馋奶兔 提交于 2020-01-20 18:14:50
一、SELinux介绍   selinux强制访问控制的一种策略,在传统的linux系统中,一切皆文件,有用户,组和权限来控制访问,在selinux中,一切皆对象,由存放在扩展属性域的安全元素控制访问,所有文件、端口、进程都具备安全上下文,安全上下文主要分为五个安全元素user、role、type、sensitivity、category。 二、五个安全元素 user:登录系统的用户类型,如root,user_u,system_u,所属本地进程都属于自由(unconfined)进程 role:定义文件,进程和用户的用途:文件:object_r,进程和用户:system_r type:数据类型,在规则中,何种进程类型访问何种文件都是基于type来实现的,多服务公用的类型有public_content_t sensitivity:限制访问的需要由组织定义的分层 category:对于规定组织划分不分层的分类 三、selinux工作模式   selinux主要模式有:strict(centos5)、targeted、minimun(centos7)、mls几类,selinux系统默认选择是targeten,strict已经不再使用,minimun和mls稳定性不足 四、实际上下文和期望上下文 实际上下文:存放在元数据中,查看文件上下文:ls -Z。查看进程上下文:ps -Z 期望上下文

什么是进程上下文

廉价感情. 提交于 2020-01-19 17:31:02
进程上下文,意思是可执行程序代码是进程的重要组成部分。进程上下文实际上是进程执行活动全过程的静态描述。 这些代码从 可执行文件 载入到进程的 地址空间 执行。一般程序在 用户空间 执行当一个程序调用了 系统调用 或者触发了某个异常,它就陷入了 内核空间 。此时,我们称 内核 “代表进程执行”并处于进程上下文。在此上下文中current宏是有效的。除非在此间隙有更高 优先级 的进程需要执行并由调度器做出了相应调整,否则在内核退出的时候,程序恢复在用户空间继续执行。 系统调用和 异常处理 程序是对内核明确定义的接口。进程只有通过这些接口才能陷入内核执行——对内核的所有访问都必须通过这些接口。 进程上下文实际上是进程执行活动全过程的静态描述。我们把已执行过的进程指令和数据在相关 寄存器 与 堆栈 中的内容称为上文,把正在执行的指令和数据在寄存器和堆栈中的内容称为正文,把待执行的指令和数据在寄存器与堆栈中的内容称为下文。具体的说,进程上下文包括计算机系统中与执行该进程有关的各种寄存器(例如 通用寄存器 , 程序计数器 PC , 程序状态字寄存器 PS等)的值, 程序段 在经过编译过后形成的 机器指令 代码集,数据集及各种堆栈值PCB结构。这里,有关寄存器和栈区的内容是重要的,例如没有程序计数器PC和程序  状态寄存器 PS,CPU将无法知道下一条待执行指令的地址和控制有关操作。

深入js——this

六眼飞鱼酱① 提交于 2020-01-19 16:20:26
this this是与执行上下文绑定的,每个执行上下文都有一个this;执行上下文有3种:全局执行上下文、函数执行上下文和eval执行上下文,因此this也有3种,全局执行上下文中的this、函数执行上下文中的this和eval执行上下文中的this。eval我们很少使用,因此这里我们只讨论全局执行上下文中的this、函数执行上下文中的this。 全局执行上下文的this 在全局执行上下文中,this指向全局对象,因此在浏览器环境中,this执行window。 函数执行上下文的this 函数执行上下文的this有些复杂,主要是因为它与作用域不同, 不是静态绑定到一个函数的,而是与函数如何被调用有关 ,也就是说一个函数每次的this可能不一样。 这里尤其要记住,不要混淆作用域和this,这两者可以说没有任何关系,作用域是在函数定义时就确定的,而this是在函数调用时确定的。 JavaScript中共有以下4种函数调用方式: 对象调用方法方式; 函数调用方式; apply/call方式; 构造函数方式; 对象调用方法方式 当一个函数被保存为对象的一个属性时,我们称此函数为方法。 使用对象来调用其内部的一个方法,该方法的 this 是指向对象本身的 var obj ={ value:3, dosth:function(){ return this.value;//通过obj.do(

apply、call、bind区别、用法

邮差的信 提交于 2020-01-19 06:02:56
apply和call都是为了改变某个函数运行时的上下文而存在的(就是为了 改变函数内部this的指向 ); 如果使用apply或call方法,那么this指向他们的第一个参数,apply的第二个参数是一个参数数组,call的第二个及其以后的参数都是数组里面的元素,就是说要全部列举出来; 他们的 常用用法 : 1.数组之间的追加; 2.获取数组中的最大值和最小值,利用他们扩充作用域拥有Math的min和max方法; 由于没有什么对象调用这个方法,所以第一个参数可以写作null或者本身; var numbers = [5, 458 , 120 , -215 ]; var maxInNumbers = Math.max.apply(Math, numbers), //458 maxInNumbers = Math.max.call(Math,5, 458 , 120 , -215); //458 3.验证是否是数组(前提是toString()方法没有被重写过) function isArray(obj){ return Object.prototype.toString.call(obj) === '[object Array]' ; } 4.让类数组拥有数组的方法 比如arguments对象,获取到的文档节点等,并没有数组的那些方法: Array.prototype.slice