【设计改变世界】github地址:https://github.com/guochunyang2004

【java】【netty】【ElasticSearch】【sql】【微服务】【android】【大数据】
私信 关注
果然如此
码龄14年

杂牌军,小米+步枪

  • 959,742
    被访问量
  • 252
    原创文章
  • 4,542
    作者排名
  • 132
    粉丝数量
  • 于 2007-02-28 加入CSDN
获得成就
  • 获得108次点赞
  • 内容获得64次评论
  • 获得151次收藏
荣誉勋章
兴趣领域
  • #Android
    #Flutter#Java#性能优化
TA的专栏
  • kafka
    2篇
  • postgresql
    3篇
  • go
    1篇
  • vue
    2篇
  • 数据结构算法
    25篇
  • 技术面试
    10篇
  • 通信
    4篇
  • 微服务
    1篇
  • 乔布斯
    18篇
  • .net
    66篇
  • Android
    39篇
  • IT相关技术
    27篇
  • javascript
    25篇
  • jquery
    5篇
  • sql
    37篇
  • Web技术
    21篇
  • 业内新闻
    15篇
  • 管理
    8篇
  • centos
    27篇
  • solr
    13篇
  • 搜索
  • java
    68篇
  • mongodb
    14篇
  • ElasticSearch
    27篇
  • redis
    7篇
  • tomcat
    5篇
  • windows
    10篇
  • 笑话
    1篇
  • 其它
    6篇
  • 蓝牙
    1篇
  • RabbitMQ
    4篇
  • hadoop
    1篇
  • 并发
    2篇
  • 多线程
    3篇
  • docker
    3篇
  • spring boot
    5篇
  • mysql
    5篇
  • mac
    4篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

Kafka学习之路 (二)Kafka的架构

目录一、Kafka的架构 二、Topics和Partition 三、Producer消息路由 四、Consumer Group 五、Push vs. Pull 六、Kafka delivery guarantee正文回到顶部一、Kafka的架构如上图所示,一个典型的Kafka集群中包含若干Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU、Memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐.
转载
35阅读
0评论
0点赞
发布博客于 1 月前

Kafka学习之路 (一)Kafka的简介

目录一、简介 1.1 概述 1.2 消息系统介绍 1.3 点对点消息传递模式 1.4 发布-订阅消息传递模式 二、Kafka的优点 2.1 解耦 2.2 冗余(副本) 2.3 扩展性 2.4 灵活性&峰值处理能力 2.5 可恢复性 2.6 顺序保证 2.7 缓冲 2.8 异步通信 三、常用Message Queue对比 3.1 RabbitMQ 3.2 Redis 3.3 ZeroMQ 3.4 ActiveMQ 3.5 
转载
32阅读
0评论
0点赞
发布博客于 1 月前

spring boot 整合session存储到redis

pom.xml<dependencies> <!-- ... --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupI
原创
22阅读
0评论
0点赞
发布博客于 1 月前

java 解决跨域的几种方案和注意事项

一、原始方案response.setHeaderresponse.setHeader("Access-Control-Allow-Origin","*");response.setHeader("Access-Control-Allow-Credentials", "true");response.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT");response.setHeader("Acces
原创
54阅读
0评论
0点赞
发布博客于 1 月前

linux 重启命令小结(init 6 shutdown -r now reboot)

1.1一般在linux中,我们重启会用到这三个命令:init 6 调用shutdown脚本重新启动 shutdown -r now 立即停止然后重新启动 reboot 重新启动 1.2 reboot命令重启动系统时是删除所有的进程,而不是平稳地终止它们。因此,使用reboot命令可以快速地关闭系统,但如果还有其它用户在该系统上工作时,就会引起数据的丢失。所以使用reboot命令的场合主要是在单用户模式。'reboot'并不执行这些过程,reboot更是一个kernel级别的
转载
40阅读
0评论
0点赞
发布博客于 2 月前

spring cloud Feign 微服务服务之间调用传递token

问题:微服务调用需要验证token,而且token放在header里解决:import feign.RequestInterceptor;import feign.RequestTemplate;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import
原创
118阅读
0评论
0点赞
发布博客于 3 月前

js-xlsx 读取Excel解析

近期公司开始做绩效,某一天上午 HR 妹纸发了份 Excel 模板过来,让我下发给小组内成员填写。当天下午下班前,组内的绩效表就收齐了,接下来我就开始进入下一个环节,逐一打开每个 Excel 表为每个人打分。由于只有十几份绩效表,所以很快就打完分了。不过问题来了,虽然已经打完分了,但我对小组内成员的每个考核项得分和总分的情况却还是一片空白。想要一目了然,当然得简单做个统计报表咯。那么如何收集每个人的数据呢?当然最简单的方式就一个个打开组内成员的绩效表,然后一个个统计,不过对于这种方式,我是拒绝的。作为一个
转载
191阅读
1评论
0点赞
发布博客于 5 月前

【react】 后端返回图片或者json错误 ,前端加载和隐藏错误图片

