自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (1)
  • 收藏
  • 关注

原创 一些有用的网址(持续更新...)

JSON格式校验 :http://www.bejson.com/

2020-11-29 21:55:21 476

原创 IDEA快捷键记录( 持续更新...)

Ctrl + F12 可以把当前类里的方法内容按列表形式展现出来。Ctrl + Shift + F 全局查找某个代码Shift + Shift 全局查找某个文件调试:F7 步入 ,F8 步过 ,F9 跳过Alt + Insert 可以生成构造器/Getter/Setter等Alt + Enter IntelliJ IDEA 根据光标所在问题,提供快速修复选择,光标放在的位置不同提示的结果也不同Ctrl+Alt+T 可以把代码包在一个块内,例如:try/catch注:idea快.

2020-11-28 22:36:53 140

原创 Redis进阶(三)--Redis高性能底层原理

Redlock 只有建立在「时钟正确」的前提下,才能正常工作,如果你可以保证这个前提,那么可以拿来使用。但是时钟偏移在现实中是存在的:第一,从硬件角度来说,时钟发生偏移是时有发生,无法避免。例如,CPU 温度、机器负载、芯片材料都是有可能导致时钟发生偏移的。第二,人为错误也是很难完全避免的。所以,Redlock尽量不用它,而且它的性能不如单机版 Redis,部署成本也高,优先考虑使用主从+ 哨兵的模式实现分布式锁(只会有很小的记录发生主从切换时的锁丢失问题)。

2024-09-06 16:22:10 567

原创 Redis进阶(二)--Redis高级特性和应用

足够简单,消费消息延迟几乎为零,但是需要处理空闲连接的问题。如果线程一直阻塞在那里,Redis客户端的连接就成了闲置连接,闲置过久,服务器一般会主动断开连接,减少闲置资源占用,这个时候blpop和brpop或抛出异常,所以在编写客户端消费者的时候要小心,如果捕获到异常,还有重试。其他缺点包括:做消费者确认ACK麻烦,不能保证消费者消费消息后是否成功处理的问题(宕机或处理异常等),通常需要维护一个Pending列表,保证消息处理确认;不能做广播模式,如pub/sub,消息发布/订阅模型;

2024-09-04 16:57:11 1050

原创 Redis进阶(一)--Redis入门与应用

Redis一个开源的基于键值对(Key-Value)NoSQL数据库。使用ANSI C语言编写、支持网络、基于内存但支持持久化。性能优秀,并提供多种语言的API。我们要首先理解一点,我们把Redis称为KV数据库,键值对数据库,那就可以把Redis内部的存储视为存在着一个巨大的Map,对Map的操作无非就是get和put,然后通过key操作这个key所对应的value,而这个value的类型可以多种多样,也就是Redis为我们提供的那些数据结构,比如字符串(String)、哈希(Hash)等等。

2024-09-03 15:48:15 687

原创 SpringBoot应用

Spring是一个开源的Java开发框架,是由Rod Johnson创建的。它提供了一种简化Java开发的方式,通过提供一系列的组件和工具来帮助开发者构建高效、可扩展的应用程序。spring官网地址:https://spring.io/Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

2024-05-15 15:34:20 384

原创 SpringSecurity应用

Spring Security是一个高度自定义的安全框架。利用Spring IoC/DI和AOP功能,为系统提供了声明式安全访问控制功能,减少了为系统安全而编写大量重复代码的工作。​两个应用程序的两个主要区域是“认证”和“授权”(或者访问控制),这两点也是Spring Security重要核心功能。“认证”是建立一个他声明的主体的过程,通俗点说就是系统认为用户是否能登录。“授权”指确定一个主体是否允许在你的应用程序执行一个动作的过程,通俗点讲就是系统判断用户是否有权限去做某些事情。

2024-05-09 17:57:06 416

原创 Java基础(三)--常用工具类

包含Java异常、包装类、String类、集合、泛型、输入输出流、多线程等内容入门。

2024-04-13 22:28:55 682

原创 Java基础(二)-- 面向对象

万物皆对象、客观存在的事物。对象:用来描述客观事物的一个实体,由一组属性和方法构成。人关注对象人关注事物信息类是模子,确定对象将会拥有的特征(属性)和行为(方法)。类的特点:类是对象的类型。具有相同属性和方法的一组对象的集合。属性:对象具有的各种静态特征。“有什么”方法:对象具有的各种动态行为“能做什么”package 包名;例:package com.ql.animal;1、必须放在Java源文件中的第一行。

