内存参数

javaSE基础-1

狂风中的少年 提交于 2019-11-27 02:42:07
请你说说Java和PHP的区别? PHP暂时还不支持像Java那样JIT运行时编译热点代码,而java支持,PHP的库函数用C实现,而Java核心运行时类库(jdk/jre/lib/rt.jar,大于60MB)用Java编写(jdk/src.zip), 所以Java应用运行的时候,用户编写的代码以及引用的类库和框架都要在JVM上解释执行. Java的HotSpot机制,直到有方法被执行10000次才会触发JIT编译, 在此之前运行在解释模式下,以避免出现JIT编译花费的时间比方法解释执行消耗的时间还要多的情况.; PHP内置模板引擎,自身就是模板语言.而Java Web需要使用JSP容器如Tomcat或第三方模板引擎.; PHP也可以运行在多线程模式下,比如Apache的event MPM和Facebook的HHVM都是多线程架构.不管是多进程还是多线程的PHP Web运行模式,都不需要PHP开发者关心和控制,而Java多线程编程需要Java开发者编码参与,PHP一个worker进程崩溃,master进程会自动新建一个新的worker进程,并不会导致PHP服务崩溃.而Java多线程编程稍有不慎(比如没有捕获异常)就会导致JVM崩溃退出; == 请你谈谈Java中是如何支持正则表达式操作的?== Java中的String类提供了支持正则表达式操作的方法,包括:matches()

【转】C++ 异常

只谈情不闲聊 提交于 2019-11-27 01:24:07
一、什么是异常处理 一句话:异常处理就是处理程序中的错误。 二、为什么需要异常处理,以及异常处理的基本思想 C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一方面,库的用户知道怎样处理这些错误,但却无法检查它们何时发生(如果能检测,就可以再用户的代码里处理了,不用留给库去发现)。 Bjarne Stroustrup说:提供 异常 的 基本目的 就是为了处理上面的问题。 基本思想 是:让一个函数在发现了自己无法处理的错误时抛出(throw)一个异常,然后它的(直接或者间接)调用者能够处理这个问题。 The fundamental idea is that a function that finds a problem it cannot cope with throws an exception, hoping that its (direct or indirect) caller can handle the problem. 也就是《C++ primer》中说的:将 问题检测 和 问题处理 相分离 。 Exceptions let us separate problem detection from problem

System V IPC 之共享内存

怎甘沉沦 提交于 2019-11-27 00:43:20
IPC 是 进程间通信(Interprocess Communication) 的缩写,通常指允许用户态进程执行系列操作的一组机制: 通过信号量与其他进程进行同步 向其他进程发送消息或者从其他进程接收消息 和其他进程共享一段内存区 System V IPC 最初是在一个名为 "Columbus Unix" 的开发版 Unix 变种中引入的,之后在 AT&T 的 System III 中采用。现在在大部分 Unix 系统 (包括 Linux) 中都可以找到。 IPC 资源包含 信号量 、 消息队列 和 共享内存 三种。IPC 的数据结构是在进程请求 IPC 资源时动态创建的。每个 IPC 资源都是持久的:除非被进程显式地释放,否则永远驻留在内存中(直到系统关闭)。IPC 资源可以由任一进程使用,包括那些不共享祖先进程所创建的资源的进程。 由于一个进程可能需要同类型的多个 IPC 资源,因此每个新资源都是使用一个 32 位的 IPC 关键字来标识的,这和系统的目录树中的文件路径名类似。每个 IPC 资源都有一个 32 位的 IPC 标识符,这与和打开文件相关的文件描述符有些类似。IPC 标识符由内核分配给 IPC 资源,在系统内部是唯一的,而 IPC 关键字可以由程序员自由地选择。 当两个或者更多的进程要通过一个 IPC 资源进行通信时,这些进程都要引用该资源的 IPC 标识符。

MySQL 优化实施方案

