【HIT-计算机系统】ICS-Lab5 LinkLab

2023-10-29

第1章 实验基本信息

1.1 实验目的

理解链接的作用与工作步骤

掌握ELF结构与符号解析与重定位的工作过程

熟练使用Linux工具完成ELF分析与修改

1.2 实验环境与工具

1.2.1 硬件环境

x64 CPU;1.60GHz;8G RAM;256GHD Disk。

1.2.2 软件环境

Windows10 64位。

1.2.3 开发工具

VM VirtualBox 6.1;Ubuntu 20.04 LTS 64位;

Visual Studio 2019 64位;CodeBlocks 17.12 64位;vi/vim/gedit+gcc;

edb;gdb。

1.3 实验预习

如第二章

第2章 实验预习

2.1 请按顺序写出ELF格式的可执行目标文件的各类信息(5分)

2.2请按照内存地址从低到高的顺序,写出Linux下X64内存映像。(5分)

2.3请运行“LinkAddress -u 学号 姓名” 按地址循序写出各符号的地址、空间。并按照Linux下X64内存映像标出其所属各区。

(5分)

所属区

符号及地址(地址从小到大)和空间(上下差值为上一个符号的空间)

只读代码段(.init,.text,.rodata)

只读,格式串、程序代码等

useless 0x401186 4198790

main 0x4011af 4198831

exit 0x401090 4198544

printf 0x401060 4198496

malloc 0x401070 4198512

free 0x401030 4198448

strcpy 0x401040 4198464

读/写段(.data,.bss)

可更改,未初始化和初始化的全局变量和静态变量等数据

big array 0x40404140 1077952832

huge array 0x404140 4211008

global 0x404110 4210960

gint0 0x40412c 4210988

glong 0x404108 4210952

cstr 0x4040a0 4210848

pstr 0x4021e8 4202984

gc 0x402284 4203140

cc 0x402220 4203040

运行时堆(由malloc创建)

由malloc分配的连续内存

p1 0x7f86c94f2010 140216879751184

p2 0x431f46b0 1126123184

p3 0x7f86c94d1010 140216879616016

p4 0x7f86894d0010 140215805870096

p5 0x7f86094cf010 140213658382352

用户栈(运行时创建)

局部变量等,指针env指向环境变量environ,栈中env[0]向上直到null为止都为指向环境变量字符串的指针

local int 0 0x7ffc858c9eac 140722549071532

local int 1 0x7ffc858c9ea8 140722549071528

local static int 0 0x404130 4210992

local static int 1 0x404080 4210816

local astr 0x7ffc858c9ab0 140722549070512

local pstr 0x402170 4202864

argc 0x7ffc858c9aac 140722549070508

argv 0x7ffc858c9fd8 140722549071832

argv[0]     7ffc858cb376

argv[1]     7ffc858cb384

argv[2]     7ffc858cb387

argv[3]     7ffc858cb392

argv[0] 0x7ffc858cb376 140722549076854

argv[1] 0x7ffc858cb384 140722549076868

argv[2] 0x7ffc858cb387 140722549076871

argv[3] 0x7ffc858cb392 140722549076882

env 0x7ffc858ca000 140722549071872

env[0] *env 0x7ffc858cb39c 140722549076892

SHELL=/bin/bash

env[1] *env 0x7ffc858cb3ac 140722549076908

SESSION_MANAGER=local/cdx1190201308-VirtualBox:@/tmp/.ICE-unix/1593,unix/cdx1190201308-VirtualBox:/tmp/.ICE-unix/1593

env[2] *env 0x7ffc858cb422 140722549077026

QT_ACCESSIBILITY=1

env[3] *env 0x7ffc858cb435 140722549077045

COLORTERM=truecolor

env[4] *env 0x7ffc858cb449 140722549077065

XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg

env[5] *env 0x7ffc858cb476 140722549077110

XDG_MENU_PREFIX=gnome-

