lockdir(简述makefile编写规格举例说明)

1. lockdir,简述makefile编写规格举例说明?

1.一个简单的makefile例子

假设一个程序有两个文件file1.c,file2.c,每个文件都包含head.h,生成file可执行文件

file:file1.o file2.o 附属行(文件的依存关系)

gcc -o file1.o file2.o 命令行

file1.o:file1.c head.h

gcc -c file1.c

file2.o:file2.c head.h

gcc -c file2.c

从file最终的目标文件开始倒推,依次列出文件的依存关系,make在执行时:

(1)判断file可执行文件是否存在,若不存在,则执行命令行,向下寻找依存关系

(2)若file存在,则检查依靠文件,是否存在更新,若存在更新则执行命令行,若没有更新则给出提示:

make:'file' is up to date.

2.makefile中的宏定义及内部变量

宏定义:

OBJS = file1.o file2.o

CC = gcc

CFLAGS = -wall -O -g

引用:

file:$(OBJS)

$(CC) $(OBJS) -o file

file1.o:file1.c head.h

$(CC) $(FLAGS) -c file1.c

file2.o:file2.c head.h

$(CC) $(FLAGS) -c file2.c

内部变量:

$@:当前规则的目的文件名

$<:依靠列表中的第一个依靠文件

$^:整个依靠列表

file:$(OBJS)

$(CC) $^ -o $@

file1.o:file1.c head.h

$(CC) $(FLAGS) -c $< -o $@

file2.o:file2.c head.h

$(CC) $(FLAGS) -c $< -o $@

"$(CC) $(FLAGS) -c $< -o $@"是隐含规则,可以不写,默认使用此规则

3.假象

假设一个项目要生成两个可执行文件file1和file2,这两个文件是相与独立的,则在makefile开始处:

all:file1 file2

make总是假设all要生成,去检查它的依赖文件

4.清除由make产生的文件

clean:

rm *.o

rm file

执行:

make clean

则会清除由make生成的*.o和file文件

如果有clean文件存在,则清除不会执行(因clean没有可依赖的文件,永远是最新的)

使用PHONY目标,避免同名文件相冲突,不会检查clean文件存在与否,都要执行清除操作

.PHONY : clean

clean:

rm *.o

rm file

5.makefile函数

搜索当前目录,生成由*.c结尾的文件列表,wildcard--函数名

SOURCE = $(wildcard *.c)

用%.o替换$(SOURCE)中的%.c文件

OBJS = $(patsubst %.c,%.O,$(SOURCE))

6.产生新规则

SOURCE = $(wildcard *.c)

depends:$(SOURCE)

gcc -M $(SOURCE) > depends

(为每一个.c文件产生规则,c文件和相关头文件为依靠)

在makefile文件中:

include depends

7.一个有效的makefile文件

可以完成大部分我们所需要的依靠检查,不用做太多的修改就可用在大多数项目里

功能:搜索当前目录,寻找源码文件,放入SOURCE变量里,利用patsubst产生目标文件(*.o)

CC = gcc

CFLAGS = -Wall -O -g

SOURCE = $(wildcard *.c,*.cc)

OBJS = $(patsubst %.c,%.o,$(patsubst,%.cc,%.o,$(SOURCE)))

file:$(OBJS)

$(CC) $^ -o $@

用默认规则产生目标文件(*.o)

1:编译可执行程序。2:编译lib库 3:编译so库

本博针对上面三种目的各自写出了makefile模版,希望对大家有所帮助。

一.编译可执行程序

当前目录下制定文件编译成可执行文件(连接外部库的话只需要更改INC和LIB即可)

CXX = g++

TARGET = bitmaploctest

C_FLAGS += - g - Wall

LIB_FLAGS = - pthread

all: $(TARGET)

bitmaploctest: bitmaploctest.o bitmaploc.o file_lock.o

$(CXX) - o $@ $^ $(LIB_FLAGS) $(LIB) $(C_FLAGS)

.cpp.o:

$(CXX) - c - o $* .o $(INC) $(C_FLAGS) $* .cpp

.cc.o:

$(CXX) - c - o $* .o $(INC) $(C_FLAGS) $* .cc

clean:

- rm - f * .o $(TARGET)

二.编译成lib库

当前目录下指定文件编译成lib库(一般lib库在编译的时候不会将使用的外部库编译进来,而是等编译成可执行程序时或者.so时)

INC_DIR= ./

SRC_DIR= ./

OBJ_DIR= ./

LIB_DIR= ./

H_DIR= ./

OBJ_EXT= .o

CXXSRC_EXT= .cpp

CSRC_EXT= .c

LIB_EXT= .a

H_EXT= .h

OBJECTS = $(OBJ_DIR)bitmaploc$(OBJ_EXT) \

$(OBJ_DIR)file_lock$(OBJ_EXT)

LIB_TARGET = $(LIB_DIR)libbitmaploc$(LIB_EXT)

$(OBJ_DIR)% $(OBJ_EXT): $(SRC_DIR)% $(CXXSRC_EXT)

@echo

@echo “Compiling $< == > $@…”

$(CXX) $(INC) $(C_FLAGS) - c $< - o $@

$(OBJ_DIR)% $(OBJ_EXT): $(SRC_DIR)% $(CSRC_EXT)

@echo

@echo “Compiling $< == > $@…”

$(CC) - I./ $(INC) $(C_FLAGS) - c $< - o $@

all: $(LIB_TARGET)

$(LIB_TARGET): $(OBJECTS)

all: $(OBJECTS)

@echo

$(AR) rc $(LIB_TARGET) $(OBJECTS)

@echo “ok”

clean:

rm - f $(LIB_TARGET) $(OBJECTS)

三.编译成so库

当前目录下指定文件编译成so库(必须将所有引用的外部库都编译进来)

CC = gcc

CXX = g++

CFLAGS = - Wall - pipe - DDEBUG - D_NEW_LIC - g - D_GNU_SOURCE - shared - D_REENTRANT

