内存参数

学习Apache(五)

妖精的绣舞 提交于 2020-03-29 13:06:26
apache目前主要有两种模式:prefork模式和worker模式: 1)prefork模式(默认模式) prefork是Unix平台上的默认(缺省)MPM,使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接,效率高,但内存占用量比较大。 这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。 2)worker模式 worker使用多个子进程,每个子进程有多个线程,每个线程在某个确定的时间只能维持一个连接,内存占用量比较小,适合高流量的http服务器。缺点是假如一个线程崩溃,整个进程就会连同其任何线程一起”死掉”,所以要保证一个程式在运行时必须被系统识别为”每个线程都是安全的”。此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。 apache模式的查看和安装 1.常看当前模式 如果apache已经安装,我们可以用"httpd -l"命令查看当前模式。若找到prefork

判断栈和堆的生长方向

旧时模样 提交于 2020-03-27 21:22:15
如何判断栈的增长方向? 对于一个用惯了i386系列机器的人来说,这似乎是一个无聊的问题,因为栈就是从高地址向低地址增长。不过,显然这不是这个问题的目的,既然把这个问题拿出来,问的就不只是i386系列的机器,跨硬件平台是这个问题的首先要考虑到的因素。 在一个物质极大丰富的年代,除非无路可退,否则我们坚决不会使用汇编去解决问题,而对于这种有系统编程味道的问题,C是一个不错的选择。那接下来的问题就是如何用C去解决这个问题。 C在哪里会用到栈呢?稍微了解一点C的人都会立刻给出答案,没错,函数。我们知道,局部变量都存在于栈之中。似乎这个问题立刻就得到了解答,用一个函数声明两个局部变量,然后比较两个变量的地址,这样就可以得到答案。 等一下,怎么比较两个变量的地址呢? 先声明的先入栈, 所以,它的第一个变量的地址如果是高的,那就是从上向下增长。“先声明的先入栈”?这个结论从何而来?一般编译器都会这么处理。要是不 一般呢?这种看似正确的方法实际上是依赖于编译器的,所以,可移植性受到了挑战。 那就函数加个参数,比较参数和局部变量的位置,参数肯定先入栈。那为什么不能局部变量先入栈?第一反应是怎么可能,但仔细想来又没有什么不可以。所以,这种方法也依赖于编译器的实现。 那到底什么才不依赖于编译器呢? 不妨回想一下,函数如何调用。执行一个函数时,这个函数的相关信息都会出现栈之中,比如参数、返回地址和局部变量

面向对象

你。 提交于 2020-03-27 08:43:44
一、基本概念 1. 面向过程 (1) 概念:以过程为中心的编程思想,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 (2) 优点:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。因为程序的流程很清楚,按着模块与函数的方法可以很好的组织。 (3) 缺点:只能用来解决一个问题,代码牵一发而动全身。 (4) 应用:用于基本很少改变的场景,著名的例子有Linux内核、git、以及Apache HTTP Server等。 2. 面向对象 (1) 概念:程序设计的核心是对象,面向对象的方法主要是把事物给对象化,对象包括属性与方法。 (2) 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。 (3) 缺点:可控性差,无法像面向过程的程序设计一样可以精准的预测问题的处理流程与结果。 (4) 应用:需求经常变化的软件,一般需求的变化都集中在用户层,如互联网应用、企业内部软件以及游戏等。 二、面向对象中的名词解析 1. 类:类就是一个模板,模板里可以包含多个函数,每个函数都能实现一些功能。 2. 对象:根据模板(类)创建的实例,通过这个实例(对象)可以执行类中的函数。 3. 属性:类中所定义的变量 4. 方法:类中所定义的函数 5. 实例化

Redis3.0 配置文件说明

*爱你&永不变心* 提交于 2020-03-25 08:42:48
3 月,跳不动了?>>> 背景: 以前 有篇文章 已经结果过了,现在复习一下,对Redis3.0进行说明: 参数说明: #redis.conf # Redis configuration file example. # ./redis-server /path/to/redis.conf ################################## INCLUDES ################################### #这在你有标准配置模板但是每个redis服务器又需要个性设置的时候很有用。 # include /path/to/local.conf # include /path/to/other.conf ################################ GENERAL ##################################### #是否在后台执行,yes:后台运行;no:不是后台运行(老版本默认) daemonize yes #3.2里的参数,是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码 和bind,可以开启。否 则最好关闭,设置为no。 protected-mode yes #redis的进程文件 pidfile /var/run