后端返回图片或者json错误 ,前端加载和隐藏错误图片利用 img 的 onLoad 和 onError 方法:import React from 'react'; class ImgLoad extends React.Component { constructor(props) { super(props); this.state = { imageStatus: null,isError:true }; } handleImageLoaded() {
原创
118阅读
0评论
0点赞
发布博客于 5 月前

elasticsearch中如何高效的使用filter

elasticsearch里面有BOOLfilter、AND、OR、NOTfilter,这几个看起来很相似,都有什么区别呢?什么时候用boolfilter?什么时候用AND filter呢?事实上,bool filter和AND 、OR、NOT filter 是完全不同,在查询性能上面的影响是非常大的。首先咱们需要了解的是filter里面都是怎么工作的,其中核心的一个东西叫BitSet,可以理解为一个很大的bit数组,数组里面的每个元素有2个状态:0和1(bloom filter知道么?),而f..
原创
62阅读
0评论
0点赞
发布博客于 5 月前

spring boot + shiro + RequiresPermissions 的 controller 中 swagger 无法读取

问题:pring boot + shiro + RequiresPermissions 的 controller 中 swagger 无法读取 方法解决:在标注@Configuration 的类中加入以下代码: /** * 解决@RequiresPermissions注解的controller,swagger就读取不到的问题 * @return */ @Bean public DefaultAdvisorAutoProxyCreator d
原创
113阅读
0评论
0点赞
发布博客于 5 月前

Postgresql 创建主键并设置自动递增的三种方法

Postgresql 有以下三种方法设置主键递增的方式,下面来看下相同点和不同点。--方法一create table test_a( id serial, name character varying(128),constraint pk_test_a_id primary key( id));NOTICE: CREATE TABLE will create implicit sequence "test_a_id_seq" for serial column "test_a.id"...
转载
109阅读
0评论
0点赞
发布博客于 5 月前

MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

本文章来给大家提供三种在mysql中避免重复插入记录方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法,各位同学可尝试参考。案一:使用ignore关键字如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用:代码如下 复制代码 1 INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test9@163.c.
转载
69阅读
0评论
0点赞
发布博客于 6 月前

mysql:insert ignore、insert和replace区别

指令 已存在 不存在 举例 insert 报错 插入 insert into names(name, age) values(“小明”, 23); insert ignore 忽略 插入 insert ignore into names(name, age) values(“小明”, 24); replace 替换 插入 replace into names(name, age) values(“小明”, 25); 表要
转载
63阅读
0评论
0点赞
发布博客于 6 月前

Open Distro for Elasticsearch

Amzone 2019 年 3 月正式推出 Open Distro for Elasticsearch。这是 Elasticsearch 的一个增值发行版,100% 开源(采用 Apache 2.0 许可证)并且由 AWS 提供支持。Open Distro for Elasticsearch 利用了 Elasticsearch 和 Kibana 的开放源代码。个人很欣赏 Elastic 的 Shay Banon 的,他对 Amzone 的 Open Distro 应该是很不爽,但是对于现在的 Elast
转载
183阅读
0评论
0点赞
发布博客于 6 月前

Elasticsearch全文检索优化研究

Elasticsearch全文检索优化研究背景今年工作的一个重点是“新技术新模式”的导入和研究。Elasticsearch技术比较火,各项目和产品用的都也比较多。其中某团队遇到一个问题:“在TB级的数据量下进行全文检索时,ES集群检索响应速度比较慢”。虽然由于各种原因没有接触到系统,没有看到代码,甚至都没见到具体现象,但是任务分配下来了,就要有结果就要出方案。“没吃过猪肉,也得先见见猪跑”,先在一个30GB级别的ES集群下做一下优化研究。全文检索的原理全文检索的定义 全文检索和普通查询最大
转载
67阅读
0评论
0点赞
发布博客于 6 月前

如何在Elasticsearch中进行深分页

如何在Elasticsearch中进行深分页业务背景在传统业务系统中,一个常见的信息展现方式就是“分页列表”,随着数据量的增大,就会遇到“深分页”问题。比如用户一页一页的翻,一直翻到第5万页。比如导出全部列表数据到excel,实现时一页一页的把数据追加到excel,直到导出全部数据。“深分页”通常的一个问题就是:随着页数越来越大,ES或者关系数据库响应越来越慢,甚至内存溢出OOM!其中的原理是什么呢?如何在ES中进行深分页呢?技术原理 分页的本质 分页的本质是从“大的数据集”中取出一部分
转载
87阅读
0评论
0点赞
发布博客于 6 月前

Elasticsearch发展史

简介Elasticsearch是当前比较流行的开源的分布式搜索和数据分析引擎,具备易使用、高性能、扩展性强等特点。是ElasticStack的核心组件,以其为核心构建的ELK,已经是日志分析领域的事实标准。Elasticsearch是怎么一步一步发展成熟的呢?You Know,for Search2010年2月8日, Shay Banon 发表了一篇博客,说他基于Lucene开发(封装 ???)了一个分布式搜索引擎,实现了一些功能。。。0.7.02010年5月14日发布,第一个可以查
转载
65阅读
0评论
0点赞
发布博客于 6 月前

基于open_distro的ES用户管理(授权)

基于open_distro的ES用户管理(授权)背景open distro for elasticsearch 是由亚马逊AWS支持的基于Apache License,Version 2.0协议的100%开源的Elasticsearch发行版。与Elastic公司官方的Elasticsearch版本最大的区别是:剔除了基于elastic协议发布的xpack插件,增加了开源插件。新增插件功能包括安全、告警、索引生命周期管理、性能分析、SQL等企业级功能。简单理解就是集成了开源版xpack插件的elas
转载
209阅读
0评论
0点赞
发布博客于 6 月前

基于open_distro的ES用户管理(认证)

基于open_distro的ES用户管理(认证)背景open distro for elasticsearch 是由亚马逊AWS支持的基于Apache License,Version 2.0协议的100%开源的Elasticsearch发行版。与Elastic公司官方的Elasticsearch版本最大的区别是:剔除了基于elastic协议发布的xpack插件,增加了开源插件。新增插件功能包括安全、告警、索引生命周期管理、性能分析、SQL等企业级功能。简单理解就是集成了开源版xpack插件的elas
转载
188阅读
0评论
0点赞
发布博客于 6 月前

基于xpack的ES用户管理常用命令

"query": "{\"match\": {\"category\": \"click\"}}" } ]} 给用户赋予角色(权限) PUT /_security/user/wangzhen{ roles:[clicks_admin]} 注意事项 不设置文档级和字段级权限控制时,默认可以看到所有文档和所有字段 文档级和字段级的权限是OR的关系,如: test_role2有字段级的限制,没有文档级限制 test_rol...
转载
71阅读
0评论
0点赞
发布博客于 6 月前

基于xpack的ES用户管理(授权)

基于xpack的ES用户管理(授权)之前研究了【基于xpack的用户认证】,了解了用户认证的原理和具体操作,继续研究基于xpack的授权基本概念 RBAC Elasticsearch默认的授权管理是通过RBAC机制,也就是基于角色的访问控制(role based access control) 受保护的资源(Secured Resource) 在ES中集群、索引、文档、字段、别名、用户都可以是被保护的对象 权限字(Privilege) 每个被保护的资源都有与之对
转载
113阅读
0评论
0点赞
发布博客于 6 月前

Elasticsearch 开源版、基础版、黄金版、铂金版功能差异

从 Elastic Stack 6.8 和 7.1 版本开始,Elasticsearch 的核心安全功能(TLS 加密、原生和基于文件的身份验证,以及基于角色的访问控制)将会免费提供,并且包含在默认发发包中。各个版本功能差异情况:国内博客介绍https://blog.csdn.net/vkingnew/article/details/91549698#commentBox 官方介绍:https://www.elastic.co/cn/subscriptions...
转载
292阅读
0评论
0点赞
发布博客于 6 月前

