bitmap

Reids之缓存雪崩、缓存穿透

与世无争的帅哥 提交于 2020-02-10 14:12:29
1、缓存雪崩 缓存雪崩指的是原有的缓存数据出现了大批量的缓存过期,造成一时间大批量并发请求都到了数据库,造成数据库的压力激增,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。 【解决方案】 从上面的分析可以看出只有当缓存同时大批量过期的时候,才会出现缓存雪崩的情形,所以只要想办法让缓存过期的时间分散开来即可。那方法就多了,比如说将热数据的缓存时间设置长一点,冷数据的过期时间设置得短一点,另外数据也可以分类设置不同的过期时间,或者加一个随机扰乱因子。 2、缓存穿透 缓存穿透是指查询一个不存在于缓存且不存在于数据库的数据,这时如果遭到恶意攻击,频繁地请求这个缺失数据,必然会每次都要读缓存和读数据库,增加了数据库的压力负担。 【解决方案】 对于缺失的数据,每次请求完数据库之后,都要更新到缓存,设置其key对应的value为空即可。这样当下一次请求该缺失数据对应的key,就可以直接通过缓存判断了,不需要再去请求数据库。 ——缺点:显然,当数据缺失很多的时候,必然会极大地浪费缓存的内存空间。 采取bloom filter(布隆过滤器),布隆过滤器的原理如下。 3、布隆过滤器 首先明确我们要解决的问题,即如何快速判断一个数据是否存在于数据库中。那我们自然而然想到的便是采取hash思想,只需要将数据库中的所有数据key存储到一个hash结构中,便可以快速判断

Android笔记--Bitmap

余生颓废 提交于 2020-02-09 03:26:16
Android | Bitmap解析 Android中Bitmap是对图像的一种抽象。通过他可以对相应的图像进行剪裁,旋转,压缩,缩放等操作。这里循序渐进的一步步了解Bitmap的相关内容。 先了解Bitmap相关的API,然后根据API进一步了解内部的实现。 1.生成Bitmap--BitmapFactory android.graphics.Bitmap.java /** * Private constructor that must received an already allocated native bitmap * int (pointer). */ // called from JNI Bitmap类中只有一个构造器。而且还不能直接调,必须通过JNI去构造 Bitmap(long nativeBitmap, byte[] buffer, int width, int height, int density, boolean isMutable, boolean requestPremultiplied, byte[] ninePatchChunk, NinePatch.InsetStruct ninePatchInsets) { ... } Bitmap类中只有一个构造器。而且还不能直接调,必须通过JNI去构造。源码中已经写的很清楚

Android Bitmap

