自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Okhttp delete 不可使用@body 解决方式

Okhttp delete 不可使用@body 解决方式注解中增加 hasBody = true 开启body 支持@HTTP(method = "DELETE", path = "devices/principal", hasBody = true)@Headers("service_name: accountservice")fun deletePrincipal(@Body maps: MutableMap<String, Any>): Call<Any>...

2021-08-26 11:31:13 436

转载 Android 类加载原理

Android类加载器原理(一)什么是类加载器类加载器是一个用来加载类文件的类。Java源代码通过javac编译器编译成类文件。然后JVM来执行类文件中的字节码来执行程序。类加载器负责加载文件系统、网络或其他来源的类文件image.png类加载的过程可以分为以上的5步:加载:加载指的是把class字节码文件从各个来源通过类加载器装载入内存中验证:主要是为了保证加载进来的字节流符合虚拟机规范,不会造成安全错误。包括对于文件格式的验证,比如常量中是否有不被支持的常量?文件中是否有不规范的或者附加的其

2021-04-11 09:55:41 222

原创 JDK 国内下载链接

JDK华为国内镜像

2021-02-06 08:33:38 329

转载 android 基础环境问题 各版本SDK的安装

原文连接 :https://www.cnblogs.com/senior-engineer/p/11130757.html

2021-01-20 23:48:05 101

原创 jetpack room 数据库文件无法打开问题

1.创建的文的数据库文件必须以.db结尾2.需要将生成的三个文件全部保存到桌面3.将db文件放入Navicat 数据库工具即可正常预览修改

2021-01-12 20:14:01 461

转载 Android中service服务生命周期以及启动方式的区别