env[6] *env 0x7ffc858cb48d 140722549077133

GNOME_DESKTOP_SESSION_ID=this-is-deprecated

env[7] *env 0x7ffc858cb4b9 140722549077177

LANGUAGE=zh_CN:zh

env[8] *env 0x7ffc858cb4cb 140722549077195

GNOME_SHELL_SESSION_MODE=ubuntu

env[9] *env 0x7ffc858cb4eb 140722549077227

SSH_AUTH_SOCK=/run/user/1000/keyring/ssh

env[10] *env 0x7ffc858cb514 140722549077268

XMODIFIERS=@im=ibus

env[11] *env 0x7ffc858cb528 140722549077288

DESKTOP_SESSION=ubuntu

env[12] *env 0x7ffc858cb53f 140722549077311

SSH_AGENT_PID=1545

env[13] *env 0x7ffc858cb552 140722549077330

GTK_MODULES=gail:atk-bridge

env[14] *env 0x7ffc858cb56e 140722549077358

DBUS_STARTER_BUS_TYPE=session

env[15] *env 0x7ffc858cb58c 140722549077388

PWD=/home/cdx1190201308/Hitics/linklab

env[16] *env 0x7ffc858cb5b3 140722549077427

LOGNAME=cdx1190201308

env[17] *env 0x7ffc858cb5c9 140722549077449

XDG_SESSION_DESKTOP=ubuntu

env[18] *env 0x7ffc858cb5e4 140722549077476

XDG_SESSION_TYPE=x11

env[19] *env 0x7ffc858cb5f9 140722549077497

GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1

env[20] *env 0x7ffc858cb62d 140722549077549

XAUTHORITY=/run/user/1000/gdm/Xauthority

env[21] *env 0x7ffc858cb656 140722549077590

WINDOWPATH=2

env[22] *env 0x7ffc858cb663 140722549077603

HOME=/home/cdx1190201308

env[23] *env 0x7ffc858cb67c 140722549077628

USERNAME=cdx1190201308

env[24] *env 0x7ffc858cb693 140722549077651

IM_CONFIG_PHASE=1

env[25] *env 0x7ffc858cb6a5 140722549077669

LANG=zh_CN.UTF-8

env[26] *env 0x7ffc858cb6b6 140722549077686

LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:

env[27] *env 0x7ffc858cbc98 140722549079192

XDG_CURRENT_DESKTOP=ubuntu:GNOME

env[28] *env 0x7ffc858cbcb9 140722549079225

VTE_VERSION=6003

env[29] *env 0x7ffc858cbcca 140722549079242

GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/0bf202d0_a252_4312_ad2e_5b02244f2ecd

env[30] *env 0x7ffc858cbd20 140722549079328

INVOCATION_ID=e8f20c740b2b4fa5a6390f30bd0c6aa3

env[31] *env 0x7ffc858cbd4f 140722549079375

MANAGERPID=1327

env[32] *env 0x7ffc858cbd5f 140722549079391

LESSCLOSE=/usr/bin/lesspipe %s %s

env[33] *env 0x7ffc858cbd81 140722549079425

XDG_SESSION_CLASS=user

env[34] *env 0x7ffc858cbd98 140722549079448

TERM=xterm-256color

env[35] *env 0x7ffc858cbdac 140722549079468

LESSOPEN=| /usr/bin/lesspipe %s

env[36] *env 0x7ffc858cbdcc 140722549079500

USER=cdx1190201308

env[37] *env 0x7ffc858cbddf 140722549079519

GNOME_TERMINAL_SERVICE=:1.71

env[38] *env 0x7ffc858cbdfc 140722549079548

DISPLAY=:0

env[39] *env 0x7ffc858cbe07 140722549079559

SHLVL=1

env[40] *env 0x7ffc858cbe0f 140722549079567

QT_IM_MODULE=ibus

env[41] *env 0x7ffc858cbe21 140722549079585