筅森魡賤 提交于 2020-02-09 03:19:48
1. 初识Bitmap Bitmap是一个final类,因此不能被继承。Bitmap只有一个构造方法,且该构造方法是没有任何访问权限修饰符修饰,也就是说该构造方法是friendly,但是谷歌称Bitmap的构造方法是private(私有的),感觉有点不严谨。不管怎样,一般情况下,我们不能通过构造方法直接新建一个Bitmap对象。 Bitmap是Android系统中的图像处理中最重要类之一。Bitmap可以获取图像文件信息,对图像进行剪切、旋转、缩放,压缩等操作,并可以以指定格式保存图像文件。 2. 创建Bitmap对象 既然不能直接通过构造方法创建Bitmap,那怎样才能创建Bitmap对象。通常我们可以利用Bitmap的静态方法 createBitmap() 和BitmapFactory的 decode 系列静态方法创建Bitmap对象。 Bitmap的静态方法 createBitmap() BitmapFactory的 decode 系列静态方法 3. Bitmap的颜色配置信息与压缩方式信息 Bitmap中有两个内部枚举类: Config 和 CompressFormat , Config 是用来设置颜色配置信息的, CompressFormat 是用来设置压缩方式的。 Config 解析: 通常我们优化Bitmap时,当需要做性能优化或者防止OOM(Out Of

Android Bitmap 常见的几个操作:缩放,裁剪,旋转,偏移

泪湿孤枕 提交于 2020-02-08 23:18:02
Android Bitmap 相关操作 常见的几个操作:缩放,裁剪,旋转,偏移 很多操作需要 Matrix 来支持;Matrix 通过矩阵来处理位图,计算出各个像素点的位置,从而把bitmap显示出来。 matrix里有一个3x3的矩阵,用于图像处理: MSCALE_X MSKEW_X MTRANS_X MSKEW_Y MSCALE_Y MTRANS_Y MPERSP_0 MPERSP_1 MPERSP_2 根据变量名能猜出具体的用途: 缩放X 偏移X 平移X 偏移Y 缩放Y 平移Y 透视0 透视1 透视2 matrix的操作有set,pre和post;set能够直接设置矩阵中的数值;pre类似于矩阵左乘;post类似与矩阵中的右乘 原bitmap经过计算后,会重新生成一张bitmap 代码片段: /** * 根据给定的宽和高进行拉伸 * * @param origin 原图 * @param newWidth 新图的宽 * @param newHeight 新图的高 * @return new Bitmap */ private Bitmap scaleBitmap(Bitmap origin, int newWidth, int newHeight) { if (origin == null) { return null; } int height = origin

Linux OpenGL 实践篇-16 文本绘制

穿精又带淫゛_ 提交于 2020-02-07 04:19:30
文本绘制   本文主要射击Freetype的入门理解和在OpenGL中实现文字的渲染。 freetype   freetype的官网,本文大部分内容参考 https://www.freetype.org/freetype2/docs/tutorial/step1.html#section-2 library   FreeType中的library其类型是FT_Library,定义如下: typedef struct FT_LibraryRec_ *FT_Library;   所以可以简单的理解为一个FT_LibraryRec_的对象,虽然FreeType用c写的,但这个地方不妨碍我们使用对象来理解它。因为_LibraryRec_我并没有看到源代码,具体包含哪些内容我并不清楚。但根据其用法,可以推测其应该是一些字体上下文的内容,比如缓存、内存管理等。 FT_Error = FT_Init_Freetype(&library); face   一个face可以理解为字体的描述或者说字形的集合,比如“Times New Roman Regular"表示正常的新罗马字体,而"Times New Roman Italic"表示新罗马字体的斜体表示。一个字体文件中可以嵌入多个face,我们可以通过下面的API加载特定的face:    FT_Error FT_New_Face(FT

数据库索引

走远了吗. 提交于 2020-02-06 03:15:30
1.为什么要使用索引 因为索引可以避免全表扫描查找数据,提升检索效率。 2.什么样的信息能成为索引 主键、唯一键等,只要是让数据具备一定区分性的字段都能成为索引 3.索引的数据结构 主流为B±tree 还有Hash结构和 BitMap结构; Mysql数据库不支持BitMap索引,基于InnoDB和Myisam引擎的Mysql不支持显示Hash 来源: CSDN 作者: 梨子果果哟 链接: https://blog.csdn.net/qq_42931883/article/details/104181047

Extract area detected by color using OpenCV in Android

戏子无情 提交于 2020-02-05 13:09:27
问题 The sample project named "color-blob-detection" that comes with the openCV SDK for android can be used to identify an area of a particular color. What I require is to extract that area and save it into the phone memory as a bitmap. This is what I have understood so far: There is a list of contours: List<MatOfPoint> contours = new ArrayList<MatOfPoint>(); Contours are found using: Imgproc.findContours(mDilatedMask, contours, mHierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE); This

Picaso完美兼容OkHttp3.3,缓存优化两不误 - Tamic Developer\"s Blog

断了今生、忘了曾经 提交于 2020-02-05 09:23:56
为何在Fresco,Glide这么强大的背景下,我又想起了当初的Picasso,又为何写这篇文章?是因为最近项目采用了square公司的RxAndroid,Retrfit和OKhttp, 不得不联想到这个公司曾经还有款图片加载Picasso,所以采用了square公司的全家桶来进行项目开发,为了减少开发成本和也防止Apk增大,毕竟一个公司的框架之前兼容性不用担心,那么请让我们回顾一下Picass之路 首先先让我们看看主流图片加载库 Picasso,Square公司的开源项目 ,和Square的网络库一起能发挥最大作用。占用内存小,自身不带缓存,需依赖OKhttps实现缓存,不支持gif图片 Fresco,FB的明星项目,也是2015最火的项目之一,匿名共享缓存等机制保证低端机表现极佳,但是源代码基于C/C++,阅读困难度提升。效率高,sdk库占用包体积比较大 Glide,Google员工私人项目,但是Google很多项目在用,占用内存小,减低oom更靠谱,相对Picasso在Gif方面有优势,并自带缓存功能! 我做了一个实验对比 用一个普通listview加载50张图片,并快速滑动列表,下面分别是glide和picasso消耗内存图 分析后得出 一个占用内存大 一个占用cpu资源大, 这种区别是由于picasso只缓存一张大图,每次加载根据imagview的大小裁剪

Can you set a DDB on Static Picture Control

你离开我真会死。 提交于 2020-02-05 08:08:01
问题 I have the picture control created with SS_BITMAP style and bitmap created on a memory DC. so can or how can you set the HBITMAP of a DDB for the control? It doesn't work with using: Edit: HDC hDC = GetDC(hPB); //hPB, Handle to static control. HDC hMemDC = ::CreateCompatibleDC(hDC); HBITMAP hDDB = ::CreateCompatibleBitmap(hDC, 17, 14); SelectObject(hMemDC, hDDB); //Draw on DDB SendMessage(hPB, STM_SETIMAGE, IMAGE_BITMAP, LPARAM(hDDB)); DeleteObject(hDDB); DeleteObject(hBrush); ReleaseDC(hPB,

Can you set a DDB on Static Picture Control

馋奶兔 提交于 2020-02-05 08:07:33
问题 I have the picture control created with SS_BITMAP style and bitmap created on a memory DC. so can or how can you set the HBITMAP of a DDB for the control? It doesn't work with using: Edit: HDC hDC = GetDC(hPB); //hPB, Handle to static control. HDC hMemDC = ::CreateCompatibleDC(hDC); HBITMAP hDDB = ::CreateCompatibleBitmap(hDC, 17, 14); SelectObject(hMemDC, hDDB); //Draw on DDB SendMessage(hPB, STM_SETIMAGE, IMAGE_BITMAP, LPARAM(hDDB)); DeleteObject(hDDB); DeleteObject(hBrush); ReleaseDC(hPB,