自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 人月神话

第一章 焦油坑1.编程系统产品要成为通用的编程产品,程序必须按照普遍认可的风格来编写,特别是输入的范围和形式必须广泛地适用于所有可以合理使用的而基本算法。接着对程序进行彻底测试,确保它的稳定性和可靠性,使其值得信赖必须准备,运行和记录详尽的测试用例库,还需要有完备的文档,每个人都可以加以使用,修复和扩展,相同功能点的编程产品的成本,至少是已调试的程序的成本的3倍!编程系统产品=3倍程序产品...

2020-03-01 16:13:03 126

原创 PMP的精神

一》高大上诚实内部公开价值观:项目-企业-团队-个人责任、尊重、公平、城市二》遇事用笔,与人用嘴多记录经验,多总结教训私下面对面 > 正式公开带动-奖励-正式-惩罚三》各有本分,澄清分析解决问题阳光法则-勇于面对问题为人本分-多承担,多汇报做事本分-做且只做,防潜变不断完善-PDCA(小问题,自己变更自己抗,大变化,大风险一定沟通领导,绩效及时汇报)...

2021-07-19 16:55:47 186

原创 一键adb连接网易Mumu模拟器

网易Mumu模拟器的固定端口是7555,所以可以写成1.先启动模拟器2.延迟10s3.连接adb"xxxx\MuMu\emulator\nemu\EmulatorShell\NemuPlayer.exe"TIMEOUT /T 10"xxxx\MuMu\emulator\nemu\vmonitor\bin\adb_server" connect 127.0.0.1:7555...

2021-05-19 11:39:46 1146

转载 android11 文件读写 访问 android/data 目录