一、生命周期:startService启动方式:onCreate()—>onStartCommand() —>onDestroy();bindService启动方式:onCreate()—>onBind() —>onUnbind()—>onDestroy();我们通过官方给出的一张图片来体会一下:二、启动方式(基本使用方法):startService:Intent mIntent=new Intent(MainActivity.this,startServiceDe

2020-08-12 17:58:26 460

原创 android消息机制,源码解析说明

消息机制Mseeage:消息线程间通信的数据单元,通过message携带需要的数据创建对象:Message.obtain(what)Message 源码解析

2020-08-12 02:25:29 134

原创 android事件分发源码总结

事件分发用户通过屏幕与手机交互的时候,每一次点击、长按、移动等都是一个事件事件分发机制:某一个事件从屏幕传递各个View,由View来使用这一个事件(消费事件)或者忽略这一事件(不消费事件),这整个过程的控制事件传递层级Activity->Window->DecorView->ViewGroup->View首先再Activity上,传递给Activity持有的window,接着传递给window持有的DecorView,DecorView继承自ViewGroup然后

2020-08-02 00:05:28 195

原创 Fragment的生命周期与activity绑定关系

Fragment的生命周期与activity绑定关系onAttach():Fragment和Activity相关联时调用onCreate():系统创建Fragment时调用onCreateView():创建Fragment的布局onActivityCreated():当Activity中的onCreate()方法执行完后调用onStart():onResume():onPause():onStop():onDestroyView():当Fragment的UI从视图结构中移除时调用o.

2020-07-31 11:55:44 792

原创 Activity生命周期的四种状态和七个钩子函数

四种状态运行状态:可见可操作暂停状态:可见但不可操作停止状态:不可见,但对象存在死亡状态:对象不存在七个生命周期方法onCreate():创建状态onStart():启动:onResume():运行到停止经过–onRestart(暂停)——>onStop(停止)onPause():暂停:到运行经过–onResume(运行)onRestart():重启:onStop():停止:到运行经过–onRestart(重启)——>onStrat(启动)——>onRe.

2020-07-31 11:01:33 1255

原创 SpringBoot 自动配置源码解析

自动配置原理源码千千万,总结一句话启动的时候会获取标注了@EnableAotoConfigration注解的类,然后加载spring.factories的资源类,这些类是加了@Configuration的配置类代表他是个配置类,下面有个@EnableConfigurationProperties注解,加载___Properties.class类获取默认配置,如果要修改按照规则在配置文件中配置。随便点一个进去即可...

2020-07-29 13:15:35 167

原创 读写锁案例说明

ReentrantReadWriteLock()写锁是线程独享,同一时间只能有一个线程操作读锁是线程共享:同一时间可以有多个线程操作/** * Created by Last on 2020/7/28. * 读写锁 */public class D { public static void main(String[] args) { MyCacheLock myCacheLock = new MyCacheLock(); for (int i = 1.

2020-07-28 11:59:16 95

原创 Callable和Runnable的区别使用

Callable 有返回值Runnable 没有返回值Callable使用public class C { public static void main(String[] args) throws ExecutionException, InterruptedException { MyCallable myCallable = new MyCallable();// 示例1 FutureTask future1 = new FutureTa.

2020-07-28 09:30:02 195

原创 生产者消费者步骤示例

生产者消费者代码示例synchronized/** * 线程之间通信 * 生产者消费者问题 * 四个步骤:判断,等待,业务,通知 */public class A { public static void main(String[] args) { Data data = new Data(); new Thread(()->{ for (int i = 0; i < 10; i++) { .

2020-07-28 08:20:48 167

原创 数据库sql的基本优化守则,注意事项

三大范式字段都是不可拆分的原子值(要求数据库获取的数据是可以直接使用的数据)必须完全依赖主键(不允许联合主键)除主键列的其他列之间不能有传递依赖事务的四大特征原子性:事务是最小的执行单位,不可在分割一致性:sql 语境必须保证同时成功或失败隔离性:事务1和事务2之间是具有隔离的持久性:事务结束,就不可回退隔离性即产生的问题读未提交(read uncommitted):一个事务还没有提交时,它做的变更就能被别的事务看到。产生问题:如个事务1执行失败,那么事务2可能.

2020-07-24 20:40:31 122

原创 线程池自定义的七大参数和四大策略

/** * 自定义线程池,七大参数和三大策略 */public class ExecutorDome { public static void main(String[] args) { ExecutorService executors = new ThreadPoolExecutor( 2, 5,//线程池最大线程数量 /** * 多余的空闲线

2020-07-24 17:16:56 663

原创 java享原模式代码示例

//享元模式public class Flyweight { public static void main(String[] args) { //创建享元工厂Crater flyweight factory WebSiteFactory factory = new WebSiteFactory(); WebSite webSite = factory.getWebSiteCategory("博客"); webSite.use(ne.

2020-07-24 01:35:06 75

原创 java动态代理演示代码

/** * JDK动态代理 */public class Proxy1{ public static void main(String[] args) { Rent host = new Host(); WatchHostProxy watchHost = new WatchHostProxy(host); ContractProxy contract = new ContractProxy(watchHost); JDKProx

2020-07-24 01:23:45 105

原创 Java 静态代理演示代码

/** * 静态代理 */public class Proxy { public static void main(String[] args) { Rent host = new Host(); WatchHostProxy watchHost = new WatchHostProxy(host); ContractProxy contractProxy = new ContractProxy(watchHost); con.

2020-07-24 01:22:40 120

原创 Redis缓存穿透、击穿、雪崩的解决方式

缓存穿透(同样的数据缓存中找不到,不断的访问底层数据)用户想要查询一个数据,发现reids内存中没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都请求持久层数据库。给持久层数据库造成了压力,就是缓存穿透。解决方案缓存空对象:在缓存层方一个空对象返回给客户布隆过滤器:是一种数据结构,对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃,避免对底层存储系统的查询增加压力缓存击穿(一个Key访问量过大,当k

2020-07-24 01:14:04 78

原创 JVM运行时数据区

2020-07-24 00:53:28 59

空空如也

空空如也

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

TA关注的人

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