React学习笔记 001

news2025/6/21 3:52:22

什么是React

1.发送请求获取数据

  1. 处理数据(过滤、整理格式等)

3.操作DOM呈现页面

react 主要是负责第三部 操作dom 处理页面

数据渲染为HTML视图的开源js库。

好处

避免dom繁琐
组件化 提升复用率

特点

声明式编程: 简单
组件化编程: 服用
react native 可以通过js 进行移动端开发。
虚拟DOM + Diffing算法, 减少和真实DOM交互。

前提知识

this指向
class类
ES6语法: 箭头函数, 浏览字符串,解构赋值
npm包管理器
原型, 原型链
数组常用方法
模块化

什么是npm包管理工具
https://blog.csdn.net/qq_25502269/article/details/79346545

官网

https://reactjs.org/

核心库

react.development.js react核心库
react-dom.development.js 扩展库
babel.min.js 负责 jsx 转js

引用时,核心库 必须 在 扩展库 之前引入

虚拟DOM 和 真实DOM区别

真实DOM 实际结构
虚拟DOM 设计图

真实 DOM: 真实 DOM 相当于房子的实际结构,包括砖墙、木梁、水管、电线等。如果你想要更改房子的结构或者添加新的功能,你需要直接去建筑工地,这可能会涉及到大量的人力和时间。每次做出更改,都会影响整个房子的状态。

虚拟 DOM: 现在,假设你有一份精确的房屋设计图,上面显示了房子的每个房间的详细布局和所有的设计规格,但并不是实际的建筑物。这份设计图相当于虚拟 DOM。你可以在设计图上轻松地进行修改和实验,而不用实际动工。你可以添加新的房间、更改房间的布局,甚至尝试不同的颜色和装饰方案。

更新房子: 一旦你在设计图上满意地调整了房子的布局和设计,你可以将这份设计图交给建筑工人,让他们按照设计图来建造实际的房子。这相当于虚拟 DOM 更新到真实 DOM 的过程。与直接在建筑工地上进行修改相比,这种方法更加高效,因为你可以在设计图上进行多次修改,然后一次性应用到实际建筑中,而不必每次都动工。

XML 和 JSON 两种存储结构存储数据

在这里插入图片描述

JSON 两个核心方法 parse 和 stringfy

parse

{
  "name": "John Doe",
  "age": 30,
  "city": "New York"
}
const jsonString = '{"name": "John Doe", "age": 30, "city": "New York"}';
const person = JSON.parse(jsonString);

console.log(person.name); // 输出 "John Doe"
console.log(person.age); // 输出 30
console.log(person.city); // 输出 "New York"

stringfy

const person = {
  name: "John Doe",
  age: 30,
  city: "New York"
};
const jsonString = JSON.stringify(person);

console.log(jsonString);
// 输出 '{"name":"John Doe","age":30,"city":"New York"}'

hello world

JS 实现

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>hello_react</title>
</head>
<body>
<!-- 准备好一个“容器” -->
<div id="test"></div>
<div id="demo"></div>
<!-- 引入react核心库 -->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- 引入react-dom,用于支持react操作DOM -->
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<!-- 引入babel,用于将jsx转为js -->
<script type="text/javascript" src="../js/babel.min.js"></script>

<script type="text/babel">/* 此处一定要写babel */
//1.创建虚拟DOM
const VDOM = <h1>Hello,React</h1>/* 此处一定不要写引号,因为不是字符串 */
//2.渲染虚拟DOM到页面
ReactDOM.render(VDOM, document.getElementById('test'))
var TDOM = document.getElementById('demo');
console.log('虚拟DOM', VDOM)
console.log('真实DOM', TDOM)
debugger;


</script>
</body>
</html>

React实现

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>hello_react</title>
</head>
<body>
<!-- 准备好一个“容器” -->
<div id="test"></div>

<!-- 引入react核心库 -->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- 引入react-dom,用于支持react操作DOM -->
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<!-- 引入babel,用于将jsx转为js -->
<script type="text/javascript" src="../js/babel.min.js"></script>

