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
skynet源码剖析
通俗易懂的JUC
源码剖析
-PriorityBlockingQueue
前言PriorityBlockingQueue是BlockingQueue接口的实现类,它是一种优先级阻塞队列,每次出队都返回优先级最高或最低的元素,其内部是用平衡二叉树堆实现的。这里的优先级指的是元素类必须实现Comparable接口,然后用compareTo()方法比较元素的优先级大小,当然也可指定自定义的比较器comparator。实现原理先来看看它的重要属性://队列默认容量为11priv
·
2021-02-06 23:55
java
net/rpc中一个函数调用的旁白
(源码)net/rpc中一个函数调用的旁白身份介绍正题收益坏处net/RPC
源码剖析
主要名词解释客户端流程讲解:服务端流程讲解:初始化启动从设计模式的角度理解net/rpc源码的设计身份介绍大家好,我的名字叫小
Simonthatsme
·
2021-02-06 12:08
rpc
源码
rpc
go
源码
设计模式
通俗易懂的JUC
源码剖析
-ArrayBlockingQueue
前言ArrayBlockingQueue也是BlockingQueue接口的实现类,从它的命名就能猜出来,它底层是用数组实现的,不同于LinkedBlockingQueue的链表结构。实现原理首先来看它的关键属性://存放元素的数组finalObject[]items;//记录下次take操作的数组位置inttakeIndex;//记录下次put操作的数组位置intputIndex;//数组长度i
·
2021-02-06 02:02
java
通俗易懂的JUC
源码剖析
-ArrayBlockingQueue
前言ArrayBlockingQueue也是BlockingQueue接口的实现类,从它的命名就能猜出来,它底层是用数组实现的,不同于LinkedBlockingQueue的链表结构。实现原理首先来看它的关键属性://存放元素的数组finalObject[]items;//记录下次take操作的数组位置inttakeIndex;//记录下次put操作的数组位置intputIndex;//数组长度i
·
2021-02-06 02:56
java
k8s-client-go
源码剖析
(二)
简介:云原生社区活动---Kubernetes
源码剖析
第一期第二周本周是K8S源码研习社第一期第二周,学习内容是学习Informer机制,本文以这个课题进行展开。
·
2021-02-05 16:39
通俗易懂的JUC
源码剖析
-LinkedBlockingQueue
前言LinkedBlockingQueue实现了BlockingQueue,它是阻塞队列的一种,可用于线程池中。不同于ConcurrentLinkedQueue的CAS非阻塞算法,它底层是用锁实现的阻塞队列。实现原理先来看关键属性://队列容量,最大为Integer.MAX_VALUEprivatefinalintcapacity;//队列长度privatefinalAtomicIntegerco
·
2021-02-05 00:43
java
通俗易懂的JUC
源码剖析
-LinkedBlockingQueue
前言LinkedBlockingQueue实现了BlockingQueue,它是阻塞队列的一种,可用于线程池中。不同于ConcurrentLinkedQueue的CAS非阻塞算法,它底层是用锁实现的阻塞队列。实现原理先来看关键属性://队列容量,最大为Integer.MAX_VALUEprivatefinalintcapacity;//队列长度privatefinalAtomicIntegerco
·
2021-02-05 00:30
java
深度剖析云风大神的开源框架
Skynet
——源码分析共享数据(Sharedata)【建议游戏开发收藏】
前言:在游戏开发中,需要用到大量且更新不频繁的配置数据,而把业务拆分到多个服务后,各个服务可能只用到其中的少部分数据,此时每个服务加载所有数据会浪费大量内存。sharedata模块就是为了解决这种需求设计的,其原理是:将共享lua数据存放到一个c结构里,所有服务都共享这个c结构的内存块,各个服务可以获取这个共享内存对象,然后就可以像读取普通lua表一样读取数据。一、创建共享数据调用sharedat
深度Linux
·
2021-02-03 15:47
redis
编程语言
mysql
skynet
共享数据
通俗易懂的JUC
源码剖析
-ConcurrentLinkedQueue
简介ConcurrentLinkedQueue是JUC包下的线程安全的无界非阻塞队列,它与BlockingQueue接口实现类最大的不同就是,BlockingQueue是阻塞队列,而ConcurrentLinkedQueue是非阻塞队列。这里的阻塞非阻塞,指的是队列满了或为空的时候,线程移除或放入元素的时候,是否需要阻塞挂起。BlockingQueue底层是用锁实现的,而ConcurrentLin
·
2021-02-02 23:40
java
通俗易懂的JUC
源码剖析
-ConcurrentLinkedQueue
简介ConcurrentLinkedQueue是JUC包下的线程安全的无界非阻塞队列,它与BlockingQueue接口实现类最大的不同就是,BlockingQueue是阻塞队列,而ConcurrentLinkedQueue是非阻塞队列。这里的阻塞非阻塞,指的是队列满了或为空的时候,线程移除或放入元素的时候,是否需要阻塞挂起。BlockingQueue底层是用锁实现的,而ConcurrentLin
·
2021-02-02 23:26
java
通俗易懂的JUC
源码剖析
-LockSupport
前言LockSupport是rt.jar下的工具类,它的作用是挂起和唤醒线程,它在JUC很多同步组件中都会用到,比如AQS。LockSupport类与每个使用它的线程都会关联一个许可证,在默认情况下调用LockSupport类方法的线程是没有许可证的。LockSupport内部是用Unsafe的park和unpark方法实现的。主要方法(1)voidpark()调用park()方法会阻塞当前线程,
·
2021-01-30 02:09
java
通俗易懂的JUC
源码剖析
-LockSupport
前言LockSupport是rt.jar下的工具类,它的作用是挂起和唤醒线程,它在JUC很多同步组件中都会用到,比如AQS。LockSupport类与每个使用它的线程都会关联一个许可证,在默认情况下调用LockSupport类方法的线程是没有许可证的。LockSupport内部是用Unsafe的park和unpark方法实现的。主要方法(1)voidpark()调用park()方法会阻塞当前线程,
·
2021-01-30 02:33
java
阿里P9枕边书“Java并发实现原理:JDK
源码剖析
”
前言并发编程可选择的方式有多进程、多线程和多协程。对于Java来说,它既不像C++那样,在运行中调用Linux的系统API去“fork”出多个进程;也不像Go那样,在语言层面原生提供多协程。在Java中,并发就是多线程模式。在JDK1.5发布之前,Java只在语言级别上提供一些简单的线程互斥与同步机制,也就是synchronized关键字、wait与notify。如果遇到复杂的多线程编程场景,就需
该用户快成仙了
·
2021-01-27 22:03
java
并发编程
jdk
jdk源码
Java并发实现
通俗易懂的JUC
源码剖析
-ThreadLocalRandom
一、为什么要用ThreadLocalRandom?Random不够用吗?我们对Random可能比较熟悉,随机数生成的常用类。来回顾下Random的用法:Randomrandom=newRandom();//输出一个0~5的随机数(包括0,不包括5)System.out.println(random.nextInt(5));来看下nextInt的源码:publicintnextInt(intboun
·
2021-01-24 16:44
java
Redis
源码剖析
之数据过期(expire)
我之前统计过我们线上某redis数据被访问的时间分布,大概90%的请求只会访问最新15分钟的数据,99%的请求访问最新1小时的数据,只有不到千分之一的请求会访问超过1天的数据。我们之前这份数据存了两天(近500g内存数据),如果算上主备的话用掉了120多个Redis实例(一个实例8g内存),光把过期时间从2天改成1天就能省下60多个redis实例,而且对原业务也没有啥太大影响。当然Redis已经实
·
2021-01-24 16:12
java
通俗易懂的JUC
源码剖析
-ThreadLocalRandom
一、为什么要用ThreadLocalRandom?Random不够用吗?我们对Random可能比较熟悉,随机数生成的常用类。来回顾下Random的用法:Randomrandom=newRandom();//输出一个0~5的随机数(包括0,不包括5)System.out.println(random.nextInt(5));来看下nextInt的源码:publicintnextInt(intboun
·
2021-01-24 16:55
java
源码剖析
panic与recover,看不懂你打我好了!
前言哈喽,大家好,我是asong,今天与大家来聊一聊go语言中的"throw、try.....catch{}"。如果你之前是一名java程序员,我相信你一定吐槽过go语言错误处理方式,但是这篇文章不是来讨论好坏的,我们本文的重点是带着大家看一看panic与recover是如何实现的。上一文我们讲解了defer是如何实现的,但是没有讲解与defer紧密相连的recover,想搞懂panic与reco
·
2021-01-24 11:11
通俗易懂的JUC
源码剖析
-ThreadLocal/InheritableThreadLocal
一、前言多个线程使用共享变量时,如果要保证线程安全,通常会加锁,synchronized或者Lock。但这两种锁都是重量级的,如果多个线程都希望操作各自的变量,彼此间互不影响,那么ThreadLocal就派上用场了,InheritableThreadLocal则是它的功能扩展,后面会分析它的使用场景。二、ThreadLocal实现原理先来看下它的类结构:红色框中的是我们常用的方法,它内部是用Thr
·
2021-01-24 00:29
java
通俗易懂的JUC
源码剖析
-ThreadLocal/InheritableThreadLocal
一、前言多个线程使用共享变量时,如果要保证线程安全,通常会加锁,synchronized或者Lock。但这两种锁都是重量级的,如果多个线程都希望操作各自的变量,彼此间互不影响,那么ThreadLocal就派上用场了,InheritableThreadLocal则是它的功能扩展,后面会分析它的使用场景。二、ThreadLocal实现原理先来看下它的类结构:红色框中的是我们常用的方法,它内部是用Thr
·
2021-01-24 00:14
java
k8s-client-go
源码剖析
(二)
简介:云原生社区活动---Kubernetes
源码剖析
第一期第二周本周是K8S源码研习社第一期第二周,学习内容是学习Informer机制,本文以这个课题进行展开。
·
2021-01-23 14:34
k8s-client-go
源码剖析
(三)
云原生社区活动---Kubernetes
源码剖析
第一期第三周作业,也是最后一周作业.本文主要讲述下client-go中workqueue,看一下client-go的一个整体数据走向.如下图:而workqueue
·
2021-01-23 02:12
通俗易懂的JUC
源码剖析
-CopyOnWriteArrayList
前言众所皆知,ArrayList是线程不安全的,它的所有方法都没有加锁,那么有没有线程安全并且性能高的类呢?那就是CopyOnWriteArrayList实现原理首先来看它的关键数据结构:/**Thelockprotectingallmutators*/finaltransientReentrantLocklock=newReentrantLock();/**Thearray,accessedon
·
2021-01-23 02:40
java
k8s-client-go
源码剖析
(三)
云原生社区活动---Kubernetes
源码剖析
第一期第三周作业,也是最后一周作业.本文主要讲述下client-go中workqueue,看一下client-go的一个整体数据走向.如下图:而workqueue
·
2021-01-23 01:02
通俗易懂的JUC
源码剖析
-CopyOnWriteArrayList
前言众所皆知,ArrayList是线程不安全的,它的所有方法都没有加锁,那么有没有线程安全并且性能高的类呢?那就是CopyOnWriteArrayList实现原理首先来看它的关键数据结构:/**Thelockprotectingallmutators*/finaltransientReentrantLocklock=newReentrantLock();/**Thearray,accessedon
·
2021-01-23 01:30
java
通俗易懂的JUC
源码剖析
-LongAdder/LongAccumulator
大家对AtomicLong应该比较熟悉(如果未接触过,请翻看另一篇博客,通俗易懂的AtomicLong
源码剖析
),但JDK1.8为什么又新增了LongAdder/LongAccumulator2个类?
·
2021-01-22 03:42
java
通俗易懂的JUC
源码剖析
-LongAdder/LongAccumulator
大家对AtomicLong应该比较熟悉(如果未接触过,请翻看另一篇博客,通俗易懂的AtomicLong
源码剖析
),但JDK1.8为什么又新增了LongAdder/LongAccumulator2个类?
·
2021-01-22 03:53
java
k8s-client-go
源码剖析
(一)
首发于2020年8月份,这里重新做一次发布简介:云原生社区活动---Kubernetes
源码剖析
第一期有幸参与云原生社区举办的Kubernetes
源码剖析
活动,活动主要以书籍《Kubernetes
源码剖析
四颗咖啡豆
·
2021-01-20 00:43
golang
后端
k8s
kubernetes
源码分析
k8s-client-go
源码剖析
(一)
首发于2020年8月份,这里重新做一次发布简介:云原生社区活动---Kubernetes
源码剖析
第一期有幸参与云原生社区举办的Kubernetes
源码剖析
活动,活动主要以书籍《Kubernetes
源码剖析
四颗咖啡豆
·
2021-01-20 00:02
golang
后端
k8s
kubernetes
源码分析
React SSR
源码剖析
写在前面上篇ReactSSR之API篇细致介绍了ReactSSR相关API的作用,本篇将深入源码,围绕以下3个问题,弄清楚其实现原理:React组件是怎么变成HTML字符串的?这些字符串是如何边拼接边流式发送的?hydrate究竟做了什么?一.React组件是怎么变成HTML字符串的?输入一个React组件:classMyComponentextendsReact.Component{constr
前端向后
·
2021-01-19 13:17
react.js
ssr
服务端渲染
源码分析
Vue.js
源码剖析
-响应式原理
目标vue.useset,el.data,data,data,el.mount等创建vue实例,初始化好数据后,vue如何渲染到页面的响应式目录根据不同功能把代码拆分不同文件夹(提高可读性可维护性)compiler转换render函数core核心globalApiVue的静态方法instance创建vue实例observer响应式实现(重点讲)vueDom重写了snabdomserver服务端渲染
Jack おう
·
2021-01-19 08:45
vue原理
【待完成】jvm常见面试题汇总
java虚拟机内存管理jvm整体架构jvm运行时内存程序计数器虚拟机栈本地方法栈堆元空间方法区运行时常量池直接内存OOM异常JVM类加载机制类加载系统类加载器双亲委派模型自定义类加载器ClassLoader
源码剖析
垃圾回收机制及算法如何判断对象已经死亡
米兰卡其色
·
2021-01-17 16:25
#
高级用法
面试一次问一次,HashMap是该拿下了(二)
文章目录前言一、HashMap类图二、
源码剖析
1.HashMap(jdk1.8版本)-此篇详解⑴.底层结构(数组+单向链表+红黑树)⑵.构造函数⑶.put()-添加元素方法⑷.get()-获取元素方法⑸
猿医生
·
2021-01-14 16:51
集合源码系列
java
源码剖析
_Spring源码高级笔记——Spring IOC源码深度剖析
SpringIOC源码深度剖析好处:提高培养代码架构思维、深入理解框架原则定焦原则︰抓主线宏观原则:站在上帝视角,关注源码结构和业务流程(淡化具体某行代码的编写细节)读源码的方法和技巧断点(观察调用栈)反调(FindUsages)经验(spring框架中doXXX,做具体处理的地方)Spring源码构建下载源码(github)安装gradle5.6.3(类似于maven)ldea2019.1Jdk
weixin_39548193
·
2021-01-12 22:45
源码剖析
Skynet
基于Actor模式的开源框架
使用多进程解决高并发带来的问题是进程安全锁,框架经常会因为部分代码的报错而导致死锁或内存占用不释放等诸多问题。而使用单进程的服务器框架,通过线程池来做消息轮询和任务执行,能够避开锁带来的诸多问题。框架的初衷众核时代的并行编程免费的晚餐已经结束了(TheFreeLunchIsOver--HerbSutter,2005)E5420(2.5GHz2004)VSE5-2620v3(2.4GHz2014)我
Linux服务器开发
·
2021-01-11 16:28
游戏服务器开发
skynet
Actor
skynet
Actor
游戏开发
游戏服务器开发
游戏客户端开发
Istio支持多集群
源码剖析
在Istio1.8中多集群支持的演变一文中,我们介绍了4种Istio多集群部署模型,并且简单介绍了单网络Primary-Remote部署模型的部署步骤。今天我们通过对源码分析,来介绍Istio如何支持多集群模式。主要通过istioctl命令和Pilot-discovery源码两部分来讲述,并且基于Istio1.8版本。Istioctl命令Istioctl提供了诸多对于多集群支持的命令。该代码位于i
iyacontrol
·
2021-01-11 11:00
istio
kubernetes
k8s
Redis
源码剖析
之robj(redisObject)
我们在之前的文章中已经了解过一部分Redis的数据结构了,尤其是dict中讲到,可以把redis看做一个hashtable,存储了一堆的key-value,今天就来看下key-value中value的主要存储结构redisObject(后文统称robj)。robj的详细代码见object.c字段详解相对与其他几个数据结构,robj相对简单,因为只包含了几个字段,含义都很明确。typedefstru
xindoo
·
2021-01-11 00:28
java
Redis
源码剖析
之robj(redisObject)
我们在之前的文章中已经了解过一部分Redis的数据结构了,尤其是dict中讲到,可以把redis看做一个hashtable,存储了一堆的key-value,今天就来看下key-value中value的主要存储结构redisObject(后文统称robj)。robj的详细代码见object.c字段详解相对与其他几个数据结构,robj相对简单,因为只包含了几个字段,含义都很明确。typedefstru
xindoo
·
2021-01-11 00:04
java
从C++ Primer 到
源码剖析
,精通真的很难!
初级阶段:C++基础语法:《C++Primer第五版》C++语法太过繁杂,很多语法特性一辈子也用不上。对于初学者来说,学完前7章就能写简单的程序。数据结构和算法:《大话数据结构》这实在是一本对新手非常友好的书,暂时先看完前5章就够了。此时应该多做一些练习,可以是简单的小软件或小游戏。C++标准库:《C++Primer第五版》没错还是这本书,之前7章学了基础语法。现在继续学习8~12章,涵盖了标准库
C语言编程俱乐部
·
2021-01-07 16:02
C/C++进阶学习
c++
书籍推荐
C++
书籍
skynet
源码分析之sharedata共享数据
在游戏开发中,需要用到大量且更新不频繁的配置数据,而把业务拆分到多个服务后,各个服务可能只用到其中的少部分数据,此时每个服务加载所有数据会浪费大量内存。sharedata模块就是为了解决这种需求设计的,其原理是:将共享lua数据存放到一个c结构里,所有服务都共享这个c结构的内存块,各个服务可以获取这个共享内存对象,然后就可以像读取普通lua表一样读取数据。1.创建共享数据调用sharedata.n
linux亦有归途
·
2021-01-06 15:03
lua
编程语言
skynet
游戏开发
敞开心扉,一起聊聊Java多线程
不论在是面试还是工作中,多线程都是一些老生常谈的话题,相信正在阅读得你,脑海中已然浮现出多线程的相关知识,那么,我们来一起回顾下吧~==注意:本片博文前面内容重点在于回顾,后面内容重点讲解线程的生命周期以及线程的
源码剖析
猿医生
·
2021-01-05 20:42
java
并发编程
skynet
源码分析之定时器
skynet
_timer.c
skynet
自带定时器功能
skynet
-src/
skynet
_timer.c,在
skynet
启动时会创建一个线程专门跑定时器。
Linux服务器开发
·
2020-12-31 17:28
Linux服务器开发
Linux后台开发
底层应用开发
skynet
游戏开发
游戏服务端开发
游戏客户端开发
Linux服务端开发
面试一次问一次,HashMap是该拿下了(一)
文章目录前言一、HashMap类图二、
源码剖析
1.HashMap(jdk1.7版本)-此篇详解2.HashMap(jdk1.8版本)3.ConcurrentHashMap~~码上福利前言业精于勤荒于嬉,
猿医生
·
2020-12-31 16:27
集合源码系列
java
skynet
源码分析之热更新 lua代码,两个关键字搞定
skynet
有两种方法支持热更新lua代码:clearcache和inject,在介绍
skynet
热更新机制之前,先介绍
skynet
控制台,参考官方wikihttps://github.com/cloudwu
linux亦有归途
·
2020-12-31 14:37
skynet
lua
inject
clearcache
游戏开发
征服面试官:OkHttp 原理篇 掌握这篇面试题汇总,吊打面试官!
前言如今面试中高级开发工程师岗位,OKhttp原理是必问环节,只会使用已经无法满足Android开发市场的需求,优秀的第三方框架
源码剖析
不仅能深度理解框架,也能对自己学习带来很大的帮助。
Jaynm
·
2020-12-31 09:40
面试题
android
开发
okhttp
okhttp原理
android
okhttp面试题
android面试
skynet
源码分析之sproto解析和构建 ,让你从繁琐中解脱
skynet
提供一套与客户端通讯的协议sproto,设计简单,有利于lua使用,参考官方wikihttps://github.com/cloudwu/
skynet
/wiki/Sproto。
linux亦有归途
·
2020-12-30 15:50
skynet
lua
c++
游戏开发
sproto
[Spark
源码剖析
] JobWaiter
职责等待DAGSchedulerjob完成,一个JobWaiter对象与一个job唯一一一对应一旦task完成,将该task结果填充到SparkContext.runJob创建的results数组中构造函数private[spark]classJobWaiter[T](dagScheduler:DAGScheduler,valjobId:Int,totalTasks:Int,resultHandl
牛肉圆粉不加葱
·
2020-12-30 13:25
2020-12-30
2816:15:451379收藏5分类专栏:集合源码系列文章标签:java最后发布:2020-12-2816:15:45首次发布:2020-12-2816:15:45版权文章目录前言一、List类图二、
源码剖析
weixin_46315812
·
2020-12-30 08:26
集合源码系列
java
年轻人不讲武德,一起聊聊List集合(四)
文章目录前言一、List类图二、
源码剖析
1.CopyOnWriteArrayList(此篇详解)2.ArrayList3.LinkedList4.Vector~~码上福利前言业精于勤荒于嬉,行成于思毁于随
猿医生
·
2020-12-29 14:27
集合源码系列
java
年轻人不讲武德,一起聊聊List集合(三)
文章目录前言一、List类图二、
源码剖析
1.Vector(此篇详解)2.ArrayList3.LinkedList4.CopyOnWriteArrayList~~码上福利前言业精于勤荒于嬉,行成于思毁于随
猿医生
·
2020-12-28 16:45
集合源码系列
java
动态代理实现
源码剖析
—— 深入分析cglib动态代理
cglib动态代理前言cglib的源码实现要比JDK动态代理复杂的多,刚开始看会觉得很绕,其实只要把握住主线,明白总体的设计思路,看起来就会比较流程。总体思路:整个过程就是围绕着AbstractClassGenerator和其子类进行。AbstractClassGenerator作为整个代理类的核心类,完成代理类对象实例的创建。代理类本身的类创建动作由不同的AbstractClassGenerat
想起个帅气的头像
·
2020-12-27 22:00
上一页
25
26
27
28
29
30
31
32
下一页
按字母分类:
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
其他