源码

jdk源码阅读-Object类

ぃ、小莉子 提交于 2019-12-11 10:58:43
native 关键字 private static native void registerNatives(); static { registerNatives(); } public final native Class<?> getClass(); public native int hashCode(); protected native Object clone() throws CloneNotSupportedException; public final native void notify(); public final native void notifyAll(); public final native void wait(long timeout) throws InterruptedException; native是与C++联合开发的时候用的!java自己开发不用的! 使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。 这些函数的实现体在DLL中,JDK的源代码中并不包含,你应该是看不到的。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。 1。native 是用做java 和其他语言(如c

QtCreator源码分析(一)——QtCreator源码简介

非 Y 不嫁゛ 提交于 2019-12-11 10:35:16
QtCreator源码分析(一)——QtCreator源码简介 一、QtCreator简介 QtCreator是设计精巧的插件式系统,QtCreator的核心是一个插件管理器,其所有功能都是使用插件完成。在启动时,QtCreator会首先加载一个名为coreplugin的插件,coreplugin插件提供了Qt Creator最基本的功能和扩展点,其余的插件都是直接或间接依赖于coreplugin插件提供的机制,一步步扩充QtCreator的功能,最终将其变成一个功能完整的IDE。 针对QtCreator的插件机制设计,QtCreator源码分析会将关注重点放在插件管理器的实现、coreplugin的实现上面。QtCreator完全基于qmake的复杂开发模式,需要学会如何使用qmake管理一个相当复杂的项目(QtCreator近5000个文件),如何开发自定义插件管理器,如何使用插件扩展定制系统等。 二、QtCreator源码简介 1、QtCreator源码目录简介 QtCreator-2.8.1包含5000多个文件,代码行数超过了110万行。 源码目录如下: ![] bin: 生成Linux平台shell脚本。 dist: 安装文件配置信息和版本更新记录。 doc: 生成doxygen文档的配置文件。 lib:Qt组件相关的QML文件 qbs:QBS 配置文件。QBS,即 Qt

Ruby cannot load such file -- zlib和openssl(LoadError)及gem No rule to make target `/include/ruby.h&apos;解决

夙愿已清 提交于 2019-12-11 10:17:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Ruby源码安装cannot load such file -- zlib和cannot load such file -- openssl及gem No rule to make target `/include/ruby.h'解决办法 发生问题时我的前置条件 linux版本: Linux ossjh2 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux gcc版本: gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) Ruby版本:ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux] Ruby安装方式: 源码安装且源码未删除 安装Ruby及gems目的: 使用ruby搭建redis集群 cannot load such file -- zlib 问题解决 原因 缺少zlib函式库 缺少ruby-zlib 解决 (未安装zlib时)下载安装zlib 我是使用源码安装,由是默认安装到/usr/local/lib,我选择使用root用户操作 安装版本zlib-1.2.11

Spring Cloud Gateway源码解析实战 - 路由工厂

馋奶兔 提交于 2019-12-11 09:36:17
1、基于日期时间的断言工厂 基于日期时间的断言工厂主要是通过日期时间对请求进行断言,判断请求时间是否符合配置的时间,实现类主要有三种,分别如下: AfterRoutePredicateFactory :接收一个日期参数判断请求时间是否在配置时间之后; BeforeRoutePredicateFactory :接收一个日期参数,判断请求日期是否在指定日期之前; BetweenRoutePredicateFactory :接收两个日期参数,判断请求日期是否在这两个指定日期之间; 2、AfterRoutePredicateFactory org.springframework.cloud.gateway.handler.predicate.AfterRoutePredicateFactory ,用于匹配请求时间在指定时间之后的请求,其UML关系图如下(其他实现类的UML类似): 其源码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 public class AfterRoutePredicateFactory extends

Spring事务原理源码剖析

烈酒焚心 提交于 2019-12-11 08:06:16
1. 数据库事务特性 1.1 ACID特性 事务(Transaction)是数据库系统中一系列操作的一个逻辑单元,所有操作要么全部成功要么全部失败。 事务是区分文件存储系统与Nosql数据库重要特性之一,其存在的意义是为了保证即使在并发情况下也能正确的执行crud操作。怎样才算是正确的呢?这时提出了事务需要保证的四个特性即ACID: A: 原子性(atomicity) ​ 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 C: 一致性(consistency) ​ 在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。 I: 隔离性(isolation) ​ 数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读已提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。 D: 持久性(durability) ​

spring源码解读(二)基础篇之servlet3.1规范

你说的曾经没有我的故事 提交于 2019-12-11 06:00:10
目录 servlet接口 request servletContext response filter filter生命周期 filter环境 在Web应用中配置filter filter和RequestDispatcher 会话 Cookies URL 重写 会话完整性 注解 @WebServlet @WebFilter @WebInitParam @WebListener @MultipartConfig 其他注解/惯例 可插拔性 web fragment web.xml和web-fragment.xml顺序 可插拔性 web应用 Web应用程序部署 包含web.xml部署描述文件 servlet3.1规范中文版。 参考文章: Servlet 是基于 Java 技术的 web 组件,容器托管的,用于生成动态内容。    早期的Web应用主要用于浏览新闻等静态页面,Http服务器(比如Apache,Nginx)向浏览器返回静态HTML,浏览器负责解析HTML,将结果呈现给用户。   需求:为了不仅仅浏览静态页面,还希望通过一些交互操作,来获取动态结果。那么可以通过让HTTP服务器调用服务端程序来实现。   那么服务端如何来实现这个需求呢?   Sun公司就推出了Servlet技术。Servlet可以理解为运行在服务端的Java小程序,因为Servlet不能独立运行

darknet源码分析-load_image_augment_paths

眉间皱痕 提交于 2019-12-11 05:31:54
https://github.com/pjreddie/darknet darknet/src/data.c 1、加载数据函数:对原始数据集做预处理,便于输入网络 matrix load_image_augment_paths ( char * * paths , int n , int min , int max , int size , float angle , float aspect , float hue , float saturation , float exposure , int center ) { int i ; matrix X ; X . rows = n ; //行 X . vals = calloc ( X . rows , sizeof ( float * ) ) ; //分配空间,大小为 n*siezof(float*) X . cols = 0 ; //列 for ( i = 0 ; i < n ; ++ i ) { //2、 image im = load_image_color ( paths [ i ] , 0 , 0 ) ; //paths[i]:文件名 image crop ; if ( center ) { crop = center_crop_image ( im , size , size ) ; //center中心点坐标?

spring5/springboot2源码学习 -- spring boot的SPI与spring.factories

泪湿孤枕 提交于 2019-12-11 04:16:05
概念 spring boot启动的时候,就算你自己啥配置都没,它自己也会有很多已经配置好了的bean。我们知道在spring中,可以通过在xml中配置,或者通过@Component+@ComponentScan注解,或者通过@Configuration/@Bean注解来达到注册Bean到ApplicationContext中的效果,那这里你明明啥都没做,为啥已经有了这么多的bean了呢? 答:spring boot的某种类似SPI的机制 实现 通过SpringFactoriesLoader读取classpath低下的META-INF/spring.factories文件,这个文件可以有多个。 private static Map < String , List < String > > loadSpringFactories ( @Nullable ClassLoader classLoader ) { //判断缓存,是否已经加载过了。 //对于每个ClassLoader,只会执行一次具体的加载过程,其他时候都是可以直接读cache的 MultiValueMap < String , String > result = cache . get ( classLoader ) ; if ( result != null ) { return result ; } try { /

docker镜像文件很大

故事扮演 提交于 2019-12-11 03:36:43
去网上查了一番以后发现一个问题 由于docker镜像的构建方式是以层的概念来实现的 就是说我在容器内所做的所有操作都会在构建镜像时运行一遍 所以每一个操作所涉及到的内存空间, 都会成为镜像文件的一部分 比如我在容器内下载了rocketmq的源码, 并在里面编译安装完成 随后我把源码删掉了, 可是实际上他已经被深深地刻在了镜像上 解决方案 用dockerfile reference https://www.cnblogs.com/imyjy/p/10132774.html 来源: CSDN 作者: 陈军2号 链接: https://blog.csdn.net/u011622208/article/details/103478839

吃透Shiro源码第四天

情到浓时终转凉″ 提交于 2019-12-11 03:22:54
文章目录 技术手法 (1)究竟什么是缓存 (2)用Map作为缓存实现 (3)如何管理缓存生命周期 (4)AOP解析方法上的注解思路 重点研究类 技术手法 (1)究竟什么是缓存 缓存这个词语,我耳朵都快听出茧子了,什么Redis、Ecache。不过,到底什么是缓存,说实在的,我一直很模糊其概念。今天终于接近了缓存代码的源头。缓存到底是什么?我的总结:缓存对象是一个可以封装多组键值对的特殊对象。因此,缓存可以视为一种容器。 如下代码展示了缓存最顶层的接口。原来缓存一点都不神秘,它就是一种可以用来增删对象的容器。 public interface Cache < K , V > . . . /** * 存 * * @param key key * @param value value */ void put ( K key , V value ) throws CacheException ; /** * 取 * * @param key key * @return value */ V get ( K key ) throws CacheException ; /** * 删 * * @param k key * @return value */ V remove ( K k ) throws CacheException ; (2)用Map作为缓存实现 既然缓存是容器