源码

深入JDK源码之ArrayList类

拜拜、爱过 提交于 2019-12-09 11:49:54
ArrayList实现了列表所有可选操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。) public class ArrayList<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, SerializableList size、isEmpty、get、set、iterator 和 listIterator 操作都以固定时间运行。add 操作以分摊的固定时间运行,也就是说,添加 n 个元素需要 O(n) 时间。其他所有操作都以线性时间运行(大体上讲)。与用于 LinkedList 实现的常数因子相比,此实现的常数因子较低。 每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加元素会带来分摊固定时间开销那样简单。 在添加大量元素前,应用程序可以使用 ensureCapacity 操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。 注意,此实现不是同步的。如果多个线程同时访问一个

深入JDK源码之LinkedList类

自闭症网瘾萝莉.ら 提交于 2019-12-09 11:48:42
LinkedList实现列表所有可选的操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable LinkedList类实现Deque接口,为 add、poll 提供先进先出队列操作,以及其他堆栈和双端队列操作。 所有操作都是按照双重链接列表的需要执行的。在列表中索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端)。 注意,此实现不是同步的。如果多个线程同时访问一个链接列表,而其中至少一个线程从结构上修改了该列表,则它必须保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方法来“包装”该列表。最好在创建时完成这一操作,以防止对列表进行意外的不同步访问,如下所示: List list

RHEL6.5源码安装mysql-5.7.11

点点圈 提交于 2019-12-09 11:28:20
源码编译mysql-5.7.11 下载地址: http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.11.tar.gz http://liquidtelecom.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz 安装必要的资源包 建议使用网络yum源,RHEL6.5光盘中自带的软件包版本不够,mysql-5.7.11.tar.gz的编译对软件包的版本要求比较高,其中cmake的版本要不低于2.8 网络yum源配置可以参考http://blog.sina.com.cn/s/blog_14e8c64ca0102vztv.html [root@xuegod163 ~]# yum -y install gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel* make cmake 删除系统自带mysql [root@xuegod63 mysql-5.7.11]# yum -y remove mysql 添加用户和组 [root@xuegod163 ~]# groupadd mysql [root@xuegod163 ~]# useradd -M -s /sbin

ThreadLocal 源码解读

大兔子大兔子 提交于 2019-12-08 22:36:31
一、引入 public class Thread implements Runnable { /* 前面略 */ /* ThreadLocal values pertaining to this thread. This map is maintained * by the ThreadLocal class. */ ThreadLocal.ThreadLocalMap threadLocals = null; /* 后面略 */ } 首先我们看到的是 Thread 中有一个属性 threadLocals,它的类型是 ThreadLocalMap,封装类型是 default(表示它只能在包内可见),jdk 是这么介绍它的:与此线程有关的 ThreadLocal 值,该映射由 ThreadLocal 类维护。 啥意思呢?那就来看看 ThreadLocalMap 是啥玩意! public class ThreadLocal<T> { /* 前面略 */ static class ThreadLocalMap { /** * The entries in this hash map extend WeakReference, using * its main ref field as the key (which is always a * ThreadLocal object).

nginx源码安装-及lnmp搭建 phpmyadmin

北慕城南 提交于 2019-12-08 22:31:23
1.下载源码编译安装nginx wget http://nginx.org/download/nginx-1.17.1.tar.gz tar -xvf nginx-1.17.1.tar.gz yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel #安装编译环境 ./configure #运行内部的配置脚本 make && make install #编译安装 安装完成 cd 到 cd /usr/local/nginx/ ls -l 查看一下文件 #可以看到 配置文件夹 日子文件夹 启动脚本文件夹 根文件夹都在这里面 ./sbin/nginx #运行脚本打开nginx #浏览器输入服务器IP 就能看见nginx欢迎页面了 2.安装php7.0 配置PHP支持 rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm #下载安装php 源、 yum -y install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mysql

C#调用Python(二)

吃可爱长大的小学妹 提交于 2019-12-08 21:02:28
python文件中有引入其他包、模块 一、源码 1.1 python源码,源码、python 打包方法,以及打包后的程序文件。请移步 https://www.cnblogs.com/zhuanjiao/p/11588346.html 获取。这里就不重复贴了。 1.2 C#源码 using System.Diagnostics; namespace TestClass { public class RBoot { public void StartBoot() { string path = @"D:\PyCharm\source\Study\dist\RBoot.exe"; using (Process proc = new Process()) { proc.StartInfo.FileName = path; proc.StartInfo.Arguments = "";// 本示例没有参数,若有参数,按照顺序用空格拼接(如:"pA pB pC") proc.StartInfo.RedirectStandardError = true; proc.StartInfo.UseShellExecute = false; proc.Start(); proc.WaitForExit(); } } } } 二、控制台程序里调用下上面StartBoot方法,运行成功! 来源: https:

activiti6.0基于源码运行activiti-app

…衆ロ難τιáo~ 提交于 2019-12-08 20:58:34
启动activiti-app $ cd modules/activiti-ui/activiti-app $ mv clean tomcat7:run $ open http://localhost:9999/activiti-app activiti-ui activiti-app 集成发布的war工程 activiti-app-conf UI独立于业务外的配置 activiti-app-logic UI的业务逻辑 activiti-app-rest 提供接口的rest api 来源: https://www.cnblogs.com/one-Liu/p/12006657.html

activiti6.0核心源码模块

落爺英雄遲暮 提交于 2019-12-08 20:58:27
核心模块 modules/activiti-angine 核心引擎 modules/activiti-spring Spring集成模块 modules/activiti-spring-boot SpringBoot集成模块 modules/activiti-rest 对外提供Rest Api模块 modules/activiti-form-engine 表单引擎模块 modules/activiti-ldap 集成Idap用户的模块 来源: https://www.cnblogs.com/one-Liu/p/12006642.html

[drf]源码继承关系

隐身守侯 提交于 2019-12-08 18:47:47
# drf继承关系 View APIView as_view: 执行父类的as_view 调用dispatch dispatch init_request request.queryparams request.Data init 内容协商/版本 认证/授权/限流 GenericAPIView get_queryset get_serializerclass 过滤/分页 viewset 重写as_view方法 drf系列参考 # drf和orm耦合度太高? 可以继承viewsets.ViewSet类.逃脱了gennericapiview class ViewSet(ViewSetMixin, views.APIView):pass class GetTaskIpLogViewSet(viewsets.ViewSet): def list(self, request, *args, **kwargs): data = get_task_ip_log("cat /etc/hosts") return Response(data) 来源: https://www.cnblogs.com/iiiiiher/p/12006623.html

Spring-AOP源码分析随手记(二)

走远了吗. 提交于 2019-12-08 17:06:55
这次来分析下切面的执行过程。 1.怎么看? 怎么开始看源码呢?就直接从被增强的方法调用那里打断点,看看怎么执行的: 然后就来到了这: 2.初步分析 里面有段: if (this.advised.exposeProxy) { // Make invocation available if necessary. oldProxy = AopContext.setCurrentProxy(proxy); setProxyContext = true; } 就是上篇文章讲到的注解配置暴露代理对象,放到AopContext的ThreadLocal里去,之后就可以随时用 AopContext.currentProxy())取到代理对象。 接下来有段重要的: List<Object> chain = this.advised.getInterceptorsAndDynamicInterceptionAdvice(method, targetClass); 获取拦截器链,就是把这次相关的增强器转化成拦截器获取出来 然后: if (chain.isEmpty()) { // We can skip creating a MethodInvocation: just invoke the target directly // Note that the final invoker must be an