源码

Werkzeug之LocalStack源码解析

北城余情 提交于 2019-12-05 08:47:08
Werkzeug之LocalStack源码解析 原博文地址 http://liuyajing.coding.me/blogs/python/2018/werkzeug-localstack/ 一、引入 最近在阅读 Flask 的源码,遇到三个概念:Local 、 LocalStack 和 LocalProxy ,本文主要就针对 LocalStack 概念及其源码进行原理剖析。 二、原理 这个类类似于:class:Local,但是在 storage[ident] 中存放的是一个 key 为 stack,value 为 一个堆列表的形式,例如: >>> ls = LocalStack() >>> ls.push(42) >>> ls.top 42 >>> ls.push(23) >>> ls.top 23 >>> ls.pop() 23 >>> ls.top 42 ''' 它们可以通过使用:class:LocalManager或使用:func:release_local函数强制释放,但正确的方法是在使用后从堆栈中弹出元素。 当堆栈为空时,它将不再绑定到当前上下文(并因此释放)。 通过不带参数调用实例方法,它返回一个代理,该代理解析为堆栈中最顶层的元素。 ''' 三、LocalStack 1. init def __init__(self): self._local = Local()

cglib测试例子和源码详解

巧了我就是萌 提交于 2019-12-05 08:46:35
目录 简介 为什么会有动态代理? 常见的动态代理有哪些? 什么是cglib 使用例子 需求 工程环境 主要步骤 创建项目 引入依赖 编写被代理类 编写MethodInterceptor接口实现类 编写测试类 运行结果 源码分析-获得代理类的过程 主要步骤 获得key 利用key从缓存中获取Class 生成代理类Class 代理类代码分析 cglib生成文件 代理类源码 MethodProxy.create MethodProxy.invokeSuper FastClass.invoke 简介 为什么会有动态代理? 举个例子,当前有一个用户操作类,要求每个方法执行前打印访问日志。 这里可以采用两种方式: 第一种,静态代理。即通过继承原有类来对方法进行扩展。 当然,这种方式可以实现需求,但是当类的方法很多时,我们需要逐个添加打印日志的代码,非常繁琐。此时,如果要求加入权限校验,这个时候又需要再创建一个代理类。 第二种,动态代理。即通过拦截器的方式来对方法进行扩展。 动态代理只需要重写拦截器的一个方法,相比静态代理,可以减少很多代码。而且,动态代理要实现不同的代理类,只要选择不同的拦截器就可以了(可以选择多个),代理类不需要我们自己实现,可以有效实现代码解耦和可重用。 不限于以上优点,动态代理被广泛应用于日志记录、性能统计、安全控制、事务处理、异常处理等等

Werkzeug之Local源码解析

孤者浪人 提交于 2019-12-05 08:45:35
Werkzeug之Local源码解析 原博客地址 http://liuyajing.coding.me/blogs/python/2018/werkzeug-local/ 一、引入 最近在阅读 Flask 的源码,遇到三个概念:Local 、 LocalStack 和 LocalProxy ,本文主要就针对 Local 概念及其源码进行原理剖析。 二、Local Local 是一个类,源码位置:site-packages/werkzeug/local.py 在模块的开头,有以下代码: # 由于每个线程都有自己的greenlet,我们可以将它们用作上下文的标识符。 # 如果greenlet不可用,我们将根据它的位置回退到当前的线程标识。 try: from greenlet import getcurrent as get_ident except ImportError: try: from thread import get_ident except ImportError: from _thread import get_ident 1. 定义 class Local(object): # 定义此类允许绑定的属性名称 tuple __slots__ = ('__storage__', '__ident_func__') 2. init def __init__(self):

新一代开源即时通讯应用源码定制 运营级IM聊天源码