2024-04-13 21:39:03 1059

原创 Java基础(一)--语法入门

Java是一门面向对象的程序设计语言。1995年由sun公司发布。2010年sun公司被Oracle公司收购,然后发布了java8版本。

2024-04-13 15:35:56 944

原创 多线程与高并发(1)- 线程基础、并发特性、锁、JUC工具

文章目录第一章、线程基础知识一、基础概念1、什么是程序?2、什么是进程?3、什么是线程?4、什么是线程的切换(Context Switch)?5、单核CPU 设定多线程是否有意义?6、工作线程数是不是设置的越大越好?7、工作线程数(线程池中线程数量)设多少合适?二、创建线程的3 种方法1、继承Thread类 重写run方法2、实现Runnable接口 重写run方法3、实现Callable 重写call方法,配合FutureTask4、基于线程池构建线程三、线程状态四、线程的常用方法1、获取当前线程2、线程

2024-02-28 11:41:26 975 1

原创 Java框架(九)--Spring Boot入门(2)

我们在application.yml中添加文件上传的相关配置spring : servlet : multipart : max-file-size : 200KB # 文件上传大小的限制,设置最大值,不能超过,否则报错 max-request-size : 2MB # 文件最大请求限制,用于批量启动项目,浏览器访问http://localhost:8090/test.html上传一个大于200KB的图片现在报异常之后,页面展示的不友好,所以我们需要自定义一个异常页面。

2023-08-03 21:32:16 245

原创 Java框架(九)--Spring Boot入门(1)

MavenSpringMVC理念在src/main/resources目录下创建MyConfig.properties属性文件user.username = Tom user.age = 21 user.sex = 男然后在com.ql.springbootlearn.pojo包下创建MyConfig.java类return age;return sex;return sex;} }

2023-08-03 21:31:06 342

原创 消息队列(一)-- RabbitMQ入门(4)

即使是持久化的消息,在被写入磁盘的同时也会在内存中驻留一份备份。消费者在消费MQ 中的消息时,MQ 已经把消息发送给消费者,消费者在给 MQ 返回 ack 时网络中断,故MQ 未收到确认消息,该消息会重新发给其他消费者,或网络重新连接后再次发给该消费者,但是实际上该消息已被消费过了,造成消费者重复消费同一条消息。引入镜像队列(Mirror Queue)的机制,可以将队列镜像到集群中的其他 Broker 节点之上,如果集群中的一个节点失效了,队列能自动地切换到镜像中的另一个节点上,保证服务的可用性。

2023-07-25 19:25:50 302

原创 消息队列(一)-- RabbitMQ入门(3)

延迟队列是用来存放需要在指定时间被处理的元素的队列。队列内部是有序的,最重要的特性就体现在它的延时属性上。使用场景:订单在十分钟之内未支付则自动取消。新建一个SpringBoot的Module添加依赖修改配置文件添加Swagger配置类队列TTL创建两个队列QA和QB,两者队列TTL分别设置为10S和40S,然后在创建一个交换机X和死信交换机Y,它们类型都是direct,创建一个死信队列QD,绑定关系如下图配置文件类生产者消费者运行项目,浏览器输入http://localhost:

2023-07-25 19:25:16 181

原创 消息队列(一)-- RabbitMQ入门(2)

producer 将消息投递到 broker 或者直接到 queue 里了,有些时候由于特定原因导致 queue 中的某些消息无法被消费,这些消息若没有后续的处理,就变成了死信,有了死信自然就有了死信队列。图中,生产者发布消息到 Exchange 上,绑定键为 orange 的消息会被发布到队列 Q1,绑定键为 black、green 的消息会被发布到队列 Q2。应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列中。

2023-07-25 19:24:37 152

原创 消息队列(一)-- RabbitMQ入门(1)

RabbitMQ 一旦向消费者传递一条消息,便立即将该消息标记为删除,这种情况下,突然有个消息挂掉了,将会丢失正在处理的消息。为了保证消息在发送过程中不丢失,RabbitMQ 引入消息应答机制,消息应答就是:消费者在接收到消息并且处理该消息之后,告诉 RabbitMQ 它已经处理了,RabbitMQ 可以把该消息删除了。工作队列模式(又称任务队列)的主要思想是,当有资源密集型任务,把任务封装为消息,并将其发送到队列,由一个或多个工作线程将任务轮询弹出并执行。上面情形,只会应答 8 的消息。

