职场修炼,你必须持有的发言技巧

那边本人第1说一下PPT(关于PPT设计大家可以去上学秋叶先生的录像,APLLE用户能够看许岑的keynote教学),PPT能更好更直观的表达出演说者所要表明的主旨和纲领,其次解说者有了它在发言的时候更能有秩序和健全的发言,不易于造成紧张而且演说有漏洞的场地。

 

2 字比不上表,表不及图(或者一幅图胜过万语千言)

本篇文章继续为大家介绍Universal-Image-Loader那几个开源的图片加载框架,介绍的是图形缓存策略方面包车型客车,倘诺大家对那些开源框架的使用还不打听,大家能够看看笔者以前写的一篇小说Android
开源框架Universal-Image-Loader完全解析(一)—
基本介绍及利用
,大家一般去加载大批量的图样的时候,都会做缓存策略,缓存又分为内部存款和储蓄器缓存和硬盘缓存,小编前边也写了几篇异步加载多量图纸的稿子,使用的内存缓存是LruCache这么些类,LRU是Least
Recently Used
近日至少使用算法,大家能够给LruCache设定二个缓存图片的最大值,它会自行帮我们管理好缓存的图形总大小是还是不是超过大家设定的值,
超越就删除近年来最少使用的图样,而作为贰个无敌的图片加载框架,Universal-Image-Loader自然也提供了各类图形的缓存策略,下边就来详细的介绍下

本书计算出了发言中常见适用的尺码和方法,同时,科学解释了公开讲话紧张的来由,并公布出阐述的真谛——与观者分享。在分享精神下,紧张感会自然退去。再辅以适当方法和技术,对演说内容、风格和气象进行调整,就能撼动听众,达成解说的目标。

硬盘缓存

7%—内容的非凡;

2.使用强引用和弱引用相结合的缓存有

大学结束学业已经六年时光,回看那六年的工作经验总让笔者不得不感叹那3个早已课堂之外的兴趣技能总能给大家职场生涯扩展越来越多的筹码,也让我们在工作之余能够找到一群兴趣相投的情侣互相沟通和促进成长,演说便是个中之一!

 

《魏斯曼解说圣经-说的方法》

转载请申明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请保护别人的费劲劳动成果,感激!

3演说武功-1解说是一种以思想、理性和心思感染别人、打动和激励旁人的运动,阐述者本身必须持有名贵的为人品德,才有大概战胜客官,发挥演说应有的功效。2永远不要去贬低外人。

  1. 只行使的是强引用缓存 

1 《演说的艺术》

等作者写完了那篇作品,小编才察觉FileCountLimitedDiscCache和TotalSizeLimitedDiscCache在新式的源码中曾经去除了,到场了LruDiscCache,由于自家的是事先的源码,所以本人也不改了,大家只要想要精通LruDiscCache能够去看最新的源码,笔者那里就不介绍了,幸而内部存款和储蓄器缓存的没变化,上边分析的是新型的源码中的部分,大家在利用中能够不活动安顿硬盘缓存策略,直接用DefaultConfigurationFactory中的就行了

不过切记:

FileCountLimitedDiscCache那几个类完毕逻辑跟TotalSizeLimitedDiscCache是同等的,分化在于getSize()方法,前者再次回到1,表示为文件数是1,后者再次回到文件的高低。

57%–肉体动作,表情,手势,眼神,站姿

/******************************************************************************* 
 * Copyright 2011-2013 Sergey Tarasevich 
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 * http://www.apache.org/licenses/LICENSE-2.0 
 * 
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License. 
 *******************************************************************************/  
package com.nostra13.universalimageloader.cache.disc.impl;  

import com.nostra13.universalimageloader.cache.disc.LimitedDiscCache;  
import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator;  
import com.nostra13.universalimageloader.core.DefaultConfigurationFactory;  
import com.nostra13.universalimageloader.utils.L;  

import java.io.File;  

/** 
 * Disc cache limited by total cache size. If cache size exceeds specified limit then file with the most oldest last 
 * usage date will be deleted. 
 * 
 * @author Sergey Tarasevich (nostra13[at]gmail[dot]com) 
 * @see LimitedDiscCache 
 * @since 1.0.0 
 */  
public class TotalSizeLimitedDiscCache extends LimitedDiscCache {  

