![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
小白之路
「已注销」
这个作者很懒,什么都没留下…
展开
-
一、数据结构和算法概述
一、数据结构和算法概述什么是数据结构?数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。说人话就是:数据结构就是把数据元素按照一定的关系组织起来的集合,用来组织和存储数据。1 数据结构分类数据结构分为:逻辑结构和物理结构1.1 逻辑结构分类:1.1.1 集合结构集合结构中的数据元素除了属于同一个结合外,他们之间没有任何其他的关系。1.1.2线性结构线性结构中的数据元素之间存在一对一的关系1.1.3树形结构树形结构中的数据元素之间存在原创 2020-09-13 18:34:57 · 239 阅读 · 0 评论 -
AOP切面编程思想
AOP切面编程思想,Aspect Oriented Programming(AOP);其实就是python的装饰器,将业务控制代码和业务实现代码实现有效分离,减少业务控制代码的冗余.实现切面类HandleInterceptor接口。切面类的生命周期:preHandle前置通知方法前置通知可以实现反爬虫机制,访问者设备信息记录,权限控制postHandle后置通知方法后置通知方法,主要是是实现页面渲染afterCompletion最终通知方法主要是实现性能测试...原创 2020-07-20 11:14:22 · 179 阅读 · 0 评论 -
SPI热加载机制
SPI面向接口的策略文件编程,更加灵活的使用了多态SPI机制是Dubbo是阿里巴巴的分布式框架的底层实现,动态切换服务的一种策略Java探针技术这个目录是规定的,不可更改。com.sun.Dao.Dao是需要实现的接口的路径命名的,里面写实现接口的类的路径。在策略文件中更改了实现接口的类,可以动态切换,不用停止重新运行程序。...原创 2020-07-18 12:42:30 · 694 阅读 · 1 评论 -
Session与Cookie的使用
当客户端首次请求session对象时候,服务器会为其创建一个session,并计算出具有唯一性的sessionId,用来标识该session对象,并将被其包含在本次请求响应中返回给客户端,客户端一般采用cookie对其进行保存。在session有效期,当浏览器下次请求时,浏览器会自动将sessionId添加到请求头中,服务器可在接收到的请求中得到sessionId查询服务端的session,用于判断用户状态与身份等。有时,cookie会在客户端被禁用,此时解决方法一般是采用URL重写(作为查询参数或是UR原创 2020-07-18 11:31:50 · 121 阅读 · 0 评论 -
J2EE三大组件——Filter过滤器
Filter过滤器的生命周期为:init——>doFilter——>destory;这三个也是实现Filter需要重写的方法;Filter过滤器 接受用户的请求,过滤并设置用户的请求 implements Filter /*过滤所有 包括视图jsp、html、css、js,动作admin、update、queryFilter程序同servlet一样,需要在web.xml文件中进行注册和设置拦截目标。拦截目标可以使web服务器管理的所有web资源:Jsp,Servlet,静态图片或静态htm原创 2020-07-17 10:51:03 · 293 阅读 · 0 评论 -
J2EE三大组件——Servlet拦截器
简单介绍下Servlet的由来:eclipse的servlet依赖 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope></depende原创 2020-07-16 16:19:45 · 345 阅读 · 0 评论 -
Java的注解
注解也叫作注释 为什么出现注释呢?xml配置随着项目的越来越大,开发配置比较麻烦,容易出错,造成项目后面也不太好维护。随着敏捷开发的要求,开发的周期和上手要快,java换了一个配置方式,注解。【JDK1.5】注解也是引用类型,是Java的注释,是代替xml这种配置的一种快速开发的要求。自定义注解1、构建自定义注解的目标就是作用的范围、类、属性、方法2、构建的自定义注解的生命周期 运行程序(runtime)@Target(ElementType.值)取什么样的值就应该放在什么上,类似于如果取TY原创 2020-07-15 11:51:38 · 92 阅读 · 0 评论 -
Java的反射思想
Java反射编程思想解析反射体现在:在类运行期间,通过对Class对象的,可以获取到这个类的属性,方法,构造函数,并执行获取属性,执行构造函数,执行方法。反射的一些API,完全区别于面向对象。框架Spring,struts,mybatis基于反射+xml+注解整合在一起底层的框架都是基于反射构建的反射,就是在运行期间,将编译成.class的字节码文件加入到内存,获取Class对象加载字节码文件到内存获取Class对象获取Class对象的方式一共有三种1、类名.class2、对象名.get原创 2020-07-15 10:07:28 · 246 阅读 · 1 评论 -
Java的克隆技术
克隆技术 复制一个对象克隆必须实现Cloneable接口 重写Clone方法,方法数据类型为public浅克隆是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。深克隆不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象...原创 2020-07-14 16:21:29 · 122 阅读 · 0 评论 -
不能被继承的String类(final)、方法
String类是字符串类,是引用类型,这个类不能被继承finalString类直接定义和new定义的比较因为s1是直接定义的,所以分配在字符串池上的,s2是new的所以存放在堆内存上。==是比较地址的,因为存放的地址不同,所以s1和s2的地址肯定不相同。equals比较的是值,而s1和s2的值都是123,所以输出为true。String类常用的方法1、长度 length() 2、去除空格trim 去空格只能取出字符串的前后空格,并不是把所有的空格都去掉3、截取indexOf()原创 2020-07-14 14:21:47 · 642 阅读 · 0 评论 -
Java解析文件
Java框架底层技术,属性文件(*.proerties),xml文件(标记语言),注解(替代xml的配置)spring————>application.properties配置端口配置数据库连接配置memcached和redis配置消息队列属性文件是个键值对轻量级的配置struts框架 spring框架Java+xml springboot是Spring框架的补充或者有优化属性文件和注解 轻量级额配置 替换xml文件信息都是写在Java代码,拆分到属性文件Java是个编译型语言,改原创 2020-07-12 22:13:42 · 420 阅读 · 0 评论 -
Socket套接字
什么是套接字?套接字叫做SocketSocket是Java的一整套的调用API,通过Socket可以进行跨进程级的通信和数据交换,可以进行分布式的开发。Socket是对TCP/IP协议和UDP的一个封装TCP/IP协议是在传输层,安全协议,点对点协议【客户机————————服务器】一问一答、不能穿越防火墙。TCP/IP连接经过三次握手四次挥手UDP协议:不安全协议。客户机负责发,不负责不负责应答。每天都在使用UDP协议,打电话,接短信HTTP协议:超文本传输协议、能穿越防火墙,是互联网的基础、h原创 2020-07-09 16:37:54 · 149 阅读 · 0 评论 -
Java 8 新特性Lamdba表达式
中国的Java企业级环境,JDK1.8版本居多JDK1.8整个版本比1.7多了什么呢?主要是多了两个:1、Lambda表达式 Vertx全异步框架 springboot2.5全异步Lambda表达式是一个匿名函数,没有名字的函数,作用是简化了代码的实现过程,说白了就是简约。Lambda表达式的形式 语法: ()->{表达式} ()代表参数 ->指向 {代码的实现}2、Stream数据流式处理 Lambda表达式 语法Lambda表达式 的推导过程 更好的去理解Lambda表达式,说原创 2020-07-09 15:55:19 · 101 阅读 · 0 评论 -
Java 8 新特性 Stream
Java8 Stream流 对数据流式处理,提高了编程数据对数据分析清洗和筛选匹配取代了SQL语句,在大数据的环境下,依赖SQL性能比较低了,Stream对数据的流式处理Stream对数据的流式处理 1、数组 2、集合Java 8 StreamforEach:终止操作filter 筛选操作【条件】limit(5) 取5条skip()跳过System.out::println输出语句,通常与forEach连用public class Test { private static Ar原创 2020-07-09 14:39:38 · 96 阅读 · 0 评论 -
IO流——创建文件和文件夹的三种方式
Java创建目录一共有三种表现形式Java的File类表示的文件和目录(文件夹),对windows和Linux系统中文件和目录的操作这个操作分为:1、创建 2、遍历 3、删除 4、更新IO流 读取文件和网络传输数据 阻塞式IO流/*第一种*/ String s1="d:/yang.txt"; /*字符串的文件路径构建File对象*/ File f=new File(s1); try { f.createNewFile();//创建一个新的对象 } catch (IO原创 2020-07-08 17:23:33 · 2754 阅读 · 0 评论 -
Java集合——集合常用的方法以及String类型的使用
add()向集合添加元素size()集合的大小get(index)获取集合中的值【index是指集合的下标】indexOf(value)获取元素的下标contains()集合的包含是全包含isEmpty()判断集合是否为空equals()比较的是值==比较的是地址remove(index)删除对应下标的元素remove(value)删除对应值的元素equals方法和==的区别...原创 2020-07-08 16:46:55 · 310 阅读 · 0 评论 -
List接口——ArrayList
List接口ArrayList集合ArrayList可以由他的父接口们来进行实现Collection c=new ArrayList();List list=new ArrayList();ArrayList alist=new ArrayList();size方法获取ArrayList的长度,get方法获取具体的元素值add添加元素JavaBean、ArrayLis和泛型的结合使用public class Classes{ public int getCid(){ retu.原创 2020-07-08 10:54:53 · 115 阅读 · 0 评论 -
数据容器——初识集合——JavaBean
数组作为Java的一个数据容器 特点:定长,数据类型一致JavaBean就是数据可重用的模型、没有定长、存放一个对象的不同的属性【可重复使用】set方法就是设置值、get方法就是获取值Java集合是一个数据容器,值和键值对的数据容器那JavaBean具体是什么呢?简单来说JavaBean如下public class Classes { //班级编号 private int cid; //班级名称 private String cname; //班级的电话 priv.原创 2020-07-08 10:30:53 · 197 阅读 · 0 评论 -
多线程——共享锁与独占锁
读写锁ReadWriterLock可以“分离”出两个“子锁”读写分离 读 写1、读————共享锁 多个线程可以一起读取,不会改变数据2、写————排他锁 多个线程可以一起写 写会改变原创 2020-07-08 09:48:41 · 377 阅读 · 0 评论 -
多线程——公平与非公平锁
ReentrantLock 不会造成死锁,轻量级,性能优于synchronizedReentrantLock()非公平锁 例:两个子线程,一个子线程运行完毕,另外一个子线程再接着运行ReentrantLock(true)公平锁 例:两个子线程,一个子线程运行一次,另一个子线程运行一次,循环如此。...原创 2020-07-08 09:45:27 · 103 阅读 · 0 评论 -
多线程——CyclicBarrier循环栅栏、CountDownLatch闭锁
循环回环栅栏、门、所有的线程到达这个门就开了,一批线程等另外一个线程到达门,然后继续运行TeacherRunn线程等4个线程执行完毕后继续执行TeacherRunn线程等四个线程执行完毕后继续执行一批线程相互间等待,到达阈值,然后继续运行老师等待4个学生都到齐了,再开始上课。闭锁闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止状态。闭锁的作用相当于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭的,并且没有任何线程能够通过,当到达结束状态时,这扇门会打来并允许所有的线程通过。当闭锁到达原创 2020-07-07 15:48:00 · 174 阅读 · 0 评论 -
多线程——wait、notify
wait() 和notify()1、必须同时出现2、必须在同步环境下3、子线程和子线程通信public class PrintChar { private boolean flag; public void printA() { synchronized (this) { while(true) { if(flag) { try { this.wait();//如果flag是false则当前线程被阻塞 } catch (Interru原创 2020-07-07 10:56:50 · 112 阅读 · 1 评论 -
多线程——synchronized
多线程——CJava锁:作用就是解决多线程情况下多线程竞争数据造成的数据不安全synchronized 修饰方法 synchronized{} 同步块 暗锁synchronized安全的机制是:以性能换安全暗锁,自动释放锁,执行同步结束,自动释放锁定资源,让其他线程可以执行。使用synchronized的前提是:多个线程持有同一个对象的锁Java线程最不爽的地方,线程的启动是不受程序员代码控制,是由JVM控制的,即使设置线程优先级,也不能狗保证线程的启动synchronize原创 2020-07-07 10:44:57 · 115 阅读 · 0 评论 -
多线程——volatile线程可见性
volatile线程可见性CPU缓存中的volatile字段被一个线程修改后,其他CPU缓存中的线程在读 本地CPU缓存的volatile字段时,就必须读取更新过的字段。 volatile保证多线程情况下修饰的这个变量的可见性,一个线程去改变了这个变量的值,能够立即刷新,保证另一个线程读取最新的值局限,也就是先限制,volatile这个关键字修饰的变量保证其变量的可见性,这个变量不能做非原子操作,做了就不能保证其安全。当我们引用volatile来修饰flag时,可以允许根原创 2020-07-07 10:29:43 · 182 阅读 · 0 评论