浅谈Java中字符串的初始化及字符串操作类 在深入学习字符串类之前, 我们先搞懂JVM是怎样处理新生字符串的. 当你知道字符串的初始化细节后, 再去写 Strings="hello"或 Strings=newString("hello")等代码时, 就能做到心中有数。首先得搞懂字符串常量池的概念。常量池是Java的一项技术, 八种基础数据类型除了float和double都实现了常量池技术. 这项技术从字面上是很好理解的: 把经常用到的数据存放在某块内存中, 避免频繁的数据创建与销毁, 实现数据共享, 提高系统性能。字符串常量池是Java常
什么是微服务架构? 作者:老刘链接:https://www.zhihu.com/question/65502802/answer/802678798来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。一文详解微服务架构本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节。要理解微服务,首先要先理解不是微服务的那些。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独.
JVM监控和调优常用命令工具总结 阅读目录JVM监控和调优 jps jinfo jstat jstack jmap jhat jconsole, jvisualvm回到顶部JVM监控和调优在Java应用和服务出现莫名的卡顿、CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非常方便了。本文总结了最常用的命令行工具及其常用参数解释,图形化监控工具的用法,仅供参考。回到顶部jpsJava版的ps命令,查看java
深入理解JVM-内存模型(jmm)和GC 1 CPU和内存的交互了解jvm内存模型前,了解下cpu和计算机内存的交互情况。【因为Java虚拟机内存模型定义的访问操作与计算机十分相似】有篇很棒的文章,从cpu讲到内存模型:什么是java内存模型在计算机中,cpu和内存的交互最为频繁,相比内存,磁盘读写太慢,内存相当于高速的缓冲区。但是随着cpu的发展,内存的读写速度也远远赶不上cpu。因此cpu厂商在每颗cpu上加上高速缓存,用于缓解这种情况。现在cpu和内存的交互大致如下。cpu、缓存、内存cpu上加入了高速缓存这样做解
Lisp的本质 Lisp的本质(The Nature of Lisp) 作者 Slava Akhmechet 译者 Alec Jang 出处: http://www.defmacro.org/ramblings/lisp.html简介最初在web的某些角落偶然看到有人赞美Lisp时, 我那时已经是一个颇有经验的程序员。在我的履历上, 掌握的语言范围相当广泛, 象C++,...
什么是元编程 作者:哈哈镜像链接:https://www.zhihu.com/question/23856985/answer/962102702来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。元编程就是多了个元,就是元数据,即除了代码之外的数据,这些数据会影响到程序的行为,java的反射,osgi,spring等技术无一不是这种编程技术的践行者,而抛弃语言本身可以按照以下的例子来理解元编程.如果理解这个过程那么我相信你应该对元编程就有了比较深入的理解.在这之前我们大概讲编.
Eclipse插件引入jar包的方法 搞了两天,终于找到解决办法了。原来 Eclipse 插件项目引入外面的jar包不能用 build path---->add external jars的方法。先说明两个概念:类加载器,OSGI类加载器(class loader),顾名思义就是JVM用于加载类的一个工具。当然,它本身也是一个java类,见java.lang.ClassLoader。它维护内部的类名空间,相互关系(域),并为它们隔绝外部侵害。OSGI,Open Service Gateway Initiative...
C语言函数调用栈 程序的执行过程可看作连续的函数调用。当一个函数执行完毕时,程序要回到调用指令的下一条指令(紧接call指令)处继续执行。函数调用过程通常使用堆栈实现,每个用户态进程对应一个调用栈结构(call stack)。编译器使用堆栈传递函数参数、保存返回地址、临时保存寄存器原有值(即函数调用的上下文)以备恢复以及存储本地局部变量。 不同处理器和编译器的堆栈布局、函数调用方法都可能不同,但堆栈的基本概念是一样的。1 寄存器分配 寄存器是处理器加工数据或运行程序的重要载体,用于存...
二值信号量和互斥锁到底有什么区别? 原文链接:https://www.cnblogs.com/codescrew/p/8970514.html在说明之前我先抛出结论:互斥锁和二值信号量在使用上非常相似,但是互斥锁解决了优先级翻转的问题假定我们现在有三个任务,task1,task2,task3,任务优先级task1最高,然后依次降低。我们知道在系统调度的时候当两个任务同时处于就绪态的时候,系统会优先执行优先级高的任...
Linux进程地址空间和进程的内存分布 一 进程空间分布概述 对于一个进程,其空间分布如下图所示: 程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码。初始化过的数据(Data):在程序运行初已经对变量进行初始化的数据。未初始化过的数据(BSS):在程序运行初未对变量进行初始化的数据。栈(Sta...
数据驱动编程 “数据的表现形式是编程的根本”“更普遍的是,战略上突破常来自数据或表的重新表达――这是程序的核心所在。如果提供了程序流程图,而没有表数据,我仍然会很迷惑。而给我看表数据,往往就不再需要流程图,程序结构是非常清晰的。”“由于缺乏空间而绞尽脑汁的编程人员,常常能通过从自己的代码中挣脱出来,回顾、分析实际情况,仔细考虑程序的数据,最终获得非常好的结果。实际上,数据的表现形式是编程的根本。”...
什么是数据驱动编程 前言:最近在学习《Unix编程艺术》。以前粗略的翻过,以为是介绍unix工具的。现在认真的看了下,原来是介绍设计原则的。它的核心就是第一章介绍的unix的哲学以及17个设计原则,而后面的内容就是围绕它来展开的。以前说过,要学习适合自己的资料,而判断是否适合的一个方法就是看你是否能够读得下去。我对这本书有一种相见恨晚的感觉。推荐有4~6年工作经验的朋友可以读一下。正题:作者在介绍Unix...
深度解析程序从编译到运行 深度解析程序从编译到运行前言C语言算是大学里接触的最早,用的最"多"的语言了,对于大部分学习计算机的学生基本上是从开始学习C语言起,凭借着一句经典的"hello, world!"迈入了计算机的世界的,初体味了一把这个世界还有个叫编程的活。作为系统级的开发首选语言,自诞生以来就屹立不倒,C语言的重要性是不言而喻的。做为一个菜鸟级别的程序员,使用C有些年,但对于C没有有真正的了解。我想有...
C语言模式实现C++继承和多态 这个问题主要考察的是C和C++的区别,以及C++中继承和多态的概念。C和C++的区别C语言是面向过程的语言,而C++是面向对象的过程。什么是面向对象和面向过程?面向过程就是分析解决问题的步骤,然后用函数把这些步骤一步一步的进行实现,在使用的时候进行一一调用就行了,注重的是对于过程的分析。面向对象则是把构成问题的事进行分成各个对象,建立对象的目的也不仅仅是完成这一个个步骤,而是描述各个...
C++对象是创建在堆上,还是在栈上? https://blog.csdn.net/Solo_two/article/details/79780086如果需要在堆上创建对象,要么使用new运算符,要么使用malloc系列函数。这点没有异议。真正有异议的是下面的代码:Object obj;此时,obj是在栈上分配的吗?要回答这个问题,我们首先要理解这个语句是什么意思。这个语句就是代表着,在栈上创建对象吗?其实,这...
图说C++对象模型:对象内存布局详解 图说C++对象模型:对象内存布局详解阅读目录0.前言 1.何为C++对象模型? 2.文章内容简介 3.理解虚函数表 3.1.多态与虚表 3.2.使用指针访问虚表 4.对象模型概述 4.1.简单对象模型 4.2.表格驱动模型 4.3.非继承下的C++对象模型 5.继承下的C++对象模型 5.1.单继承 5.2.多继承 6.虚继承 6.1.虚...
C++的那些事:你真的了解引用吗 一、引用的本质是什么说到引用,一般C++的教材中都是这么定义的:1,引用就是一个对象的别名。2,引用不是值不占内存空间。3,引用必须在定义时赋值,将变量与引用绑定。那你有没有想过,上面的定义正确吗?编译器是如何解释引用的?这里先给出引用的本质定义,后面我们再进一步论证。1,引用实际是通过指针实现的。2,引用是一个常量指针。3,引用在内存中占4个字节。4,在对引用定义时,需要对这个常量...
编程思想、哲学、道与术 一切的起源:问题及问题的求解:编程是为了解决问题,而解决问题可以有多种视角和思路;世界观与方法论:马克思:世界是物质的,物质是运动的;运动着的物质是普遍联系和永恒发展的;编程思想与世界观: 我们知道,哲学领域中,最根本的对立是唯物主义和唯心主义的对立,而附属其下,又有许多对立,如形而上学和辩证法的对立、可知论和不可知论的对立等等。这些对立形成了哲学的基本体...