基于x-pack的ES用户管理(认证)

基于x-pack的ES用户管理(认证)Elasticsearch安全管理插件通过用户认证、用户授权、加密通信、审计日志、IP过滤等多种手段来保证集群的安全。领域(realms)和 领域链(realms chain)领域(realms) x-pack的安全插件可以通过用户名密码、证书、令牌和其他多种方法实现用户认证。 Elasticsearch支持通过多种后台服务实现用户认证,这些后台服务方式通称为“领域”(realms),常见的realms有:native、ldap、active_direc
转载
123阅读
0评论
0点赞
发布博客于 6 月前

elasticsearch-keystore 命令解释

elasticsearch-keystore 命令解释命令用途ES的大部分配置参数是通过明文存储在配置文件中,一般通过文件系统的所属用户、所属组和读写权限(rwx机制)提供基本的保护。但是有一些比较敏感的ES配置参数仅仅通过文件系统的权限保护是不够的,ES推出了keystore来做进一步的加密保护。命令用法 新建 高版本ES可以通过 -p 选项指定keystore存储的加密密码 # keystore的存储文件放在elasticsearch.yml的同级目录# 如:/elasti
转载
293阅读
0评论
0点赞
发布博客于 6 月前

Elasticsearch核心技术与实战-学习笔记

Elasticsearch es 提供了四种级别的倒排索引配置 ,可以控制倒排索引记录的内容,docs 记录docid ,freqs记录doc id 和term frequencies ,positions记录 docid,term frequencies, term positions, offset 记录 dicid,term frequencies, term positions, character offset null_value 实现对 null的搜索 多字段特性
转载
88阅读
0评论
0点赞
发布博客于 6 月前

Elasticsearch7.X为什么移除类型(type)

什么是类型(type)?从Elasticsearch的第一个发布版本以来,每一个文档都被存储在一个单独的索引里,并被赋予了一个type,一个映射类型代表着一个被索引的文档或实体的类型,例如,一个twitter索引可能有一个user类型和tweet类型。每种映射类型都有他自己的字段,所以user类型可能有一个full_name字段,一个user_name字段和一个email字段,而一个tweet类型可能有一个content字段,一个tweet_at字段,和user类型一样一个user_name字段。
转载
78阅读
0评论
0点赞
发布博客于 6 月前

关于谷歌Chrom 80版本升级后,跨域Samesite必须有值影响跨域项目的解决

什么是SameSiteSameSite是Cookie中的一个属性,它用来标明这个cookie是个“同站cookie”,“同站cookie” 只能作为第一方cookie,不能作为第三方cookie,因此可以限制第三方Cookie,解决CSRF的问题。不知道CSRF的看着这个。早在Chrome 51中就引入了这一属性,但是不会默认设置,所以相安无事。第三方Cookie:由当前a.com页面发起的请求的URL不一定也是a.com上的,可能有b.com的,也可能有c.com的。我们...
转载
965阅读
0评论
0点赞
发布博客于 6 月前

Junit测试中@Before不执行