LIB = - lconfig - ldl - lrt - L../ ../ lib - lttc - g

INCLUDE = - I../ spp_inc

OO = service.o tinystr.o tinyxml.o tinyxmlerror.o tinyxmlparser.o uin_conf.o stat.o

TARGETS = ../ ../ lib/ libRanch.so

all: $(TARGETS)

stat: tool_stat.cpp

$(CXX) $(INCLUDE) tool_stat.cpp - o tool_stat stat.o tinystr.o tinyxml.o tinyxmlerror.o tinyxmlparser.o - g

cp tool_stat ../ ../ bin

$(TARGETS): $(OO)

$(CXX) $(CFLAGS) $(INCLUDE) $(OO) - o $@ $(LIBDIR) $(LIB)

.c.o:

$(CC) $(CFLAGS) - c $(INCLUDE) $<

echo $@

.cpp.o:

$(CXX) $(CFLAGS) - c $(INCLUDE) $<

echo $@

% : % .c

$(CC) $(CFLAGS) - o $@ $< $(OO) $(LDFLAGS)

echo $@

clean:

rm - f * .o

rm - f $(TARGETS)

rm - f tool_stat

CC=cc -g

PROC=proc

CFLAGS=-DPRECOMP -I$(ORACLE_HOME)/precomp/public \

-I$(ORACLE_HOME)/xdk/include -I.

FLAGS= -D_ALL_SOURCE=1 -D_LINUX -g -I../../incl -D_GNU_SOURCE -D_IS_EAB=1 -D__USE_GNU=1 -D__GCC_296 -I/usr/include/libxml2 -I../csrc -I../../csrc/ -DPOSIX=1 -DLINUX

LIBHOME=$(ORACLE_HOME)/lib

LLIBSQL= `cat $(LIBHOME)/sysliblist` \

`cat $(LIBHOME)/ldflags` \

-lclntsh

LIBS= -L$(LIBHOME) $(LLIBSQL) -lmylib

.SUFFIXES: .sqc .c .o

%.c:%.sqc

$(PROC) $(PROCPLSFLAGS) iname=$^ hold_cursor=yes

%.o:%.c

$(CC) -c $(FLAGS) $(LIBS) $^

test:test.o test1.o test1.o

cc -o $@ $(FLAGS) $(LIBS) $^

rm -rf $^

haha:test.o test1.o test1.o

@echo "+="$+

@echo "?="$?

@echo "^="$^

@echo "<="$<

@echo "@="$@

@echo "*="$*

@echo "%="$%

2.说明

2.1一般makefile编写有3个步骤

1.宏定义。主要功能是定义一些宏变量已替代较长的编译支持信息。一般情况下针对编译所需要得.h头文 件,.a/.so的库文件路径。比如例子中的CFLAGS是oracle预编译需要数据库支持的头文件路径。LIBHOME是oracle环境编译需要数 据库库文件路径。

2.源文件之间的相互依赖关系。列出需要产生目标文件编译依赖的文件。比如例子中的test目标,其产生时会检测(test.o test1.o test1.o)这些依赖文件的变化,如果依赖文件有变化会自动先编译依赖文件。

3.可执行的命令.即针对目标关系,所作出的编译行为。比如test其检测完依赖文件后执行(cc -o $@ $(CFLAGS) $(LIBS) $^)编译链接产生目标执行文件test.

4.宏使用时用(),{}来确认宏名称例如${LIB}加{}会查找LIB的宏内容,$LIB会查找L的宏内容。

2.2 :常用编译项说明

1. -I:制定头文件搜索的路径

2. -L:连接需要的库文件路径

3.–l:连接需要的库文件(比如:libmylib.so写作 –lmylib)

2.3: 自动化变量说明:

$+ :所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。

$?:所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚

$^ :所有的依赖文件,以空格分开,不包含重复的依赖文件。

$< :第一个依赖文件的名称。

$@ :目标的完整名称。

$* :不包含扩展名的目标文件名称。

$% :如果目标是归档成员,则该变量表示目标的归档成员名称。

具体对照使用以上makefile,执行make haha得到如下对照信息:

$ makehaha

test.otest1.o test1.o

test.otest1.o

test.otest1.o

test.o

haha

2.4:后缀规则:

.SUFFIXES:.sqc .c .o制定新的后缀规则。(%.c:%.sqc),(%.o:%.c)即规则行为。就是将所有.sqc转为.c,.c再转为.o。

.c.o:等价于%.o:%.c

3.注意:

分行符\后面不能再有其他任何内容。

对齐行最好采用^I(tab键)

注释符号#

include包含编译文件

1. 概述

Makefile,what??很多windows程序可能都没听说过

简单的说,Makefile是Unix/Linux环境下描述了整个工程的编译、连接等规则 的文件 ,其主要包括三点:

1) 工程中的哪些源文件需要编译以及如何编译

2) 依赖库以及库所在的位置

3) 想得到什么:可执行文件?静态库?动态库?

项目中,我们会有很多源文件、头文件、依赖库文件、配置文件等等,通过Makefile定义规则来制定编译顺序,编译规则,编译依赖,甚至更复杂的功能,将极大的方便我们的开发,其最大的好处就是”自动化编译“,通过‘make’就可以方便的进行整个项目的编译工作。

2. 编译链接

从源码到可执行文件,具体步骤:

源码--->预处理--->编译--->汇编--->链接

我们常常把预处理、编译和汇编三个阶段统称为编译阶段,在这个阶段,编译器会检查程序语法、函数与变量是否声明等。

经过编译之后,unix/linux下,将得到.o文件(一般来说,每个源文件都能生成一个对应的.o文件),即object file(windows下即.obj文件),.o不能直接运行,我们需要将其合成可执行文件,这个过程就叫链接。在链接过程,链接器会在所有的.o文件 中找寻函数的实现,如果找不到,则会报链接错误。

3.Makefile规则

Makefile只有一个规则:

target: prerequisites

command

target:即目标,它可以是可执行文件、可以是.o文件,也可以是一个标签,简单的说,它就是你要做的事情。