    private static final int MIN_NORMAL_CACHE_SIZE_IN_MB = 2;  
    private static final int MIN_NORMAL_CACHE_SIZE = MIN_NORMAL_CACHE_SIZE_IN_MB * 1024 * 1024;  

    /** 
     * @param cacheDir     Directory for file caching. <b>Important:</b> Specify separate folder for cached files. It's 
     *                     needed for right cache limit work. 
     * @param maxCacheSize Maximum cache directory size (in bytes). If cache size exceeds this limit then file with the 
     *                     most oldest last usage date will be deleted. 
     */  
    public TotalSizeLimitedDiscCache(File cacheDir, int maxCacheSize) {  
        this(cacheDir, DefaultConfigurationFactory.createFileNameGenerator(), maxCacheSize);  
    }  

    /** 
     * @param cacheDir          Directory for file caching. <b>Important:</b> Specify separate folder for cached files. It's 
     *                          needed for right cache limit work. 
     * @param fileNameGenerator Name generator for cached files 
     * @param maxCacheSize      Maximum cache directory size (in bytes). If cache size exceeds this limit then file with the 
     *                          most oldest last usage date will be deleted. 
     */  
    public TotalSizeLimitedDiscCache(File cacheDir, FileNameGenerator fileNameGenerator, int maxCacheSize) {  
        super(cacheDir, fileNameGenerator, maxCacheSize);  
        if (maxCacheSize < MIN_NORMAL_CACHE_SIZE) {  
            L.w("You set too small disc cache size (less than %1$d Mb)", MIN_NORMAL_CACHE_SIZE_IN_MB);  
        }  
    }  

    @Override  
    protected int getSize(File file) {  
        return (int) file.length();  
    }  
}  

作者:(美) 卡迈恩-加洛

弱引用通过weakReference类来落到实处,它具备很强的不鲜明性,如若垃圾回收器扫描到持有WeakReference的目的,就会将其回收释放内部存储器

5《高效演讲-亚拉巴马香槟分校最受欢迎的调换课》

 

2 提高专业度,大家演说的载体就是善于的天地。鲜明我们大饱眼福的学问载体:时间管理;电商,摄影;人力财富;收纳,经营销售策划等,显著你是哪个领域的专家!

 

作者:杰瑞·魏斯曼

下边大家就来分析分析TotalSizeLimitedDiscCache的源码达成

2《Jobs的魔力演说》

 

《高效演说-加州Berkeley分校最受欢迎的交流课》

  假使大家在ImageLoaderConfiguration中配备了diskCacheSize和diskCacheFileCount,他就动用的是LruDiscCache,不然使用的是UnlimitedDiscCache,在最新的源码中还有3个硬盘缓存类能够配备,那正是LimitedAgeDiscCache,能够在ImageLoaderConfiguration.diskCache(…)配置

《Jobs的魔力阐述》

  • WeakMemoryCache(这些类缓存bitmap的总大小没有限定,唯一不足的地点正是不平静,缓存的图纸简单被回收掉)

三  视觉协理系统

/******************************************************************************* 
 * Copyright 2011-2013 Sergey Tarasevich 
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 * http://www.apache.org/licenses/LICENSE-2.0 
 * 
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License. 
 *******************************************************************************/  
package com.nostra13.universalimageloader.cache.disc;  

import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator;  
import com.nostra13.universalimageloader.core.DefaultConfigurationFactory;  

import java.io.File;  
import java.util.Collections;  
import java.util.HashMap;  
import java.util.Map;  
import java.util.Map.Entry;  
import java.util.Set;  
import java.util.concurrent.atomic.AtomicInteger;  

/** 
 * Abstract disc cache limited by some parameter. If cache exceeds specified limit then file with the most oldest last 
 * usage date will be deleted. 
 * 
 * @author Sergey Tarasevich (nostra13[at]gmail[dot]com) 
 * @see BaseDiscCache 
 * @see FileNameGenerator 
 * @since 1.0.0 
 */  
public abstract class LimitedDiscCache extends BaseDiscCache {  

    private static final int INVALID_SIZE = -1;  

    //记录缓存文件的大小  
    private final AtomicInteger cacheSize;  
    //缓存文件的最大值  
    private final int sizeLimit;  
    private final Map<File, Long> lastUsageDates = Collections.synchronizedMap(new HashMap<File, Long>());  