unit测试中@Before不执行错误原因:Junit的版本原因在Junit4下使用@Before和@After而在Junit5下使用@BeforeEach和@AfterEach例:将/*** 构造器*/@Beforepublic void setUp() {mockMvc = MockMvcBuilders.webAppContextSetup(context).build();}改造成:/*** 构造器*/@BeforeEachpublic void setUp(
转载
159阅读
0评论
0点赞
发布博客于 7 月前

postgresql 构造日期序列

postgresql 构造日期序列SELECT to_char ( d, 'yyyy-mm-dd' ) AS days FROM generate_series ((date(current_date) - interval '7 day'),date(current_date),'1 days' ) AS d2020-07-082020-07-092020-07-102020-07-112020-07-122020-07-132020-07-142020-07-15...
原创
123阅读
0评论
0点赞
发布博客于 7 月前

postgresql数据库生成GUID

CREATE or REPLACE FUNCTION new_guid() RETURNS "pg_catalog"."varchar" AS $BODY$ DECLARE v_seed_value varchar(32); BEGIN select md5( inet_client_addr()::varchar || timeofday() || inet_server_addr()::varchar || t...
原创
154阅读
0评论
0点赞
发布博客于 7 月前

Go module的介绍及使用

Go1.1.1版本发布(2018-08-24发布)已经过去几天,从官方的博客中看到,有两个比较突出的特色,一个就是今天讲的module,模块概念。目前该功能还在试验阶段,有些地方还需要不断的进行完善。在官方正式宣布之前,打算不断修正这种支持。到时候就可以移除对GOPATH和go get命令的支持。如果你想现在想就试试这个新功能module,需要你将你的代码仓库放到GOPATH/src目录之外。然后在那个目录下创建一个go.mod文件,从文件树中运行go命令。主要概念介绍module是一个相关Go包的
转载
183阅读
0评论
0点赞
发布博客于 7 月前

JS中this到底指向谁?

 关于this的指向,是一个令人很头疼的问题。但是,你运气好,碰到了我。老夫这儿有本祖传秘籍,看懂这个,妈妈再也不用担心你的this指向不对啦!  归根结底,this指向就一句话:谁最终调用函数,this指向谁!!! 关于这点,老夫有三言相赠: ① this指向的,永远只可能是对象! ② this指向谁,永远不取决于this写在哪!而是取决于函数在哪调用。 ③ this指向的对象,我们称之为函数的上下文context,也叫函数的调用者。  下...
转载
85阅读
0评论
0点赞
发布博客于 7 月前

让你分分钟理解 JavaScript 闭包

闭包,是 Javascript 比较重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是 ECMAScript 规范给的定义,如果没有实战经验,很难从定义去理解它。因此,本文不会对闭包的概念进行大篇幅描述,直接上干货,让你分分钟理解闭包!闭包,一睹为快在接触一个新技术的时候,我首先会做的一件事就是找它的 demo。对于我们来说,看代码比自然语言更能理解一个事物的本质。其实,闭包无处不在,比如:jQuery、zepto的核心代码都包含在一个大的闭包中,所以下面我先写一个最简单最原始的闭包,
转载
73阅读
0评论
0点赞
发布博客于 7 月前

vue发布报错 verbose stack Error: missing script: build

0infoitworkedifitendswithok1verbosecli[1verbosecli'C:\\ProgramFiles\
odejs\
ode.exe',1verbosecli'C:\\ProgramFiles\
odejs\
ode_modules\
pm\\bin\
pm-cli.js',1verbosecli'run',1verbosecli'build'1verbosecli]...
原创
1187阅读
0评论
0点赞
发布博客于 9 月前

使用 spring 注解实现 史上最简单的 spring mvc 内嵌 tomcat 启动

不用 spring boot,只使用 spring 注解实现最简单的 spring mvc 内嵌 tomcat 启动主要用到的注解@ComponentScan 扫描类添加到AnnotationConfigWebApplicationContext中其他注解@Service、@Autowired、@RestController、@GetMappingpom.xml<...
原创
307阅读
2评论
3点赞
发布博客于 9 月前

Java多线程40个问题总结

前言Java多线程分类中写了21篇多线程的文章,21篇文章的内容很多,个人认为,学习,内容越多、越杂的知识,越需要进行深刻的总结,这样才能记忆深刻,将知识变成自己的。这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有、也可能有些各位网友也都看过,但是本文写作的重心就...
转载
109阅读
0评论
0点赞
发布博客于 11 月前

数据库连接池到底应该设多大?

目录接下来是正文wait事件几乎没了,吞吐量上升。有限的资源计算公式公理:你需要一个小连接池,和一个充满了等待连接的线程的队列请注意连接池的大小最终与系统特性相关。本文内容95%译自这篇文章:https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing我在研究HikariCP(一个数据库连接池)...
转载
97阅读
0评论
0点赞
发布博客于 1 年前

redis-benchmark 1000并发 TPS测试

redis 请求TPS: redis-benchmark 1000并发测试,不同KB数据测试1MB:SET测试2次失败,下面是GET结果-c 1000 -n 10000 -d 1048576 -q -t getGET: 32467.53 requests per second500KB:set测试2次失败,下面是GET结果-c 1000 -n 10000 -d ...
原创
339阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】递归树:如何借助树来求解递归算法的时间复杂度?(细胞分裂问题)

一、递归树与时间复杂度分析1.递归思想就是将大问题分解为小问题来求解,然后在将小问题分解为小小问题,将问题一层一层地分解,直到问题的数据规模被分解得足够小,不要继递归分解为止。2.用递归树来求解归并排序的时间复杂度①:每次分解是一分为二,所以代价很低,将时间上的消耗记作常量1。②:归并算法中比较耗时的归并操作,也就是把两个子数组合并为大数组③:每一层归并操作消耗的时间总和是一样的,跟要...
原创
190阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】红黑树(下):掌握这些技巧,你也可以实现一个红黑树

目录一、实现红黑树的基本思想1. 红黑树需要满足这样几个要求:2.红黑树非常重要的操作3.插入操作的平衡调整4.删除操作的平衡调整5. 针对关注节点进行二次调整二、课后思考一、实现红黑树的基本思想1. 红黑树需要满足这样几个要求:根节点是黑色的; 每个叶子节点都是黑色的空节点(NIL),也就是说,叶子节点不存储数据; 任何相邻的节点都不能同时为红色,也就...
原创
81阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】红黑树(上):为什么工程中都用红黑树这种二叉树?

目录一、什么是“平衡二叉查找树”?二、如何定义一棵“红黑树”?三、课后思考一、什么是“平衡二叉查找树”?1. 二叉树中任意一个节点的左右子树的高度相差不能大于 1。2. 完全二叉树、满二叉树其实都是平衡二叉树,但是非完全二叉树也有可能是平衡二叉树。3.AVL 树严格符合平衡二叉查找树的定义,即任何节点的左右子树高度相差不超过 1,是一种高度平衡的二叉查找树。4.红...
原创
72阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】哈希算法(下):哈希算法在分布式系统中有哪些应用?

一、负载均衡1.1.需求如何实现一个会话粘滞(session sticky)的负载均衡算法?也就是说,在一次会话中的所有请求都路由到同一个服务器上。1.2.解决方案通过哈希算法对客户端IP或会话ID计算哈希值,将取得的哈希值与服务器列表的大小进行取模运算,最终得到的值就是应该被路由到的服务器编号。这样,就可以把同一个IP过来的请求都路由到同一个后端服务器上。二、数据分片2.1.如...
原创
111阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】哈希算法(上):如何防止数据库中的用户信息被脱库?

一、什么是哈希算法?1.定义将任意长度的二进制值串映射成固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。2.如何设计一个优秀的哈希算法?①单向哈希:从哈希值不能反向推导出哈希值(所以哈希算法也叫单向哈希算法)。②篡改无效:对输入敏感,哪怕原始数据只修改一个Bit,最后得到的哈希值也大不相同。③散列冲突:散列冲突的概率要很小,对...
原创
69阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?

一、二叉查找树(Binary Search Tree)1. 二叉查找树特点二叉查找树是二叉树中最常用的一种类型,也叫二叉搜索树。顾名思义,二叉查找树是为了实现快速查找而生的。不过,它不仅仅支持快速查找一个数据,还支持快速插入、删除一个数据2. 二叉查找树定义二叉查找树要求,在树中的任意一个节点,其左子树中的每个节点的值,都要小于这个节点的值,而右子树节点的值都大于这个节点的值3...
原创
139阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】二叉树基础(上):什么样的二叉树适合用数组来存储?

一、树1.树的常用概念根节点、叶子节点、父节点、子节点、兄弟节点,还有节点的高度、深度以及层数,树的高度。2.概念解释节点:树中的每个元素称为节点父子关系:相邻两节点的连线,称为父子关系根节点:没有父节点的节点叶子节点:没有子节点的节点父节点:指向子节点的节点子节点:被父节点指向的节点兄弟节点:具有相同父节点的多个节点称为兄弟节点关系节点的高度:节点到叶子节点的最长路径所包...
原创
61阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】散列表(下):为什么散列表和链表经常会一起使用?(LRU、LinkedHashMap)

目录一、为什么散列表和链表经常放在一起使用?二、散列表和链表如何组合起来使用?三、课后思考一、为什么散列表和链表经常放在一起使用?1.散列表的优点:支持高效的数据插入、删除和查找操作2.散列表的缺点:不支持快速顺序遍历散列表中的数据3.只能将数据转移到数组,然后排序,最后再遍历数据。4.我们知道散列表是动态的数据结构,需要频繁的插入和删除数据,那么每次顺序遍历之前都需要先...
原创
74阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】散列表(中):如何打造一个工业级水平的散列表?(HashMap、ThreadLocalMap)

目录一、如何设计散列函数?二、如何根据装载因子动态扩容?三、如何选择散列冲突解决方法?四、课后思考一、如何设计散列函数?1.要尽可能让散列后的值随机且均匀分布,这样会尽可能减少散列冲突,即便冲突之后,分配到每个槽内的数据也比较均匀。2.散列函数的设计也不能太复杂,太复杂就会太耗时间,也会影响到散列表的性能。3.常见的散列函数设计方法:直接寻址法、平方取中法、折叠法、随机...
原创
104阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】散列表(上):Word文档中的单词拼写检查功能是如何实现的?(HashMap、TreeMap)

一、散列表的由来?1.散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。2.需要存储在散列表中的数据我们称为键,将键转化为数组下标的方法称为散列函数,散列函数的计算结果称为散列值。3.将数据存储在散列值对应的数组下标位置。二、如何设计散列函数?总结3点设计散列函数的基本要求1.散列函数计算得到的散列值是一个非负整数。2.若k...
原创
127阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】跳表:为什么Redis一定要用跳表来实现有序集合?(Redis跳表、ConcurrentSkipListMap、红黑树、TreeMap)

目录一、什么是跳表?二、跳表的时间复杂度?三、跳表的空间复杂度及如何优化?四、高效的动态插入和删除?五、跳表索引动态更新?六、课后作业一、什么是跳表?为一个值有序的链表建立多级索引,比如每2个节点提取一个节点到上一级,我们把抽出来的那一级叫做索引或索引层。如下图所示,其中down表示down指针,指向下一级节点。以此类推,对于节点数为n的链表,大约可以建立log2n...
原创
101阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】二分查找(下):如何快速定位IP对应的省份地址?

一、四种常见的二分查找变形问题1.查找第一个值等于给定值的元素2.查找最后一个值等于给定值的元素3.查找第一个大于等于给定值的元素4.查找最后一个小于等于给定值的元素二、适用性分析1.凡事能用二分查找解决的,绝大部分我们更倾向于用散列表或者二叉查找树,即便二分查找在内存上更节省,但是毕竟内存如此紧缺的情况并不多。2.求“值等于给定值”的二分查找确实不怎么用到,二分查找更适合用在...
原创
136阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】二分查找(上):如何用最省内存的方式实现快速查找功能?

一、什么是二分查找?二分查找针对的是一个有序的数据集合,每次通过跟区间中间的元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间缩小为0。二、时间复杂度分析?1.时间复杂度假设数据大小是n,每次查找后数据都会缩小为原来的一半,最坏的情况下,直到查找区间被缩小为空,才停止。所以,每次查找的数据大小是:n,n/2,n/4,…,n/(2^k),…,这是一个等比数列。当...
原创
95阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】排序优化:如何实现一个通用的、高性能的排序函数?

目录一、如何选择合适的排序算法?1.排序算法一览表2.为什选择快速排序?二、如何优化快速排序?三、通用排序函数实现技巧四、课后思考一、如何选择合适的排序算法?1.排序算法一览表时间复杂度 是稳定排序? 是原地排序?冒泡排序 O(n^2) 是 是插入排序 O(n^2) 是 是选择排序 O(n^2) 否 是快速排序 O(nlogn) 否 是归并排序 O...
原创
89阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】线性排序:如何根据年龄给100万用户数据排序?

一、线性排序算法介绍1.线性排序算法包括桶排序、计数排序、基数排序。2.线性排序算法的时间复杂度为O(n)。3.此3种排序算法都不涉及元素之间的比较操作,是非基于比较的排序算法。4.对排序数据的要求很苛刻,重点掌握此3种排序算法的适用场景。二、桶排序(Bucket sort)1.算法原理:1)将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行快速排序。2)桶内排完序之...
原创
65阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】排序(下):如何用快排思想在O(n)内查找第K大元素?