DBUS_STARTER_ADDRESS=unix:path=/run/user/1000/bus,guid=dcc366371e27d0100b95123560a86753

env[42] *env 0x7ffc858cbe79 140722549079673

XDG_RUNTIME_DIR=/run/user/1000

env[43] *env 0x7ffc858cbe98 140722549079704

JOURNAL_STREAM=8:34342

env[44] *env 0x7ffc858cbeaf 140722549079727

XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop

env[45] *env 0x7ffc858cbf04 140722549079812

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

env[46] *env 0x7ffc858cbf6c 140722549079916

GDMSESSION=ubuntu

env[47] *env 0x7ffc858cbf7e 140722549079934

DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus,guid=dcc366371e27d0100b95123560a86753

env[48] *env 0x7ffc858cbfda 140722549080026

_=./linkaddress

2.4请按顺序写出LinkAddress从开始执行到main前/后执行的子程序的名字。(gcc与objdump/GDB/EDB)(5分)

gdb中为程序中所有函数加上断点:

r开始调试,观察 main前后执行的所有函数

main前

Breakpoint 11, 0x00007ffff7fd00a0 in malloc@plt () from /lib64/ld-linux-x86-64.so.2

Breakpoint 10, 0x00007ffff7fec490 in malloc () from /lib64/ld-linux-x86-64.so.2

Breakpoint 4, _init (argc=4, argv=0x7fffffffdff8, envp=0x7fffffffe020) at init-first.c:52

Breakpoint 14, 0x00000000004010a0 in _start ()

Breakpoint 20, 0x0000000000401640 in __libc_csu_init ()

Breakpoint 19, 0x0000000000401180 in frame_dummy ()

Breakpoint 17, 0x0000000000401110 in register_tm_clones ()

main后

Breakpoint 1, main (argc=4, argv=0x7fffffffdff8) at HITCSF-LAB5-linkaddress.c:25

Breakpoint 3, show_pointer (p=p@entry=0x7fffffffe020, descr=descr@entry=0x402035 "env") at HITCSF-LAB5-linkaddress.c:19

Breakpoint 8, printf (__fmt=0x402004 "%s\t%p\t%lu\n") at /usr/include/x86_64-linux-gnu/bits/stdio2.h:10

Breakpoint 12, 0x0000000000401080 in __printf_chk@plt ()

Breakpoint 11, 0x00007ffff7de6310 in malloc@plt () from /lib/x86_64-linux-gnu/libc.so.6

Breakpoint 7, 0x0000000000401050 in puts@plt ()

Breakpoint 10, __GI___libc_malloc (bytes=268435456) at malloc.c:3023

Breakpoint 5, 0x0000000000401030 in free@plt ()

Breakpoint 18, 0x0000000000401150 in __do_global_dtors_aux ()

Breakpoint 16, 0x00000000004010e0 in deregister_tm_clones ()

Breakpoint 22, 0x00000000004016b8 in _fini ()

第3章 各阶段原理与方法

每阶段40分,phasex.o 20分,分析20分,总分不超过80分

3.1 阶段1的分析

        程序运行结果截图:       

分析与设计的过程:

将main.o与phase1.o链接后运行得到乱码,反汇编可执行程序phase1:

可见程序调用了puts输出字符串,但未知该字符串信息,则为了查看该字符串所在位置,对phase1.o进行反汇编:

观察phase1.o的反汇编代码,在.text节代码第9有需要重定位的地方,其在.data节偏移0x4a位置,则可知该位置存放输出的字符串,我们需要将该位置的字符串更改为目标字符串。

使用readelf查看phase1.o的节头信息,得到.data在phase.o的0x60位置,则该输出的字节信息在0x60+0x4a=0xaa位置:

使用hexedit找到该位置,然后将该位置直接信息改为目标字符串XXXXXXXXXX(十位学号ID),对应ASCII码为3X 3X 3X 3X 3X 3X 3X 3X 3X 3X(与学号XXXXXXXXXX各位一一对应),结尾补上00: 

 寻找位置0xaa:

 替换为3X 3X 3X 3X 3X 3X 3X 3X 3X 3X 00:

