java
文章平均质量分 72
java语言相关专栏
李小白lt
kotlin yyds
展开
-
JVM中性能更好的ArrayList<Int>
前言众所周知,kotlin中有ArrayList<Int>,Array<Int>,IntArray,可他们都有什么区别呢?为什么要有这么多大致相同的类型?正文我们先看一下他们相对于jvm中的类型ArrayList<Int> = ArrayList<Integer>Array<Int> = Integer[]IntArray = int[]可以看出来前面两种都用到了int的包装类型Integer,而IntArray是用的基原创 2022-05-31 16:58:30 · 645 阅读 · 0 评论 -
logback无法生成日志文件之谜
前言spring一般需要打印日志,不然无法定位问题,也会增加调试难度,而目前和spring搭配的比较火的日志库是logback使用方法很简单,直接在该位置加入一个xml的配置文件即可(配置文件示例在文章末),而且可以很简单的生成日志文件正文但是我发现直接在idea里运行时,就会好好的生成日志文件,但在生成jar包后使用 java -jar xx.jar命令时却无法生成日志,很奇怪,而且搜索引擎搜出来的也跟我的貌似不太一样后来一次运行jar的时候手残双击了一下jar包,然后jar包被我原创 2021-05-10 15:02:02 · 11467 阅读 · 5 评论 -
使用Retrofit的方式请求Socket,且Socket可以和Http无缝切换
前言一般来说前端的app和服务器通讯都是用的Http,Http使用方便,请求流程好控制,但有时候app需要实时接收服务端的推送或保持长连接,这时就需要使用Socket了java提供的Socket接口还是比较难用的,而网上有一个开源库OkScoket封装的还是挺好用的,Github地址:https://github.com/xuuhaoo/OkSocket但即使如此,其没有一对一回调或同步请求方法,只能通过一个或几个统一的回调方法,就造成了使用比较麻烦且容易出错而Retrofit使用比较好用,原创 2021-02-27 23:04:56 · 2522 阅读 · 0 评论 -
数据结构特性解析 (四)LinkedList
描述LinkedList应该也是开发中比较常用的数据结构了,其基于链表数据结构实现,添加和删除效率相对比较高,而随机访问效率偏低特点1.LinkedList是双向不循环链表通过查看链节点类: private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E eleme原创 2020-12-19 16:01:21 · 350 阅读 · 2 评论 -
更新至Android Studio4.1后发现as打不开的解决方案
前言今天收到了as更新4.1推送,更完后发现打不开了,报下面的错误Internal error. Please refer to https://code.google.com/p/android/issuesjava.lang.NoSuchMethodError: com.intellij.ide.plugins.PluginManagerCore.loadDescriptors()[Lcom/intellij/ide/plugins/IdeaPluginDescriptorImpl;原创 2020-10-13 10:04:01 · 6083 阅读 · 40 评论 -
更易于使用的Retrofit(不用写注解)
1.处理如果参数不加任何注解,则默认是@Field,并且value为参数名,因为添加了kt反射,检查一下那个传入注解数组到底是干啥的,有没有影响2.POST注解自带FormUrlEncoded注解,可以在第二个参数isUseFormUrlEncoded设置为false............原创 2020-09-29 17:30:24 · 958 阅读 · 2 评论 -
Intellij IDEA(Android Studio)好用的插件和软件
好插件有很多,合理利用插件可以提高开发效率,遇到好用的记录下,找到新的就更新1.Key Promoter Xidea的快捷键提醒和快速设置快捷键如果在idea上无法下载,则在官网下载:http://plugins.jetbrains.com/plugin/9792-key-promoter-x2.GsonFormat根据json串生成一个java类,很好用3.FindBug...原创 2018-07-23 17:51:43 · 15246 阅读 · 4 评论 -
数据结构特性解析 (三) 链表
前言链表是一种比较简单的数据结构,你可以在编程环境下轻松写出一个链表,甚至生活中也有很多链表的提现,比如铁链,文章底部的下一篇上一篇都可以称作链表数据结构描述链表像铁链一样,一个链节点连着另一个或另两个节点.在计算机中,一般是每一个节点除了存储自身的信息外,还会存储另一个节点的内存地址,相当于链接到下一个节点,如下图所示(红色是链表的节点,黑色是被其他数据占用的内存)可以看到链表可以不按照顺序存,只需要指向下一个地址特点1.链表相对于数组,内存占用更高上面的代码就原创 2020-06-30 17:44:21 · 3398 阅读 · 2 评论 -
三方库报错真的就没有办法了吗?
前言项目最近适配了安卓10,而安卓10废弃了某些api,导致调用后就报错,比如:val var5: TelephonyManager = getSystemService("phone") as TelephonyManagervar5.deviceId而项目中用的某个库会在某些情况下调用该代码(这个库比较重要,更换的话问题比较多,且提问题的肯定赶不上上线了),于是就想办法能不能修改jar包来规避该问题然后试了下果然还是可以前提首先库是.jar或.aar的,不开源(开源的直接搞源原创 2020-05-30 14:54:03 · 291 阅读 · 0 评论 -
数据结构特性解析 (二) ArrayList
前言ArrayList可能是Java中使用次数最多的数据结构了,因此了解其特性能比较重要描述ArrayList是一个数组队列,相当于动态数组.与Java中的数组相比,它的容量能动态增长.并且ArrayList还有一些添加,遍历和移除的操作特点1.ArrayList内部实现是利用Java的数组这是内部存储数据的Object数组add方法的实现方式,根据源码可以看到...原创 2020-02-29 20:22:38 · 329 阅读 · 1 评论 -
数据结构特性解析 (一) 数组
前言数组是java中最基本的数据结构,有很多更高级的数据接口实现方式都是使用的数组,所以了解数组是很重要的描述数组是一个对象,内部有一块连续的内存,自身只占用很小的内存,其他位置都是根据长度和类型而分配的值对象或者引用值对象特点1. 数组长度在初始化时确定且无法修改由上图可见,数组并没有add或修改长度的方法2.数组每个位置所占的内存大小是在初始化时固定的数组中...原创 2019-09-30 16:10:34 · 380 阅读 · 1 评论 -
Android Studio(IDEA)太占系统盘?帮你移动下
这段时间清理磁盘,发现as的默认文件夹很占系统空间,于是就找方法把他们移动一下,放在别的盘,拯救我发红的C盘原创 2019-04-05 14:34:24 · 481 阅读 · 0 评论 -
开发奇淫巧技Tips(Android篇)
没事会记录下开发的奇淫巧技,每个tips前都会标明开发语言,有更多更好的奇淫巧技可以发评论或者私聊,可以添加进来1.Kotlin:View调用此方法传入url加载网络图片,如果是ImageView则加载前景,否则加载背景/** * View调用此方法传入url加载网络图片,如果是ImageView则加载前景,否则加载背景 */fun View.loadUrl(url: String...原创 2018-05-15 14:03:58 · 1056 阅读 · 1 评论 -
防止网络请求(或其他回调)引用,从而造成内存泄漏
本文的解决方案用来解决类似如:Activity请求网络,而回调传的是自身,造成Activity执行finish()后并没有被销毁,而是被网络请求持有.和其相类似的问题正文1.网络请求使用Activity当做回调,如:public class MainActivity extends BaseActivity implements ObserverCallBack { @Ov...原创 2018-07-04 14:28:06 · 2752 阅读 · 5 评论 -
安卓队列缓存文件,包括断点续传
想起来之前做视频缓存的工具类,没事记一下,中间用了一个开源的缓存的进度库,其他的都是自己写的其中网络请求时用的OkHttp3缓存进度库用的是: compile 'io.github.lizhangqu:coreprogress:1.0.2'封装的工具类:DownloadUtil.javaimport android.text.TextUtils;import an...原创 2018-07-12 16:35:49 · 881 阅读 · 2 评论 -
JVM内存管理及GC机制
一、概述Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。经过这么长时间的发展,Java GC机制已经日臻完善,几乎可以自动的为我们做绝大多数的事情。虽然java不需要开发人员显示的分配和回收内存,这对开发...转载 2018-08-30 15:02:44 · 126 阅读 · 0 评论 -
如何线程安全的使用HashMap
在周二面试时(我转的,当然不是我),一面的面试官有问到HashMap是否是线程安全的,如何在线程安全的前提下使用HashMap,其实也就是HashMap,Hashtable,ConcurrentHashMap和synchronized Map的原理和区别。当时有些紧张只是简单说了下HashMap不是线程安全的;Hashtable线程安全,但效率低,因为是Hashtable是使用synchroniz...转载 2018-12-12 16:08:56 · 188 阅读 · 0 评论 -
把Spring Boot项目打为可执行jar包
前言这两天没太多事了,就去学了一下后端的内容,发现只要有基础了,学其他的还是挺快的.本篇解决的是SpringBoot打成可执行的jar包,在网上找别人直接用命令,可是我这边显示错误,于是就自己查了查,记录一下步骤(使用IDEA)1.点击该按钮2.依次点击3.依次选择,然后点击ok4.又回到了上个页面,点击ok按钮关闭5.打开Maven Projects窗...原创 2019-02-22 15:51:13 · 10097 阅读 · 1 评论 -
提高开发效率之安卓模板(上面有四种模板的教程,我之前会两种,看完之后还是只会两种2333)
原文地址: juejin.im/post/5c7339…在平时的开发工作中,我们经常将一个地方的代码,复制粘贴到另外一个地方,俗称搬砖,搬砖搬多了,作为一个资深的挨踢民工,难免会总结一些提高生产力的搬砖经验 Android Studio 模板是个提高生产力的好东西,使用过 MVPArms 的朋友,都应该使用过我提供的配套模板,使用该套模板,一键即可生成整个页面需要的所有...转载 2019-02-25 18:06:43 · 343 阅读 · 0 评论 -
坑爹的微信支付(签名错误)
前言以前调微信支付,直接把demo粘过来改改,或者从老项目粘过来,这次接手一个一年之前的项目,说微信支付没调通,好吧,我就调吧正文1:之前的body写的是中文,改成英文结果:失败(不过这一步很必要)2:传递的xml编码换为UTF-8结果:失败(编码应该为 ISO8859-1 )3.前面不行,就去微信官方签名方式测试https://pay.weixin.qq.com/...原创 2019-03-22 14:20:21 · 21564 阅读 · 18 评论