移动开发

OC之Block使用

Block本质 block本质上也是一个OC对象,它内部也有个isa指针 block是封装了函数调用以及函数调用环境的OC对象 block的底层结构如下图所示 image-20220601203643653 Block变量捕获 变量类型 捕获到block 内部 访问方式 局部auto变量 √ 值传递 局部static变量 √ 指针传递 全局变量 × 直接访问

Fragment版本变化

FragmentContainerView FragmentContainerView继承自FrameLayout, 可以动态添加FrameLayout 支持android:name 和 android: tag属性。 <androidx.fragment.app.FragmentContainerView xmlns:android="

spring之getBeanByType探究

前言 spring容器获取bean的方式主要有两种,即byName和byType byName方式相对简单,即Object getBean(String name),通过beanName获取,因为容器中存储的就是一个beanName->bean实体的映射,如果没有创建,则通过beanName查找bean定义,通过bean定义去创建即可 而byType,即T getBean(Class<

iOS知识复习笔记(8)---block底层原理

block 类型 在MRC环境下 1.全局block:如果没有使用外部auto变量,或者只使用全局变量或是静态变量,则是全局block 2.栈block:如果使用了外部auto变量,则是栈block 3.堆block:栈block调用了copy 在ARC环境下 1.全局block:如果没有使用外部auto变量,或者只使用全局变量或是静态变量,则是全局block 2.栈block:如果

Android Studio apk体积突然变大(升级gradle后)

升级gradle之后发现 打包出来的apk体积突然大了将近一倍。 解决办法 在主工程的AndroidManifest.xml配置中,在<application>标签,添加android:extractNativeLibs=true属性 android:extractNativeLibs="true" 体积变大原因 extractNativeLibs 瘦身属性 true时会将工程so

SwiftUI教程(三)常用View和Modifiers详细讲解和使用

SwiftUI教程系列文章汇总 本文主要讲述常见的View和Modifiers的认识和使用 主要内容: 常用View 常用Modifiers 1. 介绍 SwiftUI通过View视图搭建界面,使用Modifiers修饰器来修饰视图。系统提供了大量的视图和修饰器,并且还可以让我们自定义修饰器。 既可以手动写,也可以直接拖出到代码区或者预览区。这三种方式的结果都是一样的。 示意图:

JavaScript的六种继承方式

JavaScript的几种继承方式 原型链继承 借助构造函数继承(经典继承) 组合继承:原型链 + 借用构造函数(最常用) 原型式继承 (Object.create) 寄生式继承 寄生组合式继承(最理想) ES6中的继承 1. 原型链继承 子类型的原型为父类型的一个实例对象 function Parent() { this.name = 'bigStar'; this.colo

iOS之MD5加密、加盐

MD5加密:HASH算法一种、 是生成32位的数字字母混合码。 特点: 1、任意数据得出的MD5值长度都是32 2、对原数据进行任何改动,所得到的MD5值都有很大区别 应用: 主要运用在数字签名、口令加密等方面 MD5改进(加盐等): 现在的MD5已不再是绝对安全,对此,可以对MD5稍作改进,以增加解密的难度 加盐(Salt):在明文的固定位置插入随机串,然后再进行MD5 写一个NSString分

Spring之异步任务@Async详解分析

1 异步@Async详解 1.1 引言 在java中异步线程很重要,比如在业务流处理时,需要通知硬件设备,发短信通知用户,或者需要上传一些图片资源到其他服务器这种耗时的操作,在主线程里处理会阻塞整理流程,而且我们也不需要等待处理结果之后再进行下一步操作,这时候就可以使用异步线程进行处理,这样主线程不会因为这些耗时的操作而阻塞,保证主线程的流程可以正常进行。 最近在项目中使用了很多线程的操作,在这做