自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (7)
  • 收藏
  • 关注

原创 java多线程及同步那些事

一.多线程的实现方式 1.继承Thread类重写run()方法 2.实现Runnable接口,new Thread(Runnable接口) 3.实现Callable接口通过FutureTask包装器来创建Thread线程 4.使用ExecutorService、Callable、Future实现有返回结果的线程ExecutorService、Callable、Future三个接口实际上都是

2018-01-06 09:32:19 306

原创 Android组件模块间解耦及通信轻量级实现方案

Android组件模块间解耦及通信轻量级实现方案。随着Android APP业务需求的不断迭代,业务功能越来越多,代码量也越来越多,组件间难免会因为方法功能调用页面访问等场景存在相互访问依赖耦合。为此,探索一种可行方案彻底解决组件模块间耦合同时还能满足组件间相互通信访问显得十分必要。经过不断努力探索调研结合过去工作经验项目总结推出本方案。.........

2022-08-01 16:29:36 1408 1

原创 Android界面显示_视图Choreographer控制

Android界面显示_视图Choreographer控制GPU/CPU生产帧率和屏幕消费帧率的生产者消费者模式掉帧,双缓存,三缓存SurfaceFlinger进程发出vsync信号Choreographer(ThreadLocal持有,即ui线程持有)负责获取Vsync同步信号并控制App线程(主线程)完成图像绘制的类主线程中初始化变量时,创建Choreographer对象,绑定主线程LooperChoreographer通过DisplayEventReceiver通过

2020-05-10 18:16:02 414

原创 JVM运行数据区加载.class文件及new一个对象的过程,JVM运行时数据区

JVM创建对象过程new一个实例,如new People()到Class文件信息的常量池中检查是否有People这个类的符号引用,没有就执行【类加载过程】为People对象去堆分配内存(分配的大小已在类加载过程中确定),默认分到Eden区,进行一次GC后没被回收才转移到Survivor区。两种分配方式:指针碰撞(堆规整,直接内存整移一份当前对象实例大小即可)、空闲列表(堆不规整,用列表记录那些内存可用)注意点:带有压缩功能的垃圾收集器(如Serial、ParNew)才使java堆规整

2020-05-09 18:12:57 416

原创 统计project中重复图片

#!/usr/bin/python# -*- coding: utf-8 -*-### Copyright (C) 2019 created by djliuimport osimport sysimport shutilfrom hashlib import md5if sys.getdefaultencoding() != 'utf-8': reload(sys)...

2020-04-10 21:21:15 211

原创 统计ajx中重复图片

#!/usr/bin/python# -*- coding: utf-8 -*-### Copyright (C) 2019 created by djliuimport osimport sysimport shutilfrom hashlib import md5if sys.getdefaultencoding() != 'utf-8': reload(sys)...

2020-04-10 21:19:55 154

原创 C++11:右值引用/拷贝构造函数/移动构造函数/转移赋值函数等

右值引用:右值引用移动构造函数:移动构造函数

2020-01-30 15:43:19 855

原创 不要返回局部对象的引用,也不要返回函数内部用 new 初始化的 指针的对象

一.不要返回局部对象的引用testcc.cpp代码如下:#include <iostream>using namespace std;class testa{ private: int i; public: testa(const int m) { cout << "create a object\n"; ...

2019-09-19 22:07:10 553

转载 GCC常用 编译命令

原文:https://blog.csdn.net/bible_reader/article/details/80210880一. 常用编译命令选项假设源程序文件名为test.c。无选项编译链接用法:#gcc test.c作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。选项 -o用法:#gcc test.c -o test...

2019-09-18 11:29:06 713 1

原创 c/c++值传递,引用传递问题

例子:#include <iostream>using namespace std;void test1( int *a1 ){ cout<< "&a1 = " << a1 << endl; a1 = new int( 5 ); cout<< "&a11 = " << a1 <&l...

2019-07-30 14:48:43 354

原创 java 23种设计模式

代理模式代理模式的实质可以理解是处于安全考虑,不愿意把真实干活的对象暴露给访问者,可能真实干活的对象角色比较重要或者有权限问题等等原因,不愿意把真实干活的对象暴露给调用者,这个时候可以设计成代理模式,让调用者通过访问代理对象,而不知道具体的干活对象,这就是代理模式。当然代理对象是持有干活对象的。例子:显示一张图片功能:创建一个接口Image.javapublic interface...

2019-06-07 23:23:30 107

原创 Android面试指南

一.java/android重要基础知识: 1.重要连接 https://github.com/GeniusVJR/LearningNotes https://github.com/Mr-YangCheng/ForAndroidInterview https://github.com/lizhangqu/corelink 2.java常见垃圾回收算法 a.引用计数算法(相互引用问

2018-01-11 21:27:47 312

原创 android中js和java通行好文

JsBridge实现JavaScript和Java的互相调用 https://mp.weixin.qq.com/s?__biz=MzI1NjEwMTM4OA==&mid=2651231789&idx=1&sn=f11650ad0e18ddc12ece6e7559d5084c&mpshare=1&scene=23&srcid=1228jv8u4WGNxPJvLblO1UOr#rd github上J

