自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WarEric的博客

编程菜鸟,主要用来整理记录一些学习笔记

  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 linux下 vim+ctags+cscope阅读源码

linux下 vim+ctags+cscope阅读源码一. vim二. ctags安装使用准备使用方法一方法二命令三. cscope安装使用准备使用方法一方法二命令四. taglist建议一. vimvim作为linux下的必备文本编辑工具,必须掌握,网上教程很多,就不列举了。这里有一份简明vim练级攻略,不熟悉的请自行学习。二. ctagsctags工具是用来遍历源代码文件生成tags文...

2018-12-15 14:13:57 2615

原创 远程桌面连接Ubuntun16.04安装kvm创建桥接虚拟机

如果我有一台物理服务器,但需要模拟多个机器,那么我可以在服务器上安装多个虚拟机供多个用户使用。本文介绍的是如何通过远程桌面连接一台物理服务器,然后通过远程桌面在物理服务器上安装kvm,之后通过kvm安装虚拟机,并将虚拟机配置为桥接模式;这样物理服务器不需要做任何改变,可以为其他人随意创建和销毁虚拟机。注:这里我仅仅在UbuntuDesktop16.0下试过,其它的版本可能会存在一些源不存在等安装的玄

2018-05-07 19:56:45 867

原创 函数栈结构与内存对齐

函数栈下图是x86-64的函数栈的结构, 函数P调用函数Q的过程,Q正在执行。 这里仅对两个地方解释,其他的很容易理解,就不细说了其中返回地址用来实现函数的返回。当Q要返回到P时,就要调用此地址获取返回位置。参数构造区是对调用函数P传递的参数的拷贝,因为当P传递参数过多时,无法通过寄存器传递,只好在P的栈帧中保存;调用Q时,将其拷贝到参数构造区x86-64过程只分配自己所需...

2018-04-23 11:03:21 1506 1

原创 控制指令

条件码CPU维护一组单个位的条件码寄存器 - CF:进位标志。最近的操作使最高位产生了进位。可用来检查无符号操作的溢出。 - ZF:零标志。最近的操作得出得结果为0。 - SF:符号标志。最仅的操作得到的结果为负数。 - OF:溢出标志。最近的操作导致一补码溢出——正溢出或负溢出。leaq指令是用来进行地址计算的,不改变任何条件码。 指令 基于 描述 ...

2018-04-22 11:01:22 4241

原创 算数和逻辑操作

这些指令类有各种不同大小操作数的变种,(只有leaq没有)例如ADD由四条加法指令组成:addb, addw, addl, addq。 指令 效果 描述 leaq S,D D<—&S 加载有效地址 INC D D<—D+1 加1 DEC D D<—D-1 减1 NEG D...

2018-04-20 23:11:37 565

原创 数据传送指令与栈操作

数据传送指令 指令 效果 描述 MOV S,D D<—S 传送 movb 传送字节 movw 传送字 movl 传送双字 movq 传送四字 movabsq I,R R<—I 传送绝对的四字简单的数据传送指令,注意两个操作数不能都是内存 指...

2018-04-20 23:10:19 1535

原创 浮点数寄存器与指令

寄存器AVX浮点体系结构允许数据存储在16个YMM寄存器中 255 127 0 %ymm0 %xmm0 1st FP arg.返回值 %ymm1 %xmm1 2nd FP参数 %ymm2 %xmm2 3rd FP参数 %ymm3 %xmm3 4th FP参数 %ymm4 %xmm4 5th F...

2018-04-16 17:49:05 9586

原创 寄存器名称与数据类型

寄存器x86-64结构的CPU包含一组16个存储64位值的通用目的寄存器;历史上最开始的寄存器只有8个8位的寄存器,后来经历了16位, 32位直至现在的64位,寄存器也由8个扩展到16个。程序可以依据每个寄存器的名称使用其中的8位,或16位,或32位,或64位;使用每个寄存器有约定的使用目的。下面以表格的形式给出寄存器的名称与用法 63 31 15 7 0...

2018-04-15 22:06:22 7514

原创 GDB命令(待续)

GDB命令 命令 效果 开始和停止 quit 退出GDB run 运行程序(在此给出命令行参数) kill 停止程序 断点 break multstore 在函数multstore入口处设置断点 break * 0x400540 在地址0x400540处设置断点 delete 1 ...

2018-04-14 22:36:51 349

原创 从原理上理解C++中引用和指针的区别

C++中引入了引用这种数据类型,可以对引用所指向的数据直接进行修改,和对原始数据操作一样,类似一种别名;而指针操作却需要考虑引用与解引用,那么这两种有什么区别呢?仅从语法上死记硬背总是忘记,用起来也不得心应手,从原理上理解才是最好的选择,接下来我试图从我个人理解的角度进行分析(可能是错的),最后再做语法上的对比。引用只是别名,并不占有内存设计引用目的只是为了将程序员从指针操作中解放出来,例...

