java 入门(1)--介绍

阵营人们在认识事物的时候,很喜欢贴标签、归类、划阵营。越是阅历多就越会这样。这也不完全是什么坏事,至少可以把事物间作个对比、归纳。java到底是一种什么样的语言呢?首先,她是一门高级语言。这是与机器语言、汇编语言相比较而言的。也就是说,她主要还是为了方便人的理解与阅读,并不是优先考虑机器的执行效率。其次,我们总喜欢把高级语言划分为“编译型”与“解释型”。比如,c是编译型的:因为我们需要先用编译器把
阅读本文

如何正确给锂电池充电

刚给手机换了新电池,发现很多人在手机和电脑充电方面存在着误区,比如下面这个流言。 流言: 新买的手机必须充满8小时以上并重复几次完全充电放电,这个过程叫做激活,这样可以使手机的电池达到最大容量。手机充满电之后必须马上拔掉电源,因为过度充电会引起电池爆炸。笔记本电脑和手机的电池最好把电用光再充电,这样可以尽量减少充电次数,延长电池寿命。 真相 1、新电池需要充满12小时? 第一次充电不需要充满1
阅读本文

C 语言——开篇

一. 使用C语言的理由(一)优点1.强大的控制及结构c是一种具有控制特性的现代语言,其设计使得用户可以自然的采用自顶向下的规划、结构化的编程,以及模块化的设计,使得编写出的程序更可靠、更易懂;2.高效、灵活性c程序往往很紧凑且运行速度快,表现出通常只有汇编语言才具有的精细控制能力,您可以细调程序以获得最大速度或最大内存使用率;3.可移植性c是一种可移植语言,较其他语言处于领先地位。在一个系统上编写
阅读本文

Question20180104 对比编译器、解释器与Javac编译原理

编译器与Javac编译原理  在前文我们知道了Java是一种编译语言和解释语言,它的源代码经过编译器Javac编译为能够被JVM识别的二进制语言,然后JVM将其解释为能够被平台识别的机器语言。那么什么是编译器呢?编译器的作用是什么呢?Javac又是如何进行工作的?下面我们一一来认识了解。1 编译器(Compiler )  高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的
阅读本文

重拾软件测试

2013年九月,我上了大学,专业是软件技术,方向是软件测试,后来毕业后做了一段时间运维,又学了一段时间java,现在在做javaweb,现在因为工作需要,再从新回顾一下原本的软件测试知识。大学学到的软件测试基本是三个方面:1.理论方面,白盒测试,黑盒测试,条件覆盖语句覆盖,因果图决策表等等2.LoadRunner,这方面我们老师也是刚上手没多久,学的惨不忍睹3.QTP,自动化测试现在先像中学生一样
阅读本文

Linux基础(vim)

1.源文件到可执行文件经历了什么?gcc -E main.c -o(输出) main.i 第一阶段:预处理:加载了include文件 gcc -S main.i -o main.s 第二阶段:编译(编译成汇编文件) gcc -c main.s -o main.o 第三阶段:汇编(汇编成二进制文件) gcc main.o (-o hello[生成的文件]可加不可家)2.Linux常用操作:C语言最早
阅读本文

汇编语言——寄存器(内存访问 ds数据段寄存器)

在内存中字的存储这段话的主要意思是:一个字=2B=16bit,CPU中是用两个内存单元储存一个字(假如获取0地址存放的字型数据,就是获取它的高位字节0+1位和低位字节0位的数据,数据由高地址位向低地址位读)问题:(1)0地址单元中存放的字节型数据是多少?  #  20H(2)0地址字单元中存放的字型数据是多少?  # 4e20H(3)2地址字单元中存放的字节型数据是多少? # 12H(4)2地址单
阅读本文

逆向工程核心原理——学习笔记_栈帧

栈帧就是利用EBP(栈帧指针,注意不是ESP)寄存器访问栈内局部变量、参数、函数返回地址等的手段。调用某函数时,先要把用作基准点(函数起始地址)的ESP值保存到EBP中,并维持在函数内部。这样无论ESP的值如何变化,以EBP的值作为基准(base)能够安全访问到相关函数的局部变量、参数、返回地址,这就是EBP寄存器作为栈帧指针的作用。 栈帧对应的汇编代码:PUSH EBP
阅读本文

Java教程到处都是,究竟怎样能学好Java?

