自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 viewpager2+tablayout+fragment 实现 滑动 在fragment 设置两个按钮 可以控制左右能不能滑动

自定义viewpager2。activity 代码。

2024-04-17 11:46:15 68

原创 Android解析json串的时候由于没有字段从而报错

【代码】Android解析json串的时候由于没有字段从而报错。

2024-04-12 10:35:39 98

原创 Android不同module里面跳转activity 利用Meta-data标签实现

【代码】Android不同module里面跳转activity 利用Meta-data标签实现。

2024-04-09 09:36:19 74

原创 Android 给GridLayoutManager recycle 设置item间距

【代码】Android 给GridLayoutManager recycle 设置item间距。

2023-12-27 09:14:08 604

原创 配置vue 环境

,然后编辑path,新建,为:C:\Program Files\nodejs\。第一步:“此电脑”-右键-“属性”-“高级系统设置”-“高级”-“环境变量”第二步(我的为:C:\Program Files\nodejs。

2023-11-01 16:33:28 173

原创 Android 小知识 修改页面高度

【代码】【无标题】

2023-10-25 17:06:28 195

原创 Flutter 错误must be a valid Dart package name

【代码】Flutter 错误must be a valid Dart package name。

2022-11-13 11:06:13 1770 1

原创 Flutter (八)Log 工具类

Flutter log 工具类

2022-09-28 10:51:30 1303

原创 Flutter (七) 格式化日期工具类

Flutter 日期工具类

2022-09-28 10:49:05 1025

原创 Flutter工具类(六)loading弹窗

Flutter 弹窗

2022-09-28 10:40:11 1206

原创 Flutter工具类(五) 国际化

国际化配置Flutter

2022-09-27 10:11:46 648

原创 Flutter生命周期应用

生命周期监控

2022-09-27 10:00:18 222

原创 Flutter 工具类 (四)屏幕宽高 状态栏高度

屏幕款到

2022-09-27 09:51:37 1151

原创 Flutter 工具类 (三) 吐司 Toast

Flutter 工具类 吐司

2022-09-27 09:41:47 449

原创 Flutter工具类 (二) 图片加载框架

Flutter 图片加载

2022-09-27 09:38:28 626 1

原创 Flutter 工具类(一) sp

Flutter 工具类 sp

2022-09-27 09:31:51 855

原创 Flutter 打包APK aab

Flutter 打包小技巧

2022-09-01 12:11:44 2217

转载 Android代码混淆配置:ProGuard

混淆

2022-08-15 13:56:40 1115

原创 Android开发 retrofit 正常使用

retrofit

2022-08-08 11:39:00 401

原创 Android跳转系统电话页面

手机号

2022-07-27 14:32:19 812

原创 Kotlin 和java 版本编写 json数据

Kotlin

2022-07-14 10:20:30 519

原创 Retrofit 涉及的设计模式

retrofit

2022-06-05 16:24:28 723

原创 Retrofit 源码解析简洁篇

retrofit 源码解析简洁篇

2022-06-04 09:56:29 247

原创 Android 键盘工具类

键盘

2022-06-03 15:26:28 265

原创 Editext 手机号3-4-4格式

3-4-4

2022-06-03 15:20:34 142

原创 Android 播放音效工具类

音效工具类

2022-06-03 15:18:03 454

原创 Android 仿照微信查看大图

查看大图

2022-06-03 09:41:48 788

原创 Android跳转修改系统权限

修改系统权限

2022-06-03 08:58:31 371

原创 Android 创建APP退出到后台 显示通知栏

ForegroundPushManager.ktobject ForegroundPushManager { val notificationId = 200 //显示通知 fun showNotification(context: Context){ var notification = createForegroundNotification(context) NotificationManagerCompat.from(context).no

2022-03-08 16:08:39 2789

原创 Android实现横幅通知

代码如下: /** * 通知栏(兼容android 8.0以上) */ boolean isVibrate=true;//是否震动 //1.获取消息服务 NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //默认通道是default String channelId="default";

2021-09-14 15:37:06 2269

原创 java线程池面试题----Executor框架解读实战

Executor 简介从代码上看,Executor 是一个简单的接口,但它却是整个异步任务执行框架的基础,这个框架能支持多种不同类型的任务执行策略。他提供了一种标准的方法将任务的提交过程和执行过程解耦开来,任务用 Runnable 来表示。Executor 基于生产者-消费者模式,提交任务的线程相当于生产者,执行任务的线程相当于消费者。同时,Executor 的实现还提供了对任务执行的生命周期管理的支持。Executor 引入的原因大多数并发应用程序都是围绕[任务执行]来构造,应用程序的工作可以被分.

2021-08-01 22:22:37 212

原创 java线程池面试题-----手写线程池实战

一、线程池实战例子项目背景:需要查出一百个用户的信息,并且给他们的邮箱发送邮件,打印出最终结果用户类public class User { private Integer id; private String email; public User(Integer id, String email) { this.id =id; this.email =email; } public String getEmail() {

2021-08-01 22:17:36 222

原创 java面试题---手写一个简单版的线程池

有些人可能对线程池比较陌生,并且更不熟悉线程池的工作原理。所以他们在使用线程的时候,多数情况下都是new Thread来实现多线程。但是,往往良好的多线程设计大多都是使用线程池来实现的。为什么要使用线程降低资源的消耗。降低线程创建和销毁的资源消耗。提高响应速度:线程的创建时间为T1,执行时间T2,销毁时间T3,免去T1和T3的时间提高线程的可管理性下图所示为线程池的实现原理:调用方不断向线程池中提交任务;线程池中有一组线程,不断地从队列中取任务,这是一个典型的生产者-消费者模型。要实现一个

2021-08-01 22:08:46 697 3

转载 java面试---线程池分析和线程的生命周期解读

面试必问:面试问题1:Java的线程池说一下,各个参数的作用,如何进行的? 面试问题2:按线程池内部机制,当提交新任务时,有哪些异常要考虑。面试问题3:线程池都有哪几种工作队列?面试问题4:使用无界队列的线程池会导致内存飙升吗? 面试问题5:说说几种常见的线程池及使用场景?线程池概念线程池: 简单理解,它就是一个管理线程的池子。它帮我们管理线程,避免增加创建线程和销毁线程的资源损耗。因为线程其实也是一个对象,创建一个对象,需要经过类加载过程,销毁一个对象,需要走GC垃圾回收流程,都是需

2021-07-31 18:34:29 772

原创 java阻塞队列详解和并发队列的那些事

在之前的线程池的介绍中我们看到了很多阻塞队列,这篇文章我们主要来说说阻塞队列的事。 阻塞队列也就是 BlockingQueue ,这个类是一个接 口,同时继承了 Queue 接口,这两个接口都是在 JDK5 中加入的 。BlockingQueue 阻塞队列是线程安全的,在我们业务中是会经常频繁使用到的,如典型的生产者消费的场景,生产者只需要向队列中添加,而消费者负责从队列中获取。如上图展示,我们生产者线程不断的 put 元素到队列,而消费者从中 take 出元素处理,这样实现了任务与执行.

2021-07-31 16:26:14 179 1

原创 Java并发面试题 — 阻塞队列(BlockingQueue)

什么是阻塞队列阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。支持阻塞的插入方法:当队列满时,队列会阻塞插入元素的线程,直到队列不满。支持阻塞的移除方法:当队列为空时,获取元素的线程会等待队列变为非空。阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。阻塞队列就是生产者用来存放元素、消费者用来获取元素的容器。在阻塞队列不可用时,这两个附加操作提供了4种处理方式,如下所示:抛出异常:

2021-07-31 10:25:26 656

原创 java线程面试题:原子操作类的正确使用实战

什么是原子操作原子的意思是说“不能被进一步分割的粒子”,而原子操作是说“不可被终端的一个或多个系列的操作”。假定有两个操作A和B,如果从执行A的线程来看,当另一个线程执行B时,要么将B全部执行完,要么完全不执行B,那么A和B对彼此来说是原子的。java中可以通过锁,锁机制的方式来实现原子操作,但是有时候需要更有效灵活的机制,synchronized关键字是基于阻塞的锁机制,也就是说当一个线程拥有锁的时候,访问同一资源的其它线程需要等待,直到该线程释放锁,因为synchronized关键字具有排他性,如

2021-07-30 13:56:38 163

原创 java线程面试题:CAS带来的三大问题及解决方案

1.ABA问题因为CAS需要在操作值的时候,检查值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么CAS进行检查的时候发现它的值没有发生变化,但是实际上却变化了。ABA问题的解决思路就是使用版本号。在变量前面加上版本号,每次变量更新的时候把版本号加1,那么A->B->A就会变成1A->2B->3A。从Java 1.5开始,JDK的Atomic包里提供了一个类AtomicStampedReference来解决ABA问题。这个类的compare

2021-07-30 10:59:09 305

转载 Java线程面试题--------死磕 java线程系列之线程的生命周期

简介大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。常见的错误有:就绪状态、运行中状态(RUNNING)、死亡状态、中断状态、只有阻塞没有等待状态、流程图乱画等,最常见的错误就是说线程只有5种状态。今天这篇文章会彻底讲清楚线程的生命周期,并分析synchronized锁、基于AQS的锁中线程状态变化的逻辑。所以,对synchronized锁和AQS原理(源码)不了解的同学,请翻一下彤哥之前的文章先熟悉这两部分的内容,否则肯定记不住这里讲的线程生命周期。

2021-07-27 10:21:07 113

原创 Android 集成云信推送 (三)踩过的那些坑

<!--云信key--> <meta-data android:name="com.netease.nim.appKey" android:value="" /> <!-- 小米推送 --> <!-- 配置的service和receiver --> <meta-data android:name="com.xiaomi.push.

2021-07-20 15:48:08 1466

空空如也

空空如也

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

TA关注的人

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