自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

指尖流连敲击梦想,代码行行承载远方!

贵有恒,何必三更起五更睡;最无益,只怕一日曝十日寒!

  • 博客(49)
  • 收藏
  • 关注

原创 Java 局部类访问局部变量为什么必须添加 final 关键字

在JDK8之后,编译器不要求内部类访问的局部变量必须被 final 修饰,但是局部变量的值不能被修改(无论是方法中还是内部类中),否则编译器会提示编译错误。利用java查看编译后的字节码可以发现,编译器已经加上了 final 关键字。所以编译器会在内部类中生成一个局部变量的拷贝,这个拷贝的生命周期与内部类的对象相同,就不会出现上述的问题。但是这样一来就导致了其中一个变量被修改,两个变量值可能会不同的问题,为了解决这个问题,编译器就要求局部变量需要把final修饰,以保证两个变量的值相同。

2024-03-06 16:57:12 476

原创 Android Media3 ExoPlayer 如何正确设置缓存大小

Android Media3 ExoPlayer 如何正确设置缓存大小:赋值发生溢出后得到实际的数值,要不变成负数、零、或者变小了,这就解释了为什么会出现上面那个奇怪问题。这里抛砖引玉,其他类似播放器的缓存大小设置可能也会遇到同样的问题,所以需要小心对待,避免落入隐蔽的陷阱。

2024-01-13 18:31:21 994

原创 Tomcat 的 work 目录缓存导致的JSP页面图片更新问题

Tomcat 的 work 目录缓存导致的JSP页面图片更新问题:如果 JSP 的引用了 java 源代码里的变量。如果该变量的值发生了变化,在重新部署后,记得将Tomcat下work目录里对应的 JSP 文件的缓存进行清理。

2024-01-08 21:01:58 1178

原创 Android:有线耳机拔出或蓝牙耳机断开连接,暂停播放

当我们正在“专注学习”的过程中,如果不小心拔掉了耳机线或者断开蓝牙耳机的连接,突然之间我们APP里正在播放的声音就会打扰到周围的人,如果声音还挺大的话,是不是有些尴尬?所以呢,现在需要实现这么一个功能:在有线耳机拔掉或者蓝牙耳机断开连接时,立刻停止播放。

2024-01-05 19:31:12 1201

原创 Android RecycleView实现平滑滚动置顶和调整滚动速度

在实际项目里,RecycleView可以说是我们最常用到的组件,作为绑定并展示LIST数据的组件,经常需要实现平滑滚动到列表里的某个目标ITEM,并且将其置顶在屏幕最上方,而且在特殊情形下,我们需要控制滑动速度,来控制滚动的时长。

2023-12-14 22:01:53 1481 1

原创 Yi大模型版本发布 & 李开复博士送给计算机专业学生的七个建议(共勉)

李开复博士送给计算机专业学生的七个建议(共勉)由李开复博士亲自下场创办的零一万物(01.ai),自 3 月底官宣成立后,于近日发布并开源了两个版本的中英文大模型 Yi-6B 和 Yi-34B。

2023-11-09 09:32:10 300

原创 Android EditText 实现强制性弹出只能输入英文的键盘

如果 EditText 控件不做任何特殊处理,例如笔者手机默认弹出的是百度输入法的软键盘,可实现中英文切换,并且自带英文单词智能联想功能(与系统安装输入法和设置相关)。但在某些应用场景下,例如在英语APP里练习英文句子听写,需要实现:默认弹出只能输入英文的键盘,不允许切换到中文输入键盘,屏蔽输入法的智能联想功能。

2023-11-06 13:43:33 659

原创 JDK17 与 ButterKinife 冲突问题: class butterknife.compiler.ButterKnifeProcessor$RScanner

Cause: superclass access check failed: class butterknife.compiler.ButterKnifeProcessor$RScanner (in unnamed module @0x274412b0) cannot access class com.sun.tools.javac.tree.TreeScanner (in module jdk.compiler) because module jdk.compiler does not export co

2023-10-03 23:02:44 3001

原创 Android Media3 ExoPlayer 开启缓存功能

ExoPlayer 开启播放缓存,可以在下一次加载之前播放过的网络资源的时候,直接从本地加载,可以为用户节省流量和提升加载的效率。

2023-09-17 22:50:11 3168 3

原创 MySQL 联表查询去重 & 解决 DISTINCT 异常:Expression #1 of ORDER BY clause is not in SELECT list, references...

MySQL 联表查询去重 & 解决 DISTINCT 异常:Caused by: java.sql.SQLException: Expression #1 of ORDER BY clause is not in SELECT list, references column 'xxx.x.sort_num' which is not in SELECT list; this is incompatible with DISTINCT

