英英词典(汇编实验)

功能要求:

1.单词及其英文解释的录入修改和删除

   (1 ) 录入新单词,把它插入到相应的位置(按词典顺序),其后跟英文解释、同义词、反义词;此功能要求在文件中完成,其它功能可以将单词放在数据段中

   (2 ) 可修改单词英文解释;

   (3 ) 删除单词及其英文解释;

2.查找:

  1. 输入不完整的字符串,会依顺序列出单词前缀和字符串相匹配的单词;

如输入:en

列出:enable, enabled, enact等

  1. 查询某个单词英文解释(如enable: to provide with the means or opportunity; to make possible, practical, or easy),词库中不存在此单词,则提示找不到;
  2. 查询某个单词的同义词(如accept: approve);
  3. 查询某个单词的反义词(如win: lose);

以上结果均需显示

编译环境:VScode, msdos player MASM-v5.00

字符编码方式:UTF-8

使用说明:

1. 进入界面后首先是输入单词,只允许输入小写字母,按下回车选中自动选中匹配的第一个单词,在此阶段按 esc 键退出程序

2. 按下回车选中单词,如果没有匹配的单词自动清空重新输入需要查询的单词

3. 查询、修改命令:

    :s 同义词 :o 反义词 :e 解释 :d 删除单词 :q 退出编辑/当前单词,重新搜索 :i 编辑解释 :w 保存修改(上一次操作为编辑解释有效)

4. 编辑解释,输入 :q 后光标自动跳到解释框,输入新的解释,遇到 : 结束,输入下一个命令

5. 输入 :q 退出查询后返回到输入单词搜索阶段

效果展示:

搜索匹配:

按下enter 选中匹配的第一个单词

查询解释:

查询反义词

查询近义词

修改解释

修改后的解释

修改解释未保存

修改后直接查询近义词,不保存解释

还是原来的解释

absent删除后重新查询后,没有absent

词库未录入 k 开头的单词显示找不到

代码