prerequisites:生成target所需要的条件,它可以是一个文件,也可以是另外一个target

command:具体执行的命令

解释如下:target这个目标依赖于prerequisites中的文件,其生成规则定义在command中。

更简单一点表达:如果prerequisites中任何一个文件的时间要比target文件更新的话,command所定义的命令就会执行。

eg:

=====makefile=====

#第一个规则

test: main.o hello.o

gcc main.o hello.o –o test

#第二个规则

main.o: main.c

gcc –c main.c

#第三个规则

hello.o: hello.c hello.h

gcc –c hello.c

#第四个规则

clean :

rm –rf *.o

rm –rf test

=====makefile=====

第一个规则:

test就是target, main.o和hello.o是prerequisites,'gcc main.o hello.o –o test’是command。

即:要生成test,就需要有main.o和hello.o,如果main.o或者hello.o文件的时间比test新(或者test文件不存在),则会执行命令’gcc main.o hello.o –o test’,

第二个规则:

target是main.o,main.c是prerequisites,’gcc –c main.c’是command

即:要生成test,就需要main.c,如果main.c文件的时间比main.o新,则会执行’gcc –c main.c’

第三个规则和第二个规则类似

第四个规则:

这里,target是clean,此处,clean并不是一个文件,而是一个动作的名字,它的执行,需要显示的在make命令后制定,例如,此处执行 ‘make clean’,将调用其后的command,即‘rm –rf *.o rm –rf test’,另外,此处没有prerequisites,即任何时候都执行command

我们来看下如果执行'make'会做什么:

1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。

2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“test”这个文件,并把这个文件作为最终的目标文件。

3、如果test文件不存在,或是test所依赖的后面的[.o]文件的文件修改时间要比test这个文件新,那么,他就会执行后面所定义的命令来生成test这个文件。

4、如果test所依赖的.o文件存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件。

5、依次类推,直到生成的所有的target都是最新的。

用户如果执行'make clean',由于其后面没有依赖,则执行command所定义的命令。

如果我们修改了代码main.c,然后执行‘make’,由于main.c时间比main.o新,那么main.o会重新编译生成,由于main.o文件的时间比test新,那么test也会重新生成。

lockdir(简述makefile编写规格举例说明)

2. 如何用WinRAR浏览lockdir加密文件?

选择需要加密的文件或者是文件夹(这里以文件夹为例)

2

右键点击要加密的文件夹,在弹出的快捷菜单中选择“添加到压缩文件”命令

3

在弹出的压缩文件对话框中,选择”常规“选项卡点击”浏览“按钮,选择压缩加密后文件的存放位置

4

在”压缩文件“对话框中选择密码选项卡,然后再下面”输入密码“和再次输入密码以确认”框中输入一致密码,然后点击“确定”按钮

5

等待压缩加密进度条达到100%就好压缩完毕了

6

双击压缩加密后的文件,

7

双击选择其中的一个文件,在弹出的“输入密码”对话框中输入密码,点击确定按钮即可开始解压文件了

8

等待解压进度条解压完毕即可查看文件了

希望可以得到你的好评吧

3. 请问文件夹加密工具哪个好用?

网上有很多专业的加密文件软件的,

不过个人 极力推荐Lockdir~~软件免安装,文件小(只有1.2M),打开即用,所有文件均可加密,不压缩文件不改变文件属性,视频质量,自定义输入密码,临时解锁还是永久解锁~~秒加密,秒解密的,

使用非常方便,手机电脑U盘都可以用的,,加密后只看到lockdir一个文件,属性也不显示占内存,只是手机电脑总内存依旧会占用的!!!个人用了好多年,真正觉得非常棒~

附图软件图片,百度均可收索免费下载~

4. 常见的电脑故障应急处理方法?