<script type="text/babel">/* 此处一定要写babel */
//1.创建虚拟DOM
const VDOM = <h1>Hello,React</h1>/* 此处一定不要写引号,因为不是字符串 */
//2.渲染虚拟DOM到页面
ReactDOM.render(VDOM, document.getElementById('test'))
</script>
</body>
</html>

JSX语法规则

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JSX syntax rules</title>
    <style>
        .title{
            background-color: orange;
            width: 200px;
        }

    </style>
</head>
<body>
    <!-- container -->
    <div id="test"></div>

    <script type="text/javascript" src="../js/react.development.js"></script>
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <script type="text/javascript" src="../js/babel.min.js"></script>

    <script type="text/babel">
        
        const myId = "aTgUiGu"
        const myData = 'HeLlo,rEacT'

        // create virtual DOM
        const VDOM = (
            <div>
            <h2 className="title" id={myId.toLowerCase()}>
                <span style={{color:'white', fontSize:'29px'}}>{myData.toLowerCase()}</span>
                </h2>
            <input type="text"/>
            </div>
        )
        // render the DOM to pagea
        ReactDOM.render(VDOM, document.getElementById('test'))

        /**
         * Jsx syntax rules:
            1. when define the virtual D0M, do not write quotation marks.
            2. Use {} when mixing JS expressions into the label.
            3. 样式的类名指定不要用class,要用className。
            4. 内联样式,要用style={{key:value)}}的形式去写。
            5. 只有一个根标签
            6. 标签必须闭合
            7.标签首字母
                (1). 若小写字母开头,则将改标签转为htm1中同名元素,若html中无该标签对应的同名元素,则报错。
                (2). 若大写字母开头,react就去渲染对应的组件, 若组件没有定义,则报错。
        */
        </script>
</body>
</html>

模块化

模块化是按功能开发 组件是按区域开发

模块

向外提供特定功能的js 程序,一般就是一个js文件

组件

用来实现局部功能效果的代码和资源的集合(html/css/js/image 等等)

React面向组件编程

安装react调试工具
https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi

函数式组件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">

        class Person{
            constructor(name, age) {
            this.name = name
            this.age = age
            }

            speak(){
                // 通过Person实例调用speak时,speak中的this就是Person实例
                console.log(`I am ${this.name},I am ${this.age}`)
            }
        }


        class Student extends Person{
            constructor(name,age,grade){
                super(name, age)
                this.grade = grade
            }

            speak(){
                console.log(`I am ${this.name},I am ${this.age}, I am ${this.grade}`)
            }

            study(){
                console.log('I am study hard')
            }
        }

        const p1 = new Person('TOM', 18)
        const p2 = new Person('Jerry', 19)

        const c1 = new Student('zs', 12, 'First year of high school')
        
        console.log(p1);
        console.log(p2);
        console.log(c1);
        p1.speak()
        p2.speak()

        c1.speak()
        c1.study()

    </script>
</body>
</html>

简单组件和复杂组件的区别 state

组件实例三大核心属性

state

state 是组件对象最重要的属性,值是对象(可以包含多个 key-value 的组合)
组件被称为“状态机“通过更新组件的state 来更新对应的页面显示(重新渲染组件)

  1. 组件中 render 方法中的 this 为组件实例对象

  2. 组件自定义的方法中 this 为 undefined,如何解决?

    a. 强制绑定 this:通过函数对象的 bind()
    b. 箭头函数

  3. 状态数据,不能直接修改 or 更新,必须借助 setState()实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Class-defined Component</title>