    /** 
     * @param cacheDir  Directory for file caching. <b>Important:</b> Specify separate folder for cached files. It's 
     *                  needed for right cache limit work. 
     * @param sizeLimit Cache limit value. If cache exceeds this limit then file with the most oldest last usage date 
     *                  will be deleted. 
     */  
    public LimitedDiscCache(File cacheDir, int sizeLimit) {  
        this(cacheDir, DefaultConfigurationFactory.createFileNameGenerator(), sizeLimit);  
    }  

    /** 
     * @param cacheDir          Directory for file caching. <b>Important:</b> Specify separate folder for cached files. It's 
     *                          needed for right cache limit work. 
     * @param fileNameGenerator Name generator for cached files 
     * @param sizeLimit         Cache limit value. If cache exceeds this limit then file with the most oldest last usage date 
     *                          will be deleted. 
     */  
    public LimitedDiscCache(File cacheDir, FileNameGenerator fileNameGenerator, int sizeLimit) {  
        super(cacheDir, fileNameGenerator);  
        this.sizeLimit = sizeLimit;  
        cacheSize = new AtomicInteger();  
        calculateCacheSizeAndFillUsageMap();  
    }  

    /** 
     * 另开线程计算cacheDir里面文件的大小,并将文件和最后修改的毫秒数加入到Map中 
     */  
    private void calculateCacheSizeAndFillUsageMap() {  
        new Thread(new Runnable() {  
            @Override  
            public void run() {  
                int size = 0;  
                File[] cachedFiles = cacheDir.listFiles();  
                if (cachedFiles != null) { // rarely but it can happen, don't know why  
                    for (File cachedFile : cachedFiles) {  
                        //getSize()是一个抽象方法,子类自行实现getSize()的逻辑  
                        size += getSize(cachedFile);  
                        //将文件的最后修改时间加入到map中  
                        lastUsageDates.put(cachedFile, cachedFile.lastModified());  
                    }  
                    cacheSize.set(size);  
                }  
            }  
        }).start();  
    }  

    /** 
     * 将文件添加到Map中,并计算缓存文件的大小是否超过了我们设置的最大缓存数 
     * 超过了就删除最先加入的那个文件 
     */  
    @Override  
    public void put(String key, File file) {  
        //要加入文件的大小  
        int valueSize = getSize(file);  

        //获取当前缓存文件大小总数  
        int curCacheSize = cacheSize.get();  
        //判断是否超过设定的最大缓存值  
        while (curCacheSize + valueSize > sizeLimit) {  
            int freedSize = removeNext();  
            if (freedSize == INVALID_SIZE) break; // cache is empty (have nothing to delete)  
            curCacheSize = cacheSize.addAndGet(-freedSize);  
        }  
        cacheSize.addAndGet(valueSize);  

        Long currentTime = System.currentTimeMillis();  
        file.setLastModified(currentTime);  
        lastUsageDates.put(file, currentTime);  
    }  

    /** 
     * 根据key生成文件 
     */  
    @Override  
    public File get(String key) {  
        File file = super.get(key);  

        Long currentTime = System.currentTimeMillis();  
        file.setLastModified(currentTime);  
        lastUsageDates.put(file, currentTime);  

        return file;  
    }  

    /** 
     * 硬盘缓存的清理 
     */  
    @Override  
    public void clear() {  
        lastUsageDates.clear();  
        cacheSize.set(0);  
        super.clear();  
    }  


    /** 
     * 获取最早加入的缓存文件,并将其删除 
     */  
    private int removeNext() {  
        if (lastUsageDates.isEmpty()) {  
            return INVALID_SIZE;  
        }  
        Long oldestUsage = null;  
        File mostLongUsedFile = null;  

        Set<Entry<File, Long>> entries = lastUsageDates.entrySet();  
        synchronized (lastUsageDates) {  
            for (Entry<File, Long> entry : entries) {  
                if (mostLongUsedFile == null) {  
                    mostLongUsedFile = entry.getKey();  
                    oldestUsage = entry.getValue();  
                } else {  
                    Long lastValueUsage = entry.getValue();  
                    if (lastValueUsage < oldestUsage) {  
                        oldestUsage = lastValueUsage;  
                        mostLongUsedFile = entry.getKey();  
                    }  
                }  
            }  
        }  

        int fileSize = 0;  
        if (mostLongUsedFile != null) {  
            if (mostLongUsedFile.exists()) {  
                fileSize = getSize(mostLongUsedFile);  
                if (mostLongUsedFile.delete()) {  
                    lastUsageDates.remove(mostLongUsedFile);  
                }  
            } else {  
                lastUsageDates.remove(mostLongUsedFile);  
            }  
        }  
        return fileSize;  
    }  