遭遇停电 <现象:显示器,主机,音箱等会在一瞬间“强行关闭”。 现象分析:这是突然“停电”造成的。由停电的瞬间产生的电压波动会冲击电脑硬件的芯片,电路,电阻等。而一旦停电时您正在进行磁盘读写操作,则有可能产生坏道,或当你在编写文稿时,则数据资料就会丢失…… 应当之策:配电脑时选配个品牌电源,这样能最大限度的从电源上减小电压波动对硬件造成的不良影响。停电后,关闭所有电源,以防下次来电时显示器和部份ATX电源同时启动,这样会造成对硬件的不良损害。当您用WORD编辑文稿时,用上WORD的自动保存功能。如果停电的瞬间恰好您在对磁盘进行操作,建议您下次开机不要在启动时跳过磁盘检测,检测有无产生坏道。一旦发现坏道,则用NORTON,PQMAGIC等工具软件来修复或屏蔽坏道。另外,如果您经济上许可,建议选配一个UPS,为电脑提供一段时间的断电保护。 自动关机 现象:电脑在正常运行过程中,突然自动关闭系统或重启系统。 现象分析:现今的主板对CPU有温度监控功能,一旦CPU温度过高,超过了主板BIOS中所设定的温度,主板就会自动切断电源,以保护相关硬件。另一方面,系统中的电源管理和病毒软件也会导致这种现象发生。 应当之策:上述突然关机现象如果一直发生,先确认CPU的散热是否正常。开机箱目测风扇叶片是否工作正常,再进入BIOS选项看风扇的转速和CPU的工作温度。发现是风扇的问题,就对风扇进行相关的除尘维护或更换质量更好的风扇。如果排除硬件的原因,进入系统,从“吻到死”的安装光盘中覆盖安装电源管理,再彻底查杀病毒。当这些因素都排除时,故障的起因就可能是电源老化或损坏,这可以通过替换电源法来确认,电源坏掉就换个新的,切不可继续使用,会烧毁硬件的。 系统当机 现象:桌面被锁定,鼠标不能动,严重时连热启动(ALT+CTRL+DEL)都不行。还有就是蓝屏现象。 现象分析:“吻到死”系统自身的BUG以及各软件间的兼容性问题是该故障的原因,也可能是用户同一时间运行了过多的大程序,从而导致进程阻塞,引发当机。 应对之策:当机分2种,真当和假当,二者区分的最简单方法是按下小键盘区的Numlock键,观察其指示灯有无变化。有,则假当;反之,真当。假当可以同时按下ALT+CTRL+DEL在出现的任务列表里选定程序名后标注没有响应的项,单击结束任务。真当,只有冷启动了。对于蓝屏,在按下ESC键无效后,选择重启,按机箱面板上的复位键。对于兼容性问题,可以从卸载“问题”软件和更新主板BIOS和相关主板驱动程序上来解决。 病毒发作 现象:系统运行缓慢,当机,非法操作,硬盘灯乱闪,经常蓝屏,以及莫名奇妙的系统提示…… 现象分析:病毒实质上是一种恶意的电脑程序代码,病毒通过大量的自身复制,同时在系统中隐秘运行,占有系统资源,严重的还会对软件和硬件造成破坏,如CIH,硬盘锁等。 应对之策:道高一尺,魔低一丈,病毒的克星是杀毒软件。一旦怀疑自己的机器染上病毒,请重新启动系统到DOS,运行正版的杀毒软件(DOS版)这样可以杀掉在“吻到死”下杀不了的病毒;而后再启动到系统桌面,运行杀毒软件的WINDOWS版本进行再杀毒。另一方面,由于病毒发作严重时会破坏一些文件;我们就在病毒发作之前把重要的文件备份到C盘之外其它驱动器,且把数据文件的属性设定为只读。同时,大家要时刻更新杀毒软件病毒库,少用盗版碟,已上网的朋友们对不明的邮件附件千万不要下载。 系统故障 现象:进不了系统,典型表现为开机自检通过,在启动画面处停止,或显示:Thediskiserror等有E文提示的诸多现象。 现象分析:此为系统故障,可由很多原因引起,比较常见的就是系统文件被修改,破坏,或是加载了不正常的命令行。此外,硬盘的故障也是原因之一。 应对之策:首先要尝试能否进入安全模式,开机按F8键,选择启动菜单里的第三项:Safemodel(安全模式)。进入安全模式后,可以通过设备管理器和系统文件检查器来找寻故障,遇到有“!”号的可以查明正身再确定是否del或设置中断。也可以重装驱动程序,系统文件受损可以从安装文件恢复(建议事先就把WINDOWS的安装盘复制在硬盘里)。如果连安全模式都不能进入,就通过带启动的光盘或是软盘启动到DOS,在DOS下先杀毒并且用Dir检查C盘内的系统文件是否完整,必要时可通过系统软盘进行SysC:,恢复相关的基本系统文件。如果C盘内没有发现文件,则只有对系统进行彻底重装。

5. 没有基础的人学java开发难吗?

编程语言Java,已经21岁了。从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的。

Java应用的广泛已经到了“无处不用”的盛世,而且一直在语言排行榜榜首,从未被超越。废话不多说,今天主要是给大家讲讲怎样学习Java,给大家建议一条轻松精通Java的学习路线。有了相对标准的流程,那么你的学习效率一定会倍增。

入门阶段,主要是培养Java语言的编程思想。了解Java语言的语法,书写规范等,掌握Eclipse、MyEclipse等开发工具,编写Java代码的能力。学完这个阶段你应该可进行小型应用程序开发并且可以对数据库进行基本的增删改查管理。注意:此阶段知识点的学习,会有真实的项目进行驱动学习,让你轻松理解各知识点。

1计算机基础知识

针对零基础学习的人,从对计算机操作等知识的了解,延伸到Java语言的发展与开发工具的使用上。主要是让你知道怎样执行计算机命令,认识Java这门语言,感受编程语言Java怎么开发程序。

1) 计算机基础

让零基础学习的人先了解计算机相关知识,进而再去了解Java语言。

2) DOS常用命令

了解什么是DOS,并掌握DOS控制台的打开方式,同时熟悉常用的DOS命令,例如:盘符切换、进入指定目录、删除文件等,完成使用DOS命令对计算机进行操作和控制。

3) Java概述

了解Java语言的发展史、Java语言平台版本、Java语言的特点,以及JRE与JDK。JRE是Java的运行环境,JDK是Java开发工具包,它包含了Java的开发工具以及JRE。所以安装了JDK就不用再单独安装JRE了。

4) JDK环境安装配置

了解了什么是JDK,以及JDK的重要性,下一步我们就来学习如何安装和配置JDK环境。在安装JDK之前,我们首先需要下载JDK,针对不同的系统,我们需要下载不用版本的JDK。

5) 环境变量配置

了解path、classpath环境变量,理解path变量和classpath变量的作用,并掌握path变量和classpath变量的配置方式。

6) Java程序入门

当JDK、环境变量配置完毕,我们就可以开始 编写Java程序。编写Java程序可以使用如下几种工具:notepad(微软操作系统自带)、Editplus、Notepad++、Eclipse、MyEclipse,sublime等等。

2编程基础

此模块学习是让你了解编程的具体流程,学习Java基础语法的格式等。具体要掌握不同数据类型的变量定义与使用,掌握不同运算符的运算规则,掌握流程控制语句的执行流程,编写方法的声明与调用,创建数组并访问数组元素等知识。

1) 注释

在程序开发工程中,用于解释和说明程序的文字我们称之为注释,Java中的注释分为以下几种:单行注释、多行注释、文档注释。

2) 关键字

了解Java关键字的含义及特点,掌握关键字使用的注意事项。

3) 标识符

了解什么是标识符,标识符的组成规则,以及标识符使用时的注意事项。

4) 常量与变量

理解常量与变量的含义,并掌握常量与变量的区别、变量的定义格式以及变量的赋值。

5) 数据类型

掌握Java语言的数据类型,如基本数据类型:byte、short、int、long、float、double、char、boolean,以及引用类型:类、接口、数组。

6) 运算符

熟练掌握Java中的运算符:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三目运算符。

7) 流程控制语句

