XeonYu
码龄7年
  • 2,376,779
    被访问
  • 161
    原创
  • 2,436
    排名
  • 1,517
    粉丝
关注
提问 私信
  • 加入CSDN时间: 2015-06-12
博客简介:

喻志强的博客

博客描述:
但行好事 莫问前程
查看详细资料
  • 7
    领奖
    总分 3,807 当月 120
个人成就
  • 博客专家认证
  • 获得2,142次点赞
  • 内容获得1,226次评论
  • 获得4,993次收藏
  • GitHub 获得1,925Stars
创作历程
  • 3篇
    2022年
  • 32篇
    2021年
  • 8篇
    2020年
  • 31篇
    2019年
  • 35篇
    2018年
  • 48篇
    2017年
  • 4篇
    2016年
成就勋章
TA的专栏
  • 从Java线程到kotlin协程
    17篇
  • Flutter入门系列
    21篇
  • 从零开始,学习web前端
    27篇
  • Java Web入门
    20篇
  • Android
    57篇
  • 版本控制
    3篇
  • 混合开发
    5篇
  • kotlin
    11篇
  • 数据库
    6篇
  • 网络安全
    3篇
我的信息
我的个人网站
我的Github
扫码加微信交流
wechat.jpg
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

kotlin内联(inline)函数中参数默认值报VerifyError: Bad local variable type错误的解决办法

kotlin inline函数报VerifyError: Bad local variable type的解决办法
原创
发布博客 2022.05.25 ·
13 阅读 ·
0 点赞 ·
0 评论

对kotlin友好的现代 JSON 库 moshi 基本使用和实战

前言上一篇博客我们聊了下gson在处理kotlin data class时的一些坑,感兴趣的可以了解一下:gson反序列化成data class时的坑总结一下有一下两点属性声明时值不能为null,结果反序列化后值为null,跟预期不符默认值可能不生效,可能被null覆盖在文章末尾也介绍了解决办法就是不要使用gson,因为gson主要还是针对java的库,没有对kotlin做单独的支持。我们可以使用moshi或jackson来解决上面所说的问题。jackson的是spring boot 默认
原创
发布博客 2022.04.10 ·
2646 阅读 ·
0 点赞 ·
0 评论

gson反序列化成data class时的坑

前言在Android开发中,Gson是很常用的用来处理json的三方库,它是由Google维护的,一直以来都比较稳定,至少在使用Java开发时是长这样的。但是,Gson对Kotlin的data class的支持就不是很完善了,会有一些坑,下面我们来看一看gson和data class的正常情况在kotlin中我们使用data class来充当数据类,举个例子:data class User( val name: String, val age: Int,)使用gson将jso
原创
发布博客 2022.04.04 ·
2759 阅读 ·
0 点赞 ·
0 评论

手把手教你在Java后端使用bsdiff实现增量更新

之前写过一篇博客是在Android上使用bsdiff实现增量更新的功能. 本篇博客来看一看Java 后端的bsdiff增量更新是如何实现的。顺便看一下后端JNI的实现过程,怎么把C 代码编译成linux上需要的so文件等
原创
发布博客 2021.12.18 ·
2567 阅读 ·
3 点赞 ·
0 评论

手把手教你在Android中使用bsdiff实现文件增量更新 (超详细)

全量更新和增量更新在Android开发中,版本更新是一个非常常见的需求。目前更新主要分为两种方式,全量更新、增量更新如下图,分别是酷安和应用宝两个商店的更新页面:可以明显的看到酷安的更新方式是全量更新,即每次下载全量的新版本文件。应用宝的更新方式是增量更新,下载新文件就旧文件的差异部分,然后跟就文件做合并即可。增量更新的好处很明显仅需要下载少量的文件即可完成更新,理论上如果是基于之前文件基础做改动的话,那么文件越大,优势越明显。例如上图中的 PICOOC,如果全量更新的话需要下载92M左
原创
发布博客 2021.11.18 ·
2119 阅读 ·
2 点赞 ·
0 评论

将压缩包里的图片显示到页面上示例

之前在项目中有这么个需求,把图片压缩然后上传到oss上。后来加了个修改功能,修改的时候可以预览之前上传的图片。这就需要把之前上传的zip下载下来,然后解压,然后显示到img标签上。总结下来大致就下面三步:下载压缩包解压出文件组成可用的图片URL,显示到图片标签上实现这个功能还是走了些弯路的,也遇到一些坑,这里就不多废话了,直接上代码,希望能帮助各位大佬快速实现这个功能。首先是下载zip然后解压,官方给了我们一个示例:https://stuk.github.io/jszip/document
原创
发布博客 2021.11.13 ·
890 阅读 ·
1 点赞 ·
0 评论

kotlin协程async await的异常踩坑以及异常处理的正确姿势

使用Kotlin来做一些异步操作相信大家都非常熟悉了,特别是结合Jetpack的一些组件,使得我们在Android开发中写异步任务非常的方便。但是,关于在使用协程的时候,个人觉得异常处理这一块是相对来讲是需要花时间去了解的地方,因为在使用过程中还是会遇到一些小坑的,这里记录下之前遇到的坑。踩一个使用async await时异常处理的坑kotlin 协程的异常处理官方文档我们先来看官方的示例:可以看到,示例代码中在对 async 开启的协程进行异常捕获是在调用 await 时。看打印结果也确实是捕
原创
发布博客 2021.10.30 ·
2760 阅读 ·
1 点赞 ·
4 评论

Nacos startup无反应,启动报错的解决办法