目录一、分治思想二、归并排序三、快速排序四、归并排序与快速排序的区别五、课后思考一、分治思想1.分治思想:分治,顾明思意,就是分而治之,将一个大问题分解成小的子问题来解决,小的子问题解决了,大问题也就解决了。2.分治与递归的区别:分治算法一般都用递归来实现的。分治是一种解决问题的处理思想,递归是一种编程技巧。二、归并排序1. 算法原理先把数组从中间分成前后两...
原创
148阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】排序(上):为什么插入排序比冒泡排序更受欢迎?

目录一、排序方法与复杂度归类二、如何分析一个“排序算法”?三、冒泡排序四、插入排序五、选择排序六、课后思考一、排序方法与复杂度归类(1)几种最经典、最常用的排序方法:冒泡排序、插入排序、选择排序、快速排序、归并排序、计数排序、基数排序、桶排序。(2)复杂度归类冒泡排序、插入排序、选择排序 O(n^2)快速排序、归并排序 O(nlogn)计数排序、基数排序、桶...
原创
62阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】递归:如何用三行代码找到“最终推荐人”?

目录一、什么是递归?二、为什么使用递归?递归的优缺点?三、什么样的问题可以用递归解决呢?四、如何实现递归?五、递归常见问题及解决方案六、如何将递归改写为非递归代码?七、课后思考一、什么是递归?1.递归是一种非常高效、简洁的编码技巧,一种应用非常广泛的算法,比如DFS深度优先搜索、前中后序二叉树遍历等都是使用递归。2.方法或函数调用自身的方式称为递归调用,调用称...
原创
75阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】队列:队列在线程池等有限资源池中的应用

一、如何理解“队列”?1、队列是一种操作受限的线性表数据结构。2、队列最大的特点就是先进先出。3、最基本的操作:入队 enqueue(),放一个数据到队列尾部;出队 dequeue(),从队列头部取一个元素。二、顺序队列和链式队列1、用数组实现的队列叫顺序队列,用链表实现的队列叫链式队列。2、队列需要两个指针:一个是 head 指针,指向队头;一个是 tail 指针,指向队尾。...
原创
113阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】栈:如何实现浏览器的前进和后退功能?

一、如何理解“栈”?1、栈是一种操作受限的数据结构,只支持入栈和出栈操作。2、典型的“栈”结构:后进者先出,先进者后出。3、从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。4、特定的数据结构是对特定场景的抽象,而且,数组或链表暴露了太多的操作接口,操作上的确灵活自由,但使用时就比较不可控,自然也就更容易出错。二、如何实现一个“栈”?1、栈既可以用数...
原创
104阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】链表(下):如何轻松写出正确的链表代码?