2023-07-25 19:23:35 1455

原创 服务器技术(三)--Nginx

Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。HTTP的反向代理服务器正向代理正向代理是在我们的客户端和服务器之间加了一个代理服务器。客户端把信息传到代理服务器上,代理服务器代替客户端,把请求信息转发,如百度、银行、文件服务等,然后把结果返回给客户端。

2023-06-27 20:50:38 3591 1

原创 Java语法进阶及常用技术(八)--线程池

--- 软件中的“池”,可以理解为计划经济。我们的资源是有限的,比如只有十个线程,我们创造十个线程的线程池,可能我们的任务非常多,如1000个任务,我们就把1000个任务放到我们十个线程中去,慢慢的去执行,最终会执行完所有任务。但是资源总量十个线程是被控制住的,还有就是不需要再创建更多的线程了,创建线程是有一定的开销的。所以我们复用线程池的这十个线程,每个线程的执行效率也会提高。如果不适用线程池,每个任务都新开一个线程处理。

2023-06-11 16:46:56 556

原创 Java项目(三)-- SSM开发社交网站(9)--后台图书管理功能

基于javascript与css开发是Web富文本编辑器,轻量、简洁、易用、开源免费。代码演示我们在test.ftl中添加富文本编辑器演示下运行项目,在浏览器中访问http://localhost:8080/test/t1首先,打开pom.xml文件,引入Spring MVC文件上传底层依赖和Json Html解析组件,并发布到lib包打开BookService.java新增创建新的图书的方法,并在BookServiceImpl.java类中添加相应的方法实现。然后在com.ql.reader

2022-11-06 16:30:28 608 2

原创 Java项目(三)-- SSM开发社交网站(8)--实现会员交互功能

然后打开MemberService.java添加获得阅读状态方法,并在MemberServiceImpl.java添加相应方法实现。打开MemberService.java添加更新阅读状态方法,并在MemberServiceImpl.java添加相应方法实现。然后在com.ql.reader.task包下创建ComputeTask.java编写自动计算任务代码。

2022-11-06 16:26:54 432

原创 Java项目(三)-- SSM开发社交网站(7)--会员注册与登录

首先,为了业务方法返回错误信息格式的统一,我们在com.ql.reader.service.exception包下创建一个自定义异常:会员注册时需要对密码MD5加密存储,所以在com.ql.reader.utils包下创建MD5工具类接下来开始写注册业务逻辑,在com.ql.reader.service包下创建会员业务接口,并且在com.ql.reader.service.impl包下创建它的实现类在src/test/java/com/ql/reader/service/impl目录下生成测试用例,

2022-11-06 16:20:50 832

原创 Java项目(三)-- SSM开发社交网站(6)--Kaptcha验证码的配置与使用

Kaptcha验证码组件Kaptcha是谷歌开源的可高度配置的实用验证码生成工具。通过Kaptcha可阻拦大多数机器人脚本操作Kaptcha典型应用于注册、登录、重要信息提交等用户交互。Kaptcha使用步骤Kaptcha配置验证码生成参数。开发KaptchaController生成验证码图片。将前台输入验证码与session保存的验证码进行比对。代码演示首先打开pom.xml文件,引入Kaptcha依赖打开applicationContext.xml添加Kaptcha配置然后在com

2022-11-06 16:16:25 558

原创 Java项目(三)-- SSM开发社交网站(5)--多条件查询及实现图书详情页

首先给BookService.java的paging方法添加两个参数然后修改它实现类BookServiceImpl然后修改测试用例进行测试然后修改BookController控制器的代码前端调用代码为运行项目测试首先在BookService接口中添加根据图书编号查询图书对象的方法然后在它的实现类BookServiceImpl中添加方法实现然后在BookController中添加跳转图书详细页的方法在src/main/webapp/WEB-INF/ftl目录中新增detail.ftl文件

2022-11-06 16:12:05 774 1

原创 Java项目(三)-- SSM开发社交网站(4)--实现图书类别和图书分页查询

