后端开发
文章平均质量分 74
dongdongdongJL
这个作者很懒,什么都没留下…
展开
-
java的父类构造调用
首先实例化就是给对象分配内存,构造方法就是分配内存的实现,那么,子类如何才能更方便的分配内存呢?很显然,就是调用父类构造方法来分配父类部分的内存,然后再调用自己的构造方法来分配子类扩展的内存。因为子类的父类部分是完全和父类一样的,你觉得有必要再自己从头开始分配内存吗?既然父类的内存分配已经有现成的方法,为什么不直接调用来分配父类部分的内存呢?javascript在实现继承的时候,也是采用了原型链的方式,将父类与子类进行挂接,而java是直接通过构造方法的层级调用,从而将new的内存挂在一起。原创 2022-12-22 15:07:17 · 701 阅读 · 1 评论 -
SpringMVC的异步
注意:在Controller中使用时,一定要注意做好接口的线程池隔离,让慢的接口使用固定数量的线程池, 否则从tomcat减少的线程会转移到应用里,导致拥塞,在部分接口下游异常的情况的情况下,会出现影响正常接口的服务.所以,需要注意的一个错误用法是,如果a方法调用它同类中的标注@Async的b方法,是不会异步执行的,因为从a方法进入调用的都是该类对象本身,不会进入代理类。1,@Async注解在使用时,如果不指定线程池的名称,则使用Spring默认的线程池,Spring默认的线程池为。原创 2022-12-20 16:42:11 · 2475 阅读 · 0 评论 -
SpringMVC的AOP总结
1、Filter 过滤器Filter是Servlet规范中规定的,只能用于WEB中, 在Servlet前后起作用它可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次使用场景: 修改字符编码;对入参进行校验, 校验不通过返回错误信息.原理: 基于函数回调( filterchain)的方式调用2、Interceptor 拦截器拦截器是Spring容器内的,是Spring框架支持的,可以使用Spring内的任何资源、对象。原创 2022-12-20 16:37:48 · 774 阅读 · 0 评论 -
kafka介绍(二)
费者可能会陷入循环中, 一直返回空数据。针对这一点, Kafka 的消费者在消费数据时会传入一个时长参数 timeout,如果当前没有数据可供消费, consumer 会等待一段时间之后再返回,这段时长即为 timeout。轮训那么消费者是如何知道生产者发送了数据呢?换一句话来说就是,消费者什么时候 pull 数据呢?其实生产者产生的数据消费者是不知道的,KafkaConsumer 采用的方式定期去 Kafka Broker 中进行数据的检索,如果有数据就用来消费,如果没有就再继续轮询等待。原创 2022-11-25 17:12:54 · 191 阅读 · 0 评论 -
kafka介绍(一)
这个部分,需要简单的解答一下,其实MQ就是消息队列,那么本质上,就是一个 FIFO的队列数据结构。因此,早期的使用方法,都是启动一个线程发送消息,写入消息队列,作为消息缓存,然后再启动一个线程消费消息。早期的windows程序(桌面程序)的设计方法。后期,随着分布式微服务的快速发展,消息这个东西变成了组件,变成了中间件,直接分离出来使用了。kafka是一款分布式、支持分区的、多副本,基于zookeeper协调的分布式消息系统。最大的特性就是可以实时处理大量数据来满足需求。原创 2022-11-25 17:11:54 · 2636 阅读 · 0 评论 -
mybatis动态SQL
在实际开发中会遇到许多相同的SQL,比如根据某个条件筛选,这个筛选很多地方都能用到,我们可以将其抽取出来成为一个公用的部分,这样修改也方便,一旦出现了错误,只需要改这一处便能处处生效了,此时就用到了这个标签了。有时候,我们不想用到所有的查询条件,只想选择其中的一个,查询条件有一个满足即可,使用 choose 标签可以解决此类问题,类似于 Java 的 switch 语句。原理为:使用 OGNL 从 sql 参数对象中计算表达式的值,根据表达式的值动态拼接 sql,以此来完成动态 sql 的功能。原创 2022-11-25 09:10:52 · 355 阅读 · 0 评论 -
mybatis关联映射
只不过,在实体关系获取时,可以通过join的查询构造,构造出该实体关系。而,一对多,一对一,多对一等都是属于实体关系。1.MyBatis一对多关联查询。2.MyBatis多对一关联查询。3.MyBatis多对多关联查询。SQL的表中记录的关系图。原创 2022-11-25 09:09:28 · 222 阅读 · 0 评论 -
mybatis自定义插件
简单的说,mybatis插件就是对ParameterHandler、ResultSetHandler、StatementHandler、Executor这四个接口上的方法进行拦截,利用JDK动态代理机制,为这些接口的实现类创建代理对象,在执行方法时,先去执行代理对象的方法,从而执行自己编写的拦截逻辑,所以真正要用好mybatis插件,主要还是要熟悉这四个接口的方法以及这些方法上的参数的含义;如果你想做的不仅仅是监控方法的调用,那么你最好相当了解要重写的方法的行为。原创 2022-11-25 09:08:47 · 520 阅读 · 0 评论 -
mybatis缓存介绍
MyBatis当中的缓存是有一级缓存和二级缓存。一级缓存默认开启。二级缓存需要手工开启。一级缓存一级缓存是默认开启的,且 SqlSession 级别的,也就是通过同一个 SqlSession 查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问二级缓存二级缓存是 SqlSessionFactory 级别,通过同一个SqlSessionFactory创建的SqlSession查询的结果会被缓存;此后若再次执行相同的查询语句,结果就会从缓存中获取开启方法二级缓存开启的条件。原创 2022-11-25 09:07:53 · 796 阅读 · 0 评论 -
mybatis配置文件
方法二中,每一个在包中的Java bean,在没有注解的情况下,会使用bean的首字母小写的非限定类名来作为它的别名。开发中通过pojo传递查询条件,查询条件是综合的查询条件,不仅包括用户查询条件还包括其他的查询条件(比如将用户购买商品消息也作为查询条件),这时可以使用包装对象传递输入pojo类参数中包含pojo。有时候开发者查询的数据不止一条,比如,模糊查询,全表查询等,这时候返回的数据可能不止一条数据,对于多数据的处理可以存放在List集合中。#{}里面的名称对应的是Map里面的key名称。原创 2022-11-24 17:34:14 · 1109 阅读 · 1 评论 -
MyBatis介绍
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。MyBatis是一个优秀的持久层框架,它对JDBC的操作数据库的过程进行封装。原创 2022-11-22 17:28:40 · 583 阅读 · 0 评论 -
ORM概念
当我们实现一个应用程序时(不使用O/R Mapping),我们可能会写特别多数据访问层的代码,从数据库保存、删除、读取对象信息,而这些代码都是重复的。对象关系映射(Object Relational Mapping,简称ORM),主要实现程序对象到关系数据库数据的映射。来描述对象-关系映射细节,元数据通常采用XML格式,存放在专门的对象-关系映射文件中。中表中的记录映射为对象,以对象的形式展现,可以把对数据库的操作转化为对对象的操作。ORM框架:为了解决面型对象与关系数据库存在的互不匹配的现象的框架。原创 2022-11-22 17:25:08 · 362 阅读 · 0 评论 -
JDBC编程
Java数据库连接 Java Database Connectivity,简称JDBC,它是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。如果没有JDBC这个接口标准的存在,程序员面对各类数据库的操作将会变得十分复杂,并令人抓狂。w=794&h=500)]JDBC是接口,驱动是接口的实现类,没有驱动将无法完成数据库连接,从而不能操作数据库!每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都由数据库生成厂商提供。原创 2022-11-22 17:23:42 · 313 阅读 · 0 评论 -
Redis的高可用
酱紫每个key都会对应一个编号在 016383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。由一个或多个Sentinel实例组成的Sentinel系统,它可以监视所有的Redis主节点和从节点,并在被监视的主节点进入下线状态时,自动将下线主服务器属下的某个从节点升级为新的主节点。但是呢,一个哨兵进程对Redis节点进行监控,就可能会出现问题(单点问题),因此,可以使用多个哨兵来进行监控Redis节点,并且各个哨兵之间还会进行监控。原创 2022-11-18 17:51:53 · 2921 阅读 · 0 评论 -
Redis分区/分片详解
redis在3.0版本前只支持单实例模式,虽然现在的服务器内存可以到100GB、200GB的规模,但是单实例模式限制了redis没法满足业务的需求(比如新浪微博就曾经用redis存储了超过1TB的数据)。它可以将众多小内存的redis实例整合起来,将分布在多台机器上的众多CPU核心的计算能力聚集在一起,完成海量数据存储和高并发读写操作。当一台物理机器存储不够的时候,我们可以将一般的实例移动到我们的第二台物理机上,依次类对,我们可以保证集群中Redis的实例数不变,又可以达到扩充机器的目的。原创 2022-11-18 17:40:49 · 4125 阅读 · 0 评论 -
JAVA淘汰技术
Java 已经发展了近20年,极其丰富的周边框架打造了一个繁荣稳固的生态圈JavaEE 框架,从百家混战到现在 Spring 基本一统天下Web 开发,从标配的 SSH 到现在 SpringMVC + MyBatis 组合IDE,从当年如火如荼的 JBuilder 到 Eclipse,再到更好用的 IDEA随着时间推移,一些优秀的框架崭露头角,一些低效框架也慢慢退出历史舞台今天,我们就来看看有哪些框架,以后可以不用学啦。原创 2022-11-17 09:16:52 · 233 阅读 · 0 评论 -
Redis的分布式锁
当主节点宕机后,主节点的数据还未来得及同步到从节点,进行主从切换后,新的主节点并没有老的主节点的全部数据,这就会导致刚写入到老的主节点的锁在新的主节点并没有,其他服务来获取锁时还是会加锁成功。此时则会有2个服务都可以操作公共资源,此时的分布式锁则是不安全的。因为redis是一个单独的非业务服务,不会受到其他业务服务的限制,所有的业务服务都可以向redis发送写入命令,且只有一个业务服务可以写入命令成功,那么这个写入命令成功的服务即获得了锁,可以进行后续对资源的操作,其他未写入成功的服务,则进行其他处理。原创 2022-11-15 12:13:30 · 420 阅读 · 0 评论 -
Redis的高可用
酱紫每个key都会对应一个编号在 016383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。由一个或多个Sentinel实例组成的Sentinel系统,它可以监视所有的Redis主节点和从节点,并在被监视的主节点进入下线状态时,自动将下线主服务器属下的某个从节点升级为新的主节点。但是呢,一个哨兵进程对Redis节点进行监控,就可能会出现问题(单点问题),因此,可以使用多个哨兵来进行监控Redis节点,并且各个哨兵之间还会进行监控。原创 2022-11-15 12:10:36 · 469 阅读 · 0 评论 -
Redis的简介
Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。与MySQL数据库不同的是,Redis的数据是存在内存中的。原创 2022-11-14 16:49:18 · 4966 阅读 · 2 评论 -
Win11安装JDK8的方案
买回来以后,准备安装jdk8,居然无论如何都安装不上,点击“下一步”以后,立刻就闪退了。最后最后,切换了输入法,记住使用系统自带的输入法,然后,就没有然后了,一切正常。这个都不知道算不算问题。原创 2022-11-11 10:41:01 · 825 阅读 · 0 评论 -
CAS和AOuth2的比较
1、OAuth2:Client端(第三方服务)是资源消费端,通过用户授权,允许用户不提供自己账号密码的情况下,使Client端有权访问用户资源(如个人信息、通讯录等);(如QQ授权页面,通过授权,使第三方服务有权访问QQ用户个人资料等)2、CAS:Client端(应用系统)是资源存储端,用户是资源消费者(应用使用者);认证中心存在 ,访问其中某一个项目时,重定向到统一登录页面,登录完成后,带上凭证信息重定向该项目,该项目通过。CAS只是SSO的一种实现方式。提供的认证信息,完成当前项目的登录 , CAS。原创 2022-11-10 16:57:00 · 660 阅读 · 0 评论 -
Git操作流程
Git的基本操作流程原创 2022-11-07 10:03:20 · 246 阅读 · 0 评论 -
Git的使用教程
8、但是两者冲突太多;7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。7、N个月后,码农A认为自己的改进已经尽善尽美了,于是合并自己的“产品A之码农A改进版”到当前的主版本。原创 2022-11-04 17:15:32 · 519 阅读 · 0 评论 -
Spring Security是什么? - 密码认证(四)
在 Spring Security当中,认证的过程,首先是获取用户名,然后通过用户名在数据库当中获取到用户的完整信息,然后根据用户信息再去 比对用户的密码。用户登录时,密码匹配阶段并没有进行密码解密(因为密码经过Hash处理,是不可逆的),而是使用相同的算法把用户输入的密码进行hash处理,得到密码的hash值,然后将其与从数据库中查询到的密码hash值进行比较。在注册用户的时候,使用SHA-256+随机盐+密钥把用户输入的密码进行hash处理,得到密码的hash值,然后将其存入数据库中。原创 2022-11-03 11:18:42 · 624 阅读 · 0 评论 -
Spring Security是什么? - 简单例子(三)
简单入门的例子原创 2022-11-03 11:17:25 · 141 阅读 · 0 评论 -
Spring Security是什么?(二)
总体而言,就是你在写filter的时候,可以完全的抛弃spring security当中的内容,也可以在后边增加补充的认证内容。目前网络上的大部分实现,都是补充进行email认证,手机短信认证,但是用户名和密码认证都是保留spring security的usernamepasswordanthenticationfilter的内容。其实,对于自定义方法三,就是不正宗的处理流程,虽然也进行了用户名和密码的判断,但是却破坏了spring security的流程。2、修改配置类当中的三个config函数。原创 2022-11-03 11:14:39 · 366 阅读 · 0 评论 -
Spring Security是什么?(一)
Spring Security 是 Spring 项目组中用来提供安全认证服务的框架。应该说,Spring Security是使用最多的安全框架。Spring Security使用的目的: 验证,授权,攻击防护。背景:谈论优点的同时,不妨先考虑一下,没有Spring Security我们难道就无法实现认证和授权了吗?肯定不是的,一般涉及到用户授权,我们都会分为用户表、角色表、用户角色表、菜单表、角色菜单表。有这五张表,就算没有Spring Security我们依旧可以完成用户菜单等控制。原创 2022-11-03 11:13:10 · 676 阅读 · 0 评论 -
什么是用户认证与授权 - Session认证(四)
因为根据HTTP协议,我们并不能知道是哪个用户发出的请求,所以为了我们的应用可以识别是哪个用户发起请求,我们只能在服务器中存储一份用户的登录信息,这份登录信息会在响应时传递给浏览器,并告诉浏览器保存为Cookie,下次请求时带上这份登录信息,这样我们的应用就可以识别是哪个用户发起的请求了,这就是传统的基于Session认证。用户B,再开一个浏览器的时候,访问到web服务器,此时,web服务器也会创建一个session,这个session对象与用户A的是不同的对象。因为这个是浏览器和服务器之间的传递过程。原创 2022-10-26 17:28:25 · 259 阅读 · 0 评论 -
安全认证中的CSRF
正常的访问时,客户端浏览器能够正确得到并传回这个伪随机数,而通过CSRF传来的欺骗性攻击中,攻击者无从事先得知这个伪随机数的值,服务端就会因为校验token的值为空或者错误,拒绝这个可疑请求。而,跨域转发,是没有这个过程的。这个图说明,在浏览器向服务端请求页面时,服务端将自己生成的token,返回给了浏览器,然后在发送post的时候,浏览器就带有了token。如果是,第三方网站跳转过去,就是直接操作的界面,就算是有了cookie,认证通过了,但是因为没有这个请求字段,所以操作是无法成功的。原创 2022-10-26 17:15:21 · 2045 阅读 · 0 评论 -
什么是用户认证与授权(二)
服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。用户B,再开一个浏览器的时候,访问到web服务器,此时,web服务器也会创建一个session,这个session对象与用户A的是不同的对象。每个用户经过认证之后,我们的应用都要在服务端做一次记录,以便识别该用户的请求,而通常来说,原创 2022-10-25 16:50:31 · 428 阅读 · 0 评论 -
ReidsWindows的下载及安装
Redis的windows版本的说明windows上最新 5.0版本然而,现在有一群志愿者站了出来,将redis的windows版本更新到了5.0.9!!(并且还有可用的4.0版本)Github仓库:https://github.com/tporadowski/redis如何下载打开图片上红框标出的链接(Release) 或者直接点这里:https://github.com/tporadowski/redis/releases然后下载msi格式的安装包即可!双击msi原创 2022-04-03 21:33:08 · 845 阅读 · 0 评论