源码

spring源码解读二

瘦欲@ 提交于 2020-02-09 10:07:45
上一篇文章说到了生命周期的初始化refresh方法 在refresh里面有如下方法,这里只讲关键的几个方法比如说invokeBeanFactoryPostProcessors和finishBeanFactoryInitialization prepareRefresh(); // Tell the subclass to refresh the internal bean factory. ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); // Prepare the bean factory for use in this context. prepareBeanFactory(beanFactory); // Allows post-processing of the bean factory in context subclasses. postProcessBeanFactory(beanFactory); // Invoke factory processors registered as beans in the context. invokeBeanFactoryPostProcessors(beanFactory); // Register bean processors

django -admin 源码解析

旧时模样 提交于 2020-02-09 09:09:32
admin源码解析 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息。如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪费内存资源,尤其是在配置文件内容很多的情况下。事实上,类似 AppConfig 这样的类,我们希望在程序运行期间只存在一个实例对象。 在 Python 中,我们可以用多种方法来实现单例模式: 使用模块 使用 __new__ 使用装饰器(decorator) 使用元类(metaclass) (1)使用 __new__ 为了使类只能出现一个实例,我们可以使用 __new__ 来控制实例的创建过程,代码如下: class Singleton(object): _instance = None def __new__(cls, *args, **kw): if not cls._instance: cls._instance = super(Singleton, cls)._

CRM系统 - 总结 (二) stark组件

眉间皱痕 提交于 2020-02-09 04:41:05
介绍:   stark组件,是一个帮助开发者快速实现数据库表的增删改查+的组件。 目标:   10s 中完成一张表的增删改查。 前戏: django项目启动时,自定义执行某个py文件。 django启动时,且在读取项目中 路由加载 之前执行某个py文件。 在任意app的apps.py中的Config类中定义ready方法,并调用autodiscover_modules from django.apps import AppConfig from django.utils.module_loading import autodiscover_modules class App01Config(AppConfig): name = 'app01' def ready(self): autodiscover_modules('xxxx') django在启动时,就会去已注册的所有app的目录下找 xxxx.py 并自动导入。 如果执行两次,是因为django内部自动重启导致: python manage.py runserver 120.0.0.1:8001 --noreload 提示: 如果xxxx.py执行的代码向 “某个神奇的地方” 放入了一些值。之后的路由加载时,可以去“某个神奇的地方”读取到原来设置的值。 View Code 单例模式 单,一个。 例,实例、对象。

linux内核源码级调试

天涯浪子 提交于 2020-02-09 04:20:18
一 linux内核源码阅读工具 windows下当然首选source insight, 但是linux下就没有source insight这么优秀的工具了,但是也有不少的替代品,但觉绝对部分人会选择vim+ctags+cscope的组合,还有部分人或选择wine中的source insight或选择navigatror,当然对于代码阅读来说vim+ctags+cscope的组合还是比较好的一个选择方案,但是,当我使用了eclipse之后,个人感觉用eclipse作为linux环境下源码阅读工具确实比vim+ctags+cscope的组合方便很多。 下面是linux环境下eclipse的配置安装方案: eclipse下载地址: http://eclipse.org/downloads/?osType=linux eclipse环境配置方案: http://forum.ubuntu.org.cn/viewtopic.php?t=183803 二 eclipse + qemu 进行linux源码的编译和调试 最初调试内核采用了qemu + insight 或qemu + ddd的组合,相比来说insgiht的界面更加有好些,但是ubuntu 10.04以上的版本,删除了对Insight的默认支持,只能下载insight的源码编译安装,而且insight更新非常慢。

xen-4.1.2+Linux-3.1.2源码编译安装

社会主义新天地 提交于 2020-02-09 03:10:50
xen-4.1.2+Linux-3.1.2源码编译安装 以下所有命令均在CentOS6.2系统上操作。 下载xen源码 wget http://bits.xensource.com/oss-xen/release/4.1.2/xen-4.1.2.tar.gz 安装必备软件包 yum groupinstall "Development Libraries" yum groupinstall "Development Tools" yum install transfig wget texi2html libaio-devel dev86 glibc-devel e2fsprogs-devel gitk mkinitrd iasl xz-devel bzip2-devel pciutils-libs pciutils-devel SDL-devel libX11-devel gtk2-devel bridge-utils PyXML qemu-common qemu-img mercurial libidn-devel yum -y install glibc-devel.i686texinfo libuuid-devel iasl python-lxml yum -y install openssl openssl-devel yum -y install ncurses

Activiti流程定义缓存源码分析9-流程缓存使用演示