了解什么是流程控制语句,掌握以下流程控制语句:顺序结构、选择结构、循环结构,并能够通过流程控制语句实现特定的功能。

8) 方法

掌握方法的定义及格式,并能正确的调用方法,理解方法的调用过程,同时清楚方法的注意事项;掌握方法重载及其特点。

9) 数组

了解数组的概念,掌握数组的定义格式、静态初始化、动态初始化,并能够理解Java中数组的内存图解。熟练掌握数组的遍历、获取最值、数组元素逆序、数组元素查找、数组排序和二分查找,以及二维数组的定义格式及初始化。

3面向对象

现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,如人类、书桌、计算机、高楼大厦等。人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象都是由哪些部分组成的。通常都会将对象划分为两个部分,即动态部分与静态部分。静态部分,顾名思义就是不能动的部分,这个部分被称为“属性”,任何对象都会具备其自身属性,如一个人,它包括高矮、胖瘦、性别、年龄等属性。然而具有这些属性的人会执行哪些动作也是一个值得探讨的部分,这个人可以哭泣、微笑、说话、行走,这些是这个人具备的行为(动态部分),人类通过探讨对象的属性和观察对象的行为了解对象。

1) 面向对象思想

了解面向过程编程思想,能够通过案例理解Java的面向对象编程思想,了解面向对象开发、设计、特征。

2) 类与对象

了解什么是类,什么是对象,并理解类与对象之间的关系;熟练掌握类的定义、对象内存图等。

3) 成员变量和局部变量

了解什么是成员变量,什么是局部变量,以及从他们在类中的位置、内存中的位置、生命周期、初始化值等方面掌握他们的区别。

4) 匿名对象

了解什么是匿名对象,掌握匿名对象的两种使用情况。

5) 封装

清楚的了解什么是封装,并能够理解封装的优点与缺点,同时掌握封装的原则。

6) this关键字

掌握this关键字的含义与使用。

7) 构造方法

了解什么是构造方法,构造方法的作用,以及与构造方法相关的注意事项。

8) 继承

理解什么是继承,继承的好处以及java中继承的特点和注意事项,继承中成员变量的关系、构造方法的关系、成员方法的关系,方法重写与方法重载的区别。

9) 多态

理解什么是多态,掌握多态案例及成员访问的特点,多态的优点和缺点,多态中的转型问题。

10) 抽象类

了解什么是抽象类,抽象类的特点,抽象类成员的特点。

11) 接口

了解什么是接口,接口的特点,接口成员的特点,类与类、类与接口的关系,以及抽象类与接口的区别。

12) 内部类

什么是内部类,内部类的访问特点,内部类的位置,什么是成员内部类、局部内部类、匿名内部类,以及匿名内部类在开发中的使用。

4常用类

类库就是Java API(Application Programming Interface,应用程序接口),是系统提供的已实现的标准类的集合。在程序设计中,合理和充分利用类库提供的类和接口,不仅可以完成字符串处理、绘图、网络应用、数学计算等多方面的工作,而且可以大大提高编程效率,使程序简练、易懂。

学习内容:掌握Object类、Scanner类、String类、StringBuffer类、StringBuilder类、Arrays类、基本包装类、正则表达式、Math类、Random类、System类、Date类、DateFormate类、Calendar类,及其常用方法。

5集合

集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用。简单一点就是说,集合是存放数据的容器。

学习内容:什么是集合?数组与集合有什么区别,集合类的特点,掌握Collection接口、Iterator接口、List接口、ListIterator接口、ArrayList类、Vector类、LinkedList类、泛型、Set接口、HashSet类、Map接口、HashMap类、LinkedHashMap类等。

6IO

IO(Input/Output)是计算机输出/输出的接口。Java的核心库http://java.io提供了全面的IO接口,包括:文件读写,标准设备输出等等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。

1) 异常

了解什么是异常,异常的由来,常见的异常,异常的分类,掌握jvm对异常的默认处理方案,异常的处理方案:try…catch…finally、throws,什么是编译时异常,什么是运行时异常,掌握它们两的区别,throws关键字、throw关键字,以及这两个关键字的区别,熟练掌握自定义异常,异常注意事项。

2) File类

了解什么是File类,File类的用途,掌握File类的方法:createNewFile()、mkdir()、mkdirs()、delete()、renameTo(File dest)、isDirectory()、isFile()、exists()、等方法,以及File类的基本获取功能方法和高级获取功能方法。

3) IO流

了解什么是IO流,IO流的用途;熟练掌握输入流、输出流、字符流、字节流、IO流的常用基类;如何使用字节流读写数据、复制数据;什么是字节缓冲流,如何使用字节缓冲流读写数据;什么是转换流,如何使用转换流更加高效的读写数据,内存操作流、打印流、标准输入输出流、序列化流、Properties集合。

4) IO流练习

(1) 复制文本文件;

(2) 复制图片;

(3) 把ArrayList集合中的字符串数据存储到文本文件;

(4) 从文本文件中读取数据(每一行为一个字符串数据)到集合中,并遍历集合;

(5) 复制单极文件夹;

(6) 复制单极文件夹中指定文件并修改文件名称;

(7) 复制多极文件夹;

(8) 已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl”;

(9) 请编写程序读取数据内容,把数据排序后写入ss.txt中;

(10) 获取每次读取数据的行号;

(11) 登录注册IO版。

7多线程

是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程(台湾译作“执行绪”),进而提升整体处理性能。

1) 多线程

了解什么是线程,什么是多线程,理解java程序的运行原理,掌握多线程的实现方案,如何获取和设置线程名称、线程的生命周期、如何解决线程安全问题、线程同步、Lock锁、死锁问题、线程间通信、线程的状态及状态转换、线程池。

2) 多线程面试题

(1) 多线程有几种实现方案,分别是哪几种?

(2) 同步有几种方式,分别是什么?

(3) 启动一个线程是run()还是start()?它们的区别?

(4) sleep()和wait()方法的区别;

(5) 为什么wait(),notify(),notifyAll()等方法都定义在Object类中;