2017-12-28 18:46:17 216

原创 android jni,native开发

谁创建谁销毁,谁分配谁释放——JNI调用时的内存管理 https://mp.weixin.qq.com/s?__biz=MzI1NjEwMTM4OA==&mid=2651231738&idx=1&sn=21414f082dd945316b7a28caa0965bcc&mpshare=1&scene=23&srcid=1228PpejDer6SMFYyOdwpMkA#rd JNI完全指南(一)——

2017-12-28 18:18:34 348

原创 c/c++字符串操作

strcpy(char destination[], const char source[]); 功能:将字符串source拷贝到字符串destination中 例程: #include <iostream.h> #include <string.h> void main(void) {   char str1[10] = { "TsinghuaOK"};   char str

2017-11-16 15:12:45 318

原创 c/c++中 const修飾符

const修饰普通变量和指针 const修饰变量,一般有两种写法: const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。 对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value只不可变。 例如: const int nValue; //nV

2017-11-14 17:59:52 222

原创 c/c++中的虛函數和純虛函數

虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数! 纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数! class Cman { public: virtual void Eat(){……}; void Move(); private: }; class CChild : public CMan

2017-11-14 16:46:50 441

原创 char* char[]及string的区别及相互转换

1.char* char[]及string之间的区别 char *p, 表示p是一个指向字符串的指针 char p[], 表示p是一个字符串的数组 string s, 表示s是一个string类的对象 下面用一段代码及其输出来说明它们之间的区别: [html] view plain copy char p1[] = “12345”; char *p2 = “12345”; stri

2017-11-14 14:24:57 470

原创 c++常用函数

1.malloc申请动态内存,区别new,以及c的free和c++的delete的区别 2.void *memset(void *s, int ch, size_t n); 函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。 memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的

2017-10-16 16:32:42 145

原创 android备忘录

1.当向上滚动列表时,列表的父view(整个白色部分)会跟着一起向上滑动,当顶部的banner收缩到只剩标题栏时,则列表的父view保持固定,而列表继续滚动;当向下滚动列表时,则是相反的过程。 (1).使用传统的事件分发拦截。类似张鸿洋的仿360详情页效果 http://blog.csdn.net/lmj623565791/article/details/43649913 (2).使用andr

2017-08-24 15:55:13 1528

转载 python高级特性(3):列表生成式

原文 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用range(1, 11): range(1, 11) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 但如果要

2017-08-21 18:14:06 303

转载 python高级特性(1):切片