2023-09-08 20:51:33 1454

原创 Navicat for Mysql 显示 emoji 表情符号乱码问题 — 其它乱码情况都可参考

Navicat for Mysql 显示 emoji 表情符号乱码问题 。这里只是抛砖引玉,分析了 emoji 字符乱码出现的场景,其他类似的在任何客户端出现「字符乱码」的情况都可以参考这个思路去分析,也就是说从字符的「存储」和「传输/交互」两个角度去分析,总会找到问题的根源。

2023-08-23 21:58:20 535

原创 MySQL 条件查询 Emoji 表情符号却返回多条数据【包含其它表情符号】的问题解决 - COLLATION 字符序的选择

MySQL 查询 Emoji 表情符号出现多条重复数据的问题

2023-08-23 18:29:33 559

原创 MySQL 字符集概念与原理及如何配置字符集 - 超详细图文详解

MySQL 字符集概念与原理及如何配置字符集?我们在使用 MySQL 的过程中,经常会碰到诸如乱码之类的问题。字符编码与字符集密切相关,MySQL 支持种类繁多的字符集类型,这些字符集到底如何影响 MySQL 数据存储与数据在客户端与服务端之间的传输的呢?我们该如何选择并配置正确的字符集?你真的理解 character_set_client、character_set_connection 和 character_set_results 三个变量的含义吗?那就通过这篇文章来帮你捋清细节和解除困扰吧!

2023-08-21 23:12:24 5363

原创 数据库动态增删数据,导致分页查询数据出现重复或遗漏的问题分析及解决方案

数据库动态增删数据,导致分页查询数据出现重复或遗漏的问题分析及解决方案。当数据库数据发生了动态改变,如果我们的 offset 没有实时动态的修正,仍然固定不变的使用 offset = (page - 1) * pageSize 的方式来获取数据,就会出现数据重复或缺失的情况。

2023-08-17 21:15:47 1045

原创 MySQL 自增 ID 默认从 1 开始,如何设置自增 ID 从 0 开始

在 MySQL 中,自增是一种非常有用的功能,它可以自动给主键赋值,并保证每个主键是唯一的。然而,许多人不知道的是,MySQL 默认情况下从 1 开始自增,这并不总是适合所有情况。然而,在某些情况下,我们可能需要更改自增初值和步长的默认值1。这意味着,在向 example 表插入第一条记录时,id 的值将为1,第二条记录为 3,第三条记录为 5,以此类推。在上面的例子中,我们明确设置自增初值为 1000。在 MySQL 中,我们可以通过在创建表时明确指定自增开始值和步长来更改自增值的初始值。

2023-08-16 16:18:20 3241 3

原创 Easyui-tabs延迟加载:同一个界面嵌套多个Tab,点击/选中后才执行加载

我们通常在一个主框架界面会嵌套多个Tabs, 当在浏览器打开该页面,会导致多个Tabs同时候请求页面数据,这样处理不但会给后台的数据库造成比较大的压力,同时也比较浪费流量。所以有必要实现这样的效果:同一个界面嵌套多个Tab,点击/选中后才执行加载。

2023-05-30 22:05:03 550 1

原创 Android内部存储与外部存储(私有目录与公共目录)图文详解

应用程序在 Android 系统运行过程中产生的用户数据、日志、下载的图片、文件等都需要存储在 Android 系统提供的存储空间里,所以有必要了解 Android 系统的存储空间的概念、分类、特点以及使用方法,在实际应用中采用适合的方式保存数据。本文带你了解 Android系统内部存储与外部存储、私有目录与公共目录。

2023-05-20 18:55:34 10493 8

原创 Android 系统版本与 SDK/API 版本对应表(2023)

Android 系统版本与 SDK/API 的版本并不是一一对应的关系,无法由Android 系统版本来直接推断出 SDK/API 的版本,反之也是如此。所以,我们在开发过程中,也经常需要随时查询两者的对应关系。下面推荐两个查询入口,方便查询最全和最新的两种对应关系。

2023-05-19 11:44:03 3496

原创 Android Studio执行Debug报错:com.intellij.execution.ExecutionFinishedException: Execution finished

将Android Studio升级到2021.3.1版本后,发现Debug功能无法正常启动了。在界面点击【Attatch Debugger to Android progress】,在弹出的窗口选择当前的应用的进程,点击【ok】后,在Debugger的控制台提示错误信息:com.intellij.execution.ExecutionFinishedException: Execution finished。

2023-05-10 18:51:52 1032

原创 MAC移动硬盘无法正常推出:“磁盘无法推出,因为一个或多个程序正在使用它”

