- 博客(65)
- 收藏
- 关注
原创 es查询的两阶段Query阶段和Fetch阶段
DFS在进行真正查询之前,会先把各个分片的词频率和文档频率收集一下,然后进行词搜索的时候,各分片依据全局的词频率和文档频率进行搜索和排名.node1整合3个分片返回的from + size个文档id,根据排序值排序后选取from到from+size的文档id;显然使用dfs_query_then_fetch这种查询方式,效率比较低,因为一个搜索,可能要请求三次,但是搜索精度比较高.query的时候,3个node中的一个会接受用户的search请求,比如node1;3个分片返回文档详细数据。
2023-07-20 18:44:20
1070
原创 Java HashMap computeIfPresent()方法
computeIfPresent 方法是对hashMap中指定的key的值进行重新计算,前提是该key存在于hashMap中.
2022-12-19 18:40:32
918
1
原创 java HashMap computeIfAbsent()方法
computeIfAbsent()方法对hashmap 中指定key的值进行重新计算,如果不存在这个key,则添加到hashMap中.
2022-12-19 18:17:30
591
原创 Nacos的服务注册之服务端
上节讲到了nacos的客户端,通过把实例信息封装成instance,调用服务端的接口:/instance,进行注册.接下来,我们一起看看服务端是怎么处理客户端发来的请求的.
2022-12-10 17:19:33
846
原创 Nacos的服务注册之客户端
服务注册到Nacos以后,会保存在一个本地注册表中,这个注册表是一个map.key是namespace,用来隔离环境value又是一个mapkey是groupvalue又是一个serviceservice中又维护了一个mapkey是服务的某个集群的名称value是Cluster类型Cluster内部又维护了一个set< Instance >集合,该集合就是集群下的实例的集合Instance:包含石榴的IP、Port、健康状态、权重等信息。
2022-12-10 14:03:13
1927
原创 Nacos的服务心跳
nacos的实例分为临时实例和永久实例两种,相应的不同的实例会用有不同的心跳机制.临时实例基于心跳方式做健康检测,永久实例是有Nacos主动探测实例状态.可以通过在yaml文件配置.NacosNamingService这个接口实现了服务心跳的功能从上面的代码可以看到BeatInfo就是包含心跳需要的各种信息,这个类中维护了一个线程池;
2022-12-08 17:35:08
1744
原创 elasticsearch中的聚合分组查询
分组聚合及嵌套查询聚合查询可以理解为SQL中的求和、求最大值、最小值以及求均值的需求嵌套可以理解为es存值的某一个字段为对象属性的值做处理.Elasticsearch Java API分组与聚合结合需要对多个字段分组需要将分组结果的其他字段再进行统计的sum、min、max、avg聚合只聚合不分组简单的分组查询解析查聚合结果上面是最简单的一层聚合查询,其实其他复杂的聚合也都是大同小异,就是一个套娃的操作.复杂聚合查询ElasticSearch Java API嵌套上面E
2022-12-05 18:02:03
4991
原创 mongodb的简单查询
MongoDB是一个机遇分布式文件存储的数据库.由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案.
2022-12-04 14:51:58
1518
原创 arthas怎么在容器中配置
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。很多公司目前都在使用k8s,我们可以进入pod,下载arthas,并使用arthas进行监控.
2022-09-19 14:34:34
1129
原创 @Configuration和@Component
@Configuration注解能够使得加了它的对应的配置类在spring容器中是一个cglib代理bean,让配置类实例变成cglib代理实例的作用就是防止@Bean方法B又调用@Bean方法A的这种场景破坏了bean的单例性。解决这种场景的原理就是在spring实例化@Bean方法B对应的bean的时候,会通过反射调用配置类的@Bean方法B,在反射调用之前@Bean方法B放到currentlyInvokedFactoryMethod中,然后由于配置类已经是一个cglib代理对象了,
2022-09-09 15:10:33
5956
4
原创 mysql数据库、表、列的字符集和校对规则
说校对规则之前就不得不讲到字符集,字符集是多个字符(英文字符,汉字字符,或者其他国家语言字符)的集合,字符集种类很多,每种包含的字符个数不同.然后我就和大家一样,用错误信息去百度了一下,其实静下心来看错误提示还是能看出来的.大概意思说的是非法的混合collations用来做了。UTF8字符集:Unicode字符集的一种,支持所有国家的文字字符,utf8采用1-4字节表示字符.每个校验规则唯一对应一种字符集,但一个字符集可以对应多种校验规则,其中就有一个默认的.是在字符集内用于字符比较和排序的一套规则.
2022-09-05 22:35:33
897
原创 使用kibana本地连接服务器es
Kibana 是一种数据可视化和挖掘工具,可以用于日志和时间序列分析、应用程序监控和运营智能使用案例.它还提供了与Elasticsearch的紧密集成,使之成为了可视化 Elasticsearch 中存储数据的默认之选.
2022-08-05 11:27:16
8602
2
原创 创建AOP之创建
在前面的文章分析了获取增强器以及匹配的增强器之后,我们便可以根据增强器来创建代理了. protected Object createProxy(Class<?> beanClass, @Nullable String beanName, @Nullable Object[] specificInterceptors, TargetSource targetSource) { if (this.beanFactory instanceof ConfigurableListableBe
2022-06-02 12:00:00
445
原创 静态AOP使用示例
加载时织入指的是在虚拟机载入字节码文件时动态织入AspectJ切面.spring框架的值添加微AspectJ LTW在动态织入过程中提供更细粒度的控制.在java5+的代理能使用一个叫“Vanilla”的AspectJ LTW,这需要在启动JVM的时候将某个JVM参数设置为开.这种JVM范围的设置在一些情况下或许不错,但是通常情况下显得粗粒度了.Spring的LTW能让你在per-ClassLoader的基础上打开LTW,这显然更加细粒度,而且不用修改服务的启动脚本,只需要简单修改应用上下文的一个或几
2022-06-01 19:00:00
489
原创 创建AOP之寻找匹配的增强器
前面一篇文章已经分析了如何获取增强器,下面分析这些增强器哪些是真正匹配,是我们需要的,需要挑出来. protected List<Advisor> findAdvisorsThatCanApply( List<Advisor> candidateAdvisors, Class<?> beanClass, String beanName) { ProxyCreationContext.setCurrentProxiedBeanName(beanName);
2022-06-01 16:00:00
128
原创 创建AOP之获取增强器
protected Object[] getAdvicesAndAdvisorsForBean( Class<?> beanClass, String beanName, @Nullable TargetSource targetSource) { // 获取增强器 List<Advisor> advisors = findEligibleAdvisors(beanClass, beanName); if (advisors.isEmpty()) { ret.
2022-05-31 20:00:00
208
原创 创建AOP之总览
上一篇文章分析了自定义标签注册解析并且注册了AnnotationAwareAspectJAutoProxyCreator,我们可以看看这个类的层次结构:可以看到AnnotationAwareAspectJAutoProxyCreator实现了BeanPostProcessor接口,当Spring加载这个bean的时候会在实例化前调用他的postProcessAfterInitialization方法在父类AbstractAutoProxyCreator的postProcessAfterInitiali
2022-05-30 19:30:00
337
原创 aop的使用的介绍
1、导入依赖<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.2</version></dependency>2、创建被拦截的beanpublic class TestBean { private String testStr = "testS
2022-05-30 15:00:00
220
原创 Spring中的事件广播器和监听器
事件传播器在分析Spring的事件传播器之前,还是先来看一下Spring的事件监听的简单用法.1、定义监听器事件public class TestEvent extends ApplicationEvent { public String msg; public TestEvent(Object source) { super(source); } public TestEvent(Object source, String msg) {
2022-05-29 10:00:00
546
原创 初始化消息资源
Spring中的国际化相信很多人都听过,下面先分析一下使用方法.比如我们正在开发一个支持多国语言的web应用程序,要求系统能够根据客户端的系统的语言类型返回对应的界面:英文的操作系统返回英文界面,中文的操作系统返回中文界面,这就是有名的i18n国际化问题.简单来说就是为每种语言提供一套相应的资源文件,并以规范化命名的方式保存在特定的目录中,由系统自动根据客户端语言选择适合的资源文件.“国际化信息”需要两个条件来确定一个特定类型的本地化信息,这两个条件分别是:语言类型和国家/地区的类型.如中文本地化信息
2022-05-28 15:31:52
147
原创 BeanPostProcessor
先来分析一下beanPostProcessor的注册.BeanPostProcessor的调用是在bean的实例化阶段进行的.自定义一个后处理器:public class MyInstantiationAwareBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String beanName) thro
2022-05-28 13:18:55
279
原创 BeanFactoryPostProcessor
BeanFactory是Spring中容器功能的基础,用于存放所有已经加载的bean,为了保证程序上的高可扩展性,Spring针对BeanFactory做了大量的扩展.激活注册BeanFactoryPostProcessorBeanFactoryPostProcessor和BeanPostProcessor类似,可以对beanDefinition进行处理,也就是说SpringIOC容器允许BeanFactoryPostProcessor在容器实际实例化任何bean之前读取beanDefinition,并
2022-05-26 19:30:00
12797
原创 ApplicationContext之功能扩展
接这上篇文章分析,上篇文章分析到创建好beanFactory,Spring也已经完成对配置文件的解析,ApplicationContext也是在这个基础上进行展开的.protected void prepareBeanFactory(ConfigurableListableBeanFactory beanFactory) { // 设置 beanFactory的classLoader为当前context的classLoader beanFactory.setBeanClassLoader(getC
2022-05-25 19:30:00
208
原创 ApplicationContext
之前的分析都是在XmlBeanFactory的基础上进行的分析,现在我们开始分析ApplicationContext,相比之下ApplicationContext提供了更多的扩展功能.首先看看使用两个不同的类去加载配置文件在写法上的不同:使用BeanFactoryBeanFactory bf = new XmlBeanFactory(new ClassPathResource(“beanFactoryTest.xml));使用ApplicationContextApplicationCo
2022-05-24 19:30:00
267
原创 Spring创建bean之初始化Bean和注册DisposableBean
初始化Beanbean配置的时候,有一个init-method的属性,这个属性就是在bean初始化的时候调用指定的方法来进行初始化.protected Object initializeBean(String beanName, Object bean, @Nullable RootBeanDefinition mbd) { // 判断是否需要权限 if (System.getSecurityManager() != null) { // 需要权限
2022-05-23 10:00:00
450
原创 Spring创建bean之属性注入
依赖注入即属性填充this.populateBean(beanName, mbd, instanceWrapper);protected void populateBean(String beanName, RootBeanDefinition mbd, @Nullable BeanWrapper bw) { if (bw == null) { if (mbd.hasPropertyValues()) { throw new Bea
2022-05-22 10:00:00
326
原创 Spring创建bean之实例化
上一篇文章分析了创建bean的整个过程时候,下面继续分步骤的进行分析Spring是如何创建bean的.首先我们分析一下Spring是如何实例化bean的:protected BeanWrapper createBeanInstance(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) { // 解析bean的class Class<?> beanClass = this.resolveBea
2022-05-21 17:25:54
371
原创 Spring创建bean
之前分析了准备创建bean的一些操作.现在来分析doCreateBean()这个方法做了哪些事.protected Object doCreateBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) throws BeanCreationException { BeanWrapper instanceWrapper = null; // 判断是不是singleton类型的
2022-05-21 14:57:29
321
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人