框架
文章平均质量分 54
Strong_shady
这个作者很懒,什么都没留下…
展开
-
★ElasticSearch07高级搜索--多字段查询--布尔查询--agg聚合查询--subagg子聚合
一。多字段查询QueryString流程:会对查询条件进行分词。然后将分词后的查询条件和词条进行等值匹配默认取并集(OR)可以指定多个查询字段1.1 restAPI例:在title和brandName字段中都包含“小米手机”分词字样的话,都查出来:GET goods/_search{ "query": { "query_string": { "fields": ["title","categoryName","brandName"], "query"原创 2021-08-25 13:37:28 · 1039 阅读 · 1 评论 -
★ElasticSearch06高级搜索--模糊查询--范围查询--排序
一。模糊查询背景:查询手机颜色是“象牙白”的手机GET goods/_search{ "query": { "match": { "title": "象" } }}结果查不到,而title为“象牙白”才可以查到,因为:倒排索引表中对应“的没有关联文档。1.1restAPI模糊查询1.1.1 wildcardwildcard:直接去倒排索引表中找 ”象??“的分词:象牙白,象牙红…GET /goods/_search{ "query": {原创 2021-08-24 22:48:29 · 434 阅读 · 0 评论 -
★ElasticSearch05高级搜索--matchAll--term查询--★match全文检索(常用)
一。matchAll注:只有ES发Get请求把请求放在请求体里1.2搜索并分页:ES默认只返回十条数据,但是可以手动设置显示多少条GET /goods/_search{ "query": { "match_all": {} }, "from": 0, //从第一条查 "size": 11 //查11条}1.2搜索分页–javaAPI@Test public void testMatchAllByPage() throws IOException {//原创 2021-08-24 16:57:25 · 340 阅读 · 0 评论 -
ElasticSearch04--批量操作bulk--mysql数据导入ES
Bulk 批量操作是将文档的增删改查一些列操作,通过一次请求全都做完。减少网络传输次数。原创 2021-08-24 11:50:43 · 433 阅读 · 0 评论 -
ElasticSearch03-java操作restAPI
一。创建索引和添加mapping(一般由运维建立,java中不用像测试方法中那样麻烦的去写,一般就复制方式一):1.启动类@SpringBootApplicationpublic class EstestApplication { public static void main(String[] args) { SpringApplication.run(EstestApplication.class, args); } @Value("${es.host}原创 2021-08-23 20:30:41 · 310 阅读 · 0 评论 -
ElasticSearch02--IK分词器--★全文检索
背景:ES自带的分词器只适合英文,因为英文语法使用空格进行分词。但是中文不是。所以国人开发了这款中文分词器:IK安装步骤略一。ik_max_word分词器GET _analyze{ "text":"我们在夏季的花海", "analyzer": "ik_max_word"}显示结果:{ "tokens" : [ { "token" : "我们", "start_offset" : 0, "end_offset" : 2, "原创 2021-08-23 11:31:42 · 344 阅读 · 0 评论 -
ElasticSearch-01--Kibana控制台进行RestAPI的CRUD
索引CRUD注:ES没有post!!!PUT /personGET /personDELETE /personput /log-20210822PUT /log-20200822/POST /log-20200822/_close (关闭日志)POST /log-20200822/_open (打开日志)原创 2021-08-22 22:44:16 · 188 阅读 · 0 评论 -
RabbitMQ-高级特性3--死信队列3种方式--★延迟队列(重要)
DLX:死信交换机消息成为死信的三种情况:超长、超时、拒收队列消息长度到达限制(应用:一个消费者处理不了的消息,通过设置死信,转移给另一个消费者处理。分担机器压力);消费者拒接消费消息,basicNack/basicReject,并且不把消息重新放入原目标队列,requeue=false;原队列存在消息过期设置,消息到达超时时间未被消费;*死信交换机和死信队列和普通的没有区别*当消息成为死信后,如果该队列绑定了死信交换机,则消息会被死信交换机重新路由到死信队列生产方模块代码:1.声明死.原创 2021-08-21 23:34:49 · 242 阅读 · 0 评论 -
RabbitMQ-高级特性2--消费者手动确认--消费者限流--TTL存活时间
如何保证消息的高可靠性传输?1.持久化• exchange要持久化• queue要持久化• message要持久化2.生产方确认Confirm return3.消费方确认Ack4.Broker高可用:启多台机器1.消费者手动确认配置文件:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="ht原创 2021-08-21 17:22:49 · 315 阅读 · 2 评论 -
RabbitMQ-高级特性1--生产者确认模式--生产者退回模式
消息可靠性:原创 2021-08-21 13:17:00 · 264 阅读 · 0 评论 -
RabbitMQ-springboot整合
配置类:@Configurationpublic class RabbitConfig { public static final String GUANGZHOU_XIAOZHANG_QUEUE="guangzhou_xiaozhang_queue"; public static final String ZONGBU_CAIWU_QUEUE="zongbu_caiwu_queue"; public static final String TOPIC_EXCHANGE="to原创 2021-08-20 17:38:34 · 59 阅读 · 0 评论 -
RabbitMQ--简单模式-工作队列模式-订阅发布模式-路由模式-通配符模式
原理图原生生产者代码/** * 简单模式:发送消息 */public class Producer { static final String QUEUE_NAME = "simple_queue"; public static void main(String[] args) throws Exception { //1. 创建连接工厂(设置RabbitMQ的连接参数); ConnectionFactory connectionFactory原创 2021-08-19 19:30:18 · 234 阅读 · 0 评论 -
springcloud-gateway网关
背景、概念不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下的问题:客户端会多次请求不同的微服务,增加了客户端的复杂性存在跨域请求,在一定场景下处理相对复杂认证复杂,每个服务都需要独立认证难以重构,随着项目的迭代,可能需要重新划分微服务。例如,可能将多个服务合并成一个或者将一个服务拆分成多个。如果客户端直接与微服务通信,那么重构将会很难实施主要功能:过滤+路由网关是介于客户端和服务器端之间的中间层,所有原创 2021-08-14 18:27:30 · 139 阅读 · 0 评论 -
RocketMQ--高级特性02
高可用nameserver无状态+全服务器注册消息服务器主从架构(2M-2S)消息生产生产者将相同的topic绑定到多个group组,保障master挂掉后,其他master仍可正常进行消 息接收消息消费RocketMQ自身会根据master的压力确认是否由master承担消息读取的功能,当master繁忙 时候,自动切换由slave承担数据读取的工作(读写分离)主从数据复制:同步复制master接到消息后,先复制到slave,然后反馈给生产者写操作成原创 2021-08-12 13:28:20 · 219 阅读 · 0 评论 -
RocketMQ--高级特性01
消息存储特性、介质存储:消息生成者发送消息到MQMQ收到消息,将消息进行持久化,存储该消息MQ返回ACK给生产者MQ push 消息给对应的消费者消息消费者返回ACK给MQMQ删除消息注意:第⑤步MQ在指定时间内接到消息消费者返回ACK,MQ认定消息消费成功,执行⑥第⑤步MQ在指定时间内未接到消息消费者返回ACK,MQ认定消息消费失败,重新执行④⑤⑥存储介质:数据库ActiveMQ缺点:数据库瓶颈将成为MQ瓶颈文件系统RocketMQ/Kafka/Rabbit原创 2021-08-12 09:38:54 · 92 阅读 · 0 评论 -
RocketMQ--事务
1.概念:参考你兄弟借钱你管你老婆要的现实。。:事务消息状态提交状态:允许进入队列,此消息与非事务消息无区别(爽快借出!)回滚状态:不允许进入队列,此消息等同于未发送过(直接回复不借!)中间状态:完成了half消息的发送,未对MQ进行二次状态确认(拖着不回复)注意:事务消息仅与生产者有关,与消费者无关2.代码:注意:别关生产者!!!生产者(事务正常过程和补偿过程逻辑自写):public class Producer { public static void main(Str原创 2021-08-10 17:17:32 · 86 阅读 · 0 评论 -
RocketMQ--springbooot整合样例演示--解决消息乱序问题
生产者-消费者:依赖、实体类略生产者controller:@RestController@RequestMapping("/demo")public class SendController { @Autowired RocketMQTemplate rocketMQTemplate; //模板类: 和第三方软件建连接及断链接 redisTemplate jdbcTemplate kafkaTemplate @GetMapping("/send") public原创 2021-08-10 14:41:02 · 323 阅读 · 0 评论 -
RocketMq--单生产者多消费者--多生产者多消费者--消息类型及过滤
单产多费(1)注意:不同的组之间,订阅的topic一样,每组收到的消息数一样多且无争抢,类似广播。生产者://1.创建一个发送消息的对象Producer DefaultMQProducer producer = new DefaultMQProducer("group1"); //2.设定发送的命名服务器地址 producer.setNamesrvAddr("localhost:9876"); //3.1启动发送的服务 p原创 2021-08-09 23:53:14 · 2799 阅读 · 0 评论 -
RocketMq--概念--简单生产消费java代码
何为消息:服务器间的业务请求原始架构:服务器中的A功能需要调用B、C模块才能完成,这些都是耦合模块,一个模块出问题或模块之间连接坏掉,则整体坏掉微服务架构:服务器A向服务器B发送要执行的操作(视为消息)服务器A向服务器C发送要执行的操作(视为消息)MQ作用优势:1.应用解耦(提高系统可维护性,容错性)2.异步提速(每个服务都在并行做自己的事,执行时间互不影响,提升用户体验和系统吞吐量)3.削峰填谷(提高系统稳定性,将短时间内暴增的数据平缓流动,不会造成短时间内数原创 2021-08-09 16:36:42 · 260 阅读 · 0 评论 -
Quartz--简单案例演示
读取excel @Test public void test1() throws Exception { //拿到工作薄 XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream(new File("D:\\course\\传智健康2.0\\day05\\资源\\test.xlsx"))); //获取工作表,既可以根据工作表的顺序获取,也可以根据工作表的名称获取 XSSF原创 2021-07-29 10:54:36 · 95 阅读 · 0 评论 -
Quartz定时任务组件结合redis--定期删除图片
任务类:public class ClearImgJob { @Autowired private JedisPool jedisPool; /** * 定时清理垃圾图片 */ public void clearImg(){//★根据redis两个set集合进行差值计算,得到垃圾图片名称集合 Set<String> set = jedisPool.getResource(). sdiff(R原创 2021-07-29 09:57:29 · 306 阅读 · 0 评论 -
zookeeper--模拟买票代码
主类public class Ticket12306 implements Runnable{ private int tickets = 10;//数据库的票数 private InterProcessMutex lock ; public Ticket12306(){ //重试策略 RetryPolicy retryPolicy = new ExponentialBackoffRetry(3000, 10); //2.第二种原创 2021-07-25 19:27:23 · 88 阅读 · 1 评论 -
zookeeper--★分布式锁
数据库锁性能最低。redis高性能,但可靠性不太强。redis一旦做了集群,master节点没有给其他节点同步数据情况下,一旦master挂了,其他从机就有可能都获取不到锁。核心思想:当客户端要获取锁,则创建临时顺序节点,使用完锁,则删除该节点。具体步骤:1.客户端获取锁时,在lock节点下创建临时顺序节点。(会话一结束锁自动删除)2.然后获取lock下面的所有子节点,客户端获取到所有的子节点之后,如果发现自己创建的子节点序号最小,那么就认为该客户端获取到了锁。使用完锁后,将该节点删除。3.如.原创 2021-07-25 19:11:12 · 76 阅读 · 0 评论 -
zookeeper--Watch事件监听
/** * ZooKeeper提供了三种Watcher: * NodeCache : 只是监听某一个特定的节点 * PathChildrenCache : 监控一个ZNode的子节点. * TreeCache : 可以监控当前节点整个树上的所有节点,类似于PathChildrenCache和NodeCache */public class CuratorWatcherTest { private CuratorFramework client; /** * 建立连原创 2021-07-25 18:32:32 · 161 阅读 · 0 评论 -
zookeeper--javaApi--CRUD
public class CuratorTest {private CuratorFramework client;/** * 建立连接 */@Before //@Test标注的测试方法不能传参,so加before,在Test标注的方法执行之前先执行 连接操作public void testConnect() { /* *多个连接就用逗号隔开 * @param connectString 连接字符串。zk server 地址和端口 "192.168.原创 2021-07-25 17:09:19 · 182 阅读 · 0 评论 -
zookeeper--客户端命令
连接服务端:./zkCli.sh -server localhost:2181退出客户端:quit查看根节点:ls /查看子节点下的信息: ls /dubbo查看根节点详细信息: ls -s /创建持久节点:create /app 节点数据信息创建临时节点(会话结束就自动删除):create -e /app1创建顺序节点:create -s /app1创建临时顺序节点:create -es /app2获取节点数据:get /app1设置(修改)节点数据:set /a原创 2021-07-25 09:56:55 · 92 阅读 · 0 评论 -
springmvc--文件上传下载
上传:引入依赖:<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version></dependency>application.xml:【注意!!!这个bena的id必须为:multipartResolver原创 2021-07-19 23:52:29 · 76 阅读 · 0 评论 -
springmvc--rest风格--ajax的rest风格--拦截器
REST风格1、Rest架构的主要原则网络上的所有事物都被抽象为资源每个资源都有一个唯一的资源标识符同一个资源具有多种表现形式(xml,json等对资源的各种操作不会改变资源标识符所有的操作都是无状态的符合REST原则的架构方式即可称为RESTful2、什么是RestfulRestful web service是一种常见的rest的应用,是遵守了rest风格的web服务;rest式的web服务是一种ROA(The Resource-Oriented Architecture)(面向资源原创 2021-07-19 23:01:34 · 232 阅读 · 0 评论 -
springmvc--jsr303数据校验-静态资源拦截处理
数据校验前端的校验永远不可靠。JSR 303 是 Java 为 Bean 数据合法性校验提供的标准框架SR 303 通过在 Bean 属性上标注类似于 @NotNull、@Max 等标准的注解指定校验规则,并通过标准的验证接口对 Bean 进行验证。Constraint详细信息@Null被注释的元素必须为 null@NotNull被注释的元素必须不为 null@AssertTrue被注释的元素必须为 true@AssertFalse被注释的元素必须为 f原创 2021-07-19 16:56:55 · 138 阅读 · 0 评论 -
Springmvc--统一异常处理-自定义转换器-json转换器处理日期
统一异常处理:统一的异常public class BusinessException extends RuntimeException{ private int code; private String msg; BusinessException(ResultCode resultCode){ this.code=resultCode.getCode(); this.msg=resultCode.getMsg(); } pu原创 2021-07-19 11:21:49 · 142 阅读 · 0 评论 -
springmvc--★请求体响应体--fastjon&Jackson:对象和json字符串间的消息转化--idea使用httpclient
★★请求体响应体内容封装:注解:★@ResponseBody:返回的数据不走视图解析器,而是直接以响应的方式写到浏览器上。相当于resp.getWriter().write();★@RequestBody:从请求体拿数据,不再是默认请求参数中拿数据了。json与对象 的转化器:支持json字符串和对象之间的转化:依赖:<dependency> <groupId>com.alibaba</groupId> <a原创 2021-07-18 17:02:54 · 256 阅读 · 2 评论 -
springmvc--组件说明--统一字符--视图模型拆分--@requsetMapping--@requestParam
若看到一个项目啥都没配置,那么它一定有默认值原创 2021-07-17 23:27:59 · 195 阅读 · 1 评论 -
SpringAop--相关名词--xml配置实现aop--注解实现aop(当下主流)
相关名词:通知、增强处理(Advice):就是你想要增加的功能,也就是上说的安全、事物、日志、(开启关闭事务、回滚事务…)等。你给先定义好,然后再想用的地方用一下。包含Aspect的一段处理代码.连接点:就是spring允许你是通知(Advice/增加功能)的地方,那可就真多了,基本每个方法的前、后(两者都有也行),或抛出异常是时都可以是连接点,spring只支持方法连接点。其他如AspectJ还可以让你在构造器或属性注入时都行,不过那不是咱们关注的,只要记住,和方法有关的前前后后都是连接点。切入原创 2021-07-15 22:53:14 · 99 阅读 · 0 评论 -
spring类型转化器
当存在复杂类型的属性时,需要这个,拿日期类型为例:转化器类:public class StringToDateConvertor implements Converter<String, Date> { @Override public Date convert(String s) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); try {原创 2021-07-15 12:13:06 · 96 阅读 · 0 评论 -
Spring-IOC容器:DI,Bean作用域,自动装配
依赖注入–构造器注入application.xml:<bean name="user0" class="cn.itnls.User"> <!--★构造器注入(三种方式,使用name注入最方便),有对应的构造器才能注入 : --> <constructor-arg name="name" value="timo"/> <constructor-arg name="age" value="12"/> <c原创 2021-07-15 11:28:56 · 133 阅读 · 0 评论 -
Mybatis缓存+懒加载概念
一级缓存:一级缓存是sqlsession级别的缓存,会话一结束缓存就被刷新在操作数据库时,需要构造sqlsession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据不同的sqlsession之间的缓存区域是互相不影响的。第一次发起查询sql查询用户id为1的用户,先去找缓存中是否有id为1的用户,如果没有,再去数据库查询用户信息。得到用户信息,将用户信息存储到一级缓存中。如果sqlsession执行了commit操作(插入,更新,删除),会清空sqlsession中的一级缓存,原创 2021-07-14 11:27:58 · 193 阅读 · 2 评论 -
★--Mybatis数据关系处理(ResultMap建立映射关系)
场景:员工表 和部门表的信息查询1.按结果集嵌套,就像SQL中的联表查询 <resultMap id="employeeResult" type="cn.itnls.entity.Employee"> <id property="id" column="id"/> <result property="name" column="ename"/> <association property="dept" jav原创 2021-07-13 17:33:51 · 135 阅读 · 0 评论 -
手撸极简mybatis
core:数据源工厂public class DataSourceFactory { //不要直接在方法体内部写双引号的字符串内容 阿里规约这么写: public static final String DATASOURCE_TYPE_HIKARI = "hikari"; public static final String DATASOURCE_TYPE_DRUID = "druid"; public static DataSource createDataSou原创 2021-07-12 20:52:50 · 173 阅读 · 0 评论