源码

Netty源码分析(一)--- 核心组件NioEventLoopGroup和NioEventLoop的初始化

走远了吗. 提交于 2019-12-25 23:56:17
一、NioEventLoopGroup和NioEventLoop的UML类图 二、NioEventLoopGroup初始化流程 从new一个NioEventLoopGroup开始 //一、NioEventLoopGroup的构造器 //1.传入线程数 public NioEventLoopGroup ( int nThreads ) { //新增传入为null的执行器 this ( nThreads , ( Executor ) null ) ; } //2.构造器 public NioEventLoopGroup ( int nThreads , Executor executor ) { //新增传入java底层的selector提供器 this ( nThreads , executor , SelectorProvider . provider ( ) ) ; } //3.构造器 public NioEventLoopGroup ( int nThreads , Executor executor , final SelectorProvider selectorProvider ) { //新增传入默认选择器策略工厂 this ( nThreads , executor , selectorProvider , DefaultSelectStrategyFactory .

13.1 dubbo服务降级源码解析

可紊 提交于 2019-12-25 22:39:36
从 9.1 客户端发起请求源码 的客户端请求总体流程图中,截取部分如下: //代理发出请求 proxy0.sayHello(String paramString) -->InvokerInvocationHandler.invoke(Object proxy, Method method, Object[] args) -->new RpcInvocation(method, args) -->MockClusterInvoker.invoke(Invocation invocation)//服务降级的地方 dubbo就是通过 MockClusterInvoker 来实现服务降级的。 一、示例 1 public interface DemoService { 2 // String sayHello(String name); 3 Car sayHello(String name); 4 } 将dubbo-demo中的服务接口定义一个返回模型Car。提供者实现如下: 1 public class DemoServiceImpl implements DemoService { 2 public Car sayHello(String name) { 3 Car car = new Car(); 4 car.setCarNum("浙A10000"); 5 car.setGoMile

Java源码阅读之:Unsafe魔法类

怎甘沉沦 提交于 2019-12-25 22:34:13
Unsafe类 内容参考节选: https://blog.csdn.net/qq_34436819/article/details/102637289 https://blog.csdn.net/qq_34436819/article/details/102723579 https://www.jianshu.com/p/db8dce09232d https://tech.meituan.com/2019/02/14/talk-about-java-magic-class-unsafe.html 一:问题 Unsafe是什么类 与原子类原子操作有什么关系 Unsafe类有什么功能 二:Unsafe类简介 Unsafe是位于sun.misc包下的一个类,主要提供一些用于低级别、不安全操作的方法,如直接访问系统内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java语言拥有了类似C语言指针一样操作内存空间的能力,这无疑也增加了程序发生相关指针问题的风险。在程序中过度、不正确使用Unsafe类会使得程序出错的概率变大,使得Java这种安全的语言不再“安全”,因此对Unsafe类的使用一定要慎重。 Unsafe类中方法很多,但大致可以分为8大类。CAS操作、内存操作、线程调度、数组相关、对象相关操作、Class相关操作

asp.net abp模块化开发之通用树2:设计思路及源码解析

断了今生、忘了曾经 提交于 2019-12-25 22:09:29
一、前言 上一篇大概说了下abp通用树形模块如何使用,本篇主要分析下设计思路。 日常开发中会用到很多树状结构的数据,比如:产品的多级分类、省市区县,大多数系统也会用到类似“通用字典/数据字典”的功能,为系统各个地方提下拉框选择的数据源。abp提供了一个模块化系统,只要按它的约定就可以实现一个通用的树形数据的模块,这样公司的多个系统都可以使用,也可以用类似nuget的方式提供给别人使用。 先列举下它的功能 通过nuget方便安装和升级 配置简单 默认已经提供“通用字典”功能 实体、管理器、应用服务都是抽象类,结合泛型 狠容易扩展实现自己的树形结构 二、必备知识 这不是abp入门级的文章,是探讨系统模块化开发的一种思路。所以要求对abp有经验,完整看过abp文档,对涉及到的模块、依赖注入、启动配置、权限、菜单、本地化等等概念有清晰的认识 三、包和源码 源码地址: https://github.com/bxjg1987/abpGeneralModules nuget:Install-Package BXJG.GeneralTree -Version 1.0.2 在线地址: http://test.cqsifang.com/ 账号密码:admin zlj.com (别胡来,拜托...) 源码仓库中还有通用的文件模块、附件模块,后期会讲讲;nuget搜索bxjg可以找到这几个相关的包 四

Go程序的一生是怎样的?

天大地大妈咪最大 提交于 2019-12-25 21:28:35
Go 程序是怎样跑起来的 原创: 饶全成 码农桃花源 刚开始写这篇文章的时候,目标非常大,想要探索 Go 程序的一生:编码、编译、汇编、链接、运行、退出。它的每一步具体如何进行,力图弄清 Go 程序的这一生。 在这个过程中,我又复习了一遍《程序员的自我修养》。这是一本讲编译、链接的书,非常详细,值得一看!数年前,我第一次看到这本书的书名,就非常喜欢。因为它模仿了周星驰喜剧之王里出现的一本书 ——《演员的自我修养》。心向往之! 在开始本文之前,先推荐一位头条大佬的博客——《面向信仰编程》,他的 Go 编译系列文章,非常有深度,直接深入编译器源代码,我是看了很多遍了。博客链接可以从参考资料里获取。 理想很大,实现的难度也是非常大。为了避免砸了“深度解密”这个牌子,这次起了个更温和的名字,嘿嘿。 下面是文章的目录: 引入 我们从一个 HelloWorld 的例子开始: package main import "fmt" func main() { fmt. Println ( "hello world" ) } 当我用我那价值 1800 元的 cherry 键盘潇洒地敲完上面的 hello world 代码时,保存在硬盘上的 hello.go 文件就是一个字节序列了,每个字节代表一个字符。 用 vim 打开 hello.go 文件,在命令行模式下,输入命令: :%!xxd 就能在 vim

