自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 Flutter实践之高仿有妖气漫画,从消息中间件看分布式系统的多种套路

这就是一个Widget,Container是Widget的一个子类,当然它里面有各种各样的子类供你使用。DartDart语言可以说对于移动端开发来说,都比较陌生,因为纯原生开发到现在,我只听说过可以用C#开发iOS,可能我知道的太少了,不过Dart的学习还是比较简单的,安卓开发人员用过Java,iOS开发人员用过Swift,所以再去看Dart都会有似曾相识的感觉。来看个例子:void main() {List list = [‘1’, ‘2’, ‘3’, ‘4’, “5”, “6”];final

2021-12-09 13:38:49 259

原创 flutter入坑,flutter教程

3.环境配置网上流传的大多数是Git命令配置,很装逼很拉风,但是做人得低调,所以这里我们《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享写了两个配置方案,我才用的第二种方法:方案A: git命令配置 (网上大多数教程是这样配置):(1)打开gitbash,输入如下命令:git clone -b beta https://github.com/flutter/flut.

2021-12-09 13:34:58 697

原创 FlutterDojo设计之道—状态管理之路(七,Android400道面试题通关宝典助你进大厂

刷新选中。Checkbox(value: itemModel.isCheck,onChanged: (flag) {setState(() {var isCheck = itemModel.isCheck;if (isCheck) {checkedCount–;} else {checkedCount++;}return itemModel.isCheck = !isCheck;});}),下拉刷新与上拉加载。RaisedButton(onPressed: () {setS

2021-12-09 13:33:29 202

原创 Flutter-视频系列--图解-Android-原生集成-Flutter-Module

implementation project(’:flutter’)3.2 AndroidStudio 工具引入可采用 Flie -> Sync Project with Grdle Files 时,可通过 Import Flutter Module 方式引入;此时若报 The Gradle files could not be updated automatically 则需要手动 3.1 操作

2021-12-09 13:28:10 1861

原创 Android自定义控件开发入门与实战(10)Shader,android播放音频

return true;case MotionEvent.ACTION_MOVE:mDx = (int) event.getX();mDy = (int) event.getY();break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_CANCEL:mDx = -1;mDy = -1;break;}postInvalidate();return super.onTouchEvent(event);}最后重写onDraw函

2021-12-08 17:13:52 406

原创 Android组件化学习,微信小程序趋势及前景

}}}}由于library是不需要 Application 和启动Activity页,所以我们要区分这个文件,应用manifest指定的路径没有特定,随意找个路径创建即可。在应用AndroidManifest.xml里我们要设置启动页:<manifest xmlns:android=“http://schemas.android.com/apk/res/android”package=“com.sun.biz_home”><applicationandroid:allowB

2021-12-08 17:11:29 1153

原创 Android组件化初探【含Demo】,androidframework开发面试

应用层:宿主工程,APP的主项目,APP入口和主架子组件化Demo==========================================================================demo地址:点击此处,找管理员拿我根据demo项目从以下几个方面来讲解1:项目分析2:组件application和library动态切换3:组件间的数据传递和方法调用4:组件类(例如:Fragment)的获取,以及夸组件页面跳转和通讯1:项目分析如上.

2021-12-08 17:09:46 1360

原创 Android简单笔记本解析,成功入职头条月薪35K