</head>
<body>
    <!-- 准备好一个“容器” -->
    <div id="test"></div>
    <!-- 引入React核心库 -->
    <script type="text/javascript" src="../js/react.development.js"></script>
    <!-- 引入React DOM,用于支持React操作DOM -->
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <!-- 引入Babel,用于将JSX转为JS -->
    <script type="text/javascript" src="../js/babel.min.js"></script>

    <script type="text/babel"> /* 此处一定要写babel */

        // 1. 创建类组件
        class Weather extends React.Component {
            
            constructor(props){
                super(props)
                this.state = {isHot:true, wind:"breeze"}
                this.changeWeather = this.changeWeather.bind(this)
            }

            changeWeather(){

            // 状态必须通过setstate进行更新,且更新是一种合并,不是替换。
            const isHot = this.state.isHot
            this.setState({isHot: !isHot})
            this.state.isHot;
            // console.log('title was clicked')
            console.log(this.state)
        }
            //render调用几次? 1+n次 1是初始化的那次 n是状态更新的次数
            render() {
                // console.log(this)
                const {isHot, wind} = this.state// read the state
                return <h1 onClick={this.changeWeather}>Today is {isHot ? 'so hot' : "so cool"},{wind}</h1>;
            }
        }
        // 渲染
        ReactDOM.render(<Weather/>, document.getElementById('test'));
   
        // alt + shift + a 多行注释
/*         const title = document.getElementById('title')
        title.addEventListener('click',()=>{
            console.log('title was clicked')
        }) */

/*         const title = document.getElementById('title')
        title.onclick = ()=>{
            console.log('title was clicked')
        } */
 

   </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Class-defined Component</title>
</head>
<body>
    <div id="test"></div>
    <script type="text/javascript" src="../js/react.development.js"></script>
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <script type="text/javascript" src="../js/babel.min.js"></script>
    <script type="text/babel"> 

        // 创建组件
        class Weather extends React.Component {
            constructor(props){
                super(props)
                // this.changeWeather = this.changeWeather.bind(this)
            }
            // 初始化状态
            state = {isHot:true, wind:"breeze"}
            
            // 自定义方法-----要用赋值语句形式 + 箭头函数
            changeWeather = ()=>{
            const isHot = this.state.isHot
            this.setState({isHot: !isHot})
            }
            render() {
                const {isHot, wind} = this.state
                return <h1 onClick={this.changeWeather}>Today is {isHot ? 'so hot' : "so cool"},{wind}</h1>;
            }
        }
        ReactDOM.render(<Weather/>, document.getElementById('test'));
   </script>
</body>
</html>

prop

每个组件对象都会有 props(properties 的简写)属性

组件标签的所有属性都保存在 props 中

通过标签属性从组件外向组件内传递变化的数据注意:
组件内部不要修改 props 数据

使用

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>class-defined component</title>
</head>
<body>
<!-- 准备好一个“容器” -->
<div id="test1"></div>
<div id="test2"></div>
<div id="test3"></div>
<!-- 引入react核心库 -->
<script type="text/javascript" src="../js/react.development.js"></script>
<!-- 引入react-dom,用于支持react操作DOM -->
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<!-- 引入babel,用于将jsx转为js -->
<script type="text/javascript" src="../js/babel.min.js"></script>
<!-- 引入 prop-types, 用于对组件标签属性进行限制 -->
<script type="text/javascript" src="../js/prop-types.js"></script>
<script type="text/babel">/* 此处一定要写babel */

    class Person extends React.Component{

        static propTypes = {
        name:PropTypes.string.isRequired, // 限制为string类型
        sex:PropTypes.string,
        age:PropTypes.number,
        speak:PropTypes.func, // 限制函数
        }

        static defaultProps = {
            sex:"不男不女",
            age:18
        }


        // state = {name: 'tom',age:18, sex:'female'}
        render(){
            const {name, age, sex} = this.props;
            return (
                <ul>
                    <li>name: {name}</li>
                    <li>gender: {sex}</li>
                    <li>age: {age + 100}</li>
                    </ul>
            )
        }
    }

    // Person.propTypes = {
    //     name:PropTypes.string.isRequired, // 限制为string类型
    //     sex:PropTypes.string,
    //     age:PropTypes.number,
    //     speak:PropTypes.func, // 限制函数
    // }

    // Person.defaultProps = {
    //     sex:"不男不女",
    //     age:18
    // }

    // 这里name不填会有警告
    ReactDOM.render(<Person  age={21} sex="female"/>,document.getElementById('test1'))
    ReactDOM.render(<Person name="joe2" />,document.getElementById('test2'))
    // ReactDOM.render(<Person name="joe3" age="23" sex="female"/>,document.getElementById('test3'))
    
    const p = {name:'joe3', age:11, sex:'female'}
    ReactDOM.render(<Person {...p}/>, document.getElementById("test3"))
    </script>
