<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[工作总结博客]]></title><description><![CDATA[Java]]></description><link>https://blog.youkuaiyun.com/qq_26375325</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_26375325]]></copyright><item><title><![CDATA[Zookeeper面试题]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/134926897</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/134926897</guid><author>qq_26375325</author><pubDate>Mon, 11 Dec 2023 17:30:01 +0800</pubDate><description><![CDATA[zookeeper采用了全局递增的事务id来标识，所有的proposal在提出的时候都会加上一个zxid，zxid是一个64位的数字，高32位是epoch（时期），用来标识Leader的周期，如果有新的Leader产生，epoch会递增，低32位用来自增计数。当新的proposal产生的时候会经历二阶段提交过程，首先会向其他server发送事务请求，当过半的server都能够执行并且执行成功的时候，那么就开始执行。]]></description><category></category></item><item><title><![CDATA[HashMap常见面试问题]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/134923639</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/134923639</guid><author>qq_26375325</author><pubDate>Mon, 11 Dec 2023 13:34:10 +0800</pubDate><description><![CDATA[put的第一步是计算hash值，key的hash&key的hash>>>16.其目的就是：让key的高16位不变，低16位与高16位做一个异或，目的就是减少碰撞。]]></description><category></category></item><item><title><![CDATA[简述dubbo的spi思想]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/120487673</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/120487673</guid><author>qq_26375325</author><pubDate>Sun, 26 Sep 2021 16:50:00 +0800</pubDate><description><![CDATA[面试官心理分析
继续深挖，前面一些基础性的东西问完了，确定你应该都ok，了解dubbo的一些基本东西，那么问个稍微难一点点的问题，就是spi，先问问你什么是spi。然后再问一下dubbo的spi是怎么实现的？其实就是看看你对dubbo的掌握程度如何。
面试题剖析
spi，简单来说，就是service provider interface，说白了是什么意思呢，比如你有个接口，现在这个接口有3个实现类，那么在系统运行的时候对这个接口到底选择哪个实现类呢？这就需要spi了，需要根据指定的配置或者是默认的配置，去找]]></description><category></category></item><item><title><![CDATA[Dubbo服务相关面试题]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/120484052</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/120484052</guid><author>qq_26375325</author><pubDate>Sun, 26 Sep 2021 14:01:37 +0800</pubDate><description><![CDATA[请介绍一下Dubbo服务消费者调用服务提供者的过程？
整体流程图

通过上面的流程图可以看到，服务消费者通过代理对象Proxy发起远程调用，接着通过网络客户端Client将编码后的请求发送给服务提供方的网络层上，也就是Server。Server在收到请求后，首先要做的事情是对数据包进行解码。然后将解码后的请求发送至分发器Dispatcher，再由分发器将请求派发到指定的线程池上，最后由线程池调用具体的服务。这就是一个远程调用请求的发送与接收过程。
执行流程
1. 生成动态代理类
当调用服务方法的时候，会被I]]></description><category></category></item><item><title><![CDATA[Neo4j程序访问]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/120241855</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/120241855</guid><author>qq_26375325</author><pubDate>Sat, 11 Sep 2021 20:02:02 +0800</pubDate><description><![CDATA[Neo4j访问的两种方式

嵌入式数据库
服务器模式(通过REST的访问)

它是由应用程序的性质(neo4j是独立服务器还是和程序在一起)，性能，监控和数据安全性来决定架构选择。
An embedded database（嵌入式数据库）
嵌入式Neo4j数据库是性能的最佳选择。通过指定数据库存储的路径已变成的方式访问嵌入式数据库。
我们选择嵌入式数据库处于一下原因：

使用Java作为我们项目的编程语言时
应用程序是独立的
程序追求很高的性能

Neo4j Server（服务器模式）
Neo4j Serv]]></description><category></category></item><item><title><![CDATA[Neo4j优化思路]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/120241717</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/120241717</guid><author>qq_26375325</author><pubDate>Sat, 11 Sep 2021 19:14:29 +0800</pubDate><description><![CDATA[增加服务器内存和调整neo4j配置文件
# java heap 初始化
dbms.memory.heap.initial_size=1g
# java heap最大值，一般不超过可用物理内存的80%
dbms.memory.heap.max_size=16g
# pagecache大小，官方建议设为(总内存-dbms.memeory.heap.max_size)/2
dbms.memory.pagecache.size=2g

neo4j刚启动数据是冷的需要预热
match(n)
optional matc]]></description><category></category></item><item><title><![CDATA[Neo4j之Admin管理员操作]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/120237874</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/120237874</guid><author>qq_26375325</author><pubDate>Sat, 11 Sep 2021 15:11:11 +0800</pubDate><description><![CDATA[Neo4j-数据库备份和恢复
在对Neo4j数据进行备份、还原、迁移得到操作时，首先要关闭Neo4j
./bin/neo4j stop

数据备份到文件
./bin/neo4j-admin dump --datebase=graph.db --to=/root/qyn.dump

还原、迁移之前，关闭neo4j服务。操作同上
./bin/neo4j-admin load --form=/root/qyn.dump --database=graph.db --force

重启服务
./bin/neo4j s]]></description><category></category></item><item><title><![CDATA[Neo4j CQL高级]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/120236672</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/120236672</guid><author>qq_26375325</author><pubDate>Sat, 11 Sep 2021 15:01:00 +0800</pubDate><description><![CDATA[CQL 函数
字符串函数




功能
描述




UPPER
它用于将所有字母改为大写字母


LOWER
它用于将所有字母改为小写字母


SUBSTRING
它用于获取给定String的字符串


REPLACE
它用于替换一个字符串的子字符串


举例：
MATCH (p:Person)
RETURN ID(p), LOWER(p.character)

聚合函数




聚合功能
描述




COUNT
它返回由MATCH命令返回的行数


MAX
它从MATCH命令返回一组行返回最大值


]]></description><category></category></item><item><title><![CDATA[Neo4j CQL]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/120189409</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/120189409</guid><author>qq_26375325</author><pubDate>Fri, 10 Sep 2021 22:17:30 +0800</pubDate><description><![CDATA[CQL简介
CQL代表Cypher查询语言。像关系型数据库的查询语言SQL，Neo4j使用CQL作为查询语言。
Neo4j CQL

它是Neo4j图形数据库的查询语言
它是一种声明性模式匹配语言
它遵循SQL语言
它的语言是非常简单且人性化、可读的格式。
常用的Neo4j CQL命令、条款如下：





No.
CQL命令/条
作用




1
CREATE创建
创建节点，关系和属性


2
MATCH匹配
检索有关节点，关系和属性数据


3
RETURN返回
返回查询结果


4
WHERE条件
提]]></description><category></category></item><item><title><![CDATA[MongoDB安全认证]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/120006201</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/120006201</guid><author>qq_26375325</author><pubDate>Wed, 01 Sep 2021 18:03:28 +0800</pubDate><description><![CDATA[安全认证概述
MongoDB默认是没有账号的，可以直接链接，无须身份验证。在实际的项目中的肯定是要权限验证的，否则后果不堪设想。从2016年开始发生了多起MongoDB黑客赎金时间，大部分MongoDB安全问题暴露出来的安全短板其实是用户，首先用户对数据库的安全不重视，其次用户在使用过程中没有养成定期备份的好习惯，最后是企业可能缺乏有经验和技术的专业人员。所以对MongoDB进行安全认证是有必要的。
用户相关操作
切换到admin数据库对用户进行添加
use admin;
db.createUser(use]]></description><category></category></item><item><title><![CDATA[MongoDB分片集群搭建]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/120023282</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/120023282</guid><author>qq_26375325</author><pubDate>Tue, 31 Aug 2021 23:12:23 +0800</pubDate><description><![CDATA[分片集群搭建过程

配置并启动config节点集群
config部分的yml
version: '3'
services:
  # config server配置
  mongo_config_server_node_1:
    image: mongo:latest
    container_name: mongo_config_server_node_1
    ports:
      - 27010:27017
    volumes:
      - ./config_server/node_]]></description><category></category></item><item><title><![CDATA[MongoDB复制集搭建]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/119958182</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/119958182</guid><author>qq_26375325</author><pubDate>Sun, 29 Aug 2021 23:19:44 +0800</pubDate><description><![CDATA[前言
最开始使用MongoDB作为NoSQL数据库的时候，使用的是单节点，后面随着业务量增加，引入了集群模式，最初引入的是ReplicaSet。刚开始使用的时候还好，后面却发现了性能上还是有瓶颈，尤其在写数据方面比较的明显。后面深入研究了一下，发现原来真正高性能的是Shared Cluster，因为做了数据分片的缘故，单机的数量量更小，读写性能也就越高。然而我们使用的ReplicaSet只是Master-Slave模式，所有的节点上的数据仍然是一致的，同时因为需要保证一致性，事务是多进程之间同步等待的，因此]]></description><category></category></item><item><title><![CDATA[MongoDB分片集群]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/119969395</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/119969395</guid><author>qq_26375325</author><pubDate>Sat, 28 Aug 2021 17:33:25 +0800</pubDate><description><![CDATA[简介
分片（Sharding）是MongoDB用来将大型集合水平分割到不同服务器（或者复制集）上所采用的方法。不需要功能强大的大型计算机就可以存储海量的数据，处理高负载。
为什么要分片

存储容量超出单机磁盘的容量
活跃的数据超出单机内存的容量，导致很多请求都要从磁盘读取数据，影响性能。
IOPS超出单个MongoDB节点的服务能力，随着数据的增长，单机实例的平静会越来越明显。
副本集具有极诶耽数量限制。

垂直扩展：增加更多的CPU和存储资源来扩展容量。
水平扩展：酱数据集分布在多个服务器上，水平扩展即分]]></description><category></category></item><item><title><![CDATA[Mongo复制集集群结构原理]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/119920930</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/119920930</guid><author>qq_26375325</author><pubDate>Fri, 27 Aug 2021 17:48:24 +0800</pubDate><description><![CDATA[简介
一个复制集中Primary节点上能够完成读写操作，Secondary节点仅能用于读操作。Primary节点需要记录所有改变数据库状态的操作，这些记录保存在oplog中，这个文件存储在local数据库，各个Secondary节点通过此oplog来复制数据并应用于本地保持本地的数据与主节点的一致。oplog具有幂等性，即无论执行了多少次，其结果始终保持一致，这一点要优于mysql的二进制日志更好用。
oplog的组成结构
{
	"ts": Timestamp(1446011590),
	"h": Numb]]></description><category></category></item><item><title><![CDATA[MongoDB存储引擎]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/119841097</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/119841097</guid><author>qq_26375325</author><pubDate>Sat, 21 Aug 2021 17:03:26 +0800</pubDate><description><![CDATA[存储引擎概述
存储引擎是MongoDB的核心组件，负责管理数据如何存储在硬盘和内存上。MongoDB支持的存储轻音有MMAPv1，WiredTiger和InMemory。InMemory表示只将数据存储在内存中，并且只把诊断日志和元数据（meta-data）信息存储在硬盘文件中，由于不需要和磁盘进行IO操作，就可以获取到所需要的数据，InMemroy引擎大幅度降低了查询的延迟（latency）。从MongoDB3.2开始，默认的存储引擎是WiredTiger，3.2之前默认的存储引擎是MMAPv1，Mong]]></description><category></category></item><item><title><![CDATA[MongoDB架构]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/119811628</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/119811628</guid><author>qq_26375325</author><pubDate>Thu, 19 Aug 2021 21:46:50 +0800</pubDate><description><![CDATA[MongoDB逻辑结构

MongoDB与MySQL中的架构差不多，底层都使用了可插拔的存储引擎以满足不同的用户需求，用户可以根据自己所需要的特性来选择不同存储引擎。在最新版本的MongoDB中使用了WiredTiger作为默认的存储引擎，WiredTiger提供了不同粒度的并发控制和压缩机制，能为不同的应用提供更好的性能和存储率。
MongoDB的数据模型
内嵌
内嵌的方式是指，一个文档嵌入到另外一个文档中，MongoDB中允许一个字段或者数组中的值为一个对象。
引用
通过引用的方式来存储对象之间的关联，]]></description><category></category></item><item><title><![CDATA[Java访问MongoDB]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/119810409</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/119810409</guid><author>qq_26375325</author><pubDate>Thu, 19 Aug 2021 20:51:07 +0800</pubDate><description><![CDATA[maven依赖
        &lt;dependency&gt;
            &lt;groupId&gt;org.mongodb&lt;/groupId&gt;
            &lt;artifactId&gt;mongo-java-driver&lt;/artifactId&gt;
            &lt;version&gt;3.12.10&lt;/version&gt;
        &lt;/dependency&gt;

添加操作
        MongoC]]></description><category></category></item><item><title><![CDATA[MongoDB应用场景]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/119743662</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/119743662</guid><author>qq_26375325</author><pubDate>Mon, 16 Aug 2021 22:45:13 +0800</pubDate><description><![CDATA[MongoDB的适用场景

网站数据：MongoDB非常适合实时插入，更新与查询，并具备网站实时数据存储所需的复制及高度伸缩性。
缓存：由于性能很高，Mongo也适合作为信息存储的缓存层。在系统重启之后，由Mongo搭建的持久化缓存层可以避免下层数据资源过载。
大尺寸、低价值的数据：使用传统的关系型数据库存储一些大尺寸低价值数据时比较浪费资源，在此之前，很多程序员往往选择使用传统文件存储的方式。
高伸缩性的场景：Mongo非常适合由数十台或数百台服务器组成的数据库，Mongo的线路图中已经包含对MapRed]]></description><category></category></item><item><title><![CDATA[MongoDB索引底层实现原理分析]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/119743111</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/119743111</guid><author>qq_26375325</author><pubDate>Mon, 16 Aug 2021 22:16:44 +0800</pubDate><description><![CDATA[简介

MongoDB是文档型的数据库，它使用BSON格式保存数据，比关系型数据库存储更方便，比如之前关系型数据库中处理用户、订单等数据要建立对应的表，还要建立它们之间的关联关系。但是BSON就不一样了，我们可以把一条数据和这条数据对应的数据都存入一个BSON对象中，这种形式更简单，通俗易懂。MySql是关系型数据库，数据的关联性是非常强的，区间访问是常见的一种情况，底层索引组织数据使用B+树，B+树由于数据都存储在叶子节点，并且通过指针串在一起，这样就很容易的进行区间遍历货值全部遍历。MongoDB使用B]]></description><category></category></item><item><title><![CDATA[MongoDB索引]]></title><link>https://blog.youkuaiyun.com/qq_26375325/article/details/119712529</link><guid>https://blog.youkuaiyun.com/qq_26375325/article/details/119712529</guid><author>qq_26375325</author><pubDate>Sun, 15 Aug 2021 19:03:01 +0800</pubDate><description><![CDATA[什么是MongoDB索引

索引是一种单独的、物理的对数据库中一列或多列的值进行排序的一种存储结构，它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的页的逻辑指针清单。索引的作用相当于图书中的目录，可以根据目录中的页码快速找到所需的内容。索引目标是提高数据库的查询效率，没有索引的话，查询会进行全表扫描（scan every docuemtn in a collection），数据量最大时严重降低了查询效率。默认情况下Mongo在一个集合（collection）创建时，自动的对集合的_id创建了]]></description><category></category></item></channel></rss>