; multi-segment executable file template.
; 回车 确定 :s 同义词 :o 反义词 :e 解释 :d 删除单词 :q 退出编辑/当前单词,重新搜索 :i 编辑(只对解释有效) :w 保存修改  键 esc 退出程序
; 示例:white:expl[回车] 查看解释 :i[回车] 编辑解释 :s[回车] 保存解释WordMaxLen equ 30       ; 单词最大长度
MaxCntWord equ 200      ; 最多存储的单词数
WordNum equ 38          ; 输入的单词数
ExplLen equ 200         ; 单词解释最大长度readline macro adrlocal lop, checklea   dx, adrdec   dxlop:     mov   bx, readptrmov   cx, 1                        ;; 逐个字节读入inc   dxmov   ah, 3fhint   21hmov   bx, dxmov   al, ds:[bx]cmp   al, 0dh                      ;; 判断是否是回车jnz   lopmov   byte ptr ds:[bx], '$'        ;; 加上结束符 '$'mov   bx, readptrmov   cx, 0mov   dx, 1mov   al, 01hmov   ah, 42hint   21h                          ;; 读指针向后移一位,跳过换行endmscroll macro n, ulr, ulc, lrr, lrc, att, modeifidni <u>, <mode>mov    ah, 6elsemov    ah, 7endifmov    al, n              ;n = 上卷行数;n = 0时,整个窗口空白mov    ch, ulr            ;左上角行号mov    cl, ulc            ;左上角列号mov    dh, lrr            ;右下角行号mov    dl, lrc            ;右下角列号mov    bh, att            ;卷入行属性int    10H
endmcurse macro     cury,curxmov ah, 2           ;置光标位置mov dh, cury        ;行号mov dl, curx        ;列号mov bh, 0           ;当前页int 10H
endmdispscreen macro                               ;; 需预先设置好 ds, si, cx 和光标local dislop, disretdislop:    cldlodsbcmp   al, '$'               ;; 遇到 $ 结束jz    disretmov   ah, 0ehmov   bh, 0int   10hloop  dislopdisret:    
endmworddata strucwname      db       WordMaxLen+1 dup('$')                                                    ; 单词explain    db       ExplLen dup('$')                                                         ; 解释syn        db       WordMaxLen dup('$')                                                      ; 同义词opp        db       WordMaxLen dup('$')                                                      ; 反义词
worddata endsdata segmentcntword  dw    0                                                                        ; 保存单词的个数readptr  dw    ?words worddata MaxCntWord dup(<>)                                              ; 单词存储区filename db    'D:\assembly_language_program\curriculum_design\finalword.txt', 0        ; 单词文件路径err      db    'can not open file$'adr      dw    ?inputbuf db    WordMaxLen+1 dup('$')                                                    ; 单词搜索框,显示当前单词flag     db    0                                                                        ; 是否修改解释
data endsshowdata segmentseletw   dw ?                                                ; 匹配的单词数cmdbuf   db 10 dup('$')                                      ; 模式选择框showbuf  db ExplLen dup('$')                                 ; 输入解释curp     db 0                                                ; 光标位置noword   db 'there is no such word in the data base$'shwords  dw MaxCntWord dup(?)                                ; 保存匹配的单词
showdata endsinputinit macroscroll 0, 0, 0, 0, 79, 0e0h, u        ;; 单词输入框curse  0, 0
endmexplinit macroscroll 0, 1, 0, 17, 79, 0f1h, u        ;; 解释显示框curse  1, 0
endmcmdinit macroscroll 0, 18, 0, 18, 79, 0b0h, u        ; 命令输入框curse  18,0
endmstack segment stackdw 1024  dup(0)
stack endscode segmentassume     cs:code, ds:data, es:showdata, ss:stackstart:        ; set segment registers:mov        ax, datamov        ds, axmov        ax, showdatamov        es, axcall       init                                               ; 读入单词inputinitexplinitcmdinitcurse      0, 0get1:         lea        ax, inputbufmov        si, axmov        cx, 30                                             ; 置一行字符数get2:         mov        ah, 0                                              ; 等待输入int        16hcmp        al, 1bh                                            ; 是否为 esc 键?jz         exit                                               ; 是,退出cmp        al, 'a'                                            ; 输入单词,只允许输入字母jc         nextincmp        al, 'z'ja         nextindispin:       mov        [si], alinc        simov        ah, 0eh                                            ; 显示输入的字符int        10Hpush       cxmov        ah, 03h                                            ; 获取光标位置mov        bh, 0int        10hpush       dx                                                 ; 保存光标位置call       matchpop        dx                                                 ; 恢复光标位置mov        bh, 0mov        ah, 2int        10hpop        cxloop       get2nextin:       cmp        al, 0dh                                            ; 按下回车选中第一个单词,进入单词查询、修改jnz        nextin1call       opwordinputinit                                                     ; 清空输入框输入下一个单词loop       get1nextin1:      inc        cx                                                 ; 输入的不是字母或回车,重新输入这一位loop       get2inputinitcall       inputbufclearjmp        get1                                               ; 超过 30 个字母重新输入exit:         scroll     0,0,0,24,79,7                                      ; 清屏mov        ax, 4c00h                                          ; exit to operating system.int        21hinit proc                                                                           ; 初始化lea        dx, filenamemov        ah, 3dhmov        al, 00hmov        cx, 00hint        21h                                                ; 打开文件cmp        cx, 0jnz        notfile                                            ; 打开失败mov        readptr, ax                                        ; 保存文件标识lea        dx, wordsmov        cx, WordNumlop1:         mov        adr, dxcall       readwordpush       dxcall       adjustadd        dx, type worddatainc        cntword                                            ; 计数loop       lop1jmp        returnnotfile:      mov        ax, cxlea        dx, errmov        ah, 09hint        21hreturn:       mov        ah, 3ehmov        bx, readptrint        21hret
init endpreadword proc                                                                       ; 读入一个单词的内容,通过 adr 传递参数irp        regad, <ax, bx, cx, dx, si, di>push       regad
endmmov        ax, adrmov        si, axreadline   [si].wnamereadline   [si].explainreadline   [si].synreadline   [si].oppirp        regad, <di, si, dx, cx, bx, ax>pop        regad
endmret
readword endpcmpstr proc                                                                         ; 比较两个字符串的字典序, 通过堆栈传递参数,cl 返回结果irp        regad, <ax, bx, dx, si, di, bp, es>push       regad
endmmov        bp, spadd        bp, 16mov        di, [bp]add        bp, 2mov        si, [bp]mov        ax, datamov        es, axmov        cx, WordMaxLencldrepe       cmpsbmov        cl, [si - 1]                                       ; 计算放回值,通过两个不同的位置相减得到sub        cl, es:[di - 1]irp        regad, <es, bp, di, si, dx, bx, ax>pop        regad
endmret        4
cmpstr endpexchangeword proc                                                                   ; 交换两个单词的位置,通过堆栈传递两个单词的地址irp        regad, <ax, bx, cx, dx, si, di, bp, es>push       regad
endmmov        bp, spadd        bp, 18mov        ax, [bp]mov        si, axadd        bp, 2mov        ax, [bp]mov        di, axmov        ax, datamov        es, axmov        cx, type worddataxchglop:      mov        al, [si]                                           ; 按字节交换单词xchg       al, es:[di]xchg       al, [si]inc        siinc        diloop       xchglopirp        regad, <es, bp, di, si, dx, cx, bx, ax>pop        regad
endmret        4
exchangeword endpadjust proc                                                                         ; 调整单词的位置,通过堆栈传递单词地址irp        regad, <ax, bx, cx, dx, si, di, bp, es>push       regad
endmmov        bp, spadd        bp, 18mov        dx, [bp]mov        ax, dxsub        ax, type worddataadjlop:       cmp        dx, offset wordsjz         adjret                                             ; 如果在第一个位置返回push       dxpush       axcall       cmpstr                                             ; 和上一个字符串比较test       cl, 80h                                            ; 判断比较结果,判断 cl 是否是负数jz         adjret                                             ; 如果大于 0 说明到达对应位置push       dxpush       axcall       exchangeword                                       ; 向前调整sub        dx, type worddatasub        ax, type worddatajmp        adjlopadjret:       irp        regad, <es, bp, di, si, dx, cx, bx, ax>pop        regad
endmret        2
adjust endpexpldisp proc                                                                       ; 通过堆栈传递需要输出的内容mov        bp, spadd        bp, 2push       simov        ax, [bp]mov        si, axexplinitmov        cx, 80                                             ; 一行 80 个字符dispscreencmp        al, '$'jz         showexplcurse      2, 0mov        cx, 80dispscreenshowexpl:     mov        dx, sipop        siret        2
expldisp endpcursep proccurse      2, 0ret
cursep endpexplainintip procexplinitret
explainintip endpcmd1 proccmp        al, 'e'jnz        cmd1retlea        ax, [si].explainpush       axcall       expldispmov        al, 0mov        flag, alcmd1ret:      ret
cmd1 endpcmd2 proccmp        al, 's'jnz        cmd2retlea        ax, [si].synpush       axcall       expldispmov        al, 0mov        flag, alcmd2ret:      ret
cmd2 endpcmd3 proccmp        al, 'o'jnz        cmd3retlea        ax, [si].opppush       axcall       expldispmov        al, 0mov        flag, alcmd3ret:      ret
cmd3 endpcmd4 procirp        regad, <ax, bx, cx, dx, si, di, es, ds>push       regad
endmcmp        al, 'w'jnz        cmd4retmov        al, 1                                              ; 上一步是修改解释则写入cmp        flag, aljnz        cmd4retmov        cx, 100lea        ax, [si].explainmov        di, axlea        ax, showbufmov        si, axmov        ax, esmov        bx, dsxchg       ax, bxmov        ds, bxmov        es, axcldrep        movsbmov        al, 0mov        flag, alcmd4ret:      irp        regad, <ds, es, di, si, dx, cx, bx, ax>pop        regad
endmret
cmd4 endpcmd5 procirp        regad, <ax, bx, cx, dx, si, di, es, ds>push       regad
endmcmp        al, 'd'jnz        cmd5retmov        ax, cntworddec        axmov        dx, type worddatamul        dxadd        ax, offset wordsmov        bx, simov        dx, bxadd        dx, type worddataswap:         cmp        bx, axjz         cmd5retpush       dxpush       bxcall       exchangewordadd        bx, type worddataadd        dx, type worddatajmp        swapcmd5ret:      dec        cntwordirp        regad, <ds, es, di, si, dx, cx, bx, ax>pop        regad
endmret
cmd5 endpinputinitp procinputinitdispscreenret
inputinitp endpcmdinitp proccmdinitret
cmdinitp endpinputbufclear procirp        regad, <ax, bx, cx, dx, si, di, es, ds>push       regad
endmmov        cx, WordMaxLen+1                                   ; 清空输入框的内容mov        ax, datamov        es, axlea        ax, inputbufmov        di, axmov        al, '$'cldrep        stosbirp        regad, <ds, es, di, si, dx, cx, bx, ax>pop        regad
endmret
inputbufclear endpopword proc                                                                         ; 对选中的单词进行操作irp        regad, <ax, bx, cx, dx, si, di, es>push       regad
endmmov        ax, es:[seletw]cmp        ax, 0jz         opretmov        ax, es:[shwords]mov        si, axpush       sicall       inputinitppop        sicall       explainintipwaitinput:    mov        ah, 0                                              ; 等待输入int        16hcmp        al, ':'inputcmd:     push       axjnz        waitinputcall       cmdinitppop        axmov        ah, 0ehint        10hmov        ah, 0                                              ; 等待输入int        16hmov        ah, 0ehint        10hcmp        al, 'q'                                            ; 退出当前单词的查询jz         opretcall       cmd1call       cmd2call       cmd3call       cmd4call       cmd5cmp        al, 'd'                                            ; 已经把当前单词删除直接退出jz         opretcmp        al, 'i'jnz        waitinputmov        al, 1                                              ; 设置为 1 表示修改mov        flag, almov        cx, 100mov        al, '$'                                            ; 清空输入缓存lea        dx, showbufmov        di, dxrep        stosblea        dx, showbufmov        di, dxcall       explainintipmov        cx, 80                                             ; 允许输入单词的长度为 80inputexp:     mov        ah, 0                                              ; 等待输入int        16hcmp        al, ':'                                            ; 遇到 : 表示输入解释结束,进入下一个命令jz         inputcmdmov        bh, 0mov        ah, 0ehint        10hstosbloop       inputexpjmp        waitinputopret:        call       cmdinitpcall       inputbufclear                                      ; 清空输入缓存call       explainintip                                       ; 清屏irp        regad, <es, di, si, dx, cx, bx, ax>pop        regad
endmret
opword endpmatch proc                                                                          ; 匹配单词irp        regad, <ax, bx, cx, dx, si, di, es, ds, bp>push       regad
endmmov        ax, 0mov        es:[seletw], axscroll     0, 1, 0, 17, 79, 0f0h, u                           ; 清屏curse      1,0mov        es:[curp], 1                                       ; 保存光标位置mov        cx, ds:[cntword]lea        ax, wordsmov        si, axlea        ax, inputbufmov        di, axmov        ax, datamov        es, axlop2:         push       cxpush       dipush       simov        cx, 30                                             ; 开始匹配repe       cmpsbmov        al, '$'                                            ; 遇到 $ 表达匹配成功cmp        al, es:[di - 1]jnz        notmatchpush       esmov        ax, showdatamov        es, axpop        bppop        sipush       sipush       bpmov        bx, es:[seletw]shl        bx, 1add        bx, offset shwords                                 ; 计算保存新的匹配单词的位置mov        ax, simov        es:[bx], ax                                        ; 保存单词的地址inc        es:[seletw]                                        ; 计数pop        esmov        cx, 30pop        si                                                 ; 取出当前单词的首地址push       sidispscreen                                                    ; 输出匹配的单词push       esmov        ax, showdata                                       ; 光标下移mov        es, axinc        es:[curp]                                          ; 光标下移curse      es:[curp], 0pop        esnotmatch:     pop        sipop        dipop        cxmov        ax, siadd        ax, type worddata                                  ; 匹配下一个单词mov        si, axloop       lop2push       esmov        ax, showdatamov        es,axmov        ax, 0cmp        es:[seletw], axpop        esjnz        matchretlea        ax, noword                                         ; 没有匹配到任何单词输出错误mov        si, axmov        ax, showdatamov        ds, axmov        cx, 80dispscreenmatchret:     irp        regad, <bp, ds, es, di, si, dx, cx, bx, ax>pop        regad
endmret
match endpcode endsend start ; set entry point and stop the assembler.

