计算机技巧
文章平均质量分 85
Alexlee1986
这个作者很懒,什么都没留下…
展开
-
Kotlin语言优势总结
Kotlin是JVM和Android的实用编程语言,结合了OO和功能特性,专注于互操作性,安全性,清晰度和工具支持。 作为通用语言,Kotlin可以在Java工作的地方工作:服务器端应用程序,移动应用程序(Android),桌面应用程序。它适用于所有主要的工具和服务。 Kotlin的关键重点之一是混合Java + Kotlin项目的互操作性和无缝支持,使采用更容易,从而减少了样板代码和更多的类型安全性。此外,Kotlin有一个广泛的标准库,使日常任务轻松流畅,同时保持字节码足迹低。当然,也可以在原创 2021-02-21 21:45:07 · 1478 阅读 · 1 评论 -
git 常用指令总结
一 创建分支1.本地分支创建本地dev分支,然后切换到本地dev分支:git checkout -b devgit checkout命令加上-b参数表示创建并切换,相当于以下两条命令:git branch devgit checkout dev用git branch命令查看当前分支:git branch切换分支,如切换回master分支:git checkout mastergit merge命令用于合并指定分支到当前分支,把dev分支的工作内容合并到mast原创 2020-10-18 11:44:57 · 268 阅读 · 0 评论 -
每日一道算法面试题(5):leetcode5 最长回文子串
题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"PS:回文字符串概念:回文是一个正读和反读都相同的字符串。算法思路:常规算法:增加一个方法判断给定的字符串是否是回文字符串,以此遍历字符串的各个子...原创 2020-03-02 13:14:14 · 279 阅读 · 0 评论 -
每日一道算法面试题(4):leetcode4 寻找两个有序数组的中位数
题目:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2...原创 2020-02-26 12:54:05 · 232 阅读 · 0 评论 -
每日一道算法面试题(3):leetcode3 无重复字符的最长子串
题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke"...原创 2020-02-24 10:24:24 · 223 阅读 · 0 评论 -
每日一道算法面试题(2):leetcode2两数相加
题目:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因...原创 2020-02-21 15:45:16 · 267 阅读 · 0 评论 -
Android应用/进程保活策略总结
Android 应用/进程保活策略总结1.将Service设置为前台服务思路:启用前台服务,主要是startForeground() 。保活程度:一般情况下不被杀,部分定制ROM会在应用切到后台即杀 ,会被 用户手动杀进程(force stop)杀死。使用场景:大部分音乐播放器通知栏的实现,可以保证后台听歌时应用正常运行。2.在service的onstart方法里返回 STATR_STI...原创 2019-12-30 17:54:04 · 730 阅读 · 0 评论 -
Android 基础开发之HandlerThread介绍
Android 基础开发之HandlerThread介绍 HandlerThread的特点:HandlerThread本质上是一个线程类,它继承了Thread;HandlerThread有自己的内部Looper对象,可以进行looper循环;通过获取HandlerThread的looper对象传递给Handler对象,可以在handleMessage方法中执行异步任务;创建Handl...原创 2019-11-22 11:50:05 · 237 阅读 · 0 评论 -
Android开发之获取网络IP地址方法总结
在进行Android应用开发过程中,有时候会遇到获取当前Android设备所使用的网络IP地址的场景,有时候需要本地的网络IP地址,即局域网地址,更多的时候是需要当前网络的真实的对外IP地址,即真实的网络地址,如大数据分析时往往需要Android设备上传本地的外网地址。本文对各种IP地址的获取进行了总结。 首先用大家比较熟悉的电脑端局域网地址和外网地址的获取方式对比一下:(1)、电脑端局域...原创 2019-07-16 12:03:55 · 9841 阅读 · 0 评论 -
Android APK签名、配置及遇到的问题分析
1.APK签名的原因 为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。2.APK签名好处 应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系...原创 2019-07-20 16:50:26 · 487 阅读 · 0 评论 -
Android H5页面中iframe页面请求时无法携带cookie的问题解决方法
一、问题描述 最近修复一个日常开发很少遇到也很少会关注的问题,具体问题是在项目中接入了公司前端同事开发的H5页面,这个H5页面内部接入了第三方的页面(后面通过分析是以iframe方式嵌入H5页面的),从公司内部H5页面跳转到第三方页面时有些机型cookie获取不到。具体现象如下图: 问题分析:当H5页面中使用iframe内嵌一个页面时,由于内嵌页面和外部页面域名不同,导致cookie存在...原创 2019-07-30 17:32:08 · 4970 阅读 · 0 评论 -
Android工具学习之gradlew最全指令攻略
Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app。Android Studio中默认就使用Gradle来完成应用的构建,除此之外我们可以用gradle的指令选择性的去构建我们所需要的app。用gradle的指令构建app,需要用到gradlew(即gradle wrapper...原创 2019-08-01 11:32:57 · 3827 阅读 · 0 评论 -
Android性能优化之APP性能优化原则总结
使用过Android系统手机的同学都知道,Android手机越用越卡,这个卡主要体现在手机系统越用越卡,打开APP的速度越来越慢。Android手机越用越卡的原因主要有:1、Android系统源码是开放的,像国内的几大手机厂商,都是对系统进入定制开发,这样就会引发一系列问题,比如说著名的系统碎片化问题;2、APP开发人员要对各个系统做各种适配,开发人员的水平参次不齐,开发出来的APP就会出现这...原创 2019-08-07 17:12:22 · 726 阅读 · 1 评论 -
Android基础知识之SharedPreferences常见知识点总结
1.SharedPreferences简介 Sharedpreferences是Android平台上一个轻量级的存储类,可以用于保存应用程序的各种配置信息,如应用设置里面的各种开关、是否打开音效、是否使用震动效果、小游戏的玩家积分等,其本质是以“键-值”对的方式保存数据到本地的 xml 文件中,其文件保存在 /data/data//shared_prefs 目录下。 核心原理:以“键-值”...原创 2019-09-04 09:33:42 · 783 阅读 · 0 评论 -
Java 单例模式实现方式及其优缺点——单例模式还可以这样实现
单例模式三种初始化方法及其优缺点一、常见单例模式实现方式 单例模式:顾名思义即确保一个类只有一个实例,而且自行实例化(私有构造方法)并向整个系统提供这个实例。 常见的单例模式有三种模式:懒汉式单例、饿汉式单例、静态内部类单例(也叫登记式单例、holder单例)。1.饿汉式单例 实现方式:public class Singleton { private static fin...原创 2019-09-19 21:07:30 · 314 阅读 · 0 评论 -
Android开发之获取Mac地址的兼容方法
随着Android的版本迭代,获取设备信息的方法也可能发生改变,在android 6生效的方法,在android 8可能已经不生效了。诸如此类,获取Mac地址的方法也发生了变化。这里找到了最新的适配方案(适配当前的最新版本Android 9.0),并且记录了整个适配的修复过程,以供参考。一、Android 6.0 之前,获得Mac地址的通用方式1、必须的权限 < uses-permi...原创 2019-07-03 17:52:06 · 1950 阅读 · 3 评论 -
Android深入研究之View的可见性检测
一、背景 在Android开发中,我们常常会对View的可见性visiblity进行操作或者检查。常见的场景有:在消息流中,根据ImageView是否在屏幕中出现了再决定是否加载;在视频流页面,当视频滑入屏幕被用户可见时播放,滑出屏幕就自动停止播放等等;网络请求数据,根据返回的数据结果控制相应View可见或不可见;需要根据view是否可见或第一次可见,做特殊的处理,如埋点上报等操作。...原创 2019-06-14 10:11:48 · 10079 阅读 · 2 评论 -
HashMap和HashTable区别及Hash冲突解决方法
一、HashMap和HashTable主要有以下5个方面的区别:1.继承的父类不同 Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。2.对null对象的支持不同 HashMap是支持null键和null值的,而HashTable在遇到null时,会抛出NullPointerException异常。这并不是...原创 2018-07-17 14:28:06 · 3117 阅读 · 0 评论 -
HTTP与HTTPS的基本概念及其区别
HTTP协议被广泛应用于Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全超文本传输协议HTTPS。为了数据传输的安全,HTT...原创 2018-07-14 11:56:27 · 915 阅读 · 0 评论 -
Java基础学习之线程同步方法总结
引入线程同步的原因:当有多个线程要同时访问一个变量或对象时,如果这些线程中既有读又有写操作时,就会导致变量值或对象的状态出现混乱,从而导致程序异常,用户也得不到想要的结果。比如,如果一个银行账户同时被两个线程操作,一个取100块,一个存钱100块。假设账户原本有0块,如果取钱线程和存钱线程同时发生,会出现什么结果呢?取钱不成功,账户余额是100;取钱成功了,账户余额是0。那到底是哪...原创 2018-07-29 09:16:14 · 222 阅读 · 0 评论 -
Java基础学习之接口和抽象类的概念、区别及适用的场景
1.接口 接口是抽象方法的集合,一个接口只有方法的形状而没有方法的具体实现,接口是Java面向对象提供的一种机制。 Java语言是一种单继承的,在类的继承中通过实现多个接口间接实现了多继承功能。接口的声明:[public] interface InterfaceName{ void method1(int arg1); void method2(); ......原创 2018-07-29 09:25:15 · 271 阅读 · 0 评论 -
Java基础知识之synchronized同步方法、代码块、静态方法、静态代码块的区别
Java中的同步块用synchronized标记,是同步在某个对象上,所有同步在一个对象上的同步块在同一时刻只能被一个线程进入并执行操作,其他等待进入该同步块的线程将被阻塞,直到执行该同步块中的线程退出。 有四种不同的同步块:实例方法同步; 静态方法同步; 实例方法中的同步块; 静态方法中的同步块。1.实例方法同步 Java实例方法同步是同步在拥有该方法的对象上。这样...原创 2018-07-26 14:34:48 · 3166 阅读 · 0 评论 -
Java基础知识之String、StringBuilder和StringBuffer三者的区别
String、StringBuilder和StringBuffer这三个类在操作字符串时主要有运行速度和线程安全这两方面的区别:1.运行速度 运行速度,即执行字符串操作时代码执行的时间快慢,在这方面运行速度快慢为:StringBuilder > StringBuffer > String。 String最慢的原因:String为字符串常量,而StringBuilder和S...原创 2018-07-21 11:26:01 · 214 阅读 · 0 评论 -
Android高级开发工程师技术面试经验总结
笔者前段时间参加了绿厂的Android高级开发工程师技术面试,总结一下,希望对即将参加技术面试的程序员能有所帮助。 首先面试官问的是项目相关的问题,如项目的实现、项目中遇到的问题以及遇到的问题是如何解决的,同时针对项目中的某些技术点进行不断的追问。 在问完项目相关的问题之后,面试官开始问Android基础知识相关的问题,具体问到了以下这些问题:...原创 2018-07-21 12:08:48 · 930 阅读 · 0 评论 -
Android 多线程编程之 HandlerThread 详解
HandlerThread有那些特点:HandlerThread本质上是一个线程类,它继承了Thread; HandlerThread有自己的内部Looper对象,可以进行looper循环; 通过获取HandlerThread的looper对象传递给Handler对象,可以在handleMessage方法中执行异步任务; 创建HandlerThread后必须先调用HandlerT...原创 2018-08-09 09:51:11 · 370 阅读 · 0 评论 -
Android N及以上版本应用安装包下载完成自动弹出安装界面的适配方法
应用安装包下载完弹出安装界面适配Android N及以上版本遇到文件及解决方法 在实现下载和安装APP功能的时候在Android较高版本可能会遇到如下的问题:安装Apk时报错:android.os.FileUriExposedException: file:///storage/emulated/0/Download/*.apk exposed beyond app through Int...原创 2018-12-07 16:50:30 · 3326 阅读 · 0 评论 -
Kotlin开发利器之协程
Kotlin开发利器之协程协程的定义 协程的开发人员 Roman Elizarov 是这样描述协程的:协程就像非常轻量级的线程。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的,协程是由开发者控制的。所以协程也像用户态的线程,非常轻量级,一个线程中可以创建任意个协程。项目中引入Kotlin的协程 添加依赖:corout...原创 2018-12-30 10:26:46 · 1449 阅读 · 0 评论 -
Android Sdcard文件操作之读、写、增、删(Kotlin实现)
Android Sdcard文件操作之读、写、增、删(Kotlin实现) 在AndroidManifest.xml中加入访问SDCard的权限如下:<!-- 在SDCard中创建与删除文件权限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><!...原创 2019-01-11 18:09:09 · 3685 阅读 · 0 评论 -
Android基础开发之启动其他应用的方式总结
Android 开发经常会遇到在一个应用中启动另一个应用的情况,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用、一个应用为其他应用导量等。在Android中一个应用启动其他应用主要由以下三种启动方式:方式一:通过包名和页面名称,直接打开应用的指定页面Intent intent = new Intent(Intent.ACTION_MAIN);intent.a...原创 2019-04-01 19:33:49 · 1063 阅读 · 0 评论 -
Android进阶学习之 EventBus 3.X.X使用总结
EventBus 简介 EventBus 是Android 发布/订阅事件总线,可简化 Activities, Fragments, Threads, Services 等组件间的消息传递。 优势:可替代 Intent, Handler, BroadCast ,接口等传统方案,更快,代码更小,50K 左右的 jar 包,代码更优雅,彻底解耦。github地址:https://github...原创 2019-04-12 15:53:27 · 698 阅读 · 0 评论 -
360浏览器修改主页方法
最近电脑运行太卡,重装了一下系统,电脑运行明显快了很多,这是题外话。 接着重装了一下360浏览器(个人觉得搜狗浏览器速度比360要好,只是因为一些收藏夹都在360里面),360安全卫士检测出问题主页没有锁定,然后按照下图提示把主页改为了度娘(说实话楼主不喜欢360的主页,商业化气息太浓)。按照提示重启浏览器,那么问题来了重启之后还是显示的360的网页,接着查看浏览器的Int原创 2016-05-08 10:30:16 · 2441 阅读 · 0 评论