    /** 
     * 抽象方法,获取文件大小 
     * @param file 
     * @return 
     */  
    protected abstract int getSize(File file);  
}  

每一回演说都是三回IPO路演。小编杰里 • 魏斯曼指出:解说者说了怎么以及怎么着说比她显示了怎么更重视,本书中将教给你说的章程,让你在每贰回演讲中都说服每1个人观众,那也是您演讲制胜的样板。

ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)  
        .memoryCache(new WeakMemoryCache())  
        .build();  

3 画面统一,切忌太乱(经典字体:微软雅黑)

今后我们来看Universal-Image-Loader有哪些内部存款和储蓄器缓存策略

视觉支持系统

  • FileCountLimitedDiscCache(能够设定缓存图片的个数,当跨越设定值,删除掉初步到场到硬盘的文件)
  • LimitedAgeDiscCache(设定文件存活的最长日子,当跨越这一个值,就删除该文件)
  • TotalSizeLimitedDiscCache(设定缓存bitmap的最大值,当跨越那一个值,删除初叶参预到硬盘的文件)
  • UnlimitedDiscCache(这几个缓存类没有别的的限制)

3 积累故事,笑话等生活片段,永远不要让你的发言无趣。

内部存储器缓存

文化系统

 

五  心态类别

  • LruMemoryCache(那一个类就是以此开源框架暗中认可的内存缓存类,缓存的是bitmap的强引用,上边小编会从源码下边分析那个类)

  下边我们来分析LruMemoryCache这些类的源代码

每贰个系统里面都离不开大家常见的文化积累和种类的磨砺,正所谓“台上一分钟,台下十年功”的就是其一意思。

 

奥斯卡获奖影片《太岁的解说》

 

苹果集团创办者史蒂夫•Jobs是世界舞台上最具沟通魔力的大师级人物,也是全球最善于掳获人心的发言者,任哪个人与他对照都以小于。“演说,已经济体改成商业沟通的画龙点睛。

昨日就给大家大饱眼福到那里,有不驾驭的地点在底下留言,作者会尽量为大家解答的,下一篇文章作者将持续更透彻的剖析这几个框架,希望大家持续关切!

大家恐怕都看过希特勒对着镜子演习解说的画面?我们或然都看过奥斯卡电影《天子的演说》?是的,对于我们每一个人来阐述讲并非天赋的二只,它来自大家后天的缕缕磨炼。

首先大家来打听下何以是强引用和哪些是弱引用?

5.影响力-提高影响力,影响力便是说服力

地点介绍了Universal-Image-Loader所提供的享有的内部存储器缓存的类,当然大家也足以应用大家分甘同苦写的内部存储器缓存类,大家还要看看要怎么将这个内部存款和储蓄器缓存投入到大家的体系中,大家只须求安排ImageLoaderConfiguration.memoryCache(…),如下

 职场修炼,你无法不有所的演说技巧

小编们看DefaultConfigurationFactory这一个类的createDiskCache()方法


 

在解说这条路上作者直接都以个学习者,笔者期望和多数好感分享的同窗合伙发展!那里给大家推荐五本学习解说的图书《演说的办法》 《魏斯曼解说圣经-说的点子》  《TED演讲的秘密-18分钟改变世界》《Jobs的魔力演说》《高效演说-合肥希伯来最受欢迎的沟通课》

  我们得以看来这一个类中维护的是3个LinkedHashMap,在LruMemoryCache构造函数中我们得以见见,大家为其设置了三个缓存图片的最大值maxSize,并实例化LinkedHashMap,