再进行链接,输出为目标字符串:

3.2  阶段2的分析

程序运行结果截图:

分析与设计的过程: 

 对main.o和phase2.o进行链接并执行,发现程序不做任何动作。

为了探究原因反汇编phase2.o:

观察发现phase2.o的反汇编代码中存在大量nop,该指令令程序不做动作,我们需要将nop指令改为其他机器指令令其输出我们的目标信息。

而反汇编代码中还有一个函数GgYIDGgJ,其有调用puts的部分,可使用该函数借用其中的puts输出目标字符串。

观察可知,在该函数中有三处需要重定位的地方,一处在.rodata节位置,而查看phase2.o的.rodata节发现其中储存的是目标字符串(见下图),而test %eax,%eax后函数返回退出,推测比较输入字符串是否是目标字符串,若相等则输出该串,否则跳过puts。于是为了可执行程序能够输出字符串,我们需要让链接后的do_phase能使用正确的参数(令strcmp两个参数都为目标字符串)调用GgYIDGgJ。

为此我们需要让参数指向.rodata,然后调用该函数。

首先gdb进入phase2查看函数起始地址:

在函数开头,程序将%rdi赋给了%rbp-0x8和%rax,可知%rax得到的是参数%rdi的值(参数值);又将0x40207c赋给了%esi,查看%esi得其储存的是目标字符串,即重定位得到.rodata的地址(phase2.o反汇编中%esi赋值为0x0,没有定位)

编写汇编代码p2.s,将.rodata的地址传给%rdi,在函数内通过%rdi传给%rax,调用函数strcmp。

于是我们编写汇编代码,令%rdi作为参数指向目标字符串,然后调用GgYIDGgJ:

 编译及反汇编得到机器指令:

使用hexedit将机器指令覆盖phase2.o的nop(90)处指令:

链接得到可执行文件,执行得:

3.3  阶段3的分析

程序运行结果截图:   

 分析与设计的过程:

 链接main.o与phase3.o,输出空字符串

使用gdb在do_phase设置断点查看,得到如下循环:

由-0x13(%rbp,%rax,1)可知,%rbp-0x13是字符串基址,而%rax是i

查看-0x13(%rbp)得到字符串COOKIE

movzbl %la,%eax表示取%eax低1字节,后续操作%rax加上0x404080,然后再取低1字节,输出。0x404080疑似PHASE3_CODEBOOK地址,以COOKIE的char类型ASCII码值为下标取字符输出。(COOKIE的各位符号ASCII码分别为98 106 100 108 121 105 104 110 107 118)

只需将PHASE3_CODEBOOK对应下标位置改为“XXXXXXXXXX”(十位学号ID)对应的数字字符。

查看符号表: 

 可得PHASE3_CODEBOOK为UwWuJdhJX,大小为256。

于是我们可以编写代码(PHASE3_CODEBOOK对应下标位置改为“XXXXXXXXXX”(十位学号ID)对应的数字字符,其余位随意填充,但注意下标从0开始):

 将.c汇编为.o文件后与其余两个链接,执行:

3.4  阶段4的分析

程序运行结果截图:       

分析与设计的过程:

3.5  阶段5的分析

程序运行结果截图:       

分析与设计的过程:

代码、附件github地址