眉间皱痕 提交于 2020-02-08 19:12:44
缓存数据添加 可能读者学习到这里,一定非常好奇缓存数据的结构到底是什么?接下来,我们一睹为快吧,我们还是以开篇的流程为例,部署一个流程文档并启动新的流程实例,进而查看ACT_RU_TASK数据表的变化。根据上面缓存数据的解析步骤,我们可以推测出缓存的JSON数据应该是一个map集合,如图x-所示。 图x- 节点缓存数据的JSON格式 首先根节点必须有一个名称为"bpmn"(通过上面的解析处理流程,我们知道这个名称目前看来是固定不变的)的Map对象,该Map中定义了需要缓存的所有节点数据,节点以及节点对应的数据格式同样为Map结构,key为流程文档中的任务节点id,value为需要缓存的属性值,比如上面分别定义了 "usertask1"和 "usertask2"两个任务节点的名称以及处理人,如果流程文档中有更多的任务节点,则按照图x-中的JSON数据格式进行数据组装即可,如果流程实例运行一段时间需要修改以上信息,直接操作Redis进行修改即可。关于任务节点的哪些属性可以进行缓存,读者可以参考代码清单x-中的处理流程。脚本任务可以查看脚本任务的活动行为执行类ScriptTaskActivityBehavior中的execute函数。授之以鱼不如授之以渔,笔者在这里交给大家一个技巧,可以迅速地查看哪些节点支持缓存,以及需要缓存那些属性值

keepalived源码解析 —— vrrp_state_leave_master()

☆樱花仙子☆ 提交于 2020-02-08 19:07:27
/* master 切换到 back */ void vrrp_state_leave_master ( vrrp_t * vrrp , bool advF ) { # ifdef _WITH_LVS_ if ( VRRP_VIP_ISSET ( vrrp ) ) { /* Check if sync daemon handling is needed */ if ( global_data -> lvs_syncd . vrrp == vrrp ) ipvs_syncd_backup ( & global_data -> lvs_syncd ) ; } # endif /* set the new vrrp state */ if ( vrrp -> wantstate == VRRP_STATE_BACK ) { log_message ( LOG_INFO , "(%s) Entering BACKUP STATE" , vrrp -> iname ) ; vrrp -> preempt_time . tv_sec = 0 ; // TODO - if we are called due to receiving a higher priority advert, do we overwrite master adver int ? vrrp -> master_adver

web常见源码泄露

孤者浪人 提交于 2020-02-08 18:24:20
前言:git,svn,hg等是代码控制系统,即开发人员在开发时使用可以提高开发效率的一种类似集成环境的系统。 转载大佬博文: 一、漏洞成因 在 WEB 安全体系当中,可能你对 SQL 注入,XSS 跨站一些漏洞已经耳熟于心了,而源码泄露问题对于大部分开发者来说就相对陌生了 , 而源码泄露导致的问题却并不少见,在过往的泄露案例当中,不仅是小网站有此问题,在一些大的厂商同样出现不少,并因此拿到 webshell。 比如在一些小型企业,可能公司并没有专门的服务器,而是把网站部署在某一个虚拟主机上面,代码文件比较多的时候 FTP 上传是比较慢的,于是开发者把代码先打包压缩后再上传,上传成功后再去服务器解压,这有虽然解决了上传速度慢的问题,不过却留下了一些安全隐患。 压缩包解压后如果没有删除,当攻击者发现后就可以把代码压缩包下载;因为部署到服务器上的都是源代码,这个时候攻击者就可以通过代码进一步挖掘一些安全漏洞:文件上传,SQL 注射等。 二、GIT 源码泄露 1. 漏洞成因 当在一个空目录执行 git init 时,Git 会创建一个 .git 目录。 这个目录包含所有的 Git 存储和操作的对象。 如果想备份或复制一个版本库,只需把这个目录拷贝至另一处就可以了。 该目录的结构如下所示: HEAD config* description hooks/ info/ objects/ refs

Vue关闭线上源码移除console

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-08 18:11:43
文章目录 1、引言 2、关闭线上源码 3、移除console 1、引言 版本大于等于3.0不会有问题,本文基于Vue CLI 3.0搭建。 2、关闭线上源码 在Vue.config.js中添加如下代码 module . exports = { // 关闭线上源码 productionSourceMap : false , } 3、移除console 安装插件:终端执行 yarn add terser - webpack - plugin 在vue.config.js中添加如下代码 module . exports = { configureWebpack : { optimization : { minimizer : [ new TerserPlugin ( { terserOptions : { compress : { drop_console : true } } } ) ] } } } 插件的更多使用方法请参考: terser-webpack-plugin 学如逆水行舟,不进则退 来源: CSDN 作者: 一百个Chocolate 链接: https://blog.csdn.net/weixin_42429718/article/details/104221652