旧时模样 提交于 2019-11-26 22:30:32
1.1 前言   在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。更多关于MySQL查询相关参照: http://www.cnblogs.com/clsn/p/8038964.html#_label6 系列文章。 图 - MySQL查询过程 1.2 优化的哲学 优化有风险,涉足需谨慎 1.2.1 优化可能带来的问题 优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统。 优化手段本来就有很大的风险,只不过你没能力意识到和预见到! 任何的技术可以解决一个问题,但必然存在带来一个问题的风险! 对于优化来说解决问题而带来的问题,控制在可接受的范围内才是有成果。 保持现状或出现更差的情况都是失败! 1.2.2 优化的需求 稳定性和业务可持续性,通常比性能更重要! 优化不可避免涉及到变更,变更就有风险! 优化使性能变好,维持和变差是等概率事件! 切记优化,应该是各部门协同,共同参与的工作,任何单一部门都不能对数据库进行优化! 所以优化工作,是由业务需要驱使的!!! 1.2.3 优化由谁参与   在进行数据库优化时,应由数据库管理员、业务部门代表、应用程序架构师、应用程序设计人员、应用程序开发人员、硬件及系统管理员、存储管理员等,业务相关人员共同参与。 1.3 优化思路 1

Java之JVM监控工具分享

我怕爱的太早我们不能终老 提交于 2019-11-26 22:17:57
Java之JVM监控工具分享 JVM的基本知识常用的也就是 类加载机制 , 内存区域、分配、OOM , GC , JVM参数调优 几个链接自己看: 内存区域&类加载机制 分配策略&垃圾回收算法、收集器 今天结合代码讲一讲常用的java自带工具讲解,这些命令一般都是jdk/lib/tools.jar中。用来监控诊断我们的Java环境。 官方说明: https://docs.oracle.com/en/java/javase/11/tools/ 1. jps 显示当前用户的所有java进程的PID 以及主类名 jps : 显示当前用户的所有java进程的PID 以及主类名 jps -v : 打印传递给 Java 虚拟机的参数(如-XX:+UnlockExperimentalVMOptions -XX:+UseZGC) jps -m : 打印传递给主类的参数 jps -l : 打印模块名以及包名 默认开启(UsePerfData),若加上-XX:-UsePerfData 则无法找到进程。 2. jstack 功能 jstack不仅会打印 线程 的栈轨迹、线程状态(BLOCKED)、持有的锁(locked…)以及正在请求的锁(waiting to lock …),而且还会分析出具体的 死锁 。 jstack pid : 查看线程情况 jstack -F pid : 正常输出不被响应时

如何解决ORA-04031错误

不羁岁月 提交于 2019-11-26 20:34:54
诊断并解决ORA-04031错误 当我们在共享池中试图分配大片的连续内存失败的时候,Oracle首先清除池中当前没使用的所有对象,使空闲内存块合并。如果仍然没有足够大单个的大块内存满足请求,就会产生ORA-04031错误。 当这个错误出现的时候你得到的错误解释信息类似如下: 1 [ oracle@yft ~ ] $ oerr ora 04031 2 04031 , 00000 , "unable to allocate % s bytes of shared memory (\" % s\",\" % s\",\" % s\",\" % s\")" 3 // * Cause: More shared memory is needed than was allocated in the shared 4 // pool. 5 // * Action: If the shared pool is out of memory, either use the 6 // DBMS_SHARED_POOL package to pin large packages, 7 // reduce your use of shared memory, or increase the amount of 8 // available shared memory by increasing the

eclipse编译慢 提高eclipse的性能

瘦欲@ 提交于 2019-11-26 20:21:35
编译慢原因有多种,其中可以通过修改eclipse.ini文件设置缓存大小,并将工作空间的validation的多项验证去除(因为这些验证也为在编译时被执行,只保留几个必须的,我就只设置了xml验证),关闭checking for update自动更新 一、去除validate验证 1.给eclipse桌面快捷方式添加参数,这些按自己的机器来配置, 可google到很多资料,如:D:\java\eclipse3.2.1\eclipse.exe -XX:+UseParallelGC -XX:PermSize=20M -XX:MaxNewSize=32M -XX:NewSize=32M -Xmx128m -Xms128m 2.进入Preferences把Plug-in Development>Target Platform>plug-in里 跟自己无关或者暂且不用的plug-in去掉勾选,我这里共400多个中去掉了100多个。 3.MyEclipse5.0.1GA_E3.2 之前的:进入Preferences把跟编辑有关的所有的Edit Modes 设为Disable Design Mode 4.打开Customize Perspective里自己没用到的选项自己去掉勾选。 5.取消自动validation validation有一堆,什么xml、jsp、jsf、js等等