而从LinkedHashMap构造函数的第多个参数为ture,表示它是根据访问顺序实行排序的,
我们来看将bitmap加入到LruMemoryCache的法子put(String
key, Bitmap value),
 第伍1行,sizeOf()是精打细算每张图片所占的byte数,size是记录当前缓存bitmap的总大小,就算该key在此以前就缓存了bitmap,大家供给将事先的bitmap减掉去,接下去看trimToSize()方法,大家直接看86行,假设当前缓存的bitmap总数小于设定值maxSize,不做其余处理,要是当前缓存的bitmap总数抢先maxSize,删除LinkedHashMap中的第3个元素,size中减去该bitmap对应的byte数

有关解说学习,作者这里计算了支撑解说的中国共产党第五次全国代表大会种类,小编简单做了3个合计导图如下:

  在构造方法中,第肆9行有3个艺术calculateCacheSizeAndFillUsageMap(),该方法是计量cacheDir的文件大小,并将文件和文书的终极修改时间进入到Map中

《解说的不二法门》被称呼“演说环球第③书”,该书极为周密系统的上书三大学一年级部分——演讲的流水生产线设计(话题选拔、客官分析、资料搜集、论点支撑、内容设计等),演讲的抒发规范(道德标准、表述语言、传达艺术、帮衬材料、倾听技巧等).各样演讲的技能(告知型解说、说服型阐述、特殊场馆作演出讲、小团体解说等)。实用、操作,是本书经久不衰的另一缘由。

 

7/38/55这个是沟通阐述学中的多个豪门纯熟的定律。解说各种部分所占比重为:

3.只利用弱引用缓存

大家率先来聊一聊演说到底有怎么样好处吗?

强引用是指创设一个对象并把这几个目的赋给2个引用变量, 强引用有引用变量指向时永远不会被垃圾回收。固然内部存储器不足的时候宁愿报OOM也不被垃圾回收器回收,大家new的靶子都以强引用

1要学会讲传说,故事永远比道理更打动人。

然后是将文件参加硬盘缓存的办法put(),在106行判断当前文件的缓存总数加上即将要参与缓存的文件大小是不是当先缓存设定值,假使跨越了进行removeNext()方法,接下去就来看看那么些格局的现实落到实处,150-1第67中学找出第华为入硬盘的文书,169-180中将其从文件硬盘中删去,并赶回该文件的深浅,删除成功以往成员变量cacheSize须要减小改文件大小。

1.密集-凝聚团队向心力

大家得以看来该缓存类相比较不难,逻辑也相比较明晰,假如大家想清楚别的内存缓存的逻辑,能够去分析分析其源码,在此处自身简单说下FIFOLimitedMemoryCache的兑现逻辑,该类应用的HashMap来缓存bitmap的弱引用,然后选取LinkedList来保存成功进入到FIFOLimitedMemoryCache的bitmap的强引用,假如投入的FIFOLimitedMemoryCache的bitmap总数当先限定值,直接删除LinkedList的第2个成分,所以就兑现了先进先出的缓存策略,别的的缓存都类似,有趣味的可以去看望。

要在18分钟内打动观者,要求全部超强的解说技巧。本书从内容和技巧两方面动手,揭发解说内容震撼人心的隐衷,分析演说者引爆现场的技能,帮您克制比寿终正寝更可怕的演讲。

  • UsingFreqLimitedMemoryCache(如果缓存的图样总量超越限定值,先删除使用频率最小的bitmap)
  • LRULimitedMemoryCache(这么些也是行使的lru算法,和LruMemoryCache分歧的是,他缓存的是bitmap的弱引用)
  • FIFOLimitedMemoryCache(先进先出的缓存策略,当跨越设定值,先删除先河加入缓存的bitmap)
  • LargestLimitedMemoryCache(当跨越缓存限定值,先删除最大的bitmap对象)
  • LimitedAgeMemoryCache(当
    bitmap参与缓存中的时间超过大家设定的值,将其删除)

宝剑锋从磨砺出,红绿梅香自苦寒来!祝愿我们每一种人都能学以致用,职场通达!

  那个类是继承LimitedDiscCache,除了八个构造函数之外,还重写了getSize()方法,再次来到文件的大大小小,接下去大家就来看看LimitedDiscCache

自个儿信任广怀化伴还足以讲出很多发言的补益,确实那个都以实事求是存在的价值。不管是大家一贯生存依旧职场必要,只要有交换的地方,就有见解的传达,就有心思感染,就会有话语权的平衡!

管理, 

四  演说主题系统

 