public class NoteSearch extends ListActivity implementsSearchView.OnQueryTextListener {private static final String[] PROJECTION = new String[] {NotePad.Notes._ID, // 0NotePad.Notes.COLUMN_NAME_TITLE, // 1//扩展 显示时间 颜色NotePad.Notes.COLUMN_NAME_MODIFICA

2021-12-08 17:06:08 1615

原创 Android程序员面试必须要掌握的:Https加密原理、中间人攻击到底是怎么回事

2.客户端如何通过证书确定服务端的身份?证明下面两点,(然后才可以使用证书上的公钥来加密生成Session key的随机数)证明baidu.com这个证书确实是百度的证明baidu.com这个证书没有被其他人攥改过证书以证书链的形式组织,在颁发证书的时候首先要有根CA机构颁发的根证书,再由根CA机构颁发一个中级CA机构的证书,最后由中级CA机构颁发具体的SSL证书。数字证书采用信任链验证。数字证书的信任锚(信任的起点)就是根证书颁发机构。根证书(root certificate)是一个无签

2021-12-08 17:03:44 476

原创 Android的使用ContentProvider,下面有代码,可以运行,4面阿里拿到P7Offer

@Overridepublic void onClick(View v) {ContentResolver resolver = getContentResolver();if(v.getId() == R.id.query_all) {Cursor cursor = resolver.query(NameListProvider.all_name_uri, null, null, null,null);boolean hasFirst = cursor.moveToFirst();try {

2021-12-08 17:00:49 127

原创 Flutter29,【一步教学,一步到位】

title: ‘OpenSource China’,theme: ThemeData(primaryColor: Color(AppColors.APP_THEME), //主题色),home: HomePage(),);}}HomePage.dart主界面内容的布局分为titleBar, body和底部的NavagationBarimport ‘package:flutter/material.dart’;import ‘package:flutterapp2/widgets/navi

2021-12-07 13:30:34 185

原创 Flutter 完整开发实战详解自定义布局,移动开发框架2019

/// 计算返回第一个 child 的基线 ,常用于 child 的位置顺序有关double defaultComputeDistanceToFirstActualBaseline(TextBaseline baseline)/// 计算返回所有 child 中最小的基线,常用于 child 的位置顺序无关double defaultComputeDistanceToHighestActualBaseline(TextBaseline baseline)/// 触摸碰撞测试bool default

2021-12-07 13:28:11 1139 1

原创 Flutter 中 Positioned、Align、Center 的使用详解 _ Flutter Widgets

),Positioned(《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享top: 10,child: getItem(‘top 10’),),Positioned(bottom: 10,child: getItem(‘bottom 10’),),Positioned(height: 80,child: getItem(‘height 80’),),]

2021-12-07 13:26:29 2679

原创 Flutter 与 原生交互(Android),关于Android开发的面试经验总结

接收*/void receiveMessage(){messageChannel.setMessageHandler((message) async{print(message);return “is ok”;});}MethodChannel=============flutter 调用 原生1.实现插件public class FlutterPluginTest implements MethodChannel.MethodCallHandler {private stat.

2021-12-07 13:24:19 93

原创 Flutter - 基础Widget,android简单小项目实例

child: Row(mainAxisSize: MainAxisSize.min, // 默认是max,占满父Widget;min是包裹内容children: [Icon(Icons.favorite, color: Colors.red), // 图标Text(“喜欢作者”), // 文字],),onPressed: () => print(“自定义Button”), // onPressed必传,否则样式可能会出问题)],);}}2、定制 Button默认间隔 :

2021-12-07 13:20:25 495

原创 Compose Preview 的 UX 设计之旅,BAT常见的20道Android面试题详解

集思构想: 冲刺设计方案为了探究如何在 Compose 中支持这种开发 UI 代码的新模式,我们团队和我们的软件工程师、开发者关系工程师和产品管理伙伴一起举办了一个研讨会,以解决一个设计挑战: 我们如何利用开发者对现有工具的使用经验来帮助他们创建和掌握 Compose UI?我们基于 设计思维方法,从理解问题和调整问题的工作场景开始思考。这一过程需要团队在 “我们可以怎样… (How Might We…)” 这一框架下写出自己的想法,然后通过亲和图法 (affinitized) 去识别《Androi

2021-12-07 13:18:59 272

原创 Cocos2d-x 3,最新出炉

RotateBy类/RotateTo:旋转一个节点– ActionRotate– 动作旋转local function ActionRotate()local layer = cc.Layer:create()initWithLayer(layer)centerSprites(3)– RotateTo,第一个参数为持续时间,第二个参数为旋转角度local actionTo = cc.RotateTo:create( 2, 45)local actionTo2 = cc.RotateT

2021-12-07 13:17:31 130

原创 BAT同系列公司面试总结,哪些你所不知道的,安卓kotlin面试题

推荐研究下Doug Lea主写和设计的java concurrent包,理解CountDownLatch、CyclicBarrier、Semaphore、FutureTask等对象。具体开上,我使用自己写的SmartExecutor,直接继承ExecutorService,封装了一个公共线程池,全App保证只有一个线程池在一个 App 中 SmartExecutor 可以有多《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSk

2021-12-07 13:16:05 94

原创 Base64算法,flutterui构建工具

攻击者非法入侵密码系统,采用伪造、修改、删除等手段向系统注入假消息进行欺骗。(对密文具有破坏作用)被动攻击:对保密系统采取截获密文并对其进行分析和攻击。(对密文没有破坏作用)密码体制:由明文空间、密文空间、密钥空间、加密算法、和解密算法5部分组成。密码协议:也称安全协议,指以密码学为基础的消息交换的通信协议,目的是在网络环境中提供安全服务。密码系统:指用于加密、解密的系统。柯克霍夫原则:数据的安全基于密钥而不是算法的保密。即系统的安全起决于密钥,对密钥保密,对算法公开——现代

2021-12-07 13:14:27 112

原创 Kotlin 的协程用力瞥一眼,kotlin爬虫

????️Thread({…}).start()可以看到,和 Java 一样也摆脱不了直接使用 Thead 的那些困难和不方便:线程什么时候执行结束线程间的相互通信多个线程的管理我们可以用 Java 的 Executor 线程池来进行线程管理:????️val executor = Executors.newCachedThreadPool()executor.execute({…})用 Android 的 AsyncTask 来解决线程间通信:????️object :

2021-12-06 05:00:41 232

原创 Koltin24,997页字节跳动Android面试真题解析火爆全网

fun inject(homeFragment: HomeFragment)}HomeFragmentModule.ktpackage com.example.takeout.dagger2.moduleimport com.example.takeout.presenter.HomeFragmentPresenterimport com.example.takeout.ui.fragment.HomeFragmentimport dagger.Moduleimport dagger.Prov

2021-12-06 04:58:18 79

原创 JPush推送 之 RegistrationID 精确对点推送,经典好文

应用程序可以把此 RegistrationID 保存以自己的应用服务器上,然后就可以根据 RegistrationID 来向设备推送消息或者通知。API - getRegistrationID调用此 API 来取得应用程序对应的 RegistrationID。 只有当应用程序成功注册到 JPush 的服务器时才返回对应的值,否则返回空字符串。支持的版本开始支持的版本:1.6.0。接口定义//SDK 初次注册成功后,开发者通过在自定义的 Receiver 里监听 Action - cn.

2021-12-06 04:56:35 520

原创 Jetpack系列(二) — Lifecycle,定制移动app

相关知识点知识点一: Lifecycle 事件映射到 Activity 和 Fragment 中的回调事件知识点二: LifecycleOwner更多LifecycleOwner是单一方法接口,表示类具有 Lifecycle。 LifecycleObserver和LifecycleOwner的配合,后者提供生命周期,后者观察生命周期。// ComponentActivity.java@NonNull@Overridepublic Lifecycle getLifecycle《

2021-12-06 04:52:57 89

原创 Java的集合类介绍,2021年Android开发进阶课程

数组是第一流的对象不管你用的是那种类型的数组,数组的标识符实际上都是一个“创建在堆(heap)里的实实在在的对象的”reference。实际上是那个对象持有其他对象的reference。你即可以用数组的初始化语句,隐含地创建这个对象,也可以用new表达式,明确地创建这个对象,只读的length属性能告诉你数组能存储多少元素。它是数组对象的一部分(实际上也是你唯一能访问的属性或方法)。‘[]’语法是另一条访问数组对象的途径。你没法知道数组里面究竟放了多少元素,因为length只是告诉你数组能放多少元素,也

2021-12-06 04:50:33 185

原创 java并发编程中常用的工具类 Executor,安卓pdf阅读器下载

|  interface | **ScheduledExecutorService**一个 ExecutorService,可安排在给定的延迟后运行或定期执行的命令。 || 实现 Executor 的 java.util.concurrent 中的类 || :-- ||  class | **AbstractExecutorService**提供 ExecutorService 执行方法的默认实现。 ||

2021-12-06 04:49:06 172

原创 IOC架构设计之ButterKnife源码&原理(二)上篇,今天带你详细了解各组件原理

import android.widget.AdapterView;import android.widget.Button;import android.widget.ListView;import android.widget.TextView;import butterknife.Unbinder;import butterknife.internal.DebouncingOnClickListener;import butterknife.internal.Utils;import j

2021-12-06 04:47:38 216

原创 H,0基础学android开发

I 帧又称为视频的关键帧,你可以理解为它是一帧画面的完整图像,可以直接拿这个 I 帧来解码特点:1、它是一个全帧压缩编码帧,它将全帧图像信息进行 JPEG 压缩编码及传输2、解码时仅用 I 帧的数据就可以重构完整图像3、I 帧描述了图像背景和运动主体的详情4、I 帧不需要参考其它画面而生成5、I 帧是 P/B 帧的参考帧(其质量直接影响到同组中以后个帧的质量)6、I 帧是帧组 GOP 的第一帧,在一组中只有一个 I 帧7、I 帧不需要考虑运动矢量8、I 帧所占数据的信息量比较大B 帧B

2021-12-06 04:46:13 351

原创 Gradle原理流程分析,稳进大厂

通过zipalign工具对齐处理通过apksigner工具签名​ 简单介绍就这些步骤,其中还有很多细节处理,比如多项目支持,差异化处理,缓存优化等等。这些如果手动处理基本上不可能,要让流程简单化,就需要对这些流程进行封装,这就是Gradle的作用了。帮助我们对各种应用程序构建执行流程化,减轻我们的工作量。Gradle结构Gradle单独来讲,就是一个单独的构建工具,不依赖于java\android等。让我们走进gradle原始工程准备Gradlegradle是一个单独的构建..

2021-12-06 04:44:35 501

原创 Retrofit源码浅析,Android组件化架构实践

,build()那么接口listReops的返回类型可谓Observable< T>。build最后初始化了转换器工厂类的集合,转换器工厂主要负责网络响应的解析,如果我们设置为GsonConverterFactory,那么就可以使用Gson解析网络结果,如果设置为ProtoConverterFactory,则可以使用ProtoBuf解析网络结果。2、实现网络接口在示例中,我们定义了网络接口Githubservice,然后使用创建的Retrofit对象的create方法来实现该接口,网络

2021-12-05 19:31:30 112

原创 Retrofit源码学习五:Retrofit中同步、异步请求解析,面试题分享

return parseResponse(call.execute());}private okhttp3.Call createRawCall() throws IOException {Request request = serviceMethod.toRequest(args);okhttp3.Call call = serviceMethod.callFactory.newCall(request);if (call == null) {throw new NullPointerExce

2021-12-05 19:29:14 1005

原创 Poppuwindow的简单使用,android开发教程pdf

android:layout_height=“wrap_content”android:gravity=“center”android:padding=“10dp”android:text=“拍照” /><Viewandroid:layout_width=“match_parent”android:layout_height=“1dp”android:background="@color/gray" /><TextViewandroid:layout_width=“

2021-12-05 19:27:39 246

原创 OkHttp相关问题全解析,2021新鲜出炉阿里巴巴面试真题

i.remove()//per host 计数加1asyncCall.callsPerHost().incrementAndGet()executableCalls.add(asyncCall)//移入runningAsyncCalls列表runningAsyncCalls.add(asyncCall)}isRunning = runningCallsCount() > 0}for (i in 0 until executableCalls.size) {val asyncCall

2021-12-05 19:25:25 197

原创 OkHttp、rxJava、Retrofit联合网络请求,赶紧学习一下

给你贴下整体代码吧!/1.创建OkHttpClient对象/OkHttpClient httpClient = new OkHttpClient();/2.创建请求Request内容/Request request = new Request.Builder().method(“GET”, null).url(“https://www.baidu.com/”).build();/3.发送请求/Call call = httpClient.newCall(request);/4.创建请求的

2021-12-05 19:23:46 346

原创 OkHttp3源码详解(三) 拦截器,直击优秀开源框架灵魂

if (retryAndFollowUpInterceptor.isCanceled()) {signalledCallback = true;responseCallback.onFailure(RealCall.this, new IOException(“Canceled”));} else {signalledCallback = true;responseCallback.onResponse(RealCall.this, response);..

2021-12-05 19:22:08 70

原创 MyBatis(2) 项目配置,7年老Android一次操蛋的面试经历

一:environmentsMyBatis 支持多个环境,可以任意配置;二:transactionManagerMyBatis 支持两种类型的事务管理器:JDBC 和 MANAGED(托管); JDBC:应用程序负责管理数据库连接的生命周期; MANAGED:由应用服务器负责管理数据库连接的生命周期;(一般商业服务器才有此功能,如 JBOSS,WebLogic)我们开发一般用tomcat对应的JDBC,MANAGED是商用的。三:dataSource用来配置数据源;类型有:UNPOOLED,PO

2021-12-05 19:19:08 134

原创 MemoryFile匿名共享内存使用,后台开发Android岗

把刚刚得到的ParcelFileDescriptor传递到其他进程,这个比较简单直接用binder传就可以了通过描述共享内存文件描述取得一个描述共享内存的MemoryFile对象,并且需要让这个MemoryFile对象指向刚刚创建的共享内存。在低版本的系统中存在一个构造函数可以直接以FileDescriptor为参数构造出一个MemoryFile对象,这样构造出来的对象刚好指向FileDescriptor描述的共享内存。但是在高版本中没有样的构造函数了。所以在这里我利用了一个取巧的方式。思路是:利用构造函

2021-12-05 19:17:28 339

原创 Android研发大厂面试记:阿里,字节,旧版android模拟器

一个简单的RecyclerView,说一下手势Down,Move,Up的分发。如果TextView上面设置了点击事件,那么分发逻辑是怎么样的项目是怎么进行架构设计的项目是否采用模块化处理,怎么做的,怎么进行交互git-merge和git-rebase的区别二面:现在项目的整体设计是怎么样的降低crash率做了哪些处理怎么检测线上卡顿问题kotlin相比于java有哪些优势什么时机可以认为页面加载完成内存优化有做过哪些讲下merge和inc..

2021-12-04 15:14:54 167

原创 Android的DrawText详解,为什么Android要采用Binder作为IPC机制

对于一段文字来说,如果你想把他画到Canvas上,首先你要确定这段文字的范围,即宽度和高度,那么怎么去取这一段的高度呢,如果你在网上搜,会有很多种答案,具体应该用哪一种呢?这要看你到底需要什么样的尺寸了。Paint.getTextBounds: 当你通过这个方法来获取尺寸的时候,你可以得到能够包裹文字的最小矩形,就是图中红色边框的那部分,你可以得到一个Rect对象,包含这个最小尺寸的几个值。坑其实就在这里:这里的Rect对象坐标并不是以左上角为准的,而是相对于左边中间靠下位置的一个点,就是图中的黄色五角.

2021-12-04 15:13:26 68

原创 Android猿面试(附视频),字节跳动资深面试官亲述

通过APP像驾考宝典类似的操作进行刷题,保证大家在面试前对所有常见的面试题都有系统的准备,做到心中有数,临阵不慌。收集总结的各种经验形成一个统一方便的浏览入口,让大家不用到处找资料,一个App即可帮大家解决面试技巧、面试礼仪等方面知识储备问题。上面这幅图片是轮子,有些是我自己封装的,也有些是github上面我认为非常好的项目,大家用github的时候,应该有一个非常大的痛点,项目不会找,就算找到了,项目是英文的不会用,readme也看不懂,导入也各种报错,这么好的项目不能流传开来真的很可惜,想着能帮助

2021-12-04 15:12:00 146

原创 Android杂货摊:Handler-post和View-post的区别,安卓rxjava如何异步使用

getRunQueue().post(action);return true;}从上面的源码,我们大概可以看出mAttachInfo字段在这里比较关键,当其有值时,其实和普通的Handler.post就没区别了,但有时它是没值的,比如我们上面示例代码里的onCreate阶段,那么这时执行到了getRunQueue().post(action);这行代码,从这段注释也大概可以看出来真正的执行会被延迟(这里的Postpone注释);我们接着往下看看getRunQueue相关的代码,如下:/** 其实这

2021-12-04 15:10:22 113

空空如也

空空如也

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

TA关注的人

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