用好Lua+Unity,让万金6.0平台搭建性能飞起来——Lua与C#交互篇

谁说我不能喝 提交于 2020-03-24 12:22:13
前言万金6.0平台搭建论坛:haozbbs.com Q1446595067 在看了uwa之前发布的《Unity项目常见Lua解决方案性能比较》,决定动手写一篇关于lua+unity方案的性能优化文。 整合lua是目前最强大的unity热更新方案,毕竟这是唯一可以支持ios热更新的办法。然而作为一个重度ulua用户,我们踩过了很多的坑才将ulua上升到一个可以在项目中大规模使用的状态。事实上即使到现在lua+unity的方案仍不能轻易的说可以肆意使用,要用好,你需要知道很多。 因此,这篇文章是从一堆简单的优化建议里头,逐步挖掘出背后的原因。只有理解了原因,才能很清楚自己做的优化,到底是为了什么,有多大的效果。 从最早的lua纯反射调用c#,以及云风团队尝试的纯c#实现的lua虚拟机,一直发展到现在的各种luajit+c#静态lua导出方案,lua+unity才算达到了性能上实用的级别。 但即使这样,实际使用中我们会发现,比起cocos2dx时代luajit的发扬光大,现在lua+unity的性能依然存在着相当的瓶颈。仅从《性能比较》的test1就可以看到,iphone4s下二十万次position赋值就已经需要3000ms,如果是coc这样类型的游戏,不处理其他逻辑,一帧仅仅上千次位置赋值(比如数百的单位、特效和血条)就需要15ms,这显然有些偏高。 是什么导致lua

2018.6.13 Java语言基础复习总结

点点圈 提交于 2020-03-21 20:03:17
Java语言基础与面向对象编程实践 第一章 初识Java 1.1机器语言 机器语言是指一台计算机全部的指令集合。机器语言室友0和1组成的二进制数,是一串串由0和1组成的指令序列,可将这些指令序列交给计算机执行。 1.2汇编语言 负责把汇编语言翻译成二进制的机器语言,这种翻译程序就是汇编程序。 1.3高级语言 1954年第一个完全脱离机器硬件的高级语言FORTRAN诞生 1.3.1C语言 是一种计算机程序设计语言,它既有高级语言的特点,又具有汇编语言的特点。 1.3.2 C++语言 是具有面向对象特性的C语言,面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。通过面向对象的方式,将现实世界的事物抽象成类和对象,帮助我们实现对现实世界的抽象与建模。 1.3.3 C#语言 是一种面向对象的运行于.NET Framework之上的高级程序设计语言。C#与Java很相似(单一继承、接口、编译成中间代码在运行) 1.4 SQL语言 结构化查询语言(Structured Query Language,SQL)是一种数据库查询和编程的语言。用于存取数据库以及查询、更新和管理关系数据库系统 1.5 Java的诞生 ·1995年Sun推出的Java只是一种语言 ·JDK包括两个部分:运行环境(JRE)和开发环境(JDK)在运行环境包括了核心API、集成API、用户界面

JVM 基础(1) -- Java 的内存结构

只谈情不闲聊 提交于 2020-03-16 19:54:31
以黄小斜博文为主的学习总结 文章目录 1. 了解 JVM 内存有什么好处 2. JVM 主要组成部分 3. 运行时数据区的五大组成部分 1. 程序计数器 2. Java 虚拟机栈 3. 本地方法栈 4. Java 堆 5. 方法区 4. 控制各区域大小的参数 1. 了解 JVM 内存有什么好处 所有的 Java 开发人员可能会遇到这样的困惑:我该为堆内存设置多大空间呢?OutOfMemoryError 的异常到底涉及到运行时数据区的哪块区域?该怎么解决呢? 其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解 JVM 内存可以帮助我们在服务器出现性能问题的时候,快速的了解哪块内存区域出现了问题,以便快速的解决生产故障。 2. JVM 主要组成部分 JVM 主要由 类加载器 、运行时数据区 、执行引擎和本地库接口四部分组成。 JVM 工作的流程大致就是:首先由类加载器将我们的 .class 文件加载进运行时数据区,然后 JVM 会在堆中创建一个对应类的 Class 对象,但由于我们的字节码只是 JVM 的一套指令集规范,并不能直接交给底层的操作系统去执行,所以这里就需要用到特定的字节码解析器执行引擎将我们的字节码解析成底层操作系统可以执行的机器指令,然后交由 CPU 去执行,在执行的过程中可能还需要用到其他语言的本地库接口进而完成整个程序的功能。 3.

