context

android常见内存泄漏

无人久伴 提交于 2020-02-20 09:09:29
1、静态变量 类中定义了静态Activity变量,把当前的Activity赋值给静态变量,如果Activity生命周期结束的时候静态变量没有清空,就会导致内存泄漏。static变量是贯穿整个应用的生命周期,所以被泄漏的Activity就会一直存在于应用的进程中,不会被回收。 private static Activity sActivity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); sActivity = this; findViewById(R.id.btn_back).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); } } 2、 非静态内部类 创建 静态实例 这里的非静态内部类是Config,创建的静态实例是sConfig 造成内存泄漏的原因是 内部类会隐式持有外部类的引用 ,这里的外部类是NonStaticActivity,然而内部类sConfig又是static静态变量

四、SpringMVC

℡╲_俬逩灬. 提交于 2020-02-19 17:59:44
一、 1、dispatcher-servlet.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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--xmlns:context="http://www.springframework.org/schema/context" 1、--> <!-- 控制器类所在的包--> <context:component-scan base-package="control"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- /WEB

解密酷炫WPF界面开发技巧!WPF Data Grid和TreeList

守給你的承諾、 提交于 2020-02-19 10:53:00
下载DevExpress v19.2完整版 DevExpress v19.2汉化资源获取 通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。DevExpress WPF Data Grid和TreeList的最新版本引入新的编辑模式——Edit Entire Row。 在默认模式下,通过in-place编辑器进行的更改将立即发布到数据源。与默认模式不同,Edit Entire Row要求用户按下Update按钮来将更改显式发布到您的数据源: 要激活Edit Entire Row模式,请使用 TableView.ShowUpdateRowButtons / TreeListView.ShowUpdateRowButtons 属性。 当您在一行中更改单元格值时,WPF Data Grid / TreeList冻结UI。除非记录或取消更改,否则不能离开已编辑的行。 要发布所做的更改,请单击Update按钮;如果单击Cancel按钮,更改将被放弃。 在示例中,Data Grid绑定到实体框架: public MainWindow() { InitializeComponent(); var context = new IssuesContext(); grid

.Net Core Serverless初体验

烂漫一生 提交于 2020-02-19 07:25:22
什么是Serverless   Serverless 是一个当今软件世界中比较新的话题。它并没有一个普遍公认的权威定义,每个人每个企业对它的解释可能都有不同,而 Serverless 正是在这种情况下不断发发展的。但是就算如此,有一些 Serverless 的特征还是被广泛认可的: 服务端的主机和进程完全由供应商管理 可以根据负载进行自动伸缩 按照精确的使用情况来计费,就像水和电一样。(效用计算)   引用掘金,原文地址: https://juejin.im/post/5c68fdbfe51d4539a569f259 Serverless演进   在这个发展历程中有以下几个渐进的里程碑事件: 通过虚拟化技术将大型物理机虚拟成单个的VM资源。 将虚拟化集群搬到云计算平台上,只做简单运维。 把每一个VM按照运行空间最小化的原则切分成更细的Docker容器。 基于Docker容器构建不用管理任何运行环境、仅需编写核心代码的Serverless架构。   引用阿里云,原文地址: https://help.aliyun.com/knowledge_detail/65565.html?spm=a2c4g.11186631.2.1.4f811bbeDYGmvp 阿里云Serverless - 函数计算   函数计算是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施

(十)设计模式-解释器模式

百般思念 提交于 2020-02-19 03:26:10
1、定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中句子。 2、使用场景 音乐解释器,定义一套规则,O表示音阶 ‘O 1’表示低音阶,‘O 2’表示中音阶,‘O 3’表示高音阶;P表示休止符,‘C D E F G A B’ 表示’Do-Re-Mi-Fa-So-La-Ti’;音符长度1表示一拍,2表示二拍,0.5表示半拍,0.25表示四分之一拍,以此类推。 注意:所有字母和数字都要用半角空格分开,例如上海滩歌曲的第一句‘浪奔’,可以写成‘O 2 E 0.5 G 0.5 A 3’表示中音开始,演奏的是”Mi So La“。 3、代码结构UML图 演奏内容:包含解释器之外的一些全局信息。 表达式:抽象表达式,声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点共享。 音符、音阶、音速:具体的表达式对象,实现于温服中的终结符相关联的解释操作。 4、类的实现 (1)、PlayContext (演奏内容类) public class PlayContext { //演奏文本 private String playText ; public String getPlayText ( ) { return playText ; } public void setPlayText ( String playText ) { this .

VueX的使用

让人想犯罪 __ 提交于 2020-02-18 18:51:29
vuex介绍 Vuex 是一个专门为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 应用场景 当应用遇到多个组件共享状态的时候 vuex和本地存储的区别 vuex可以实时改变状态值的状态,而本地存储不行 vuex刷新页面后状态值会消失,而本地存储不会消失 vuex的使用 1.安装vuex npm install vuex --save 2.src目录下新建store 3.在index.js引用vuex,并创建一个count初始值为1 4.在main.js上使用vuex 5.测试页面拿count值 < h1 > count:{{$store.state.count}} </ h1 > vuex核心(state) state vuex使用单一状态树,用一个对象包含了全部应用层级状态。 展示vuex状态,由于vuex的状态存储是响应式的,所以从store实例中获取状态最简单的方法就是在计算属性中返回某个状态: < template > < div > < h1 > { { count } } < / h1 > < / div > < / template > < script > export default { computed : { count ( ) { return this . $store

Glide万字解密

梦想的初衷 提交于 2020-02-17 19:05:24
Glide现在应用最广的一个图片加载框架了,一直都想对它下手,每次都是深陷其中。。。这次狠下心来,对它来个全面的剖析,争取对整个流程和其中的细节都有一个覆盖。 本文的Glide的解析是基于最新的4.11.0版本来进行的。 其实从一般的网络加载图片,可以简单分析下大体的流程,无非就是建立相关的请求信息,然后通过线程池技术对请求信息进行请求,然后将下载的图片文件进行转化显示。 先来看个简单的测试使用代码开始,然后逐步深入 Glide.with(view.getContext()) .load(url) .into(view); with() Glide的 with 函数为我们提供了不同的入参,其最终的返回对象都是 RequestManager 我们的测试代码用的是 Context 那么这里我们就跟踪一下这个函数,其实其他几个都是相似的 @NonNull public static RequestManager with(@NonNull Context context) { return getRetriever(context).get(context); } @NonNull private static RequestManagerRetriever getRetriever(@Nullable Context context) { //校验Context不能为空

C 标签使用

不问归期 提交于 2020-02-17 16:02:24
JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签: out、 set、 remove、 catch 2.流程控制标签: if、 choose、 when、 otherwise 3.循环标签: forEach、 forTokens 4.URL操作标签: import、 url、 redirect 使用标签时,一定要在jsp文件头加入以下代码: <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 下面分别对这些标签进行说明: 1. <c:out> 用来显示数据对象(字符串、表达式)的内容或结果 使用Java脚本的方式为:<% out.println("hello") %> <% =表达式 %> 使用JSTL标签:<c:out value="字符串">,例如: <body> <c:out value="&lt要显示的数据对象(未使用转义字符)&gt" escapeXml="true" default="默认值"></c:out><br/> <c:out value="&lt要显示的数据对象(使用转义字符)&gt" escapeXml="false" default="默认值"></c:out><br/> <c:out value="${null}" escapeXml="false"

解释器模式

我怕爱的太早我们不能终老 提交于 2020-02-17 05:57:21
定义:解释器模式(interpreter),给定一个语言,定义它的文法中的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 UML图: 代码实现: class Program { static void Main(string[] args) { Context context = new Context(“a”); Interpret(context); context = new Context(“0”); Interpret(context); Console.Read(); } static void Interpret(Context context) { List list = new List { new ZeroInterpreter(), new NoZerolInterpreter() }; list.ForEach(i => { i.Interpret(context); }); } } namespace IntereptDesign { public abstract class AbsInterpreter { public abstract void Interpret(Context context); } public class ZeroInterpreter : AbsInterpreter { public

android崩溃日志收集

孤人 提交于 2020-02-17 04:21:14
收集android的崩溃 主要步骤: 实现UncaughtExceptionHandler 我们需要实现UncaughtExceptionHandler接口中的uncaughtException方法。该方法中最常见的操作就是读取崩溃的stacktrace,然后上报服务器数据便于分析。 实现代码 public class SimpleUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler { private static final String LOGTAG = "SimpleUncaughtExceptionHandler"; @Override public void uncaughtException(Thread thread, Throwable ex) { //读取stacktrace信息 final Writer result = new StringWriter(); final PrintWriter printWriter = new PrintWriter(result); ex.printStackTrace(printWriter); String errorReport = result.toString(); Log.i(LOGTAG, "uncaughtException