- 博客(21)
- 收藏
- 关注
转载 2022升级百度大牛带你结合实践重学C++
JPA的主要目标之一是提供一个更简单的编程模型:在JPA框架下创建实体就像创建Java类一样简单,没有任何约束和限制,只需要使用javax.persistence.Entity进行注释。JPA是JCP发布的Java EE标准之一,所以任何声称符合JPA标准的框架都遵循相同的架构,提供相同的访问API,这保证了基于JPA开发的企业应用只需稍加修改就可以在不同的JPA框架下运行。在运行过程中,Spring会自动为接口产生一个代理类(HotelSummary)来接收返回的结果,并以getXX的形式获得代码摘要。
2022-09-19 17:23:35
272
原创 Android护眼功能,双非本科字节跳动Android面试题分享
//打开左边的抽屉mDrawerLayout.openDrawer(Gravity.LEFT);break;case R.id.bt_start_inform:startService(intent);//当提示开启后 “开启提示”不可点击,“关闭提示”可以点击bt_start_inform.setEnabled(false);bt_stop_inform.setEnabled(true);Toast.makeText(MainActivity.this, “提醒功能已经开启。\nAPP关闭
2022-04-22 17:21:12
169
原创 Android性能优化:这是一份全面&详细的内存优化指南,android面试项目经验
###1. 定义优化处理 应用程序的内存使用、空间占用###. 作用避免因不正确使用内存 & 缺乏管理,从而出现 内存泄露(ML)、内存溢出(OOM)、内存空间占用过大 等问题,最终导致应用程序崩溃(Crash)###3. 储备知识:Android 内存管理机制####3.1 简介下面,将针对回收 进程、对象 、变量的内存分配 & 回收进行详细讲解###3.2 针对进程的内存策略####a. 内存分配策略由 ActivityManagerService 集中管理 所有进程
2022-04-22 17:19:35
2462
原创 Android性能优化 _ 帧动画OOM?优化帧动画之SurfaceView逐帧解析,阿里P8面试官都说太详细了
//在一帧绘制完后,直接回收它recycleOneFrame();}//回收帧private void recycleOneFrame() {if (frameBitmap != null) {frameBitmap.recycle();frameBitmap = null;}}@Overrideprotected void onFrameDraw(Canvas canvas) {//绘制一帧前需要先清画布,否则所有帧都叠在一起同时显示clearCanvas(canvas);if
2022-04-22 17:17:57
449
原创 Android开发三年了,阿里P5都没面上,卧薪尝胆40天我总结出这些经验教训
7.如何处理Crash,NativeCrash呢?Google是怎么做到的?如果上报过程中再次产生Crash能不能捕捉到?8.apk编译打包流程 V1,V2 签名区别9.binder的Native层代码看过吗10.Android 沉浸式状态栏 怎么实现的阿里三面:1.handler中loop方法为什么不会导致线程卡死,动画的原理,有没有实战过补间动画;bugly上面收集到的最难的bug是怎样的,如何解决的?2.网络协议okhttp中的缓存机制,dex加载流程,组件化的原理;3.应用启动流程,a
2022-04-22 17:15:40
2339
原创 Android中常见的设计模式,2022Android开发社招面试总结
static class Builder {public Builder() {}public void setTitle(String msg){}public void setContent(String msg){}}}var builder =TestBuider.Builder()builder.setContent(“”)TestBuider.Builder builder1 = new TestBuider.Builder();builder1.setContent(“
2022-04-22 17:14:04
167
原创 android中WebView加载网页居中显示,零基础开发android
// 设置是否可缩放webView.getSettings().setBuiltInZoomControls(true);如果设置了此属性,那么webView.getSettings().setSupportZoom(true);也默认设置为true2、无限缩放无限缩放,就需要使用大视图模式,如下:webView.getSettings().setUseWideViewPort(true);设置此属性,可任意比例缩放。注:1、初始缩放值可这样设置:webView.setInitialScale(
2022-04-22 17:12:30
746
原创 android—ListView与RecyclerView滑动显示和隐藏浮动按钮,Android跨进程通信导论
import android.widget.FrameLayout;public class SlidingAroundFrameLayout extends FrameLayout {private boolean isLeftOut = false;private boolean isRightOut = false;public enum TypeEnum {LEFT,RIGHT,}public SlidingAroundFrameLayout(Context context) {s
2022-04-22 17:10:42
278
原创 Android-Framework学习笔记(八)Service的启动-绑定过程,附赠复习资料
Configuration overrideConfiguration) {if (packageInfo == null) throw new IllegalArgumentException(“packageInfo”);return new ContextImpl(null, mainThread, packageInfo, activityToken, null, 0,null, overrideConfiguration, displayId);}注释1处的上下文对象appContext
2022-04-22 17:08:20
233
原创 Android 面试:事件分发8连问,安卓基础面试题
当屏幕被触摸,Linux内核会将硬件产生的触摸事件包装为Event存到/dev/input/event[x]目录下这样做的目的是将输入事件封装为通用的Event,供后续处理[](()1.2 SystemServer部分我们知道,当系统启动时,在SystemServer进程会启动一系列系统服务,如AMS,WMS等其中还有一个就是我们管理事件输入的InputManagerService这个服务就是用来负责与硬件通信,接受屏幕输入事件。在其内部,会启动一个读线程,也就是InputReader,它会从系
2022-04-22 17:03:49
391
原创 电脑硬件知识入门之内存篇
电脑内存分为一代、二代、三代和四代…(台式机/笔记本),我们通常所说的几代内存,都是根据内存频率来划分的,具体如下:DDR是一代内存频率为:DDR266、DDR333、DDR533、DDR667、DDR800;DDR2是二代代内存频率为:DDR II 533、DDR II 667、DDR II 800;DDR3是三代内存频率为:DDR III 1066、DDR III 1333、DDR III 1600、DDR III 1866、DDR III 2133;DDR4是四代内存频率为:DDR IIII.
2022-04-20 18:43:29
6439
原创 牛13了,刷新我的三观,面试题这么背
5.第五遍,面试前一周,恢复性训练通过以上方法重复练习,大概刷100题就足以应付面试,如果每天刷3道,大概准备一个月即可。题库刷题也要注意,不要一题一题刷,比如Leetcode的每日一题。建议按知识点分类,这样比较方便重复练习与知识点掌握。在知识点刷过一遍后,也可以按照公司分类或者LeetCode热题100刷,一般公司出算法题也是有题库的。我都已经整理好了,需要的点击链接即可领取!【[https://links.jianshu.com/go?to=https%3A%2F%2Fjq.qq.com
2022-04-20 18:41:34
129
原创 热修复学习四:AndFix详解一
e.printStackTrace();}return versionName;}《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》开源}public class App extends Application {@Overridepublic void onCreate() {super.onCreate();//完成andFix模块的初始化initAndFix();}private void initAndFix() {AndFixPatch
2022-04-20 18:40:03
183
原创 热修复原理学习(3)编译器与语言特性的影响
========================================================================有时候我们会发现,在修改外部类某个方法逻辑为访问内部类的某个方法时,最后打出来的补丁包竟然提示新增了一个方法,这真的很匪夷所思,所以有必要了解内部类在编译期间是怎么工作的,首先我们要知道内部类在编译期会被编译为跟外部类一样的顶级类。[](()1.1 静态内部类/非静态内部类的区别这一点大家都很熟悉,非静态内部类持有外部类的引用,静态内部类不持有外部类的引用。
2022-04-20 18:38:26
274
原创 深入浅出git-log之代码统计实战
–date=:--date=relative``--date=local``--date=default-local.--date=iso --date=iso8601``--date=rfc``--date=short``--date=rfc2822日期格式化–parents显示提交的父母节点–children显示提交的孩子节点–graph–graph like thisgit log --pretty=format 已存在样式包含 oneline,short, medi.
2022-04-20 18:36:47
1206
原创 深入浅出git-log之代码统计实战(1)
–parents显示提交的父母节点–children显示提交的孩子节点–graph–graph like thisgit log --pretty=format 已存在样式包含 oneline,short, medium, full, fuller, reference, email, raw$ git log --pretty=oneline样式: $ git log --pretty=short样式:commit Author: $ git log --pr.
2022-04-20 18:34:30
986
原创 深入浅出Android-Binder机制(图文+源码深入剖析
Binder 产生的背景首先我们说说为什么会出现 Binder 这个东西。作为 iOS 开发者,我还是情不自禁地想去谈谈 iOS app,事实上,iOS 的每一个 app 都是一个独立的进程,它没有 Android 那种比较开放的多进程通讯能力,甚至 App 与 Extension (如通知中心插件)之间都不能有一种非常直接的通讯方式,当然不是说 iOS 没有 IPC 技术,其实 mach 内核也是有着不错的 IPC 技术的,但这不是本文的重点。Android 则不太一样,Android apps 基本上
2022-04-20 18:32:54
362
原创 深入探索Android卡顿优化(上)
此外,如果你需要分析Native 函数的调用,请使用Android 5.0 新增的[Simpleperf](()性能分析工具,它利用了 CPU 的性能监控单元(PMU)提供的硬件 perf 事件。使用 Simpleperf 可以看到所有的 Native 代码的耗时,对一些 Android 系统库的调用,在分析问题时有比较大的帮助,例如分析加载 dex、verify class 的耗时等等。此外,在 Android Studio 3.2 中的 Profiler 也直接支持了 Simpleper(SampleN
2022-04-20 18:31:21
2218
原创 浅谈MVVM之DataBinding-陈琪-123012016072
<variablename=“goods”type=“Goods”/><variablename=“goodsHandle”type=“GoodsHandler”/><LinearLayoutandroid:layout_width=“match_parent”android:layout_height=“match_parent”android:orientation=“vertical”android:padding=“20dp”><..
2022-04-20 18:29:33
118
原创 浅谈 Android Dex 文件
概述为什么要了解 Dex 文件了解了 Dex 文件以后,对日常开发中遇到一些问题能有更深的理解。如:APK 的瘦身、热修复、插件化、应用加固、Android 逆向工程、64 K 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》开源 方法数限制。什么是 Dex 文件在明白什么是 Dex 文件之前,要先了解一下 JVM,Dalvik 和 ART。JVM 是 JAVA 虚拟机,用来运行 JAVA 字节码程序。Dalvik 是 Google 设计的用于 Android平
2022-04-20 18:27:10
2384
原创 Adroid ListView的下拉刷新的实现
*/public void setLastUpdated(CharSequence lastUpdated) {if (lastUpdated != null) {mRefreshViewLastUpdated.setVisibility(View.VISIBLE);mRefreshViewLastUpdated.setText(lastUpdated);} else {mRefreshViewLastUpdated.setVisibility(View.GONE);}}@Override
2022-04-17 23:52:13
61
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人