- 博客(158)
- 收藏
- 关注
原创 Linux系列操作篇
Linux系统会内置 vi 文本编辑器Vim具有程序编辑的能力,可以看作是Vi的增强版本,可以主动地以字体颜色辨别语法的正确性,程序设计,代码补全,编译及错误跳转等方面的功能特别丰富,被广泛使用。正常模式以vim打开一个档案就直接进入一般模式了,在这个模式中,你可以使用【上下左右】按键来移动光标,你可以使用【删除整行】或【删除字符】来处理档案内容,也可以使用【复制,粘贴】来处理你的文件数据。插入模式按下i,I,o,O,a,A,r,R等任何一个字母之后才会进入编辑模式,一般来说按i即可。
2025-07-16 08:30:00
645
原创 每日一SQL【查询近30天活跃用户数】
首先明确, 截止至’2019-07-27’,近30天,指的是 [‘2019-06-28’, ‘2019-07-27’]这个区间。(因为此时别名已经定义),也可以使用列的位置索引(不推荐,可读性差)。首先确定查询的数据源(表、视图、子查询等),加载数据。,会在此步骤进行表连接,生成临时的 “连接结果集”。)只能操作 “组” 级别的数据(分组列或聚合函数)。从前面的结果集中选择需要的列,计算表达式(如。生成的分组结果进行筛选,保留满足条件的组。生成的结果集进行筛选,保留满足条件的行。),并为列定义别名(如。
2025-07-12 12:03:14
314
原创 每日一SQL 【销售分析 III】
写成代码: product_id not in (…not between ‘2019-01-01’ and ‘2019-03-31’)等价于不属于 (负无穷, ‘2019-01-01’) ∪ ( ‘2019-03-31’, 正无穷)属于区间[‘2019-01-01’, ‘2019-03-31’]
2025-07-12 11:43:42
222
原创 每日一SQL 【游戏玩法分析 IV】
3.符合条件的玩家用count(second_date)控制, 全部玩家用count(*)控制, round(count(second_date) / count(*), 2) 计算完成.count(a.event_date):count关键字计算非空字段数量, count(*)计算全部数量.2.再计算每个玩家的第二天登陆日, second_date不为null即表示该玩家符合条件。1.先计算每个玩家的首次登陆日。
2025-07-11 11:13:12
170
原创 每日一SQL 【确认率】
在你提供的 Confirmations 表结构中,action 列被定义为 ENUM(‘confirmed’, ‘timeout’),这意味着该列只能存储 ‘confirmed’ 或 ‘timeout’ 这两个值中的一个。2.布尔表达式的结果:action = ‘confirmed’ 的结果要么是 TRUE/FALSE(非 NULL),要么是 NULL(当 action 为 NULL 时,但这里 action 是 ENUM,不可能为 NULL)。功能:处理多个值,返回参数列表中的第一个非 NULL 值。
2025-07-10 13:36:44
783
原创 每日一SQL 【各赛事的用户注册率】
select,from,where,group by,order by,having, limit执行顺序。having 对分组后的数据过滤, 筛选出符合条件的分组。select 从结果集中选择列,计算表达式和聚合函数。group by 按列分组,为聚合函数提供依据;
2025-07-10 13:36:20
186
原创 每日一SQL 【查询结果的质量和占比】
表示 “所有列”,但分组后每个组中除 managerId 外的其他列(如 id、name、department)可能有多个不同值。必须让不符合条件的值返回 NULL(COUNT 会忽略 NULL),符合条件的值返回非 NULL(如 1)。select,from,where,group by,order by,having, limit执行顺序。COUNT 的特性是:统计 “非 NULL 值” 的数量,而不是 “满足条件的值” 的数量。分组统计:按经理的 id 和 name 分组,统计每个经理的下属数量。
2025-07-10 13:36:05
474
原创 每日一SQL 【每月交易 I】
select,from,where,group by,order by,having, limit执行顺序。sum(case when…end): 对分组后的数据按照规则进行累计。date_format: 时间格式化函数。
2025-07-10 13:35:49
253
原创 每日一SQL 【至少有5名直接下属的经理】
select,from,where,group by,order by,having, limit执行顺序。过滤条件:通过 HAVING COUNT(e.id) >= 5 筛选出符合条件的经理。自连接:将 Employee 表分为两部分,e 表示下属,m 表示经理。分组统计:按经理的 id 和 name 分组,统计每个经理的下属数量。子查询:统计每个 managerId 对应的下属数量(COUNT(主查询:通过 WHERE e.id IN (…) >= 5 筛选出下属数量至少为 5 的经理 ID。
2025-07-09 22:42:39
174
原创 SpringCloud Sleuth+Nacos
核心功能:分布式追踪: 记录请求在微服务系统中的完整调用路径性能分析: 监控各服务节点间的调用耗时组件关系:Sleuth: 负责生成和收集链路数据Zipkin: 负责存储和展示链路数据典型场景:当客户端请求经过多个微服务节点(如A→B→C→D)时需要定位是AB间还是CD间的调用导致整体延迟架构位置:在微服务架构中同时承担服务注册中心和配置中心角色为业务服务集群提供基础支撑服务对比传统方案:相比单独使用Eureka+Config的方案更简洁。
2025-07-07 09:30:00
1330
原创 SpringCloud微服务 Eureka服务注册与发现
本来是服务消费者直接调用的服务提供者,但为了防止硬编码,能够实时获取最新服务地址,通过eureka注册中心,调用相应服务。依赖引⼊: 在member-service-provider-10000项⽬的pom.xml⽂件中引⼊spring-cloud-starter-netflix-eureka-client依赖。依赖引⼊: 在member-service-provider-10000项⽬的pom.xml⽂件中引⼊spring-cloud-starter-netflix-eureka-client依赖。
2025-06-30 12:01:21
1046
原创 SpringCloud Gateway
工厂类型:After:基于请求时间的"之后"断言Before:基于请求时间的"之前"断言Between:时间区间断言Cookie:检查请求CookieHeader:检查请求头Host:检查请求主机Method:检查请求方法(GET/POST等)Path:检查请求路径Query:检查查询参数RemoteAddr:检查远程地址Weight:权重路由核心特性:内置多种工厂类型:共11种标准断言工厂多属性匹配:每种工厂匹配HTTP请求的不同属性。
2025-06-30 12:00:49
1066
原创 SpringCloud Ribbon && OpenFeign
核⼼功能:Spring Cloud Ribbon是基于Netflix Ribbon实现的⼀套客户端负载均衡⼯具,主要提供负载均衡算法和服务调⽤功能。 实现原理:通过"负载均衡+RestTemplate调⽤"机制⼯作,在客户端本地缓存服务列表(默认30秒刷新),⾃动处理连接超时和重试机制。 配置特性:提供完善的客户端配置项,包括连接超时、重试次数等容错机制,默认采⽤轮询算法进⾏服务调⽤。
2025-06-30 11:59:49
889
原创 SpringCloud微服务-搭建基础环境
官网: https://spring.io/projects/spring-cloud1.没有微服务技术, 是不是程序员就不能开发大型项目?答: 是可以的, 对大型项目进行模块划分, 对各个模块进行实现, 模块之间更多的是以API调用完成, 耦合度较高, 不利于扩展和维护.2.思考, 标准的微服务解决方案(springcloud和cloud alibaba)出现的原因和价值是什么?答: (1)微服务可以根据业务不同, 将一个大项目, 分解成不同的服务(微服务, 比如搜索服务/网关服务/配置服务/存储服
2025-06-17 09:35:23
1032
原创 Shiro权限使用大全
Apache Shiro是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。在本系统中,Shiro主要用于实现权限控制,保护系统资源不被未授权的用户访问。
2025-05-31 11:33:00
861
原创 redis实战系列一:集成redis
用户访问次数是指系统记录每个用户被查看详情的次数,是一种简单而有效的数据统计方式。通过Redis的计数器功能,我们可以轻松实现这一功能,并且性能高效。
2025-05-26 08:00:00
1022
原创 Spring系列七:声明式事务
声明式事务和AOP有密切的联系, 是AOP的一个实际的应用.●分类1.编程式事务:示意代码, 传统方式try {//1.先设置事务不要自动提交//2.进行各种crud//多个表的修改, 添加, 删除//3.提交//4.回滚2.声明式事务:我们后面 以一个购买商品的系统为例来学习.
2025-04-28 14:09:17
938
原创 Spring系列六:JdbcTemplate
1.通过Spring可以配置数据源, 从而完成对数据表的操作2.是Spring提供的访问数据库的技术. 可以将JDBC的常用操作封装为模板方法. [类图]
2025-04-28 14:08:33
633
1
原创 Spring系列五:手动实现Spring底层机制 第三部分
bean后置处理器实现思路:先完成原生Spring 使用Bean后置处理器的案例, 然后实现自己的bean后置处理器在idea中, 输入, 搜索. 在zzw-spring项目里1.在包下定义接口. 实现该接口的Bean, 需要实现Bean初始化方法,👆2.实现这个接口在创建好Bean实例后, 判断是否需要进行初始化. 【编程心得: 容器中常用的一个方法是, 根据该类是否实现了某个接口, 来判断是否要执行某个业务逻辑, 这里其实就是java基础的接口编程实际应用】1.在类的createBean方法。
2025-04-28 14:06:51
613
原创 Spring系列五:手动实现Spring底层机制 第二部分
初始化bean单例池, 并完成getBean方法, createBean方法1.类中添加createBean方法2.类的构造器添加如下代码3.类的getBean()方法, 添加如下代码4.测试运行结果。
2025-04-28 14:06:04
330
原创 Spring系列四:AOP切面编程第五部分
1.Spring底层如何实现: IOC容器创建和初始化2.Spring底层如何实现: 根据 singleton, prototype来返回bean对象案例注入默认是单例注入, 标识了注解后代表多例1.修改2.测试3.运行结果。
2025-04-28 14:00:34
1034
原创 Spring系列四:AOP切面编程第四部分
前面我们是通过注解来配置aop的, 在spring中, 我们也可以通过xml的方式来配置AOP.项目目录结构, 文件夹对应不上的可以自己 添加或删除.包下 注意: 不要引错包。1.创建maven项目。❷基于XML配置方法。
2025-04-28 14:00:13
1053
原创 Spring系列四:AOP切面编程 第二部分
●什么是AOPAOP的全称(aspect oriented programming), 面向切面编程.●AOP实现方式1.基于动态代理的方式 [内置aop实现]2.使用框架aspectj来实现。
2025-04-28 13:59:00
697
原创 前后端分离: vue3+SpringBoot+ElementPlus+Axios+MyBatisPlus
🌟项目页面🌟技术栈:1.前端技术栈: Vue3+Axios+ElementPlus2.后端技术栈: SpringBoot+MyBatisPlus3.数据库: MySQL4.项目依赖管理: Maven5.分页: MyBatisPlus的分页插件6.切换数据源DruidDataSource7.在LambdaQueryWrapper 引出知识点 lambda方法引用的 类名::实例方法8.前端使用了axios关于request和respones的拦截器, 并且解决了跨域问题。
2025-04-28 11:39:54
2539
原创 springboot系列十五:SpringBoot整合MyBatis, MyBatis-Plus
1.Mybatis-Plus (简称 MP) 是一个 MyBatis 的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发,提高效率而生。2.强大的CRUD操作: 内置通用 Mapper,通过Service,通过少量配置即可实现表单大部分CRUD操作,更有强大的条件构造器,满足各类使用需求。
2025-03-12 09:45:35
1017
原创 springboot系列十四: 注入Servlet, Filter, Listener + 内置Tomcat配置和切换 + 数据库操作
1.考虑到实际需求, SpringBoot 可以将 Servlet, Filter, Listener 注入 Spring 容器, 成为 SpringBean.2.即 SpringBoot 开放了和原生 WEB 组件 (Servlet, Filter, Listener) 的兼容.1.SpringBoot支持的webServer:Tomcat,Jetty,Undertow。2.SpringBoot应用启动是Web应用时, web场景包-导入tomcat。
2025-02-19 15:36:54
824
原创 springboot系列十三: 异常处理
1.默认情况下,SpringBoot 提供 /error 处理所有错误的映射,当出现错误时,SpringBoot 底层会请求转发到 /error 这个映射。2.浏览器访问不存在的接口 http://localhost:8084/abc,响应 whitelabel 的错误试图,以 HTML 格式呈现给用户。注意: 配置登录拦截器时,先登录, 再测试3.SpringBoot底层默认由 DefaultErrorViewResolver 处理错误。debug->
2024-11-04 16:26:09
1303
2
原创 项目实战系列三: 家居购项目 第五部分
需求分析1.如果某家居库存为0, 首页的"Add to Cart" 按钮显示为"暂时缺货"2.后台也加上校验. 只有在 库存>0 时, 才能添加到购物车代码实现1.修改
2024-09-09 09:35:59
730
原创 项目实战系列三: 家居购项目 第三部分
文章目录🍃后台分页🍅后台分页导航🍃首页分页🍅首页分页导航🍅首页搜索🍅两个奇怪的问题🍅会员显示登录名🍅注销登录🍅验证码🍃后台分页程序框架图1.新建com.zzw.furns.entity.Page//Page是一个Javabean, 是一个分页的数据模型(包含了分页的各种信息)//T表示泛型, 因为将来分页模型对应的数据类型是不确定的public class Page<T> { //因为每页显示多少条记录, 是其它地方也可以使用的 public static fina
2024-09-06 11:18:16
1527
原创 项目实战系列三: 家居购项目 第二部分
2.在项目开发中, 同一个业务(模块), 一般对应一个Servlet即可, 比如LoginServlet, RegisterServlet, 都是在处理和会员相关的业务, 应当合并.1.如果处理一个请求, 就对应一个Servlet, 会造成Servlet文件太多, 不利于管理.1.请求添加家居, 请求FurnServlet的add方法, 将前端提交的数据封装到Furn对象。2.子类中没有doGet, doPost方法, 会调用父类的doGet, doPost.3.管理员点击家居管理, 显示所有家居信息。
2024-09-06 11:17:40
964
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人