(6) 线程的生命周期图。

3) 设计模式

了解什么是设计模式,设计模式的分类,熟练掌握单例设计模式(懒汉式、饿汉式)。

8 网络编程

网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。

9反射

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

6. 文件显示被保护不能删除怎么办?

一、删除顽固文件的常规方法

1.重新启动Windows操作系统后,再按常规方式删除文件。

2.在DOS(或命令提示符)界面中用Del、Deltree之类的命令删除。

3.利用非Windows资源管理器的第三方工具删除,例如具有浏览文件夹功能的Total Commander、ACDSee、FlashFXP、Nero等软件。

4.如果你安装了两个以上的操作系统,那么就可以在当前系统中删除其它操作系统的文件。

5.在启动时按F8键选择进入安全模式执行删除操作。

下面,我们将针对具体问题做具体分析,为大家介绍因各种原因不能删除文件时应采取的非常规方法。

二、删除“其它程序正在使用”的文件

问题表现:

Windows XP系统中,准备删除一个大容量的AVI格式文件,但系统却总是提示无法执行删除操作,有别的程序在使用,即使刚开机进入Windows系统时也是如此。

问题解决:

方法1:打开记事本,点击菜单栏“文件”→“另存为”,命名文件和你想删除的那个文件名一致(包括扩展名),而后进行替换,会发现容量变为0 KB了。此时,执行删除命令即可。

方法2:在那个AVI文件同目录中新建一个文件夹,然后重新启动。现在,不要选那个AVI文件,先选择适才新建的文件夹,然后再同时按Ctrl键+那个AVI文件,执行删除操作。

方法3:把AVI文件的扩展名改为其它任意无效的文件类型,再执行删除操作。

方法4:有一个一劳永逸的方法就是禁用Windows XP的媒体预览功能,点击“开始”→“运行”,输入:“CMD”后回车。然后在“命令提示符”窗口下输入:regsvr32 /u shmedia.dll

回车确认操作后将卸载视频文件的预览功能。以后在需要恢复视频文件预览功能时,在“命令提示符”中输入:regsvr32 shmedia.dll命令即可。

方法5:启动曾播放过那个AVI文件的媒体播放器,打开另一个文件。此后,再尝试删除即可。

方法6:可用WinRAR程序删除,用鼠标右键单击那个AVI文件,在弹出菜单中选择“添加到压缩文件”,而后在弹出窗口的“常规”标签页中选择“压缩后删除源文件”复选框。确认操作后,执行压缩操作。最后再删除该压缩文件。

方法7:调出“Windows任务管理器”,在其中选择结束Explorer进程,但此时不要关闭该窗口。这时候,会出现像死机一样的状况。我们切换到“应用程序”标签页,点击“新任务”按钮,输入Explorer.exe 并确认操作。此后,桌面又恢复正常了,再执行删除操作即可。

三、巧妙删除“非空文件夹”或“坏文件”

问题表现:

在Windows XP系统下(NTFS分区格式),无论是在资源管理器还是用第三方工具都删除不了指定文件,例如用Total Commander删除,先提示文件夹非空,确认后没任何反应。即使用DOS盘启动,加载ntfs for dos pro可读写版本,也删除不了,提示说是“坏的文件名”,但是可以看到该文件夹。

问题解决:

这种情况下的文件无法删除很有可能是由于在NTFS格式下长文件名造成的。我们可以使用8.3格式缩小长度或更改路径中部分目录名以减少路径的长度。例如可以暂时把路径中某些目录改名字,或在命令行模式下使用8.3格式。例如,“Linux Faq”的目录变成8.3就是“LINUXF~1”了,通过“Linuxf~1”就能进入目录了,此后就可以使用Del命令删除指定文件了。如果需要删除目录,则使用Rd命令。

四、巧妙删除“指定程序或文件正在使用”的文件

问题表现:

在执行删除文件操作时,系统在弹出对话框中提示指定程序或文件正在使用,无法删除之类的警告信息。

问题解决:

方法1:对于此类情况,我们可通过结束预删除文件的相关进程来解决问题。那么,如何能获知指定文件与哪些进程相关联呢?可以使用WhoLockMe这款小工具一探究竟。我们运行“Install.exe”先安装该程序。

下面,进入预删除文件所在目录,用鼠标右键单击该文件,在弹出菜单中选择“Who Lock Me?”。

这时会弹出“Lockers”窗口,在其中我们可以获知当前所有调用该文件的进程。

选定其中的进程名称后,点击“Kill Process”按钮,弹出“Kill-Confirmation”对话框,在此点击“是”按钮确认结束进程操作即可。结束所有相应进程后,就可以通过正常途径删除指定文件了。

小提示:其实这种方法尤其适用于删除木马服务器,这种极有威胁性的小东东只有封杀了与其相关的所有进程后才能删除。

方法2:如果指定程序或文件所调用的DLL动态链接库文件还在内存中未释放,删除时也会提示文件正在使用。这种情况下,我们在DOS环境中删除系统的页面文件即可,Windows 9X系统中是“WIN386.SWP”文件(位于系统盘的Windows目录中),Windows 2000/XP系统中是“pagefile.sys”文件(位于系统盘根目录下)。

方法3:如果系统中常驻病毒防火墙,而它在扫描查毒时正在检查你准备删除的文件,那么系统也会提示文件正在使用。此时,我们只需要暂停实时监控操作即可。

五、巧妙删除其它类别的怪文件

1.用户权限问题导致无法删除文件

如果当前的Windows用户登录身份不具有删除指定文件/文件夹的权限(针对Windows NT/2000/XP/2003操作系统),只要重新以管理员身份登录即可。

2.非法字符导致文件或文件夹无法删除

如果是由于非法字符导致文件或文件夹无法删除,可以在“命令提示符”界面中进入要删除文件的目录,输入“dir>del.bat”,利用DOS的管道命令把当前目录的文件列表自动输入到批处理命令文件“del.bat”中,然后修改该批命令文件,仅保留文件或目录名,并在文件或者目录名称前增加“del ”或者“rd”,然后运行批处理命令即可删除。

