自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (2)
  • 收藏
  • 关注

原创 浅谈kotlin

当你给一个类使用了object关键字这个类是单例所有属性和方法都是静态属性和方法。var是variable的缩写val是value的缩写,val是赋值一次只读属性。Sequence在数据量比较大或者未知的时候提供方便的流式处理。关键字代表了 "晚期初始化"只有在程序的后期初始化时,才会为。变量分配内存,而不是在它们被声明时。在非单例类中添加静态属性和方法。Range是自动化的数数工具。

2023-10-20 09:59:57 85

原创 浅谈单例模式

最简单的懒汉式,核心思想就是弥补饿汉式的缺点,在jvm加载单例类的时候不去初始化实例,而是在第一次获取实例的时候再去初始化实例。但是这样理论完美的单例在使用的时候有一个致命的缺点,在多线程使用的情况下,有时会出现不同线程从单例实例中获取不同的实体。饿汉式是在jvm加载这个单例类的时候,就会初始化这个类中的实例,在使用单例中的实例时直接拿来使用就好,因为加载这个类的时候就已经完成初始化,并且由于是已经加载好的单例实例因此是线程安全的,并发获取的情况下不会有问题,是一种可投入使用的可靠单例。

2023-10-19 11:35:55 457

原创 Serializable 和Parcelable的区别

Serializable 是Java所提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作。使用Serializable来实现序列化相当简单,只需要类在声明中指定一个类似下面的标示即可实现默认的序列化过程。

2023-10-19 11:11:01 220

原创 浅谈View的绘制流程

测量:这是View绘制流程的第一步,系统会根据xml布局文件和代码中对控件属性的设置,来获取或者计算出每个View和ViewGrop的尺寸,并将这些尺寸保存下来。对于自定义View,如需完成视图的展示过程,一般需要重写父类的onMeasure()、onLayout()、onDraw()三个方法。Android View的绘制流程可以分为三个主要步骤:测量(measure)、布局(layout)、绘制(draw)。布局:根据测量出的结果以及对应的参数,来确定每一个控件应该显示的位置。

2023-10-18 15:34:32 180

原创 Kotlin 协程

可以看到,我们先创建了一个Job对象,然后把它传入CoroutineScope()函数当中,注意这里的CoroutineScope()是个函数,虽然它的命名更像是一个类。不过GlobalScope.launch和runBlocking函数是可以在任意地方调用的,coroutineScope函数可以在协程作用域或挂起函数中调用,而launch函数只能在协程作用域中调用。现在所有调用CoroutineScope的launch函数所创建的协程,都会被关联在Job对象的作用域下面。

2023-10-17 15:25:09 574 1

原创 Kotlin的作用域函数 let、also、with、run、apply

函数主要有下面这几种,apply ,with 、run 、let 、以及 also。他们在开发中的使用场景主要有两个,一是非空判断,二是对象的初始化或者本身及方法的频繁调用。

2023-10-10 17:49:35 764

原创 Handler的message分为三种

屏障消息和普通消息的区别是屏障消息没有target属性,普通消息有target属性是因为要将消息分发给target指向的handler处理 屏障消息会插入到MessageQueue中合适的位置,这个消息以后的普通消息将被屏蔽 postSyncBarrier返回一个int类型的数值,通过这个数值可以撤销屏障 postSyncBarrier方法是私有的,如果我们想调用它就得使用反射 插入普通消息会唤醒消息队列,这样发送的消息都是普通消息也就是同步消息,发出去的消息就会在MessageQueue中排队。

2023-10-10 15:11:26 408

原创 View#post(Runnable)的执行流程

只初始化一次: ViewRootImpl# scheduleTraversals#performTraversals#host.dispatchAttachedToWindow(mAttachInfo, 0);#开启执行队列#故子线程和主线程执行post获取的不是同一个队列RunQueue getRunQueue().executeActions(mAttachInfo.mHandler);不是不可以在子线程中调用View.post,要在View.onAttachToWindow之后在执行;

2023-10-10 11:59:08 485

原创 Android 消息机制

Handler机制Looper.preper()MessageQueuedispatchMessagehandlerMessage。

2023-10-10 11:50:20 453

原创 闲谈 mybatis-plus 3

(简称 MP)是一个的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

2023-05-22 11:06:16 4360

原创 闲谈 Swagger3

SpringDoc也是 spring 社区维护的一个项目(非官方),帮助使用者将 swagger3 集成到 Spring 中。也是用来在 Spring 中帮助开发者生成文档,并可以轻松的在spring boot中使用。

2023-05-22 10:33:26 4498

原创 Android 中使用md5对大文件进行加密防止OOM

在大文件加密过程比较耗时,需要使用异步调度!

