内存参数

面试之C++语言相关题目

≯℡__Kan透↙ 提交于 2019-12-01 10:43:32
【C语言】 main()函数是开始执行时所执行的程序的第一个函数,但不是第一个执行的函数。第一个执行的函数是_start(),它通常由C运行库提供,在编译程序时自动链入,此细节高度依赖于操作系统和编译器工具链。 【C++语言特性】 C和C++的区别,C++的好处 C 和C++的对比和好处,在平时应用上有什么感受 C语言的结构体和C++的结构体有什么异同点 C++的结构体其实就是类的一种,只不过类成员默认访问权限是private,结构体默认访问权限是public。 C语言的结构体是不能有函数的,而C++可以有。 C语言的结构体中数据成员没有private、public和protected访问限定,而C++的结构体有访问限制。 C语言的结构体没有继承关系,C++结构体有丰富的继承关系。 new可以搭配free吗,为什么 delete a和delete a[]区别 new是堆分配还是栈分配 new与malloc的区别 c++11 throwing(1) void* operator new (std::size_t size); nothrow(2) void* operator new (std::size_t size, const std::nothrow_t& nothrow_value) noexcept; placement(3) void* operator new

堆和堆参数调优

二次信任 提交于 2019-12-01 08:01:35
一、再议永久代和方法区   上一篇提到:在8版本以前,JVM采用堆空间的一部分实现方法区,这部分堆空间被称为“永久代”,由于类的结构信息和运行时常量池是放在方法区的,使用永久代实现方法区容易导致堆内存溢出。在8版本推出以后,Java采用了堆外内存即本机物理内存实现方法区,我们把这部分空间称为“元空间”。       二、堆内存   众所周知,当线程new了一个对象后,对象的引用变量存放在栈针中,而对象本身存储在堆内存中,如果大量的对象存储在堆内存而无法被GC回收,那么将导致OOM错误,那么堆空间多大呢?GC的工作流程是什么样呢?可以设置堆空间大小吗?可以选择GC工作方式吗?   1、堆内存结构以及GC过程:      新生代空间:老年代空间 = 1 : 3,而其中新生代中Eden : from :to区域=8:1:1   新生代是实例对象诞生的区域,也是绝大多数实例对象消亡的区域,新生代分为两个区域:Eden区和Survivor区,Survivor区又分为SurvivorFrom区和SurvivorTo区。所有的对象都是在Eden区被new出来的。当Eden区满时会触发第一次GC,把幸存下来的对象会被 “复制”到From区 。如果Eden区再此触发GC,此时GC会扫面Eden区和From区,对这两个区域进行垃圾回收,经过这次回收后还存活的对象会直接复制到To区,并为这些对象的“年龄

day22 学习小结

江枫思渺然 提交于 2019-12-01 07:28:05
目录 classmethod classmethod是什么? 用classmethod绑定方法的目的 类的绑定方法的特殊之处 (对象的绑定方法的特殊之处) 如何使用classmethod staticmethod staticmethod是什么? 为什么要使用staticmethod? 如何使用staticmethod isinstance issubclass 反射 什么是反射 反射的使用 魔法方法 单例模式 classmethod classmethod是什么? classmethod是一个装饰器,可以用来装饰类内部的方法,使该方法绑定给类来使用。 用classmethod绑定方法的目的 类的绑定方法的特殊之处 classmethod使被装饰的方法只能由类来调用,而且该方法会将类当做第一个参数传给该方法。这种方法被称为 类的绑定方法 。 (对象的绑定方法的特殊之处) 由对象来调用,会将对象当做第一个参数传给该方法。 如何使用classmethod 和正常装饰器一样,在需要被装饰的函数上方@classmethod就可以了。 staticmethod staticmethod是什么? staticmethod是一个装饰器,可以装饰给 类内部 的方法,使该方法既不绑定给对象,也不绑定给类。 为什么要使用staticmethod? 在类内部使用@staticmethod

[Linux] RHEL MySQL部署文档