三幕剧,显示Jobs的上演魅力!二种修炼,让您与Jobs看齐!

/** 
 * Creates default implementation of {@link DiskCache} depends on incoming parameters 
 */  
public static DiskCache createDiskCache(Context context, FileNameGenerator diskCacheFileNameGenerator,  
        long diskCacheSize, int diskCacheFileCount) {  
    File reserveCacheDir = createReserveDiskCacheDir(context);  
    if (diskCacheSize > 0 || diskCacheFileCount > 0) {  
        File individualCacheDir = StorageUtils.getIndividualCacheDirectory(context);  
        LruDiscCache diskCache = new LruDiscCache(individualCacheDir, diskCacheFileNameGenerator, diskCacheSize,  
                diskCacheFileCount);  
        diskCache.setReserveCacheDir(reserveCacheDir);  
        return diskCache;  
    } else {  
        File cacheDir = StorageUtils.getCacheDirectory(context);  
        return new UnlimitedDiscCache(cacheDir, reserveCacheDir, diskCacheFileNameGenerator);  
    }  
}  

6.信心-突破本性,进步信心

package com.nostra13.universalimageloader.cache.memory.impl;  

import android.graphics.Bitmap;  
import com.nostra13.universalimageloader.cache.memory.MemoryCacheAware;  

import java.util.Collection;  
import java.util.HashSet;  
import java.util.LinkedHashMap;  
import java.util.Map;  

/** 
 * A cache that holds strong references to a limited number of Bitmaps. Each time a Bitmap is accessed, it is moved to 
 * the head of a queue. When a Bitmap is added to a full cache, the Bitmap at the end of that queue is evicted and may 
 * become eligible for garbage collection.<br /> 
 * <br /> 
 * <b>NOTE:</b> This cache uses only strong references for stored Bitmaps. 
 * 
 * @author Sergey Tarasevich (nostra13[at]gmail[dot]com) 
 * @since 1.8.1 
 */  
public class LruMemoryCache implements MemoryCacheAware<String, Bitmap> {  

    private final LinkedHashMap<String, Bitmap> map;  

    private final int maxSize;  
    /** Size of this cache in bytes */  
    private int size;  

    /** @param maxSize Maximum sum of the sizes of the Bitmaps in this cache */  
    public LruMemoryCache(int maxSize) {  
        if (maxSize <= 0) {  
            throw new IllegalArgumentException("maxSize <= 0");  
        }  
        this.maxSize = maxSize;  
        this.map = new LinkedHashMap<String, Bitmap>(0, 0.75f, true);  
    }  

    /** 
     * Returns the Bitmap for {@code key} if it exists in the cache. If a Bitmap was returned, it is moved to the head 
     * of the queue. This returns null if a Bitmap is not cached. 
     */  
    @Override  
    public final Bitmap get(String key) {  
        if (key == null) {  
            throw new NullPointerException("key == null");  
        }  

        synchronized (this) {  
            return map.get(key);  
        }  
    }  

    /** Caches {@code Bitmap} for {@code key}. The Bitmap is moved to the head of the queue. */  
    @Override  
    public final boolean put(String key, Bitmap value) {  
        if (key == null || value == null) {  
            throw new NullPointerException("key == null || value == null");  
        }  

        synchronized (this) {  
            size += sizeOf(key, value);  
            Bitmap previous = map.put(key, value);  
            if (previous != null) {  
                size -= sizeOf(key, previous);  
            }  
        }  

        trimToSize(maxSize);  
        return true;  
    }  

    /** 
     * Remove the eldest entries until the total of remaining entries is at or below the requested size. 
     * 
     * @param maxSize the maximum size of the cache before returning. May be -1 to evict even 0-sized elements. 
     */  
    private void trimToSize(int maxSize) {  
        while (true) {  
            String key;  
            Bitmap value;  
            synchronized (this) {  
                if (size < 0 || (map.isEmpty() && size != 0)) {  
                    throw new IllegalStateException(getClass().getName() + ".sizeOf() is reporting inconsistent results!");  
                }  

                if (size <= maxSize || map.isEmpty()) {  
                    break;  
                }  

                Map.Entry<String, Bitmap> toEvict = map.entrySet().iterator().next();  
                if (toEvict == null) {  
                    break;  
                }  
                key = toEvict.getKey();  
                value = toEvict.getValue();  
                map.remove(key);  
                size -= sizeOf(key, value);  
            }  
        }  
    }  

