![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java
文章平均质量分 80
记录日常学习
木木夕木目心.HDS
脚踏实地,仰望星空
做一只快乐的笨鸟
展开
-
SpringMVC拦截器
1.拦截器(interceptor) 的作用SpringMVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。将拦截器按一定的顺序联结成一条链, 这条链称为拦截器链(Interceptor Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现。2.拦截器和过滤器区别区别 过滤器 拦截器 适用范围 是servlet规范中的一部分,任何java web工程都可以使用原创 2021-01-26 22:10:33 · 85 阅读 · 0 评论 -
java-SpringMVC请求数据与数据响应基础
SpringMVC概述SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow中。SpringMVC已经成为目前最主流的MVC框架之一, 并且随着Spring3.0的发布,全面超越Struts2,成为最优秀的MVC框架。它通过一套注解, 让一个简单的Java类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful编程风格的请求。SpringMVC开发步骤开发原创 2021-01-11 21:43:07 · 240 阅读 · 1 评论 -
springMVC-ApplicationContext应用上下文获取
应用_上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件)方式获取的,但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件),这样的弊端是配置文件加载多次,应用上下文对象创建多次。在Web项目中,可以使用ServletContextListener监听Web应用的启动, 我们可以在Web应用启动时,就加载Spring的配置文件,创建应用上下文对象ApplicationCon原创 2021-01-04 22:13:48 · 804 阅读 · 0 评论 -
java-Spring事务控制
编程式事务控制相关对象编程式事务控制三大对象●PlatformTransactionManager●TransactionDefinition●TransactionStatus基于XML的声明式事务控制什么是声明式事务控制Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是指在配置文件中声明,用在Spring配置文件中声明式的处理事务来代替代码式的处理事务。声明式事务处理的作用● 事务管理不侵入开发的组件。 具体来说,业务逻辑对象就不会意识到正在事务管理原创 2020-12-20 22:10:22 · 155 阅读 · 0 评论 -
java-aop以及spring-aop
AOP :面向切面编程在程序设计中,我们需要满足低耦合高内聚,所以编程需满足六大原则,一个法则.AOP面向切面编程正是为了满足这些原则的一种编程思想.AOP的作用及其优势作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强优势:减少重复代码,提高开发效率,并且便于维护AOP的底层实现实际上, AOP的底层是通过Spring提供的的动态代理技术实现的。在运行期间,Spring通过动态代理技术动态的生成代理对象,代理对象方法执行时进行增强功能的介入,在去调用目标对象的方原创 2020-11-28 23:08:48 · 165 阅读 · 0 评论 -
java-spring-one
什么SpringSpring是分层的Java SE/EE应用full-stack轻量级开源框架,以IoC ( Inverse Of Control:反转控制)和AOP ( Aspect Oriented Programming :面向切面编程)为内核。提供了展现层SpringMVC和持久层Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE企业应用开源框架。Spring的优势1)方便解耦原创 2020-11-22 10:25:18 · 401 阅读 · 0 评论 -
java-Servlet
server applet概念:运行在服务器端的小程序快速入门1.创建javaEE项目2.定义一个类,实现Servlet接口public class ServletDeom1 implements Servlet{ .....}3.实现接口中web.xml配置<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"原创 2020-11-12 10:23:39 · 170 阅读 · 0 评论 -
java-jackson的简单使用
语法JOSN解析器:Jsonlib、Gson、fastjson、jackson//json与java的相互转换1.json -> java对象 1).导入jackson相关jar包 2).创建jackson核心对象 ObjectMapper 3).转换方法 1.readValue //1.初始化JSON字符串 String json = "{\"name\":\"张三\",\"age\":23}";原创 2020-11-09 10:51:01 · 238 阅读 · 0 评论 -
java-计算一个整数的二进制中1的个数
最快的算法 public static int getBit_1(int num){ int t = 0; while (num != 0){ num &= (num - 1); t++; } return t; }原创 2020-11-07 22:09:55 · 154 阅读 · 0 评论 -
java-mysql数据库
MySQL登录1.mysql -u用户名 -p密码 --链接本地2.mysql -h远程ip -u用户名 -p密码 --链接远程mysql服务器SQL基本概念什么是SQL?Structured Query Language:结构化查询语句其实就是定义了操作所有关系型数据库规则。每一种数据库操作方式存在不一样的地方,“方言”SQL分类DDL(操作数据库、表)DML(增删改表中的数据)DQL(查询表数据)DCL(授权)DDL (Data Definiti原创 2020-11-05 16:12:44 · 155 阅读 · 0 评论 -
java-反射2
反射:框架设计的灵魂框架:半成品软件。可以在框架的基础_上进行软件开发,简化编码反射:将类的各个组成部分封装为其他对象,这就是反射机制好处: 1.可以在程序运行过程中,操作这些对象。 2.可以解耦,提高程序的可扩展性。反射原理反射的基石:字节码文件对象 -> Class类对象字节码文件:java源文件进行编译(javac)之后的.class文件字节码文件对象:jvm把字节码文件加载到jvm内存中去之后,jvm 就认为这个字节码文件是一个字节码文件对象。获得..原创 2020-11-05 15:31:24 · 97 阅读 · 0 评论 -
java-函数式接口和Stream流
函数式接口函数式接口在Java中是指:有且仅有一个抽象方法的接口。函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda ,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法 , Java中的Lambda才能顺利地进行推导。格式修饰符 interface 接口名称{ public abstract 返回值类型方法名称可选参数信息); //其他非抽象方法内容}@FunctionalInterface注解原创 2020-11-04 10:18:46 · 263 阅读 · 0 评论 -
java-网络通信
C/S结构全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。B/S结构全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。网络编程三要素协议、IP地址和端口号80端口:网络端口3306端口:mysql数据库1521端口:orical8080端口:taocatTCP通讯客户端Socket类TCP通信的客户端:向服务器发送连接请求,给服务器发送数据,读取服务器回写的数据.原创 2020-11-04 10:00:23 · 265 阅读 · 0 评论 -
java-序列化和反序列化
ObjectOutputStream序列化和反序列化的时候,会抛出NotSerializableException没有序列化异常类通过实现java.io.Serializable接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。Serializable接口也叫标记型接口要进行序列化和反序列化的类必须实现Serializable接口,就会给类添加一-个标记当我们进行序列化和反序列化的时候,就会检测类上是否有这个标记有:就可以序列化和反序列化没有:就会抛出NotS..原创 2020-11-03 16:57:55 · 78 阅读 · 0 评论 -
java-缓冲流
字节缓冲输出流BufferedOutputStreamjava.io.BufferedOutputStream extends OutputStreamBufferedOutputStream :字节缓冲输出流继承自父类的共性成员方法: public void close() : 关闭此输出流并释放与此流相关联的任何系统资源。 public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。 public void write(byte[] b):将b...原创 2020-11-03 16:51:36 · 129 阅读 · 0 评论 -
java-属性集
java.util.Properties集合extends Hashtable<k, v> implements Map<k, v>Properties类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。 Properties集合是一个唯和IO流相结合的集合 可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储 可以使用Properties集合中的方法load,把硬盘中保存的文件(键值对),读...原创 2020-11-03 16:27:09 · 123 阅读 · 0 评论 -
java-IO流
IO流字节流字节输出流java.io.outputStream/*java.io.outputStream:字节输出流 此抽象类是表示输出字节流的所有类的超类。 定义了一些子类共性的成员方法: public void close() : 关闭此输出流并释放与此流相关联的任何系统资源。 public void flush() : 刷新此输出流并强制任何缓冲的输出字节被写出。 public void write(byte[] b):将b.length原创 2020-11-03 10:01:46 · 81 阅读 · 0 评论 -
java-File文件操作
File类java. io.File类文件和目录路径名的抽象表示形式。java把电脑中的文件和文件夹(目录)封装为了一个File类,我们可以使用File类对文件和文件夹进行操作我们可以使用File类的方法创建一个文件/文件夹删除文件/文件夹获取文件/文件夹判断文件/文件夹是否存在对文件夹进行遍历获取文件的大小File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法重点:记住这三个单词fIle:文件directory:文件夹/目录原创 2020-11-03 09:42:42 · 96 阅读 · 0 评论 -
java-Lambda表达式
面向对象的思想:做一件事情,找一个能解决这个事情的对象调用对象的方法,完成事情.函数式编程思想:只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程 //使用匿名内部类的方式,实现多线程new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName() + "Thread"); }原创 2020-11-03 09:16:03 · 69 阅读 · 0 评论 -
java-多线程
进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。线程:线程是进程中的一一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。简而言之: 一个程序运行后至少有一个进程,一个进程中可以包含多个线程创建线程第一种方式创建多线程程序的第一种方式:创建Thread类原创 2020-11-02 11:19:24 · 90 阅读 · 0 评论 -
java-斗地主无界面有序版
package 斗地主;import java.util.*;/** * 有序版本 * 1.准备牌 * 2.洗牌 * 3.发牌 * 4.排序 * 5.看牌 * */public class Pak2 { public static void main(String[] args) { //1.准备牌 //创建一 个Map集合, 存储牌的索引和组装好的牌 HashMap<Integer,String> poker = n.原创 2020-11-01 14:23:51 · 78 阅读 · 0 评论 -
java-斗地主无界面&无序
没有写界面,只是斗地主程序原理 //1.准备牌 //定义一个存储54张牌的ArrayList集合,泛型使用String ArrayList<String> poker = new ArrayList<>(); //定义两个数组,一个数组存储花色,一个数组存储牌的序号 String[] colors = {"♠","❤","♣","♦"}; String[] numbers = {"2","A",原创 2020-10-30 16:47:30 · 107 阅读 · 0 评论 -
java-Filter过滤器
web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。过滤器的作用: 一般用于完成通过的操作。如:登录验证、统一编码处理、 敏感字符过滤...过滤器执行流程 1.执行过滤器2.执行放行后的资源3.回来执行过滤器放行代码下边的代码过滤器生命周期方法1. init:在服务器启动后, 会创建Filter对象,然后调用init方法。只执行一次。 用于加载资源2. doFilter:每一次请求被拦截资源时,会执行。执行多次3. destroy :在...原创 2020-10-16 16:38:40 · 134 阅读 · 0 评论 -
java-javaweb会话技术之Cookie
概念:客户端会话技术,将数据保存到客户端实现原理 :基于响应头set-cookie和请求头cookie实现cookie的细节1.一次可不可以发送多个cookie?可以,可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。2.cookie在浏览器中保存多长时间?1.默认情况下,当浏览器关闭后,cookie数据被销毁2.持久化存储:setMaxAge(int seconds) 1.正数:将cookie数据写到硬盘的文件中。持久..原创 2020-09-30 21:11:20 · 140 阅读 · 0 评论 -
java-javaweb图片下载
java制作的后台,注意设置响应头的打开方式package cn.web;import cn.utils.DownLoadUtils;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.annotation.WebServlet;import javax.servlet原创 2020-09-29 16:15:40 · 290 阅读 · 0 评论 -
java-后端验证码生成图片
后台java代码package cn.web;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.Http原创 2020-09-29 16:06:16 · 153 阅读 · 0 评论 -
java-解析注解
为了方便java程序员的一些操作,把需要的数据写在注解上。先看元注解,我的理解就是注解能写在类的哪些位置/*@Target :描述注解能够作用的位置 *ElementType取值: * TYPE :可以作用于类.上 * METHOD:可以作用于方法上 * FIELD:可以作用于成员变量上@Retention :描述注解被保留的阶段@Documented :描述注解是否被抽取到api文档中@Inherited :描述注解是否被子类继承*/原创 2020-09-24 21:15:55 · 267 阅读 · 1 评论 -
java-Spring JDBC
spring框架对jdbc的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发步骤:1.导入jar包2.创建JdbcTemplate对象。依赖于数据源DataSourceJdbcTemplate template = new jdbcTemplate(ds);我先自定义了一个数据库连接池的工具类:JDBCUtilspackage datasource.utils;import com.alibaba.druid.pool.DruidDataSourceFactor原创 2020-09-11 21:59:53 · 112 阅读 · 0 评论 -
java-druid数据库连接池
步骤 1.导入jar包druid-1.0.9.jar2.定义配议文件:(1)是properties形式的 (2)可以叫任意名称,可以放在任意目录下3.获取数据库连接池对豫:通过工厂来来获取DruidDatasourceFactory4.获取连接: getConnectiondruid.properties配置文件driverClassName=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/db3?useSSL=fals原创 2020-09-11 21:48:25 · 591 阅读 · 0 评论 -
java-jdbc数据库事务
管理事务: 开启事务: setAutoCommit( boolean autoCommit) : 调用该方法设置参数为false,即开启事务 提交事务: commit() 回滚事务: rollback()Connection conn = null;PreparedStatement pstmt1 = null;PreparedStatement pstmt2 = null;Savepoint savepoint = null;try { ...原创 2020-09-11 21:36:04 · 230 阅读 · 0 评论 -
java-jdbc预编译SQL
/*步骤:1.导入驱动jar包mysql-connector-java-8.0.21.jar2.注册驱动3.获取数据库连接对象Connection4.定义sql *注意: sq1的参数使用?作为占位符。 如: select * from user where username = ? and password = ?;5.获取执行sql语句的对象Preparedstatement Connection. preparestatement(string sql)6.给?赋值: ...原创 2020-09-11 21:31:31 · 345 阅读 · 0 评论 -
java-抽取JDBC工具类
将jdbc.properties配置文件放到src文件夹下面jdbc.properties内容:url=jdbc:mysql://localhost:3306/db3?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTCuser=rootpassword=rootdriver=com.mysql.cj.jdbc.DriverJDBCUtils工具类:使用静态方法和静态定义变量加载import原创 2020-09-09 22:22:44 · 126 阅读 · 0 评论 -
java-jdbc简单应用
在数据库db3中操作account表,account表只有两个字段id和balcaneimport java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class JDBCDemo2 { /** * 1.account表 添加一条记录 * 2.account 修改一条记录 * 3.acc原创 2020-09-09 22:18:28 · 166 阅读 · 0 评论 -
C3P0线程池的创建与应用
步骤:1.导入jar包(两个) c3p0-0.9.5.2. jar mchange- commons -java-0.2.12.jar不要忘了导入数据库驱动jar包,我使用的是mysql-connector-java-8.0.21.jar2.定义配议文件: 名称:c3p0. properties 或者 c3p0-config.xml 路径:直接将文件放在src目录下3.创建核心对象数据库连接池对像 ComboPooledDataSource4.获取连接:g...原创 2020-09-09 14:34:06 · 235 阅读 · 0 评论 -
java-反射的基本使用
注意pro.properties文件在src目录下,不然加载不了package reflect.reflect;import java.io.InputStream;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.Properties;public class ReflectClass2 { public static void main(String[] args)原创 2020-08-30 21:48:44 · 152 阅读 · 0 评论 -
java:出生到现在活了多少天
//1.使用Scanner类中的next()方法,获取出生日期Scanner sc = new Scanner(System.in);System.out.print("请输入你的出生日期,格式为yyyy-MM-dd:");String birthdayDateString = sc.next();//2.使用DateFormat类中的parse方法,把字符串的出生日期解析为Date格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-d..原创 2020-08-25 11:27:56 · 207 阅读 · 0 评论 -
一些java常用类
Scanner类可以实现键盘输入数据到程序中1.导包:import 包路径.类名称2.创建:对象名 = new 类名称()3.使用:对象名.成员方法名()import java.util.Scanner;//导包Scanner sc = new Scanner(System.in);//创建int num = sc.nextInt();//获取键盘输入的int数字String str = sc.next();//获取字符串Random类import java.util.原创 2020-08-25 11:25:35 · 314 阅读 · 0 评论