</body>
</html>

拓展知识

展开运算符

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        let arr1 = [1,3,5,7,9]
        let arr2 = [2,4,6,8,10]

        console.log(...arr1) // 展开数组

        let arr3 = [...arr1, ...arr2] // 连接数组
        console.log(...arr3)
        

        // function sum(...numbers){
        //     console.log('@',numbers)
        //     return a + b + c
        // }
        
        // 在函数中使用
        function sum(...numbers) {
            return numbers.reduce((preValue, currentValue)=>{
                return preValue + currentValue
            })
        }
        console.log(sum(1,2,3,4))


        let person = {name:'tom',age:18}
        let person2 = {...person} // 复制一个对象,深度复制
        // console.log(...person);//报错,展开运算符不能展开对象
        
        let person3 = {...person,name:'jack',address:'us'}
        console.log(person3) // 复制同时,修改对象
        
    </script>
</body>
</html>

refs

最旧版本使用refs
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ref string type</title>
</head>
<body>
    <div id="test"></div>
    <script type="text/javascript" src="../js/react.development.js"></script>
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <script type="text/javascript" src="../js/babel.min.js"></script>
    <script type="text/babel"> 

        // 创建组件
        class Demo2 extends React.Component {

        showData = ()=>{
            // const input = document.getElementById('input1')
            // alert(input.value)
            const {input1} = this.refs
            alert(input1.value)
            // console.log(input1);
            // debugger;
        }

        showData2 = ()=>{
            const {input2} = this.refs
            alert(input2.value)
        }

        render() {
            return (
            <div>
                <input ref="input1"
                type="text" 
                placeholder="prompt data" />
                <button ref="123"
                onClick={this.showData}>prompt data</button>
                &nbsp;
                <input ref="input2"
                onBlur={this.showData2}
                type="text" placeholder="lose data" />
                <button>lose prompt</button>
            </div>
            );
        }
        } 
        ReactDOM.render(<Demo2/>, document.getElementById('test'));
   </script>
</body>
</html>





回调函数

1.你定义的函数
2.你没有调用
3.这个函数最终被别人调用了

新版本ref的使用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ref string type</title>
</head>
<body>
    <div id="test"></div>
    <script type="text/javascript" src="../js/react.development.js"></script>
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <script type="text/javascript" src="../js/babel.min.js"></script>
    <script type="text/babel"> 



   </script>
</body>
</html>




React官方推荐ref用法
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ref string type</title>
</head>
<body>
    <div id="test"></div>
    <script type="text/javascript" src="../js/react.development.js"></script>
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <script type="text/javascript" src="../js/babel.min.js"></script>
    <script type="text/babel"> 

    class Demo extends React.Component{
        
        state = {isHot:true}

        myRef = React.createRef()
        myRef2 = React.createRef()

        showInfo = ()=>{
            alert(this.myRef.current.data)
        }
        
        showData = ()=>{
            alert(myRef2.current.value)
        }

        changeWeather = ()=>{

            //get state
            const {isHot} = this.state

            this.setState({isHot:!isHot})
        }

        saveInput = (c)=>{
            this.input1 = c;
            console.log("@", c);
        }

        render(){
            const {isHot} = this.state
            return ( 
            <div>
                <h2>Today is {isHot ? "Hot" : "Cold"}</h2>
       
                <input
                ref={this.myRef}
                    type="text"
                />
                <button
                onClick={this.showInfo}
                >click me</button>

                <button
                onClick={this.changeWeather}
                >change weather</button>

                <input
                    onBlur={this.showData}
                    ref={this.myRef2}
                    type="text"
                    palceholder="lose focus"
                />
            </div>
            );
        }
    }

    ReactDOM.render(<Demo/>, document.getElementById('test'));
   </script>
