项目地址: https://github.com/haikun-li/JetpackApp (由于项目引入了jetpack compose,请使用最新的canary版本的Android studio打开项目)100% kotlin为什么使用kotlin富有表现力且简洁:您可以使用更少的代码实现更多的功能。表达自己的想法,少编写样板代码。在使用 Kotlin 的专业开发者中,有 67% 的人反映其工
目录前言一、自定义DialogView二、自定义Dialog管理三、使用四、拓展前言之前写过一篇《Android自定义通用的Dialog》,最近在整理文章时看到了,发现代码其实可以简化一下,所以本篇也是写一个通用的Dialog,但是我们会对代码做进一步的封装,让我们的代码逻辑看起来更加简洁清晰,好了,话不多说,一起来动手实现吧!一、自定义DialogView封装思路:既然是封装Dialog,那么
文章目录前言一般实现数据库代码自定义类型+空间数据类型MySQL底层存储格式数据库代码测试计算距离 前言最近项目上有个需求,需要存储一些经纬度信息,用于实现类似返回5公里范围内的兴趣点(例如:周边5公里内的厕所),考虑到技术熟练度和运维成本等,选型如下:持久层框架:mybatis-plus数据库:Mysql5.7.x一般实现数据库数据库创建2个字段,经度:lng,纬度:latlng:字段类型de
如下图所示:如果这个时候我们把 PathMeasure的startWithMoveTo改为false会怎么样呢?下过如下所示:这里咋一看不是很好理解,其实画个图就ok,因为startWithMoveTo设置为false就是将新的Path的起始点拉到自己原本dst的结束点(因为dst自己画的是不能变的) ,然后目标path其他位置的点不变就像是使用processon、viso软件画图的时候,用一条线
转载 10月前
14阅读
hive 分桶与便签: 1,分桶表是对列值进行 hash 的方式,将不同的数据放到不同的文件之中存储 2,对 hive中每一个表,分区都可以进行分桶 3,由列的hash值除以桶的个数来决定每条数据划分到哪个桶之中 4,适用于数据抽样,与 map-join 开启分桶机制 # 可以通过 mapred.reduce.tasks 设置 reduce 个数,不推荐 # 一次
转载 2024-06-17 20:50:33
67阅读
注解,也叫元数据,是一种代码级别的说明。它是JDK1.5引入的一个特性,与、接口、枚举所在同一个层次。它可以声明在包、、方法、成员变量、构造器、局部变量、方法参数等的上面,用来对这些元素进行说明、注释。也可以把注解理解为代码里的特殊标记,这些标记可以在编译,加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。1、注解的作用分类(1
Java如何自定义方法语法 : 访问修饰符 返回值类型 方法名(参数列表){ }注意: 1)访问修饰符:方法允许被访问的权限范围, 可以是 public、protected、private 甚至可以省略; 2)方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void 如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return语句返回值 如果方法的返回类型为 void
转载 2023-08-22 20:38:55
51阅读
Java aop自定义注解(使用注解小笔记)a.内置注解1、作用在代码的注解是@Override - 检查该方法是否是重写方法。如果发现其父,或者是引用的接口中并没有该方法时,会报编译错误。 @Deprecated - 标记过时方法。如果使用该方法,会报编译警告。 @SuppressWarnings - 指示编译器去忽略注解中声明的警告。 2、作用在其他注解的注解(或者说元注解)是:@Reten
引用数据类型()1.1      引用数据类型分类提到引用数据类型(),其实我们对它并不陌生,如使用过的Scanner、Random。我们可以把的类型为两种:  第一种,Java为我们提供好的,如Scanner,Random等,这些已存在的中包含了很多的方法与属性,可供我们使用。  第二种,我们自己创建的,按
转载 2023-07-10 13:02:33
114阅读
自定义枚举通过我们对枚举的了解我们知道: 枚举定义方式有两种:jdk5.0之前我们只能是自定义枚举jdk5.0之后我们可以通过新提出的enum关键字来定义枚举那么这里我们就要先来说一下如何自定义枚举但是在实际编程中我们现在绝大多数情况下都是使用enum关键字来定义枚举来的注意: jdk5.0和jdk8.0是java中版本更新的两个重要里程碑, 因为jdk5.0和jdk8.0中都提出了
    注解(Annotation)是JDK1.5引入的新特性,包含在java.lang.annotation包中,它是附加在代码中的一些元信息,在编 译、运行时进行解析和使用Java内置了一些注解(如@Override、@Deprecated等),还支持自定义注解,一些知名的框架 Struts、Hibernate等都有自己实现的自定义注解,之前在项目中,自己定义过注解,主要