https://github.com/ChenDolph7in/HITICS-LABS-in-21-Spring/tree/master/Lab5

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【HIT-计算机系统】ICS-Lab5 LinkLab 的相关文章

  • X 服务器使用什么像素格式?

    X 服务器使用什么像素格式 RGBA ARBG BGRA 如果有任何特定格式的话 Update 我专门寻找有关颜色分量顺序和位模式的信息 你的意思是帧缓冲区格式 或者所有支持的像素图格式 无论是哪一种 都取决于您的图形硬件 驱动程序和配置
  • 如何防止 CMake 在构建时(而不是安装时)为共享库创建符号链接?

    我正在使用 CMake 在 Linux 上使用 Bullet3 构建一个项目 在构建整个解决方案时 它会构建附加了 SOVERSION 的 Bullet 输出库 并创建一个不带版本的符号链接 对于我的特定场景 我不喜欢这种行为 并且我不想编
  • _dl_runtime_resolve -- 共享对象何时加载到内存中?

    我们有一个对性能要求很高的消息处理系统 最近我们注意到第一条消息比后续消息花费的时间要长很多倍 当它通过我们的系统时 会发生大量转换和消息增强 其中大部分是通过外部库完成的 我刚刚描述了这个问题 使用 callgrind 将仅一条消息的 运
  • 从sourceforge下载最新版本

    我正在尝试在 bash 脚本中从 Sourceforge 下载最新版本的graphicsmagick wget q https sourceforge net projects graphicsmagick files latest dow
  • 在哪里可以找到所有 C 标准库的源代码?

    我正在寻找所有 C 标准库的完整源代码 也就是说 我正在寻找 stdio h stdlib h string h math h 等的源代码 我想看看它们是如何创建的 我认为这取决于不同的平台 但 Linux 或 Windows 都会受到欢迎
  • ubuntu 中的 echo -e 选项不起作用

    我的同事使用Ubuntu 我使用openSUSE 我们使用相同的makefile编译相同的源代码 我的环境运行良好 但我的同事不能 总是输出无法识别 e选项 我们检查makefile 只发现echo命令使用 e option Ubuntu的
  • 如何修复 /usr/bin/env 参数处理?

    我遇到了一个奇怪的问题 usr bin env 我设计了一个简单的脚本来显示问题 该脚本使用 Ruby 编写 但使用 Python 编写的类似脚本也会发生同样的情况 这是脚本 usr bin env ruby p ARGV 还有一个没有 u
  • 如何从python导入路径中删除当前目录

    我想使用 Mercurial 存储库hg本身 也就是说 我克隆了 Mercurialhttps www mercurial scm org repo hg https www mercurial scm org repo hg并想运行一些h
  • CMake:使用其他平台的生成器。如何?

    如何使用 CMake 在 Linux 上生成 Visual Studio 项目文件 你不能 您必须在 Windows 上运行 CMake 才能为 Visual Studio 生成
  • 安装失败:无法在 ubuntu 上的 WordPress nginx 中创建目录

    我在本教程的帮助下设置了 WordPress 如何在 ubuntu 18 04 上使用 LEMP 安装 WordPress https www digitalocean com community tutorials how to inst
  • 在 shell 脚本中将脚本目录更改为用户的 homedir

    在我的 bash 脚本中 我需要将当前目录更改为用户的主目录 如果我想更改为用户的foo主目录 从命令行我可以执行以下操作 cd foo 效果很好 但是当我从script它告诉我 bar sh line 4 cd foo No such f
  • 在Linux中执行jar文件[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我创建了一个可执行的 Java jar 文件 也就是说 我将 java 程序正确打包到 jar 文件中 包括 META INF MANIFEST 文件
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一
  • Git - 致命:无法获取当前工作目录?

    When I git clone从回购协议中 我得到 fatal Could not get current working directory No such file or directory 我该怎么办 我检查了服务器并发现 git文
  • 带有接收器的 boost_log 示例无法编译

    我正在考虑将 boost log 用于一个项目 一开始我就遇到了以下问题 我在以下位置找到的升压日志示例 http www boost org doc libs 1 54 0 libs log example doc tutorial fi
  • 对符号“pthread_key_delete@@GLIBC_2.2.5”的未定义引用

    我正在尝试在 Ubuntu 中创建一个文件 当我创建时 我不断收到此错误 usr bin ld gtest 1 7 0 libgtest a gtest all cc o undefined reference to symbol pthr
  • 串口读取未完成

    下面的函数用于在Linux下从串口读取数据 我在调试时可以读取完整的数据 但是当我启动程序时 读缓冲区似乎并不完整 我正确接收了一小部分数据 但缓冲区的其余部分完全正确zero 可能是什么问题呢 int8 t serial port ope
  • 如何使用 bash 粘贴来自单独文件的列?

    我想用分隔符 合并不同的列表 第一个列表有 2 个单词 cat first one who 第二个列表有 10000 个单词 cat second languages more simple advanced home expert tes
  • 使用inotify监控文件

    我正在使用 inotify 来监视本地文件 例如使用 root temp inotify add watch fd root temp mask 删除该文件后 程序将被阻止read fd buf bufSize 功能 即使我创建一个新的 r
  • 如何告诉 CMake 将构建文件放在哪里?

    我想告诉 CMake 将文件和文件夹输出到不同的文件夹而不是当前文件夹 我在下面讨论的是 CMake 生成的文件 文件 CMakeCache txt 目录 CMakeFiles 文件 生成文件 目录 bin 文件 cmake install

随机推荐

  • LLVM Language Reference Manual

    摘要 该文档是LLVM汇编语言的参考指南 LLVM是基于表示的静态单赋值 SSA 该表示提供类型安全 低层级操作 灵活性 及简洁表示所有高层级语言的能力 这是贯穿各方面LLVM编译策略的通用代码表示 简介 LLVM代码表示用于三个不同形式
  • 宝塔SSL踩坑:SSL证书域名验证无反应

    1 申请 2 验证域名 申请通过之后就会校验域名 这里有坑 一开始我在这里点击验证域名 一直提示等待验证 我还以为要等一会 结果等了半天也没反应 百度了一下说要第二天 结果我等到第二天也没成功 这里的验证是需要登录到宝塔官网处理的 这里是第
  • 动画云创始人胥克谦&课程格子创始人李天放分享创业经历

    原文地址 http student csdn net mcd topic 163587 955044 2014年10月18日在北京科技大学成功举办了CSDN高校俱乐部全国巡讲 现场参会学生有一百余人 此次巡讲邀请到了皮影客CEO胥克谦和课程
  • 使用Java代码生成六个不重复的随机数字。

    使用Java代码生成六个不重复的随机数字 import java util Random public class tt5 public static void main String args int arr getArray for i
  • 拦截mybatis(mybatis-plus)SQL

    import java lang reflect Field import java util Date import java util Properties import org apache ibatis binding Mapper
  • 我的世界服务器修改右边浮空字,我们是大自然的搬运工 指令方块刷出浮空字教程...

    大家好 今天教大家如何刷出一个浮空的文字 现在1 8的冒险地图里都是 有些玩家就再问是怎么做的 包括CBL的Soft大神 我知道Soft发过一贴 但是他不肯交出滤器 没有了滤器 那就很复杂了 做大型显示什么需要滤器 看我完美的分割线 首先说
  • linux 文件链接的添加&删除

    linux ln s 软链接 一 创建 ln s 源文件 目标文件 当我们需要在不同的目录 用到相同的文件时 我们不需要在每一个需要的目录下都放一个必须相同的文件 我们只要在某个固定的目录 放上该文件 然后在其它的目录下用ln命令链接 li
  • 十年磨一剑的时刻即将到来——高考

    无题 作者 bill 春风送暖百花开 迎春对联贴门边 一年一度高考时 紧张气氛弥漫间 少年豪气冲牛斗 夜半挑灯把剑看 梦想未来功名路 只为国家振翅翔 考场争锋逐鹿者 才情横溢聚四方 金榜题名荣归去 谁言富贵不思君 此情此景何所似 恰似昔日李
  • centos7切换图像界面和dos界面

    在图形界面使用 ctrl alt F2切换到dos界面 dos界面 ctrl alt F2切换回图形界面 在命令上 输入 init 3 命令 切换到dos界面 输入 init 5命令 切换到图形界面 如果想系统默认 以某种方式启动 使用sy
  • 04-----内存检测工具valgrind的下载

    1 内存检测工具的下载 1 下载安装包 wget c https sourceware org pub valgrind valgrind 3 17 0 tar bz2 网址可以适当换掉 2 解压 tar xvf valgrind 3 17
  • bcb获取计算机名称,win7老电脑共享打印机无法连接0x00000bcb错误的修复方法

    近日win7 64位纯净版网友和爱纯净小编反映自己的老电脑在同一个局域网安装共享打印机时 弹出错误提示框 windows无法连接打印机 操作失败 错误为0x00000bcb 这是由于补丁KB317045没打好引起的 我们只要上网搜索安装好这
  • Basic Level 1010 一元多项式求导 (25分)

    题目 设计函数求一元多项式的导数 注 x n x n xn n为整数 的一阶导数为 n x n
  • 客户问我,为啥把数据库清空后,添加数据id不是从1开始增长!

    在清空MySQL数据库中的表的记录后 重新插入数据时自增id不是从1开始 要想在插入数据时id从1开始 不能使用可视化工具手动删除 而要用的truncate语句 该语句的作用是清空表中的数据 包括自增主键id 代码如下 truncate t
  • dell设置从ssd启动_如何进bios设置ssd固态硬盘为第一启动

    对于一些小伙伴来说 安装了双硬盘 但是却不懂如何进bios设置ssd固态硬盘为第一启动 没能将资源进行合理利用 今天快启动小编带大家了解进bios设置ssd固态硬盘为第一启动的相关操作 不懂的小伙伴一起来瞧个究竟呗 进bios设置ssd固态
  • 当推荐系统邂逅深度学习

    前言 这是一篇关于讲述推荐系统邂逅深度学习故事的文章 推荐系统之于用户的角色 有时更像是无微不至的男朋友 你口渴时递给你符合口味的饮料 你饥饿时还你以常吃的披萨 你无聊时帮你推荐有趣的音乐亦或带你欣赏感兴趣的电影 但男友也会有手足无措 不知
  • html a标签链接 点击下载文件

    通常在咱们写项目的时候会遇到附件上传 下载功能 在上传完文件后会把文件的路径发送给后端保存到数据库里以便下载 如果不通过后台直接下载的话 可以把文件路径给a标签的属性href 就可以实现下载 a href 文件路径 点击下载 a 但是有个情
  • 局域网内window10和Windows7共享只有USB接口打印机的方法——以sharp2048D为例子

    问题背景 办公室内有一台sharp2048d打印机 但是只有一个USB接口 没有网络打印功能 在办公室有多台电脑的情况下 打印文件不方便 所有产生了打印机共享的问题 1 夏普sharp2048D打印机驱动安装 此处教程参考了官方客服 1 在
  • [Python人工智能] 八.卷积神经网络CNN原理详解及TensorFlow编写CNN

    从本专栏开始 作者正式开始研究Python深度学习 神经网络及人工智能相关知识 前一篇文章介绍了什么是过拟合 并采用droput解决神经网络中过拟合的问题 以TensorFlow和sklearn的load digits为案例讲解 本篇文章详
  • uni-app 笔记 条件编译 多端兼容

    uniapp提供了非常强大的条件编译功能 你可以在在h5中 小程序中 app中 分别执行不同的代码 html标签 js css均可用 解决了多端适配的问题 简单高效 可以使用的平台有 https uniapp dcloud io platf
  • 【HIT-计算机系统】ICS-Lab5 LinkLab

    第1章 实验基本信息 1 1 实验目的 理解链接的作用与工作步骤 掌握ELF结构与符号解析与重定位的工作过程 熟练使用Linux工具完成ELF分析与修改 1 2 实验环境与工具 1 2 1 硬件环境 x64 CPU 1 60GHz 8G R