3.无法删除系统中的任何文件

查看系统中是否安装了具有反删除功能的防护软件,如果是则将其删除即可。

7. 新手如何学习Java?

首先要了解Java基础,数据库,前端,Java web,框架等都是需要有一定的掌握的。如果有项目经验,找工作会更好。当然,如果有更深层次的分布式架构、服务器虚拟化技术、企业开发解决方法等知识,能更好的找到工作哦!

如果你想学习,下面这套2020年Java中高级程序员学习线路图能帮到你!(含所需要学习的技术及配套视频)一、Java基础

JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。

在Java基础板块中有6个子模块的学习:

基础语法,可帮助你建立基本的编程逻辑思维;面向对象,以对象方式去编写优美的Java程序;集合,后期开发中存储数据必备技术;IO,对磁盘文件进行读取和写入基础操作;多线程与并发,提高程序效率;异常,编写代码逻辑更加健全;网络编程,应用服务器学习基础,完成数据的远程传输。学习该阶段,可以完成一些简单的管理系统、坦克大战游戏、QQ通信等。

配套学习视频:

Java教程|Java基础班-小白的福音(冯老师)

二、数据库

数据库不仅仅是Java开发工程师的必学课程,也是其他语言都需要掌握的技能。用于对交互过程中客户的数据进行存储。

该板块包括关系型数据库和非关系型数据库。

例如:MySQL、oracle、redis、MongoDB等。数据库学习完毕后,可以将数据存储到数据库中,也可以通过SQL语句从数据库中查询数据,结合Java项目可以实现动态站点的数据的保存。

技术树

配套学习视频:

5天玩转MySQL

Sharding-JDBC从入门到精通

java进阶教程4天oracle快速入门

三、前端技术

Javaweb阶段包括前端、数据库和动态网页。Javaweb是互联网项目的入门课程,是学习后面高进阶课程的基础。

首先,我们先看一下前端板块。该板块主要包括如下几个模块:

HTML5,网页制作标记语言;CSS,对HTML制作网页进行美化;JavaScript,嵌入在页面中的脚本语言,具备逻辑性;Vue,前端框架,简化了与服务器端交互的操作,用户良好的交互体验是必不可少的。

学习前端技术后,可以完成类似京东、淘宝的前端工程的编写。

技术树

配套学习视频:

Ajax从入门到精通|黑马程序员

2018年Vue.js深入浅出教程

PHP HTML+CSS+JavaScript教程

零基础玩转微信小程序

四、动态网页技术

动态网页是中级程序员服务器端编程的基础,是高级框架学习的必备课程,后期学习的框架、服务底层都是基于动态网页技术之上的。

该板块包括Javaweb核心技术、包括Servlet、Request、Response、Cookie和Session等,通过这些技术的学习可以完成动态站点开发,可更好的完成服务器端与客户的交互,让页面的数据“动”起来,做出小型的应用系统。

技术树

配套学习视频:

JavaWeb教程_JavaWeb入门教程|黑马程序员

servlet4.0新特性

五、编程强化

编程强化是对解决实际问题方面做一个深入的了解和应用,是对JavaSE基础的加强,对后期自动以框架和对一些服务框架的底层理解做支撑。

编程强化板块主要包括如下几个模块:多线程高级、涉及线程内存、线程通信等;JVM优化,对JVM底层进行调优来提高项目执行效率;NIO,同步非阻塞IO来提高效率。

学习该阶段,可以对原有项目进行优化从而使程序更快更稳定。

技术树

配套学习视频:

Java多线程与并发库高级应用

java程序算法与实际运用--刘意老师

匠心之作java基础强化之JVM内存结构

匠心之作java基础强化之强转溢出&浮点数运算精讲

六、软件项目管理

JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。

在Java基础板块中有6个子模块的学习:基础语法,可帮助你建立基本的编程逻辑思维;面向对象,以对象方式去编写优美的Java程序;集合,后期开发中存储数据必备技术;IO,对磁盘文件进行读取和写入基础操作;多线程与并发,提高程序效率;异常,编写代码逻辑更加健全;网络编程,应用服务器学习基础,完成数据的远程传输。

学习该阶段,可以完成一些简单的管理系统、坦克大战游戏、QQ通信等。

技术树

配套学习视频:

Maven教程_Maven视频教程|黑马程序员

Git零基础入门到实战详解

七、热门技术框架

使用Javaweb进行企业级开发是完全可以的,但是开发效率比较低,所以对常用的逻辑操作进行封装就形成了框架,因此框架是企业开发的入门技能。

热门框架板块主流框架有如下几个:Spring框架,占据统治地位,其生态系统涉及各个方面解决方案;MyBatis框架,使用ORM思想对数据库进行操作。

该板块学习后,就可以进行真实企业级项目开发了,做出的项目也会更加符合企业要求。

技术树

配套学习视频:

Java教程|Springmvc由浅入深教程

java进阶教程Mybatis由浅入深教程

JPA教程_JPA视频教程|黑马程序员

数据层全栈方案 SpringData 高级应用

八、分布式架构方案

随着互联网的发展,业务的复杂性和用户的体验性都需要提高,所以分布式架构出现了。该板块主要讲解的是分布式架构的相关解决方案。

主要包括如下模块:Dubbo,高性能的 RPC 服务发布和调用框架;SpringBoot,简化Spring应用的初始搭建以及开发过程;Spring Cloud,一系列框架的有序集合,如服务发现注册、配置中心、负载均衡、断路器、数据监控等。

该板块的学习,可以具备大型互联网项目开发的必备技术和实际经验,为进入BATJ打下基础

技术树

配套学习视频:

java中级程序员教程快速入门Zookeeper+dubbo

两小时由浅入深搞定springboot

4天从浅入深精通SpringCloud 微服务架构

九、服务器中间件