代码有些 bug 使用时可以自己测试修改。

单词文件

absent
not present, lacking, or not attending
missing
present
ambitious
having a strong desire for success, power, or wealth
aspiring
content
blind
lack of sight or insight
sightless
seeing
bound
obliged by law, morality, or contract
limited
unlimited
bourgeois
relating to the middle class or its values and attitudes
middle-class
proletarian
cavity
an empty space within a solid object or among layers
hollow
solid
conservative
inclined to preserve existing conditions, ideas, or institutions
traditionalist
progressive
decisive
resolute; determined to act in a particular way
firm
indecisive
divine
relating to deity or the supernatural; godlike
heavenly
earthly
empirical
based on experiment and observation alone, without using intuitions or theories
experimental
theoretical
fantastic
imaginatively appealing or amusing
bizarre
realistic
fitting
appropriate and suitable for a particular purpose or occasion
appropriate
inappropriate
gracious
characterized by kindness, courtesy, and generosity
kind
rude
grassy
covered with grass or resembling grass
verdant
barren
hoarse
rough or low in tone; not clear and ringing
gravelly
melodious
hostile
showing active dislike or enmity
unfriendly
friendly
icy
extremely cold or covered with ice
frosty
warm
inclusive
including everything within a specified category or boundary
comprehensive
exclusive
linear
of or relating to a line or lines
straight
nonlinear
luminous
emitting or reflecting light; glowing
bright
dark
main
most important or prominent; chief
principal
secondary
microscopic
too small to be seen by the unaided eye; requiring a microscope for examination
minute
macroscopic
neighbouring (or neighboring)
located close to someone or something else; adjacent
adjacent
distant
novel
new and different from what has been done or known before; original
original
familiar
optical
relating to the sense of sight or to light
visual
tactile
practicable
capable of being accomplished or put into practice; feasible
feasible
impractical
qualitative
concerned with qualities rather than quantities or measurements
nonquantitative
quantitative
regenerative
tending to reform or restore itself after injury or loss
restorative
destructive
rigorous
very strict and exacting; stern or severe
strict
lenient
senseless
lacking common sense or judgment; wildly foolish
foolish
sensible
smart
intelligent and well-informed; clever and able to make good judgments
intelligent
dumb
thorough
carried out carefully and completely; leaving no room for error or omission
complete
superficial
tiresome
making you feel tired or bored; annoying or difficult to deal with
annoying
pleasant
uncertain
not known or established; doubtful or not definite
unclear
certain
versatile
capable of doing many different things well; adaptable and flexible
adaptable
one-dimensional
vulgar
lacking in refinement or good taste; crude or offensive in language or behavior
rude
elegant
workpiece
an object that is being worked on or that is to be worked on; a piece of workmanship
project
tool
white
of the color of pure snow; having no color or no pigment; lacking normal color as a result of genetic defect or disease
pale
blac

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/37115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库原理之数据库基本概念