2023-03-30 10:54:50 7852

原创 Android 加载超长大图(长度超过4096)的解决方案和处理办法

意思就是bitmap的长图超长了,大于了4096。把bitmap的长度压制4096。

2023-03-30 10:46:19 8057

原创 闲谈swagger2

我们在使用SpringBoot集成Swagger2中swagger-ui.html相关的所有前端静态文件都在springfox-swagger-ui-2.4.0.jar里面。SpringBoot自动配置本身并不会把/swagger-ui.html这个路径映射到对应的目录META-INF/resources/下面。我们加上这个映射即可。继承WebMvcConfigurationSupport 复写addResourceHandlers(registry)方法添加映射路径并添加到spring容器中。

2020-06-16 16:08:16 12301

原创 关于自定义Dialog

简单调用 new DispatchDialog.Builder(this) .setContentView(you can set layout or view) .setOutsideTouchable(false) .setCancelable(false) .setWindowModelRate(0.8F) ..

2020-06-11 17:02:30 7801

原创 浅谈Git 

Git核心概念 Git最核心的一个概念就是工作流 工作区(Workspace)是电脑中实际的目录。 暂存区(Index)类似于缓存区域,临时保存你的改动。 ...

2020-05-15 09:13:09 23057

原创 浅谈javax.servlet.Filter

