自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Left join 后的条件和where 后的条件的区别

在第一个查询中,即使B.condition不成立,A表的所有记录仍然会返回,B表的相关列会显示为NULL。而在第二个查询中,只有当B.condition成立时,A表和B表的匹配记录才会返回。如果B.condition不成立,即使A表有记录,也不会出现在结果集中。-- 使用WHERE子句条件。-- 使用ON子句条件。

2024-05-31 17:56:55 122

原创 Python-Socket(实现聊天功能--实时聊天)(二)

上篇文章已经将一个Socket双方通信的骨架已经构建起来。本篇将在基本骨架上继续优化一下。

2022-11-20 14:36:13 1061

原创 Python-Socket(实现聊天功能--骨架流程)(一)

Socket别名"套接字"两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个SocketTCP/IP 协议族的一种封装,是应用层与TCP/IP协议族通信的中间软件抽象层。在网上扒的Socket的流程图(画这个图的作者思路非常清晰)

2022-09-21 15:04:24 574 1

原创 Springboot-本地缓存(Google Guava Cache)

GuavaCache是Google公司开发⼀种本地缓存机制,之所以叫本地缓存,是因为它不会把缓存数据放到外部⽂件或者其他服务器上,⽽是存放到了应⽤内存中。GuavaCache的优点是简单、强⼤、轻量级。

2022-07-17 22:38:46 4188 1

原创 Grpc框架+Protobuf 搭建以及使用(入门)

Grpc(远程过程调用)与HTTP远程调用 ①:JDK11(上文也提及基于 HTTP/2,JDK11之后才开始正式使用HTTP/2) ②:Protobuf插件(上文也提及基于protobuf序列化协议,用插件读.proto生成Stub代码) ①:spring-grpc:一个主工程做依赖管理 ②:client:Grpc的客户端 ③:server:Grpc的服务端 ④:grpc-lib:通过.proto文件生成stub的java文件 ①:主工程依赖(此处的net.devh的两个starter

2022-06-27 17:38:25 3787

原创 彻底熟练玩转Spring AOP(Pointcut,Advice,Joinpoint)

AOP的本质就是运用了动态代理两种动态代理的方式:CGlib和JDK原生动态代理(两种区别在别的文章有记录) 强制全部使用CGLIB动态代理的两种方式:本篇主要记录AOP的具体运用①定义切点切点表达式(盗图)表达式由六部分组成:其中表达式主体有以下这些: 举几个例子:com.yuwenwen.controller包下的所有类的所有方法,所有方法参数,所有返回类型,都作为切点com.yuwenwen.controller包或者子包下的所有类的所有方法,所有方法参数,所有

2022-06-19 10:33:48 293

原创 SpringBoot自动装配-自定义Starter装配

SpringBoot对比SpringMVC最大的优点就是实现了约定大于配置SpringMVC:通过<Bean>的方式来配置各种配置类SpringBoot:通过@Configuration+@Bean的方式来配置配置类问题:只不过是换了一种写法,怎么就约定大于配置了呢,Boot为什么就比MVC减少了配置呢首先SpringBoot快速开发工具包,之所以能够便捷的开发是因为它的自动装配+各个组件自己定义的Starter的机制在SpringBoot中,各个成熟的组件要自己写一个默

2022-05-26 14:17:13 775

原创 MySQL-InnoDB(B+Tree)

MySQL中有两种表级别的引擎:InnoDB和MyIsam.现在最常用的就是InnoDB,那么就刨析一下:InnoDB默认的索引数据结构就是B+TreeB+Tree从图中可以看出来,B+Tree的特点是:盗的图↓①:只有最底层的叶子节点储存数据②:其他节点只存储下一层的节点地址③:最底层的叶子节点具有双链表结构。④:假设主键是BigInt类型,三层树高可容纳2000万条数据量计算(1 Page=16k,BigInt=8Byte,空白地址=6Byte)MAX H1

2022-05-16 14:20:42 471 1

原创 SpringBoot+Vue-解决跨域问题

所谓跨域:在前后端分离的项目中,前台一个服务,后台一个服务。前台的一个Axios请求打进来,要访问后台Tomcat服务器Restful接口浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略在默认的情况下跨域是被禁止。IP不同或者端口号不同就是跨域HTML5带来了CORS协议解决跨域的问题CORS是一个W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing),允许浏览器向跨源服务器,发出XMLH

2022-05-12 15:34:41 1877

原创 手写Spring框架源码(基础款)(AOP JDK动态代理)