函数进阶:闭包、装饰器、列表生成式、生成器、迭代器

吃可爱长大的小学妹 提交于 2020-03-16 19:42:41
名称空间 命名空间(又称“名称空间”): 存放名字的地方 (概念性的东西)。例如:变量x = 1, 1存放在内存中,命名空间就是存放名字x与1绑定关系的地方。 名称空间有3种: locals:是函数内的(或者是locals所在的那一层的)名称空间|,包括局部变量和形参 globals:全局变量 builtins: 内置模块的名字空间 不同变量的作用域不同就是由这个变量所在的命名空间决定的 作用域即范围: 1. 全局范围: 全局存活,全局有效 2. 局部范围: 临时存活, 局部有效 查看作用域方法: globals() locals() 作用域的查找顺序: LEGB L: locals E: enclosing (相邻的) G:globals B: builtins 闭包: def func(): n = 10 def func2(): print('func2:', n) return func2 # 没有执行func2, 只是把func2的函数名(func2的内存地址) f = func() #执行func函数, 此时func()得到的结果是func2的内存地址,即f就是func2的内存地址 f() # 执行f, 由于f就是func2的内存地址,此时执行的就是func2函数 # 输出结果: # func2: 10 # 在函数(func)外部执行了函数内部的子函数(func2)

Spark配置参数

ぐ巨炮叔叔 提交于 2020-03-14 21:37:56
以下是整理的Spark中的一些配置参数,官方文档请参考 Spark Configuration 。 Spark提供三个位置用来配置系统: Spark属性:控制大部分的应用程序参数,可以用SparkConf对象或者Java系统属性设置 环境变量:可以通过每个节点的 conf/spark-env.sh 脚本设置。例如IP地址、端口等信息 日志配置:可以通过log4j.properties配置 Spark属性 Spark属性控制大部分的应用程序设置,并且为每个应用程序分别配置它。这些属性可以直接在 SparkConf 上配置,然后传递给 SparkContext 。 SparkConf 允许你配置一些通用的属性(如master URL、应用程序名称等等)以及通过 set() 方法设置的任意键值对。例如,我们可以用如下方式创建一个拥有两个线程的应用程序。 val conf = new SparkConf() .setMaster("local[2]") .setAppName("CountingSheep") .set("spark.executor.memory", "1g") val sc = new SparkContext(conf) 动态加载Spark属性 在一些情况下,你可能想在 SparkConf 中避免硬编码确定的配置。例如

记录一下jvm的相关知识点

有些话、适合烂在心里 提交于 2020-03-11 13:22:06
java 运行时数据区域: 程序计数器 => (每个线程都包含一个程序计数器)用来记录字节码执行的行号,字节码指令的循环,跳转,异常处理,线程恢复等需要依靠计数器。 Java虚拟机栈 => 主要用来描述Java方法执行的内存模型,(每个线程都包含一个虚拟机栈)主要用来处理方法的调用,虚拟机栈中的存储单元是栈帧,方法在执行的同时都会在虚拟机栈中创建一个栈帧,栈帧包含操作数栈,局部变量表,动态链接和方法出口等,每个方法从调用到执行完毕都对应着一个栈帧在虚拟机栈中的入栈和出栈的过程。局部变量表的存储单位为slot(4个字节),因此double 和long类型需要占用2个slot的存储空间。 栈的深度有一定限制,当深度操作最大的调用栈大小会出现StackOverflowError异常。 本地方法栈 => 为虚拟机执行java方法的服务(native方法),类似虚拟机栈 java堆 => 对象和数组存储的场所,也是gc收集器的主要管理区域,现在收集器基本采用分代收集算法,可通过-Xmx -Xms来分配堆内存大小,当堆内存无法分配内存时,会出现OutOfMemoryError异常。 方法区 => 用于存储已被虚拟机加载的类信息,静态变量,常量以及即时编译器编译后的代码等,方法区无法分配内存是会出现OutOfMemoryError异常。 运行时常量池 =>方法区的一部分