目录 前言 基本概念 数据库完整性 前言 今天我们来看看数据库的基本概念&#xff0c;帮助大家对数据库有一点点最基本的了解 基本概念 4个基本概念 数据data&#xff1a;描述事物的符号&#xff0c;数据库中存储的基本对象。 数据库Database&#xff1a;长期存储在计算机…

山东大学多核并行2024年回忆版

2024.6.13回忆版 矩阵向量乘不可整除代码 集合通信与点对点通信的区别 块划分、循环划分、循环块划分&#xff08;14个向量&#xff0c;4个进程&#xff09; 按行访问还是按列访问快 SISD系统问题 循环依赖问题 问题&#xff1a;为什么不能对这个循环并行化&#xff0…

Python逻辑控制语句 之 综合案例

需求&#xff1a; 1. 提示⽤户输⼊登录系统的⽤户名和密码 2. 校验⽤户名和密码是否正确(正确的⽤户名:admin、密码:123456) 3. 如果⽤户名和密码都正确&#xff0c;打印“登录成功!”&#xff0c;并结束程序 4. 如果⽤户名或密码错误&#xff0c;打印“⽤户名或密码错误!”…

Django 对模型创建的两表插入数据

1&#xff0c;添加模型 Test/app8/models.py from django.db import modelsclass User(models.Model):username models.CharField(max_length50, uniqueTrue)email models.EmailField(uniqueTrue)password models.CharField(max_length128) # 使用哈希存储密码first_name …