1.申请android/data的访问权限使用intent 跳转系统文件管理器到 android/data 并同意你的应用访问这个文件夹这里是代码 Uri uri1 = Uri.parse("content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fdata"); Intent intent1 = new Intent(Intent.ACTION_OPEN_DOCUME...

2021-02-03 16:53:25 69142 4

原创 recycleview复用导致的Edittext,checkbox,ratingbar等数据错乱

recycleview复用导致的Edittext,checkbox,ratingbar等数据错乱记录一个问题由于recycleview复用机制,会导致在刷新adapter的时候,数据发生错乱,也就是下一个item用了上一个item的数据通常是由于监听器导致,在设置数据前移除监听即可,例如:if(et.getTag() instanceof TextWatcher){ et.removeTextChangedListener((TextWatcher)et.getTag());.

2020-11-26 14:36:38 259

原创 IDEA 设置maven镜像

第一步:找到idea中maven中的“settings.xml”位置一般在idea安装目录下的“C:\Program Files\JetBrains\IntelliJ IDEA 2018.2\plugins\maven\lib\maven3\conf”可以通过 File -> settings -> 搜索 Maven 查看或者自己设置第二步:找到“<mirrors>”标签在“<mirrors>”标签下加下面语句:<mirror...

2020-08-07 16:59:15 412

原创 TextView EditText 数字每3个(千位)逗号分离

public static void setTextChangedListener(final EditText edittext, final ImageView imageView){ edittext.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count.

2020-07-31 18:32:25 483

原创 测试接口工具类

package com.whisper.admin.ui.act;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.Button;import android.widget.LinearLayout;import android.widget.TextView;import androidx.annotation.Nullab.

2020-07-09 19:16:23 277

原创 :app:uploadCrashlyticsMappingFileRelease

接入google firebase导致打包失败,报错::app:uploadCrashlyticsMappingFileRelease解决办法: // 屏蔽 task (uploadCrashlyticsMappingFileRelease) gradle.taskGraph.whenReady { tasks.each { task -> if (task.name.contains("uploadCrashlyti...

2020-07-04 15:56:54 3614 2

原创 android 直接run签名包

选中项目,右键 -> open Module SettingModule -> app-> 选项卡(Signing),添加releaseBuild Types选项卡,选中debug中的Signing Config,选择“debug”,这个也是刚刚在signing配置时自己添加取的名。app下的builde.gradle配置:signingConfigs { release { keyAlias "name_xxx" ..

2020-06-29 14:23:40 377

原创 android监听软键盘enter按键

android监听软键盘enter按键,网上找了几个方案都不好使,自己打印日志,得出下面这个方式password.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) { .

2020-06-28 15:00:07 883

原创 kotlin笔记(2)基本数据类型

Kotlin 基本数据类型Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。类型 位宽度 Double 64 Float 32 Long 64 Int 32 Short 16 Byte 8 字面常量下面是所有类型的字面常量:十进制:123 长整型以大写的 L 结尾:123L 16 进制以 0x 开头:

2020-06-20 15:45:01 200

原创 Kotlin 笔记(1)基础语法

Kotlin 基础语法Kotlin 文件以 .kt 为后缀。包声明代码文件的开头一般为包的声明:package com.runoob.mainimport java.util.*fun test() {}class Runoob {}kotlin源文件不需要相匹配的目录和包,源文件可以放在任何文件目录。以上例中 test() 的全名是 com.runoob.main.test、Runoob 的全名是 com.runoob.main.Runoob。如果没有指定包,默认为

2020-06-20 15:07:46 170

原创 超级工具类 AndroidUtilCode

官方地址:https://github.com/Blankj/AndroidUtilCode简介AndroidUtilCode????是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo 和单元测试,利用其封装好的 APIs 可以大大提高开发效率,如今它主要包括两部分模块,其一是主工具类模块:utilcode,其中的工具类是开发中常用到的;其二是子工具类模块:subutil,它包含的工具类并不是很常用,它的出现是为了防止主工具类的臃肿接入方式imp

2020-06-19 18:53:00 1766

转载 解决Glide图片缓存问题,同一url换图片不起作用问题

解决方法有两个:1.每次加载都清理缓存。但这个方法是不可取的, 会导致每次都去网络加载图片. 显示非常慢. 这就相当于废弃了缓存这个好用的功能:Glide.with(this) .load(uri) .asBitmap() .centerCrop() .diskCacheStrategy( DiskCacheStrategy.NONE )//禁用磁盘缓存 .skipMemoryCache( true )//跳过内存缓存 .placeholder(R.mipmap.ic_h

2020-06-16 13:54:20 875

原创 技术资料国内下载,镜像

git 镜像https://npm.taobao.org/mirrors/git-for-windows/v2.27.0.windows.1/同理,其他技术资料可加上https://npm.taobao.org/mirrors/进行下载

2020-06-16 13:15:53 161

原创 VSCode鼠标右键打开

VSCode鼠标右键打开选择中文件新建文件 1.reg输入以下代码(将路径改成自己 vscode 的绝对路径)双击运行Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\VSCode]@="Open with Code""Icon"="C:\\Users\\ticktock\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe"[HKEY..

2020-06-13 00:16:11 1372

原创 android自带的icon矢量图

2020-06-04 19:45:38 1352

原创 VelocityTracker 滑动速度跟踪器 简介

简介可以用来监听手指移动改变的速度,一般用于滑动事件常用方法mVelocityTracker.obtain(); //创建mVelocityTracker.addMovement(event); //传入event事件mVelocityTracker.computeCurrentVelocity(1000); //计算滑动速度,传入速度的单位。值为1表示每毫秒像素数,1000表示每秒像素数mVelocityTracker.getXVelocity(); //X轴滑动速度m.

2020-06-03 17:10:00 743

原创 android 实现超链接

四种方式实现链接。1. autoLink1. xml设置android:autoLink,包括以下参数,其中:all自动识别类android:autoLink="all"android:autoLink="none"android:autoLink="web"android:autoLink="email"android:autoLink="phone"android:autoLink="map"2.代码设置tv1.setAutoLinkMask(Linkify.AL

2020-06-03 13:11:06 3128

转载 Kotlin协程简介

什么是协程?官方描述:协程通过将复杂性放入库来简化异步编程。程序的逻辑可以在协程中顺序地表达,而底层库会为我们解决其异步性。该库可以将用户代码的相关部分包装为回调、订阅相关事件、在不同线程(甚至不同机器)上调度执行,而代码则保持如同顺序执行一样简单。协程就像非常轻量级的线程。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的,协程是由开发者控制的。所以协程也像用户态的线程,非常轻量级,一个线程中可以创建任意个协程。协程很重要的

2020-05-31 00:00:52 340

转载 java多线程系列-----死锁以及解决死锁的办法

死锁的四个必要条件1)互斥条件,即某个资源在一段时间内只能由一个线程占有,不能同时被两个或两个以上的线程占有2)不可抢占条件,线程所获得的资源在未使用完毕之前,资源申请者不能强行地从资源占有者手中夺取资源,而只能由该资源的占有者线程自行释放3)占有且申请条件,线程至少已经占有一个资源,但又申请新的资源;由于该资源已被另外线程占有,此时该线程阻塞;但是,它在等待新资源之时,仍继续占用已占有的资源。4)循环等待条件,存在一个线程等待序列{P1,P2,...,Pn},其中P1等待P2所占有的某一资

2020-05-24 00:24:46 680 1

原创 android 开源库 AndroidSlidingUpPanel 简单使用

1 简介AndroidSlidingUpPanel 可向上拖动的view官方展示:2 使用2.1 添加依赖repositories { mavenCentral()}implementation 'com.sothree.slidinguppanel:library:3.4.0'2.2 用法com.sothree.slidinguppanel.SlidingUpPanelLayout作为根布局。 根布局必须gravity设置为top或botto...

2020-05-23 01:35:57 1194

原创 JetPack实战(1)架构组件简介

官网:https://developer.android.google.cn/jetpack/包含以下8大架构组件:其中databinding,Lifecycles,LiveData,ViewModel,Room,5个最为常用,优先介绍8大组件: 数据绑定(databinding) 以声明方式将可观察数据绑定到界面元素 Lifecycles 管理您的 Activity 和 Fragment 生命周期 LiveData 在底层数据库更改时通知视图 ...

2020-05-22 18:18:24 238

转载 约束布局ConstraintLayout

目录1.介绍 2.为什么要用ConstraintLayout 3.如何使用ConstraintLayout 3.1 添加依赖 3.2 相对定位 3.3 角度定位 3.4 边距 3.5 居中和偏移 3.6 尺寸约束 3.7 链 4.辅助工具 4.1 Optimizer 4.2 Barrier 4.3 Group 4.4 Placeholder 4.5.Guideline 5.总结1.介绍约束布局ConstraintLayout 是一个ViewGroup,可以在Api9

2020-05-22 17:07:05 482

原创 androidstudio配置注释模板

步骤一、File->Setting->Editor->Live Templates二、创建一个Template Group点击最右边+,创建一个Template Group,填写group名,任意填写三、创建Live Template。选中你刚刚创建的group,点击最右边+,创建Live Template ,填写Abbreviation,方便输入和记忆可输入doc1,即这个注释的快捷方式,在函数体上方输入doc加回车即可如下图所示:然后写入...

2020-05-19 16:21:51 1607

转载 android笔记----通过View获取Activity

通过View获取Activitypublic static Activity getActivityFromView(View view) { if (null != view) { Context context = view.getContext(); while (context instanceof ContextWrapper) { if (context instanceof Activity) { return (Activity) con

2020-05-16 21:10:11 1268

原创 JAVA设计模式系列(1)----观察者模式

1.主题Subjectpublic class Subject { //观察者数组 private Vector<Observer> oVector = new Vector<>(); //增加一个观察者 public void addObserver(Observer observer) { this.oVector.add(observer); } //删除一个观察者 public

2020-05-16 01:27:00 110

原创 JAVA多线程(1)几种常见锁,及其原理

1. 用户态和内核态JDK早期,sync都是重量级锁,因为申请锁资源必须通过kernel系统调用ring 0,1,2,3 Linux只用了0,30用户态 3内核态2. CAS不需要系统申请锁,通过汇编指令执行compare and swap比较交换JDK早期都是重量级锁,JDK1.6优化,替换重量级锁java代码跟到 compareAndGet 的native代码最终实现 :cmpxchg =cas修改变量值汇编指令:lock cmp...

2020-05-15 23:04:42 403

原创 JAVA多线程(1)锁,CAS,volatile 常见问题

抛出一个问题,自由发挥1. 请描述Synchronized和reentrantlock的底层实现以及冲入的底层原理请描述锁的四种状态和升级过程CSA的ABA问题如何解决请谈一下AQS,为什么AQS的是底层CSA+volatile请谈一下队volatile的理解CAS是什么?请描述对象的创建过程对象在内存中的内存布局DCL单例为什么要加volatile解释一下锁的四种状态Object o = new Obj...

2020-05-15 23:04:26 241

原创 JVM(2)相关问题

1.对象的创建过程Object o = new Object();获取内存初始化建立关联2. DLC 单例 是否需要加 Volatile必须加!可以防止指令重排序做判断的时候 if(obj != null){} 半初始化+-重排序:比如 初始化和建立关联 2个指令排序调换,导致结果出错...

2020-05-15 23:04:04 87

原创 JVM(2)Voletile、内存屏障

高可用、高扩展、高性能volatile前后都会加内存屏障,这个内存屏障可以禁止指令重排序lock: addlVolatile1. 线程可见性boolean flag =true;new Thread(){ while(flag){ } system.output.printer("end")}.start();Thread.sleep(1000);flag=false;线程并不会停止,子线程取得值并未改变2. 禁止指令重...

2020-05-15 23:03:39 161

原创 coordinaryLayout简单使用

层叠布局,各个大厂的App使用率还是很高的布局:<?xml version="1.0" encoding="utf-8"?><androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android

2020-05-15 22:40:04 2756

原创 简单封装RecycleView

封装通用RecycleAdapterpackage com.example.selfview.adapter;import android.util.SparseArray;import android.view.View;import android.view.ViewGroup;import java.util.List;import androidx.annotation.IdRes;import androidx.annotation.NonNull;import and.

2020-05-15 22:22:01 184

原创 Flutter开发(6)静态资源引用,android打包

1.静态资源文件添加和使用如下图:1. 工程目录下加入文件夹和文件2. pubspec.yaml 文件中对应位置添加配置,- 前后都要有空格使用:import 'package:flutter/material.dart';void main() { runApp(MaterialApp( title: '首页数据传递接受', home:...

2020-05-05 03:52:44 643

原创 Flutter开发(5)页面跳转,数据传递,数据回传

页面跳转,传递数据import 'package:flutter/material.dart';class Product { final String title; final String description; Product(this.title, this.description);}void main() { runApp(MaterialApp( ...

2020-05-05 03:08:42 622

原创 Flutter开发(4)stack(层叠布局)、Positioned(定位布局)、Card(卡片布局)

stack(层叠布局)import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { var stack = new...

2020-05-04 20:02:03 436

原创 Flutter开发(3) 常用组件 listview 、 gridview 、rowWidget(水平布局)、columnWidget(垂直布局)

基础用法,动态数据绑定import 'package:flutter/material.dart';void main() => runApp(MyApp( items:new List<String>.generate(1000, (i)=>'Item $i')));class MyApp extends StatelessWidget { fi...

2020-05-04 18:59:43 369

原创 Flutter开发(2) 常用组件 Container,image

Container 容器import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget { // This widget is the root of your application. @override Wi...

2020-05-03 18:55:41 448

原创 Flutter开发(1)相关资料,安装、下载、镜像、环境配置、模拟器使用、示例demo

1. Flutter相关资料GitHub:https://github.com/Solido/awesome-fluttershoocase:https://flutter.dev/showcaseflutter中文网:https://flutterchina.club/技术胖视频:https://jspang.com/detailed?id=582. 安装JDK...

2020-05-03 17:47:40 8159

空空如也

空空如也

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

TA关注的人

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