纵然是瞬间 提交于 2019-12-05 08:37:17
公司介绍: 我们是专业的 IM服务提供商!哇呼Chat是一款包含android客户端/ios客户端/pc客户端/WEB客户端的即时通讯系统。本系统完全自主研发,服务器端源码直接部署在客户主机。非任何第三方IM通讯平台! 功能全面: 支持推送、多终端登录、历史消息、数据统计,可扩展位置分享、已读标记、输入中 … 1. 即时消息 / 单聊: 基础功能,文字、图片、表情、语音、文件等,可基于手机联系人、通过通讯录、原有用户及好友关系进行通讯满足用户间的即时沟通。 2.群组: 灵活的创建方式、丰富的权限及管理功能提供群组、讨论组、聊天室等不同的群聊解决方案满足多人移动沟通的需求。 3.语音留言: 按住说话发送语音的方式当然少不了 .免费、清晰、完美的传达,让每一次沟通都充满乐趣,边说边传,有效提升发送速度 。 4.实时音视频: 点击呼叫即可,平台已完成点对点通话及视频所需的一切 ,键盘、静音、扬声器、呼转都支持,通话清晰、视频流畅,带宽占用低 。 5.音视频会议: 支持同一房间或群组的多人语音群聊,一对多视频、视频会议 具备管理员功能,一对多视频有效降低各方宽带占用 。 我们提供的服务 一.功能定制 拥有 8 年经验的 APP/UI (界面设计和用户体验)团队,为您设计美观大方,用户体验极佳的 UI 。 二.开发安全稳定的 APP/ 程序 拥有 8 年经验的 APP 程序开发的团队

USDT跑分app源码搭建

折月煮酒 提交于 2019-12-05 07:59:35
U丨S丨D丨T丨跑丨分丨系丨统丨开丨发 欢迎咨询厄加特Urgot(189微2212电1525) ,跑丨分丨系丨统丨开丨发丨 A丨P丨P丨开丨发丨案丨例丨源丨码丨制丨度丨方丨案丨,我司位于广州天河区,是一家大型专业商业服务互联网技术一体化公司,百人技术团队,市面上有的你叫得出名字的类似系统我们都能做,模式多样,紧跟时代,能做出最符合你、最接近时代轨道的项目方案。 其实我学习java最根本的原因是:我是一个挺关注外在的人,虽然是个程序员,所以我很喜欢写出那些带有漂亮的界面的程序,因为C总是控制台,我不是很喜欢,在这份java代码合集中,我会记录自己学习Java界面化编程的点点滴滴。 更新:因为C/C++是我主要使用语言,所有后来写界面主要用Qt写了,但我java也会继续学的。我只是给想学界面gui的同志一个思路。可以参考这篇文章Qt5 计算器的实现 可能会有java初学者,我也是,说明,java是一个工程里可以有很多java类class,每一个类class都可以单独运行,不像C语言里只能有一个main()函数可以运行 1、技术基础 在阅读源码之前,我们要有一定程度的技术基础的支持。 假如你从来都没有学过Java,也没有其它编程语言的基础,上来就啃《Core Java》,那样是很难有收获的,尤其是《深入Java虚拟机》这类书,或许别人觉得好,但是未必适合现在的你。 比如设计模式

VisualStudio使用GIT

半世苍凉 提交于 2019-12-05 07:54:17
使用GIT进行源码管理 —— 在VisualStudio中使用GIT GIT作为源码管理的方式现在是越来越流行了,在VisualStudio 2012中,就通过插件的现实对GIT进行了官方支持,并且这个插件在VS2013中已经转正。本文在这里简单的介绍一下如何在Visual Studio中使用GIT进行源码管理。 PS: 由于篇幅所限,本文并没有对相关基础知识进行介绍,在读取本文前,假定你已经对GIT有一定的了解,并且对VisualStudio的团队管理器比较熟悉,后续有时间的话再进行相关知识的介绍。 将项目添加到GIT源码管理 将项目添加到GIT源码管理和通过TFS管理方式一样,直接在解决方案的右键菜单中点取即可。 和之前不同的是,此时会出现一个对话框会让你选择使用传统的TFS方式还是GIT方式来管理,这里选择Git。 选择完后,我们就可以在团队资源管理器中看到项目已经被托管起来,并且已经新建你一个master的分支。 安装第三方Git工具 从上面的截图我们也可以看到,团队管理器视图会提示你安装第三方Git工具。虽然不安装也可以使用,但是VisualStudio中集成的功能是比较少的(就目前来看,是不够用的),如果要使用其它的功能,则需要通过第三方Git工具来实现。 安装方式比较简单,直接按照提示不停的下一步即可,这里就不多介绍了。系统自己带的是Git For Windows

看源码学编程系列之kafka(一)

