- 博客(74)
- 资源 (3)
- 收藏
- 关注
原创 【iOS】RunLoop相关源码
https://blog.ibireme.com/2015/05/18/runloop/一、创建RunLoop及绑定线程的逻辑/// 全局的Dictionary,key 是 pthread_t, value 是 CFRunLoopRefstatic CFMutableDictionaryRef loopsDic;/// 访问 loopsDic 时的锁static CFSpinLock_t loopsLock; /// 获取一个 pthread 对应的 RunLoop。CFRunLoopR.
2022-03-02 10:42:59
266
原创 iOS开发-事件分发机制(hitTest与响应链)
一、概述:ios事件分发机制即寻找当前 交互事件(UIEvent) 的最佳响应的View并回调该View的响应方法。流程总体可抽象为画“V”字型,起点为UIApplication,底部顶点为最佳响应View,终点为消费事件的View图解:V字通常只有左侧(探查过程)+ 顶点(最佳响应View并回调touches等响应方法)而不会画完有右侧通常是最佳响应View没有处理或进一步调用父View的touches响应方法若均未消费则回到UIApplication才画完完整的“V”字
2021-05-31 21:03:15
2329
4
原创 潮起
潮起2020年12月31日晚,潮汐客厅(TIDE LIVINGROOM)希望可以踩着2020的尾巴与大家见面。“潮汐客厅”,这个名字来源于我特别喜欢的乐队后海大鲨鱼的作品《时间之间》。在我21岁的那个夏夜,一个人站在学校的天台上听这首歌,戴上耳机,仿佛世界驻足,或许可以短暂放下对远在千里的家人朋友的思念,或许可以短暂忘却未知的前路与迷惘。或许就在那一刻,我可以飞向广袤的银河和无垠的星空,可以穿梭于远处万家灯火的喜怒哀乐,可以于潮汐之间燃起火把,照亮彼此。——————————潮起终会潮落,客厅迎来送往
2020-12-27 16:00:39
265
1
原创 IOS踩坑日记
ios14 适配相关1、为 UILabel 添加 CAGradientLayer 作为背景,导致UILabel的文字不显示原因:ios14+,UILabel不会再为中文文本添加_UILabelContentLayer 层,而是同之前英文文本的处理,直接将文本绘制在_UILabelLayer层,因此导致文字被CAGradientLayer层遮挡参考:https://www.mdeditor.tw/pl/p1vV...
2020-10-28 17:46:36
731
原创 Android 来电状态监听
public class MyActivity extends FragmentActivity { private PhoneCallStateListener mListener = new PhoneCallStateListener(); @Override public void onCreate(Context context) { super.onCreate(context); TelephonyManager teleph
2020-08-12 11:56:32
481
原创 Git常用命令速查
https://www.liaoxuefeng.com/wiki/896043488029600 廖雪峰的git教程一、安装git --version:查看git版本git config --global XXXX:全局配置二、本地文件管理三个区域:工作区 —> 暂存区(stage) —> 版本库初始化一个本地仓库mkdir XXX:创建XXX文件夹git init:将该文件夹初始化为git仓库Initialized empty Git repository in.
2020-07-23 17:23:50
170
原创 初识CDN加速
Content Delivery Network(CDN,内容分发网络)https://zhuanlan.zhihu.com/p/28940451https://blog.csdn.net/qq_37286668/article/details/107229360目的:加速解决因分布、带宽、服务器性能带来的 访问延迟 问题尽可能的减少资源在转发、传输、链路抖动等情况下顺利保障信息的 连贯性 。组成:DNS服务器(1) + 缓存服务器(n)DNS服务器:对用户请求依据 负载均
2020-07-15 15:55:09
499
原创 Fresco翻转并拼接图片
方法一:拼接两个DraweeView(❌)1、思路第一个DraweeView显示原图下方接一个DraweeView裁减至原图的四分之一并拼接2、优缺点优点:简单直观缺点:对同一张图片需要两个DraweeView去分别显示,造成不必要的内存浪费方法二:拼接两个Bitmap(✅)1、思路通过Fresco后处理器process( Bitmap sourceBitmap, P...
2020-04-30 15:48:58
237
原创 小红点自定义View
有段日子没写过自定义View了,一个小Demo,复习一下~public class DragDotView extends View { /** * 文本内容 */ private String mTitleText; /** * 文本的颜色 */ private int mTitleTextColor; /** * 文本的大小 */...
2020-04-26 17:47:47
190
原创 有点东西的好文章,为您点赞!
编码方式从ASCII到UTF-8——字符集到底是什么?https://juejin.im/post/5b089c5b51882538c02f03eb
2020-04-14 16:48:40
130
原创 《工业设计史》第十一章:走向多元化
概述设计特征的变化:20世纪50年代末,现代主义理论的根本“形式追随功能”的信条开始被质疑时间表现20世纪50年代现代主义取得决定性胜利20世纪60年代走向多元化1⃣ 社会经济条件变化(资本主义经济发展)2⃣ 几位现代主义大师相继去世设计观念的变化:关于设计生命力持续时间的思考时间观念二战后初期许多设计机构一直致力于为...
2019-07-16 09:46:49
3917
原创 《工业设计史》第十章:战后重建与设计
概述1、战后初期,设计的主要任务是满足现实和重建的需要厂家和设计师眼中两种象征重建的方式:方式释义典型国家此方式随批量生产发展产生的形式主义典型代表技术性工业的发展被视为自强自立的必要手段,发展了一种强调机器效率的工业设计风格,把生产 的重点放在技术产品上美国、德国、瑞士和日本德国式刻板的机器美学艺术性以创造美好生活的社会理想来描绘自己国家的未来,试...
2019-07-16 09:45:30
9737
原创 《工业设计史》第九章:职业工业设计师的出现
出现:两次世界大战期间,工业设计作为一种正式的职业出现并得到了社会的承认职业工业设计师的作用:1⃣ 使工业设计真正与 大工业生产结合2⃣ 并使之成为 商业竞争的手段一、美国工业设计的职业化经济背景:1⃣ 大规模生产及消费:一战刺激美国生产能力发展并在1918年后转变为一种消费高潮在以大量资本投入为基础的大规模生产的条件下,探索减小成本和增加销售的方法...
2019-07-16 09:43:16
5206
原创 《工业设计史》第八章:20世纪20、30年代的流行风格
背景:现代设计理论力图以抽象集合造型为特征的美学形式来改造社会,而消费者的审美情趣和资本主义的商业本质没有受到重视现代设计并没有受到寻常百姓的欢迎,他们更倾向于更富表现力和吸引力的流行趣味一、艺术装饰风格 (Art Deco)流行:20世纪20-30年代,法国发展与20世纪20年代在20世纪30年代达到顶峰风格:以其富丽和新奇的现代感而著称典型造型语言:金字塔...
2019-07-16 09:42:01
5161
原创 《工业设计史》第七章:艺术变革与现代设计
目的:20世纪初的欧洲艺术运动 力图定义在工业文明条件下美学的形式与功能eg:未来主义、表现主义和构成主义等时间段:同时伴随着 标准化与合理化 的发展角度基础标准化、合理化基于工业生产的压力艺术运动基于艺术理论与价值联系:(为实现工业化而进行的)现代设计的美学原理正是以这些艺术运动的思想为基础的eg:美术与建筑学的关系一、美术...
2019-07-16 09:40:37
4812
3
原创 《工业设计史》第六章:工业、技术与设计
背景:两次世界大战期间,机械化在不同领域和不同地区的比重不同领域行业机械化程度依托于高水平的科研和技术的新兴工业汽车、家用电器等工业以批量生产和机械化为中心,大规模使用机器传统的行业家具、陶瓷、玻璃、染织等机械化程度有限,手工技艺依然根深蒂固一、美国的工业与设计背景:19世纪中叶以来,美国市场均匀,发展批量生产方面领先专用机床高度组织化的劳动...
2019-07-16 09:39:10
2357
1
原创 《工业设计史》第五章:设计改革
背景:19世纪下半叶,欧美之间对于机器生产和设计的态度不同区域特点备注欧洲依然热衷于更加传统的“艺术”工业产品(eg:家具、陶瓷、金属制品等)尽管这些工业部门已经不同程度的实现了组织化和机械化美国风格化产品(针对富有阶层)和批量产品(针对大众)的分界明确风格化产品也多数是模仿欧洲趣味的装饰性产品时间跨度:1830-1914概括性言论:文丘里(...
2019-07-16 09:37:27
6469
2
原创 《设计心理学》学习笔记之日常的设计(第一册)
第一章 【交互设计原则】日用品心理学1、好设计的两个特征序号 | 特征 | 释义 | 理解 | 示例--- | --- | --- | --- | ---1 | ==可视性== | 所设计的产品能让用户明白(物品相关的部件可以看到且能传达出正确的信息)怎样操作是合理的,在什么位置及如何操作 | *知道怎么用* | 门的设计 -> 自然提示: 应当在没有任何标识的情况下还能显示出如何...
2019-07-16 09:35:13
1994
原创 《数据结构》(C++)之第八章:排序技术
8.1 概述8.1.1 排序的基本概念记录:在排序问题中,通常将数据元素称为记录(record)排序:将一个记录的任意序列重新排列成一个 按关键码有序 的序列正序、逆序:正序待排序序列中的记录已按关键码排好序逆序/反序待排序序列中记录的排列顺序与排好序的顺序正好相反趟:在排序过程中,将待排序的记录序列扫描一遍称为一趟(pass)排序算法的...
2019-07-16 09:31:26
261
原创 《数据结构》(C++)之第七章:查找技术
查找以集合为数据结构,以查找为核心操作7.1 概述7.1.1 查找的基本概念记录:在查找问题中,通常将数据元素称为记录关键码(key):可以标识一个记录的某个数据称为关键码键值(keyword):关键码的值主关键码(primary key):该关键码可以唯一的标识一个记录反之,称此关键码为次关键码查找(serch):查找是在具有相同类型的记录构成的集合中找...
2019-07-16 09:29:43
404
原创 《数据结构》(C++)之第六章:图
6.1 图的逻辑结构6.1.1 图的定义和基本术语1、图的定义图:是由定点的有穷非空集合和顶点之间边的集合组成,通常表示为G=(V, E)G:表示一个图V:图G中顶点的集合E:图G中边的集合无向图与有向图:如果图的任意两个顶点之间的边都是无向边,则称该图为无向图,否则称该图为有向图若顶点vi和vj之间的边没有方向,则称这条边为无向边,用无序偶对(vi, vj)来表示...
2019-07-16 09:28:18
268
原创 《数据结构》(C++)之第五章:树和二叉树
5.1 树的逻辑结构5.1.1 树的定义和基本术语1、树的定义结点:树中的数据元素树:是n个结点的有限集合(当n=0时,称为空树)1⃣ 有且仅有一个特定的称为“根”的结点2⃣ 当n > 1时,除根结点之外的其余结点被分成m(m > 0)个 互不相交 的有限集合T1、T2、…、Tm,其中每个集合又是一棵树,并称为这个根结点的子树(树的定义是递归的)每棵子树只能有...
2019-07-16 09:27:06
301
原创 《数据结构》(C++)之第三章:栈和队列
3.1 栈3.1.1 栈的逻辑结构定义:栈是限定仅在表尾进行插入和删除操作的线性表栈顶 | 允许插入和删除(表尾)— | —栈底 | 不允许插入和删除不含任何数据元素的栈称为空栈特点:后进先出3.1.2 栈的顺序存储结构及实现顺序栈:栈的顺序存储结构称为顺序栈使用数组实现private: DataType data[StackSize]; /...
2019-07-16 09:25:03
196
原创 《工业设计史》第四章:机械化与设计
背景:在整个19世纪,机械化一直是人们讨论设计理论与实践问题的焦点人们一方面为机制产品寻求一种合适的美感另一方面也在思考机器对社会各方面带来的深远影响社会影响方面的讨论主要集中于劳动力充裕的英国及欧洲大陆,在美国由于劳动力匮乏而机器大受欢迎机器与工业产品设计之间的关系:机器代替手工劳动所带来的变化(并没有像商业化在生产组织方面带来的变化那么明显):随着各种专门...
2018-12-26 17:01:52
6944
原创 《数据结构》(C++)之第二章:线性表
概述:线性表是一种最基本、最简单的数据结构,数据元素之间仅具有前驱与后继关系2.1 线性表的逻辑结构2.1.1 线性表的定义定义:线性表(linear list)简称表,是n(n >= 0)个 具有相同类型的数据元素 的 有限序列长度:线性表中数据元素的个数空表:长度为零时非空表:L = (a1, a2, ···, an),其中,a(i) (1 <= i ...
2018-12-15 23:30:41
471
原创 《数据结构》(C++)之第一章:绪论
程序设计的实质:数据表示和数据处理(1)如何存储:数据要能被计算机处理,首先必须能够存储在计算机的内存中,这项任务称为 数据表示 ,其核心是 数据结构(2)如何处理:一个实际问题的求解必须满足各项处理要求,这项任务称为 数据处理 ,其核心是 算法1.1 数据结构在程序设计中的作用图灵奖获得者沃斯给出的公式:程序 = 数据结构 + 算法1.2 本书讨论的主要内容...
2018-12-15 23:26:57
368
原创 《工业设计史》 第三章:18世纪的设计与商业
背景:工业革命的真正发端是一个富足中的社会对于更多、更好商品的渴求,而原有的劳动组织形式和生产技术又无法满足这种渴求。新的工业方法正是在消费工业中产生的设计与商业的关系:引子:随着机械化和劳动分工的出现,商品日益丰富,为了刺激消费,如何增强市场竞争力就成为生产者面临的巨大挑战关系:设计作为商业上竞争的有效手段,成为商品生产过程中的一个重要的部分,这反过来又促进了设计的发...
2018-12-07 18:42:02
7240
原创 《工业设计史》 第二章:手工艺设计阶段
开始标志:人类发明了制陶和炼铜的方法,这是人类最早通过化学变化用人工方法将一种物质改变成另一种物质的创造性活动(新材料的出现)时间:由原始社会后期开始,经过奴隶社会、封建社会一直延续到工业革命前两个重要特点:(1)设计的产品大都是功能较简单的生活用品原因:生活方式和生产力水平的局限生产方式:主要依靠手工劳动生产单位生产者特点影响与现代关系...
2018-12-03 20:47:59
6576
原创 《工业设计史》第一章:设计的萌芽阶段
开始:从人类有意识的制造和使用原始的工具和装饰品开始,人类的设计文明便萌发了时间:从旧石器时代一直延续到新石器时代特征:用石、木、骨等自然材料来加工制作成各种工具一、设计概念的产生“在设计概念产生的过程中,劳动起着决定性的作用”生产的目的性:人类能从事 有意识、有目的的劳动旧石器时代与新石器时代(1)旧石器时代:定义:通常把打制石器时代称为“旧石器时代”...
2018-12-02 18:00:22
5084
原创 《工业设计史》 绪论
一、概念引入确立学科:工业设计作为一门独立、完整的现代学科,直到20世纪20年代才开始确立工业设计产生的条件:批量生产的现代化大工业生产和激烈的市场竞争工业设计的设计对象:以工业化批量生产的产品工业设计的作用:工业设计是商品经济的产物,它具有刺激消费的作用工业设计使商品与消费者之间存在一种除单纯使用功能以外的新关系。成为现代社会经济运转必不可少的重要因素之一,从而推动了...
2018-11-28 20:55:24
1351
原创 《Android校招面试指南》之设计模式复习梳理
一、创建型模式创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。创建型模式隐藏了类的实例的创建细节,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。1、简单工...
2018-11-26 17:33:18
427
原创 《Android校招面试指南》之Android基础复习梳理
本文梳理自:https://lrh1993.gitbooks.io/android_interview_guide/content/一、Activity全方位解析1、横竖屏切换生命周期(意外中止生命周期)onPause()->onSaveInstanceState()-> onStop()->onDestroy()->onCreate()->onStart(...
2018-11-26 17:30:22
881
原创 《深入理解Java虚拟机》学习笔记之线程安全与锁优化
二、线程安全定义:“当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的” ——Brian Goetz《Java Concurrency In Practice》线程安全代码的特征:代码本身封装了所有必要的正确性保障手段(如互斥同...
2018-11-22 23:11:59
155
原创 《深入理解Java虚拟机》学习笔记之Java内存模型与线程
一、概述并发处理的广泛应用是使得Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因Amdahl定律:通过系统中并行化与串行化的比重来描述多处理器系统能获得的运算加速能力摩尔定律:用于描述处理器晶体管数量与运行效率之间的发展关系这两个定律的更替代表了近年来硬件发展从追求处理器频率到追求多核心并行处理的发展过程衡量一个服务性能的高低好坏,每秒事务处理数(Transac...
2018-11-22 18:48:21
162
原创 《深入理解Java虚拟机》学习笔记之类加载机制
定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制过程:在Java语言中,类型的加载、连接和初始化过程都是在程序运行期间完成的优点:高度的灵活性。Java中可以动态扩展的语言特性就是依赖 运行期间动态加载和动态连接 这个特点实现的缺点:类加载时的性能开销。...
2018-11-21 19:36:04
155
原创 《深入理解Java虚拟机》学习笔记之类文件结构
1、代码编译的结果:从本地机器码转变为字节码目的:编译器将机器码编译成字节码,特定平台上的虚拟机器将字节码转译为可以直接执行的指令定义解释:(1)字节码(Bytecode):主要为了实现特定软件运行和软件环境、与硬件环境无关。字节码的实现方式是通过编译器和虚拟机器。典型应用:Java Bytecode每一个字节为8个二进制数字,有256个可能的代码值(2的8次方...
2018-11-18 15:57:19
145
原创 《深入理解Java虚拟机》学习笔记之垃圾收集器与内存分配策略
一、概述GC(Garbage Collection)需要完成的三件事(1)哪些内存需要回收(2)什么时候回收(3)如何回收GC主要面向Java堆和方法区中的内存原因:这部份内存的分配和回收都是动态的只有在程序处于运行期间时才能知道会创建哪些对象程序计数器、虚拟机栈、本地方法栈三个区域随线程而生、随线程而灭,内存分配和回收具有确定性二、对象已死吗(判断对象...
2018-10-25 15:16:08
301
原创 《深入理解Java虚拟机》学习笔记之Java内存区域与内存溢出异常
一、概述在虚拟机自动内存管理机制的帮助下,Java不再需要像C++一样为每一个new操作书写delete/free代码二、运行时数据区域(五大主要组成部分)1、程序计数器定义:程序计数器是一块娇小的内存空间,可以看作是当前线程所执行的字节码的行号指示器应用:在虚拟机的概念模型里(仅概念模型,不同虚拟机可能有更高效的实现),字节码解释器工作时,就是通过改变这个计数器的值来选去...
2018-10-24 10:24:27
176
原创 《Kotlin实战》学习笔记之第二章:Kotlin基础
一、基本要素:函数和变量1、Hello,worldfun main(args: Array<Stirng>) { println("Hello, world!")}关键字fun声明函数数组就是类。Kotlin没有声明数组类型的特殊语法可以省略每行代码结尾的分号2、函数//:后跟的是函数或参数的类型fun max(a: Int, b: Int): Int...
2018-10-23 21:07:17
142
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人