今天在运行Nacos的时候遇见了点问题,记录一下。我的系统是win11,运行的Nacos版本是 2.0.3https://github.com/alibaba/nacos/releases/tag/2.0.3运行startup.cmd 无反应刚开始直接双击 startup.cmd 运行什么反应都没有,也不知道是什么原因。于是就尝试在命令行执行 startup.cmd 给出了以下提示。告知我们需要设置 JAVA_HOME 环境变量,并且需要jdk8或以后的64位的版本。知道什么原因就好办了
原创
发布博客 2021.10.03 ·
2398 阅读 ·
5 点赞 ·
5 评论

了解并发内存模型(JMM)和 Volatile

上一篇:了解 JVM和JVM内存结构(JVM运行时数据区)上一篇博客我们对JVM有了一个简单的了解,同时也大概了解了java代码在栈中是怎么运行的。本篇博客我们来了解一下并发内存模型(Java内存模型)。JMMJava Memory Model:Java 内存模型首先说概念:JMM是一种规范,...
原创
发布博客 2021.08.14 ·
129 阅读 ·
2 点赞 ·
0 评论

了解JVM中的GC

如何判断一个对象是否是垃圾:引用计数器法,根节点可达性分析法垃圾回收算法:标记清除法,复制清除法,标记压缩法。JVM的分代结构:新生代,老年代
原创
发布博客 2021.08.08 ·
165 阅读 ·
0 点赞 ·
0 评论

了解 JVM和JVM内存结构(JVM运行时数据区)

了解JVM内存结构以及一段java代码到底是如何执行的。
原创
发布博客 2021.07.18 ·
176 阅读 ·
1 点赞 ·
6 评论

Java 线程池使用详解

使用线程池主要有以下好处:线程复用,降低资源消耗 提高程序响应速度方便管理,可以控制最大并发数重点理解ThreadPoolExecutor 构造中的7个参数以及不同任务数量的执行效果。
原创
发布博客 2021.07.03 ·
1131 阅读 ·
2 点赞 ·
3 评论

Java中线程安全的集合

线程安全的集合类:1.通过Collections类获取线程安全的集合2.使用JUC中提供的集合CopyOnWriteArrayListConcurrentHashMapCopyOnWriteArraySetArrayBlockingQueue等等
原创
发布博客 2021.07.03 ·
696 阅读 ·
0 点赞 ·
0 评论

JUC中的常用辅助类(CountDownLatch、CyclicBarrier、Semaphore)

JUC中的线程同步辅助类:CountDownLatch:减法计数器,当执行countDown方法数量达到指定数量后,触发后续操作。CyclicBarrier:循环屏障,每当执行await方法的次数达到指定数量,就会执行一遍Runnable方法Semaphore:信号量技术器,用来限制并发线程的数量(限流)
原创
发布博客 2021.06.27 ·
138 阅读 ·
1 点赞 ·
3 评论

JUC中的 StampedLock

StampedLock 是ReentrantReadWriteLock的升级版,支持乐观读锁,但他是**不可重入锁**,主要区别在于乐观读锁实际上**不上锁**,不会阻塞写锁,理论上在读操作的性能上也会比ReentrantReadWriteLock的readLock性能要好(省去了加锁解锁的过程)。
原创
发布博客 2021.06.26 ·
61 阅读 ·
1 点赞 ·
0 评论

JUC中的读写锁(ReentrantReadWriteLock)

JUC中的读写锁(ReadWriteLock)ReentrantReadWriteLock是一种悲观锁,其中写锁同时只能被一个线程持有,读锁可以同时被多个线程持有,所以,读写锁在多线程读的场景下效率会更高。比较适合在读多写少的场景下使用。
原创
发布博客 2021.06.23 ·
129 阅读 ·
1 点赞 ·
2 评论

JUC中的线程通信 Condition

JUC中的线程通信Lock锁Condition线程通信
原创
发布博客 2021.06.20 ·
69 阅读 ·
0 点赞 ·
1 评论

JUC中的 ReentrantLock

上一篇:从Java线程到kotlin协程之java.util.concurrent.locks包中的接口和实现类ReentrantLock (重入锁)重入锁就是可以多次上锁,实现了Lock接口跟synchronized不同,synchronized是自动上锁,自动解锁的,而Lock接口的实现类是需要手动上锁,手动解锁。先看一下ReentrantLock中的方法,常用的其实就是对Lock接口实现的方法。我们先来简单用一用,还是之前买票的例子:lock()获取锁,如果锁被其他线程持有,则处于阻
原创
发布博客 2021.06.19 ·
76 阅读 ·
1 点赞 ·
0 评论

java.util.concurrent.locks 包中的接口和实现类

synchronized关键字相比较与JUC中的Lock有一定的缺陷比如:synchronized 不支持公平性,锁一旦释放,任何线程都能去获得释放的锁,很有可能出现其中一个线程一直获取锁资源,其他线程一直获取不到锁资源。如果一个线程不能获取到 synchronized的锁,那
原创
发布博客 2021.06.18 ·
129 阅读 ·
0 点赞 ·
0 评论

JUC以及并发,线程同步,线程安全的概念加深

JUCJUC:就是JDK给我们提供好的一个工具包,提供了很多用于处理并发的类和接口。包名是 java.util.concurrent .取前三个字母就是JUC我们先大致看一眼这个包里都有啥可以看到,JUC包中有很多类和接口,我们之前用的Callable,FutureTask以及用来简化线程休眠的TimeUnit都在这个包中。所以说,基本上,不管你是Android开发还是Java开发,只要涉及到多线程并发的知识,这个包的代码你是一定会用到的,所以java.util.concurrent这个包里的类和
原创
发布博客 2021.06.18 ·
114 阅读 ·
0 点赞 ·
1 评论
加载更多