- 博客(24)
- 收藏
- 关注
原创 Docker的介绍及应用
镜像结构镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。镜像是一个分层结构,每一层称为一个Layer:BaseImage层:包含基本系统函数库、环境变量、文件系统Entrypoint:入口,镜像中应用启动的命令其他:在BaseImage基础上添加依赖、安装程序,完成整个应用的安装和配置Dockerfile语法什么是DockerfileDockerfile就是一个文本文件,其中包含一个个的指令,用指令来说明要执行什么操作来构建,每一个指令都会形成一层Layer。
2024-04-24 19:55:59 1099 4
原创 缓存的使用及常见问题的解决方案
用户通过浏览器向我们发送请求,这个时候浏览器就会建立一个缓存,主要缓存一些静态资源(js、css、图片),这样做可以然后我们可以在Tomcat里面添加一些应用缓存,将一些从数据库查询到的数据放到缓存里面,下次的查询可以直接从缓存里面拿,这样做的目的可以数据库里面的索引数据也可以缓存起来,当我们根据索引查询数据时可以在内存里面快速检索,数据库做一些排序或者表关联的话会使用cpu做运算。这时候就会用到cpu的多级缓存。一个web应用的任何环节都可以添加缓存,但是这个缓存不能滥用。
2024-04-19 17:55:09 1178
原创 Redis的Java客户端
为了在反序列化时知到是对象类,JSON序列化器会将类的class类型写入json结果中,存入Redis,会带来额外的内存开销。为了节省空间,我们并不会使用JSON序列化器来处理value,而是统一使用String序列化器,要求只能存储String类型的key和value。当需要存储java对象时,SpringDataRedis是Spring中数据操作的模块,包含对各种数据的集成,其中Redis的集成模块叫做SpringDataRedis。3.读取Redis是吗,手动读取到的JSON反序列化为对象。
2024-04-11 08:50:12 803
原创 Redis的常见命令
单线程:每个命令具备原子性低延迟,速度快(基于内存、IO多路复用、良好的编码)支持数据持久化支持主从集群、分片集群支持多语言客户端Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样:KEYS:查看符合模板的所有key,KEYS *查询所有键,不建议在生产环境设备上使用,因为如果数据足够多,模糊匹配可能需要很长时间来查询,又因为Redis是一个单线程。因此不建议在主设备上使用。DEL:删除一个指定的key,DEL name,删除name,返回值是删除的数量,
2024-04-09 22:12:44 1046
原创 统一网关Gateway
请求进入网关后配到三类过滤器:当前路由过滤器、DefaultFilter、GlobalFilter,请求路由后,会将当前路由过滤器和DefaultFilter、GlobalFilter,合并到一个过滤器链(集合)中,排序后依次执行每个过滤器。概述:我们知道微服务启动的时候会向Nacos注册,并读取配置,微服务之间通过Feign进行调用,对于外界来说每一个微服务能直接通过ip+端口访问,这就使应用变得十分的不安全。(如果微服务最大流量是五百,那么网关就会对微服务限流,如果超过五百就会让请求等待或者返回)
2024-04-09 11:18:51 1042 3
原创 http客户端Feign
假如有多个消费者要都需要查询用户,传统的思维就是每一个消费者写有关Client,这样代码就重复了,使用我们可以将这些代码写进feign-api里面,如果想使用就引入依赖。的http客户端,官方地址:https://github.com/OpenFeign/feign 其作用是帮助我们优雅的实现http请求的发送,解决上面提到的问题。二、将order-service(我的一个消费者服务)中编写的UserClient、User、默认的Feign配置都复制到feign-api项目中。参数复杂的url难以维护。
2024-04-02 22:05:14 561 1
原创 Nacos注册中心
Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件,相对于Eureka功能更加丰富,在国内受欢迎程度高。Nacos安装地址。
2024-04-01 21:56:09 887
原创 Ribbon负载均衡
order-service在调用user-service时,发送请求的地址是 http://userservuce/user/1,显然这个地址并不是一个真实可用的地址,在发送该请求时,Ribbon会将此请求拦截下来,拿到服务名称之后,向eureka-server拉去userservice服务,eureka-server会返回两个服务列表(因为我的项目里面user-service有两个端口),然后Ribbon再去做负载均衡,从两个里面挑一个。这种方式无论是调用那种方式,都采用的是RandomRule。
2024-03-31 20:54:36 1210 1
原创 Eureka的使用场景
微服务技术的第一步就是对项目进行拆分,就是把一个单体项目,拆分成多个独立的项目,我们把这种独立的项目称为一个服务,一个大型的项目往往包含数百甚至上千的服务形成一个服务集群。如图:一个业务可能是由多个服务共同完成,例如服务A调用服务B,服务B调用服务C,当一个业务功能比较复杂的时候这些服务之间的调用关系就会变得越来越复杂,如图:这么复杂的关系如果单靠人来记录或者维护,那是非常困难的,想想都麻。因此微服务中一定会有一个组件来代替我们干这种事情,它就是。
2024-03-27 22:14:04 893 1
原创 错误:Invalid bound statement (not found): com.example.ssmzhenghe.demos.mapper.UserMapper
MapperScan(basePackages = "com.example.ssmzhenghe.demos.mapper")仔细检查过后发现不是mapper接口的问题,而是属性配置文件中xml的扫描路径写错了。mybatis.mapper-locations=classpath:mappers/*xml 我的mapper.xml文件所在的文件夹是mapper所以改过来就好了。mybatis.mapper-locations=classpath:mappers/*xml属性内容,重新启动一下就好了。
2024-03-24 12:25:39 172 1
原创 函数式Web
以前的处理方式是给类加上@Controller注解 然后通过 注解@RequestMapping进行路由匹配,匹配到之后执行业务代码,最后响应一个页面或者响应一个Json数据。这种@Controlller+@ResuestMapping 是耦合式的方式将路由和业务进行耦合。然而。
2024-03-24 11:18:06 508 1
原创 SpringBoot中的错误处理机制
如果匹配不到 精确码.html这些错误页面,就去找5XX.html,4XX.html如果有模板引擎,默认在classpath:/templates/error/5XX.html,4XX.html。如果没有模板引擎,在静态资源文件夹下找5XX.html,4XX.html。解析一个错误页,如果发生了500、503、404、403这些错误,如果有模板引擎,默认在classpath:/templates/error/精确码.html。如果模板引擎路径templates下有error.html页面,就直接渲染。
2024-03-23 20:52:55 703 1
原创 SpringBoot3内容协商特性
不同的客户端访问接口的时候需要返回的数据可能不同,要做到一个接口适配三种,可以通过写三个返回值不同的接口来实现,但是如果类似的接口基数比较打的话那么就得写几千上万个接口,在如果又需要新的返回数据的时候,所有的接口都得重新在加上一新的来适配新的需求。这样的话工作量十分庞大。因此就会用到SpringBoot的内容协商特性。
2024-03-22 21:43:02 344 1
原创 数据库的概述
1.为什么要使用数据库3.选择数据库作为存储介质的原因如果数据量足够庞大的话后续对应于数据库来说可以通过一些调优从而使查询得到优化。而如果放到文件里面可能这个文件都打不开。其次数据库存储的数据类型比较丰富。
2024-03-22 17:53:19 392 1
原创 SpringbootLogingApplication has been compiled by a more recent version of the Java Runtime
更新版本的 Java 运行时(类文件版本 61.0)编译,此版本的 Java 运行时仅识别最高 55.0 的类文件版本,大概意思是jdk版本不一致,jdk版本有点低,因为我使用的是springboot3,仅支持jdk17及以上的版本。后来查阅资料发信返回值是String需要加上@ResponseBody注解,然后重启一下项目就没问题了。1.在我们的SpringbootLogingApplication主类里面,右键--->更多运行设置--->修改运行配置。后来又碰到了进入到方法里面了却报404错误。
2024-03-20 21:28:54 445 1
原创 SpringBoot是怎么将日志配置好的
日志门面好比是在进行数据库连接是的JDBC面向接口编程,真正对数据库进行操作的是驱动(driver)。SpringBoot默认使用的是SL4j + logback。日志功能的实现并不是表格展示的对应关系,而是一个日志门面,一个日志实现的任意组合。日志所有的配置都可以通过修改配置文件实现,以logging 开始的所有配置。
2024-03-20 20:47:14 321 1
原创 SpringBoot自动配置的完整流程
最近在仔细研究SpringBoot,通过学习了解了SpringBoot自动配置的过程,可以完美解答:为什么通过Spring Initializr 引入对应的场景(例如:springboot-starter-web),然后写好业务项目就可以跑起来?所以只要包下所有的类都生效,那么就可以回答第一个问题了,以为这些配置类给我们做了整合操作,但是springboot默认只扫描主类所在的包以及它的子包,那么上面的类并不能被springboot扫描到,组件也不能放进容器,事实并不是这样,我们接着往下看。
2024-03-20 16:16:06 924 1
原创 java: 无法访问org.springframework.boot.SpringApplication(已解决)
点击构建、执行、部署--->点击Java编译器--->点击目标字码版本(图片右侧)--->选择17。打包完成后jar包就在target文件夹里面。pom文件的内容也改成17,问题就解决了。
2024-03-19 21:46:45 405
原创 Requirement already satisfied: httpx>=0.23.0 in d:\pycharm\lib\site-packages (from zhipuai) (0.27.0)
清华大学镜像源:https://pypi.tuna.tsinghua.edu.cn/simple。华为云镜像源:https://repo.huaweicloud.com/pypi/simple/b:点击项目->Python解释器->点击加号(+)->搜索要安装的包的名字->点击安装包,然后就不爆红了。阿里云镜像源:https://mirrors.aliyun.com/pypi/simple/163镜像源:https://mirrors.163.com/pypi/simple/
2024-03-19 17:25:35 243 2
原创 95% emitting CompressionPlugin ERROR Error: error:0308010C:digital envelope routines::unsupported
nodejs V17 版本发布了 OpenSSL3.0 对算法和秘钥大小增加了更为严格的限制,nodeJs v17 之前版本没影响,但 V17 和之后版本会出现这个错误 我的版本是18.15.0。在进行诺依(前后端分离版)部署的过程中,启动前端运行 npm run dev时报以下错误。修改dev、build:prod的值为。
2024-03-16 10:35:37 466 1
原创 Spring的基于配置类的ioc和di
ComponentScan(basePackages = "org.example")的作用等同于@Autowired进行依赖注入解决了上述问题,而且也不需要对应的set方法,但是第三方的jar包的对象并不能通过这种方式实例化,例如 DruidDataSource、spring的ioc(控制反转)和di(依赖注入)的方法有:xml配置文件、注解法、配置类。
2024-03-14 20:12:32 123 2
原创 使用JdbcTemplate的query方法查询多个对象的异常
BeanPropertyRowMapper的构造参数问题。加上Student.class就可以了。
2024-03-13 11:21:50 347
原创 MySQL题目集锦
我的答案:2分正确答案:答案解析:无A. 存储过程B. 视图C. 触发器D. 索引我的答案:C:触发器;正确答案:C:触发器;2分我的答案:2分正确答案:DEFAULT答案解析:无我的答案:0分(1) 隔离级别正确答案:答案解析:无我的答案:2分(1) 参照完整性正确答案:(1) 参照完整性;答案解析:无。
2024-03-13 11:07:31 1634
这是一个使用eclips开发的纯servlet的客户端加管理员后台的学员综合管理系统 (声明:该项目的客户端是仿的)
2024-03-20
Mabatis动态代理怎么解决Dao的实现层的依赖注入问题
2024-04-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人