java技术圈 为您找到相关结果 53

自己写LinkedList GoLinkedList

##前言: java GoLinkedList的简易实现,代码中注释比较详尽,通俗易懂,注意事项亦在注解中标明。 ###正文: GoLinkedList.java package com.anteoy.dataStructuresAndAlgorithm.javav2.my; import java.util.Iterator; /** * Created by zhoudazhuang on 17-3-1. * Description: 简易Linkedlist实现 */ public class GoLinkedList implements Iterable{ //当前容量 size private int currentSize; //附加的数据域 用来帮助迭代气检测集合...阅读全文

博文 2019-04-04 09:50:50 www.allocmem.com

简析hashmap的实现原理

提一下哈希表,看下百科: 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。 简单理解:1.通过某种算法(使用key的hash算法),计算出key的磁盘散列值,优点为速度和易用。 2.hashmap底层实现仍为数组(HashMap 底层就是一个数组结构,数组中的每一项又是一个链表。数组每个元素里存的是链表的表头信息,有了表头就可以遍...阅读全文

博文 2019-04-04 09:46:30 www.allocmem.com

简析hashset的实现原理

hashset底层为hashmap。 源码如下: /** * Constructs a new, empty set; the backing HashMap instance has * default initial capacity (16) and load factor (0.75). */ public HashSet() { map = new HashMap<>(); } 默认 initial capacity(hashmap底层数组大小)为16,load factor 为 0.75 add() 方法 /** * Adds the specified element to this set if it is not already present. * Mo...阅读全文

博文 2019-04-04 09:46:40 www.allocmem.com

自己写GoBinaryHead 二叉堆binaryheap实现优先队列(堆)

##前言: java GoBinaryHead二叉堆binaryheap实现优先队列(堆) 1. 二叉堆是完全二叉树 因为完全二叉数的规律(root始终最小) 用数组实现此数据结构优于链表 2. ,注意在插入和删除时,需要在数组实现的完全二叉树结构代码中,对原有节点数据进行上滤和下滤,插入时,和子树的根节点比较, 只有比子树根节点大才能满足定义, 否则循环交换位置。堆内元素向下移动为 下滤,删除后空余的位置,从上至下找最小儿子节点填充 3. 在printHeap()方法中对数组的遍历使用了去null操作。 4. 代码中已给出比较详尽注释。 ###正文: GoBinaryHeap.java package com.anteoy.dataStructuresAndAlgorithm.javav2...阅读全文

博文 2019-04-04 09:51:22 www.allocmem.com

速查jvm字节码指令

JVM指令集参考 0x00 nop 什么都不做 0x01 aconst_null 将null推送至操作栈栈顶 0x02 iconst_m1 将int型-1推送至操作栈栈顶 0x03 iconst_0 将int型0推送至操作栈栈顶 0x04 iconst_1 将int型1推送至操作栈栈顶 0x05 iconst_2 将int型2推送至操作栈栈顶 0x06 iconst_3 将int型3推送至操作栈栈顶 0x07 iconst_4 将int型4推送至操作栈栈顶 0x08 iconst_5 将int型5推送至操作栈栈顶 0x09 lconst_0 将long型0推送至操作栈栈顶 0x0a lconst_1 将long型1推送至操作栈栈顶 0x0b fconst_0 将float型0推送至操作栈栈顶...阅读全文

博文 2019-04-03 14:16:04 www.allocmem.com

Golang map 的底层实现

在开发过程中,map是必不可少的数据结构,在Golang中,使用map或多或少会遇到与其他语言不一样的体验,比如访问不存在的元素会返回其类型的空值、map的大小究竟是多少,为什么会报"cannot take the address of"错误,遍历map的随机性等等。 本文希望通过研究map的底层实现,以解答这些疑惑。 基于Golang 1.8.3 1. 数据结构及内存管理 hashmap的定义位于 src/runtime/hashmap.go 中,首先我们看下hashmap和bucket的定义: type hmap struct { count int // 元素的个数 flags uint8 // 状态标志 B uint8 // 可以最多容纳 6.5 * 2 ^ B 个元素,6.5为装载...阅读全文

博文 2019-05-16 09:40:27 简书

「竞品分析」项目协作管理平台-Teambition和CORNERSTONE--深度...

一、分析目的通过分析2B产品中的团队协作管理软件的对比分析,用于为公司团队协作软件的选型做产考。二、竞品归属市场概况2.1.目标用户群及需求主要面向企业用户,用于解决企业不同地域以及不同职能部门之间的团队协作难点。2.2.市场规模中国大概有4000万+企业,如采用人均年费制,均价200+/人/年,按平均一个企业或团队最少10人算,市场规模可在千亿左右。因此如果能培养行业使用习惯,市场价值可观。2.3.针对笔者所在团队的需求详细分析如下:1、需求管理;能够对需求池进行管理。2、迭代管理;能够对产品迭代版本进行管理。3、故事墙;能够查看所有工作任务的状态。4、缺陷管理;能够对开发中的缺陷进行管理。5、数据看板;能够查看团队中每个员工的工作动态(剩余工作量),数据看板。6、知识库管理;能够将项目开...阅读全文

博文 2019-08-14 08:36:30 CORNERSTONE

解剖Go语言map底层实现

map是Go语言中基础的数据结构,在日常的使用中经常被用到。但是它底层是如何实现的呢? Golang中map的底层实现是一个散列表,因此实现map的过程实际上就是实现散表的过程。在这个散列表中,主要出现的结构体有两个,一个叫hmap(a header for a go map),一个叫bmap(a bucket for a Go map,通常叫其bucket)。这两种结构的样子分别如下所示:hmap: 图中有很多字段,但是便于理解map的架构,你只需要关心的只有一个,就是标红的字段:buckets数组。Golang的map中用于存储的结构是bucket数组。而bucket(即bmap)的结构是怎样的呢? bucket: 相比于hmap,bucket的结构显得简单一些,标红的字段依然是“核心”...阅读全文

博文 2019-05-16 09:39:25 RyuGou的博客

拨开概念迷雾,国内网络制式和4G频段科普

随着4G的普及,“五模十三频,七模十九频”之类的电信专业用语开始来轰炸消费者。除了要判断能否支持自己的手机卡之外,现在还要再考虑手机能否支持相应的4G频段。如果希望购买的是水货手机,那还要考虑国内外的网络频段差异,以及3、4G信号回落的问题。很多人听着这些用语或许都已经头大了,所以本文将对常用的网络制式进行科普,希望本文能帮助大家,看懂手机参数表中的网络支持列表,能判断机器是否支持你的手机卡,能否使用国内的4G,以及其是否有破解网络的潜力。网络频段分配但怎么知道自己的手机卡要什么网络制式呢?这又是个深刻的人生命题。这里简单科普一下网络制式问题。所有故事都要从电磁波的特性说起,从红外紫外可见光,到wifi和手机信号,都是电磁波……好吧,篇幅有限,说点结论性的东西。手机的2/3/4G网络和wif...阅读全文

高性能场景下,HashMap的优化使用建议

最近在技术博客中看到一篇关于 HashMap 的优化使用建议,觉得非常有意思,于是转载该篇博文,和大家一起分享技术。 HashMap 在JDK 7 与 JDK8 下的差别顺便理一下HashMap.get(Object key)的几个关键步骤,作为后面讨论的基础。 1.1 获取key的HashCode并二次加工因为对原Key的hashCode质量没信心,怕会存在大量冲突,HashMap进行了二次加工。 JDK7的做法: h ^= (h >>> 20) ^ (h >>> 12);return h ^ (h >>> 7) ^ (h >>> 4); JDK8 因为对自己改造过的哈希大量冲突时的红黑树有信心,所以简单一些,只是把高16位异或下来。 return h ^ (h >>> 16); 所以即使...阅读全文

博文 2021-04-01 12:33:44 Chares's Blog

B+树及插入和删除操作详解

本节介绍一种应文件系统所需而生的一种 B-树的变型树——B+树。前面介绍了B-树,B+树其实同B-树有许多相同之处,本节将用B-树同B+树通过对比两者的差异来介绍B+树。 什么是B+树? 一颗 m 阶的 B+树和 m 阶的 B-树的差异在于: 有 n 棵子树的结点中含有 n 个关键字; 在上一节中,在 B-树中的每个结点关键字个数 n 的取值范围为⌈m/2⌉ -1≤n≤m-1,而在 B+树中每个结点中关键字个数 n 的取值范围为:⌈m/2⌉≤n≤m。 所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。 所有的非终端结点(非叶子结点)可以看成是索引部分,结点中仅含有其子树(根结点)中的最大(或最小)关键字。 例如,图 1 中所示...阅读全文

博文 2021-04-09 06:27:02 data.biancheng.net

LSM 算法的原理是什么?

其实大家提的 LSM 最开始论文里面都使用树做搜索结构的, 现在在用的都不是严格的树结构了。 如[这篇文章](https://www.igvita.com/2012/02/06/sstable-and-log-structured-storage-leveldb/)解释的一样,从最朴素的角度上来讲可以把`SSTable(sorted string table)`作为一个连续的kv构成的块。SSTable +-+---+----+---+ |k| v | k | v | ... +-+---+----+---+对于一个大文件来说,读取整个文件以后就能构成一个各个键值的索引,当然可以在文件追加一块索引,和文件一起保存。Index +-+-------+ |k|offset | +-+------...阅读全文

博文 2020-02-19 13:03:37 知乎

[Hive基础]-- 动态分区与静态分区_余额不足

前言 1、Hive分区的概念与传统关系型数据库分区不同。 2、传统数据库的分区方式:如oracle,分区独立存在于字段,里面存储真实的数据,在数据进行插入的时候自动分配分区。 3、Hive的分区方式:Hive实际是存储在HDFS上的抽象,Hive的一个分区名对应一个目录名,子分区名就是子目录名,并非一个实际字段。 即,当在插入数据的时候指定分区,其就是新建一个目录或者子目录,或者在原有的目录上添加数据文件。 动态分区和静态分区(Hive-0.14以后的特性) 1、动态分区:分区不固定;关键在于“动态”,不需要人为使用 alter table 命令执行添加分区 2、静态分区:分区固定,需要认为使用 alter table 命令添加分区 最大区别:动态分区与静态分区区别就是不指定分区目录,由系统...阅读全文

博文 2020-08-09 05:31:55 CSDN博客_kudu 静态分区 动态分区

Netty之ChannelPipeline理解二

Netty之ChannelPipeline理解二 ChannelPipeline不是单独存在,它肯定会和Channel、ChannelHandler、ChannelHandlerContext关联在一起,所以有关概念这里一起讲。 参考:https://www.cnblogs.com/qdhxhz/p/10234908.html ChannelPipeline不是单独存在,它肯定会和Channel、ChannelHandler、ChannelHandlerContext关联在一起,所以有关概念这里一起讲。 ChannelHandler 概念 handler.png ChannelHandler下主要是两个子接口 ChannelInboundHandler(入站): 处理输入数据和Channel...阅读全文

博文 2021-08-27 06:22:43 简书

操作系统内存管理_黄规速, 逆水行舟,不进则退。

1、 计算机的存储体系 内存是计算机很重要的一个资源,因为程序只有被加载到内存中才可以运行;此外,CPU所需要的指令与数据也都是来自内存的。可以说,内存是影响计算机性能的一个很重要的因素。 在介绍内存管理的细节前,先要了解一下分层存储器体系: 大部分的计算机都有一个存储器层次结构,即少量的非常快速、昂贵、易变的高速缓存(cache);若干兆字节的中等速度、中等价格、易变的主存储器(RAM);数百兆或数千兆的低速、廉价、不易变的磁盘。这些资源的合理使用与否直接关系着系统的效率。 CPU缓存(Cache Memory):是位于CPU与内存之间的临时存储器,它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存 读写速度不匹配的矛盾,因为CPU运算速度要比内...阅读全文

UEFI+GPT与BIOS+MBR各自有什么优缺点?

UEFI+GPT最好用64位操作系统。 似乎人人都可以张嘴就说“我懂电脑”,但是总有一些看起来完全不懂但实际上非常基础的东西让“懂”与“不懂”清晰地划清界限。比如UEFI+GPT就是其中之一,那些之前认为自己已经精通电脑的人,遇到这个东西,忽然发现自己连系统都不会装了。 尽管UEFI以及GPT从诞生迄今已经十余年了,但是由于它们的不普及性,导致对于绝大多数人来讲它们是完全陌生的 ,甚至根本就不知道还有这种东西。 但是由于Windows8操作系统的面世,预装Windows8的电脑开始统一采用UEFI+GPT,很多人被迫接触到,感觉就像突然从天上掉下来的东西一样,无所适从,一筹莫展—— “这到底是个什么东西呢?” 一旦出现系统问题,唯一能做的解决办法除了品牌机自带的系统还原,最大能力不过就是把U...阅读全文

Vim中如何快速进行光标移动?

Vim最大的特征与最大的困难就是纯键盘操作,所以快速移动光标是Vim的最基本技能。我接触Vim也有四个年头了, 曾经由于项目重构操作频繁而切换到了WebStorm,最近又由WebStorm 切换到了 Vim。 始终感觉光标移动是最大的痛处,同时又能从键盘操作获得极大的快乐。 下文便开始介绍那些常用的快捷键,先上图! 最近感受光标移动技能又一次升级了!来回顾一下我的Vim光标升级过程吧: 只会上下左右和插入(h, j, k, l, i)。所有操作都由这5个键来完成。这时候用Vim的键盘声因简直像打Dota一样。我大概持续了一个月。 学会了单词移动和文件头尾(w, b, $, ^, gg, G)。这时编辑起来不那么费力了,看起来还可以。这一阶段持续了两年…这两年里我学会了正则查找和替换(/xx,...阅读全文

博文 2020-04-09 13:24:02 Harttle Land

页 页表 页表项_WaneGi没有故事

五一假期前落下了几节操作系统的课,现在艰难的恶补中。。 以下是分页存储管理相关的一些知识点梳理。 首先我们应该知道的概念: 逻辑地址:是程序编译后,生成的目标模块进行编址时都是从0号开始编址,称之为目标模块的相对地址,即逻辑地址。 虚拟地址:计算机处理器的地址有32位和64位的两种,对应的虚拟地址的空间大小分别是2^32字节和2^64字节,字节用B表示。 页:分页存储管理将进程的逻辑地址空间划分为若干页(面),并且对其编号,号数从0开始,每个页(面)的大小称为页面大小,且大小应为2的幂。 物理块:将内存的物理地址空间划分为若干块,称为物理块,物理块与页(面)一一对应。 页表:又称页面映像表,存储在内存中,通过页表建立页(面)与物理块的索引。 下面通过举例子梳理一下: 假设我们已经知道了逻辑地...阅读全文

博文 2020-10-11 13:38:47 CSDN博客

JDK 9学习笔记 - (2)能屈能伸的String

背景String作为JDK最核心的数据类型之一,非常有必要专门学习一下,重点关注这4个文件jdk/src/java.base/share/native/libjava/String.cjdk/src/java.base/share/classes/java/lang/String.javajdk/src/java.base/share/classes/java/lang/StringLatin1.javajdk/src/java.base/share/classes/java/lang/StringUTF16.java存储无论是何种语言的何种实现,String本质上都是字节序列,所有可能的字符加起来就构成了字符集,给字符集中每个字符一个序号就是字符编码,使用最广泛的就是Unicode了,它几...阅读全文

博文 2020-06-11 04:52:36 知乎

Skip List--跳表(全网最详细的跳表文章没有之一)

登录注册写文章首页下载APPIT技术抽奖Skip List--跳表(全网最详细的跳表文章没有之一)fanrui关注赞赏支持Skip List--跳表(全网最详细的跳表文章没有之一)跳表是一种神奇的数据结构,因为几乎所有版本的大学本科教材上都没有跳表这种数据结构,而且神书《算法导论》、《算法第四版》这两本书中也没有介绍跳表。但是跳表插入、删除、查找元素的时间复杂度跟红黑树都是一样量级的,时间复杂度都是O(logn),而且跳表有一个特性是红黑树无法匹敌的(具体什么特性后面会提到)。所以在工业中,跳表也会经常被用到。废话不多说了,开始今天的跳表学习。 通过本文,你能 get 到以下知识: 什么是跳表? 跳表的查找、插入、删除元素的流程 跳表查找、插入、删除元素的时间复杂度 跳表插入元素时,如何动态...阅读全文

博文 2021-08-17 07:25:32 简书

CGI编程---简单实例_Gaoy9303的博客

要实现的效果:输入两个数,点击确定后,跳转页面显示二者的和 html代码: CGI1:hello CGI

请在下面填入数A 和 数B,按下确定后,可以获得二数相加的结果
A:<input name="num_a" size="5"/> B:<input name="num_b" size="5"/>
Result:<input name="result" size="10">
<input type="submit" value="OK">

HTML语言...阅读全文

博文 2021-06-14 12:54:16 CSDN博客

淘宝分布式NOSQL框架:Tair - 如果的事

Tair 分布式K-V存储方案 tair 是淘宝的一个开源项目,它是一个分布式的key/value结构数据的解决方案。 作为一个分布式系统,Tair由一个中心控制节点(config server)和一系列的服务节点(data server)组成, config server 负责管理所有的data server,并维护data server的状态信息;为了保证高可用(High Available),config server可通过hearbeat 以一主一备形式提供服务; data server 对外提供各种数据服务,并以心跳的形式将自身状况汇报给config server;所有的 data server 地位都是等价的。 tair集群的基本概念: configID,唯一标识一个tair集群...阅读全文

博文 2020-11-02 06:38:49 博客园

Hive内部表与外部表(外部表使用场景)_UniqueChunBlog

官网解释 Managed and External Tables By default Hive creates managed tables, where files, metadata and statistics are managed by internal Hive processes. A managed table is stored under the hive.metastore.warehouse.dir path property, by default in a folder path similar to /apps/hive/warehouse/databasename.db/tablename/. The default location can be over...阅读全文

博文 2021-11-01 12:23:34 CSDN博客

由阿里巴巴Java开发规约HashMap条目引发的故事-云栖社区

大热的《阿里巴巴Java开发规约》中有提到: 【推荐】集合初始化时,指定集合初始值大小。说明:HashMap使用如下构造方法进行初始化,如果暂时无法确定集合大小,那么指定默认值(16)即可: public HashMap (int initialCapacity) { this(initialCapacity, DEFAULT_LOAD_FACTOR); } 看到代码规约这一条的时候,我觉得是不是有点太 low 了,身为开发,大家都知道 HashMap 的原理。 什么?这个要通过插件监测?没必要吧,哪个开发不知道默认大小,何时 resize 啊,然后我和孤尽打赌随机咨询几位同学以下几个问题: HashMap 默认bucket数组多大? 如果new HashMap<>(19),bucket数组...阅读全文

博文 2020-07-14 09:57:56 阿里云

TCP 异常关闭研究分析 - 云+社区

更多腾讯海量技术文章,请关注云加社区:https://cloud.tencent.com/developer作者:谢代斌研究测试TCP断开和异常的各种情况,以便于分析网络应用(比如tconnd)断网的原因和场景,帮组分析和定位连接异常掉线的问题,并提供给TCP相关的开发测试人员作为参考。各个游戏接入都存在一定的掉线问题,而且有的游戏项目的掉线比例还比较高,现在互娱自研游戏的网络接入基本上都用的是tconnd和ProtocalHandler组件(该组件请参考附件的《TSF4G_ProtocalHandler开发指导手册》),因此参与其掉线原因分析和研究。在参与A项目的掉线问题研究分析过程中,tconnd增加了玩家每个连接的流水日志和ProtocalHandler增加了每个连接的Qos上报日志,...阅读全文

博文 2021-11-05 09:40:44 腾讯云

图解LinkedHashMap原理

图解LinkedHashMap原理1 前言 LinkedHashMap继承于HashMap,如果对HashMap原理还不清楚的同学,请先看上一篇:图解HashMap原理 2 LinkedHashMap使用与实现 先来一张LinkedHashMap的结构图,不要虚,看完文章再来看这个图,就秒懂了,先混个面熟: LinkedHashMap结构.png 2.1 应用场景 HashMap是无序的,当我们希望有顺序地去存储key-value时,就需要使用LinkedHashMap了。 Map hashMap = new HashMap(); hashMap.put("name1", "josan1"); hashMap.put("name...阅读全文

博文 2021-08-20 08:19:33 简书

大数据开发之Hive篇19-Hive分区表详解

备注: Hive 版本 2.1.1 Table of Contents一.Hive分区表概述二.静态分区2.1 单分区测试2.2 多分区测试三.动态分区3.1 动态分区测试3.2 动态分区和静态分区混合使用四.分区的其它操作4.1 恢复分区4.2 归档分区4.3 交换分区参考 一.Hive分区表概述 数据分区的概念以及存在很久了,通常使用分区来水平分散压力,将数据从物理上移到和使用最频繁的用户更近的地方,以及实现其目的。 hive中有分区表的概念,我们可以看到分区具重要性能优势,而且分区表还可以将数据以一种符合逻辑的方式进行组织,比如分层存储 Hive官方网站对Hive partition的介绍: 可以使用Partitioned BY子句创建分区表。一个表可以有一个或多个分区列,并且为分区列...阅读全文

博文 2022-07-14 11:01:16 墨天轮

[Vim] 搜索模式(正则表达式) - iFantasticMe

本文介绍如何使用Vim的搜索模式。 搜索单词 Vim中使用 \< 和 \> 分别表示单词的开头和结尾,例如查找单词 i 而不是字母 i ,在正常模式下,按下 / 启动搜索模式,输入 \ ,敲击回车即可。 要查找当前光标覆盖的单词,敲击 * ,Vim会自动启动搜索模式,光标移动到该单词下一个现身位置。 搜索当前单词并连续修改 假定当前光标覆盖的单词为 foo,按下 * 键,Vim 会搜索并跳转到下一个 foo 的位置,按下 ciw 组合键,意思是 change inner word ,此时 foo 会被删除,在原位置输入 bar ,然后按下 Escape 键。这就完成了一次搜索并修改,接下来按 n 键继续搜索,如果还需要修改,则按下 . 键表示重复修改动作,如此反复完成连续搜索与修改。...阅读全文

博文 2022-06-09 09:49:58 博客园

Hive典型应用场景之行列转换_小飞鱼_bigdata的博客

在使用Hive处理数据时,经常遇到行列转换的场景,本文将对Hive的行列转换操作做详细的说明。 行转列## 1)多行转多列 假设数据表 row2col: col1 col2 col3 a c 1 a d 2 a e 3 b c 4 b d 5 b e 6 现在要将其转化为: col1 c d e a 1 2 3 b 4 5 6 此时需要使用到max(case … when … then … else 0 end),仅限于转化的字段为数值类型,且为正值的情况。 HQL语句为: select col1, max(case col2 when 'c' then col3 else 0 end) as c, max(case col2 when 'd' then col3 else 0 end) a...阅读全文

博文 2022-03-27 05:58:44 CSDN博客_hive 行列互换

Hive中的explode使用全解

本节主要介绍explode和posexplode函数的使用。1、数据介绍 主要包括三列,分别是班级、姓名以及成绩,数据表名是default.classinfo。2、单列Explode 首先来看下最基本的,我们如何把student这一列中的数据由一行变成多行。这里需要使用split和explode,并结合lateral view实现。代码如下:select class,student_name from default.classinfo lateral view explode(split(student,',')) t as student_name 结果如下:3、单列Posexplode 接下来,我们想要给每个同学来一个编号,假设编号就按姓名的顺序,此时我们要用到另一个hive函数,叫做...阅读全文

博文 2022-03-27 05:57:59 知乎

nginx-重写和重定向关系与配置_nginx重定向配置_一边学习一边哭的博客

目录 前言 1.重写和重定向的区别是什么? 首先说说关联 那他们的区别呢? 2.“重写”、“重定向”、“隐式转发”、“内部重定向”......这些名词的关系是什么? 3.nginx中return、rewrite、proxy_pass它们的区别是什么?实现的功能是什么? 3.1 return 3.2 rewrite 3.3 proxy_pass 3.4 nginx模块实现重写/重定向总结 4.关于重写/重定向时规则的匹配效率 5.总结 5.1 什么是重写和重定向? 5.2 相关名词是什么对应关系? 5.3 nginx模块实现重写和重定向地对应关系 参考文档 前言 一直对nginx的重写和重定向都是只有一个模糊的认识,只是知道在nginx里return、rewrite、proxy_pass能实现...阅读全文

博文 2023-09-19 10:42:38 CSDN博客

如此狂妄,自称高性能队列的Disruptor有啥来头? - 博学谷狂野架构师

并发框架Disruptor 1. Disruptor概述 1.1 背景 ​ Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级),基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注,2011年,企业应用软件专家Martin Fowler专门撰写长文介绍。同年它还获得了Oracle官方的Duke大奖。 ​ 目前,包括Apache Storm、Camel、Log4j 2在内的很多知名项目都应用了Disruptor以获取高性能。 ​ 需要特别指出的是,这里所说的队列是系统内部的内存队列,而不是Kafka这样的分布式队列。 有界无锁 高并发队列 1...阅读全文

博文 2023-03-03 02:58:58 博客园

【Java集合】想成为Java编程高手?先来了解一下List集合的特性和常用方法!

通过前面文章的介绍,相信大家对Java集合框架有了简单的理解,接下来说说集合中最常使用的一个集合类的父类,List 集合。那么,List到底是什么?它有哪些特性?又该如何使用呢?让我们一起来揭开List的神秘面纱。 List,顾名思义,就是列表的意思。在Java中,List是一个接口,它继承了Collection接口,表示一个有序的、可重复的元素集合。下面我们从List 接口的概念、特点和常用方法等方面来介绍List。 ## 一、List 接口介绍 java.util.List 接口,继承自 Collection 接口(可以回看咱们第二篇中的框架体系),List 接口是单列集合的一个重要分支,习惯性地将实现了List 接口的对象称为List集合。 ![image.png](http://st...阅读全文

博文 2023-11-15 17:01:34 YDYXCODE

大圣前端啃算法

download: https://caodada.com/7084.html【资源目录】:├──单课01、01-前端为什么要学算法.mp4 22.60M├──单课02、02-一个leetcode题了解算法复杂度.mp4 51.49M├──单课03、通用01-如何把代码提交到github.mp4 34.07M├──单课04、通用02-如何获取github代码权限并且提交pr.mp4 25.13M├──单课05、03-链表和数组.mp4 13.07M├──单课06、04-链表的javascript实现01.mp4 26.12M├──单课07、05-链表的javascript实现-leetcode203题.mp4 21.49M├──单课08、06-链表的javascript实现-leetcode...阅读全文

博文 2023-08-08 08:44:55 caodada

CSRF 保护_Spring Security

Spring Security 跨站请求伪造保护 1. 前言 很多小伙伴在开发 Spring Security 项目时候,本地测试都没有问题,一放到生产环境后,就会遇到「Invalid CSRF Token」问题,这其实是 Spring Security 防止服务免受「跨站请求伪造」攻击攻击的防护行为。 跨站请求伪造(Cross Site Request Forgery),简写成「CSRF」或者「XSRF」,是一种挟持用户所用浏览器,执行非法操作的攻击方法,也就是说,攻击者利用「CSRF」漏洞伪造用户操作,可实现例如购物、注销等效果,还可以利用该漏洞配合产生其他多种攻击方式。 针对「CSRF」攻击最经济的解决方式是增加「Referer」头或者增加校验「Token」。 Spring Secur...阅读全文

博文 2023-04-12 06:59:09 慕课网

图文解释 读写分离、垂直拆分、水平拆分、分库分表

1. 前言 相信你经常被 读写分离、垂直拆分、水平拆分、分库分表 这几个名词搞得很懵逼。我有时候也很懵逼,那么今天就来把这几个数据库常用术语搞清楚,同时也记录一下。 2. 读写分离 这个相对比较好理解一些,就是将数据库分为主从库,一个主库(Master)用于写数据,多个从库(Slaver)进行轮询读取数据的过程,主从库之间通过某种通讯机制进行数据的同步,是一种常见的数据库架构。下面这张图就展示了 “一主二从” 的结构: 2.1 为什么要读写分离 大多数互联网数据操作往往都是读多写少,随着数据的增长,数据库的“读”会首先成为瓶颈。如果我们希望能线性地提升数据库的读性能和写性能,就需要让读写尽可能的不相互影响,各自为政。在使用读写分离之前我们应该考虑使用缓存能不能解决问题。然后再考虑对数据库按照...阅读全文

博文 2023-09-13 16:02:53 掘金

智能边缘云安全专区简介

本文分享自天翼云开发者社区《智能边缘云安全专区简介》,作者:安****顺天翼云智能边缘云安全专区产品为用户提供二级等保、三级等保以及其他自定义安全套餐。整体架构参见下图:云边架构:云端包括智能边缘云ECX的云端(ops、租户控制台)、北京宽广智通安全专区云端(安全管理平台);边缘是开通在ECX各边缘集群,租户VPC/Subnet下的安全专区组件虚拟机。北京宽广智通安全管理平台通过边缘安全管理中心来管理安全专区组件虚拟机;目前支持的套餐有:二级等保(入门版:云防火墙、云日志审计、安全管理中心基础版,基础版:云防火墙、云日志审计、终端安全EDR、云堡垒机、安全管理中心基础版);三级等保(高级版:云防火墙、云日志审计、终端安全EDR、云堡垒机、安全管理中心基础版、云数据库审计,旗舰版:云防火墙、云...阅读全文

博文 2023-10-23 17:58:20 Tianyiyun

Nacos+Spring Cloud Gateway动态路由配置 - JJian

前言 Nacos最近项目一直在使用,其简单灵活,支持更细粒度的命令空间,分组等为麻烦复杂的环境切换提供了方便;同时也很好支持动态路由的配置,只需要简单的几步即可。在国产的注册中心、配置中心中比较突出,容易上手,本文通过gateway、nacos-consumer、nacos-provider三个简单模块来展示:Nacos下动态路由配置。 博文中源码已上传至github(https://github.com/Jian0110/learning-cloudalibaba),欢迎小伙伴们star 一、Nacos环境准备 1、启动Nacos配置中心并创建路由配置 具体的Nacos怎么配置就不介绍了,可以参考阿里巴巴的官方介绍,这里通过windows直接本地启动开启单机模式,登录Nacos Conso...阅读全文

博文 2023-11-27 10:26:09 博客园

【Java集合】数据结构与集合的神秘联系,一文读懂!

上篇文章中我们对单列集合中常用的方法和遍历查询。通过本文章为我们解惑,好好的字符串用起来不就行了,为什么要用集合这些工具类?本篇文章将简要介绍数据结构,让读者了解它们在计算机中以何种结构方式存在。那么,什么是数据结构呢?下面我们来详细解释。 ## 数据结构 ### 1.1 数据结构有什么用? 数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 ![image.png](http://static.itsharecircle.com/231107/780768685050bf3238e22caee5c12252.png) 数据结构往往同高效的检索算法和索引技术有关。 这句话是啥意思...阅读全文

VPC终端节点的实现架构和原理

本文分享自天翼云开发者社区《VPC终端节点的实现架构和原理》,作者:云云生息什么是VPC终端节点?在传统的VPC架构中,为了使VPC内的资源能够与云服务提供商的各种服务进行通信,通常需要通过公共Internet进行访问。这种方式存在一些问题,比如安全性、可靠性、访问速度等。为了解决这些问题,云服务提供商推出了VPC终端节点。VPC终端节点是VPC内的一种虚拟设备,它直接连接到云服务提供商的服务而无需通过Internet。这样,VPC内的资源可以通过VPC终端节点安全地、高效地访问云服务,同时也能避免通过Internet带来的一些潜在问题。VPC终端节点的实现架构VPC终端节点的实现架构通常涉及多个组件的协同工作。以下是一个常见的VPC终端节点实现架构:1.VPC路由表: 在VPC中,存在一个...阅读全文

Java单列集合Set:HashSet与LinkedHashSet详解,为什么它比List接口更严格?

上篇我们介绍了单列集合中常用的list接口,本篇我们来聊聊单列集合中的另外一个重要接口Set集合。 ### 1 Set 介绍 java.util.Set接口和java.util.List接口一样,同样实现了Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。 与List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复,这里的某种规则,我们在后面中给大家揭秘,大家不要着急。 - 无序 - 不可重复 它没有索引,所以不能使用普通for 循环进行遍历。 >Set 集合 遍历元素的方式 迭代器,增强for 来,我们通过案例练习来看看 ``` //创建集合对象 ...阅读全文

博文 2023-11-21 18:17:32 YDYXCODE

双列集合Map不再难懂:轻松掌握这些知识点!

## 1 概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,学号与学生等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。 Map 接口下的集合与Collection 接口下的集合,他们的存储形式有所不同,如下图: ![image.png](http://static.itsharecircle.com/231205/ebb5393154fd764d6d07353910a6296c.png) Collection 集合,元素是独立的,存储的元素是一个一个的存储。Map中的集合,元素是成对出现。每个元素由键与值两部分组成,通过键可以找到所对应的值。所以我们前面所说 Collection是单列集...阅读全文

博文 2023-12-05 10:47:07 YDYXCODE

[15章]深入学习小程序框架底层原理,培养双线程思维

![1.png](http://static.itsharecircle.com/231218/f3762dc802ff57be143d2b6bfeac0bd1.png) 前端高手特训 从0到1带你手写一个微信小程序底层框架,今天就带着大家从0到深入学习小程序框架底层原理,无论你是一位新手,还是一位有经验的开发者,能够自研一套小程序底层框架,都是你突破技术瓶颈有效途径。 今天就由我带领大家从架构设计 ,原理剖析,再到源码的实现,一步步地实战构建一个完整的微信小程序底层框架,让你深度掌握小程序双线程原理,助力你具备把握最佳机会的能力和提升获取心仪Offer的成功率,成为一个真正有实力的技术人才 。 小程序使用的是Exparser组件模型,Exparser组件模型与Web Components中...阅读全文

博文 2023-12-18 12:12:46 hbanhgbd

使用 Hbase Shell 命令创建预分区表 - Yr-Zhang

对表进行预分区,可以防止单分区一次写入数据过大,hbase 集群本身还没来得及自动分裂,导致 region 宕掉的问题。 1、创建表时指定一个拆分点数组 split point 将定义n+1个区域,其中n是分割点的数量, point 为'10'时实际上是在指定字节分割'\x31\30' hbase>create 't1','f',SPLITS => ['10','20','30'] 获取rowkey的第一个字节,按照进行分割 hbase> create 't',{NAME => 'f0',VERSIONS => 1, COMPRESSION => 'snappy'},{NAME => 'f1',VERSIONS => 10000, COMPRESSION => 'snappy'},CONFI...阅读全文

博文 2024-01-11 19:58:28 博客园

Java集合:双列集合HashMap的概念、特点及使用

HashMap是Java中的一个集合类,它实现了Map接口,提供了一种存储键值对的方式。你可以把它想象成一个没有固定大小和形状的储物柜,你可以随时往里面放东西,也可以随时取出东西。而且,这个储物柜还有一个神奇的功能,那就是无论你放进去的是什么,取出来的总是你放进去的那个。 上篇文章讲了Map接口的概念,以及Map接口中的常用方法和对Map集合的遍历,本篇文章我们将继续介绍另一个十分重要的双列集合—HashMap。 ## HashMap 概念 HashMap集合是Map接口的一个实现类,它用于存储键值映射关系,该集合的键和值允许为空,但键不能重复,且集合中的元素是无序的。 #### 特点 HashMap底层是由哈希表结构组成的,其实就是“数组+链表”的组合体,数组是HashMap的主体结构,链...阅读全文

博文 2023-12-12 10:40:31 YDYXCODE

利用 Arthas 精准定位 Java 应用 CPU 负载过高问题_arthas cpuusage

Arthas 官方社区正在举行征文活动,参加即有奖品拿哦~点击投稿 作者 | 张云翔 最近我们线上有个应用服务器有点上头,CPU总能跑到99%,我寻思着它流量也不大啊,为啥能把自己整这么累?于是我登上这台服务器,看看它到底在干啥! 以前碰到类似问题,可能会考虑使用 top -Hp 加 jstack 命令去排查,虽然能大致定位到问题范围,但有效信息还是太少了,多数时候还是要靠猜。今天向大家推荐一款更高效更精准的工具:Arthas!Arthas 是 Alibaba 开源的 Java 诊断工具,能够帮助我们快速定位线上问题。基本的安装使用可以参考官方文档:https://alibaba.github.io/arthas 这次我们利用它来排查 CPU 负载高的问题。CPU 负载过高一般是某个或某几个...阅读全文

博文 2024-03-13 11:20:01 CSDN博客

MBR分区表为什么最大只能识别2TB硬盘容量 - 大师兄啊哈

文链接:https://www.cnblogs.com/harrymore/p/13782261.html 1. 前言 最近公司的服务器硬盘坏了,需要换一个新的硬盘,容量是2TB,用的fdisk进行分区,期间搜索分区工具,看到了关于MBR(Master Boot Record)与GPT(GUID partition table)硬盘分区表的一些区别,其中说到MBR分区表最多只能管理2TB的容量,对此查了一下《鸟哥的私房菜》发现是简化过的,并没有解决疑惑,于是查了一些资料,总结如下。 2. 机械硬盘的结构 2.1. 基本结构 机械硬盘主要由磁盘盘片、磁头(header)、主轴与传动轴等组成,数据就存放在磁盘盘片中,实际图片如下: 值得注意的是,硬盘是上下磁头的,也就是一个盘片有两个磁头进行操作...阅读全文

博文 2024-04-10 17:13:10 博客园

使用dd命令完整拷贝系统分区到另外一个硬盘上_将系统盘dd到另一个空盘

1简介 在工作中,有一种常见的场景是要安装一个系统,这个系统可能安装好了开发环境、环境变量配置、网卡驱动等设置,如果要重新安装一个一模一样的系统,会非常复杂,在这个场景下我们就可以借助工具,即dd命令来完整把这个系统拷贝到另外一个硬盘上,dd命令会完整的拷贝文件系统,分区,网卡,系统配置等信息到另外的硬盘上,这样把这个携带一模一样的硬盘安装到另外的服务器上,只要在开机时,指定启动项,即可进入一个安装好的一模一样的环境,这时只要修改一下ip即可正常使用,省时省力。 2操作步骤 2.1命令集合 2.1.1 fdisk 分区是将一个硬盘驱动器分成若干个逻辑驱动器,分区是把硬盘连续的区块当做一个独立的磁硬使用。分区表是一个硬盘分区的索引,分区的信息都会写进分区表。 fdisk主要作用是进行分区表控制...阅读全文

博文 2024-04-10 19:07:56 CSDN博客

前端项目性能优化方案有哪些

本文分享自天翼云开发者社区《前端项目性能优化方案有哪些》,作者:王****祺一、加载优化(减少http请求数)常用的减少HTTP请求的方法有以下几种:1.合并图片:当页面图片较多时,可以将相似的图片合并为一张大图,从而减少HTTP请求次数。对于不经常变化的图片,使用精灵图或雪碧图进行合并,可以充分利用浏览器缓存提升性能。2.合并压缩CSS样式表和JS脚本:将相似或通用的CSS和JS文件进行合并,压缩后减少HTTP连接数。这种方法可以减少资源文件的大小,从而提升网页加载速度。3.去掉不必要的请求:在代码编写或系统升级之后,可能会有一些无效的链接残留在页面中,应该及时清理这些无效链接,以减少HTTP请求的次数。4.首屏加载优化:优化首屏的加载,使得页面能够快速显示,可以提高用户对页面速度的感知。...阅读全文

博文 2024-04-24 14:15:31 Tianyiyun