- 博客(210)
- 资源 (1)
- 收藏
- 关注
原创 RocketMQ学习笔记(一)
下载地址:https://rocketmq.apache.org/zh/download/Github地址:https://github.com/apache/rocketmq。RocketMQ的官网地址:https://rocketmq.apache.org/
2024-05-12 23:02:57
644
原创 Redis的一些基本命令和使用方法
这是因为在哈希表中,每个键值对都需要有一个唯一的键(即域),用于区分不同的数据。如果没有域的概念,那么哈希表中的每个键值对就只能通过键来区分,这样就无法存储多个键相同但值不同的数据了。Redis是一个开源的内存数据结构存储系统,支持多种数据结构(如字符串、哈希、列表、集合、有序集合等),常用于缓存、消息队列、排行榜等场景。这样就可以通过一个唯一的键(person1或person2)来区分不同的人,每个人的姓名、年龄、性别则通过不同的域来存储。举个例子,假设我们要存储一些人的信息,如姓名、年龄、性别等。
2023-05-28 17:42:03
1343
原创 Redis相关
哨兵的问题是:由哨兵监控主从Redis情况,主宕机,自动从从Redis选择一个做主,保证可用性,只有一台主用来写,如果并发写比较多的话,写的压力会很大,主从的问题是:读写分离,减轻单台Redis的压力,但是当主Redis宕机的时候,需要手动选择同步Redis,也是不可用的;单机的问题:只有一台Redis,Redis宕机的时候,服务就无法使用了(并且因为只有一台,吞吐量偏低,有效率问题;集群模式:解决可用和吞吐量的问题,
2023-05-28 16:46:48
1094
原创 概述篇——01 计算机网络概述
计算机网络主要由一些通用的、可编程的硬件互连而成,通过这些硬件,可以传送不同类型的数据,并且可以支持广泛和日益增长的应用;计算机网络不只是软件概念,还包含硬件设备;计算机网络不仅仅是信息通信,还可以支持广泛的应用;
2023-04-29 20:21:38
719
原创 一 注册中心
注册中心可以说是微服务架构中的“通讯录”,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。当我想给张三打电话时,那我需要在通讯录中按照名字找到张三,然后就可以找到他的手机号拨打电话。– 服务发现李四办了手机号并把手机号告诉了我,我把李四的号码存进通讯录,后续,我就可以从通讯录找到他。– 服务注册通讯录– 服务注册中心总结: 服务注册中心的作用就是服务的注册和服务的发现。
2023-04-09 13:42:55
440
原创 单点登录token与JWT
token其实就是token+redis的组合,token本身是无意义的,保证唯一就好了;JWT:他的token是有意义的,加密的,包含业务信息的,一般是用户信息,可以被解密出来;
2023-03-19 16:06:53
263
原创 SpringBoot中自定义异常
/*** 不写入堆栈信息,提高性能} }USER_LOGIN_NAME_EXIST("登录名已存在") ,;} }
2023-02-19 17:42:05
233
原创 分页插件
Mybatis会加载这个拦截器到拦截器链中。在我们使用过程中先使用PageHelper.startPage这样的语句在当前线程上下文中设置一个ThreadLocal变量,再利用PageInterceptor这个分页拦截器拦截,从ThreadLocal中拿到分页的信息,如果有分页信息拼装分页SQL(limit语句等)进行分页查询,最后再把ThreadLocal中的东西清除掉;前面说过,PageHelper有两次SQL的执行,第一次是查总数的,第二次是查询当前的信息的,那可以拿出其查的总数信息来看看;
2023-02-18 19:04:35
199
原创 过滤器和监听器
AOP也可以打印参数相关的信息,但是与过滤器拦截器不同,他依靠的不是request,而是连接点JoinPoint,作用是防止SQL注入、参数过滤、防止页面攻击、空参数矫正、Token校验、Session验证、点击率统计等等;监听对象的增删改查等操作,然后做出相应处理,用户统计在线人数、在线用户、系统加载时的信息初始化等等;注意:通过@Order注解设置过滤器的执行顺序,越小的越先被执行;** 执行结果 **
2023-02-18 19:03:14
874
原创 IO和NIO
通常情况下I/O操作是比较耗时的,所以为了高效的使用硬件,应用程序可以专门设置一个线程进行I/O操作,而另外一个线程则利用CPU的空闲去做其他计算,这种为提高应用执行效率而采用的I/O操作方法称为I/O模型;当然了,在网络里面就要变通一下,不在是对硬件执行I/O操作,而是对网络上的数据,示意图如下:阻塞和非阻塞就体现在从内核空间拷贝数组到用户空间的过程中线程的调用者的状态,同步与异步的区别就在于是否是由调用方自己来拷贝数组;同步:调用发出之后,事件发生后,被调用方会通知调用者亲自来处理;
2023-01-25 15:55:51
1126
原创 JNA学习
一、JNI提到JNA 就不得不提一下JNI(Java Native Interface),有过不同语言间通信开发经历的一般都知道,它允许java和其他语言代码(尤其是C/C++)进行交互,只要遵守约定即可。首先看下JNA调用C/C++过程,注意写程序时自下而上,调用时自上而下:可见步骤之多,调用.dll/.so共享库之痛苦的过程。若已有编译好的.dll/.so文件—>需先用是C语言另外写一个.dll/.so共享库,使用SUN规定的数据结构代替C语言的数据结构,调用已有的dll/so中公布的函数
2021-08-18 15:56:00
3266
1
原创 枚举类型
枚举使用enum关键字,(枚举的实例是常量,因此按照命名规范它们都得大写,如果有多个单词用下划线将他们隔开),枚举属于一种类,它有自己的方法,枚举类型可以作为swatch语句的参数(JDK1.5以后支持的),枚举不可以产生实例对象(所有自定义的枚举都是继承Enum(一个抽象类),构造函数默认为私有的);swatch语句的参数只能是byte、short、char、int类型以及他们的包装类和Str...
2019-12-04 17:24:22
826
原创 SpringMVC(六)—— 异常处理机制
文章目录概念SpringMVC的异常处理机制一、创建相关的类二、创建配置文件三、部署四、使用概念系统中的异常分为两种:预期异常:通过try-catch来捕获异常或者抛出异常;运行时异常:RuntimeException,通过测试来检测;再mvc模式中,我们一般需要把dao层、service层、Controller层的异常一层一层往上抛,最后由前端控制器交由异常处理器处理;Sprin...
2019-09-22 16:52:17
346
原创 SpringMVC(五)—— 大文件的传输
文章目录概念大文件传输一、引入依赖二、创建对应的类三、创建配置文件四、部署项目到服务器五、使用概念在前面我们从网页表单获取一个 int 类型或者String类型的数据的时候都是通过一种 key-value 的形式传给后端的,但是对于那些比较大的文件,这种方法就不行了;大文件一般指:图片;视频;文件;大文件传输操作步骤:引入依赖;创建对应的类;创建配置文件;部署到服务器...
2019-09-22 15:27:09
287
原创 SpringMVC (四)—— 利用SSM实现一个简单的登录功能
文章目录需要创建的类需要配置的文件配置文件JSP页面部署项目到服务器使用对应的数据库表User:需要创建的类创建bean类User:public class User { private int id; private String name; private String passwd; //get、set、toString方法;}创建da...
2019-09-21 17:25:51
2000
原创 SpringMVC(三)—— SSM整合
文章目录概念介绍实现步骤一、导入依赖二、创建对应的类;bean类:dao层接口service层对应的类Controller层对应的类三、创建对应的文件创建Mapper的配置文件创建MyBatis的配置文件创建Spring的配置文件SpringMVC的配置文件创建JSP显示页面文件配置web.xml文件四、部署项目五、使用概念介绍SSM:Spring+SpringMVC+MyBatisSpri...
2019-09-21 13:54:55
256
原创 SpringMVC(二)—— SpringMVC的基本使用(配置和注解实现)
文章目录配置实现注解实现这节主要讲述 SpringMVC的基本使用,注意我用的是伪代码,即并没有与底层数据库交互,主要在于SpringMVC的基本使用(配置和注解实现);操作步骤:引入依赖(主要是Spring核心包、SpringMVC相关的包);配置和开发(配置:前端控制器、处理器映射器、处理器适配器、配置视图解析器,开发:开发Handler、开发视图);部署到服务器上(Tomcat、...
2019-09-17 13:31:29
428
原创 SpringMVC(一) —— 初识SpringMVC
SpringMVC是Spring的一部分,提供了前台展示相关内容,SpringMVC的底层需要用到Servlet;MVC是一种设计模式:M(model):数据,bean、dao;V(View):页面,JSP;C(Controller):根据请求不同,获取不同的model,返回不同的view;用户请求数据到返回的大体流程:SpringMVC运行的原理:SpringMVC的具体执...
2019-09-15 16:45:25
440
原创 Spring(五)—— Spring对事务的管理
文章目录回顾Spring对事务管理的两种实现方式通过配置实现通过注解实现回顾先来回顾一下事务的相关知识吧;事务的概念:事务是一种SQL 语句的执行,要么成功,要么失败,不能出现部分成功,部分失败,具有原子性;事务所有的SQL全部执行完,才能提交(commit)事务,将数据存储到磁盘;事务执行过程中只要有SQL出现问题,那么事务就必须回滚到最初的状态;事务的特征:ACIDA:事...
2019-09-09 20:28:42
267
原创 Spring(四)—— Spring-Mybatis整合
文章目录第一种方式第二种方式上一节介绍了jdbcTemplate,但是它的手动映射让人感觉很麻烦,这节主要讲述Spring提供的另一种dao层解决方案,即使用Spring-Mybatis整合框架,这也是我学的第一个整合框架;整合的思路:将SqlSessionFactory交给Spring管理;使用步骤:引入依赖;创建bean类,dao层、service层、controller层相关的类...
2019-09-09 18:16:46
276
原创 Spring(三)—— JdbcTemplate
文章目录JdbcTemplate介绍JdbcTemplate介绍前面我们说过 ,Spring是一个一站式框架,就是说我们只需要使用这一个框架就够了,你需要的东西这个框架都有,JdbcTemplate就是一个Spring用来处理数据库的,当然还有一种方法就是使用Spring-Mybatis整合,这节主要介绍JdbcTemplate;Spring在各层都提供了相关的处理办法:web层:ser...
2019-09-08 16:26:31
7098
1
原创 Spring (二)—— Spring AOP
文章目录AOP概念AOP相关术语AOP的实现通过配置实现通过注解实现AOP概念AOP是面向切面,即扩展功能但是不修改源代码,AOP采取横向抽取机制,一般用于 性能监控、事务管理、安全检查、缓存;这里先介绍一下纵向抽取机制:我们一般添加功能是这样做的:public class User { public void add() { //添加用户的功能 ...
2019-09-08 13:10:16
340
1
原创 Spring(一)—— Spring IOC
文章目录Spring简介无参构造创建实例对象有参构造创建实例对象Spring简介Spring是一个企业级开发框架,为解决企业级项目开发过于复杂而创建的,框架的主要优势之一就是分层架构,允许开发者自主选择组件。Spring的两大核心机制是IOC(控制反转)和AOP(面向切面编程),从开发的角度讲,我们使用Spring框架就是用它的IOC和AOP。IOC是典型的工厂模式,通过工厂去注入对象,...
2019-09-06 23:13:58
3145
原创 MyBatis (八)—— 自定义一个小MyBatis
最近研究了一下Mybatis的底层代码,准备写一个操作数据库的小工具,实现了Mybatis的部分功能:1. SQL语句在mapper.xml中配置。2. 支持int,String,自定义数据类型的入参。3. 根据mapper.xml动态创建接口的代理实现对象。功能有限,目的是搞清楚MyBatis框架的底层思想,多学习研究优秀框架的实现思路,对提升自己的编码能力大有裨益。小工具使用到的核心...
2019-09-06 21:39:17
2973
1
原创 MyBatis(七) —— MyBatis的动态代理
动态代理的相关知识参考我前面的一篇文章→Mybatis(二)—— 动态代理,这篇文章主要看看MyBatis的底层源码,看它是如何实现动态代理的:在前面的MyBatis的使用中,我们可以看到,每次都会用到这句代码:那我们就从getMapper进去,看看MyBatis底层是如何生成代理对象的:显然,它运用到了configuration对象(configuration是一个单例对象,它作为一个...
2019-09-06 21:39:11
448
原创 MyBatis(六)——逆向工程
文章目录什么是Mybatis逆向工程?为什么要使用Mybatis逆向工程?Mybatis逆向工程有什么不足?如何使用Mybatis逆向工程?什么是Mybatis逆向工程?可以针对单表自动生成MyBatis执行所需要的代码,包括:Mapper.java,Mapper.xml,实体类。为什么要使用Mybatis逆向工程?我们之前说过MyBatis是一个"半自动"的ORM框架,SQL语句需要开发...
2019-09-06 21:39:06
2957
原创 MyBatis (五)—— 延迟加载
文章目录高级映射一对一关联映射方式一:resultType方式二:resultMap一对多关联映射方式一:resultType方式二:resultMap多对多关联映射延迟加载高级映射在学习延迟加载之前,先来学习什么是高级映射吧;高级映射其实就是数据库表与表之间的关系,那么具体的关系又可以分为三种(拿学生表和班级表做说明):一对一关系;如学生之于班级一对多关系;如班级至于学生多对多关系...
2019-09-06 21:38:37
3309
原创 MyBatis(四) —— 缓存
文章目录什么是Mybatis缓存?Mybatis缓存分类什么是Mybatis缓存?使用缓存可以减少Java Application与数据库的交互次数,从而提升程序的运行效率。比如,查询id=1的user对象,第一次查询出来之后,会自动将该对象保存到缓存中。下一次查询该对象时,就可以直接从缓存中获取,不需要发送SQL查询数据库了。Mybatis缓存分类一级缓存:SqlSession级别,默认...
2019-09-06 21:38:32
3089
原创 MyBatis(三)—— 动态SQL详解
在业务比较复杂的情况下,我们通常需要去拼接SQL语句来完成相关操作,这样出错率很高,不过,MyBatis有一个非常方便且强大的功能就是动态SQL,使用动态SQL,可以摆脱手动拼SQL的痛苦,接下来我们就一起来学习如何使用MyBatis动态SQL。先来看看我们用的student表:目录结构:Student实体类:/** * @ClassName Student * @Descri...
2019-09-06 21:38:27
2701
原创 MyBtis(二)—— 动态代理
按照代理的创建时期,代理类可以分为两种: 静态:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。动态:在程序运行时运用反射机制动态创建而成。
2019-09-06 21:38:11
376
原创 MyBtis(一)—— 初识MyBatis
文章目录mybatis基础知识Mybatis入门级使用mybatis基础知识MyBatis是一个实现了数据持久化的开源框架,其实它就像netty之于NIO一样,Mybatis是JDBC的封装,所以:JDBC的缺点:需要频繁的进行数据库的建立、连接、断开操作,浪费资源,影响数据库性能;解决:连接池将SQL语句直接编码在Java代码中,需求改变时,需要修改Java代码;解决:将S...
2019-09-06 21:38:03
724
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人