- 博客(83)
- 收藏
- 关注
原创 Java动态代理
文章目录1. 反射的应用:动态代理1.1 静态代理的例子1.2 Java动态代理类1.3 JDK动态代理实现1.3 动态代理的例子1.4 AOP与动态代理1. 反射的应用:动态代理 代理设计模式的原理: 使用一个代理将对象包装起来,然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。 动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时(区别于编译期间)根据需要动态创建目标类的代理对象。 动态代理使用场合:调试;远程方
2022-04-06 15:09:37 2735 2
原创 Java反射机制
文章目录1. Java反射机制概述1.1 动态语言1.2 静态语言1.3 Java反射机制提供的功能1.4 反射相关的主要API2. 理解Class类并获取Class实例3. 类的加载与ClassLoader的理解4. 创建运行时类的对象5. 获取运行时类的完整结构6. 调用运行时类的指定结构7. 反射的应用:动态代理1. Java反射机制概述 反射是被视为动态语言的关键,反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 加载
2022-03-24 20:19:31 975 1
原创 MySQL数据库高级、数据库优化篇No.1
文章目录1. MySQL逻辑架构简介2. 存储引擎简介3. SQL性能下降原因4. SQL执行加载顺序5. 索引5.1 什么是索引5.2 索引的优势劣势5.3 索引分类5.4 何时建立索引5.4.1 哪些情况需要创建索引5.4.2 哪些情况不要创建索引6. MySQL性能分析1. MySQL逻辑架构简介 设计原理:插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。我们可以根据不同的业务需求选择合适的存储引擎。1.连接层 最上层是一些客户端和连接服务,包含本地sock通信和
2022-03-24 15:39:32 329
原创 Java网络编程
网络编程概述JavaWeb:网页编程 基于B/S架构网络编程:TCP/IP协议栈 基于C/S架构网络通信的要素网络编程中有两个主要的问题:如何准确的定位到网络上的一台或多台主机找到主机之后如何进行通信网络编程中的要素:IP和端口号 涉及到IP协议网络通信协议 涉及到tcp,udp协议IPip地址:InetAddress唯一定位一台网络上的主机端口端口表示计算机上的一个程序的进程。不同的进程有不同的端口号,用来区分不同的应用。...
2022-03-01 21:22:59 302
原创 Java IO流
文章目录File类的使用路径分隔符创建File类的实例File类的使用路径分隔符路径中的每级目录之间用一个路径分隔符隔开。路径分隔符和系统有关:windows和DOS系统默认使用 \ 来表示;UNIX和URL使用 / 来表示。Java程序支持跨平台运行,因此路径分隔符要慎用。为了解决路径问题,File类提供了一个常量:public static final String separator,可以根据操作系统动态的提供分隔符。创建File类的实例package file;impo
2022-02-27 21:31:47 349
原创 Java泛型
文章目录为什么要有泛型在集合中使用泛型自定义泛型结构泛型在继承上的体现通配符的使用泛型应用举例为什么要有泛型集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其它的部分是确定的,例如这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数就叫做泛型。在集合中使用泛型import java.util.HashMap;impo
2022-02-18 22:33:46 227
原创 Java比较器
在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。Java实现对象排序的方式有两种:自然排序:java.lang.Comparable定制排序:java.lang.Comparatorimport java.util.Arrays;/** * @author HPF *Comparable接口的使用举例: *1.像String、包装类等实现了Comparable接口,重写了compareTo(obj)方法,给出了比较两个对象大小的方式。 *2.重写compa
2022-02-16 15:32:40 159
原创 咱就是说,一篇带你搞懂进程&线程---基于Java
文章目录基本概念:程序、进程、线程单核CPU和多核CPU的理解并行与并发使用多线程的优点何时需要多线程线程的创建和使用Thread类的有关方法基本概念:程序、进程、线程程序是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。进程是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程(生命周期)。比如:运行中的QQ、运行中的MP3播放器都是一个进程;程序是静态的,进程是动态的;进程作为资源分配的基本单位,系统再运行时会为每个进
2022-02-13 21:16:16 378 1
原创 动态SQL
文章目录什么是动态SQL?什么是动态SQL? 动态SQL就是指根据不同条件生成不同的sql语句。动态SQL元素和JSTL或基于类似XML的文本处理器相似。在Mybatis之前的版本中,有很多元素需要花时间了解。Mybatis3大大简化了元素种类,现在只需学习原来一半的元素即可。Mybatis采用功能强大的基于OGNL的表达式来淘汰其它大部分元素。ifchoose(when,otherwise)trim(where,set)foreach...
2021-07-22 10:35:00 1308
原创 Mybatis--sql一对多的处理
上一篇博文我们讲的是Mybatis实现sql语句的多对一处理,学生对于老师来说,是一种多对一的关系,而老师对于学生来说呢,是一种一对多的关系,接下来我们就来看看相关操作。步骤一: 构造学生,老师实体类package com.hpf.bean;import lombok.Data;@Datapublic class Student { private int id; private String stuName; private int teaId;}########
2021-07-20 16:34:35 730
原创 Mybatis--sql多对一的处理
我们先来看看下图所示的例子,学生和老师之间就是一种多对一的关系。对于学生这边而言,多个学生关联一个老师【多对一】;对于老师这边而言,
2021-07-20 09:40:11 639 2
原创 MyBatis实现分页功能
Limit分页 使用sql语句自带的limit实现数据库查询结果的分页。接口 //Limit分页查询 List<User> getUserByLimit(Map map);mapper.xml <select id="getUserByLimit" parameterType="map" resultType="User"> select * from userinfo limit #{startIndex},#{pageSize} &
2021-07-11 11:06:37 140
原创 MyBatis看这一篇文章就够了!
mybatis使用前的配置以及简单的CRUD操作的实现可以参考我的前两篇博客:https://blog.csdn.net/pf6668/article/details/118574657https://blog.csdn.net/pf6668/article/details/118612500 接下来是Mybatis的进阶篇,还请各位小伙伴拿好笔记本做笔记呦。文章目录总配置环境配置(environments)属性(properties)类型别名(typeAliases)设置(setting
2021-07-10 21:39:54 323 1
原创 2021--码住夏天
小伙伴们求同去《码住夏天》, 一起来围观吧 !https://marketing.csdn.net/lottery/001?utm_medium=distribute.app_push.559157.nonecase?utm_source=1234810258天啦噜,让我欧一次吧…
2021-07-10 16:44:27 318
原创 MyBatis:万能Map和模糊查询在我这里是这么用的
万能Map 我们在上一节博文里面将到利用Mybatis实现CRUD操作的时候,我们在数据库表中新增一条数据是这样操作的:实体类对象的字段有:package com.hpf.bean;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;//编写实体类User@Data@AllArgsConstructor@NoArgsConstructorpublic class Us
2021-07-09 22:48:45 268 5
原创 我去!在这儿学MyBatis竟如此easy!
文章目录一、简介1.1、什么是MyBatis?1.2、持久化&持久层1.3、为什么需要Mybatis?二、第一个Mybatis程序2.1、搭建数据库2.2、新建项目2.3、创建一个模块三、CRUD一、简介1.1、什么是MyBatis?MyBatis 是一款优秀的持久层框架;它支持自定义 SQL、存储过程以及高级映射;MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作;MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJ
2021-07-08 21:54:54 158 3
原创 Spring Boot整合MyBatis-plus
步骤一:在项目的pom.xml文件当中引入MyBatis-plus依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.1</version> <.
2021-07-07 20:41:53 240 2
原创 LeetCode--204. 计数质数
统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0提示:0 <= n <= 5 * 106来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-primes题解1: 最最最基础的解法,时间复杂度贼高。。。public int cou
2021-07-07 16:25:58 167 1
原创 Spring Boot整合MyBatis
准备工作 MyBatis开源项目参考源地址https://github.com/mybatis。SpringBoot官方starter命名方式:spring-boot-starter-*第三方starter命名方式:xxx-spring-boot-starter 在使用MyBatis之前,需要在自己的项目当中引入MyBatis的相关依赖,即在项目的pom.xml配置文件中引入依赖即可。...
2021-07-05 21:26:00 197 2
原创 二叉树的操作这里都有~~~~~~
文章目录定义二叉树的结点类型二叉树的随机创建完全二叉树的创建二叉树的先、中、后序(递归)遍历二叉树的层次遍历+非递归求深度二叉树的深度二叉树的翻转/镜像定义二叉树的结点类型public class BinTree { public int root;//结点值 public BinTree left;//左孩子结点 public BinTree right;//右孩子结点 //定义有参构造方法为树结点赋值 public BinTree(int root,BinTr
2021-07-04 15:15:23 123 1
原创 LeetCode--121. 买卖股票的最佳时机
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1
2021-06-30 12:14:58 174 2
原创 LeetCode--53. 最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray题解1: 超级暴力的解法——二重循环。。。思路很简单,从数
2021-06-29 21:02:12 101 1
原创 LeetCode--476. 数字的补数
给你一个 正 整数 num ,输出它的补数。补数是对该数的二进制表示取反。示例 1:输入:num = 5输出:2解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。示例 2:输入:num = 1输出:0解释:1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。提示:给定的整数 num 保证在 32 位带符号整数的范围内。num >= 1你可以假定二进制数不包含前导零位。本题与 1009 https
2021-06-26 10:33:26 157 1
原创 LeetCode--367. 有效的完全平方数
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。进阶:不要 使用任何内置的库函数,如 sqrt 。示例 1:输入:num = 16输出:true示例 2:输入:num = 14输出:false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-perfect-square题解1: 那就根据提示用函数库喽,???? public boolean i
2021-06-25 10:39:29 158 1
原创 LeetCode--169. 多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majority-element题解: 核心思想是摩尔投票法,说简单点可以这样理解:从全局来看,多的那个数可以和其它数据进行一
2021-06-25 10:03:20 117 1
原创 LeetCode--136.只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number题解:考虑位运算:1.任何数n和0的异或都为n;n^0=n2.相同的数异或为0. n^n
2021-06-24 15:57:34 100
原创 面试官:页面开发当中把cookie禁用了,session里面的内容怎么使用(找到)???
正常使用cookie的情况 session.set(a,b)→jsessionid→cookie→每次发请求携带该值每一个用户都有一个不同的sessionid,我们称之为jsessionid,jsessionid会被保存在cookie里面,我们用户在发送请求的时候都会携带cookie。禁用cookie的情况 假设访问路径/abc,我们可以用矩阵变量的形式携带jsessionid值:/abc;jsessionid=xxx。上面的过程就是url重写的过程。把cookie的值使用矩阵变量的方式进
2021-06-23 13:48:03 357
原创 Maven打包操作
建立对应的目录结构 使用idea创建项目,我们后期的项目开发可能需要其它的目录结构,这就需要我们手动添加对应的目录。 其中红色框是我们手动添加的目录,resources文件夹下面的三类文件develop/test/product代表我们在实际的开发过程中的开发环境。添加Profile配置<profiles> <profile> <id>develop</id> <properties>
2021-06-10 18:14:30 173
原创 LeetCode每日1题--1736. 替换隐藏数字得到的最晚时间
给你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示)。有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和 23:59 。替换 time 中隐藏的数字,返回你可以得到的最晚有效时间。示例 1:输入:time = “2?:?0”输出:“23:50”解释:以数字 ‘2’ 开头的最晚一小时是 23 ,以 ‘0’ 结尾的最晚一分钟是 50 。示例 2:输入:time = “0?:3?”输出:“09:39”来源:力扣(L
2021-05-07 16:02:13 321
原创 LeetCode每日1题--680. 验证回文字符串 Ⅱ
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: “aba”输出: True示例 2:输入: “abca”输出: True解释: 你可以删除c字符。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-palindrome-iipublic boolean validPalindrome(String s) { StringBuilder str = new StringBu
2021-04-27 21:39:45 112
原创 LeetCode每日1题--925. 长按键入
你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/long-pressed-name示例 1:输入:name = “alex”, typed = “aaleex”输出:true解释:‘alex’ 中的 ‘a
2021-04-26 21:25:23 96
原创 LeetCode每日1题--859.亲密字符串
题目给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。交换字母的定义是取两个下标 i 和 j (下标从 0 开始),只要 i!=j 就交换 A[i] 和 A[j] 处的字符。例如,在 “abcd” 中交换下标 0 和下标 2 的元素可以生成 “cbad” 。示例 1:输入: A = “ab”, B = “ba”输出: true解释: 你可以交换 A[0] = ‘a’ 和 A[1] = ‘b’
2021-04-24 21:45:48 178
原创 视图解析与模板引擎thymeleaf
视图解析:SpringBoot默认不支持JSP,需要引入第三方模板引擎技术实现页面渲染。视图解析模板引擎thymeleafthymeleaf使用引入starter<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId>
2021-03-25 15:41:11 215
原创 SpringBoot之Web开发02
请求参数处理Rest风格支持(使用HTTP请求方式动词来表示对资源的操作)以前:/getUser 获取用户/deleteUser 删除用户/editUser 修改用户/saveUser 保存用户现在:/userGET-获取用户DELETE-删除用户PUT-修改用户POST-保存用户核心Filter:需要配置HiddenMethodFilter用法:表单method=post,隐藏域 _method=putSpringBoot中需要手动开启:spring: mvc:
2021-03-25 11:15:45 83
原创 SpringBoot之Web开发01
学习路线 xdm,跟我一起征服掉它。简单功能分析静态资源访问静态资源目录包含:/static;/public;/resources;/META-INF/resources。访问:当前项目根路径/+静态资源名原理:静态映射/**。请求进来,先去找Controller看能不能处理,不能处理的所有请求都交给静态资源处理器,静态资源也不能处理的话就显示404错误。静态资源访问前缀默认无前缀,建议给静态资源的访问设置一个前缀标识,因为在后期在设置拦截器的时候可以跳过拦截使用特定前缀的静态资源。
2021-03-19 16:22:27 103
原创 配置文件-yaml用法
properties yaml同以前的properties用法,可以理解为就是一种标记语言。yaml yaml非常适合用来做以数据为中心的配置文件基本语法key:value;k、v之间有空格大小写敏感使用缩进表示层级关系缩进不允许使用tab,只允许空格缩进的空格数不重要,只要相同层级的元素左对齐即可‘#’表示注释“与”表示字符串内容会被转义/不转义 接下来举例说明实际的用法是怎样的:import lombok.Data;import lombok.ToString;i
2021-03-18 15:42:02 631 1
原创 SpringBoot实战开发
开发一般流程引入场景依赖查看自动配置了哪些1.自己分析,引入场景对应的自动配置一般都生效了2.配置文件中设置debug=true开启自动配置报告。Negative(表示未生效)/Positive(生效)是否需要需改1.参照文档修改配置项 https://docs.spring.io/spring-boot/docs/2.4.3/reference/html/appendix-application-properties.html#common-application-properties-
2021-03-16 21:02:08 112
原创 SpringBoot底层注解详解
文章目录@ConditionalOnBean@ConditionalOnMissingBean@ImportResource@ConfigurationProperties@ConditionalOnBean 基于bean组件的条件判断,简单来说就是只有当前的的IOC容器当中包含@ConditionalOnBean注解所规定的bean组件的时候,其它的组件才会被注入到容器当中。@Bean("Tom")//这里可以设置自定义组件的名字 public Pet pet01(){ P
2021-03-14 16:55:16 279 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人