
Java
文章平均质量分 56
xuyin1204
这个作者很懒,什么都没留下…
展开
-
select、poll、epoll的区别?
select poll epoll原创 2023-02-03 11:38:20 · 1062 阅读 · 0 评论 -
序列化--Serial
序列化和反序列化原创 2022-12-04 20:26:38 · 583 阅读 · 0 评论 -
如何不通过第三个变量来交互a和b的值
变量交换原创 2022-09-29 09:58:41 · 76 阅读 · 0 评论 -
红黑树相关知识
红黑树原创 2022-09-13 14:38:33 · 72 阅读 · 0 评论 -
cookie和session的详解与区别
转载:cookie和session的详解与区别转载 2022-02-16 14:46:07 · 102 阅读 · 0 评论 -
反射获取Class对象的三种方法
反射获取Class对象的三种方法package reflect;public class reflectTest { public static void main(String[] args) throws Exception { //第一种方式获取Class对象 Student stu1 = new Student();// 这一new,产生一个Student对象和一个Class对象。 Class stuClass1 = stu1.getClass();// 获取Class对象转载 2021-07-20 19:19:28 · 240 阅读 · 0 评论 -
深度解析JVM运行时数据区
参考学习视频:Android/深度解析JVM运行时数据区(1)javac 编译流程:词法分析语法分析语义分析中间代码生成与优化目标代码的生成出错处理jvm加载class文件的步骤装载链接初始化原创 2021-07-14 10:44:42 · 100 阅读 · 0 评论 -
Android打包流程、java打包流程和Java类加载机制
参考:Android应用程序(APK)的编译打包过程原创 2021-07-01 10:50:25 · 144 阅读 · 0 评论 -
Java中的泛型
转载:泛型 (? extends T和? super T)目录一、介绍一、介绍<? extends T>和<? super T>是泛型中的“通配符(Wildcards)”和“边界(Bounds)”的概念。 <? extends T>:上界通配符(Upper Bounds Wildcards)...转载 2021-06-26 16:11:39 · 151 阅读 · 0 评论 -
Android-解析JSON数据(JSON对象/JSON数组)
转载:ANDROID-解析JSON数据(JSON对象/JSON数组)JSON数据存储格式可以为:格式1:{ "name":"李四", "age":99, "hobby":"爱好是练习截拳道"}格式2:{ "student":{ "name":"李四", "age":99, "hobby":"爱好是练习截拳道" }}格式3:{ "student":{ "name":"李四",转载 2021-06-16 13:04:01 · 4498 阅读 · 1 评论 -
单向链表和双向链表
单向链表:package com.test.linkedlist;public class SingleLinkedList { private Node root; // 向链表中添加一个结点 public void add(Object obj) { Node node = new Node(obj); if (root == null) { root = node; return;原创 2021-06-10 17:39:16 · 89 阅读 · 0 评论 -
几种比较经典排序算法
参考:十大经典排序算法(动图演示)原创 2021-06-09 11:03:08 · 139 阅读 · 0 评论 -
线程池相关用例
Semaphore信号量的使用package com.test.threadpooldemo;import java.util.concurrent.Semaphore;public class ThreadPoolTest { //信号量 private static Semaphore semaphore = new Semaphore(5); //5表示允许的个数,相当于放了5把锁 public static void main(String[] args) .原创 2021-05-24 11:12:44 · 327 阅读 · 1 评论 -
Java引用类型
java中的引用类型:1)强引用2)软引用 SoftReference3)弱引用 WeakReference4) 虚引用 PhantomReferece对象的可及性由最强引用类型决定。对象的可及性:1)强可及对象:永远都不会被GC回收2)软可及对象:当系统内存不足的时候,被GC回收3)弱可及对象:当系统GC发现这个对象,就被回收package com.example.referencedemo;import java.lang.ref.SoftReference;import原创 2021-05-23 22:22:16 · 94 阅读 · 0 评论 -
HashMap排序题
要求: 已知一个HashMap<Integer, User>集合,User有name(String) 和age(int)属性,请写一个方法实现对HashMap的排序功能,该方法接收HashMap<Integer, User>为形参,返回类型为HashMap<Integer, User>,要求对HashMap中的User的age倒序进行排序,排序时key,value键值对不得拆散。...原创 2021-05-23 17:05:11 · 276 阅读 · 0 评论 -
抽象类和接口
参考:JAVA开发从入门到精通原创 2021-05-20 17:08:24 · 82 阅读 · 0 评论 -
集合和泛型
目录一、Collection集合接口二、List和Set集合三、集合的变量方式四、Map集合五、Collections和Arrays集合工具类六、泛型一、Collection集合接口二、List和Set集合三、集合的变量方式四、Map集合五、Collections和Arrays集合工具类六、泛型...原创 2021-05-19 16:29:27 · 113 阅读 · 0 评论 -
File类和IO流
参考:JAVA开发从入门到精通目录一、File类二、 I/O流三、文件字节输入输出流四、对象字节输入输出流五、 文件字符输入输出流一、File类package com.test.file;import java.io.File;import java.io.IOException;import java.lang.reflect.Array;import java.util.ArrayList;import java.util.Arrays;import java.util.Da原创 2021-05-19 13:34:24 · 165 阅读 · 3 评论 -
java 注释和泛型
比较好的Java注释文章:Java 注解完全解析.比较好的Java范型文章:Java泛型详解:和Class的使用。泛型类,泛型方法的详细使用实例.原创 2021-04-25 15:33:34 · 156 阅读 · 0 评论 -
六大设计原则
目录一、单一职责原则1. 定义2. 特点3. 反面实例4. 重点5. 适用范围6、重点二、里氏替换原则1、定义2、需求3、优缺点4. 重点三、依赖倒置原则1、定义2、问题由来3、依赖倒置好处4、依赖倒置注入实现5、依赖倒置本质6、注意点7、使用场景四、接口隔离原则1、定义2、单一职责与接口隔离区别3、特点4、原子接口划分原则五、迪米特法则1、定义2、生活示例看代码3、优缺点六、开闭原则1、定义2、优点总结:一、单一职责原则1. 定义 单一职责原则(SRP:Single responsibility原创 2021-04-22 16:44:59 · 367 阅读 · 0 评论 -
迭代器模式
定义: 提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示。优缺点优点 简化了遍历方式,对于对象集合的遍历,还是比较麻烦的,对于数组或者有序列表,我们尚可以通过游标来取得,但用户需要在对集合了解很清楚的前提下,自行遍历对象,但是对于hash表来说,用户遍历起来就比较麻烦了。而引入了迭代器方法后,用户用起来就简单的多了。 可以提供多种遍历方式,比如说对有序列表,我们可以根据需要提供正序遍历,倒序遍历两种迭代器,用户用起来只需要得到我们实现好的迭代器,就可以方便的对集合进原创 2021-04-21 17:15:44 · 66 阅读 · 0 评论 -
策略模式
策略模式定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式让算法独立于使它的客户独立而变化。角色环境(Context)角色:持有一个Strategy的引用抽象策略(Strategy)角色 :这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。需求 假设现在要一个上商店个搞活动。 对所有的高级会员打20%的促销折扣;对中级会员打10原创 2021-04-20 17:25:45 · 74 阅读 · 0 评论 -
状态模式
定义 当一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。又称状态对象模式,状态模式是对象的行为模式。角色环境(Context)角色上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个定义了对象的当前状态抽象状态(State)角色定义一个接口,用以封装环境(Context)对象的一个特定的状态所对应的行为。具体状态(ConcreteState)角色每一个具体状态类都实现了环境(Context)的一个状态所对应的行为。使用场景原创 2021-04-19 13:54:02 · 70 阅读 · 0 评论 -
观察者模式
定义: 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。角色抽象主题(Subject)角色抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如ArrayList对象)里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,抽象主题角色又叫做抽象被观察者(Observable)角色。具体主题(ConcreteSubject)角色将有关状态存入具体观原创 2021-04-14 15:03:38 · 69 阅读 · 0 评论 -
模板模式
定义: 定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类不改变算法的结构即可重复定义算法的某些特点步骤。角色:AbstractClass抽象类,定义算法结构,还可以提供通用实现。ConcreteClass具体实现类,选择性的重定义算法中某些特定步骤。解决的问题:一些方法通用,却在每一个子类都重新写了这一方法。优缺点:优点:封装不变部分,扩展可变部分。提取公共代码,便于维护。行为由父类控制,子类实现。缺点: 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得原创 2021-04-14 14:05:57 · 74 阅读 · 0 评论 -
解释器模式
介绍: 解释器是一种用的比较少的行为模式,其提供了一种解释语言的语法,或者表达式的方式。该模式定义了一个表达式的接口。运用:手机号码的验证移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188联通:130、131、132、152、155、156、185、186电信:133、153、180、189、(1349卫通)正则表达式"((13[0-9])|(15[4,\D])|(18[0,5-9]))\d{8}$"x原创 2021-04-14 10:58:12 · 71 阅读 · 0 评论 -
命令模式
定义: 将请求封装成一个对象,从而让用户使用不同的请求把客户端参数化。请求排队或者记录请求日志,以及支持可撤销的操作。模式的使用场景系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互。系统需要在不同的时间指定请求、将请求排队和执行请求。系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作。系统需要将一组操作组合在一起。角色:Command命令角色 : 定义命令的接口,声明具体命令类需要执行的方法。这是一个抽象角色。ConcreteCommand具体命令角色: 命原创 2021-04-13 10:59:38 · 81 阅读 · 0 评论 -
责任链模式
AbstractRequest.javapublic abstract class AbstractRequest { private Object object; public AbstractRequest(Object object) { this.object = object; } /** * 获取请求级别 */ public abstract int getRequestLevel();}Request1.javapublic class原创 2021-04-10 22:24:21 · 87 阅读 · 0 评论 -
建造者模式
需求:用户需要建房子流程:用户(建房子)—> 设计者(设计)—> 工人(建造房子)原始代码:Room.javapackage com.test.lib;/** * 建造的房子 */public class Room { private String window; private String floor; public String getWindow() { return window; } public voi原创 2021-04-09 16:10:47 · 93 阅读 · 0 评论 -
AOP面向切面设计编程
下载aspectj 地址 http://www.eclipse.org/aspectj/downloads.php下载aspectj的adt地址http://www.eclipse.org/ajdt/downloads/#43zipsbuild.gradle aspectJ 写法 http://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android/demo实例代码:app目录下build.gradle文件配原创 2021-04-08 16:30:21 · 99 阅读 · 0 评论 -
简单工厂模式
场景: 创建对象简单工厂: 提供创建对象的功能,不需要关心具体的实现好处: 降低客户端与模块之间的耦合度(最少知识原则)用例:需求:导出数据文件:数据库文件、文本文件工厂方法:把对象的实现延迟到子类完成ExportFileApi.javapackage simpleFactory;public interface ExportFileApi { public void export();}ExportDBFile.javapackage simpleFactory;pub原创 2021-03-29 21:17:18 · 677 阅读 · 0 评论 -
深入理解虚拟机栈
学习视频一、JAVA虚拟机栈1)虚拟机栈是当前执行线程独占空间,以栈的数据结构形式存在。2)虚拟机栈是线程执行的区域,它保存着一个线程中方法的调用状态。3)每一个被线程执行的方法,为该栈中的栈帧,即每个方法对应一个栈帧。 如果是递归调用,比如上面例子中a()方法中调用a()方法,无限制递归栈帧会无限制的存放Frame-a,直到内存满,出现StackOverflowError错误。如下实例:方法的返回地址:一个方法被调用时一定会有一个出口,这个出口就是一个返回地址,一个方法被调用的过程原创 2021-03-10 13:52:43 · 2533 阅读 · 1 评论 -
synchronized和volatile的区别,以及synchronized修饰
参考文献:Java并发——线程同步Volatile与Synchronized详解)..Java中synchronized和volatile的区别volatile和synchronized的区别1.Java内存模型(JMM) 提到这两个有关于线程的关键字,那么我们不得不提到Java的内存模型了(JMM),下面我们先看一下Java内存模型在处理多线程方面的工作原理图。 Java内存模型(java Memory Model) 描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中原创 2021-03-09 10:58:50 · 750 阅读 · 1 评论 -
剖析HashMap结构
参考视频:剖析HashMap源码1、 图解数据结构【有图有真相】HaspMap数据结构是:数组 + 链表原创 2020-06-27 22:11:05 · 146 阅读 · 0 评论 -
进程和线程的一些区别
参考:进程和线程的区别(超详细).进程和线程的一些区别进程和线程进程线程进程与线程的区别总结从 JVM 角度说进程和线程之间的关系(重要)图解进程和线程的关系程序计数器为什么是私有的?一句话简单了解堆和方法区多进程和多线程区别Java中的多线程进程和线程进程一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。线程进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,原创 2020-05-21 13:48:01 · 328 阅读 · 0 评论 -
Android中的http和https通信
一、什么是Http协议?超文本传送协议(Http–Hypertext transfer protocal)定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器,从层次的角度看,Http是面向(Transation-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。Http协议是一个无状态的协议,同一个客服端的这次请求和上次请求是没有对应关系。Http协议永远都是客服端发起请求,服务器回送响应。原创 2020-05-18 20:32:12 · 1532 阅读 · 0 评论 -
HashMap底层实现原理和一些相关的知识点及面试问题
HashMap的底层实现原理线性链表->数组+链表 --------HashMap是数组结构、链表结构与Hash算法的结合。HashMap基于hashing原理,通过put()和get()方法储存和获取对象。当将键值对传递给put()方法时,它调用键对象的hashCode() 方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的 equals() 方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下转载 2020-05-14 22:59:26 · 261 阅读 · 1 评论 -
Java修饰符的知识
Java修饰符像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:访问修饰符 :public , protected, default, private非访问修饰符 : final, abstract, static, synchronized一、访问修饰符public : 对所有类可见。使用对象:类、接口、成员变量、成员方法protected : 对同...转载 2020-04-19 22:28:32 · 123 阅读 · 0 评论 -
List 、Set、 Map有什么区别和联系
**List 、Set、 Map有什么区别和联系 首先list与set都继承于Collection,list序列的形式存储元素。所以取出来的顺序可能和放入顺序不同。set的特点是无法存放重复的元素。map是一个映射,不能包含重复的键;每个键最多只能映射一个值。以键值对存放数据,以上三个都是接口且不能被实例化。List:1.可以允许重复的对象。2.可以插入多个null元素。3.是一...转载 2020-04-08 15:51:40 · 1782 阅读 · 0 评论