MAC移动硬盘在使用中,经常会碰到无法正常退出的情况,提示:“磁盘无法推出,因为一个或多个程序正在使用它”,如果你“直接拔掉”或“强行推出”的话,可能导致你下次重新连接移动硬盘无法识别。

2023-05-03 21:37:00 11623 1

原创 服务器内存不足导致Tomcat进程被杀/服务终止 - 问题排查与解决方法

分析一下,这是一个连接失败的错误信息,Nginx是个代理服务器,请求连接的对象是部署在Tomcat上的一个后台管理服务,对应的端口号是11001,既然Nginx还在正常运行,日志里也没有Nginx报错的信息,那就继续排查Tomcat.首先运行命令:ps aux | grep tomcat,看看Tomcat的进程是否正在运行,文章开头提过,服务端有两个Tomcat在运行,分别监听的端口号是11001和11002,其中通过Nginx对端口11001的请求无法连接。既然是内存不足引起的问题,那么怎么解决呢?

2023-04-07 14:07:56 3910

原创 MAC移动硬盘无法识别解决方案(超详细图文教程)

MAC系统下连接的移动硬盘非正常退出后(断电、直接拔掉等),重新连接后无法在“Finder桌面”或“磁盘工具”里正常看到移动硬盘的标志。不记得有几次出现这样的情形了,每次都是不堪其烦地在网上搜索一番,在“终端”几行命令执行下来,运气好的话很快恢复成功了,运气不好就只能放一边,过段时间再接上居然又能用了,也没搞清楚原理。下面是详细的解决步骤也包括一些命令执行的原理和注意事项。

2023-03-26 23:15:48 20164 9

原创 MAC OS 如何修改“文件”或“文件夹”的“创建时间”和“修改时间”

在MAC OS上修改文件或者文件夹的「命名」,是不会修改文件或文件夹的“修改时间”的,对于单个文件来说,例如一个文本文件,只有它包括的内容发生了改变,该文件的“修改时间”才会发生改变。 有时候我们需要手动修改文件的“创建时间”或者“修改时间”,比如我希望对文件进行排序,我新建一个文件,按创建时间倒序排列,那么这个新建的文件就排在第一个位置,但是我希望将它放到其它之前已经创建文件列表的中间,那么就需要手动修改该文件的“创建时间了”。

2023-02-22 23:35:26 5677 3

原创 SpringBoot获取完整的堆栈异常及异常堆栈日志简化

一般要想获取完整的堆栈信息,不要使用toString() ,另外getMessage() 方法可能获取的也是null。

2023-01-12 23:07:41 2309

原创 通过代理上传文件到阿里云OSS报错:com.aliyun.oss - [Client]Unable to execute HTTP request: SocketException

通过代理上传文件到阿里云OSS报错:com.aliyun.oss - [Client]Unable to execute HTTP request: SocketException

2022-12-11 23:13:48 2765 3

原创 解决 Android APP 启动页白屏问题及如何实现全屏显示

每次 Android APP 启动的时候,会出现一个白屏(或黑屏)出现在我们的的应用启动页之前,虽然一闪而过时间很短,但是比较影响观感和体验,显得我们的 APP 在细节处理方面还不够好,可以观察一些比较主流的Android APP,比如 QQ、CSDN等,都不会有类似白屏的问题。其实,白屏现象很容易理解,在冷启动一个 APP 的时候,启动页还没加载布局文件,此时显示的是Window 窗口背景,我们看到的白屏就是 Window窗口背景。

2022-12-04 23:31:30 10048 1

原创 Installed Build Tools revision 31-33.x.x is corrupted.Remove and install again using the SDK Manager

笔者将一个旧项目编译版本从 29 升级到了最新版本 33,在编译打包过程中报错:Installed Build Tools revision 33.0.1 is corrupted. Remove and install again using the SDK Manager.

2022-12-04 20:04:01 1898

原创 SpringBoot 集成 Hibernate 及事务管理配置

笔者之前维护的一个 spring mvc + hibernate 4.x 的旧项目,最近将这个项目升级到了 spring boot 2.3.12 + hibernate 5.x,将集成过程和一些需要注意的地方记录下来,方便后续继续研究。

2022-12-01 22:07:10 3493

原创 APP常用第三方SDK隐私协议

APP常用第三方SDK隐私协议收集整理:通常在APP的《隐私声明》中提供链接跳到《第三方SDK隐私协议》。你可以根据自己APP里第三方SDK应用的实际情况进行补充或删减,参考下面多个范本格式即可。

2022-11-26 13:50:39 5566

原创 详解 MinSdkVersion、CompileSdkVersion、TargetSdkVersion 三者的区别、作用与关系(超详细图文教程)

