Android内存优化-方式二:避免静态对象对Activity或Service的引用
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yaoming168/article/details/88946527 把Activity作为Context直接传给静态对象, 单例模式不正确的获取context public class LoginManager {
private Context context;
private static LoginManager manager;
public static Lo
Android内存优化-方式三:函数需要传递Context参数时,避免直接传递Activity
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yaoming168/article/details/88946570 Android上 ,Context可以用于很多操作,但是大部分时候是用来加载以及使用资源。这就是为什么所有的widgets在他们的构造函数中接受一个Context参数。在一般的android应用中,通常有两种Context:分别是Activity和Application。通常的,当咱们的类和方法需要使用到context时,咱们
工程实践:让变量命名做到"自解释"
在上一篇文章中跟大家分享了关于函数命名的一些实践心得,今天我们继续命名这个话题,来讲一讲如何对变量命名。 以下是本文的目录大纲: 一. 变量命名风格 二. 变量命名最高境界 三. 变量命名最佳实践 若有不正之处请多多谅解,并欢迎批评指正。 请尊重作
Android内存优化-方式四:谨慎使用SingleInstance模式
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yaoming168/article/details/88946659 Android的单例模式在我们项目开发中经常会用到,不过使用的不恰当的话也会造成内存泄漏。因为单例的静态特性使得单例的生命周期和应用的生命周期一样长, 这就说明了如果一个对象已经不需要使用了,而单例对象还持有该对象的引用,那么这个对象将不能被正常回收,这就导致了内存泄漏。 我们来分析一下,为什么会内存泄漏呢? AppManag
python之smtplib邮件发送
虽然一般自动化持续集成中都用Jenkins来发送邮件,但了解掌握一下python的smtplib模块发送邮件也是必要的。 先明确一下发邮件的步骤: 1.确定邮件服务商:网易、qq等 2.登录邮箱:用户名/密码(密码一般是授权码) 3.编辑邮件主题、内容、附件 4.发送邮件 最简单的实现: server = smtplib.SMTP('smtp.163.com',25)
server.login(emailname,emailpwd) # 登录
# 邮件内容
msg = '''\\F
Linux-基础学习(二)-基本部署
开始今日份整理 1.软件包安装 1.1 yum命令 yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。 尽管 RPM 能够帮助用户查询软件相关的依赖关系,但问题还是要运维人员自己来解决, 而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件会是非常痛苦的。 Yum 软件仓
算法学习之BFS、DFS入门
算法学习之BFS、DFS入门 0x1 问题描述 迷宫的最短路径
给定一个大小为N*M的迷宫。迷宫由通道和墙壁组成,每一步可以向相邻的上下左右四格的通道移动。请求出从起点到终点所需的最小步数。如果不能到达,输出“不能走到那里”。(N,M<=50,起点,终点分别用S,G表示)
输入样例:N=5,M=5
#S###
..##.
#.###
..###
..G##
1
2
3
4
5
6
输出:5 0x2 BFS解法 bfs用来求解最短路径相当
eclipse 使用Git教程
做一夜搬运工: https://www.cnblogs.com/heal/p/6427402.html https://blog.csdn.net/fan510988896/article/details/56277822
基数排序——Java实现
一、基数排序思想 相比其它排序,主要是利用比较和交换,而基数排序则是利用分配和收集两种基本操作。基数 排序是一种按记录关键字的各位值逐步进行排序的方法。此种排序一般适用于记录的关键字为整数类型的情况。所有对于字符串和文字排序不适合。 实现:将所有待比较数值(自然数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。 基数排序的两种方式: 高位优先,又称为最有效键(MSD),它的比较方向是由右至左
洛谷 - P2805 - 植物大战僵尸 - 最大流 - 最大权闭合子图
https://www.luogu.org/problemnew/show/P2805 最大权闭合子图的特点是,假如你要选一个结点,则要先选中它的所有子节点。正权连S负权连T,容量为绝对值,原图有向边连容量INF。 这里的特点是在于假如这些结点形成了回路,那么不能选中其中任何一个因为没有突破口。 至于为什么要反向建图,是为了使用拓扑排序把回路以及进入回路的结点剪掉,但是不影响网络流图中从属于回路的子节点。 (反向建图后,原本从属于回路的变成可以进入回路,拓扑排序则会把入度非0的剪掉则一举剪除所
python增删改查用法
列表,元组 查 索引(下标) ,都是从0开始 切片 .count 查某个元素的出现次数 .index 根据内容找其对应的位置 "haidilao ge" in a 增加 a.append() 追加 a.insert(index, "内容") a.extend 扩展 修改 a[index] = "新的值" a[start:end] = [a,b,c] 删除 remove("内容") pop(index) del a, del a[index] a.clear() 清空 排序 sort () re
Access-Control-Allow-Origin: *
access-control-allow-headers: Authorization, Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, X-Requested-By, If-Modified-Since, X-File-Name, X-File-Type, Cache-Control, Origin access-control-allow-methods: GET, POST, OPTIONS, PUT, DE
Linux -- nginx
一. 网络服务 web服务器和web框架的关系 web服务器(nginx):接收HTTP请求(例如www.baidu.com)并返回数据
web框架(django,flask):开发web应用程序,处理接收到的数据 nginx # 面试技巧
支持高并发,能支持几万并发连接
资源消耗少,在3万并发连接下开启10个nginx线程消耗的内存不到200M
可以做http反向代理和负载均衡
支持异步网络i/o事件模型epoll 二 . Tengine Tengine是由淘宝网发起的
Eclipse中使用printf报错 提示参数类型不对
报错信息: The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, double) 如果jdk的编译版本不同,语法也会不同 项目 》属性》Java complier》complier compliance lever:1.5
frp源码剖析-frp中的mux模块
前言 frp几乎所有的连接处理都是构建在mux模块之上的,重要性不必多说,来看一下这是个啥吧 ps: 安装方法 go get "github.com/fatedier/golib/net/mux" 该模块很小,不到300行,分为两个文件:mux.go和rule.go。 因为rule.go文件相对简单一些,我们先来看这个。 role.go文件 首先看其中所命名的函数类型MatchFunc: type MatchFunc func(data []byte) (match bool) 该类型的函数用
Javascript数组中常用的排序法 ——冒泡排序法和选择排序法以及快速排序法
所谓排序法,就是对一组无序的序列进行有序的排序(从大到小或者从小到大),那么什么叫冒泡排序法,冒泡排序法又是怎么实现数组的有序排列呢? 1、 冒泡排序法(Bubblesort) 冒泡排序法的具体实现方法是这样的,从数组的第一个元素`arr[0]`开始,两两比较**(`arr[n],arr[n+1]`),如果前面的数大于后面的数(`arr[n] > arr[n+1]`),那么交换两个元素的位置,把大的数往后移动。这样依次经过一轮比较以后,最大的数将会被交换到最后的位置。总的来说,冒泡排序法就是两
今日推荐
周排行