ams

被裁的第50天,我终于拿到心仪公司Offer

杀马特。学长 韩版系。学妹 提交于 2020-02-26 17:01:24
今天分享的是之前分享文章中被裁的小C,可以看这篇文《寒冬之下,被cai的那些人到底去哪了?》,最近他已经找到心仪公司今日头条Offer,并且即将入职,在应我要求下,他写了篇总结文如下。下文中的"我",不是鱼哥,是特指小C。 这两个月听的最多的两个词就是 寒冬 和 裁员 ,作为被裁大军中的一员,经历焦虑到担心,再到自信,最后到喜悦。焦虑的是那段被裁日子,不太好过,每天不敢下楼,就在房间里复习。也不敢告诉家里人。担心的是自己找不到工作,成为失业人员。自信是拿了几家二、三线厂offer后,越来越自信。喜悦是同时也拿到自己梦寐以求的公司绿灯通道。今天主要分享下技术面试过程中需要注意的点。 更新简历 在鱼哥指导下,我把简历中亮点项目的一些细节着重介绍了下,以及做的一些成绩用数据量化,简历最好不要写太多页,一般2-3页就够,捡重点写,写牛逼的地方和自己亲自参与的,最好不要写牛逼的项目,但是你却不熟悉的,这很打脸,让人怀疑你的真实性。这点很感谢鱼哥指导。 投递简历 投递简历基本都是找人内推,拉钩,boss上回复意愿貌似很低,有些公司不像是真正招人,内推好处就是可以后续方便跟踪反馈,开始没有着急出去面试,而是准备了半个月有余,把过去从Java,Android,设计模式,算法与数据结构,基本都过了一遍,弱项是算法与数据结构,这里主要去刷了些题目,在LeetCode上。 复习内容 在 Java复习 中

“真假5G”之争再起:不支持N79频段就是“假5G”?

不羁岁月 提交于 2020-02-26 06:19:21
   一、SA 与 NSA 之争   关于 5G 的第一次的舆论战,是关于 5G SA(独立组网)和 5G NSA(非独立组网)两种制式之间的“真假 5G”之争。   在去年 6 月的上海 MWC 展会上,中国移动董事长杨杰就表示 2020 年 1 月 1 日起,我国将不允许 NSA 手机入网,将全力过渡到 SA 5G 组网。此消息一出,立刻引发了网络上的争议。   不少观点认为,同时支持 NSA 和 SA 双模的才是“真 5G”,而只支持 NSA 网络的则是“假 5G”,因为 2020 年 1 月 1 日之后就不能入网了。然而事实上,这种观点并不正确。   不论是 SA 还是 NSA 都是 3GPP 5G NR 标准之下的组网方案,都是“真 5G”。两者的主要不同之处在于:   基于 NSA 架构的 5G 网络,主要是依托现有的 4G 基站和 4G 核心网来进行 5G 网络的部署,控制信号仍通过 4G 网来走,内容传输通过 5G 网来走。其优势在于,其优势在于可用利用现有的 4G 基站及核心网络进行升级,即可快速实现大范围的 5G 网络覆盖,并且成本也可以大幅的降低。但是,由于依赖 4G 系统的核心网与控制面,使得 NSA 架构将无法充分发挥 5G 系统低时延的技术特点,也无法通过网络切片、移动边缘计算等特性实现对多样化业务需求的灵活支持。   相比之下,SA

Activity启动(4)----从进程角度看

感情迁移 提交于 2020-02-26 03:24:35
1.AMS简介 在Android中,一个应用运行时为一个进程,系统对应用的管理是通过一个专门的系统级service——ActivityManagerService,即AMS。 系统通过AMS来管理应用进程的生命周期,也包括应用的activity和service的生命周期。 AMS是一个独立的进程,它与应用进程之间需要通过跨进程交互。 2.AMS与应用的跨进程交互 ActivityManagerProxy是AMS的代理,供应用进程调用,可以通过ActivityManagerNative.getDefault()获取。 ApplicationThreadProxy是应用进程的代理,供AMS进程调用。应用启动时,会将应用进程的代理传递到AMS 举个例子说明下,假如有进程A和进程B,进程B要调用进程A,那么A是server端,B是client端。AP是server端的远程代理,代理AP和server端拥有相同的调用接口。进程B要调用进程A的接口fun,直接调用代理AP的接口fun,代理AP通过Binder机制通知进程A,唤起进程A调用相同的接口fun。 3. 从进程角度看Activity启动流程 3.1 简要流程 图中展示的是重新启动一个APP的流程。 (1) 其他应用通过调用startActivity启动另外一个应用