目录一、理解指针或引用的含义二、警惕指针丢失和内存泄漏(单链表)1.插入节点2.删除节点三、利用“哨兵”简化实现难度1.什么是“哨兵”?2.未引入“哨兵”的情况3.引入“哨兵”的情况4.“哨兵”还有哪些应用场景?四、重点留意边界条件处理五、举例画图,辅助思考六、多写多练,没有捷径:5个常见的链表操作及leetcode地址一、理解指针或引用的含义...
原创
103阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】链表(上):如何实现LRU缓存淘汰算法?

一、什么是链表?1.和数组一样,链表也是一种线性表。2.从内存结构来看,链表的内存结构是不连续的内存空间,是将一组零散的内存块串联起来,从而进行数据存储的数据结构。3.链表中的每一个内存块被称为节点Node。节点除了存储数据外,还需记录链上下一个节点的地址,即后继指针next。二、为什么使用链表?即链表的特点1.插入、删除数据效率高O(1)级别(只需更改指针指向即可),随机访问效率...
原创
46阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】什么是数组?引出jvm垃圾回收

一、为什么很多编程语言的数组都是从0开始编号的?1、从数组存储的内存模型上来看,“下标”确切的说法就是一种“偏移”,相比从1开始编号,从0开始编号会少一次减法运算,数组作为非常基础的数组结构,通过下标随机访问元素又是非常基础的操作,效率的优化就要尽可能的做到极致。2、主要的原因是历史原因,C语言的设计者是从0开始计数数组下标的,之后的Java、JS等语言都进行了效仿,或者说是为了减少从C转向...
原创
223阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度

一、复杂度分析的4个概念1.最坏情况时间复杂度:代码在最理想情况下执行的时间复杂度。2.最好情况时间复杂度:代码在最坏情况下执行的时间复杂度。3.平均时间复杂度:用代码在所有情况下执行的次数的加权平均值表示。4.均摊时间复杂度:在代码执行的所有复杂度情况中绝大部分是低级别的复杂度,个别情况是高级别复杂度且发生具有时序关系时,可以将个别高级别复杂度均摊到低级别复杂度上。基本上均摊结果就等于...
原创
65阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?

目录一、什么是复杂度分析?二、为什么要进行复杂度分析?三、如何进行复杂度分析? 1. 大O表示法2.复杂度分析法则四、常用的复杂度级别?五、如何掌握好复杂度分析方法?一、什么是复杂度分析?1.数据结构和算法解决是“如何让计算机更快时间、更省空间的解决问题”。2.因此需从执行时间和占用空间两个维度来评估数据结构和算法的性能。3.分别用时...
原创
90阅读
0评论
0点赞
发布博客于 1 年前

【数据结构与算法之美】如何抓住重点,系统高效地学习数据结构与算法?

一、数据结构和算法是什么1、数据结构是指一组数据的存储结构2、算法就是操作数据的方法3、数据结构和算法是相辅相成的,数据结构是为算法服务的,而算法要作用在特定的数据结构之上二、学习的重点在什么地方数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。在学习数据结构和算法的过程中,要学习它的「来历」、「...
原创
78阅读
0评论
0点赞
发布博客于 1 年前

【算法实战】Redis 数据结构总结

Redis说明:被叫作非关系型数据库,通过“键”来查询“值”,被用作内存数据库,支持将数据存储在硬盘;键数据类型:字符串;值数据类型:字符串、列表、字典、集合、有序集合;底层数据结构 压缩列表: 比数组节省内存,数组固定单元;支持多种类型、连续内存、读取效率高; 双向链表: listnode包含前、后指针;list包含首、尾指针和长度; ...
原创
73阅读
0评论
0点赞
发布博客于 1 年前

Docker Desktop for Windows 坑 Idea 启动报错:Address already in use: bind

目录报错信息原因:解决方法:1. 用管理员模式打开windows shell2. 命令行停用Hyper-v (也可以在控制面板中停用Hyper-v)3. 命令行为 Idea 设置保留端口69424. 命令行重新启用Hyper-v 并 重启 windows 系统(也可以在控制面板中启用Hyper-v)5.如何在控制面板启/停Hyper-v,如果在命令行操作请...
原创
204阅读
0评论
0点赞
发布博客于 1 年前

idea 常用插件集合

UMLSupport分析依赖冲突插件 Maven HelperRESTful 服务开发辅助工具集RestfulToolkitCodeGlance 是一款代码编辑区缩略图插件Mybatis Log PluginGenerateAllSetter阿里代码规约检测:Alibaba Java Coding Guidelines自动生成序列图插件:SequenceDiagram快捷键提示...
原创
233阅读
0评论
0点赞
发布博客于 1 年前

MySQL索引详解

一、什么是索引?  索引是对数据库表中的一列或多列值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息。二、索引的作用?  索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提高性能(查询速度)三、优点:通过创建唯一性索引,可以保证数据库表中的每一行数据的唯一性。 可以加快数据的检索速度 可以加速表与表之间的连接 在使用分组和排序进行...
原创
85阅读
0评论
0点赞
发布博客于 1 年前

mysql 各种级联查询后更新(update select)