    /** Removes the entry for {@code key} if it exists. */  
    @Override  
    public final void remove(String key) {  
        if (key == null) {  
            throw new NullPointerException("key == null");  
        }  

        synchronized (this) {  
            Bitmap previous = map.remove(key);  
            if (previous != null) {  
                size -= sizeOf(key, previous);  
            }  
        }  
    }  

    @Override  
    public Collection<String> keys() {  
        synchronized (this) {  
            return new HashSet<String>(map.keySet());  
        }  
    }  

    @Override  
    public void clear() {  
        trimToSize(-1); // -1 will evict 0-sized elements  
    }  

    /** 
     * Returns the size {@code Bitmap} in bytes. 
     * <p/> 
     * An entry's size must not change while it is in the cache. 
     */  
    private int sizeOf(String key, Bitmap value) {  
        return value.getRowBytes() * value.getHeight();  
    }  

    @Override  
    public synchronized final String toString() {  
        return String.format("LruCache[maxSize=%d]", maxSize);  
    }  
}  

=

接下去就给我们解析分析硬盘缓存的国策,这些框架也提供了二种常见的缓存策略,当然假诺你认为都不符合您的渴求,你也得以友善去扩展


2并行- a 听众距离拉近  ;b 加速接受古板想法的进程; c 学会发问

作者: 彼得•迈尔斯 (Peter Meyers) / 尚恩•尼克斯 (Shann Nix)

2.倡导-宣扬理念,创设文化

2 监制理论-你是半场演说的编剧,掌握控制者整个演说的节拍!要你还在台上,你正是高于。演说者永远是锲而不舍外人,尽管讲错了也要一而再讲下去!

发言宗旨

3.公共关系-危害处理

38%–语调声音的柔和顿挫,心情的感染;

作者:[美]史迪芬.E.卢卡斯 著

一些解说是不停道来,有的演说是心思洋溢,有的解说是远大,不管风格怎样,以下的几点都以大家在解说的长河必然会采纳到的技能。

4《TED演讲的私人住房-18秒钟改变世界》

3 创设—一种形容事物的能力或表明力,从而激发起人们心灵的情愫和欲望。 如何构建?必须询问大家想要什么?八种颜色的人

  1. 销售-销售自个儿,销售产品,销售集团

别用“天才”来偷天换日,它只是申明您的好逸恶劳而已。

教练种类

一 知识系统

教练实际就在大家点滴日常之中:1朗读背诵  2对着镜子陶冶  3笔者录音录像 
4即兴发言  5模仿法  6剧中人物扮演法  7写日记  8多找时机上场。

1 我们要有雅量学问储备,阅读是最棒的方法,把文化转化为大家的行为!

演说真切会给我们的职场生涯争分,甚至很多供销合作社精于PPT设计的演讲高手会获得越多的升官机会。虽显功利,确实实言。关于演说,小编和重重职场人同样都在频频的成人中,希望笔者的享受对大家有个别拉拉扯扯。

4.人脉-呈现人格吸重力,建立人脉

《TED演说的机要-18分钟改变世界》

中国共产党第五次全国代表大会种类

《解说的不二法门》

作者: [美] 杰瑞米•多诺万(Jememey Donovan)

3《魏斯曼演讲圣经-说的方法》

希特勒演习解说


1 木头理论-制服恐惧的心怀,把下部的客官都想象成一群木头。人就此害怕解说,是因为想像中的害怕比实际中的恐怖大数百倍!

1 切忌文字太多。PPT在演说中应当平素扮演着帮手的剧中人物,他的机能应该是帮助于演讲者的抒发。假如大家把各种反过来,事情就变了寓意。

8. 享受-授人以渔,成长别人

人身表明

直接以来作者毕竟1个特性相比内向的人,日常相当的小爱说道,总害怕与第③者交换调换,所以高校时代笔者主旨都在体育场面安静度过。不过我精晓自家心里是心弛神往讲台和发挥,小编也深入了解演说足以突破特性的弱点,把小编双鱼座的心绪释放出来。

脾性色彩

二  磨练系统

发言是人们都有的一种神秘的能力,难点在于每一个人是或不是察觉、发展和应用那种资质。

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注