</body>
</html>




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

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

相关文章

【Java学习之道】常用类库与工具

引言 Java类库是Java编程语言的一个重要组成部分&#xff0c;是Java程序员日常工作的必备工具。类库不仅提供了许多现成的、可直接使用的功能&#xff0c;还帮助我们简化了编程过程。 一、什么是Java类库 Java 类库是指由 Java 开发者社区共同维护和开发的一系列类和接口&am…

【从0开发】百度BML全功能AI开发平台【实操:以部署情感分析模型为例】

目录 一、全功能AI开发平台介绍二、AI项目落地应用流程&#xff08;以文本分类为例&#xff09;2-0、项目开始2-1、项目背景2-2、数据准备介绍2-3、项目数据2-4、建模调参介绍2-5、项目的建模调参2-6、开发部署2-7、项目在公有云的部署 附录&#xff1a;调用api代码总结 一、全…

Apache Doris (四十一): RESOTRE数据恢复

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. RESTORE数据恢复原理

④. GPT错误:导入import pandas as pd库,存储输入路径图片信息存储错误

꧂ 问题最初꧁ 用 import pandas as pd 可是你没有打印各种信息input输入图片路径 print图片尺寸 大小 长宽高 有颜色占比>0.001的按照大小排序将打印信息存储excel表格文件名 表格路径 图片大小 尺寸 颜色类型 占比信息input输入的是文件就处理文件 是文件夹&#x1f4c…

Centos7安装Gitlab--gitlab--ee版

1 安装必要依赖 2 配置GitLab软件源镜像 3 下载安装GitLab 4 查看管理员root用户默认密码 5 登录GitLab 6 修改密码 7 gitlab相关命令 1 安装必要依赖 sudo yum install -y curl policycoreutils-python openssh-server perl sudo systemctl enable sshd sudo systemctl sta…

Macos音乐制作:Ableton Live 11 Suite for Mac中文版

Ableton Live 11是一款数字音频工作站软件&#xff0c;用于音乐制作、录音、混音和现场演出。它由Ableton公司开发&#xff0c;是一款极其流行的音乐制作软件之一。 以下是Ableton Live 11的一些主要特点和功能&#xff1a; Comping功能&#xff1a;Live 11增加了Comping功能…

Delphi 生成包含图片的 HTML 文件并使用 Edge 浏览器打开

在 Delphi 中&#xff0c;可以使用以下代码生成包含图片的 HTML 文件&#xff0c;并使用 Edge 浏览器打开该文件。 procedure GenerateHTMLWithImageAndOpenWithEdge; varOpenDialog: TOpenDialog;HTMLFileName: string;HTMLContent: TStringList; beginOpenDialog : TOpenDi…

万字长文带你了解 CloudOps 自动化运维的奥秘,助力云上业务高效稳定运行

云布道师 为了更好地帮助用户提升云上 DevOps 实践效率&#xff0c;缩短开发周期提升业务效率的同时&#xff0c;也能让业务保持稳定、安全、可靠&#xff0c;且低成本地持续运营&#xff0c;阿里云弹性计算团队独家出品的【弹性计算技术公开课_CloudOps 云上运维季】正式启动。…

【C++初阶】前言——C++的发展简述及学习方法分享

主页点击直达&#xff1a;个人主页 我的小仓库&#xff1a;代码仓库 C语言偷着笑&#xff1a;C语言专栏 数据结构挨打小记&#xff1a;初阶数据结构专栏 Linux被操作记&#xff1a;Linux专栏 LeetCode刷题掉发记&#xff1a;LeetCode刷题 算法&#xff1a;算法专栏 C头…

基于轩禹秒杀ctfshow-RSA

目录 babyrsa easyrsa1 easyrsa2 easyrsa3 easyrsa4 easyrsa5 easyrsa6 RSA算法是一种非对称加密算法&#xff0c;与对称加密算法不同的是&#xff0c;RSA算法有两个不同的密钥&#xff0c;一个是公钥&#xff0c;一个是私钥。 CTF中常见的有&#xff1a;广播攻击、共…