目录mysql 各种级联查询后更新(update select).级联更新1:级联更新2:级联更新3:级联更新4:mysql 各种级联查询后更新(update select).CREATE TABLE `tb1` ( `id` int(11) NOT NULL, `A` varchar(100) default NULL, `B` varchar(...
转载
124阅读
0评论
0点赞
发布博客于 1 年前

SPRING BOOT 注解之OBJECTPROVIDER源码追踪

最近依旧在学习阅读Spring Boot的源代码,在此过程中涉及到很多在日常项目中比较少见的功能特性,对此深入研究一下,也挺有意思,这也是阅读源码的魅力之一。这里写成文章,分享给大家。自动配置中的ObjectProvider在阅读Spring Boot自动配置源码中关于Tomcat的配置时,看到这样如下的自动配置配置源代码。@Configuration(proxyBeanMethods...
转载
104阅读
0评论
0点赞
发布博客于 1 年前

java8 教程

1.lambda表达式《java8 Lambda表达式简介》《java8 lambda表达式,方法的引用以及构造器的引用》2.函数式接口《java8 函数式接口简介》《JAVA8 Function接口以及同类型的特化的接口》《JAVA8 Consumer接口》《JAVA8 Supplier接口》《JAVA8 UnaryOperator接口》《JAVA8 BiCo...
转载
143阅读
0评论
0点赞
发布博客于 1 年前

重新认识Spring Boot

Spring Boot 的特性方便的创建可独立运行的Spring应用程序直接内嵌Tomcat、Jetty或Undertow简化了项目的构建配置为Spring及第三方库提供自动配置提供生产级特性无需生成代码或进行XML配置Spring Boot的四大核心自动配置 - Auto Configuration起步依赖 - Starter Dependency命令行界面 ...
原创
74阅读
0评论
1点赞
发布博客于 1 年前

极客帮数据结构与算法总结

极客帮数据结构与算法总结一、数据结构与算法总览1、授人予渔-学习方法脑图2、算法和数据结构脑图二、训练准备和复杂度分析1、训练环境设置、编码技巧和Code Style1)工具google mac:iTerm2+zsh windows:microsoft new terminal VSCode;IntelliJ; LeetCode plugin...
原创
260阅读
0评论
0点赞
发布博客于 1 年前

springboot application.properties文件加载顺序

jar 包外部的 application-{profile}.properties 或 .yml jar 包内部的 application-{profile}.properties 或 .yml jar 包外部的 application.properties 或 .yml jar 包内部的 application.properties 或 .yml 默认...
原创
541阅读
0评论
0点赞
发布博客于 1 年前

Vue开发实战 教程学习

目录指令组件单文件模式双向绑定虚拟DOM计算属性侦听器 watch计算属性 computed vs 侦听器 watchVUE 生命周期VUE函数式组件?高级特性 provide 和 injecttemplate 和 JSXVUE常用工具VUE 常用类库指令 mustache 模版引擎 jquery模板引擎 ...
原创
164阅读
0评论
0点赞
发布博客于 1 年前

elasticsearch 百亿级数据检索案例与原理

一、前言 数据平台已迭代三个版本,从头开始遇到很多常见的难题,终于有片段时间整理一些已完善的文档,在此分享以供所需朋友的实现参考,少走些弯路,在此篇幅中偏重于ES的优化,关于HBase,Hadoop的设计优化估计有很多文章可以参考,不再赘述。【目前生产已存储百亿数据,性能良好(但未使用分词功能)】二、需求说明项目背景: 在一业务系统中,部分表每天的数据量...
转载
194阅读
0评论
0点赞
发布博客于 1 年前

ES系列目录

ES系列一、CentOS7安装ES 6.3.1ES系列二、CentOS7安装ES head6.3.1ES系列三、基本知识准备ES系列四、ES6.3常用api之文档类apiES系列五、ES6.3常用api之搜索类apiES系列六、ES字段类型ES系列七、ES-倒排索引基础知识ES系列八、正排索Doc Values和Field DataES系列九、ES优化聚合查询之深度...
转载
53阅读
0评论
0点赞
发布博客于 1 年前

vscode问题解决 Unexpected console statement (no-console)

目录方法一:修改配置文件方法二:不改配置文件,加前缀window.方法一:修改配置文件修改package.json中的eslintConfig:{} 中的 “rules”:{},增加一行代码: "no-console":"off""eslintConfig": { "root": true, "env": { "node": true },...
原创
507阅读
0评论
0点赞
发布博客于 1 年前

HashMap1.8与ConcurrentHashMap1.8线程安全比较

HashMap大家再熟悉不过了,它是java专门用来存储K-V类型的集合框架,它是线程不安全的,同时它的底层原理也是面试必问,但是ConcurrentHashMap大家对他了解多少呢?大家可能只知道它是线程安全的,但它的底层是怎么实现的呢?它在HashMap的基础之上做了什么优化呢?我今天就带大家来了解一下HashMap与ConcurrentHashMap的不同之处。1、HashMap初始化时...
转载
80阅读
0评论
0点赞
发布博客于 1 年前

Java中的锁[原理、锁优化、CAS、AQS]

1、为什么要用锁?锁-是为了解决并发操作引起的脏读、数据不一致的问题。2、锁实现的基本原理2.1、volatileJava编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方便。volatile在多处理器开发中保证了共享变量的“ 可见性”。可见性的意思是当一个...
转载
55阅读
0评论
0点赞
发布博客于 1 年前

Java NIO之Selector(选择器)

历史回顾:Java NIO 概览Java NIO 之 Buffer(缓冲区)Java NIO 之 Channel(通道)其他高赞文章:面试中关于Redis的问题看这篇就够了一文轻松搞懂redis集群原理及搭建与使用超详细的Java面试题总结(三)之Java集合篇常见问题一 Selector(选择器)介绍Selector一般称 为选择器,当然你也可以翻译为多...
转载
119阅读
0评论
0点赞
发布博客于 1 年前

学会了这些技术,你离BAT大厂不远了

每一个程序员都有一个梦想,梦想着能够进入阿里、腾讯、字节跳动、百度等一线互联网公司,由于身边的环境等原因,不知道 BAT 等一线互联网公司使用哪些技术?或者该如何去学习这些技术?或者我该去哪些获取这些技术资料?没关系,平头哥一站式服务,上面统统不是问题。平头哥整理了 BAT 等一线大厂的必备技能,并且帮你准备了对应的资料。对于整理出来的技术,如果你掌握的不牢固,那就赶快巩固,如果你还没有涉及,现在...
转载
94阅读
0评论
0点赞
发布博客于 1 年前

疯狂创客圈 JAVA 高并发 总目录

无编程不创客,疯狂创客圈,一大波编程高手正在交流、学习中! 疯狂创客圈: JAVA 高并发 研习社群, QQ群:104131248(已满)236263776 (请加此群)疯狂创客圈 经典图书 : 《Netty Zookeeper Redis 高并发实战》 面试必备 + 面试必备 +面试必备机械工业出版社 《Netty Redis Zooke...
转载
373阅读
0评论
0点赞
发布博客于 1 年前

Reactor模式

疯狂创客圈,一个Java 高并发研习社群【博客园 总入口】疯狂创客圈,倾力推出:面试必备 + 面试必备 + 面试必备的基础原理+实战 书籍 《Netty Zookeeper Redis 高并发实战》写在前面​大家好,我是 高并发的实战社群【疯狂创客圈】尼恩。Reactor模式非常重要,无论开发、还是面试。本文的内容,在《Netty Zookeeper Redi...
转载
126阅读
0评论
0点赞
发布博客于 1 年前

怎样理解阻塞非阻塞与同步异步的区别?

老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。3 老张把响水壶放到火上,立等水开。(异步阻...
转载
24阅读
0评论
0点赞
发布博客于 1 年前

Netty实现长连接服务的各种难点和可优化点

推送服务还记得一年半前,做的一个项目需要用到 Android 推送服务。和 iOS 不同,Android 生态中没有统一的推送服务。Google 虽然有Google Cloud Messaging,但是连国外都没统一,更别说国内了,直接被墙。所以之前在 Android 上做推送大部分只能靠轮询。而我们之前在技术调研的时候,搜到了jPush的博客,上面介绍了一些他们的技术特点,他们主...
转载
660阅读
0评论
3点赞
发布博客于 1 年前

HashMap源码分析

目录一、数据模型二、重要属性三、构造方法四、普通方法put()resize()get()五、总结一、数据模型​ 在网上看过一些所谓的HashMap源码分析,大部分依旧是比较抽象的。究其原因,主要还是对HashMap的数据结构不理解。以下以图示展示。HashMap中存在一个内部类: static class Node<K,V> im...
转载
59阅读
0评论
0点赞
发布博客于 1 年前

MySQL索引原理

为什么使用B-Tree(B+Tree)上文说过,红黑树等数据结构也可以用来实现索引,但是文件系统及数据库系统普遍采用B-/+Tree作为索引结构,这一节将结合计算机组成原理相关知识讨论B-/+Tree作为索引的理论基础。一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。这样的话,索引查找过程中就要产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗...
转载
53阅读
0评论
0点赞
发布博客于 1 年前

Mysql索引类型Btree和Hash的区别以及使用场景

遇到单表数据量大的时候很多开发者都会想到给相对的字段建立索引来提高性能(mysql索引的使用),但很少会去关注索引的类型该如何选择,在mysql中支持有两种类型,最常用的也是默认的Btree类型,其次就是最容易被忽略的Hash类型。下面将分别介绍两种索引类型的区别。Btree类型的索引,Btree又称b+树(1)所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰...
转载
161阅读
0评论
0点赞
发布博客于 1 年前

java 三种单例模式

目录饿汉单例模式懒汉双锁单例模式懒汉静态内部类单例模式调用测试输出结果饿汉单例模式/** * 单例模式 饿汉式 * 线程安全,调用效率高,但是不能延时加载 */public class HungrySimpleInstance { private HungrySimpleInstance(){ System.out.println("...
原创
72阅读
0评论
0点赞
发布博客于 1 年前

玩转Spring全家桶笔记 第九章:重新认识Spring Boot

Spring Boot 的特性方便的创建可独立运行的Spring应用程序直接内嵌Tomcat、Jetty或Undertow简化了项目的构建配置为Spring及第三方库提供自动配置提供生产级特性无需生成代码或进行XML配置Spring Boot的四大核心自动配置 - Auto Configuration起步依赖 - Starter Dependency命令行界面 ...
原创
77阅读
0评论
0点赞
发布博客于 1 年前

Spring高级进阶:BeanFactoryPostProcessor

BeanFactoryPostProcessor是实现spring容器功能扩展的重要接口,例如修改bean属性值,实现bean动态代理等。很多框架都是通过此接口实现对spring容器的扩展,例如mybatis与spring集成时,只定义了mapper接口,无实现类,但spring却可以完成自动注入,是不是很神奇? 本文将通过简单的例子,展现BeanFactoryPostProcessor的扩展能力...
转载
52阅读
0评论
0点赞
发布博客于 1 年前

布隆过滤器其实很简单

布隆过滤器的作用:是判断某数据一定不存在或者可能存在的方法; 布隆过滤器的实现方式:利用多个哈希函数标记“位”来记录数据; 布隆过滤器的应用举例: 邮件黑名单过滤器判断邮件地址是否在黑名单中;   网络爬虫中判断某个URL是否已经被爬取过。...
原创
164阅读
0评论
0点赞
发布博客于 2 年前

Netty 学习 第二章:Netty 源码:从“点”(领域知识)的角度剖析

目录1、什么是经典的三种 I/O 模式 ?2、Netty 对三种 I/O 模式的支持 ?3、为什么 Netty 仅支持 NIO 了?4、为什么 Netty 有多种 NIO 实现?5、NIO 一定优于 BIO 么?6、Netty 怎么切换 I/O 模式?1、什么是经典的三种 I/O 模式 ?三种I/O模式1)阻塞与非阻塞菜没好,要不要死等 -> 数...
原创
63阅读
0评论
0点赞
发布博客于 2 年前

github 设置本地ssh登录提交

输入命令ssh-keygen -t rsa -C "username" (注:username为你git上的用户名),如果执行成功。返回:Generating public/private rsa key pair.Enter file in which to save the key (/Users/username/.ssh/id_rsa): //这里的use...
转载
171阅读
0评论
0点赞
发布博客于 2 年前

vue常用命令

调试运行:npm run build生成报告:npm run build --report
原创
34阅读
0评论
0点赞
发布博客于 2 年前

VSCode 开发Vue必备插件

以下就是开发Vue必备插件:Vetur —— 语法高亮、智能感知、Emmet等包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个Ctrl需要同时按着)EsLint —— 语法纠错Debugger for Chrome —— 映射vscode上的断点到chrome上,方便调试(配置有点麻烦,其实我没用这个)Auto Close ...
转载
59阅读
0评论
0点赞
发布博客于 2 年前

Dubbo no provider available for the service错误解决

网上找答案,其他都没问题,最后原因是没配置扫描包:dubbo: scan: base-packages: cn.***.cloud.user.service.impl
原创
203阅读
0评论
0点赞
发布博客于 2 年前

DockerSwarm 集群环境搭建

一、简介1. 什么是docker swarm?Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令。目前,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具。它可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker ...
转载
55阅读
0评论
0点赞
发布博客于 2 年前

SpeechSynthesisUtterance 语音合成使用

SpeechSynthesisUtterance基本介绍SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音.也包含一些配置项,指定如何去阅读(语言,音量,音调)等SpeechSynthesisUtterance基本属性SpeechSynthesisUtterance.lang 获取并设置话语的语言SpeechSynthesisUtte...
转载
1018阅读
2评论
0点赞
发布博客于 2 年前