中间件板块是大型互联网项目中必备的。服务中间件可以帮助各子模块间实现互相访问,消息共享或统一访问等功能。其包括远程服务框架中间件,例如阿里(Apache)的RPC框架Dubbo等;消息队列中间件,例如:阿里巴巴开源分布式中间件RocketMQ、高吞吐量消息发布和流处理服务Kafka等。

学习服务中间件是中级JavaEE工程师必要技术,也是JavaEE架构师必须精通的技术。

技术树

配套学习视频:

MongoDB基础入门到高级进阶

REDIS高级应用:使用redis消息队列完成秒杀过期订单处理

十、服务器技术

不管是使用原生Javaweb进行开发,还是使用框架进行开发,项目最终需要对外发布才能供全世界的人访问到,而服务器板块就可以解决这个问题,所以服务器是项目发布的必要技术。该板块包括虚拟化和web应用服务器的学习,主要包括如下几个模块:Vmware,虚拟机软件;Linux,专门用于服务器的系统;Nginx,集群部署时反向代理服务器;Tomcat,项目发布时主要使用的服务器。

该板块学习后,我们就可以把开发好的项目发布到服务器中,然后供你的小伙伴远程访问了,超酷!

技术树

配套学习视频:

高可用的并发解决方案nginx+keepalived

Linux运维189讲系统教程

服务器tomcat(Java开发必会)

利刃出鞘-Tomcat核心原理解析

十一、容器技术

容器化技术是近两年超级火的一个专题,通过容器化技术可以对环境进行打包,方便移植,大大提高了开发效率。该板块包括容器化技术Docker和其平台管理引擎Kubernetes,其中,Docker 是一个开源的应用容器引擎,可以打包应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows 机器上,也可以实现虚拟化。而Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效。通过该板块的学习,你可以通过上述技术快速搭建环境,节省开发时间,提高开发效率。

技术树

配套学习视频:

深入解析docker容器化技术

十二、业务解决方案

虽然我们已经具备了基础技术和高阶技术,但是要想与企业开发相接轨,还需要对实际项目的业务解决方案进行探究。而此版块就是在实际业务场景中的真实解决方案集合,常用的业务解决方案有如下:搜索业务场景解决方案、日志收集与分析场景解决方案、工作流引擎场景解决方案、任务调度场景解决方案、地图开发平台场景解决方案、支付开放平台场景解决方案、图表可视化场景解决方案。通过分析实际业务来学习这个解决方案技术集,完全可以达到中级甚至高级工程师水平。

技术树

好了,学习线路图分享到这里, 如果有最新学习视频,我会继续更新!

免责声明:本文作者:“游客”,版权归作者所有,观点仅代表作者本人。本站仅提供信息存储分享服务,不拥有所有权。信息贵在分享,如有侵权请联系ynstorm@foxmail.com,我们将在24小时内对侵权内容进行删除。
(55)
成语纨绔子弟蚂蚁庄园(有关描写表达人有权
上一篇 2023年12月01日
wm6.5主题(为什么很多人都用UC浏览
下一篇 2023年12月01日

相关推荐

  • 步步惊心手机下载(有什么好看的小说或者大片)

    大家好,我是广州小林。作为一名生活领域的原创作者,在这里我想简单的发表一下我个人的观点,希望可以对您所帮助。...

    2023年11月06日
  • qq个人文件夹在哪里(QQ哪个安装文件夹里以找到好友名单)

    找到QQ安装到那个磁盘,如果没作改动过安装位置,一般默认C盘,位置c:\progrmfiles\tencent\QQ\QQ号码\user.db,好友的资料都在这里面...

    2023年11月10日
  • 微软视频(微软平板电脑什么软件可以看电视直播)

    试试风云直播。或者可以试试安装个安卓模拟器,然后就可以下载当贝应用市场了,里面电视直播软件有很多,都是一键安装免费使用的...

    2023年11月11日
  • tos系统(为何帕克太阳探测器没被融化)

    而帕克太阳探测器,自2018年8月12日,在佛罗里达州卡纳维拉尔角空军基地,由德尔塔IV型重型运载火箭,搭载着发射升空。...

    2023年11月20日
  • 4399花花连连看(教宝宝叫爸爸妈妈儿歌有吗)

    儿歌伴随着孩子们的成长,因而儿歌对孩子们的身心健康发挥着重要作用,好的儿歌是心灵鸡汤,可以滋润孩子们的心灵,帮助孩子们健康的成长。儿歌容易被孩子们掌握,孩子们可以从中学到知识,家长不要忽视了儿歌,宝宝学唱儿歌,是宝宝成长的好帮手哦。下面为大家...

    2023年11月27日
  • pspchina(什么是CHINANET)

    是中国宽带互联网,是由中国电信经营管理的中国公用Internet骨干网。CHINANET从1995年开始建设以来,经过多年扩容升级,中国公用计算机互联网(CHINANET)成为中国带宽最宽、覆盖范围最广、网络性能最稳定、信息资源最丰富、网络功...

    2023年11月30日
  • kone娱乐(西安最豪华停车场)

    既然是车库保障爱车安全十分重要。中大国际九号用人防+技防的布置,让小区更加安全私密,时刻保障业主与爱车的动态交通安全。...

    2023年12月01日
  • raysource怎么用(zemax中source)

    新建layer,加上Soundkeys的插件,在插件的Audiolayer选项中选中音轨素材,然后适当调整采样范围和采样率,点击下方的Apply生成关键帧。...

    2023年12月02日
  • photobucket(如何生成图片链接)

    将图像上传到一个图像托管网站。有很多免费的图像托管网站,例如Imgur、Photobucket和Flickr。选择一个您喜欢的网站,然后按照网站的说明上传您的图像。...

    2023年12月04日
  • 凤凰语文(凤凰在日语中如何说)

    ③フェニックス(phoenix)从英文来的日语(日语:日本语,英语:Japanese),文字、书写方式、书本(纸张等)上的表现方式称为日文,是一种主要为日本列岛上大和民族所使用的语言。虽然并没有精确的日语使用人口的统计,不过计算日本国内的人口...

    2023年12月04日
返回顶部