###一、自定义组合控件介绍开发中,为了使用的方便,经常把一些控件组合成一个控件,那样就成为了我们的自定义组合控件,严格意义来说,自定义组合控件并不属于“自定义控件”。###二、自定义组合控件步骤1、创建一个java,继承View(或者View的子类),改写构造函数。如下所示,NumberAddSubView是我们的自定义组合控件的名字。通过构造函数的改造,使得一个调用另外一个,最终我们只要修改
什么是变量 (variable) ?**变量就是可以变化的量。 java中怎么定义变量呢? 数据类型 变量名 结束符号 datatype var_name; 例子:int i; Object o;数据类型有哪些,变量名怎么取呢,结束符是什么呢?java中数据类型有两,基本数据类型和引用数据类型。 基本数据类型也叫原生数据类型,就是java需要提前定义好的,你只能用,不能
Java-IO流-对象流操作自定义对象对象流可以将内存中的对象序列化写入本地文件中,也可以从本地文件中反序列化读取对象到内存中但是,对于自定义来说,想要实现序列化,必须要实现Serializable接口如果没有实现Serializable接口的在进行序列化的时候会出没有序列化异常 NotSerializableException Serializable接口是一个标记接口,接口中没有属性和方
转载 2023-06-02 21:25:25
122阅读
TreeSet与Java自定义类型的排序演示TreeSet对String是可排序的TreeSet无法对自定义类型进行排序比较规则怎么写自平衡二叉树结构实现比较器接口Collections工具演示TreeSet对String是可排序的1.TreeMap集合底层实际上是一个TreeMap2.TreeMap集合底层是一个二叉树3.放到TreeSet集合中的元素,等同于放到TreeMap集合key部分了
引用java的热替换classloader机制如下图所示,java的classloader是双亲委派机制。会首先从父classloader加载指定的class,如果加载不到才会从子classloader中加载。主要这里的图片主要用于体现classloader的父子关系,实际上实现时并不一定存在继承关系。比如AppClassLoader的父classLoader是ExtClassLoader,但是
 通过类别来给已经存在的添加方法来实现自定义 如果你需要添加一个方法给一个已经存在的,也许能增加新的功能使你更容易来在我们的应用里处理一些事情。最简单的方法是用类别。这个语法有点想的接口描述但是他是没有继承的,相反的要指定类别的名字在括号里面。@interface ClassName (categoryName) @end一个类别可以被定义在任何的里面。甚至你不知道
转载 2024-04-03 21:26:40
0阅读
自定义我们可以把分为两种:1.一种是java中已经定义好的,如之前用过的Scanner、Random,这些我们直接拿过来用就可以了。2.另一种是需要我们自己去定义,我们可以在定义多个方法和属性来供我们实际的使用。什么是呢?在java中,我们可以将现实生活中的事物通过描述来写成代码,我们可以自定义来描述生活中的事物。比如我们可以将人进行描述,人的姓名,年龄,性别都是人的特有属性
原创 2017-12-07 20:34:24
10000+阅读
hello,大家好,今天跟大家分享一下java中如何自定义异常,以后如果有新的心得,再添加,欢迎前辈指导。。。首先,上Api,看一下异常和错误的父: 然后,现在假设我有个循环(i=0;i<100;i++),我想在i==10的时候停止运行,并执行我自定义的异常,该怎么做呢,请看://自定义异常:  自定义异常,需要继承Throwable或Exception,并且重写printS
转载 2023-05-24 13:55:41
271阅读
Java自定义注解的简单使用,亲手撸一个和 @Valuse 功能一样的注解。使用自定义注解之前先要了解元注解 ,解释如下:元注解的作用就是负责注解其他注解,java 5.0定义了4个meta-annotation类型,用来提供对爱他的annotation类型做说明。@Target@Retention@Document@Inhrited接下来进行介绍加举例@Target修饰的对象范围:package
  • 1
  • 2
  • 3
  • 4
  • 5