学习Java如何入门?学习教程要点是什么?如何精通?做好以下这些点,入门更快,掌握Java更轻松。  Java必备基础知识  1、你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该十分了解UML,尤其是class,object,interaction以及statediagrams。  2、你需要学习JAVA语言的基础知识以及它的核心类库(col
阅读本文

Linux 链接详解(1)

可执行文件的生成过程:符号表和Linux目标文件格式ELF首先这里先说明一下符号表和Linux目标文件格式ELF:如代码://main.cvoid swap(); int buf[2] = {1,2}; int main() { swap(); return 0; }//swap.cextern int buf[];int *bufp0 = &buf[0];int *bufp1;v
阅读本文

01Java基础

1.常见DOS命令2.Java历史、跨平台计算机语言:更好的与计算机交互 机器语言:10101 汇编语言:通过大量的英文单词代表计算机的指令。add 1 1 高级计算机语言:c、Java、c++、PHP 跨平台:(操作系统) 一次编译,到处运行 Java虚拟机:解释class文件并通知系统要执行哪些文件。Java写的程序跨平台,Java虚拟机不跨平台,需要相同的资源,在不同的操作系统上需要的指令
阅读本文

C#之内存分配

在C#中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。自由存储区,就是那
阅读本文

JavaScript 开发者的 10 款必备工具

这些工具提供从事件处理到代码缩减和数据渲染的功能。以下是开发基于浏览器的 Web 应用程序的 JavaScript 开发人员工具包中最必要的技术汇总。 AngularAngular,之前是由Google开发的被称为AngularJS,是用于移动和桌面Web开发的单框架。为了创建类原生渐进式web应用程序,Angular提供用于汇编应用程序的数据服务的依赖注入,以及用于复合组件的HTML模板。何处下
阅读本文

python 速成笔记 [基础语法 一]

0x01 理解机器码,字节码的基本概念:低级语言: 汇编 C => 机器码 [直接可以丢给cpu去执行]高级语言: Java ruby python c# php[应用场景非常局限,只限于web开发] C++ => 字节码 [通常是个二进制文件(python中是.pyc文件),也叫中间代码,还需要对应的各类语言的解释器进一步转换成机器码才能直接被cpu执行]0x02 了解 pytho
阅读本文

Software-OO 面向对象思维

2017-11-06 11:02:50所有编程语言的最终目的都是提供一种“抽象”方法。解决问题的复杂程度直接取决于抽象的种类及质量。这儿的“种类”是指准备对什么进行“抽象”?汇编是对基础机器的少量抽象。“命令式”语言是对汇编语言的一种抽象。 (Alan Kay 总结的 Smalltalk 的五大基本特征)面向对象程序设计语言1)所有东西都是对象。可将对象想象成一种新型变量;保存着数据,但可要求它对
阅读本文

vim-ide

一、vimrc是vim的配置文件,可以修改两个位置1.etc/vim/vimrc        //一般配置文件都带有rc的后缀2.~/.vimrc     //在用户目录下存在的,/home/用户名~/.vimrc优先级高进入etc/vim/vimrc   二、vim --v  查看自己的vim版本并下载相应的vim-ide的软件包1.tar zxvf vim-ide.tar.gz  -C ~/
阅读本文

学习一门新语言需要了解的基础-12 if和switch对比

本节内容是否存在性能差异使用场景反汇编对比[付费阅读]之前初步接触了汇编,然后利用汇编简单了解下函数调用的过程,包括怎么样保护堆栈帧现场和恢复现场。另外做了简单的函数调用参数复制,返回值的传递,类似于这样的一些东西。今天其实是对照之前的东西做简单的应用。是否存在性能差异我们知道在很多语言里面都会有这两种选择条件的分支,看上去觉得差不多,除了某些语言有些限制,比如c语言它要求case里面必须要是常量
阅读本文

Linux 相关编译知识

一直对编译的过程概念很模糊,总结记录一下方便以后复习。  Linux下gcc编译器使用:  gcc编译流程:      其后缀名为“.a”。动态库是在程序执行的时候加载库,这样可以节省开销,后缀名为“.so“。  静态库:         动态库:         运行可执行程序之前,需要注册动态库的路径名,注册的几个方法: 1、修改/etc/ld.so.conf文件 2、修改LD_LIB
阅读本文