2018-04-14 18:18:04 293

原创 if分支语句通过控制传送和条件传送实现的区别

(注:以下内容和原理均来自《深入理解计算机系统第3版》) 当我们实现一个带有判断功能的代码时要使用到if判断语句,if语句在汇编中是如何实现的呢?我们先来看这样一个代码absdiff.clong absdiff(long x, long y){ long result; if(x < y) result = y-x;

2018-04-11 16:17:18 1207 1

原创 简单的用java操作Excel入门

经常要在程序中输出一些数据,为了方便给别人看,或者利用一下excel的画图功能;又或者需要将excel的数据读入进行处理。本文教你这事如何下手,但并不深入,要深入这里有详细说明方式一:输出为csv格式的文件(这个仅能输出数据到excel使用)由于excel是支持csv格式的数据的,所以仅仅只是简单的使用,把数据输出为csv格式即可,这种方法对任何编程语言来说都一样,就不再这里演示了,仅提供一个csv

2018-01-21 21:20:07 512

原创 制作自己的Ubuntu镜像

本文提供一个将目前自己的操作系统制作为镜像的方法。制作的iso文件重新烧录安装到新的地方,可以恢复到制作镜像时的系统。同时也提供一些实现供参考。这里的方法我仅在Ubuntu14.0_desktop下实验过,其它ubuntu系统应该也没有问题。方法一:使用Remastersys工具制作镜像只需要安装使用此工具即可,但由于此工具是2010年以前就停止了维护,多数连接已失效,本文给出一个下载连接。Rema

2018-01-19 10:35:46 4741 2

原创 C语言函数传指针时究竟传的是什么?

C语言函数传指针时究竟传的是什么?我们知道指针指中的内容是一个内存的地址,只有对指针进行解引用(*p),计算机才会指针所指向地址中的内容。在进行函数间调用时传递指针经常会造成段错误(也就是内存错误),其实主要是空指针引起的,或者指向了错误的位置。首先看如下一段代码#include <stdio.h>#include <stdlib.h>void init(int *p);int main(voi

2018-01-09 10:43:42 5635 3

翻译 Maven环境搭建及5分钟体验

环境搭建(这里只讲linux下,windows下同理,只是环境变量配置方式不同)首先到maven的官网下载对应的二进制.tar.gz包,将对应的包解压到你指定的目录下配置环境变量,在/etc/profile文件最后一行后面添加路径,例如我的为:#maven path configuration by ericexport PATH=/home/eric/software/apache-mav

2017-10-07 17:10:31 372

原创 Java在linux下的安装

本文介绍如何在Linux系统上进行java环境的搭建(最原始环境搭建,不是使用OpenJDK那种,或者apt-get, yum等方式)1.到oracle的官网上下载你所需要的java的JDK的版本。2. 将其解压到一个你的软件存放的目录。3.配置环境变量:1. 在shell下输入vim /etc/profile2. 在文件末尾添加#java path configurationexport JAV

2017-10-06 15:04:17 967

翻译 C Primer Plus 6 笔记——可移植类型:stdint.h和inttypes.h

C Primer Plus 6 笔记——可移植类型:stdint.h和inttypes.  C语言提供了许多有用的整数类型。但是,某些类型名在不同系统中的功能不一样。C99新增了两个头文件stdint.h和inttypes.h,以确保C语言的类型在各系统中的功能相同。(使用linux的童鞋可以使用sudo find / -name stdint.h(or inttypes.h)找到这两个头文件)

2017-07-30 22:20:28 1705 3

原创 如何在intellij idea下运行floodlight

<转载请注明出处> floodlight作为SDN的一种开源控制器,允许开发者进行二次开发,但其官方教程只给出了如何在ant, maven,eclispe 下的运行方式,若是想要导入到intellij idea下运行,若是不进行一些配置,运行就会报错,解决方式如下:1.到floodlight官网获取源代码,或者到github上进行clone,github地址.2.将工程文件导入到intelli

2017-04-28 12:31:25 1103

原创 Java异常

异常的作用异常的引入提高了程序的健壮性.当程序运行出现意外情形时,系统会自动生成一个Exception对象来通知程序,从而提高容错性.先来看异常的使用方式和作用.public class MainTest { public static void main(String[] args) { int a = 10; int b = 0; //这里除

2016-06-18 00:04:28 437

原创 Java反射机制

反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作,也就是说,类,类的成员,我们在运行的时候还可以动态地去操作他们.获得class对象每个Class被JVM加载后,系统就会为该类生成一个对应的Class对象,通过该Class就可以访问到JVM中的这个类.(这里注意该类可能只是被加载进了内存的方法区,并不一定进行了初始化,关于JVM加载类的知识请自行补充)Java程序中获得

2016-06-16 19:51:15 383

原创 Annotation

概念Annontation是Java5开始引入的新特征。中文名称一般叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。更通俗的意思是为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且是供指定的工具或框架使用的。Annontation像一种修饰符一样,应用于包、类型、构

2016-06-10 00:20:54 411

原创 Java 线程组,Callable,Future,线程池,ThreadLocal类,包装线程不安全的集合

线程组和未处理的异常Java使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,对线程组的控制相当于同时控制这批线程.用户所创建的所有线程都属于指定线程组,若没有显示指定线程组,则属于默认线程组.默认情况下子线程和创建它的副线程处于同一个线程组内;例如:A创建了B,则默认A和B处于同一个线程组.一但加入某个线程组,则中途不能改变该线程的线程组,直到该线程死亡.Thre

2016-06-04 23:48:33 2325

原创 Java线程通信

当线程在系统内部运行时,线程的调度具有一定的透明性,程序通常无法准确控制线程的轮换执行,但我们可以通过一些机制来保证线程协调运行线程的协调运行为了实现这种功能,可以借助Object类提供的wait().notify()和notifyAll()三个方法,这三个方法并不属于Thread类,而是属于Object类,所以这三个方法必须由同步监视器来对象来调用,分为以下两种情况:对于使用synchroniz

2016-06-03 19:43:53 478

原创 Android SharedPreference

SharedPreference存取数据如果你有一个相对较小的key-value集合需要保存,你应该使用SharedPreferences。每一个 SharedPreferences 文件均由framework管理,其既可以是私有的,也可以是共享的。1.获取SharedPreference通过下面两个方法之一来创建或者访问shared preference 文件: * getShared

2016-06-03 00:25:29 509

原创 Java IO

IO流1.字节流(1)InputStream OutputStream(抽象类,不可直接使用) InputStream抽象了应用程序读取数据的方式OutputStream抽象了应用程序写出数据的方式(2)EOF=End 读到-1就读到结束(3)输入流基本方法读取一个字节无符号填充到int低8位,-1是EOFint b=in.read();读取数据填充到字节数组bufin.read(byt

2016-06-03 00:22:30 374

原创 Java RandomAccessFile

RandomAccessFile读写文件RandomAccessFile提供对文件内容的访问,即可以读取文件,也可以写文件。RandomAccessFile支持随机访问文件,可以访问文件的任意位置(1)java文件模型在硬盘上的文件是byte byte byte存储的,是数据的集合(2)打开文件有两种模式”rw”(读写) “r”(只读)RandomAccessFile raf=new Ra

2016-06-03 00:21:22 438

原创 Java File

File类java.io.File * File类用于表示文件(目录) * File类只用于表示文件(目录)的信息(名称、大小等),不能用于文件内容的访问 File file=new File()创建file对象,File()的构造函数有很多,具体使用时查看APIFile file=new File("f:\\javaio\\file");file.exists()判断文件或目录是否存在f

2016-06-03 00:18:34 447

原创 Android 保存到文件

保存到文件存储在内部还是外部所有的Android设备都有两个文件存储区域:”internal” 与 “external” 存储。 那两个名称来自于早先的Android系统中,当时的大多设备都内置了不可变的内存(internal storage),然后再加上一个类似SD card(external storage)这样可以卸载的存储部件。后来有一些设备把”internal”

2016-06-03 00:16:34 578

原创 Java线程安全

问题引入–模拟银行取钱关于线程安全问题,借用经典的银行取钱问题引入,除去验证登陆等步骤,只考虑取钱过程.用户输入取款金额系统判断余额是否大于取款金额如果余额大于取款金额,则取款成功;如果小于取款金额则取款失败我们模拟以上流程,采用两个线程同时操作一个账户来模拟并发取钱问题 1.定义账户public class Account { private int account; pr

2016-06-03 00:13:02 527

原创 Android SQLite Google 官方用法

SQL官方用法Saving data to a database is ideal for repeating or structured data, such as contact information.The APIs you’ll need to use a database on Android are available in the android.database.sqlite pa

2016-06-02 00:06:31 518

原创 自定义view初探(一)

自定义view,绘制了一个表,点击表针会转动。

2016-01-07 21:35:24 340

原创 Java中的简单工厂模式

思路首先定义一个实例的接口,实现该接口,得到多种实例(其实就是各种产品)创建一个工厂,工厂使用某种方式创建实例并返回该实例,外界调用者不需要知道具体实现方式;实例的创建方式一定要很容易的加载到工厂中,这样有利于修改。 在本文中使用反射机制创建实例,通过读取hash映射表将实例的路径名传递给反射参数,工厂用反射将创建的实例返回给调用者。

2016-01-02 15:34:38 294

原创 Android SQLite操作

SQLite操作SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。public class DBHelper extends SQLiteOpenHelper { private static final String DB_NAME="mydata.db";//数据库名称 publi

2015-12-19 22:15:30 402

疯狂java讲义

这个书相比较作为一本入门教材来说,似乎更适合作为一本手册,放在初学者手边用以查阅。从这个层面来看,这本书还是很有价值的。

2018-01-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除