E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Gh0st源码剖析
epoll底层红黑树使用部分
源码剖析
:为什么使用红黑树以及如何使用红黑树
我们知道epoll的底层使用了红黑树来管理文件描述符,为什么会选择红黑树这种结构呢?以下是个人理解:epoll和poll的一个很大的区别在于,poll每次调用时都会存在一个将pollfd结构体数组中的每个结构体元素从用户态向内核态中的一个链表节点拷贝的过程,而内核中的这个链表并不会一直保存,当poll运行一次就会重新执行一次上述的拷贝过程,这说明一个问题:poll并不会在内核中为要监听的文件描述符
Mr_H9527
·
2020-09-16 14:30
c++&服务端
【Linux 内核网络协议栈
源码剖析
】listen 函数剖析
listen函数仅供服务器端调用,把一个未连接的套接字转换为一个被动套接字,指示内核应接受指向该套接字的连接请求。1、应用层——listen函数#includeintlisten(intsockfd,intbacklog);/*sockfd是bind之后的套接口描述字,第二个参数规定了内核应该为相应套接口排队的最大连接个数*/2、BSDSocket层——sock_listen函数/**Perfor
selfimpr1991
·
2020-09-16 13:53
OpenSource
TCP/IP
epoll
源码剖析
epoll的实现主要依赖于一个虚拟文件系统:eventpollfs。epoll是个module,module的入口eventpoll_init,通过eventpoll_init初始化。在初始化的过程中,eventpollfscreate两个slub分别是:epitem和eppoll_entry。epoll使用过程中有几个基本的函数分别是epoll_create,epoll_ctl,epoll_wa
0Resurrection0
·
2020-09-16 12:04
操作系统
Linux
epoll
源码
文件系统
io复用
Redis
源码剖析
——ziplist的实现
有序集合对象ziplist为Redis中的压缩列表,是列表键和哈希键的底层实现之一,用于存储长度短的字符串和小整数。ziplist采用一段连续的内存来存储节点ziplist的表示因为ziplist的数据结构的长度是变化的所有没有特定的结构体,ziplist在内存中的布局如下entry也是不定长的,没有特定的结构体,entry在内存中的布局如下previous_entry_length的长度可以为1
Coding_Reading
·
2020-09-16 09:56
Redis源码剖析
从
源码剖析
RxJava基本工作原理(4),Schedule调度器的实现
目录Schedule调度器Schedule调度器rxJava的调度器还是比较复杂的,继承关系比较复杂不说,而且有很多内部类,绕来绕去的有点恶心。但是嘛,先把图画出来再说,跟着图的路线走,总不会迷路的。首先我们使用的schedule的方式就是.subscribeOn(Schedulers.io())那么就从这个IO()函数入口去看下,里面是个什么东西,@NonNullpublicstaticSche
Super-B
·
2020-09-16 08:23
源码
android
java
java
队列
android
多线程
STL各容器底层所使用的数据结构
C++STL的实现:1.vector底层数据结构为数组,支持快速随机访问2.list底层数据结构为双向链表,支持快速增删3.deque底层数据结构为一个中央控制器和多个缓冲区,详细见STL
源码剖析
P146
大学笑长
·
2020-09-16 07:02
C++学习
【北京】低价出售C/C++经典书籍
都很新C++程序设计5元高质量C/C++编程指南8元C++对象模型10元STL
源码剖析
12元深入浅出MFC10元设计模式10元C++primer8元面向对象程序设计5元java语言基础教程5元C语言程序设计
bxyill
·
2020-09-16 07:49
Java
源码剖析
(22)--Redis 如何实现高可用
Redis如何实现高可用1)实现高可用的方式1.1)数据持久化1.2)Redis主从同步1.3)Redis哨兵模式1.4)Redis集群2)小结1)实现高可用的方式Redis高可用的手段主要有以下四种:数据持久化主从数据同步(主从复制)Redis哨兵模式(Sentinel)Redis集群(Cluster)其中数据持久化保证了系统在发生宕机或者重启之后数据不会丢失,增加了系统的可靠性和减少了系统不可
姜皓
·
2020-09-16 03:40
#
Java面试
#
Java中间件
redis
Java
源码剖析
(21)--Redis 如何实现消息队列
Redis如何实现消息队列1)实现消息队列的方式2)使用List实现消息队列3)使用Stream实现消息队列1)实现消息队列的方式在Redis中实现消息队列的方式有几种?早在Redis2.0版本之前使用Redis实现消息队列的方式有两种:使用List类型实现使用ZSet类型实现其中使用List类型实现的方式最为简单和直接,它主要是通过lpush、rpop存入和读取实现消息队列的,如下图所示:lpu
姜皓
·
2020-09-16 03:10
#
Java中间件
#
Java面试
redis
队列
java
Java
源码剖析
(23)--JVM 的内存布局和运行原理
JVM的内存布局和运行原理1)JVM的内存布局1.1)堆1.2)方法区1.3)程序计数器1.4)虚拟机栈1.5)本地方法栈2)类的生命周期2.1)加载阶段2.2)验证阶段2.3)准备阶段2.4)解析阶段2.5)初始化JVM(JavaVirtualMachine,Java虚拟机)顾名思义就是用来执行Java程序的“虚拟主机”,实际的工作是将编译的class代码(字节码)翻译成底层操作系统可以运行的机
姜皓
·
2020-09-16 03:10
Java
学习笔记
#
Java面试
jvm
java
面试
Java
源码剖析
(20)--Redis 怎样实现分布式锁
Redis怎样实现分布式锁1)分布式锁1.1)分布式锁的常见实现方式:2)单机锁3)使用Redis实现分布式锁4)锁超时如果在分布式环境下使用就会出现锁不生效的问题,需要使用分布式锁来解决。1)分布式锁分布式锁是控制分布式系统之间同步访问共享资源的一种方式,是为了解决分布式系统中,不同的系统或是同一个系统的不同主机共享同一个资源的问题,它通常会采用互斥来保证程序的一致性,这就是分布式锁的用途以及执
姜皓
·
2020-09-16 03:10
#
Java中间件
#
Java面试
STL
源码剖析
之_allocate函数
SGISTL提供的标准std::allocator中的_allocate函数代码如下:templateinlineT*_allocate(ptrdiff_tsize,T*){set_new_handler(0);T*tmp=(T*)(operatornew((size_t)(size*sizeof(T))));if(tmp==0){cerr<<"outofmemory"<
weixin_30325793
·
2020-09-16 00:21
c/c++
mybatis数据库连接池介绍和
源码剖析
mybatis数据库连接池分析介绍一、数据库连接池1、定义数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。(百度百科)2、核心原理连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户
khuangliang
·
2020-09-15 19:09
mybatis
mybatis
数据库
出去面了一波大数据,总结一下
Python工程师标准>>>魔秀科技总结:岗位5-10年,面试人:技术总监:薪资范围25以上问题:1、自我介绍,手写wordcount,分析每个算子,主要问flatmap和map的区别,简单的原理不算,要从
源码剖析
weixin_34259559
·
2020-09-15 18:12
大数据
面试
java
STL
源码剖析
——基础
六大部件模板类模板函数模板成员模板(类拥有本身为类模板或函数模板的成员)特化:优先选择特化版本templatestruct__type_traits{...};template{...};template{...};....偏特化1.限制部分参数类型templateclassvector{...};templateclassvector{...};2.限制为指针、引用、常量等templatestr
I_ren
·
2020-09-15 13:39
c++
STL源码剖析
设计模式(21)——状态模式
目录APP抽奖活动问题状态模式状态模式解决APP抽奖问题状态模式在实际项目-借贷平台
源码剖析
状态模式的注意事项和细节APP抽奖活动问题请编写程序完成APP抽奖活动具体要求如下:假如每参加一次这个活动要扣除用户
minge0001
·
2020-09-15 10:43
设计模式
设计模式
java
分布式架构-Dubbo框架(五):Dubbo协议模块
源码剖析
RPC协议基本组成RPC协议名词解释在一个典型RPC的使用场景中,包含了服务发现、负载、容错、网络传输、序列化等组件,其中RPC协议就指明了程序如何进行网络传输和序列化。也就是说一个RPC协议的实现就等于一个非透明的远程调用实现,如何做到的的呢?协议基本组成:地址:服务提供者地址端口:协议指定开放的端口报文编码:协议报文编码,分为请求头和请求体两部分。序列化方式:将请求体序列化成对象Hessian
_单眼皮男生_
·
2020-09-15 06:58
分布式
Atlas
源码剖析
(一)
信号设置在设置各种配置参数之前,如果支持sigaction,则使用sigaction来设置SIGSEGV信号,指定处理函数调用g_on_error_stack_trace获取相关的堆栈信息后,调用abort退出程序。此信号在程序结束前进行清除,修复默认处理方式。#ifdefHAVE_SIGACTION/*registerthesigsegvinterceptor*/memset(&sigsegv_
wssg3620625
·
2020-09-15 06:36
Atlas
Atlas
源码剖析
(十一)
读写分离和负载均衡在分析完语句后,做好分表的准备工作之后,Atlas会调用check_flags函数检查传过来的语句是否为GET_LOCK、AUTOCOMMIT或SQL_CALC_FOUND_ROWS语句;注解:a、GET_LOCK:get_lock(str,timeout)设法使用字符串str给定的名字得到一个锁,超时为timeout秒。若成功得到锁,则返回1,若操作超时则返回0(例如,由于另一
wssg3620625
·
2020-09-15 06:36
Atlas
chromium
源码剖析
之chrome进程通信的基本模式
1.Chrome进程通信的基本模式进程间通信,叫做IPC(Inter-ProcessCommunication),在Chrome不多的文档中,有一篇就是介绍这个的,在这里。Chrome最主要有三类进程,一类是Browser主进程,我们一直尊称它老人家为老大;还有一类是各个Render进程,前面也提过了;另外还有一类一直没说过,是Plugin进程,每一个插件,在Chrome中都是以进程的形式呈现,等
农村的我
·
2020-09-14 22:00
c++
strtok
源码剖析
位操作与空间压缩
欢迎关注微博:http://weibo.com/MoreWindowsstrtok
源码剖析
strtok函数可以用于分隔字符串,最近看了下这个函数的源代码,其中有unsignedcharmap[32];/
MoreWindows
·
2020-09-14 18:59
Windows编程
位操作
strtok
空间压缩
Vector
源码剖析
Vector简介Vector也是基于数组实现的,是一个动态数组,其容量能自动增长。LinkedList是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境。LinkedList没有丝线Serializable接口,因此它不支持序列化,实现了Cloneable接口,能被克隆,实现了RandomA
IT忍者神龟
·
2020-09-14 15:32
Linux设备驱动模型简述(
源码剖析
)
1.Linux设备驱动模型和sysfs文件系统Linux内核在2.6版本中引入设备驱动模型,简化了驱动程序的编写。Linux设备驱动模型包含设备(device)、总线(bus)、类(class)和驱动(driver),它们之间相互关联。其中设备(device)和驱动(driver)通过总线(bus)绑定在一起。Linux内核中,分别用bus_type、device_driver和device结构来
hueyxu
·
2020-09-14 14:00
教你透彻了解红黑树
教你透彻了解红黑树作者:July、saturnman2010年12月29日本文参考:Google、算法导论、STL
源码剖析
、计算机程序设计艺术。
信念
·
2020-09-14 14:34
STL 之 set
源码剖析
G++2.91.57,cygnus\cygwin-b20\include\g++\stl_set.h完整列表/***Copyright(c)1994*Hewlett-PackardCompany**Permissiontouse,copy,modify,distributeandsellthissoftware*anditsdocumentationforanypurposeisherebygra
hustyangju
·
2020-09-14 14:50
STL
ArrayList
源码剖析
(看不懂直播写检讨)
将分析以下内容字段构造函数扩容插入和删除导致的数组大幅度移动1.首先来看一下ArrayList里面的属性下面是两个经常会用到的属性这个就是用来存储元素的数组transientObject[]elementData;这个是数组存储元素的总数,相信size()方法大家都用过注意不要跟数组长度混淆,数组长度是elementData.length()privateintsize;下面三个是ArrayLis
DFYoung
·
2020-09-14 13:22
【源码】Set集合
源码剖析
注:以下源码基于jdk1.7.0_11Set集合其实是对Map集合的封装,Map集合存储的是键值对,那么我们将值隐藏,不向外界暴露,这样就形成了Set集合。对应Map集合的两个很重要的实现HashMap(基于哈希表),TreeMap(基于红黑树),Set集合也对应了两个类HashSet和TreeSet。由于之前花很多篇幅介绍了HashMap和TreeMap,在此将不再介绍其实现细节。简单分析下Ha
rowandjj
·
2020-09-14 13:36
java基础整理
JAVA动态代理(proxy)实现和
源码剖析
JDK动态代理实例(1)动态代理首先提供一个调度处理器接口(Invocationhandler),该接口实例封装了我们要代理的对象实例的数据。publicclassTranceHanderimplementsInvocationHandler{privateObjecttObject;publicTranceHander(Objectt){tObject=t;}@OverridepublicObj
Howie Lee
·
2020-09-14 13:19
Java
java深入解析
JavaArrayList
源码剖析
结合源码对ArrayList进行讲解。JavaLinkedList
源码剖析
结合源码对LinkedList进行讲解。
shark1357
·
2020-09-14 12:21
【JDK1.8
源码剖析
】外部迭代器Iterator接口
文章目录Iterator
源码剖析
(一)简介(二)源码分析Iterator
源码剖析
(一)简介Iterabtor是从jdk1.2就存在的接口,称为外部迭代器。
沉晓
·
2020-09-14 12:13
JDK源码剖析
java
jdk
STL
源码剖析
学习之容器
//STL之容器//学习目的:各个容器的使用。/*容器分为:序列式容器和关联式容器。序列式容器:array,vector,list,deque关联式容器:set,map,multiset,multimapvector的数据安排以及操作方式,与array非常相似两者唯一的差别在于,array是静态空间,一旦配置了就不能改变,想要扩充,一切琐碎得由客户端自己来:首先,配置新空间,然后将元素从旧址一一搬
codinglf
·
2020-09-14 08:21
BOOST/STL
【经验】实现STL算法时遇到的模板编译错误问题
注:__copy是照着STL
源码剖析
进行命名的(实际上我倒很不喜欢SGI的那么长的命名),是针对输入迭代
weixin_30378623
·
2020-09-14 07:18
STL源码笔记(18)—平衡二叉树AVL(C++封装+模板)
AVLTree平衡二叉树在几年前刚学数据结构时,AVL-Tree只是一个仅仅需要掌握其概念的东西,今非昔比,借看STL
源码剖析
的契机希望从代码层面将其拿下。
NearXDU
·
2020-09-14 05:52
STL
为什么auto_ptr智能指针不能作为STL标准容器的元素
上个星期的博客shared_ptr
源码剖析
里其实遗漏了一个问题:为什么auto_ptr不可以作为STL标准容器的元素,而shared_ptr可以?
一缕阳光a
·
2020-09-14 05:18
C++
STL
STL
源码剖析
——stl_algobase.h
STL标准中没有区分基本算法或复杂算法,单SGI把常用的一些算法定义在只中,其他算法定义在中。stl_algobase.h中的算法,比较值得学习的是copy(),它“无所不用其极”的改善效率。copy的目的是复制一段元素到指定区间,复制操作最容易想到赋值操作符=,但是有的赋值操作符=是trivial的,可以直接拷贝。关于赋值操作符=是不是trivial的,可以参考“Memberwisecopy(深
taxue505
·
2020-09-14 05:29
STL源码剖析
STL
源码剖析
之算法:set_difference & set_symmetric_difference
templateOutputIteratorset_difference(InputIterator1first1,InputIterator1last1,InputIterator2first2,InputIterator2last2,OutputIteratorresult){while(first1!=last1&&first2!=last2){if(*first1OutputIterato
weixin_34185560
·
2020-09-14 05:38
日志那点事儿——slf4j
源码剖析
日志那点事儿——slf4j
源码剖析
前言:说到日志,大多人都没空去研究,顶多知道用logger.info或者warn打打消息。
xing halo
·
2020-09-14 02:40
【
源码剖析
】tinyhttpd —— C 语言实现最简单的 HTTP 服务器
文章新地址:https://github.com/AngryHacker/articles/issues/2#issue-369871321如有问题请在新地址提问tinyhttpd是一个不到500行的超轻量型HttpServer,用来学习非常不错,可以帮助我们真正理解服务器程序的本质。看完所有源码,真的感觉有很大收获,无论是unix的编程,还是GET/POST的Web处理流程,都清晰了不少。废话不
一线涯
·
2020-09-14 02:25
开源项目
Linux
Web
源码剖析
@ApiImplicitParam对@RequestParam的required属性的侵入性
问题起源使用SpringCloud构建项目时,使用Swagger生成相应的接口文档是推荐的选项,Swagger能够提供页面访问,直接在网页上调试后端系统的接口,非常方便。最近却遇到了一个有点困惑的问题,演示接口示例如下(原有功能接口带有业务实现逻辑,这里简化了接口):/***@description:演示类*@author:HuangYing**/@Api(tags="演示类")@RestCont
1黄鹰
·
2020-09-13 22:04
应用框架
springcloud
swagger
SparkStreaming
源码剖析
1-Receiver数据接收流程
根据上文所展示的SparkStreaming的socketTextStream应用示例,来从源码的角度来看下其是怎么工作运行的。1、初始化StreamingContextStreamingContext是SparkStreaming程序的主要入口,其构造函数如下:classStreamingContextprivate[streaming](_sc:SparkContext,_cp:Checkpo
午后的红茶meton
·
2020-09-13 19:36
Spark使用
spark
spark
streaming
ReceiverTracker
BlockGenerator
SparkStreaming
源码剖析
2-JobGenerator任务的生成与执行流程
在上一节中的StreamingContext.start()方法中,其主要就是调用scheduler.start()来启动对应的JobScheduler,在scheduler.start()方法中,其会创建并启动两个最重要的组件为:ReceiverTracker和JobGenerator。上文中分析了ReceiverTracker流式数据产生与接收的基本工作及原理,接下来分析JobGenerato
午后的红茶meton
·
2020-09-13 19:36
Spark使用
spark
sparkstreaming
JobGenerator
(四)Kubernetes
源码剖析
之学习WorkQueue-(阅读ing)
文章目录书籍资料5.4WorkQueue-工作队列5.4.1FIFO队列5.4.2延迟队列5.4.3限速队列1.令牌桶算法(BucketRateLimiter)2.排队指数算法(ItemExponentialFailureRateLimiter3.计数器算法(ItemFastSlowRateLimiter)。4.混合模式(MaxOfRateLimiter),将多种限速算法混合使用。按照学习计划,本
[shenhonglei]
·
2020-09-13 19:38
Kubernetes源码剖析
Kubernetes
源码
mosquitto 客户端
源码剖析
mosquitto_loop_start()
mosquitto调用形式源码MainServer.h#ifndef_WJ_MAINSERVER_H#define_WJ_MAINSERVER_H#include#includeclassMainServer{public://singlestaticMainServer&getInstance(){staticMainServerroot;returnroot;}~MainServer();vo
WanJunCoder
·
2020-09-13 17:31
C++
Linux
YYImage
源码剖析
与学习
源码剖析
学习系列:(不断更新)1、FBKVOController
源码剖析
与学习2、MJRefresh
源码剖析
与学习3、YYImage
源码剖析
与学习前言:要看懂YYImage框架,最好先了解热身部分(具体的自行百度
weixin_33757911
·
2020-09-13 17:47
运维
ui
YYImage
源码剖析
:图片处理技巧
引言首先问一个问题:你会用图片么?图片是现代化APP界面设计里应用广泛的东西,精美的图片可以带来视觉上的享受,提高用户体验。由此给技术上带来了一些挑战,比如动图的处理、图片显示流畅程度的优化、图片包大小的优化、超大图片的处理等。本文主要是结合YYImage源码对图片处理技巧进行讲解。而笔者不会逐字逐句的翻译源码,主要是提取源码中有思维价值的东西。所以最好是打开源码,本文作为思想引导。源码基于1.0
weixin_30391339
·
2020-09-13 14:06
运维
ui
Spring Cloud 微服务开发:入门、进阶与
源码剖析
—— 10.1 Spring Cloud 全链路监控概述
10.1SpringCloud全链路监控概述在传统的SOA架构体系中,系统的调用层级不多,调用关系也不复杂,凭借系统的异常信息,可以比较快捷的定位到问题并进行排查。但是在微服务的系统中,服务数量成百上千,服务之间的调用关系成网状结构,无法通过人力进行问题的排查,在这种情况下,一个完善的调用链路监控系统就显得至关重要。10.1.1全链路监控背景在微服务的架构体系下,服务按照不同的维度进行拆分,一次请
极客挖掘机
·
2020-09-13 12:09
Spring
Cloud
微服务开发:入门
进阶与源码剖析
CornerNet代码学习之pytorch多线程
Cornernet代码之pytorch多线程学习
源码剖析
main()train()页锁定内存守护线程init_parallel_jobs()、pin_memory()信号量附录-源码内容
源码剖析
这代码太长了
蓟门桥南一只炸
·
2020-09-13 11:07
epoll
源码剖析
(Linux Kernel 2.6.11)
本篇文章是基于LinuxKernel2.6.11的源码来展开的。epoll简介之前我的博客里也写到过,epoll是Linux特有的I/O复用函数。它在实现上与select、poll有很大差异。它的提出是为了弥补select和poll对于描述符过多处理时时间效率过高的问题。可以参考https://mp.csdn.net/postedit/89601608三种IO函数中:select和poll都需要将
Disremembrance
·
2020-09-13 07:07
Linux
Redis
源码剖析
--内存分配
请持续关注我的个人博客:https://zcheng.ren深受侯捷老师的《STL
源码剖析
》一书的影响,在该书中开篇就对STL的空间配置器进行了一个详尽的介绍。
ZeeCoder
·
2020-09-13 06:54
Redis
C-C++
redis
内存分配
源码
博客
侯捷
Redis
源码剖析
--事件ae
Redis
源码剖析
搁浅了一段时间,由于自己对事件驱动以及Reactor模式的理解不够深,源码看起来比较吃力,思来想去,所幸自己去实现一个简单的事件驱动模型。
mhHao
·
2020-09-13 05:24
redis
上一页
23
24
25
26
27
28
29
30
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他