源码接口Filterpublic interface Filter { default void init(FilterConfig filterConfig) throws ServletException { } void doFilter(ServletRequest var1, ServletResponse var2, FilterChain var3) throws IOException, ServletException; default void.

2020-05-15 09:12:58 11470

原创 浅谈JdbcDaoSupport

定义操作APIpublic interface ICommonDao { /** * 方法描述:查询出唯一的一条数据,查询不到返回空,查询出多条抛出异常 * @param sql 执行的sql语句 * @param paramMap 参数注入的HashMap<String,Object>对象 * @return 查询到的结果集 * date:2017-07-31 * add by: lurufeng */ .

2020-05-15 09:10:13 23248

原创 浅谈CommandLineRunner

系统启动时简单输出系统信息@Component@Order(value = 1)public class BTCListener implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(BTCListener.class); @Override public void run(String... strings) { Prop.

2020-05-15 09:10:02 11185

原创 浅谈HandlerInterceptor

自定义拦截器规则public class BTCHandlerInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 只有返回true才会继续向下执行,返回false取消当前请.

2020-05-15 09:09:53 18291

原创 浅谈Mail

定义发送邮件APIpublic interface SendMail { /** * @param subject * @param message * @param recipients * @throws MessagingException */ void send(String subject, String message, String... recipients) throws MessagingException,.

2020-05-15 09:09:44 23350

原创 浅谈Scheduled

开启定时任务@EnableScheduling 定义定时任务规则@Scheduled(cron = "0 0 0 * * ?")依次为:秒、分、时、日、月、周、年(可选)秒(0~59) 分钟(0~59) 小时(0~23) 日(0~31) 月(0~11) 星期(1~7 1为SUN-依次为SUN,MON,TUE,WED,THU,FRI,SAT)“*” 代表整个时间段. 每一个字段都有一套可以指定有效值,如 Seconds (秒) :可以用数字0-59 表示,Mi...

2020-05-15 09:09:29 23154

原创 初探mybatis-plus

添加依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.3</version> </dependency> 配置扫描文件路径: <!-- MyBatis Mapper Scan Config两种方式----->ma...

2020-05-14 17:07:37 22431

原创 初探spring-cloud-gateway

引入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency>配置代理地址server: port: 80spring: applica.

2020-05-14 17:06:16 18342

原创 Window向指定QQ客户端窗口发送消息

public class SendQQMessage { Clipboard clipboard; public SendQQMessage(Clipboard clipboard) { this.clipboard = clipboard; } public void sendQQMessage(Robot robot, String QQ, String message) throws InterruptedException, IOExcept.

2020-05-14 16:57:42 23783 1

原创 解决Linux下java环境配置

修改当前用户jdk版本(永久修改,对所有用户有效)编辑系统文件:vi /etc/profile设置配置:export JAVA_HOME=/Dispatch/java/jdk1.8.0_131export JRE_HOME=/Dispatch/java/jdk1.8.0_131/jreexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin...

2020-04-26 09:19:13 15651

原创 浅谈MyBatis

一、Mybatis简介1.1 引入依赖(pom.xml) <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId&...

2020-03-25 12:01:08 18462

原创 禁止ScrollView嵌套RecyclerView自动滑动到底部的问题

ScrollView第一层子布局添加这俩个属性android:focusable=“true”android:focusableInTouchMode=“true”ScrollView 嵌套listview自动滑动到底部的解决办法在listView的父层加上 android:descendantFocusability=“blocksDescendants”...

2020-03-13 16:41:00 7756

原创 解决无法导入import android.support.v4.app.Fragment

import android.support.v4.app.Fragment老是无法通过。解决办法:在gradle.properties中把有关AndroidX的设置全部注释掉,顺便初步了解下AndroidX的作用:android.useAndroidX=true 表示当前项目启用 androidxandroid.enableJetifier=true 表示将依赖包也迁移到android...

2020-03-10 11:29:19 11302

原创 关于Android使用Optional和Stream向下兼容问题

package com.lemon.covert;import java.io.Serializable;import java.util.*;/** * Copyright (C), 2016-2020, 阿诺德有限公司 * * @FileName: Dispatch * @Author: Arnold * @Date: 2020/1/10 14:28 * @Descri...

2020-03-05 10:17:35 15662

原创 Java泛型详解

Class c1 = new ArrayList<Integer>().getClass(); Class c2 = new ArrayList<String>().getClass(); System.out.println(c1 == c2); //true//大括号非常重要,相当于匿名内部类Map<String, Integer&gt...

2020-03-04 15:35:32 18434

原创 Java基础知识梳理&修饰符

private修饰符1.private修饰的变量和方法只在类内部可见。2.在类内部,该类的所有的属性和方法都是可以访问的。子类继承父类的所有属性和方法或子类拥有父类的所有属性和方法是对的。但是父类的私有属性和方法,对子类不可见,子类是无法直接访问到的。即只是拥有,但是无法使用public修饰符被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。如果几个相...

2019-07-31 09:20:35 11352

原创 JAVA基础知识梳理&Enum&EnumSet&EnumMap

Enumpublic enum EnumColor{ RED, GREEN, PINK, YELLOW, BLACK}// 所有枚举类默认继承java.lang.EnumSystem.out.println(EnumColor.class.getSuperclass() == Enum.class); //true // 枚举常量的名字System.out.print...

2019-07-30 16:09:51 19522

原创 Java基础知识梳理&transient

1. transient的作用及使用方法我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比...

2019-07-30 11:12:50 426

原创 Java基础知识梳理&assert

断言概述编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。可以将断言看作是异常处理的一种高级形式断言表示为一些 【布尔表达式】,程序员相信在程序中的某个特定点该表达式值为真可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。使用断言可以创建更稳定,...

2019-07-29 16:34:32 4023

原创 简单算法

Q:怎么理解数据结构?技术点:数据结构 思路:数据结构的定义、分类 参考回答:研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。 按照逻辑结构分类 线性结构:线性表、栈、队列 非线性结构:树、图 按照存储结构分为顺序结构、链式结构、索引结构、哈希结构 Q:什么是斐波那契数列...

2019-07-25 09:47:49 407

原创 Java基础知识梳理&异常机制

当一个程序出现错误时,可能是以下三种错误:语法错误:如缺少必要的标点符号、关键字输入错误、数据类型不匹配等,在编译器对程序进行编译的过程中,会把检测到的语法错误以提示的方式列举出来,故又称为编译错误。 运行时错误:如空指针异常,数组越界,除数为零、数据库连接失败等,迫使程序终止,有特定的发生条件。 逻辑错误:在语法上是有效的,但是在逻辑上是错误的,此类问题不好调试。这里说的Java异常处...

2019-07-25 09:38:15 7541

原创 OkHttp IllegalArgumentException

java.lang.IllegalArgumentException: unexpected urlString url = /*错误写法*/"www.baidu.com";String url = /*正确写法*/"http://www.baidu.com";java.lang.IllegalArgumentException: unexpected schemeHttpU...

2019-07-23 17:02:57 19320

原创 可以订阅Observable、Flowable、Single、Maybe、Completable的LambdaDisposable

Observable 订阅实现Observable<T> observable = null;LambdaDisposable<T> lambdaDisposable = null;observable.subscribeWith(lambdaDisposable);Flowable 订阅实现Flowable<T> flowable ...

2019-07-19 14:11:54 20001

原创 Okhttp动态创建责任链式Interceptor

拦截器容器,装载了所有拦截器 private List<Interceptor> interceptors = new ArrayList<>();拦截器容器添加拦截器public void addInterceptors(Interceptor interceptor) { this.interceptors.add(intercepto...

2019-07-18 19:45:23 20883

CalendarView

ArnoldCalendarView简单生产日历控件,可以在xml中加载也可以自定义创建

2019-04-24

Alert实现弹出框加载XML或者视图VIEW

自定义简单弹出框Dialog辅助工具类 Alert实现弹出框加载XML或者视图VIEW

2019-04-19

空空如也

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

TA关注的人

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