对 Android 项目来说,MinSdkVersion、CompileSdkVersion、TargetSdkVersion 这三个属性是必不可少的,贯穿于应用开发的始终,它们的作用也非常重要,只有搞清楚它们三者的内在含义和逻辑关系才能「正确」地设定或修改它们的数值,以确保应用在不同版本的 Android 系统上正常的运行。用较低的 minSdkVersion 来覆盖最大的人群,用最新的 SDK 设置 targetSdkVersion 和 compileVersion 来获得最好的外观和行为。

2022-11-23 14:46:28 18931

原创 Android Gradle依赖冲突解决方案 - 以集成友盟推送(U-Push SDK)与阿里云移动用户反馈(Mobile Feedback SDK)为例

我们开发过程中,项目越来越庞大,业务变的更加复杂,引入的库也很多,总会碰到冲突的情况,我们要善于利用工具和一些常用的gradle命令来帮助我们快速分析和解决问题。

2022-11-20 23:25:06 2163

原创 市场监管新规下Android接入的友盟Umeng移动统计/推送/分享SDK过程问题总结

最近不少第三方SDK提供方也根据市场监管的规则进行了对应的调整。Umeng是一个老牌的第三方SDK的集成开发平台,它的SDK也做了相当多的升级和更新。笔者的Android Sdk接入的Umeng sdk是之前比较老的旧版本了,现在监管新规出来了,还是需要重视下,免得违规导致下架,现在将接入最新版的Umeng sdk的过程和相关问题记录下。

2022-11-18 23:22:42 1950

原创 Umeng App监管执法合规自查通知

近期观察到不少APP的「关于」或者「设置」模块里面多了很多内容,例如:【隐私政策】、【用户服务条款】、【儿童信息保护】、【个人信息收集清单】、【应用权限说明】、【第三方信息数据共享】、【账号注销】等内容,看来市场对APP的监管越来越规范,越来越重视对用户隐私权等合法权益的保护。不少第三方SDK提供方也根据市场监管的规则进行了对应的调整。这是好事,只是对开发者和运营者来说又增加了不少新的工作内容。所以,对这块还是要重视下,免得违规导致下架。

2022-11-14 10:16:08 398

转载 数据库用户表结构设计-多种注册方式含第三方登录

现在是移动互联网的时代,我们在开发一个APP的时候,客户端的注册方式已经非常的丰富,所以后台的用户注册表的设计也需要适应不同注册方式不断扩张的情况,将新增第三方登录类型的开发成本降到最低。

2022-11-10 11:49:11 1772

原创 Hibernate createSQLQuery异常:java.lang.Integer cannot be cast to java.math.BigInteger

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.math.BigInteger

2022-11-05 18:03:24 625

原创 ThreadLocal用法与原理以及在Spring事务管理中的应用

ThreadLocal 是一个类名,但从字面意思理解,ThreadLocal也可以称为「线程局部变量」,也就是说,在某个线程运行的过程中,它往ThreadLocal这里类里填充的值或对象只属于当前这个线程,别的线程无法访问。假如我们现在有一个ThreadLocal对象,多个线程[A, B, C]同时运行, 它们都通过这个ThreadLocal对象存储了一个值,那么它们中任何一个线程在任何时刻取回的值一定就是当初自己设置的那个值,不会与其他线程发生错乱,也相当于数据和线程是绑定在一起了,起到了数据隔离的作用。

2022-10-31 22:50:58 2482 1

原创 Android APP微信第三方登录踩坑 - 微信开放平台修改应用包名后微信第三方登录失败

微信开放平台修改移动应用包名导致微信第三方登录失败

2022-10-29 20:55:36 2572

原创 为什么在不同网站查询本机的公网IP不一样?

为什么在不同网站查询本机的公网IP不一样?

2022-10-16 20:45:28 4970 1

原创 阿里云OSS设置Referer防盗链后MP3/MP4文件在浏览器无法播放问题的分析

当您使用OSS的Bucket域名(如bucketname.oss-cn-zhangjiakou.aliyuncs.com)预览MP4文件时,由于浏览器默认会同时发出两个请求,其中一个为带Referer的请求,另一个为空Referer的请求,因此设置防盗链时必须同时满足在Referer中添加Bucket域名,且允许空Referer的条件。当您使用OSS的Bucket域名预览非MP4文件时,则仅需允许空Referer。

2022-10-10 23:22:31 5283 1

原创 本地IP与网络IP的区别与查询方式

本地IP一般是指电脑在局域网中所设置或DHCP分配的IP;网络IP是指本地网络(局域网)接入互联网由ISP服务商分配的固定IP或动态IP;本地IP只针对内网且可以随意改变的;网络IP是固定的

2022-10-09 21:04:10 2546

空空如也

空空如也

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

TA关注的人

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