- 博客(152)
- 资源 (1)
- 收藏
- 关注
原创 Mybatis系列总结大纲索引
本博文对MyBatis系列文章的一个大的总结。通过总览的性质来表现出Mybatis系列文章,方便读者进行阅读
2022-03-12 16:40:43 1994 2
转载 【Dom4j】Dom4j完整教程详解
Dom4j完整教程目录1、DOM4J简介2、XML文档操作1 2.1、读取XML文档: 2.2、获取根节点 2.3、.新增一个节点以及其下的子节点与数据 2.4、写入XML文件 2. 5、遍历xml节点 2.6、创建xml文件 2.7、修改节点属性 2.8、删除节...
2018-11-22 14:48:22 91701 18
原创 SpringSecurity的认证原理及如何自定义认证结合MyBatis替换原数据源
对于在中自定义的认证规则,也就是所有的请求都必须要通过认证才可以访问。有些时候并不满足业务需求。比如有两个资源,一个是/index还有一个是/hello打算把/index作为一个公共的资源,/hello作为一个认证的资源。默认的认证规则就做不到这一点。所以,我们需要自定义,从上个小节中发现,如果需要默认的规则失效有两个条件。如果系统中存在或者是的话,默认的就会失效。这里,我们使用第一种方式,去继承类。需要和方法有区分,一般是对静态资源放行的配置。
2023-05-26 14:33:46 1630
原创 从HelloWorld深入源码了解SpringSecurity底层逻辑
为什么引⼊之后没有任何配置所有请求就要认证呢?这就不得不提SpringBoot的默认配置类, 这个类是⾃动配置类,通过这个源码得知,默认情况下对所有请求进⾏权限控制。这就是为什么在引⼊ Spring Security 中没有任何配置情况下,请求会被拦截的原因!classpath中存在条件⼆ 没有⾃定义默认情况下,条件都是满⾜的。这个类极其重要,核⼼配置都在这个类中如果要对进⾏⾃定义配置,就要⾃定义这个类实例,通过覆盖类中⽅法达到修改默认配置的⽬的对于。
2023-05-25 18:07:53 1902 1
转载 Spring Security:身份验证令牌Authentication介绍与Debug分析
它是接口的基类,使用此类的实现应该是不可变的(模板模式)。-- -- > // 权限列表 private final Collection < GrantedAuthority > authorities;// 存储有关身份验证请求的其他详细信息,可能是IP地址、证书序列号等 private Object details;// 是否已验证,默认为false private boolean authenticated = false;/*** 使用提供的权限列表创建一个身份验证令牌。
2023-05-23 14:57:36 2532
原创 SpringSecurity权限管理基本概念和整体架构介绍
Spring Security是⼀个功能强⼤、可⾼度定制的身份验证和访问控制框架。它是保护基于Spring的应⽤程序的事实标准。Spring Security是⼀个⾯向Java应⽤程序提供身份验证和安全性的框架。与所有Spring项⽬⼀样,Spring Security的真正威⼒在于它可以轻松地扩展以满⾜定制需求。是⼀个功能强⼤、可⾼度定制的身份验证和访问控制的框架。或者说⽤来实现系统中权限管理的框架。
2023-05-23 10:14:41 3468
原创 SpringSecurity系列文章总结大纲索引、熟练掌握SpringSecurity~
本博文对Spring Security系列文章的一个大的总结。通过总览的性质来表现出Spring Security系列文章,方便读者进行阅读
2023-05-22 20:30:29 1095
原创 MyBatis中使用第三方分页插件PageHelper完成分页功能
分页是web应用程序非常重要的一个技术。数据库中的数据可能是成千上万的,不可能把这么多的数据一次显示在浏览器上面。一般根据每行数据在页面上所占的空间每页显示若干行,比如一般20行是一个比较理想的显示状态。对于MyBatis中分页的操作其实是有两种,一种是基于参数的改造, 还有一种是基于插件的拦截。对于参数的改造,可以直接使用通过添加参数limit和offset
2023-05-22 14:29:25 1565
原创 Mybatis连接MySQL数据库通过逆向工程简化开发流程
但是,我们想的是,很多情况下,实体类都是一些和SQL表中重复的字段,能不能有一种方法可以自动生成对应的实体类?如果表少,手敲没有啥,如果表太多的话,难免会很麻烦,所以MyBatis官方提供了一个逆向工程,可以针对单表自动生成MyBatis执行所需要的代码(包括一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。在引入逆向工程之后,我们的开发流程会变成:加入Mybatis逆向工程的依赖设计数据表配置逆向工程配置信息运行逆向工程得到【pojo类、dao接口、sql映射文件】
2023-05-22 11:52:15 2092
原创 MyBatis缓存机制要点解析以及如何与三方缓存组件Redis整合示例
如果是开启了二级缓存,在MyBatis先查询二级缓存,因为二级缓存中可能会有其他程序已经查出来的数据,可以拿来直接使用。如果二级缓存没有命中,再查询一级缓存如果一级缓存也没有命中,则查询数据库SqlSession关闭之后,一级缓存中的数据会写入二级缓存。有关于二级缓存和一级缓存的架构位置,是先走的是查看是否有二级缓存信息,之后在走一级缓存。
2023-05-22 10:56:29 1299
原创 MyBatis中动态SQL的使用和注意事项说明
MyBatis框架动态SQL技术是根据特定的条件拼接SQL语句的功能,存在的意义是为了解决拼接SQL语句字符串痛点问题。对于动态SQL不是什么新的东西,我们之前写的SQL是直接写死在xml配置文件中的,对于很多的代码判断,我们需要利用SQL的一些函数来进行判断,比如说判断age不能为空就需要在where语句中加上。那我们能不能在sql层面,加入一些逻辑代码,根据不同的条件生成不同的sql语句。是可以的。其中包括,if。
2023-05-21 21:33:18 1748
原创 如何在MyBatis中处理复杂结果集映射关系
在开发中,我们不是总是对单表进行操作的场景。按照数据库表的设计原则,要符合一定的范式,那么就需要对某一种场景的表进行拆分。在业务上,可能是属于同一个业务。但是,在数据库中表的存储这块,可能就会涉及到表的拆分。
2023-05-21 20:06:20 1752
原创 Python爬虫urllib的基础使用详解
通过上述的方式,我们已经知道了代理是如何进行使用的。但是,实际上爬虫不会简单的使用一个固定的ip来进行访问。处理器:目的是用来定制更高级的请求头,随着业务逻辑的复杂,请求对象的定制已经满足不了我们的需求(例如动态。:在进行爬虫时候,程序模仿浏览器操作,但是反爬虫机制在响应爬虫请求时候需要进行UA识别,这时候就需要将。所以,我们需要自己定制一个请求对象,这个请求对象中包含了所有真实用户需要的头。我们知道判断一个用户是否登录的操作就是通过判断用户的唯一标识,大部分都是。来进行解码,才能变成我们能看懂的东西。
2023-05-19 20:13:41 5667 3
原创 Mybatis中处理特殊SQL处理逻辑
在MyBatis中可能会有一些特殊的SQL需要去执行,一般就是模糊查询、批量删除、动态设置表名、添加功能获取自增的主键这几种,现在分别来进行说明。为了方便演示 ,定义了访问的接口/*** 根据用户名模糊查询用户信息/*** 批量删除/*** 查询指定表中的数据/*** 添加用户。
2023-05-19 17:46:27 3639 2
原创 MyBatis各种类型查询数据的参数绑定
在使用MyBatis框架时,不可避免的需要和各种数据来打交道 ,可能的形式有查询出来一个实体对象,一个列表,一个map或者直接是一个基本类型。/*** 根据id查询用户信息/*** 查询所有用户信息/*** 查询用户信息的总记录数/*** 根据id查询用户信息为一个map集合/*** 查询所有用户信息为map集合resultMap:设置自定义映射resultMap所有属性id表示自定义映射的唯一标识type查询的数据要映射的实体类的类型id设置主键的映射关系。
2023-05-19 16:52:20 2930
原创 对回溯的理解与思考(从决策树遍历角度分析)
回溯算法就是个多叉树的遍历问题,关键就是在前序遍历和后序遍历的位置某种程度上说,动态规划的暴力求解阶段就是回溯算法。只是有的问题具有重叠子问题性质,可以用dp table或者备忘录优化,将递归树大幅剪枝,这就变成了动态规划。而今天的两个问题,都没有重叠子问题,也就是回溯算法问题了,复杂度非常高是不可避免的。
2023-05-19 16:15:11 2702
原创 设计模式之装饰者模式(Decorator Pattern)——惯用继承思考者的另类路径
假设我们要设计的是如下:当数据即将被写入磁盘前, 装饰对数据进行加密和压缩。在原始类对改变毫无察觉的情况下, 将加密后的受保护数据写入文件。当数据刚从磁盘读出后, 同样通过装饰对数据进行解压和解密。装饰和数据源类实现同一接口, 从而能在客户端代码中相互替换// 装饰可以改变组件接口所定义的操作。method writeData(data) method readData() : data // 具体组件提供操作的默认实现。这些类在程序中可能会有几个变体。
2023-05-19 11:44:41 1570
原创 设计模式之桥接模式释义与举例剖析
开始学Java讲继承的时候,总喜欢用一个例子来讲解,那就是画图形。这里有一个画笔,可以画正方形、长方形、圆形。除了画出指定的图形形状之外,还需要给图形进行上色。白色灰色黑色。我们可以画出9种图形,白色正方形、白色长方形、白色圆形好,我们开始动手了,老师说要求画出圆形、正方形,并给他们涂上蓝色、红色,分别是红色圆形红色正方形蓝色圆形蓝色正方形。老师看了看你提交的作业,非常的满意。之后突发奇想,在加上青色,灰色,绿色的颜色。形状在加上``长方形,三角形。这样一想,还要建立20个类。
2023-05-13 10:18:32 2129
原创 深入JVM了解Java对象实例化过程
加载类元信息为对象分配内存处理并发问题属性的默认初始化(零值初始化)设置对象头信息属性的显示初始化、代码块中初始化、构造器中初始化在没有继承的条件下,实例化一个对象初始化的顺序为:静态成员的初始化静态初始化块成员的初始化初始化块构造器这里面需要注意的是【静态部分只在类加载时初始化一次】如果有继承关系,那么实例化子类对象的初始化顺序为:父类静态成员的初始化父类静态代码块初始化子类静态成员的初始化子类静态代码块初始化父类成员的初始化父类初始化块父类构造器。
2023-04-24 11:12:40 2656
原创 JVM中的垃圾回收概念及其基础算法说明
关于生活中的垃圾,就是失去使用价值、 无法利用的废弃物品,是物质循环的重要环节。Java中也是这样,垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序的结束,被保留的空间无法被其它对象使用,甚至可能导致内存溢出。关于Java中垃圾收集有三个经典问题:● 哪些内存需要回收?● 什么时候回收?● 如何回收?
2023-04-23 18:03:55 2312
原创 Java 7、8 HashMap源码详解与分析
核心就是:基于哈希值的桶和链表。一般就是用数组来实现桶发生碰撞的时候,用链表来链接发生碰撞的元素假设我们, 对下面所有元素进行hash并放入到hash表中。O(1)的平均查找、插入、删除时间.致命缺点是哈希值的碰撞(collision哈希碰撞:元素通过哈希函数计算后,会被映射到同一个桶中。上面的26, 126就发生了哈希碰撞。
2023-04-22 23:35:47 2657
原创 JVM中StringTable详解
String在JDK9中存储结构变更:官方网站说明:JEP 254: Compact Strings (java.net)对官方中的内容说明进行翻译:动机目前类的实现将字符存储在一个数组中,每个字符使用两个字节(16位)。从许多不同的应用中收集到的数据表明,字符串是堆使用的主要组成部分,此外,大多数字符串对象只包含Latin-1字符。这些字符只需要一个字节的存储空间,因此这些字符串对象的内部字符数组中有一半的空间没有被使用。说明我们建议将类的内部表示方法从字符数组改为字节数组加编码标志域。新的Str
2023-04-21 10:31:17 2129
转载 JVM前端编译期所做的优化(语法糖)概括
首先我们来看一组图:对于当前也是这样探究的,先用写好的Java文件通过编译器编译成class文件。然后对class进行反编译,最后对比Java文件和反编译之后的文件就知道前端编译器做了什么优化。
2023-04-21 09:29:25 1441
原创 Redis7中的持久化技术RDB和AOF的详细解释说明
一定是RDB的数据持久化方式有部分的问题,才会出现AOF的持久化方式。,是指 Redis 将每一次的写操作都以日志的形式记录到一个 AOF文件中的持久化技术。当需要恢复内存数据时,将这些写操作重新执行一次,便会恢复到之前的内存数据状态。
2023-04-20 10:06:39 2387 1
原创 有关于SpringCloud常见的一系列组件阶段性总结
对于官方网站中的介绍:就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如服务发现注册 、配置中心 、消息总线 、负载均衡 、断路器 、数据监控等操作,而为我们提供了一套简易的编程模型,使我们能在的基础上轻松地实现微服务项目的构建。SpringCloud=分布式微服务架构的站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶先来看看有多少技术。需要充分的认识到微服务不等于SpringCloud, Spring Cloud只是微服务落地的一种方式。
2023-03-23 11:05:10 1618
原创 打开Jupyter notebook出现500:Internal Server Error的解决办法
不要想太多,你的想象力会创造出个一开始并不存在的问题。学会和自己独处,人生路漫长,有些路只有坚持走下去,时间会让一颗灵魂,变得越来越动人。做人应像向日葵一样,即使果实累累,仍是低下头默默不语。因为,即使你不言语,阳光也自会明白你的丰硕,风雨也自会知道你的优秀。于是在百度上一阵搜寻,得到的都是安装各种屌丝的包。环境下的包进行对比,有不同的或者确实的都进行安装。将你新创建的环境使用。
2023-03-08 22:22:38 5468 1
转载 CentOS8解决“Failed to download metadata for repo ‘appstream‘”错误
在上执行下面命令时报错在2022年1月31日,CentOS团队终于从官方镜像中移除CentOS 8的所有包。CentOS 8已于2021年12月31日寿终正寝,但软件包仍在官方镜像上保留了一段时间。现在他们被转移到。
2023-02-28 17:01:38 1877
原创 【CNN】搭建AlexNet网络——并处理自定义的数据集(猫狗分类)
AlexNet和LeNet的架构非常相似,AlexNet和LeNet的设计理念非常相似,但也存在显著差异。首先,AlexNet比相对较小的LeNet5要深得多。AlexNet由八层组成:五个卷积层、两个全连接隐藏层和一个全连接输出层。其次,AlexNet使用ReLU而不是sigmoid作为其激活函数。在AlexNet的第一层,卷积窗口的形状是11 x 11。由于ImageNet中大多数图像的宽和高比MNIST图像的多10倍以上,因此,需要一个更大的卷积窗口来捕获目标。第二层中的卷积窗口形状被缩减为。
2022-11-28 22:49:27 4471 1
原创 【Error Logs】YoloV5出现RuntimeError: result type Float can‘t be cast to the desired output
其实我也玩不明白,也是网上东抄抄,西看看,就纯记录。
2022-11-28 20:26:52 5254 10
原创 【CNN】经典网络LeNet——最早发布的卷积神经网络之一
LeNet主要的出现契机是手写数字的识别,并在邮政和银行发挥了非常重要的角色。但是,这个网络在当时流行度没那么高,但是知名度最高的还是MNIST数据集。所有的都是黑白图。对于LeNet,总体来看,卷积编码层:由两个卷积层组成全连接密集块:由是哪个全连接层组成架构图如下图所示:输入的是28 * 28的单通道图片 得到6输出通道的28 * 28的, 通过池化层,得到6通道14 * 14的特征图,最后通过卷积操作得到16输出通道的特征图,在通过池化得到16通道的5 * 5。
2022-11-26 21:54:03 3918 1
原创 01. Docker的基本介绍
Docker是一个开源的应用容器引擎,基于Go语言 并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app),更重要的是容器性能开销极低。
2022-11-25 17:22:47 1840
原创 聚合支付系统中用到的配器模式详细剖析与释义
将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。——《设计模式:可复用面向对象软件的基础》如果有一天,你的上级领导一拍脑门。说为什么我们不让汽车可以在铁轨上跑呢?我感觉这个方向国内还没有人做过,这个方向一旦打通,不得了。又是一片蓝海,到时候,哈哈哈哈哈哈哈。聪明的你,一下子想到了领导这无厘头的想法是个屁。但是,一想到昨天晚上趁着酒兴怼了领导几句,而领导今天没有由于你左脚踏进公司扣奖金。估摸着,这次如果不顺着领导,估计这个月的奖金…
2022-05-30 16:20:16 1993
原创 Spring的AOP实现用到的代理模式说明与分析
这是一个我们在开发中经常遇见的一种设计模式。为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种.下面,我会对Java中的这三种代理方式进行一一的介绍。代理(Proxy抽象主题(Subject。
2022-05-30 12:09:35 1577
原创 Android中的AlertDialog对话框的构建过程使用到的建造者模式剖析
咱先看看定义:创建者模式:是一种创建型设计模式, 使你能够分步骤创建复杂对象。该模式允许你使用相同的创建代码生成不同类型和形式的对象。就好像上图中的机器人构造一样,这样分离了部件的构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。某个对象的构建过程复杂的情况建造者模式可以将部件和其组装过程分开,一步一步创建一个复杂的对象。用户只需要指定复杂对象的类型就可以得到该对象,而无须知道其内部的具体构造细节建造者(Builder抽象建造者类(Builder。
2022-05-29 11:19:19 2229
原创 JavaScript构建新对象及其原型用到原型设计模式详细剖析
原型模式()的简单程度仅次于单例模式和迭代器模式。(用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。非常的简单,原型模式的核心就是一个clone方法,通过该方法进行对象的拷贝。Java提供了一个Cloneable接口来表示这个对象是可以被拷贝的。但是,为什么说是“标识”?当我们打开JDK源码发现,Cloneable是一个方法都没有的,这个接口就是一个标识作用。在JVM中具有这个表示的对象才可能被拷贝。那怎么才能从“有可能被拷贝”转换为“可以被拷贝”呢?
2022-05-29 09:01:25 1665
原创 如何利用简单工厂、配置文件、反射技术实现解除耦合?
现在比较流行的解构方式,有些不是通过设计模式之工厂设计模式(Factory Pattern)详细剖析介绍的三种模式来实现解耦操作。而是通过简单工厂、配置文件、反射技术来实现解耦。在工厂类中加载配置文件中的全类名,并创建对象进行存储,客户端如果需要对象,直接进行获取即可。现在比较流行的框架,如Spring就是利用这种方式来实现解耦操作。假设我们的类设计为:// 先创建一个coffee类型的变量,根据不同的类型创建不同的子类 Coffee coffee = null;} else {
2022-05-28 21:40:09 1718
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人