java源码阅读ArrayBlockingQueue

喜你入骨 提交于 2019-12-25 20:23:01
1类签名与简介 public class ArrayBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, java.io.Serializable 一个有限的阻塞队列由 数组 支持。 这个队列排列元素 FIFO (先进先出)。新元素插入队列的尾部,队列检索操作获取队列头部的元素。 ArrayBlockingQueue是线程安全的,其 内部通过“互斥锁”(Lock)保护竞争资源,实现了多线程对竞争资源的互斥访问。 ArrayBlockingQueue的容量是固定的,确定之后无法更改。该实现既包含了一组非阻塞的操作的API,也包括了一组阻塞操作的API。 阻塞情况有如下两种:(1)当队列为null时,取操作会阻塞;(2)当队列为满时,插入操作会被阻塞。 ArrayBlockingQueue是并发包中的类,可以用来实现经典的“生产者/消费者”模型。 2重要属性 //items数组存储队列中的元素 final Object[] items; //下一个取元素的索引(take, poll, peek or remove ) int takeIndex; //下一个插入元素应该的索引(put, offer, or add) int putIndex; //队列中元素的个数 int count; /**

java源码

纵饮孤独 提交于 2019-12-25 19:16:44
Java常用包 下面列出了Java常用包,点击链接可以查找该包下面的常用类,点击类链接可以查看该类的常用方法使用源码。 模块 项目数 1. java.util 有 (110 )个常用类 2. java.io 有 (80 )个常用类 3. android.widget 有 (100 )个常用类 4. android.view 有 (55 )个常用类 5. java.net 有 (63 )个常用类 6. java.util.concurrent 有 (60 )个常用类 7. android.os 有 (55 )个常用类 8. android.content 有 (49 )个常用类 9. android.graphics 有 (53 )个常用类 10. android.app 有 (58 )个常用类 11. org.junit 有 (13 )个常用类 12. javax.swing 有 (127 )个常用类 13. java.lang.reflect 有 (29 )个常用类 14. java.awt 有 (108 )个常用类 15. android.util 有 (48 )个常用类 16. java.security 有 (73 )个常用类 17. java.text 有 (24 )个常用类 18. java.sql 有 (52 )个常用类 19. javax.persistence 有

Spring源码分析之IoC容器初始化

蹲街弑〆低调 提交于 2019-12-25 16:44:58
本文首发于 cdream 个人博客(点击获得更加阅读体验) 欢迎转载,转载请注明出处 作为一个java程序员,保守估计一年里也都有300天要和Spring有亲密接触~~像我这种怕是每天都要撸撸Spring,所以这次也要做个深入了解!这次就来看看Spring是怎么 初始化IoC容器的 😄 注:阅读本文时一定要在IDE进行跳转 我们都是知道Spring为企业级应用提供了丰富的功能,而这些功能底层都依赖于底层最核心的两种特性IOC和AOP。 IOC实现里主要包括两部分,一个是IOC容器初始化,另外一个是依赖注入,由于两部分是相对独立的部分,所以分成不同文章讲解,本篇主要 讲述IOC容器的初始化 。 一、IoC的概念 控制反转 (Inversion of Control,缩写为 IoC ),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的 耦合度 。其中最常见的方式叫做 依赖注入 (Dependency Injection,简称 DI ),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。 上面这个概念是来自维基百科,在 Expert Spring MVC and Web Flow 和 Expert One-on-One J2EE

【spring源码分析】IOC容器初始化(四)

你。 提交于 2019-12-25 16:44:38
前言:在 【spring源码分析】IOC容器初始化(三) 中已经分析了BeanDefinition注册之前的一些准备工作,下面将进入BeanDefinition注册的核心流程。 1 //DefaultBeanDefinitionDocumentReader 2 protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) { 3 // 进行bean标签解析 4 // 如果解析成功,则返回BeanDefinitionHolder,BeanDefinitionHolder为name和alias的BeanDefinition对象 5 // 如果解析失败,则返回null 6 BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele); 7 if (bdHolder != null) { 8 // 进行标签处理,主要对bean标签的相关属性进行处理 如: p:name="测试用例" 9 bdHolder = delegate.decorateBeanDefinitionIfRequired(ele, bdHolder); 10 try { 11 // 注册BeanDefinition 12 /

使用chrome调试前端线上代码

江枫思渺然 提交于 2019-12-25 15:39:08
家都知道在前端开发过程中,为加快网站静态资源加载速度都会对js/css等静态资源进行压缩合并再部署到生产环境,而在实际开发过程中开发人员一般都是在开发环境进行源码文件开发调试的,当部署平台或部署人员将开发人员提交的前端代码进行压缩合并为压缩文件后,当遇到生产环境出现问题之后很难通过压缩文件去定位问题,所以如何让开发人员便利的调试线上代码,并迅速定位问题是部署及运维网站需要考虑的重要考量的地方,此文档教程将描述如何使用chrome浏览器进行线上调试源码问题。 Step-by-step guide 下载chrome浏览器 修改grunt部署打包任务配置,如图 通过Jenkins发布部署项目 访问 http://test.www.****.com/ 网站(站点已对源码进行压缩合并,支持调试压缩文件源码) 打开F12浏览器调试工具界面 勾选设置设置中的Enable Javascript source maps选项 关闭设置后,打开sources选项卡后,F5刷新页面后即可查看调试压缩文件源码 如需查看压缩文件,将设置中的Enable Javascript source maps选项勾选取消即可查看压缩文件,如图 来源: https://www.cnblogs.com/qshting/p/5142514.html