- 博客(151)
- 收藏
- 关注
原创 如何创建一个多类型布局的RecyclerView
如何创建一个多类型布局的RecyclerView看到这个标题可能会比较疑惑,首先我们来看看,一个多类型布局的RecyclerView长什么样子?那么就以懂球帝的主页为例,整体来看整个主页Feed流是一个RecyclerView,而3个红框中框住的分别对应三种不同类型的item。其实也很难好理解,一个RecyclerView中大多数情况下不会只有一种类型的子item,这样视觉效果非常不好,因此多类型布局的RecyclerView才是当今流行的做法。在正式介绍前,首先先看一张整体的流程图,随后的介绍会
2022-01-20 10:43:56
2117
原创 Gradle Task dependsOn多个参数执行顺序
Gradle Task dependsOn多个参数执行顺序task first { doLast { println "+++++first+++++" }}task second { doLast { println "+++++second+++++" }}task third(dependsOn :[second,first]) { doLast { println "+++++third+++++"
2021-02-17 12:06:55
7185
2
原创 Java Socket
Java Socket 基本原理 Java Socket编程是基于应用服务与TCP/IP通信之间的一种抽象,将TCP/IP协议里面复杂的通信逻辑进行封装,对应用程序来讲,只要通过一组简单的API即可实现网络的链接。 进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远程主机的IP地址,远程进程的协议端口。 Socket连接的三个步骤 1.服务器监听:服务器端Socket不定位具体客户端Socket,而是出于等待连接的状态,实时监控网络状态(ServerSoc
2020-05-11 09:55:26
403
原创 海量数据最大k个数以及重复次数最多的k个数问题
海量数据最大k个数以及重复次数最多的k个数问题一、没有内存限制(内存可存储所有海量数据) 海量数据最大k个数:典型TopK问题,维护一个k个元素的小根堆,遍历所有海量数据,与小根堆堆顶元素进行比较,大于堆顶元素(小根堆最小元素)时,当前元素作为新的堆顶元素,并调整小根堆,最终遍历完成后的小根堆即为TopK大的数。 海量数据重复次数最多的k个数:使用HashMap,遍历所有海量数据,key...
2020-05-08 11:44:39
1083
2
原创 Java常见设计模式
Java常见设计模式一、工厂设计模式 简单工厂模式:将创建对象的逻辑判断放在了工厂类中(第三方类),客户并不知道具体有哪些类,客户端需要什么商品只需要修改工厂类的调用而不需要修改客户端,降低了客户端与具体商品的依赖,但违背了开闭原则(在新增具体类的时候,必须修改工厂类) 工厂方法模式:设置工厂接口,将实例化产品的操作延迟到工厂接口的子类中实行,符合开闭原则,但在客户端中必须创建对应的工厂...
2020-05-07 12:02:13
282
原创 Java8新特性
Java8新特性 一、接口内允许添加默认实现的方法 通过default关键字对接口中定义的抽象方法提供一个默认的实现,默认实现的方法可在接口实现类中直接调用,不强制实现。 可以非常方便地对之前的接口进行扩展,且已实现该接口的实现类不必做任何改动。 二、Lambda表达式 Lambda表达式本质上可以被认为是匿名内部类的简写形式。 (参数1:Type1,参数2:Type2…)-...
2020-05-06 11:14:15
199
原创 IO,BIO,NIO理解
BIO,NIO,AIO理解 一、前提基础知识 1.1.同步与异步 关注的是被调用方的执行方式及返回时机。 同步:被调用方做完内部所有事情后再返回,同步调用的调用者一定会得到被调用方的结果。 异步:被调用方先返回,再做事情,做完所有事情后再通知调用方(回调方法),异步调用方不会立即得到被调用方的结果,而是当被调用方执行完成后通过回调函数处理该结果。 1.2.阻塞与非阻塞...
2020-05-05 10:20:35
1631
原创 面试题总结——乐观锁与悲观锁
面试题总结——乐观锁与悲观锁 一、乐观锁与悲观锁对比 1.悲观锁 共享资源每次只给一个线程使用,其他线程阻塞,需等到当前线程使用完后才能使用(总是假设最坏的情况,每次拿到数据后都会认为别人会修改该数据,因此每次拿数据时都会上锁,阻塞其他人) MySQL中的锁机制:行锁,表锁,读锁,写锁;Java中的synchronized和ReentrantLock独占锁。 2.乐观锁 ...
2020-05-02 11:31:48
1484
原创 B/B+树
B/B+树 一、B树 B-Tree:M叉搜索树 B-Tree的特性: 1.每个结点最多含有m颗子树(指针),m-1个关键字(数据),m>=2; 2.除了根节点和叶子结点外,其他每个结点至少有ceil(m/2)个子节点,ceil为向上取整(分裂时使用); 3.若根节点不是叶子结点,则至少有两颗子树(所有叶子结点都在同一层上) 1.1.B树的构建(分裂操作) ...
2020-04-29 11:40:19
292
原创 面试题总结——Linux常见命令
面试题总结——Linux常见命令 进程管理命令 1.pstree:树状图方式展现进程之间的派生关系 pstree -p:显示当前所有进程的进程号和进程id pstree -p pid:查看某个进程的树状图信息 pstree -a:显示所有进程的所有详细信息 2.ps:当前系统的进程状态 ps -aux:显示所有进程的详细信息(包括内存信息) ps -aux ...
2020-04-27 12:20:47
702
原创 面试题总结——数据库
面试题总结——数据库 1.常见三种引擎的区别 InnoDB:支持事务处理,支持外键,(支持行级锁和表级锁,默认为行级锁),有64TB的存储限制。若需要对事务的完整性要求比较高,需要实现并发控制,则选择InnoDB; MyISAM:不支持事务和外键,(仅支持表级锁),插入速度快,空间和内存使用比较低。若表主要用于数据的插入与读取,读操作远多于写操作,则选择MyISAM; MEMORY:..................
2020-04-24 17:17:06
685
原创 面试题总结——JDK,JRE,JVM的区别
面试题总结——JDK,JRE,JVM的区别 JDK :Java Development Kit,Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre; JRE:Java Runtime Environment,Java运行环境,...
2020-04-24 09:44:48
773
原创 面试题总结——网络
面试题总结——网络 1.TCP/IP五层模型(OSI七层模型) ①应用层(HTTP<超文本传输>,DNS<域名系统>):负责应用程序间的数据沟通,对于不同的网络应用需要不同的应用层协议; <应用层>:针对特定应用的协议(电子传输协议SMTP,远程登录协议,文件传输协议) <表示层>:设备固有数据格式和网络标准数据格式的转换(接收不同...
2020-04-23 16:40:22
557
原创 面试题总结——类加载机制及对象实例化
面试题总结——类加载机制及对象实例化 1.类加载机制 类加载机制:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的过程。 类加载流程主要有:加载->连接(验证->准备->解析)->初始化 ①加载: 通过全类名获取定义此类的二进制字节流 将字节流所代表的静...
2020-04-22 18:12:00
480
原创 面试题总结——JVM
面试题总结——JVM 1.Java内存区域划分 线程私有: 程序计数器:表示当前线程所执行的字节码的行号指示器,JVM中唯一一块不会产生OutOfMemoryError异常的区域; 虚拟机栈:Java方法执行的内存模型,每个方法执行时会创建一个栈帧用于存储局部变量表,操作数栈,方法出口等信息,创建栈帧深度太大会导致StackOverFlowError,创建栈帧时内存不够会导致Ou...
2020-04-22 17:48:32
509
原创 面试题总结——Java多线程
面试题总结——Java多线程 1.进程,线程,程序的区别 进程和线程:进程是操作系统中一个程序的执行周期,而线程是一个进程中独立运行的子任务。 体量:相比于进程而言,线程更加轻量级,创建或销毁一个线程比创建或销毁一个进程所花费的开销要小得多; 依附性:线程是依附于进程的,一旦进程结束,该进程内的所有线程都将不复存在; 系统资源:进程是操作系统资源调度的基本单位,可以独享资源...
2020-04-21 16:50:21
908
原创 面试题总结——包装类与基本类的区别
面试题总结——包装类与基本类的区别 1、包装类是一个类,拥有方法和属性 2、包装类是引用的传递,而基本类是值得传递 3、包装类需要使用new关键字创建对象,基本类不需要 4、基本数据类型存储在虚拟机栈的局部变量表中,而包装类存储在Java堆中 5、基本数据类型的初始值是0值,整形是0,浮点型是0.0,boolean是false,而包装类初始值是null...
2020-04-16 12:11:50
721
原创 面试题总结——hashCode()与equals()的区别
面试题总结——hashCode()与equals()的区别 两者都是用于比较两个对象是否相等的,对于hashCode()来讲,只需要对两个对象hash值进行比较即可,效率比较高,但hashCode()不可靠,不同的对象的hash值很有可能相同,因此需要使用equals()方法再进行进一步的相等判断,equals()相等则hashCode()一定相等,而hashCode()相等但equals()不...
2020-04-16 12:10:56
1557
原创 面试题总结——设计六大原则
面试题总结——设计六大原则为什么使用设计模式 设计模式可以改善系统的设计,增强系统的健壮性、可扩展性,方便之后的开发。设计六大原则 单一原则:每个类只负责单一的功能,该类尽量将一个功能做到极致。 里氏转换原则:子类一般不要覆写父类的方法,尽量直接使用父类的方法即可。(避免父类的方法返回true,而子类覆写的方法返回false) 接口隔离原则:一个接口拥有的方法尽可能少,...
2020-04-16 12:07:00
1066
原创 Java8种基本类型所占字节数
Java8种基本类型所占字节数最容易搞混的是Java中的char和boolean 整型: byte:1个字节 char:2个字节 short:2个字节 int:4个字节 long:8个字节 浮点型: float:4个字节 double:8个字节 布尔型: boolean:在java规范中,没有明确指出boolean的大小。但在《Java虚拟机规范》给出了...
2020-04-15 11:20:40
1854
原创 Java基础——内部类
Java基础——内部类 1.内部类优缺点 优点: 1.内部类与外部类可以方便的访问彼此的私有域(包含私有方法、私有属性) 2.内部类是另外一种封装(保护性),对外部的其他类隐藏(心脏包在人身体内部) 3.内部类可以实现Java的"多继承",打破单继承的局限(用内部类继承其他类,都放在一个类中即可) 缺点:结构复杂 2.内部类和外部类的关系 1.对于非静态内部类,内...
2020-04-15 11:02:04
1002
1
原创 Mac上传文件到Github
Mac上传文件到Github1.构建本地仓库 随便创建一个文件夹即可2.创建网上仓库并与本地仓库对应 Github上创建一个仓库(网上教程很多,随便找一个),重点是复制到该仓库的地址 命令行打开刚才新建文件夹的位置并输入: git clone 网上仓库的地址3.将其他文件加入到本地仓库并上传至网上仓库 一定要找到含有.git文件夹的那一级目录(根目录),由于在Mac中.g...
2020-01-31 22:57:08
371
转载 深浅拷贝
转载: 虽然是转载,这里大概说一下自己的理解: 无论是深拷贝还是浅拷贝,只要是想让对象具有拷贝的功能,当前类必须实现Cloneable接口(说明该类具有clone的性质,如果不实现会抛出CloneNotSupportedException异常),并在类中覆写Object类的clone()方法(并且设置访问限定符为public),该方法是需要在别的类中被调用的。 对于基本数据类型来说,无论...
2019-12-17 17:04:30
146
原创 红黑树(RBTree)
红黑树(RBTree)红黑树:AVL树的变种,具有如下4个条件: 1、每一个结点是红色或黑色 2、根结点是黑色。 3、如果一个节点是红色,那么它的两个子节点必须是黑色。 4、从任意一个结点到一个null引用的每一条路径必须包括相同数目的黑色结点。 由于红黑树的特点得出结论:红黑树的高度最多是2log(N+1),因此其查找操作的时间复杂度为对数操作。 在将新结点作为叶结...
2019-12-13 19:09:36
424
原创 火车进出站问题
火车进出站问题 给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号。要求以字典序排序输出火车出站的序列号。 解题思路:数组的全排序+出站顺序的判定。 详细过程: 1、数组的全排序:分治算法的经典。可参考:数组全排序。我这里简单说一下,利用分治思想将大问题化为小问题,一共有n个元素,第一个位置上可以有n种选择...
2019-12-04 18:12:19
699
原创 Linux中查看日志
Linux中查看日志cat查看文件全部内容 若日志文件比较小,可直接使用cat命令将其内容打印出来进行查看,若日志文件比较大,使用cat打开一个比较大的文件可能会占用过多的系统资源,从而影响系统对外的服务tail显示文件尾部 通过-f参数追踪文件的内容,实时查看 eg:tail -f 50 nohup.out => 实时监控nohup.out文件日志的后50行...
2019-11-28 10:56:27
502
原创 "约瑟夫环"问题
"约瑟夫环"问题约瑟夫环:在罗马人占领乔塔帕特后,39 个犹太人与 Josephus 及他的朋友躲到一个洞中,39 个犹太人决定宁愿死也不要被敌人抓到,于是决定了一种自杀方式,41 个人排成一个圆圈,由第 1 个人开始报数,报数到 3 的人就自杀,然后再由下一个人重新报 1,报数到 3 的人再自杀,这样依次下去,直到剩下最后一个人时,那个人可以自由选择自己的命运。这就是著名的约瑟夫问题。现在请...
2019-11-27 16:31:20
314
转载 数据库——Establishing SSL connection without server’s identity verification is not recommended
解决方案
2019-11-26 15:42:30
122
原创 网络——TCP核心机制
网络——TCP核心机制 对于TCP来讲,最核心的两个机制就是可靠传输,尽量提高传输效率。 对于可靠传输来讲,TCP采取三种机制保证传输的可靠性。 1、确认应答机制 2、超时重传机制 3、连接管理机制 除了要保证可靠性外,TCP还采取下面几种机制提高传输效率 4、滑动窗口机制 由于确认应答机制对于每一个发送的数据段都会返回一个ACK报文,在收到...
2019-11-25 16:35:05
1534
原创 网络——通信识别(区分不同的通信)
网络——通信识别(区分不同的通信) TCP/IP或UDP/IP通信中一般采用5个信息来识别一个通信,源IP地址,目标IP地址,协议号,源端口号,目标端口号。 图1和图2,其他的都一样,唯独源端口号不同,则这属于两个不同的通信。 图1和图3,其他的都一样,唯独源IP地址不同,则这属于两个不同的通信 即便所有的IP包括端口号都相同,但协议不同,还是属于两个不同的通信...
2019-11-25 10:00:32
1183
原创 面试题总结——JDK1.5介绍
面试题总结——泛型介绍 大概说一下泛型的相关 泛型的实质是参数化类型,也就是说所要操作的数据类型被指定为一个参数,并在编译期间就进行类型检测而不是和普通类型一样在运行时才进行检测,增加代码可读性,效率更高。多用在Java容器中。...
2019-11-21 20:07:26
186
原创 面试题总结——面向对象
面试题总结——面向对象 面向对象三大特性:封装,继承,多态 封装:将描述事物的数据和操作封装成一个类,被封装的数据和操作只有通过该类提供的公共方法才能被外界访问,保证了数据的安全性,封装隐藏了对象的属性和实施细节。 继承:可以将所有子类的共同属性或方法放在父类中,实现代码的复用,提高类之间的耦合性。 多态:同一个行为具有多个不同的表现形式,多态主要分为对象多态性和方法多态性...
2019-11-21 19:41:53
215
原创 面试题总结——final,finally,finalize的区别
面试题总结——final,finally,finalize的区别 final关键字 1、final用于修饰变量:表示为一个常量,类型和值都不能变化 2、final用于修饰方法:表示该方法不能被覆写 3、final用于修饰类:表示该类不能被继承 4、static final:表示全局常量,命名规则一般为全大写 finally 用于Java异常体系,和try-catch搭配使用...
2019-11-19 11:03:38
444
原创 Java基础——多态中的“编译看左,运行看右”
Java基础——多态中的“编译看左,运行看右” 对于多态中的静态属性或方法来讲,编译看左,运行也看左。无论右边是当前类还是当前类的子类,编译和运行期间执行的都是当前类中的方法。 对于多态中的非静态属性或非静态方法,编译看左,运行看右。也就是在编译期间看左边的类中有无该方法/属性,而实际在运行时执行的是右边类的方法/属性。如果编译期间没有在左边的类找到该非静态域,则会报编译错误。 举...
2019-11-14 18:41:16
1861
原创 面试题总结——对象序列化与反序列化
面试题总结——对象序列化与反序列化 对象序列化:将内存中保存的对象变为二进制数据流的形式进行传输,或者是将其保存在文本中。 简单来说: 序列化:把对象转换为字节序列的过程 反序列化:把字节序列恢复为对象的过程 序列化的用途: 1、把对象的字节序列永久的保存在硬盘上(放在一个文件中),要取出的时候再反序列化为对象即可。 2、网络上传输对象(对象->字节序...
2019-10-29 11:43:04
999
原创 Java基础——IO流
Java基础——IO流 IO核心就是五个类(File,InputStream,OutPutStream,Reader,Writer)+ 一个接口(Serializable) 一、File类 File类是java.io包中唯一一个与文件本身操作(创建、删除、取得信息)有关的程序类。 对文件做操作前,需要先创建一个File类: public File(String pathnam...
2019-10-29 10:31:43
179
原创 Java多线程——ThreadLocal详解
Java多线程——ThreadLocal详解https://www.jianshu.com/p/3c5d7f09dfbdhttps://zhuanlan.zhihu.com/p/34494674
2019-10-28 17:48:22
269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人