Android知识体系总结2020之Android部分BroadcastReceiver篇

故事扮演 提交于 2020-02-26 03:11:42
初级~中级 1.广播是什么 & 用来解决什么问题 1.1 定义   在Android中,它是一种广泛运用在应用程序之间传输信息的机制,Android中我们发送广播内容是一个Intent,这个Intent中可以携带我们要发送的数据。 1.2 广播的使用场景   a.同一app内有多个进程的不同组件之间的消息通信。   b.不同app之间的组件之间消息的通信。 2 广播的种类 2.1 无序广播   context.sendBroadcast(Intent)方法发送的广播,不可被拦截,当然发送的数据,接收者是不能进行修改的。 2.2 有序广播   context.sendOrderBroadcast(Intent)方法发送的广播,可被拦截,而且接收者是可以修改其中要发送的数据,修改和添加都是可以的,这就意味着优先接收者对数据修改之后,下一个接收者接受的数据是上一个接收者已经修改了的,这必须明白。 2.3 本地广播   localBroadcastManager.sendBroadcast(Intent),只在app内传播。   本地广播的发送和注册广播接收器都需要使用到LocalBroadcastManager类,如下所示为本地广播的发送和本地广播接收器注册的代码:   本地广播的发送: public static void sendLocalBroadcast(Context

使用Git push部署项目

巧了我就是萌 提交于 2020-02-25 19:59:19
是否可以使用 git push 部署网站? 我有一种预感,它与使用 git钩子 在服务器端执行 git reset --hard 有关,但是我将如何实现呢? #1楼 我最终创建了自己的基本部署工具,该工具会自动从存储库中提取新更新-https: //github.com/jesalg/SlimJim- 基本上,它会侦听github post-receive-hook并使用代理触发更新脚本。 #2楼 我们使用 capistrano 来管理部署。 我们构建了capistrano以部署在登台服务器上,然后与我们所有的服务器运行rsync。 cap deploy cap deploy:start_rsync (when the staging is ok) 使用capistrano,我们可以在发生错误的情况下轻松回滚 cap deploy:rollback cap deploy:start_rsync #3楼 我对 基督徒的 解决方案的看法。 git archive --prefix=deploy/ master | tar -x -C $TMPDIR | rsync $TMPDIR/deploy/ --copy-links -av username@server.com:/home/user/my_app && rm -rf $TMPDIR/deploy 将主分支归档到tar中

Android深入四大组件(四)Android8.0 根Activity启动过程(前篇)

╄→尐↘猪︶ㄣ 提交于 2020-01-11 03:44:55
前言 在几个月前我写了 Android深入四大组件(一)应用程序启动过程(前篇) 和 Android深入四大组件(一)应用程序启动过程(后篇) 这两篇文章,它们都是基于Android 7.0,当我开始阅读Android 8.0源码时发现应用程序(根Activity)启动过程照Android 7.0有了一些变化,因此又写下了本篇文章,本篇文章照此前的文章不仅流程发生变化,而且增加了一些分析,算是升级版本。由于篇幅较长,Android8.0 根Activity启动过程仍旧分为前篇和后篇来进行讲解。 1.概述 Activity的启动过程分为两种,一种是根Activity的启动过程,另一种是普通Activity的启动过程,根Activity指的是应用程序启动的第一个Activity,因此根Activity的启动过程一般情况下也可以理解为应用程序的启动过程。普通Activity指的是除了应用程序启动的第一个Activity之外的其他的Activity。这里介绍的是根Activity的启动过程,它和普通Activity的启动过程是有重叠部分的,只不过根Activity的启动过程一般情况下指的就是应用程序的启动过程,更具有指导性意义。想要了解普通Activity的启动过程的的同学可以参考根Activity的启动过程去自行阅读源码。 根Activity的启动过程比较复杂,因此这里分为三个部分来讲

【8.0.0_r4】AMS架构与流程分析

守給你的承諾、 提交于 2020-01-08 04:18:16
AMS主要用来管理应用程序的生命周期,以及其核心组件,包括Activity,Service,Provider,Broadcast,Task等 之前整体架构如下图(O上已经废弃) 新的架构比较直接,简化了很多,直接调用IApplicationThread和IActivityManger这两个接口就可以完成Client和Service端的binder通信 核心record是进程的,各个Record的关系如下图 AMS本身是system_server进程里的的一个服务,在类SystemServer里完成初始化,并为其所在的进程system_server创建Android运行时环境,即主线程ActivityThread和Context具体子类ContextImpl,来满足AMS的运行环境条件;完成AMS的初始化;并将其自身所在的system_server进程其纳入调度中;最后通知其他模块,AMS已经ready了 大体初始化流程如下: 1. 先是在SysemServer的run方法里,在启动任何服务之前,调用 createSystemContext 方法 1 270 private void run() { 2 ……………………………… 3 378 // Initialize the system context. 4 379 createSystemContext(); 5 380 6

想学习单片机?先从单片机的最小系统入手吧

不羁的心 提交于 2020-01-06 23:23:29
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本文主要讲解单片机的最小系统,内容基础,适合初学者,如有介绍不详的地方请大神们抬手包含并留言讨论。 1. 什么是单片机的最小系统 单片机的最小系统是指能保证单片机能正常工作所需要的最少电路,即在忽略外设电路的情况下,就是能让单片机正常工作的最低配置,最小系统是单片机系统中所必须的。 单片机板 2. 最小系统包含哪些电路 单片机的最小系统一般包含如下几个电路: 1)复位电路 单片机的复位有两种情况:复位引脚出现高电平复位,如STC的51单片机;复位引脚出现低电平复位,如STM32单片机。当单片机的复位引脚上出现两个周期以上的复位电平时,单片机复位,程序要从头开始执行。 复位电路 2)晶振电路 晶振电路也叫做时钟电路,时钟电路为单片机系统提供基本的时钟信号。单片机可以使用外部晶振,也可以使用内部晶振,相对而言外部晶振更精确,也不是所有的单片机都有内部晶振。常用的外部晶振有4M、8M、11.0592M、12M等,配合20-30pF的电容来使用。晶振有有源和无源晶振之分,无源晶振电路图如下所示: 晶振电路 3)电源电路 电路要工作必须要有电,单片机的工作范围一般为DC5V或者DC3.3V,STC89C51单片机的工作电压为3.8-5.5V;LPC11C14的供电电压为1.8-3.6V;STM32单片机的供电范围为2.0