代码随想录算法训练营第一天 [300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组]

代码随想录算法训练营第一天 [300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组] **一、300.最长递增子序列 ** 链接: 代码随想录. 思路&#xff1a;dp[i] 以nums[i]为结尾的递增子序列最大长度&#xff0c;下标为i的数&#xff0c;需要和下标为0开始一直到下标为…

DM 的断点续传测试

作者&#xff1a; 大鱼海棠 原文来源&#xff1a; https://tidb.net/blog/4540ae34 一、概述 DM有all、full、incremental三种数据迁移同步方式&#xff08;task-mode&#xff09;&#xff0c;在all同步模式下&#xff0c;因一些特殊情况&#xff0c;需要变更上游MySQL的数…

LDO产品的基础知识解析

低压降稳压器 (LDO)是一种用于调节较高电压输入产生的输出电压的简单方法。在大多数情况下&#xff0c;低压降稳压器都易于设计和使用。然而&#xff0c;如今的现代应用都包括各种各样的模拟和数字系统&#xff0c;而有些系统和工作条件将决定哪种LDO最适合相关电路&#xff0c…

邓普顿的五大投资原则

在《逆向投资 邓普顿的长赢投资法》的推荐序《“逆向投资大神”邓普顿五大投资原则》中&#xff0c;刘建位总结了邓普顿的五大投资原则&#xff0c;分别是“以逆向投资为中心”“以价值投资为选股根本”“以分散投资为组合稳定器”“以全球投资来扩大机会池”“以极度悲观点投资…