首先,在src/main/webapp目录下创建images、resources、upload三个目录,且在resources目录下引入bootstrap、layui、jquery等前端插件BootstrapBootstrap是全球最受欢迎的前端组件库,由推特(TWitter)开源。Bootstrap用于开发响应式布局、移动设备优先的WEB项目。Bootstrap提供完整的HTML、CSS和JS开发工具集。Bootstrap中文网在src/main/webapp/WEB-INF/ftl目录下创建

2022-11-06 16:02:50 432

原创 Java项目(三)-- SSM开发社交网站(3)--整合MyBatis-Plus及书评网数据库表设计

在src/test/java/com/ql/reader目录下创建测试类MyBatisPlusTest.java。打开com.ql.reader.mapper包下的TestMapper.java修改内容为。同时修改src/main/resources/mappers目录下的test.xml文件。在com.ql.reader.entity包下创建实体类Test.java。MyBatis-Plus(简称MP)是一个MyBatis的增强工具。@TableId - 说明对应属性是表的主键。分类表category。

2022-11-06 15:56:35 386

原创 Java项目(三)-- SSM开发社交网站(2)--SSM整合之Spring与MyBatis及其他组件整合

因此,MyBatis提供了一个组件名为mybatis-spring,这个组件个主要功能为,不再需要手动初始化SqlSessionFactory对象,取而代之的通过Spring IoC容器中进行简单的配置,就可以让Spring IoC容器在初始化的时候自动的创建SqlSessionFactory对象,同时该对象被IoC容器进行管理,这样基于Spring AOP很多扩展的功能都可以应用在MyBatis的这些组件之上了。打开applicationContext.xml首先添加事务相关命名空间,然后添加事务配置。

2022-11-06 15:53:15 190

原创 Java项目(三)-- SSM开发社交网站(1)--SSM整合之Spring与Spring MVC环境配置

通过Spring IoC容器管理第三方框架对象,让多框架形成整体。Spring/Spring MVC/MyBatis是业内最主流的框架搭配。SSM配置与使用是所有Java工程师必须掌握的技能。

2022-11-06 15:49:52 312

原创 Java项目(二)--Springboot + ElasticSearch 构建博客检索系统(4)- SpringBoot集成ES

打开IDEA,点击New Project新建项目,点击Spring Initializr配置如下,点击Next。然后在New Project界面配置如下,然后点击Finish。注意生成项目的Springboot版本为2.7.4,为了避免本教程的配置过时报错,我们把Springboot版本改为2.2.0.RELEASE。打开src/main/resources/application.properties添加配置信息为启动项目成功。首先在com.ql.springboot.es.entity

2022-10-03 19:56:02 2156

原创 Java项目(二)--Springboot + ElasticSearch 构建博客检索系统(3)- 分词器介绍

ES作为全文检索服务,势必要对原始的文本进行内容的拆分,才能进行有效的索引。而拆分原始内容到一个一个小的词,或语义单元,这部分的功能由ES的分词器去完成的。

2022-10-03 19:55:16 1345

原创 Java项目(二)--Springboot + ElasticSearch 构建博客检索系统(2)- 博客网站全文检索实现思路

但是搜索的业务场景是一种模糊匹配,且并不知道用户会输入什么样的字符,没办法对用户输入的数据做哈希或者其他数据分片的算法,从而也就无法实现单库节点的准确映射,从而对后端的所有节点全部做一次全表扫描,再由中间件处理返回结果,这个时候结果过滤的阶段,查询效率就会更加的低。与此同时,任何节点都可以成为主节点。:全量同步之后,MySQL产生新的数据,包括新插入的数据、以前的老数据得到Update、以前的老数据得到Delete,这三种情况同样的需要同步到ES的Index里面去,然后让他对应的去做新增、更新、删除。

2022-10-03 19:53:47 1335

原创 Java项目(二)--Springboot + ElasticSearch 构建博客检索系统(1)- 技术栈及初识Elasticsearch

Elasticsearch可以在单点运行,也可以在多节点的集群之上运行,索引的数据通过ES的sharding(分片算法)散列在不同的节点之上,从而实现了高可用,负载均衡的分布式的搜索服务。搜索数据-person-name:GET localhost:9200/person/_doc/_search?搜索数据-person-id:GET localhost:9200/person/_doc/1。新增数据-person-1:PUT localhost:9200/person/_doc/1。