Android深入四大组件(四)Android8.0 根Activity启动过程(前篇)

自古美人都是妖i 提交于 2020-01-04 05:21:37
前言 在几个月前我写了 Android深入四大组件(一)应用程序启动过程(前篇) 和 Android深入四大组件(一)应用程序启动过程(后篇) 这两篇文章,它们都是基于Android 7.0,当我开始阅读Android 8.0源码时发现应用程序(根Activity)启动过程照Android 7.0有了一些变化,因此又写下了本篇文章,本篇文章照此前的文章不仅流程发生变化,而且增加了一些分析,算是升级版本。由于篇幅较长,Android8.0 根Activity启动过程仍旧分为前篇和后篇来进行讲解。 1.概述 Activity的启动过程分为两种,一种是根Activity的启动过程,另一种是普通Activity的启动过程,根Activity指的是应用程序启动的第一个Activity,因此根Activity的启动过程一般情况下也可以理解为应用程序的启动过程。普通Activity指的是除了应用程序启动的第一个Activity之外的其他的Activity。这里介绍的是根Activity的启动过程,它和普通Activity的启动过程是有重叠部分的,只不过根Activity的启动过程一般情况下指的就是应用程序的启动过程,更具有指导性意义。想要了解普通Activity的启动过程的的同学可以参考根Activity的启动过程去自行阅读源码。 根Activity的启动过程比较复杂,因此这里分为三个部分来讲

深入解析AMS启动

亡梦爱人 提交于 2020-01-04 05:19:45
AMS由system_server的ServerThread线程创建,在创建时有四个非常重要的过程: 1.调用AMS的main函数,得到一个context对象 1 context = ActivityManagerService.main(factoryTest); 2.调用setSystemProcess函数,这样可以把system_server进程加到AMS中作统一管理 1 ActivityManagerService.setSystemProcess(); 3.调用installSystemProviders函数,把SettingProvider放到system_server进程中来运行 1 ActivityManagerService.installSystemProviders() 4.AMS准备好之后,启动systemReady线程来整个系统的启动 1 ActivityManagerService.self().systemReady(new Runable() { 2 public void run() { 3 startSystemUi(contextF);//启动systemUI,准备状态栏 4 ... 5 Watchdog.getInstance().start();//启动Watchdog 6 ...//调用其他服务的systemReady函数 7 }