天涯浪子 提交于 2019-12-01 04:02:26
MySQL部署文档: Mysql 数据库使用 基础 1. 安装参数说明: ./configure--prefix=/web/mysql 指定安装目录 --without-debug 去除 debug 模式 --with-extra-charsets=gb2312 添加 gb2312 中文字符支持 --with-charsets= 默认中文字符支持 --enable-assembler 使用一些字符函数的汇编版本 --without-isam 去掉 isam 表类型支持 现在很少用了 isam 表是一种依赖平台的表 --without-innodb 去掉 innodb 表支持 innodb 是一种支持事务处理的表 , 适合企业级应用 --with-pthread 强制使用 pthread 库 (posix 线程库 ) --enable-thread-safe-client 以线程方式编译客户端 --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static 以纯静态方式编译服务端和客户端 --with-tcp-port=3306 端口号 --with-mysqld-user=work 用户 --with-unix-socket-path 将 MYSQL_UNIX_PORT 环境变量设置为 Unix

MySQL 数据库性能优化之缓存参数优化

戏子无情 提交于 2019-12-01 03:59:18
MySQL 数据库性能优化之缓存参数优化 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO。本文先从 MySQL 数据库IO相关参数(缓存参数)的角度来看看可以通过哪些参数进行IO优化。 query_cache_size/query_cache_type (global) Query cache 作用于整个 MySQL Instance,主要用来缓存 MySQL 中的 ResultSet,也就是一条SQL语句执行的结果集,所以仅仅只能针对select语句。当我们打开了 Query Cache 功能,MySQL在接受到一条select语句的请求后,如果该语句满足Query Cache的要求(未显式说明不允许使用Query Cache,或者已经显式申明需要使用Query Cache),MySQL 会直接根据预先设定好的HASH算法将接受到的select语句以字符串方式进行hash,然后到Query Cache 中直接查找是否已经缓存。也就是说,如果已经在缓存中,该select请求就会直接将数据返回,从而省略了后面所有的步骤(如 SQL语句的解析

浅谈MySQL优化实施方案

妖精的绣舞 提交于 2019-12-01 02:40:00
在进行 MySQL 的优化之前必须要了解的就是 MySQL 的查询过程,很多的查询优化工作实际上就是遵循一些原则让 MySQL 的优化器能够按照预想的合理方式运行而已。 图 - MySQL查询过程 优化的哲学 优化有风险,涉足需谨慎。 优化可能带来的问题 优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统。 优化手段本来就有很大的风险,只不过你没能力意识到和预见到! 任何的技术可以解决一个问题,但必然存在带来一个问题的风险! 对于优化来说解决问题而带来的问题,控制在可接受的范围内才是有成果。 保持现状或出现更差的情况都是失败! 优化的需求 稳定性和业务可持续性,通常比性能更重要! 优化不可避免涉及到变更,变更就有风险! 优化使性能变好,维持和变差是等概率事件! 切记优化,应该是各部门协同,共同参与的工作,任何单一部门都不能对数据库进行优化! 所以优化工作,是由业务需要驱使的!!! 优化由谁参与   在进行数据库优化时,应由数据库管理员、业务部门代表、应用程序架构师、应用程序设计人员、应用程序开发人员、硬件及系统管理员、存储管理员等,业务相关人员共同参与。 优化思路 优化什么 在数据库优化上有两个主要方面:即安全与性能。 安全 ---> 数据可持续性 性能 ---> 数据的高性能访问 优化的范围有哪些 存储、主机和操作系统方面 主机架构稳定性 I/O 规划及配置

C++代码注入

我们两清 提交于 2019-12-01 02:38:05
一、C++代码注入原则: 在注入代码中不允许使用API。 在注入代码中不允许使用全局变量。 在注入代码中不允许使用字符串(编译时也被当做全局变量)。 在注入代码中不允许使用函数嵌套。 二、注入代码编写思路: 在本进程通过获取 LoadLibraryA 与 GetProcess 函数的地址。 涉及一组参数,里面包括 {函数地址、模块地址、函数名、传递参数}。 传入进去后,利用LoadLibraryA 与 GetProcess 函数,在注入代码中直接现场"加载模块-获取函数-调用",来达到调用API的目的。 三、编写过程的几个坑: 使用typedef定义函数指针,先在msdn搜索函数原型,复制过去,将名字定义成指针并大写。 申请内存时的权限,参数的内存使用 PAGE_READWRITE权限;代码的内存使用PAGE_EXECUTE_READWRITE权限,否则代码无法被执行。 一定要预先在msdn上搜索确定函数要加载的模块以及函数名,这一步很容易出错。如果出错只能调试被注入程序获取结果,比较麻烦。 四、olldbg调试思路: 在 "选项-调试设置-事件"中勾选“中断于新线程”。 注入后就可以在新线程上一步步进行调试。 五、源代码(练习了两套,一套是注入MessageBoxA,另一套是注入CreateFileA) 1 // 代码注入.cpp : 此文件包含 "main" 函数

SGI-STL简记(六)-序列容器(vector)

强颜欢笑 提交于 2019-12-01 02:03:37
stl_vector.h : vector:可随机访问元素的序列容器,从后插入或删除在常量时间内完成,从首部或中间则需线性时间内完成; _Vector_alloc_base:vector分配基类模板;模板参数分别为数据类型T,分配器类型_Allocator,以及一个bool标识_IsStatic(用于区分是否为标准分配器或SGI分配器); 数据成员: _M_data_allocator:分配器对象; _M_start:保存申请的缓冲区首地址(等同于容器元素的首地址); _M_finish:保存容器内容长度时的尾地址; _M_end_of_storage:保存申请的缓冲区尾地址; 成员函数: 构造函数:分配器引用allocator_type类型以初始化_M_data_allocator; get_allocator:获取分配器对象_M_data_allocator; _M_allocate:通过分配器对象_M_data_allocator分配大小为n个的元素类型大小内存空间; _M_deallocate:释放指定数据元素类型指针地址大小为n个数据元素类型大小的内存空间; 此外还提供特化版本_Vector_alloc_base<_Tp, _Allocator, true>,该分配模板基类内部不再使用分配器对象,而是直接使用simple_alloc的静态成员函数进行分配管理;

my.cnf参数说明

試著忘記壹切 提交于 2019-12-01 01:32:21
MySQL 5.7数据库参数优化 连接相关参数 max_connections: 允许客户端并发连接的最大数量,默认值是151,一般将该参数设置为500-2000 max_connect_errors: 如果客户端尝试连接的错误数量超过这个参数设置的值,则服务器不再接受新的客户端连接。可以通过清空主机的缓存来解除服务器的这种阻止新连接的状态,通过FLUSH HOSTS或mysqladmin flush-hosts命令来清空缓存。这个参数的默认值是100,一般将该参数设置为100000。 interactive_timeout: Mysql关闭交互连接前的等待时间,单位是秒,默认是8小时,建议不要将该参数设置超过24小时,即86400 wait_timeout: Mysql关闭非交互连接前的等待时间,单位是秒,默认是8小时,建议不要将该参数设置超过24小时,即86400 skip_name_resolve: 如果这个参数设为OFF,则MySQL服务在检查客户端连接的时候会解析主机名;如果这个参数设为ON,则MySQL服务只会使用IP,在这种情况下,授权表中的Host字段必须是IP地址或localhost。 这个参数默认是关闭的 back_log: MySQL服务器连接请求队列所能处理的最大连接请求数,如果队列放满了,后续的连接才会拒绝

MySql优化相关总结

£可爱£侵袭症+ 提交于 2019-12-01 00:02:07
MySQL架构 查询执行流程 查询执行的流程是怎样的: 连接 1.1客户端发起一条Query请求,监听客户端的‘连接管理模块’接收请求 1.2将请求转发到‘连接进/线程模块’ 1.3调用‘用户模块’来进行授权检查 1.4通过检查后,‘连接进/线程模块’从‘线程连接池’中取出空闲的被缓存的连接线程和客户端请求对接,如果失败则创建一个新的连接请求。 处理 2.1先查询缓存,检查Query语句是否完全匹配, 2.2查询缓存失败则转交给‘命令解析器’ 2.3再转交给对应的模块处理 2.4如果是SELECT查询还会经由‘查询优化器’做大量的优化,生成执行计划 2.5模块收到请求后,通过‘访问控制模块’检查所连接的用户是否有访问目标表和目标字段的权限 2.6有则调用‘表管理模块’,先是查看table cache中是否存在,有则直接对应的表和获取锁,否则重新打开表文件 2.8根据表的meta数据,获取表的存储引擎类型等信息,通过接口调用对应的存储引擎处理 2.9上述过程中产生数据变化的时候,若打开日志功能,则会记录到相应二进制日志文件中 结果 3.1Query请求完成后,将结果集返回给‘连接进/线程模块’ 3.2返回的也可以是相应的状态标识,如成功或失败等 3.3‘连接进/线程模块’进行后续的清理工作,并继续等待请求或断开与客户端的连接 什么是优化 合理安排资源、调整系统参数使MySQL运行更快