rust单元测试顺序执行

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 存在的问题 有时候&#xff0c;不同单元测试之间可能会竞争相同的资源&#xff0c;比如读写相同的文件。在这种情况下&#xff0c;如果…

springboot的特点是什么?

Spring Boot是一个基于Spring框架的开源项目&#xff0c;它旨在简化Spring应用的初始搭建和开发过程。以下是Spring Boot的一些主要特点&#xff1a; 快速开发&#xff1a; Spring Boot提供了许多默认配置&#xff0c;使得开发者可以更快地开始开发应用程序&#xff0c;而无需…

秋招突击——6/28、6.29——复习{数位DP——度的数量}——新作{}

文章目录 引言复习数位DP——度的数量个人实现参考实现 总结 引言 头一次产生了那么强烈的动摇&#xff0c;对于未来没有任何的感觉的&#xff0c;不知道将会往哪里走&#xff0c;不知道怎么办。可能还是因为实习吧&#xff0c;再加上最近复习也没有什么进展&#xff0c;并不知…

Vmware Windows虚拟机卡死了

每次遇到这个问题我都想骂娘&#xff01;&#xff01;&#xff01;&#xff01; 这一次是怎么解决的呢&#xff1f; 解决&#xff1a;我给虚拟机连上网就好了&#xff01; 重启&#xff0c;开关机&#xff0c;一点用都没有。

