java
coder_soldier
这个作者很懒,什么都没留下…
展开
-
java.lang.ArithmeticException:divide by zero
今天测试点出个异常,看log还是第一次见,挺有意思记录一下。java.lang.ArithmeticException:divide by zero除数不能为零,请务必检查代码是否有机会出现除数为零的情况。简单来说就是分母为0。还好不是我写出来的,溜了溜了~...原创 2022-01-28 11:45:26 · 1540 阅读 · 0 评论 -
Android设备之间投屏功能实现
简介简单实现两个android设备之间的投屏功能。设备间通信是通过局域网,需要连接同一个wifi。录屏用到系统的MediaProjection,MediaProjectionManager,而编解码用的是MediaCodec,所以设备需要有DSP芯片,大部分手机应该都有。两台设备间通信使用websocket,录屏端作为服务器进行推流,显示端就是客户端,收到码流进行解码并显示。先看看最终效果:实现首先需要先导入Java-WebSocket库,WebSocket是一种在单个TCP连接上进行全双工通信原创 2021-01-09 22:09:50 · 11557 阅读 · 26 评论 -
Android AOP面向切面编程Demo
AOP在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。Android开发中使用AspectJ来实现AOP编程。AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,它有一个专门的编译器(ajc编译器)用来生成遵守Java字节编码原创 2020-12-29 18:17:36 · 272 阅读 · 0 评论 -
动态规划---LeetCode 不同路径
前言很久没有刷力扣了,昨天做了下每日一题。中等难度感觉有点名不副实了,一把过。今天记录一下思路吧,这道题作为dp算法入门倒是挺合适的。还不了解什么是动态规划的小伙伴可以先去百度一下。题目描述题目来自leetcode官网。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示原创 2020-12-10 13:55:39 · 150 阅读 · 0 评论 -
Android Jetpack 之ViewModel使用
ViewModel之前写过了LiveData的使用,今天来了解下ViewModel的使用方法。ViewModel官方说明先看下官方对它的定义:ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。可以看出ViewModel就是一个存储数据的类。只是生命周期比较长一点。再借用官网一张图。可以看出在activity旋转过程中ViewModel是不会被销毁重建的,这就方便了我们广大程序猿了。再也不用去手动保存数据了,而原创 2020-09-17 16:49:19 · 601 阅读 · 0 评论 -
Java实现桶排序算法
桶排序上学第一次听到桶排序时候一脸蒙蔽,心想数据结构也学习了,有堆、栈、队列等,没听说还有个桶的数据结构。看完代码才算明白原来桶只是打个比方的意思。其实网上关于排序算法的博客一大把,写这篇的目的主要是记录一下,因为今天突然兴起撸一遍桶排序时候竟然想不起来怎么写的了,好气所以干脆记录起来,好记性不如烂笔头。算法这东西不经常用的话忘得是真快。桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续原创 2020-09-16 23:24:32 · 1275 阅读 · 3 评论 -
Android Jetpack 之LiveData使用及原理
LiveDataJetpack已经出来很久了,虽然挺好用但是说实话对其原理理解还是有限,所以抽空来研究一下Jetpack各个功能的原理。LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。通俗的说就是当liveData数据发生改变时,只有处于活跃状态的组件才能收到数据改变原创 2020-09-10 14:13:20 · 682 阅读 · 0 评论 -
Android SVG图片解析Demo
SVGSVG是一种图像文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它是基于XML(Extensible Markup Language),由World Wide Web Consortium(W3C)联盟进行开发的。严格来说应该是一种开放标准的矢量图形语言,可让你设计激动人心的、高分辨率的Web图形页面。用户可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到HTML中通过浏览器来观看。原创 2020-07-30 17:33:58 · 3714 阅读 · 2 评论 -
Android 自定义view实现一个方块矩阵
简介项目中要搞一个很多小方块组成的矩阵。然后可以上下波动。先看下效果图吧,就是酱紫:实现看到这个需求脑海中已经有个大概的思路了,在确定了行数和列数后绘制矩形就是了。下面贴上自定义view的代码。在这里插入代码片...原创 2020-07-28 17:52:58 · 625 阅读 · 0 评论 -
Android ButterKnife框架实现原理
介绍ButterKnife相信大家都很熟悉了,网上介绍其使用方法的文章很多,还不知道ButterKnife是啥的小伙伴可以先去了解一下。ButterKnife用一个注解就替代了findViewById方法。用起来非常方便,但是你有没有想过为啥就不用写findViewById方法了呢,难道代码就真的没有跑findViewById了吗。来来来,我们来自己手写一个ButterKnife,来学习一下他的技术。效果先看一下Demo的效果吧,先展示出来效果大家才有看下去的动力,毕竟光说不练假把式。上面代码原创 2020-06-03 15:41:07 · 441 阅读 · 0 评论 -
Android开发自定义ViewGroup流式布局
流式布局项目中有需求要用到流式布局,自己就自定义了一个FlowLayout,感觉还是有必要记录一下的。以下的代码是从项目里抽出来的,已经去掉了不相关的代码,如果有需要的话可以自己扩展。先看下最终效果吧。图中背景黄色部分就是我们的自定义ViewGroup,所谓流式布局最重要的一点就是可以换行。下面一起学习下怎么去实现这种布局吧。实现过程首先先思考一下如果要实现这种布局需要考虑什么,需要考虑viewgroup的宽高,如果是wrap_content的话就需要我们自己去测量出它的宽高。还要考虑子控件的m原创 2020-07-07 11:15:14 · 282 阅读 · 0 评论 -
Java HashMap计算初始数组大小过程
HashMapHashMap相信大家都很熟悉了,我们经常用来存放数据的一种容器。HashMap实际上是数组加链表的数据结构。在JDK1.8后又引入了红黑树。今天抽空研究了一下HashMap的源码,感觉还是非常值得学习的,它里面的一些算法思想真是让人佩服。本文就来结合源码学习一下HashMap是如何计算数组初始大小的。new HashMap首先回顾一下HashMap的用法。1.new HashMap时候没有指定大小HashMap<String,Integer> hashMap = new原创 2020-06-29 17:24:01 · 3988 阅读 · 3 评论