系统负载能力浅析

六月ゝ 毕业季﹏ 提交于 2019-11-26 20:05:36
系统负载能力浅析 —本文于2015.12.23号最新更新— 互联网时代,高并发是一个老生常谈的话提。无论对于一个web站点还是app应用,高峰时能承载的并发请求都是衡量一个系统性能的关键标志。像阿里双十一顶住了上亿的峰值请求、订单也确实体现了阿里的技术水平(当然有钱也是一个原因)。 那么,何为系统负载能力?怎么衡量?相关因素有哪些?又如何优化呢? 一. 衡量指标 用什么来衡量一个系统的负载能力呢?有一个概念叫做每秒请求数(Requests per second),指的是每秒能够成功处理请求的数目。比如说,你可以配置tomcat服务器的maxConnection为无限大,但是受限于服务器系统或者硬件限制,很多请求是不会在一定的时间内得到响应的,这并不作为一个成功的请求,其中成功得到响应的请求数即为每秒请求数,反应出系统的负载能力。 通常的,对于一个系统,增加并发用户数量时每秒请求数量也会增加。然而,我们最终会达到这样一个点,此时并发用户数量开始“压倒”服务器。如果继续增加并发用户数量,每秒请求数量开始下降,而反应时间则会增加。这个并发用户数量开始“压倒”服务器的临界点非常重要,此时的并发用户数量可以认为是当前系统的最大负载能力。 二. 相关因素 一般的,和系统并发访问量相关的几个因素如下: 带宽 硬件配置 系统配置 应用服务器配置 程序逻辑 系统架构 其中

连连看辅助

爷,独闯天下 提交于 2019-11-26 19:49:45
转载自大神CSDN博主「九阳道人」 版权声明:本文为CSDN博主「九阳道人」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。 原文链接: https://blog.csdn.net/qq_31507523/article/details/88309060 QQ连连看单机版辅助制作全流程 最近在15PB学习逆向,分析了个小游戏并写出了辅助工具,在这里总结下全流程。 游戏:QQ连连看(单机版1.2) 完成目标: 1.去除广告 2.完成指南针、炸弹消除的功能 3.编写注入程序和游戏辅助的DLL 使用工具:VS2017、OD、CE、PEID、Spy++ 分析环境:Win7虚拟机 首先在百度上搜索“QQ连连看单机版”随便下了个V1.2版的,把它解压到桌面然后进入文件夹。 仔细观察下都有些什么文件,这很重要,有可能得到一些有利于破解的信息。 1. 在这里观察到有两个可执行的EXE文件、两个音乐文件夹,这都是比较重要的信息。 2. 用PEID擦看下这两个EXE程序基本信息,得以得出"kyodai.exe"程序是VC6.0的编译器编写的,游戏一般都是C++语言编写,而"QQ连连看单机版V1.2.exe"是一个加壳的程序,常见压缩壳ASpack这就忽略它,也能分析。 3. 双击"kyodai.exe"程序后回崩溃如图。 4. 那么就确定了开始游戏的程序

堆栈,堆栈,堆和栈的区别【转载】

谁说我不能喝 提交于 2019-11-26 18:35:42
原文: http://www.cppblog.com/oosky/archive/2006/01/21/2958.html 非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥! 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、文字常量区—常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区—存放函数体的二进制代码。 二、例子程序 这是一个前辈写的,非常详细 //main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main() { int b; 栈 char s[] = "abc"; 栈 char *p2; 栈 char *p3 = "123456"; 123456\0在常量区,p3在栈上。