前端 JS 经典:箭头函数的意义

箭头函数是为了消除函数的二义性。 1. 二义性 函数的二义性指函数有不同的两种用法&#xff0c;就造成了二义性&#xff0c;函数的两种用法&#xff1a;1. 指令序列。2. 构造器 1.1 指令序列 就是调用函数&#xff0c;相当于将函数内部的代码再从头执行一次。 1.2 构造器 …

【Linux 工具 】 tcpdump详细使用说明

目录 1. 安装 tcpdump 2. 使用 tcpdump 命令 3. 监听所有网络接口 4. 监听指定网络接口 5. 保存数据包到文件 6. 读取保存的数据包文件 7. 过滤数据包 过滤源 IP 地址: 过滤目标 IP 地址: 过滤源和目标 IP 地址: 过滤指定端口: 过滤指定协议: 8. 显示数据包详…

爬虫实战:使用PHP爬取携程旅游信息

随着旅游业的不断发展&#xff0c;旅游信息变得非常丰富。为了方便大家获取更全面、准确的旅游信息&#xff0c;我们可以使用爬虫来抓取旅游网站上的数据&#xff0c;并进行分析和处理。本文将介绍如何使用php爬取携程旅游信息。 爬虫基础知识 爬虫是一种自动化程序&#xff…

Android SurfaceFlinger——OpenGL ES基础介绍(十二)

前面的文章我们介绍了 HWC,知道他在 Android 系统中用于硬件加速屏幕合成的一个组件。负责将多个 Surface(包括那些可能通过 OpenGL ES 渲染的内容)合成到一起,并输出到屏幕。HWC 利用底层硬件(如 GPU)来执行合成操作,减少 CPU 的负担,提高效率和电池寿命。 一、概述 …

如何借助 LLM 设计和实现任务型对话 Agent

1 引言 在人工智能的快速发展中&#xff0c;任务型对话 Agent 正成为提升用户体验和工作效率的关键技术。这类系统通过自然语言交互&#xff0c;专注于高效执行特定任务&#xff0c;如预订酒店或查询天气。尽管市场上的开源框架如 Rasa 和 Microsoft Bot Framework 在对话理解…

【笔记】一些PDN建立成功后返回的IP地址情况及日志分析

背景 Protocol满足运营商需求,即便是PDN的通的,也可能因为网络问题导致MMS、热点等业务无法正常工作。(丢包?网络无响应?服务器异常) 或者Protocol跟运营商需求不一致,直接SETUP_DATA_CALL失败了。 一般而言,如果APN Protocol 参数配置不符合运营商要求,在 PDN 建立…

正则表达式结合自定义function使用replace

replace使用正则表达式和function替换 js代码 html代码 场景描述 输入不同数量的人名&#xff0c;根据不同的人数打印不同的描述 代码分析 首先在js代码中使用templates定义了5个模板&#xff0c;通过 var idx Math.min(names.length, 4)根据人数获取对应的模板的索引&…

tqdm库教程 - 进度条可视化利器

tqdm库教程 - 进度条可视化利器 1. 什么是tqdm?2. tqdm的基本用法3. tqdm的高级用法3.1 自定义描述3.2 手动更新进度条3.3 在文件处理中使用tqdm 4. tqdm的其他特性4.1 嵌套进度条4.2 在Jupyter Notebook中使用 5. 总结 1. 什么是tqdm? tqdm是一个Python库,用于在循环或长时…