原生的Spring框架除了IOC还有个强大的功能---AOP之所以出现AOP,对原本的类没有任何侵入性的情况下还可以对它进行自定义逻辑。首先要明白AOP在Spring的生命周期里的哪一步去做的,做了什么。生命周期里的哪一步去做的:时间点是初始化后做的。做了什么:生成一个代理类,把这个代理类放到容器里替你做事。此处是用JDK的动态代理(JDK的动态代理有一个特点就是这个被代理的对象必须实现一个接口才能给这个对象生成代理对象)第一步:写一个接口让类重写接口方法public inte

2022-05-09 10:25:49 330

原创 手写Spring框架源码(基础款)(Aware回调,初始化,BeanPostProcessor)

在原生Spring框架中,其实框架给了很多在创建Bean之前的一些自定义的回调方法可以让你自由度更高的自定义创建出来的Bean,比如各种Aware接口以及初始出Bean方法那咱们也模仿Spring也做同样的事情第一步:定义Aware或者初始化bean的接口public interface BeanNameAware { public void setBeanName();}public interface InitializingBean { void afte

2022-05-07 16:32:07 293

原创 手写Spring框架源码(基础款)(控制反转和依赖注入)

手写Spring框架的目的:为了更了解Spring框架的执行流程和生命周期Spring框架前提准备:1 自定义的ApplicationContext2 自定义的cofig配置类3 自定义的注解(例如@ComponentScan,@Component)第一步:main()方法为入口(模拟getBean的过程)public class ApplicationTest { public static void main(String[] args) { // 自定

2022-05-06 13:33:57 546 2

原创 SpringSecurity-入门(1)执行流程

了解Security安全框架,首先要了解它的执行流程(过滤链)在不引入Security依赖的情况下下面这个接口就是一个没有任何限制的接口,可以任意的访问。@RestController@RequestMapping(value = "/admi")public class AdminDemoController { @RequestMapping(value = "/demo") public String run() { return "successfu

2022-05-02 15:26:36 476

原创 SpringSecurity-入门(2)登录信息

用户成功认证成功后,防止每次调用接口时都要认证,用户的信息存在session里,认证成功后将身份信息存在SecurityContextHolder上下文,和当前线程绑定便于保存身份信息Security框架源码中↓有这样一个重要的方法 protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentica

2022-05-02 15:25:32 781

原创 JAVA基础-JAVA11

①:变量类型推断var code="java";String code ="java";var声明变量可以自动推断类型②:集合加强List.of("java","C++","PY");生成一个不可变的List,说白了就是成一个阉割的数组了(不能进行添加、删除、替换、排序等操作) static final class ListN<E> extends ImmutableCollections.AbstractImmutableList<E>

2022-04-24 16:38:51 86

原创 JAVA基础-接口和抽象类

实现方式 成员变量 构造函数 普通方法体 设计模式 抽象类 只能靠单继承 普通成员变量 可以有 可以 对一类的抽象 接口 多实现 静态常量(public final static) 不可以有 不可以(1.8之后也可用default) 对行为的抽象 举例一种场景:动物都会吃饭和跑步,自然可以把动物做成一个抽象类,如果是一个狗又会唱歌又会跳舞。怎么创建public abstract class...

2022-04-14 17:23:59 51

原创 设计模式-观察者模式(ApplicationListener)

观察者模式的机制:ApplicationContext发布ApplicationEvent时,ApplicationListener就会自动触发实现观察者模式的三个必要条件:①:自定义事件(event)继承 ApplicationEvent(也有Spring 自己提供的事件)// 事件public class MyApplicationEvent extends ApplicationEvent { public MyApplicationEvent(Object source

2022-04-14 17:15:44 508

原创 JAVA8新特性-Stream Lamda FunctionalInterface 三者关系

①:函数式接口(支持Lamda):(有且只有一个抽象方法的接口)列举几个常用的 public static void main(String[] args) { // 一个参数,一个返回值 Function<String, String> dd = i -> { String ii = "My Name is"; return ii + i; }; // 一个参数

2022-03-22 14:09:07 990

原创 JAVA8多线程-CompletableFuture+Executor

两种创建CompletableFuture的方式:①:CompletableFuture.supplyAsync(执行有返回值的方法) CompletableFuture codeFuture = CompletableFuture.supplyAsync(() -> loginService.getCode() );②:CompletableFuture.runAsync(执行无返回值的方法) Completabl

2022-03-21 21:20:47 1172

原创 Grpc(远程过程调用)与HTTP远程调用

HTTP远程调用:传统的服务之间调用常用的方式:RestfulAPI(接口规范)HTTP网络传输协议

2022-03-09 21:28:46 964

原创 设计一套发信功能(SpringBoot+freemarker)

中心思想:1将送信内容放到Map里2将Map里的数据铺到templates3将templates的内容放到数据库做持久化4读数据库的邮件内容进行发送引入模板引擎依赖 <!-- 模板--> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifact

2022-03-01 22:01:26 176

原创 权限控制(Interceptor拦截器)

1查出loginUser的所有权限放置session里2在对应需要权限的API接口自定义注解标识3配置Interceptor在preHandle方法做前置判断自定义注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface RoleCheck { public String item(); public String promissonType(.

2022-03-01 22:00:44 992

原创 SQL优化

首先排除索引失效的场景:①:避免in或者not inselect a from b where c in(1,10)优化:BETWEEN 1 AND 10子查询的in用exist代替②:模糊查询避免%在前//索引失效select id from a where name LIKE '%于%'//索引有效select id from a where name LIKE '于%'③:索引字段避免orselect a from b where c.ip=11 or c.

2022-01-05 20:44:02 221

原创 RuntimeException和Exception的区别

本质:RuntimeException:是不受检查异常,也就是即便不抛也不会出编译错误,虚拟机会自己抛出来,常见的:NullPointerException,ArrayIndexOutOfBoundsException,IllegalArgumentException,在实际编码过程中,你没有抛它也会自己出。非RuntimeException:受检查异常,就必须要往上抛,否则编译出错。设计:假如说,让你做一个异常的设计,你会怎么设计?个人理解:如果是业务上的异常,并且你知道要如何...

2021-12-31 16:51:17 804

原创 Python GUI(PyQT5)环境搭建

①:PyQT5安装或者 pip install pyqt5-tools PyCharm配置 program:C:\python\Lib\site-packages\qt5_applications\Qt\bin\designer.exe ↑(这里有些博主说在pyqt5_tools文件下,新版的全在qt5_applications文件下!!!) Working directory:$ProjectFileDir$(当前文件下的意思) ②:PyUIC(自带的)PyCha...

2021-12-30 21:04:01 558

原创 Python+Pyqt5基本运用

①:打开desginer(可视化界面编辑)PyCharm ->随便一个项目右键->-External Tool>-QT designer②:编辑可视化界面(做出自己想要的画面)①组件选择:提供了市场上大多数通用组件的功能和样式,根据组件功能拖拽到②的方式以达到目的 ②可视化窗口:通过①④的配置,呈现到画面的可视化窗口,以便于调整大小和形态 ③对象查看器:根据对象与对象之间的阶层,梳理出每层之间的关系 ④属性编辑器:选中组件可以编辑其组件的属...

2021-12-30 21:02:59 1272

原创 谈谈对Spring的动态代理机制

①:JDK动态代理//接口interface Demo{ void buyCar();}//要被代理的类public class PersonBuy implements Demo{ @Override public void buyCar() { System.out.println("去4s店提车"); }}//JDK代理类class JDKProxy implements InvocationHandler {private P

2021-11-16 14:15:46 457

原创 谈谈对Spring的拦截机制

如图所示一个请求打进来的拦截顺序:过滤器->拦截器->全局异常捕获->AOPcontroller抛异常时的拦截顺序:AOP->全局异常捕获->拦截器->过滤器验证结果(局部验证,controller抛异常时,看看是现走全局异常捕获还是AOP):controller:@RestController@RequestMapping(value = "/person")public class CheckUser { @PostMapping(..

2021-10-20 16:51:54 135

原创 谈谈对Spring的AOP机制

谈到Spring,必然是它的核心两大功能,IOC和AOP.AOP:面向切面,其原理就是通过动态代理,代理类做一系列的切面处理。动态代理有两种方式,JDK原生的和CG。(boot2之后用的就是CG)这里注意,JDK原生的的本质是其通过接口的方式生成的代理类,而CG是通过子类继承父类的方式生成的代理类,如果是final不可继承的肯定是生成不了代理类。AOP的运用场景:很多小白还不了解在什么时候用过AOP。首先,事务的运用就是AOP,翻开Dao层的注解是不是有个@Transactional,你把@Tra

2021-10-14 22:42:52 129

原创 谈谈对SpringBoot的校验机制

谈起校验就不得不说@Valid和@Valitdated的区别①:分组验证②:注解位置③:嵌套验证这里着重谈一下嵌套验证。什么是嵌套验证?这个是一个登录信息,它里面可能包含用户信息//登录信息@JsonIgnoreProperties(ignoreUnknown = true)@Datapublic class LoginUser { //用户名 @NotNull(message = "用户名不能为空") @Min(value = 2, message .

2021-10-14 22:41:47 409

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除