原文 取一个list或tuple的部分元素是非常常见的操作。比如,一个list如下: L = [‘Michael’, ‘Sarah’, ‘Tracy’, ‘Bob’, ‘Jack’] 取前3个元素,应该怎么做? 笨办法: [L[0], L[1], L[2]] [‘Michael’, ‘Sarah’,

2017-08-21 18:12:22 281

转载 python高级特性(2):迭代

原文如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。在Python中,迭代是通过for … in来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的,比如Java代码:for (i=0; i

2017-08-21 18:02:55 264

转载 python高级特性(4):生成器

原文 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一

2017-08-21 18:00:37 202

转载 python中的数据结构(2):字典(map),set

dictPython内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list:names = [‘Michael’, ‘Bob’, ‘Tracy’] scores = [95, 75, 85] 给定一个名字,要查找对应的成绩,

2017-08-21 15:24:25 21257

转载 python中的数据结构(1):列表(数组)和元組

原文 listPython内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。比如,列出班里所有同学的名字,就可以用一个list表示: classmates = [‘Michael’, ‘Bob’, ‘Tracy’] classmates [‘Michael’, ‘Bob’, ‘Tracy’]

2017-08-21 14:30:35 275

转载 字符串和编码

https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819196283586a37629844456ca7e5a7faa9b94ee8000 字符编码我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。因为计算机只能处理数字,如果要处理文本,

2017-08-21 13:52:10 215

原创 linux常用命令

dpkg命令 dpkg是Debian package的简写,为”Debian“ 操作系统 专门开发的套件管理系统,用于软件的安装,更新和移除。 所有源自”Debian”的Linux的发行版都使用 dpkg, 例如”Ubuntu” 例如安装sudo dpkg -i virtualbox-5.1_5.1.18-114002~Ubuntu~xenial_amd64.deb 可以使用dpkg –

2017-08-21 13:49:23 243

转载 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-08-18 17:11:26 197

原创 会话技术

一、会话技术简介 1.存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪 里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并 不知道该客户端是谁,所以需要会话技术识别客户端的状态。会话技术是帮助服务器 记住客户端状态(区分客户端)2.会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。会

2017-08-17 12:43:25 537

转载 人工智能资料

1500G人工智能资料下载地址这是AI垂直媒体@智能玩咖 (VRdaxue)的馆藏,现在分享给大家。800G人工智能学习资料下载链接链接: https://pan.baidu.com/s/1eSnAZse 密码: j9sk人工智能图书馆人工智能学术论文资料下载链接:链接: https://pan.baidu.com/s/1eSCD8Tc 密码: itu1人工智能融资资料库下载链接:链接: https

2017-08-02 17:16:51 1851 1

原创 关于乐视我来说两句

‌ 7月21日看到一则”孙宏斌当远为乐视董事长”的消息推送到我手机,我的内心顿时忐忑不安的,再也没法安静的工作了,同时也可能是我曾经也是乐视的员工,一直关注着乐视的方方面面。纵观整个互联网网友对乐视对贾跃亭贾总的态度完全是冰火两重天,骂乐视骂贾跃亭的和欣赏他的企业家精神的各占一半吧。关于乐视的负面报道,我罗列了以下几点并给予回答:‌1.庞氏骗局,股票套现几百亿套现几百亿这个事看怎么理

2017-07-22 21:31:59 670

原创 opengl es 纹理

纹理: 简单说来纹理就是一张图像或者照片能被加载进opengl。opengl中的纹理可以用来表示图像,照片,甚至由一个数学算法生成的分形数据。每个二维纹理都是由许多小的纹理元素组成,他们是小块数据类似像素。通常,直接去加载一个图像文件来作为纹理。每个二维纹理都有自己的坐标从(0,0)到(1,1)如下: 在opengl es2.0中规定每个纹理不必是正方形,但每个维度必须是2的幂。加载纹理:

2017-07-21 15:38:58 632

原创 opengles透视矩阵投影原理

学习本文前建议先学习前文opengl es相关矩阵知识: 解决android opengl es绘制物体屏幕横竖屏切换物体压扁形变以及矩阵相关知识 在上文中我们知道要把空间物体(下图传给顶点着色器的gl_position坐标)最终显示在二维屏幕需要经过归一化设备坐标(在[-1,1]范围),实际opengl经过了具体过程可以用如下流程图来表示: 即两个变换和三个不同坐标空间。 可见从gl_

2017-07-20 19:20:08 2656

原创 解决android opengl es绘制物体屏幕横竖屏切换物体压扁形变以及矩阵相关知识

在android上如果手机屏幕由竖屏切换到横屏,这个时候Ui会发生变化,变形,通常在Android中我们可以通过写不同的xml来适配这种屏幕变化引起的ui布局变化。然而,在opengl es也会存在由于屏幕切换导致ui问题,为此,opengl提出了归一化坐标来解决这个问题。归一化设备坐标: 具体说来就是把较小(端)边固定在[-1,1]范围,而较大边(端)按屏幕尺寸比例缩放。 比如1280x720

2017-07-20 00:17:09 3123 1

原创 opengl es 颜色和着色

上一节介绍了opengl es着色器原理和过程 我们对着色器原理和过程有了较为详细的理解,并且重点讲解了使用顶点着色器来实现opengl基本图元(点,直线,三角形)的位置,那么本节讲解opengl es对颜色的绘制。三角形扇: 之前讲解如果想描述一个长方形可以用两个三角形来描述,比如: // Triangle 1 -0.5f, -0.5f,

2017-07-17 23:43:45 2015 2

原创 opengl es着色器原理和过程

上一篇文章具体参考上文: Android上Java程序和Opengl通信方式和opengl es着色器着色器原理:我们之前多次介绍过OpenGL里面图形都是通过顶点着色器和片段着色器共同完成的,顶点着色器计算每个顶点在屏幕上的最终位置,OpenGL把这些顶点组装成点,直线,三角形并且分解成片段,会询问片段着色器每个片段的最终颜色,如果没有顶点着色器OpenGL就不知道在哪绘制图形,如果没有片段着色

2017-07-16 23:43:46 1914

原创 Android上Java程序和Opengl通信方式和opengl es着色器

阅读本文前如果是初次接触opengl可以先阅读前文: openGL 3D图形和openGL简介和 android studio上第一个opengl es程序

2017-07-14 18:46:46 1476

原创 android studio上第一个opengl es程序

android上openGL es基础知识 第一个opengl es程序

2017-07-14 14:47:25 6467 4

原创 openGL 3D图形和openGL简介

基本概念与说明OpenGL是一个图形API,用来绘制三维物体(也可以是2D物体),OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL三维图形 API 的子集。 Android平台下,对于OpenGL ES有一套Java的封装,唯一非Java的部分就是GLSL脚本(GLSL,OpenGL Shader Language,即着色器语言) OpenGL E

2017-07-13 20:38:18 4567

python扫描项目工具

python扫描项目工具

2020-04-10

C_C++中文函数手册.chm.zip

C_C++中文函数手册.chm;

2020-01-30

Boost 库入门.chm.zip

Boost 库入门.chm

2020-01-30

FragmentPagerAdapter与FragmentStatePagerAdapter那些秘密的事

FragmentPagerAdapter与FragmentStatePagerAdapter那些秘密的事 当google提出了viewpager+fragment的组合来开发后,这种组合带来的良好的用户体验到现在一直都受到市场的青睐。但是对于开发者来说,我们在选取viewpager+fragment的组合模式开发的时候到底如何选取呢。。。。。

2016-05-22

Anroid touch事件分发探究

Anroid touch事件分发探究

2016-03-13

SurfaceView你所应该知道的事

SurfaceView你所应该知道的事

2016-03-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除