情到浓时终转凉″ 提交于 2019-12-05 07:41:43
   kafka 由于它自身的高性能发送与消费能力,而受到广大企业的喜欢,所以我们就先看看kafka 一些源码实现如下:    1 public void run() { 2 int messageNo = 1; 3 while (true) { 4 String messageStr = "Message_" + messageNo; 5 long startTime = System.currentTimeMillis(); 6 if (isAsync) { 7 producer.send(new ProducerRecord<>(topic, 8 messageNo, 9 messageStr), new DemoCallBack(startTime, messageNo, messageStr));// 异步发送 10 } else { 11 try { 12 producer.send(new ProducerRecord<>(topic, 13 messageNo, 14 messageStr)).get();// 同步发送 15 System.out.println("Sent message: (" + messageNo + ", " + messageStr + ")"); 16 } catch (InterruptedException |

Java集合源码之HashMap

纵饮孤独 提交于 2019-12-05 07:39:27
1. 简介 HashMap是一个哈希表,线程不安全, key 唯一, value 可重复,允许 key 和 value 为null。遍历时是无序的。 底层结构是基于链表散列,也就是数组+链表。数组也被称为哈希桶,桶里面就装着链表,链表中的每个节点,就是哈希表中的每个元素。 在JDK8中,当链表长度达到8的时候,就会转为红黑树。 它实现了 Map<K, V>, Cloneable, Serializable 接口。 接下来我们就来看下源码: 2. 属性 // 序列化ID,用于序列化和反序列化 private static final long serialVersionUID = 362498820763181265L; // 默认初始容量也就是16-必须为2的幂。 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 // 最大容量。 // 如果两个构造函数都使用参数隐式指定了更高的值,则使用该容量。 // 必须是2的30次方。 static final int MAXIMUM_CAPACITY = 1 << 30; // 默认的负载因子 static final float DEFAULT_LOAD_FACTOR = 0.75f; // Entry数组,也就是哈希桶,长度为2的n次幂 transient

云比特源码

情到浓时终转凉″ 提交于 2019-12-05 07:36:09
 云比特源码,云比特源码系统源码 APP 开发找梁经理 (153 微 2202 电 6891) 云比特源码软件 APP 开发,云比特源码 APP 开发,云比特源码 APP ,类似云比特源码 APP 开发。   共享概念早已有之。传统社会,朋友之间借书或共享一条信息、包括邻里之间互借东西,都是一种形式的共享。   共享经济这个术语最早由美国德克萨斯州立大学社会学教授马科斯·费尔逊(Marcus Felson)和伊利诺伊大学社会学教授琼·斯潘思(Joel.Spaeth)于1978年发表的论文(Community Structureand Collaborative Consumption:ARoutine Activity Approach)中提出。其主要特点是,包括一个由第三方创建的、以信息技术为基础的市场平台。这个第三方可以是商业机构、组织或者政府。个体借助这些平台,交换闲置物品,分享自己的知识、经验,或者向企业、某个创新项目筹集资金。经济牵扯到三大主体,即商品或服务的需求方、供给方和共享经济平台。共享经济平台作为连接供需双方的纽带,通过移动LBS应用、动态算法与定价、双方互评体系等一系列机制的建立,使得供给与需求方通过共享经济平台进行交易。[2]   但这种共享受制于空间、关系两大要素,一方面,信息或实物的共享要受制于空间的限制,只能仅限于个人所能触达的空间之内;另一方面

火币源源码

被刻印的时光 ゝ 提交于 2019-12-05 07:36:05
 火币源源码,火币源源码系统源码 APP 开发找梁经理 (153 微 2202 电 6891) 火币源源码软件 APP 开发,火币源源码 APP 开发,火币源源码 APP ,类似火币源源码 APP 开发。   共享概念早已有之。传统社会,朋友之间借书或共享一条信息、包括邻里之间互借东西,都是一种形式的共享。   共享经济这个术语最早由美国德克萨斯州立大学社会学教授马科斯·费尔逊(Marcus Felson)和伊利诺伊大学社会学教授琼·斯潘思(Joel.Spaeth)于1978年发表的论文(Community Structureand Collaborative Consumption:ARoutine Activity Approach)中提出。其主要特点是,包括一个由第三方创建的、以信息技术为基础的市场平台。这个第三方可以是商业机构、组织或者政府。个体借助这些平台,交换闲置物品,分享自己的知识、经验,或者向企业、某个创新项目筹集资金。经济牵扯到三大主体,即商品或服务的需求方、供给方和共享经济平台。共享经济平台作为连接供需双方的纽带,通过移动LBS应用、动态算法与定价、双方互评体系等一系列机制的建立,使得供给与需求方通过共享经济平台进行交易。[2]   但这种共享受制于空间、关系两大要素,一方面,信息或实物的共享要受制于空间的限制,只能仅限于个人所能触达的空间之内;另一方面