
Java
文章平均质量分 74
龙舌兰小伙
这个作者很懒,什么都没留下…
展开
-
设计原则——SOLID
设计原则SOLID原创 2022-12-03 13:14:52 · 4906 阅读 · 0 评论 -
3种工厂模式
简单工厂讲的是,通过构建一个生成指定类实例的工厂,来获取该类的实例。工厂方法模式构建一个生成实例的工厂,父类工厂决定实例的生成方式,但不决定所要生成的具体的类,具体的处理全部交给子类工厂。目的是将生成实例的框架(framework)和实际负责生成实例的类解耦。简单工厂是工厂方法在生成的类只有一个时的特例。抽象工厂模式中,不仅有“抽象工厂”,还有“抽象零件”和“抽象产品”,或者可以理解为“抽象产品”和“抽象产品族”。简单工厂通过一个具体的工厂获取一个具体的实例,目的是让获取实例的附属操作与实例的调用解耦;..原创 2022-08-01 01:48:45 · 252 阅读 · 0 评论 -
设计模式3-工厂方法 Factory Method
在“如何生成实例”这一方面,FactoryMethod模式提供了生成实例的“框架”和“具体加工”,用工厂去生产产品。如果想用相同的框架得到其他的产品和工厂,那么只需要添加“具体加工”,而无需对“框架”做任何改动,从而降低了代码耦合。httpshttpshttpshttpshttpshttpshttps。...原创 2022-07-18 00:43:42 · 265 阅读 · 0 评论 -
设计模式2-策略模式 Design Paterns 2 - Strategy
Strategy的意思是“策略”,在编程中,可以理解为“算法"。策略模式的目的是能够整体地替换算法,从而能让我们轻松地用不同算法解决同一类问题的不同场景。单纯用算法实现排序,只能对数字排序,只能从小到大排。 如果现在要对猫排序,那只能把sort()改成针对猫的算法。能不能只写一个sort(),同时支持对多个类排序?现在规定,任何类都可以通过sort()进行排序,前提是必须实现一个Comparable接口,并实现compareTo()方法。不管什么类,只要实现了Comparable接口,都能用这个sort()原创 2022-07-12 23:53:08 · 127 阅读 · 0 评论 -
msbSpringMVC-2
返回json给前端导包:controller方法直接返回对象或对象列表,要加@ResponseBody,表示以响应体的形式发送:controller获取请求体数据在参数前标识@RequestBody,表示把请求体以字符串的形式封装到参数中:post类型的表单:运行结果:注意:如果表单中有上传文件,那么文件名也会包含在这个字符串中;如果前端在请求体发送了json,controller方法参数用@RequestBody User user也可以吧json直接封原创 2021-08-13 14:58:32 · 129 阅读 · 0 评论 -
msbSpringMVC-1
SpringMVC介绍原始mvc处理过程Model指和数据和行为,包括dao层和service层。View是页面。Controller是控制器负责与前端交互,controller层。最经典的mvc就是javabean+jsp+servlet,这种模式是tomcat容器里有许多个servlet,还有一个wen.xml,当前端有请求过来,就会根据web.xml中的映射,找到请求路径对应的servlet,servlet执行完自己的逻辑把结果响应给前端。SpringMVC处理过程spri原创 2021-08-11 16:36:36 · 177 阅读 · 0 评论 -
Cookie、Session、JSP
会话技术一次会话包括多次请求响应,就像一通电话包括多次交流。CookieCookie有一个name,一个value,还有一些可选的属性。Cookie是一个Java类。Cookie的添加和获取:Cookie使用:Cookie注意事项:访问路径限制:/aaa/Servlet01设置了Cookie,/aaa/Servlet02可以获取到,/aaa/bbb/Servlet03可以获取到,而/bbb/Servlet04获取不到。Session..原创 2021-07-13 13:24:00 · 163 阅读 · 0 评论 -
Spring整合MyBatis、全注解开发
小插曲:连接数据库报错Can’t connect to local MySQL server through socket /tmp/mysql.sock,看了很多解决方法都跟自身情况不符,结果点了一下 系统偏好设置——下面MySQL服务——Initialize DataBase——Use Legacy Password——设置新密码——OK,就好了。。准备项目目录:dao层接口4个抽象方法:service层接口抽象方法同dao层。service层实现类,声明dao对象,定义原创 2021-07-10 11:52:30 · 1154 阅读 · 1 评论 -
Spring
框架作用:效率,重用性,规范,可维护性,解藕底层Spring分层:可以使用spring全部功能也可以使用一部分功能;full-stack:一站式解决方案,用spring全部功能的话会让开发效率更高;轻量级:内存消耗低,线程级非进程级;开源。架构体系:底层是核心容器,在核心容器上面提供了AOP等中间层技术,再往上就可以集成别人的一些技术,如dao层集成jdbc、mybatis等。Spring由工厂模式衍化而来耦合是不同模块之间掺和在一起,内聚就是一个模块中的原创 2021-07-08 08:36:00 · 229 阅读 · 0 评论 -
Maven
maven的作用管理jar包原创 2021-07-06 11:33:51 · 145 阅读 · 0 评论 -
请求响应
Request对象获取各种路径getQueryString()获取的是url位于?后面的全部内容。uri是url中位于端口号后面的一串。Request对象获取请求头数据Request获取请求参数请求参数封装对象——手动封装请求参数封装对象——反射封装IO流获取请求参数(必须post)因为这两个流对象不是自己new的,是从Request对象获取的,因此不需要手动释放。中文乱码问题请求转发请求域请求转发一原创 2021-05-31 15:24:36 · 85 阅读 · 0 评论 -
JavaEE、Servlet
JavaEE介绍web概述资源分类系统结构CS结构:Client-Server,客户端-服务端,需要用户安装客户端,资源、网络占用小,但是维护成本大。BS结构:Browser-Server,浏览器-服务端,不需要安装客户端,只需要浏览器,维护成本小。JavaWeb服务器介绍重量级服务器:实现了全部的JavaEE规范;轻量级服务器:实现了一部分JavaEE规范,安装使用比较简单。Tomcat基本使用...原创 2021-07-05 07:49:08 · 252 阅读 · 0 评论 -
MyBatis
框架ORM对象关系映射原始JDBC的缺陷:MyBatis介绍:小结:MyBatis封装了JDBC,是Java用来操作数据库的框架,只需要关注SQL语句本身,且能自动实现Java类和数据库的映射。...原创 2021-04-15 13:44:51 · 158 阅读 · 0 评论 -
JDBC
Java官方给出的JDBC规范只是些接口,具体的实现类由不同的数据库厂商实现。原创 2021-04-13 00:22:52 · 143 阅读 · 0 评论 -
Java多线程
Java多线程的3种实现方式1.继承Thread类2.实现Runnable接口,创建Thread对象3.实现Callable接口,创建FutureTask对象,创建Thread对象Callable的call()和run()一样被JVM调用,且call()有返回值,返回值是什么类型,Callable泛型就是什么类型。...原创 2021-04-11 15:43:59 · 185 阅读 · 0 评论 -
Java开发遇到的问题
Scanner报错NoSuchElementExceptionmain方法里一开始new了一个Scanner,最后退出的时候close(),而main方法中调用了其他方法,其他方法里也new了一个Scanner,方法结束的时候close(),这样该方法再main里被调用时,该方法内的close()会把main方法中的Scanner给close掉导致main中的Scanner不存在。PreparedStatement使用模糊查询 LIKE '% %';String sql = "SELEC..原创 2021-04-11 10:37:17 · 112 阅读 · 0 评论 -
Java类加载器、反射机制
类加载的过程.java文件编译后产生.class字节码文件,放在磁盘。加载根据包名+类名在磁盘种找到这个字节码文件;创建输入流;把字节码文件读取到内存;读到内存后不能随便放,在内存中创建一个java.lang.Class对象保存该类的信息。假设类中有String型成员,这时候不知道String类加载了没、如果加载了放在哪,因此这里的String用符号代替验证检查文件信息是否符合当前虚拟机规范、会不会危害虚拟机自身安全;准备为静态变量分配内存,并初始化一...原创 2021-04-07 20:07:05 · 134 阅读 · 0 评论 -
Java IO流
目录和文件都可以抽象成File类。获取File信息:创建目录:删除目录:获取目录中的所有子目录和文件:获取父级目录:序列化:将一个类的实例转成流的过程;反序列化:将一个流转成类的实例的过程。序列化ID:在序列化和反序列化的过程中作为Key来使用。可以默认指定,也可以根据代码自动计算生成,建议默认指定,因为代码改变后生成的ID也会改变。transient修饰符修饰的属性,不能被序列化。File构造方法:目录/文件路径名;...原创 2021-04-06 20:05:50 · 80 阅读 · 1 评论 -
Java StringBuilder、集合
StringBuilder:长度可变的字符串,可以方便地进行字符串拼接、反转。调用方法后返回对象本身:链式编程StringBuilder和String互相转换:集合泛型只能是引用数据类型。返回被替代的元素。...原创 2021-03-27 23:45:02 · 435 阅读 · 0 评论 -
Java基础、字符串、instanceof
一般情况下final和static结合使用,二者不分先后顺序类型提升:byte,short型变量在运算过程中会自动提升为int型。byte b1 = 15;short s1 = 20;b1+s1的返回值的类型是int因为大的数据类型有大的内存空间,小的数据类型有小的内存空间,把大类型赋值给小类型可能会造成数据丢失。从字符串中删除字母:转成char[ ],判断每一个char,如果不是数组就拼接到新字符串...原创 2021-03-27 22:14:41 · 242 阅读 · 0 评论 -
SSM框架
SSM框架:SpringMVC,Spring,MybatisSpringIOC,DI框架:IOC控制反转,DI依赖注入。Spring容器:1、生成Bean的实例(默认情况是单例)。2、完成依赖注入面向切片编程:面向对象是静态抽象,面向切面是动态抽象。把方法运行中相同的部分抽出来。SpringMVCMVC框架,完成前后台的交互。MyBatisorm框架,不是纯粹的ORM框架,纯粹的是Hibernate,但是H运行效率有一点差。对象关系映射,以面向对象的方式完成对数据原创 2021-03-27 22:14:18 · 152 阅读 · 0 评论 -
Java常用API
面试题:都是false。第一个,虽然String的equals比较的是字符串的内容,但是会先判断参数是不是String对象,不是的话直接返回false。第二个,StringBuilder没有重写equals方法,用的还是Object的,比较的是地址值。Objects常用方法:返回对象的toString(),如果对象为null,返回第二个参数。...原创 2021-03-27 22:13:21 · 90 阅读 · 0 评论 -
Java异常
异常处理方式——throw:throw异常对象,把异常抛给调用者处理。调用者方法名( ) throws 异常类名 { 方法体 },声明异常,表示方法体内部可能会有人抛出异常。Exception编译时异常,RunTimeException运行时异常为什么要抛异常,而不用if 判断错误后在控制台输出:调用者调用一个方法,方法执行过程中出现错误,就打印在控制台,这样调用者完全不知道发生了什么事,调用者不知道出现了错误。而抛出异常的话调用者就知道该方法运行出现错误。处理...原创 2021-03-27 14:41:17 · 98 阅读 · 0 评论 -
Java数组、方法重载、进制、强转损失精度、自动类型提升
数组的两种定义方式:int[ ] arr = new int[10]; //定义了一个int型数组,叫arrint arr[ ] = new int[10]; //定义了一个int型变量,叫arr,是一个数组数组的动态初始化:int[ ] arr = new int[10];arr[0] = 1;数组的静态初始化:int[ ] arr = {1,2,3};打印数组变量:@:分隔符[:当前空间是一个数组类型I:当前数组存储的数据类型int...原创 2021-03-26 22:20:01 · 185 阅读 · 1 评论 -
Java面向对象、抽象类、接口、多态、匿名内部类、Lambda表达式
类:类是对现实生活中一类具有共同属性和行为的事物的抽象。类是对象的数据类型。属性:对象有什么特征方法:对象能干什么垃圾回收:在堆内存中的对象或数组,其地址通过任何方式都不能被找到,就会被判定为内存中的垃圾。Java的垃圾回收器在空闲的时候会自动清理内存中的垃圾。成员变量:类中的位置:类中方法外内存中的位置:堆内存(对象在堆中)生命周期:随着对象的产生而产生,随着对象的消失而消失初始值:有默认初始值局部变量:类中的位置:方法内,内存中的位..原创 2021-03-25 23:58:03 · 221 阅读 · 0 评论 -
Java next()、nextInt()和nextLine()的问题
nextLine()错过一次输入:nextInt():从缓冲区取第一个数字,不读空格、制表符、回车换行,回车换行会使方法返回。next():从缓冲区读第一个字符串,不读空格、制表符、回车换行,回车换行会使方法返回。前面两个都会把空格、制表符、回车换行留在缓冲区内,如果接下来有nextLine()就会被nextLine()读走。nextLine():从缓冲区读取一个字符串,空格、制表符、回车换行都会读走,读到回车换行时方法返回。把其中一个nextLine()换成next()..原创 2021-03-18 13:25:05 · 378 阅读 · 0 评论