理解线程池源码 【C++】面试高频考点

理解线程池 C 文章目录 理解线程池 C程序源码知识点emplace_back 和 push_back有什么区别&#xff1f;互斥锁 mutexcondition_variablestd::move()函数bind()函数join 函数 线程池的原理就是管理一个任务队列和一个工作线程队列。 工作线程不断的从任务队列取任务&#xff0c;然…

JDBC加载.properties文件的两种方式

maven项目 读resources下文件 也可以 也可以用ResouseBundle 对于ClassLoader这种方式,测试ok,但是打成war包部署到服务器,可能出现问题,什么原因不知道,以后来写

第十三更---程序员常用网站一览

今天聊点题外话。大家都在那里查找资料呢&#xff0c;如今的资源网站太多了&#xff0c;眼花缭乱。今天我把一些常见的平台罗列一下 大家还有什么宝藏网站的话多多评论区分享吧 目录 一.CSDN 二.掘金 三.菜鸟教程 四.MDN 五.牛客 六.博客园 七.b站 八.微信读书 一.CSD…

SNAP处理数据C盘越用越小,Datatype out of range报错

SNAP处理数据C盘越用越小&#xff0c;Datatype out of range报错 问题描述 SNAP处理的影像比较多了之后&#xff0c;占用C盘临时存储空间&#xff0c;在做处理时&#xff0c;一直报错Datatype out of range 原因 临时存储不够了&#xff0c;需要释放一下之前的空间。 解决…

网络-navigator.sendBeacon

文章目录 前言一、navigator.sendBeacon是什么&#xff1f;优点缺点 二、navigator.sendBeacon应用场景三、navigator.sendBeacon的使用四、用户停留时间埋点总结 前言 本文主要记录navigator.sendBeacon异步请求的使用&#xff0c;以及应用场景和埋点小demo。 一、navigator.…

Xray联动burp进行渗透测试

与 Burp 联动 - xray 安全评估工具文档 这是Xray的官方文档 Xray的被动扫描发送的流量比较小&#xff0c;Xray可以联动burp suite 使用&#xff0c;将burp抓到的包发给Xray&#xff0c;我们只需要配置好代理一直点就行&#xff0c;然后查看渗透测试报告 xray_windows_amd64.e…

YOLOv5算法改进(3)— 注意力机制介绍(ECA、SOCA和SimAM)

前言:Hello大家好,我是小哥谈。注意力机制是近年来深度学习领域内的研究热点,可以帮助模型更好地关注重要的特征,从而提高模型的性能。注意力机制可被应用于模型的不同层级,以便更好地捕捉图像中的细节和特征,这种模型在计算资源有限的情况下,可以实现更好的性能和效率。…

vulnhub_Fowsniff靶机渗透测试

Fowsniff靶机 靶机地址&#xff1a;https://www.vulnhub.com/entry/fowsniff-1,262/ 文章目录 Fowsniff靶机信息收集web渗透密码碰撞POP3邮件服务器渗透获取权限权限提升靶机总结 信息收集 通过nmap扫描&#xff0c;靶机开放22 80 110 143端口&#xff0c;110是pop3邮件服务…

京东运营数据分析:2023年8月京东宠物主粮行业品牌销售排行榜

鲸参谋监测的京东平台8月份宠物主粮市场销售数据已出炉&#xff01; 随着养宠人群的逐渐增多&#xff0c;宠物经济规模也进一步庞大。宠物生活市场中&#xff0c;宠物主粮作为养宠人群的刚需品&#xff0c;其市场规模也在进一步扩大。鲸参谋数据显示&#xff0c;今年8月份&…

如何将中文翻译成日语:文件批量重命名的有效方法

随着全球化的发展&#xff0c;多语言交流变得越来越重要。在许多情况下&#xff0c;我们需要将中文文件翻译成日语&#xff0c;以便更好地进行国际交流。在这个过程中&#xff0c;文件重命名是一种非常有效的技巧&#xff0c;可以帮助我们更快、更准确地完成翻译任务。本文将介…