2022-10-03 19:52:34 654

原创 Elastic Stack从入门到实践(一)--Elastic Stack入门(3)--Logstash入门与Elastic Stack实战

Data Shipper (不是轻量级的,比beat占用更多资源)Logstash担任了ETL的角色,它会对数据进行提取Extract、转换Transform、对外的输出Load处理流程处理流程 – Input和Output配置处理流程 – Filter配置Grok:基于正则表达式提供了丰富可重用的模式(pattern),基于此可以将非结构化数据作结构化处理。Date:将字符串类型的时间字段转换为时间戳类型,方便后续数据处理。

2022-09-15 21:47:48 422

原创 Elastic Stack从入门到实践(一)--Elastic Stack入门(2)--Beats、Filebea入门

Lightweight Data Shipper (轻量级数据传送者)Filebeat日志文件Metricbeat度量数据(可以收集cpu数据、内存、磁盘、常用软件Nginx、MySQL等的度量指标)Packetbeat网络数据(抓包、分析服务器的网络数据传输等)WinlogbeatWindows 数据Heartbeat健康检查处理流程输入Input处理Filter输出OutputProspector探矿者,针对配置的日志文件探测文件有没有变化;一个Filebeat可以有多个Prospector。

2022-09-15 21:47:15 324

原创 Elastic Stack从入门到实践(一)--Elastic Stack入门(1)--Elasticsearch与Kibana入门

也可以访问http://localhost:9200/_cat/nodes?v或http://localhost:9200/_cluster/stats看看集群情况。浏览器访问http://localhost:5601/后点击Dev Tools然后在页面点击Get to work。server.host/server.port 访问 kibana 用的地址和端口。浏览器访问 http://localhost:9200/ 表示运行成功。浏览器访问http://localhost:5601/

2022-09-15 21:46:44 276

原创 Java框架(八)--SpringMVC拦截器

运行工程,在浏览器地址栏中输入http://localhost:8080/restful/persons,控制台中会输出。运行工程,在浏览器中访问http://localhost:8080/restful/persons控制台输出为。运行项目浏览器中访问http://localhost:8080/restful/persons响应结果为。修改com.ql.restful.interceptor包下的MyInterceptor拦截器。在applicationContext.xml中配置拦截器。

2022-09-05 22:22:06 1974

原创 Java框架(七)-- RESTful风格的应用

RestController在Controller类上添加,替换@Controller注解,让每个方法放回json数据,方法上无需再用@ResponseBody注解。在com.ql.restful.controller包下创建RestfulController.java类。启动项目,在浏览器地址栏中输入http://localhost:8080/restful/request。在webapp目录下引入jquery-3.6.0.min.js,并在该目录创建client.html。...

2022-08-25 19:05:23 989

原创 Java框架(六)-- SpringMVC(2)--SpringMVC其他应用

一旦加入了全局时间参数转换器,即使时间参数前面加了@DateTimeFormat注解,SpringMVC还是优先使用转换器类实现转换工作,所以全局时间参数转换器和@DateTimeFormat注解只能二者选其一。修改实体类User,接受日期格式参数时,参数前面需要加@DateTimeFormat注解并指定格式,不然无法接受参数。修改接受方法为,接受日期格式参数时,参数前面需要加@DateTimeFormat注解并指定格式,不然无法接受参数。修改form.html表单内容。修改index.html。...

2022-07-17 22:56:08 157

原创 Java框架(六)-- SpringMVC(1)--SpringMVC入门级数据绑定

SpringMVC是Spring体系的轻量级WebMVC框架。SpringMVC的核心Controller控制器,用于处理请求,产生响应。SpringMVC基于SpringIOC容器运行,所有对象被IOC管理。

2022-07-17 22:53:17 173 1

原创 Java框架(五)-- Spring事务(2)--事务管理

事务是以一种可靠的、一致的方式,访问和操作数据库的程序单元。说人话要么把事情做完,要么什么都不做,不要做一半。事务依赖于数据库实现,MySQL通过事务区作为数据缓冲地带。

2022-07-17 22:51:08 513

某培训机构UI前端知识大纲

某培训机构UI前端知识大纲,零基础可以看,里面有PS到前端知识的精髓!

2018-03-14

空空如也

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

TA关注的人

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