自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (10)
  • 收藏
  • 关注

原创 Swift面试题总结(一)

1、Swift比Objective-C有什么优势?Swift速度更快,运算性能更高。Swift语法简单易读,代码更少,更加清晰,易于维护Swift更加安全,它是类型安全的语言Swift泛型,结构体,枚举都很强大Swift便捷的函数式编程Swift类型推断2、Swift 是面向对象还是函数式编程语言?Swift既是面向对象的,又是函数式的编程语言说Swift是面向对象的语言,是因为Swift支持类的封装,继承和多态说Swift是函数式编程语言,是因为Swift支持map、reduce、fi

2020-11-23 14:43:16 2712

原创 Java学习笔记-File类、递归

第一章 File类1.1 概述java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。1.2 构造方法public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。public File(File parent, String child

2020-10-15 15:10:33 202

原创 Java学习笔记-Lambda表达式

Lambda表达式函数式编程思想概述在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。面向对象的思想:​ 做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.函数式编程思想:​ 只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程冗余的Runnable代码传统写法当需要启动一个线程去完成任务时,

2020-10-13 16:29:35 257

原创 Java学习笔记-线程池

第一章 等待唤醒机制1.1 线程间通信**概念:**多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。** 为什么要处理线程间通信:**多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,并且我们希望他们有规律的执行, 那么多线程之间需要一些协调通信,以此来帮我们达到多线程共同操

2020-10-13 15:27:30 124

原创 Android学习笔记-RecyclerView的使用(Kotlin)

RecyclerViewRecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。因为RecyclerView属于新增的控件,Android将RecyclerView定义在support库里。若要使用RecyclerView,第一步是要在build.gradle中添加对应的依赖库。1、添加依赖库build.gradledependenci

2020-10-12 17:40:14 472 2

原创 Android学习笔记-ListView的使用(Kotlin)

前言:Kotlin 中: !!. 与 ?. 的区别?. 与 !!. 都是Kotlin提供的检测空指针的方法。?.在声明对象时,把它跟在类名后面,表示这个类允许为null;在调用对象时,把它跟在对象后面,表示如果为null程序就会视而不见。//kotlin:a?.run() //与java相同:if(a!=null){ a.run();}!!.加在变量名后,如果对象为null,那么系统一定会报异常!//kotlin:a!!.run() //与java相同:

2020-10-12 16:33:24 450

原创 Android学习笔记-3种基本布局(LinearLayout、RelativeLayout、FrameLayout)

控件与布局的关系一个丰富的界面是由很多个控件组成的,那么我们如何才能让各个控件都有条不紊地摆放在界面上,而不是乱糟糟的呢?这就需要借助布局来实现了。布局是一种可用于放置很多控件的容器,它可以按照一定的规律调整内部控件的位置,从而编写出精美的界面。当然,布局的内部除了放置控件外,也可以放置布局,通过多层布局的嵌套,我们就能够完成一些比较复杂的界面实现。LinearLayoutLinearLayout又称作线性布局,这个布局会将它所包含的控件在线性方向上依次排列。<?xml version=

2020-10-12 14:49:50 268 2

原创 Flutter学习笔记-异步UI更新(FutureBuilder、StreamBuilder)

很多时候我们会依赖一些异步数据来动态更新UI,比如在打开一个页面时我们需要先从互联网上获取数据,在获取数据的过程中我们显示一个加载框,等获取到数据时我们再渲染页面;又比如我们想展示Stream(比如文件流、互联网数据接收流)的进度。当然,通过StatefulWidget我们完全可以实现上述这些功能。但由于在实际开发中依赖异步数据更新UI的这种场景非常常见,因此Flutter专门提供了FutureBuilder和StreamBuilder两个组件来快速实现这种功能。FutureBuilderFutureB

2020-10-10 18:51:45 870

原创 Flutter学习笔记-实现倒计时功能

有一个需求,需要在页面进行显示倒计时,倒计时结束后,做相应的逻辑处理。实现思路:在Flutter中,Timer.periodic提供了循环功能,查看函数定义:factory Timer.periodic(Duration duration, void callback(Timer timer))第一个参数就是时间间隔,第二个参数就是事件处理回调。由于后台返回的是秒数,所以需要根据总秒数计算小时,分钟,秒。同时,当不满一个小时时,只显示分钟和秒数,当分钟和秒数只有一个数时(比如1分8秒,显示为01:

2020-10-10 17:00:17 905

原创 Flutter学习笔记-Dart异步编程和原理

对于iOS和Android 原生平台来说,如果要做一个耗时操作,比如网络请求,图片处理等,都会开一个子线程,等待数据处理完成,再在主线程中进行UI的显示和刷新,但是,Dart是一门单线程编程语言。Dart是如何做到不卡住主线程的呢?答案就是异步IO+事件循环。I/O模型注: IO 模型是操作系统层面的,以下代码都是伪代码,只是为了方便理解。我们先来看看阻塞IO是什么样的:int count = io.read(buffer); //阻塞等待当相应线程调用了read之后,它就会一直在那里等

2020-10-10 16:36:55 689

原创 Flutter学习笔记-异步Stream

在 Flutter 中有两种处理异步操作的方式 Future 和 Stream,Future 用于处理单个异步操作,Stream 用来处理连续的异步操作。通俗来说,Stream 就是事件流或者管道:基于事件流驱动设计代码,然后监听订阅事件,并针对事件变换处理响应。在iOS端,Stream类似于RxSwift或者ReactiveCocoa框架的编程思想,通过可观察的流实现异步编程,既然有可观察,就存在消息发送和消息订阅。Stream 详解Stream 是一个抽象类,用于表示一序列异步数据的源。它是

2020-10-09 18:42:34 400

原创 Flutter学习笔记-面试题整理(一)

概述Flutter是Google推出的一套开源跨平台UI框架,可以快速地在Android、iOS和Web平台上构建高质量的原生用户界面。在过去的一年里,Flutter的更新频率是相当的快,也有很多的公司开始使用它来进行跨平台应用开发,可以说,将Flutter称为2019年最流行的跨平台技术也不为过。在研究了Hybrid APP、React Native和Weex等技术之后,为在今年的早些时候也入了Flutter的坑。总的来说,不管是从社群和社区的活跃来看,还是从技术的水准上来看,Flutter无疑是最优

2020-10-09 15:34:10 1643 1

原创 Java学习笔记-多线程以及线程同步

第一章 线程创建线程的方式总共有两种,一种是继承Thread类,一种是实现Runnable接口。1.1 多线程原理自定义线程类:public class MyThread extends Thread { /* * 利用继承中的特点 * 将线程名称传递 进行设置 */ public MyThread(String name) { super(name); } /* * 重写run方法 * 定义线程要执行的

2020-10-06 14:39:27 110

原创 Java学习笔记-异常处理

第一章 异常1.1 异常概念异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行.1.2 异常体系异常机制其实

2020-10-06 13:02:25 89

原创 Flutter学习笔记-多线程

Flutter的优点:Flutter在Rlease模式下直接将Dart编译成本地机器码,避免了代码解释运行的性能消耗。Dart本身针对高频率循环刷新(如屏幕每秒60帧)在内存层面进行了优化,使得Dart运行时在屏幕绘制实现如鱼得水。Flutter实现了自己的图形绘制避免了Native桥接。Flutter默认是单线程任务处理的,如果不开启新的线程,任务默认在主线程中处理。Flutter的体系结构:事件队列和其他系统一样,在Dart的线程中也存在事件循环和消息队列的概念,但在Da

2020-10-04 18:47:25 1440

原创 Android学习笔记-基本控件介绍

TextViewTextView主要用于在界面上显示一段文本信息。<TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:textColor="#00ff00" android

2020-10-02 00:15:50 147

原创 Android学习笔记-Activity的启动模式

Activity的启动模式——standardstandard是Activity默认的启动模式,在不进行显式指定的情况下,所有Activity都会自动使用这种启动模式。在standard模式下,每当启动一个新的Activity,它就会在返回栈中入栈,并处于栈顶的位置。对于使用standard模式的Activity,系统不会在乎这个Activity是否已经在返回栈中存在,每次启动都会创建一个该Activity的新实例。代码演示,创建一个Activity,在该Activity中启动一个

2020-10-01 21:54:53 972

原创 Android学习笔记-Activity的生命周期

返回栈Android是使用任务(task)来管理Activity的,一个任务就是一组存放在栈里的Activity集合,这个栈也被称作返回栈(back stack)。栈是一种后进先出的数据结构,在默认情况下,每当我们启动了一个新的Activity,它就会在返回栈中入栈,并处于栈顶的位置。而每当我们按下Back键或调用finish()方法去销毁一个Activity时,处于栈顶的Activity就会出栈,前一个入栈的Activity就会重新处于栈顶的位置。系统总是会显示处于栈顶的Activity

2020-10-01 16:49:40 134

原创 Java学习笔记-Map集合

一、 Map集合1.1 概述现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同。Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。Map中的集合,元素是成对存在的(理

2020-09-29 09:56:05 165

原创 Java学习笔记-Collections

1、 常用功能java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。public static <T> void sort(List<T> l

2020-09-26 20:32:53 118

原创 Flutter学习笔记-与原生(iOS swift)交互

需求描述:需要从原生工程里面获取到设备的唯一标识,然后传到flutter模块里面去。基本原理:Flutter使用了一个灵活的系统,允许您调用特定平台的API,无论在Android上的Java或Kotlin代码中,还是iOS上的ObjectiveC或Swift代码中均可用。Flutter平台特定的API支持不依赖于代码生成,而是依赖于灵活的消息传递的方式:应用的Flutter部分通过平台通道(platform channel)将消息发送到其应用程序的所在的宿主(iOS或Android)。宿主监听的平台

2020-09-26 19:22:06 1816

原创 Java学习笔记-List、Set集合

一、List集合我们掌握了Collection接口的使用后,再来看看Collection接口中的子类,他们都具备那些特性呢?接下来,我们一起学习Collection中的常用几个子类(java.util.List集合、java.util.Set集合)。1.1 List接口介绍java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以

2020-09-21 18:25:48 145

原创 Android学习笔记-Activity

activity是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用户进行交互。右键项目的任何包路径→New→Activity→Empty Activity,会弹出一个创建Activity的对话框,如下图所示。勾选Generate Layout File表示会自动为FirstActivity创建一个对应的布局文件。勾选Launcher Activity表示会自动将FirstActivity设置为当前项目的主Activity。点击“Finish”完成创建。项目中的任何Act.

2020-09-20 16:05:00 125

原创 Android学习笔记-Kotlin Lambda编程、空指针检查

一、集合的创建使用如下代码可以初始化一个List集合:val list = listOf(“Apple”, “Banana”, “Orange”, “Pear”, “Grape”)使用如下代码可以初始化一个Set集合:val set = setOf(“Apple”, “Banana”, “Orange”, “Pear”, “Grape”)使用如下代码可以初始化一个Map集合:val map = mapOf(“Apple” to 1, “Banana” to 2, “Orange” t

2020-09-20 12:48:07 200

原创 Android学习笔记-Kotlin面向对象

一、类与对象1、定义可以使用如下代码定义一个类,以及声明它所拥有的字段和函数:class Person { var name = "" var age = 0 fun eat() { println(name+age+"岁了,他正在吃饭") }}在Kotlin中,getter和setter是可选的,如果你没有在代码中创建它们,它是会默认自动生成。如果声明的字段没有加修饰符,其作用域默认为public然后使用如下代码创建对象,并对对象

2020-09-19 12:58:11 111

原创 Android学习笔记-Kotlin基础语法

一、Kotlin的发展历程2011年,JetBrains发布了Kotlin的第一个版本,并在2012年将其开源。2016年Kotlin发布了1.0正式版,代表着Kotlin语言已经足够成熟和稳定了,并且JetBrains也在自家的旗舰IDE开发工具IntelliJ IDEA中加入了Kotlin的支持。2017年Google宣布Kotlin正式成为Android开发一级语言,并且Android Studio也加入了对Kotlin的支持。2019年Google正式宣布了Kotlin First,未来提供

2020-09-19 11:23:18 415

原创 Java学习笔记-Collection、泛型

一、Collection集合1.1 集合概述集合:集合是java中提供的一种容器,可以用来存储多个数据。集合和数组既然都是容器,它们有啥区别呢?数组的长度是固定的。集合的长度是可变的。数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。1.2 集合框架JAVASE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能了解何时采用哪个类,以及类之间如何彼此合作

2020-09-18 10:07:26 89

原创 Flutter学习笔记-Tabbar选项卡 顶部切换导航

使用Flutter提供的Tabbar和TabBarView,实现顶部选项卡的切换效果图代码class PersonalMyOrderPage extends StatefulWidget { @override _PersonalMyOrderPageState createState() => _PersonalMyOrderPageState();}class _PersonalMyOrderPageState extends State<PersonalMyOrder

2020-09-17 16:26:39 543

原创 Flutter学习笔记-Scaffold自定义导航返回按钮

使用系统提供的脚手架Scaffold,需要自定义返回按钮,代码:Widget build(BuildContext context) { return Scaffold( appBar: AppBar( elevation: 0, //导航栏和内容之间没有阴影 leading: GestureDetector( onTap: (){ Navigator.of(context).pop();

2020-09-17 10:25:15 1934 1

原创 Java学习笔记-包装类

包装类1. 概述Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:基本类型对应的包装类(位于java.lang包中)byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBo

2020-09-17 09:23:56 134

原创 Java学习笔记-StringBuilder类

StringBuilder类1. 字符串拼接问题由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。例如:public class StringDemo { public static void main(String[] args) { String s = "Hello"; s += "World"; System.out.println(s); }}在API中对String类有这样的

2020-09-17 09:20:04 126

原创 Flutter学习笔记-自定义分享弹出框View

最近有个需求,需要自定义一个分享view,在多个地方都会用到。考虑到易用性,我封装成了类方法,一行代码就可以调用了,很方便,实现也很简单,使用系统提供的showModalBottomSheet方法即可,该方法会自动有个阴影背景,点击阴影背景,会回收弹出的view效果:封装的代码import 'package:flutter/material.dart';class CustomShareView extends StatelessWidget { final List buttonTitl

2020-09-16 14:17:46 997

原创 Java学习笔记-Calendar类

##Calendar类###概念日历我们都见过java.util .Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。###获取方式Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象,如下:Calendar静态方法*public static Calendar getInstance(): 使用默认时区和语言环境

2020-09-15 14:09:06 100

原创 Java学习笔记-日期时间类

1.1 Date类概述java.util.Date类 表示特定的瞬间,精确到毫秒。继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。

2020-09-15 12:53:12 59

原创 Java学习笔记-内部类

1.1概述什么是内部类将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。成员内部类成员内部类 :定义在类中方法外的类。定义格式:class 外部类 {class 内部类{}}在描述事物时,若一个事物内部还包含其他事物,就可以使用内部类这种结构。比如,汽车类 Car 中包含发动机 类 Engine ,这时, Engine 就可以使用内部类来描述,定义在成员位置。代码举例:class Car { //外部类class Engine { //内部类}}访问

2020-09-12 14:16:40 95

原创 Flutter学习笔记--用原生工程打包时报错的解决办法

在原生的iOS工程里面,嵌套了flutter模块,进行打包时,报以下错误:ld: bitcode bundle could not be generated because ‘/Users/—/ios/Flutter/Flutter.framework/Flutter’ was built without full bitcode. All frameworks and dylibs for bitcode must be generated from Xcode Archive or Install b

2020-09-11 18:16:49 1391

原创 Flutter学习笔记-使用fluwx进行微信登录

在已有的iOS项目里,嵌套了flutter项目,其中有个功能是微信登录,flutter项目用的是fluwx插件实现的。在flutter项目里,找到ios文件夹,打开Runner.xcworkspace,根据在微信官网申请的相关信息,做相应的配置即可。1、配置URL Schemes2、配置白名单3、代码调用(1)、初始化//注册微信_initFluwx() async {//注册微信await fluwx.registerWxApi(appId: "注册的id",

2020-09-11 11:24:53 8266 6

原创 Java学习笔记-抽象类

1、概述由来父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了。我们把没有方法主体的方法称为抽象方法。Java语法规定,包含抽象方法的类就是抽象类。定义抽象方法:没有方法体的方法。抽象类:包含抽象方法的类。2、abstract使用格式抽象方法使用abstract关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。定义格式:修饰符 abstract 返回值类型

2020-09-06 22:07:32 62

原创 Java学习笔记-静态代码块

静态代码块:定义在成员位置,使用static修饰的代码块{}。(1)、位置:类中方法外。(2)、执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。格式:public class ClassName {static {//执行语句}}作用:给类变量进行初始化赋值,用法演示,代码如下:import java.util.ArrayList;public class Game {public static int number;public static ArrayL

2020-09-06 21:20:45 278

原创 Flutter学习笔记--已有的iOS原生工程配置Flutter

如果已经有了原生工程,想在原生工程里面加入flutter模块,配置步骤如下:1、假设原生工程是用cocoapods做的第三方库管理2、在原生工程的同级目录新建flutter模块,请注意,一定要是同级目录。如下图:是一个大的文件夹,里面放iOS原生项目和flutter模块cd到该文件夹,创建新的flutter 模块,输入命令:flutter create -t module flutter_module ,其中,“flutter_module”是flutter的模块名,可以自己修改。至此,f

2020-09-06 12:09:23 587

iOS11 CoreML

iOS11新出的深度学习资料,里面有关于图片识别技术的实现

2017-11-28

gson jar包

就这么一个jar包,很多竟然要10个积分,我也是醉了,我上传一个,本来不想要分的,发现CSDN必须选分,我就选了一个最小的2分,希望对需要的朋友有用

2017-11-01

kkbox-ios-dev

对iOS开发的基本概念说的很清楚,对那些模棱两可的问题给出了清晰的解释,对iOS开发和面试很有帮助

2017-05-21

A GUIDE TO IOS ANIMATION 2.0.pdf

Kitten Yang写的书第二版,非常适合研究动画 ,对提高iOS开发技能很有帮助。

2017-05-21

iOS动画编程

很全面的介绍iOS图层结构和核心动画的相关知识,代码齐全,介绍到位,可以好好学学!!

2016-09-09

[iPhone.3D游戏编程指南]

iOS3D编程,很不错的学习资料!里面介绍了很多3d编程的基础知识

2016-01-20

UNIX网络编程

UNIX网络编程知识,很不错的学习资料!!

2016-01-20

C语言网络编程快速入门

学习C语言编程的快速入门教程,里面的例子通俗易懂,很不错!

2016-01-15

西蒙iphone-OpenGL+ES(高清版)

不多说,绝对的好资料!网上有看到的,下载的分数要得太多了,我再传一个,供大家学习!

2013-10-16

cocos2d-x手机游戏开发

目前业界最火的手游开发工具cocos2d-x,使用的是c++语言编写的,可以实现多个手机操作系统的交换!!!

2013-06-20

空空如也

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

TA关注的人

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