SpringBoot+Vue全栈开发-刘老师教编程(b站)(三)

vue框架快速上手

1.导入vue的脚本文件
2.声明要被vue所控制的DOM区域
3.创建vue的实例对象


1.基本用法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    //1.导入vue的脚本文件
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    //2.声明要被vue所控制的DOM区域
    <div id="app">
        {{message}}
    </div>
    //3.创建vue的实例对象
    <script>
        Vue.createApp({
          data() {
            return {
              message: 'Hello Vue!'
            }
          }
        }).mount('#app')
      </script>
    
</body>
</html>

2.内容渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <div id="app">
        <p>姓名:{{username}}</p>
        <p>{{desc}}</p>
        <p v-html="desc"></p>
    </div>
    <script>
        const vm={
            data:function(){
                return{
                    username:'zhangshan',
                    desc:'<a href="http://www.baidu.com">百度</a>'
                }
            }
        }
        const app=Vue.createApp(vm)
        app.mount('#app')
    </script>
    
</body>
</html>

运行结果:
请添加图片描述
3.属性绑定指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <div id="app">
        <a :href="link">百度</a>
        <input type="text" :placeholder="inputValue">
        <img :src="imgSrc" :style = "{width:w}" alt="">
    </div>
    <script>
        const vm = {
            data: function(){
                return{
                    link:"http://www.baidu.com",
                    inputValue:'请输入内容',
                    imgSrc:'./images/demo.png',
                    w:'500px'
                }
            }
        }
        const app = Vue.createApp(vm)
        app.mount('#app')
    </script>
</body>
</html>

运行结果:请添加图片描述
4.使用JavaScript表达式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <div id = "app">
        <p>{{number + 1}}</p>
        <p>{{ok ? 'True' : 'False'}}</p>
        <p>{{message.split('').reverse().join('')}}</p>
        <p :id="'list-' + id">xxx</p>
        <p>{{user.name}}</p>
    </div>
    <script>
        const vm = {
            data: function(){
                return {
                    number: 9,
                    ok: false,
                    message: 'ABC',
                    id: 3,
                    user:{
                        name:'zs'
                    }
                }
            }
        }
        const app = Vue.createApp(vm)
        app.mount('#app')
    </script>
</body>
</html>

运行结果:
请添加图片描述
5.事件绑定指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <div id = "app">
        <h3>count 的值为:{{count}}</h3>
        //原生onclick封装成 v-on:click,v-on:和@等价
        <button v-on:click="addCount">+1</button>
        <button @click="count+=1">+1</button>
    </div>
    <script>
        const vm ={
            data :function(){
                return{
                    count: 0,
                }
            },
            methods:{
            //点击按钮,让count自增+1
                addCount(){
                    this.count += 1
                },
            },
        }
        const app = Vue.createApp(vm)
        app.mount("#app")

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

运行结果:请添加图片描述
6.条件渲染指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <div id="app">
    <button @click="flag = !flag">Toggle Flag</button>
    //如果flag值为false,v-if和v-show都不显示,但是区别在于v-if标签不会被创建,v-show标签会被创建
    <p v-if="flag">请求成功----被v-if控制</p>
    <p v-show="flag">请求成功----被v-show控制</p>
    </div>
    <script>
        const vm = {
            data :function(){
                return{
                    flag:false,
                }
            }
        }
        const app = Vue.createApp(vm)
        app.mount("#app")
    </script>
    
</body>
</html>

运行结果:
请添加图片描述
7.列表渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <div id="app">
        <ul>
            <li v-for="(user, i) in userList">索引是:{{i}},姓名是:{{user.name}}</li>
        </ul>
    </div>
    <script>
        const vm = {
            data :function(){
                return {
                    userList:[
                        {id:1,name:'zhangsan'},
                        {id:2,name:'lisi'},
                        {id:3,name:'wangwu'}
                    ],
                }
            },
        }
        const app = Vue.createApp(vm)
        app.mount("#app")
    </script>
    
</body>
</html>

运行结果:请添加图片描述
8.v-for中的key

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3"></script>
</head>
<body>
    <div id="app">
        <!-- 添加用户区域 -->
        <div>
            <!-- v-model比起:value可以双向绑定,输入的值可以影响name -->
            <input type="text" v-model="name">
            <button @click="addNewUser">添加</button>
        </div>
        <!-- 用户列表区域 -->
        <ul>
            <li v-for="(user, index) in userlist" :key="user.id">
                <input type="checkbox"/>
                姓名:{{user.name}}
             </li>
        </ul>
    </div>
    <script>
        const vm = {
            data :function(){
                return{
                    //用户列表
                    userlist:[
                        {id:1,name:'zs'},
                        {id:2,name:'ls'}
                    ],
                    //输入用户名
                    name:'',
                    //下一个可用的id值
                    nextId:3
                }
            },
            methods:{
                //点击了添加按钮
                addNewUser(){
                    //unshift是在列表起初位置加进去
                    this.userlist.unshift({id: this.nextId,name:this.name})
                    this.name=''
                    this.nextId++
                }

            }

        }
        const app = Vue.createApp(vm)
        app.mount("#app")
    </script>
</body>
</html>

运行结果:
请添加图片描述

NPM简介

  • NPM(Node Package Manager)是一个NodeJS包管理和分发工具。
  • NPM以其优秀的依赖管理机制和庞大的用户群体,目前已经发展成为整个JS领域的依赖管理工具。
  • NPM最常见的用法就是用于安装和更新依赖。要使用NPM,首先要安装Node工具。

Vue CLl使用

  • Vue CLl是Vue官方提供的构建工具,通常称为脚手架
  • 用于快速搭建一个带有热重载(在代码修改后不必刷新页面即可呈现修改后的效果)及构建生产版本等功能的单页面应用。
  • Vue CLl基于 webpack 构建,也可以通过项目内的配置文件进行配置,安装:npm install -g @vue/cli

创建vue

创建条件:npm install -g @vue/cli(已经安装过,不用再次输入)
出现bug请添加图片描述

1.输入 vue create test1,出现下面,选择Manually select features

Vue CLI v5.0.8
? Please pick a preset: (Use arrow keys)
> Default ([Vue 3] babel, eslint)
  Default ([Vue 2] babel, eslint)
  Manually select features

2.出现下面,对 (* ) Linter / Formatter按下空格取消,回车

Vue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection, and
<enter> to proceed)
>(*) Babel
 ( ) TypeScript
 ( ) Progressive Web App (PWA) Support
 ( ) Router
 ( ) Vuex
 ( ) CSS Pre-processors
 ( ) Linter / Formatter
 ( ) Unit Testing
 ( ) E2E Testing

3.出现下面,选择3.x

Vue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel
? Choose a version of Vue.js that you want to start the project with (Use arrow keys)
> 3.x
  2.x

4.出现下面,选择> In package.json

Vue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel
? Choose a version of Vue.js that you want to start the project with 3.x
? Where do you prefer placing config for Babel, ESLint, etc.?
  In dedicated config files
> In package.json

5.出现下面,输入大写N

Vue CLI v5.0.8
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel
? Choose a version of Vue.js that you want to start the project with 3.x
? Where do you prefer placing config for Babel, ESLint, etc.? In package.json
? Save this as a preset for future projects? (y/N) N

请添加图片描述
6.创建成功

Vue CLI v5.0.8
✨  Creating project in D:\Vscode_workspace\test1.
⚙️  Installing CLI plugins. This might take a while...


added 857 packages in 34s

98 packages are looking for funding
  run `npm fund` for details
🚀  Invoking generators...
📦  Installing additional dependencies...


added 6 packages in 3s

98 packages are looking for funding
  run `npm fund` for details
⚓  Running completion hooks...

📄  Generating README.md...

🎉  Successfully created project test1.
👉  Get started with the following commands:

 $ cd test1
 $ npm run serve

请添加图片描述

vue组件开发

组件的构成

  • Vue 中规定组件的后缀名是.vue
  • 每个 .vue 组件都由 3部分构成,分别是
    1.template,组件的模板结构,可以包含HTML标签及其他的组件
    2.script,组件的JavaScript 代码
    3.style,组件的样式

新建组件

1.在components目录下新建一个Hello.vue
2.在App.vue的里添加 import Hello from ‘./components/Hello.vue’
3.在components:{}中添加注册 Hello
4.在添加标签

组件间的传值

  • 组件可以由内部的Data提供数据,也可以由父组件通过prop的方式传值
  • 兄弟组件之间可以通过Vuex等统一数据源提供数据共享。

数据title

<template>
    <div>
        <h1>{{ title }}</h1>
    </div>
</template>
<script>
export  default{
    name:"Movie",
    data:function(){
        return{
            title:"静冈1"
        }
    }
}
</script>

请添加图片描述
请添加图片描述
本机npm install element-ui 仅支持vue2版本,如果从网上下载了文件,先删除node_modules文件,然后在终端输入npm install就会自动生成node_modules文件

使用element-ui

1.先创建vue2的项目
2.输入npm install element-ui
3.在main.js中添加

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);   //全局注册

使用font-awesome

1.输入npm install font-awesome
2.在main.js中添加import 'font-awesome/css/font-awesome.min.css'
3.<i class="fa fa-address-book fa-1g">asf</i>所有样式前都要加上fa
4.使用 fa-lg (33%递增)、fa-2x、 fa-3x、fa-4x,或者 fa-5x 类 来放大图标。

Axios简介

  • 在实际项目开发中,前端页面所需要的数据往往需要从服务器端获取,这必然涉及与服务器的通信。
  • Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。
  • Axios 在浏览器端使用XMLHttpRequests发送网络请求,并能自动完成JSON数据的转换。
  • 安装:npm install axios
  • 地址:https://www.axios-http.cn/

发送网络请求

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • vue的生命周期:创建,加载,渲染,销毁
  • methods:{}里面是放自定义函数
  • created:function(){}这种跟生命周期相关的函数放在跟data:function(){}同级
created:function(){
    console.log("组件被创建")
  },
mounted:function(){
   console.log("组件被挂载")  //挂载就是渲染
},

请添加图片描述


使用axios

1.在终端输入npm install axios

2.在Hello.vue中添加import axios from 'axios'(哪里使用就在哪里加)
3.前端端口8080,后端端口改成server.port=8088
4.在App.vue添加下面代码,记得加上后端端口localhost:8088

created:function(){
    console.log("app组件被创建")
    axios.get("http://localhost:8088/user/findAll").then(function(response){
      console.log(response)
    })
  },

5.报错,该报错是跨域问题请添加图片描述
6.解决:在控制器加上@CrossOrigin
7.在Hello.vue添加

<template>
    <el-table :data="tableData" style="width: 100%" :row-class-name="tableRowClassName">
        <el-table-column prop="id" label="序号" width="180"></el-table-column>
        <el-table-column prop="username" label="姓名" width="180"></el-table-column>
        <el-table-column prop="password" label="密码" width="180"></el-table-column>
        <el-table-column prop="birthday" label="生日" width="180"></el-table-column>
    </el-table>
</template>
<script>
import axios from 'axios'

export default{
    name:"Hello",
    methods: {
      tableRowClassName({row, rowIndex}) {
        if (rowIndex === 1) {
          return 'warning-row';
        } else if (rowIndex === 3) {
          return 'success-row';
        }
        return '';
      }
    },
    created:function(){
      console.log("hello创建")
      axios.get("http://localhost:8088/user/findAll").then((response)=>{
        this.tableData = response.data
      })
    },
    data() {
      return {
        tableData: []
      }
    },


}
</script>
<style>
  .el-table .warning-row {
    background: oldlace;
  }

  .el-table .success-row {
    background: #f0f9eb;
  }
</style>

8.运行成功
请添加图片描述

axios全局配置

  • 就不用每个组件都要导入axios
    1.在main.js中加入
import axios from 'axios'
axios.defaults.baseURL = "http://localhost:8088"

Vue.prototype.$http = axios

2.Hello.vue中created:function(){}内容修改成

created:function(){
      this.$http.get("/user/findAll").then((response)=>{
        this.tableData = response.data
      })
    },

3.运行成功

为什么会出现跨域问题

  • 为了保证浏览器的安全,不同源的客户端脚本在没有明确授权的情况下,不能
    读写对方资源,称为同源策略,同源策略是浏览器安全的基石
  • 同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能
  • 所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)
  • 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域,此时无法读取非同源网页的 Cookie,无法向非同源地址发送 AJAX 请求

跨域问题解决

  • CORS(Cross-Origin Resource Sharing)是由W3C制定的一种跨域资源共享技术标准,其目的就是为了解决前端的跨域请求。
  • CORS可以在不破坏即有规则的情况下,通过后端服务器实现CORS接口,从而实现跨域通信。
  • CORS将请求分为两类:简单请求和非简单请求,分别对跨域通信提供了支持。

简单请求

满足以下条件的请求即为简单请求:

  • 请求方法:GET、POST、HEAD
  • 除了以下的请求头字段之外,没有自定义的请求头:
    Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type
  • Content-Type的值只有以下三种:
    text/plain、multipart/form-data、application/x-www-form-urlencoded

简单请求的服务器处理

  • 对于简单请求,CORS的策略是请求时在请求头中增加一个Origin字段
Host:localhost:8080
Origin:http://localhost:8081
Referer:http://localhost:8081/index.html
  • 服务器收到请求后,根据该字段判断是否允许该请求访问,如果允许,则在
    HTTP头信息中添加Access-Control-Allow-Origin字段。
Access-Control-Allow-0rigin:http://localhost:8081
Content-Length:20
Content-Type:text/plain;charset=UTF-8
Date:Thu,12 Jul 2018 12:51:14 GMT

非简单请求

  • 对于非简单请求的跨源请求,浏览器会在真实请求发出前增加一次OPTION请求,称为预检请求(preflight request)
  • 预检请求将真实请求的信息,包括请求方法、自定义头字段、源信息添加到HTTP头信息字段中,询问服务器是否允许这样的操作。
  • 例如一个GET请求:
OPTIONS /test HTTP/1.1
Origin:http://www.test.com
Access-Control-Request-Method:GET
Access-Control-Request-Headers:X-Custom-Header
Host:www.test.com
  • Access-Control-Request-Method表示请求使用的HTTP方法,Access- Control-Request-Headers包含请求的自定义头字段

  • 服务器收到请求时,需要分别对Origin、Access-Control-Request-Method、Access-Control-Request-Headers进行验证,验证通过后,会在返回HTTP头

  • 信息中添加:

Access-Control-Allow-0rigin:http://www.test.com
Access-Control-A1low-Methods:GET,POST,PUT,DELETE
Access-Control-Allow-Headers:X-Custom-Header
Access-Control-Allow-Credentials:true
Access-Control-Max-Age:1728000
  • Access-Control-Allow-Methods、Access-Control-Allow-Headers:真实请求允许的方法、允许使用的字段
  • Access-Control-Allow-Credentials: 是否允许用户发送、处理cookie
  • Access-Control-Max-Age: 预检请求的有效期,单位为秒,有效期内不会重复发送预检请求。
  • 当预检请求通过后,浏览器才会发送真实请求到服务器。这样就实现了跨域资源的请求访问。

VueRouter安装与使用

  • Vue路由vue-router是官方的路由插件,能够轻松的管理 SPA 项目中组件的切换。
  • Vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来
  • vue-router 目前有 3.x的版本和 4.x的版本,vue-router 3.x只能结合 vue2进行使用,vue-router 4.x 只能结合 vue3 进行使用
  • 安装:npm install vue-router@4

vue2只能按照npm install vue-router@3

使用VueRouter

1.创建Discover.vue、Friend.vue、My.vue
2.在App.vue添加

<template>
  <div>
    <h1>App组件</h1>
    <router-link to="/discover">发现音乐</router-link>
    <router-link to="/Friends">发现音乐</router-link>
    <router-link to="/My">发现音乐</router-link>
    <router-view></router-view>
  </div>
</template>

3.新建router文件夹,vrouter文件夹下新建index.js文件,并在index.js中添加

import VueRouter from "vue-router";
import Vue from "vue";

//把组件导进来
import Discover from '../components/Discover.vue'
import Friends from '../components/Friends.vue'
import My from '../components/My.vue'

Vue.use(VueRouter)

const router = new VueRouter({
    //指定hash属性与组件的对应关系
    routes:[
        {path:'/',redirect:"/discover"},//首页定向到discover页面
        {path:'/discover',component:Discover},
        {path:'/friends',component:Friends},
        {path:'/my',component:My},
    ]

})
export default router//对象导出

4.在main.js中添加

import Vue from 'vue'
import App from './App.vue'
import router from './router'   //

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
  router                         //
}).$mount('#app')

嵌套组件
  • 新建Playlist.vue、Toplist.vue
  • 在Discover中嵌套子组件
   <template>
    <div>
        <h1>发现音乐</h1>
        
        //discover前一定要加/
        
        <router-link to="/discover/toplist">推荐</router-link>   
        <router-link to="/discover/playlist">歌单</router-link>
        <hr>
        <router-view></router-view>
    </div>
   </template>
  • 在index.js导入需要的组件
//法一:添加
import Toplist from '../components/Toplist.vue'
import Playlist from '../components/Playlist.vue'

 {path:'/discover/playlist',component:Playlist},
 {path:'/discover/toplist',component:Toplist},

//法二:通过children属性,嵌套声明子路由

import Toplist from '../components/Toplist.vue'
import Playlist from '../components/Playlist.vue'

 {
            path:'/discover',
            component:Discover,
            //通过children属性,嵌套声明子路由
            children:[
                {path:"toplist",component:Toplist},
                {path:"playlist",component:Playlist},
            ]
        },

动态路由

1.在My.vue添加嵌套组件

<template>
    <div>
        <h1>我的音乐</h1>
        <router-link to="/my/1">商品1</router-link>
        <router-link to="/my/2">商品2</router-link>
        <router-link to="/my/3">商品3</router-link>
        <router-view></router-view>
    </div>
</template>

2.动态路由添加

//法一:
(1)新建Product.vue,添加
    <template>
        <h3>商品{{ $route.params.id }}</h3>
    </template>

(2)在index.js添加
    import Product from '../components/Product.vue'
        {
            path:'/my',
            component:My,
            children:[
                {path:":id",component:Product},
            ]
        },
        
//法二:
(1)新建Product.vue,添加
    <template>
        <h3>商品{{ id }}</h3>
    </template>
    <script>
    export default {
        props:["id"]
    }
    </script>
    
(2)在index.js添加
    import Product from '../components/Product.vue'
       {
            path:'/my',
            component:My,
            children:[
                {path:":id",component:Product,props:true},
            ]
        },

编程式导航

<template>
    <button @click="gotoProduct(2)">跳转到商品2</button>
</template>
<script>
export default{
    methods :{
        gotoProduct:function(id){
        	this.$router.push('/movie/s{id}')
        }
    }
}
</script>

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024.2.28

什么是回调函数&#xff1a;回调函数就是一个参数&#xff0c;将这个函数作为参数传到另一个函数里面&#xff0c;当那个函数执行完之后&#xff0c; 再执行传进去的这个函数。这个过程就叫做回调 结构体和共用体的区别&#xff1a;结构体的各个成员会占用不同的内存&#xff…

【ArcGIS】基本概念-空间参考与变换

ArcGIS基本概念-空间参考与变换 1 空间参考与地图投影1.1 空间参考1.2 大地坐标系&#xff08;地理坐标系&#xff09;1.3 投影坐标系总结 2 投影变换预处理2.1 定义投影2.2 转换自定义地理&#xff08;坐标&#xff09;变换2.3 转换坐标记法 3 投影变换3.1 矢量数据的投影变换…

Django模型进阶(Mysql配置、模型管理,表关联、一对一、一对多,多对多)

模型进阶&#xff1a; Mysql配置&#xff1a; 1.安装mysql 2安装MySQL驱动&#xff0c;使⽤mysqlclient pip install mysqlclient pip install -i https://pypi.douban.com/simple mysqlclientLinux Ubuntu下需要先安装&#xff1a;apt install libmysqld-dev 再安装: apt…

[spark] RDD 编程指南(翻译)

Overview 从高层次来看&#xff0c;每个 Spark 应用程序都包含一个driver program&#xff0c;该程序运行用户的main方法并在集群上执行各种并行操作。 Spark 提供的主要抽象是 resilient distributed dataset&#xff08;RDD)&#xff0c;它是跨集群节点分区的元素集合&…

【C++】结构体类

文章目录 问题提出一、结构体1.1结构体的声明1.1.1正常定义的结构体1.1.2在声明结构体的同时声明变量1.1.3typedef1.1.4成员变量 1.2结构体成员变量的使用1.2.1成员运算符 .1.2.2成员运算符 -> 1.3内存对齐1.3.1什么是内存对齐1.3.2内存对齐原则1.3.3结构体成员的定义顺序 1…

ISP代理是什么?怎么用?

在跨境出海业务中&#xff0c;代理IP对于您的在线任务至关重要&#xff0c;尤其是对于那些运行多个帐户的人来说。为您的帐户选择正确类型的代理对于确保帐户安全非常重要&#xff0c;劣质的IP容易使账号遭受封号风险。IPFoxy的多种代理IP类型应用范围各有侧重&#xff0c;其中…

Java 小项目开发日记 02(用户接口的开发)

Java 小项目开发日记 02&#xff08;用户接口的开发&#xff09; 项目目录 配置文件&#xff08;pom.xml&#xff09; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&q…

2007-2022年上市公司绿色化转型数据(仅结果)

2007-2022年上市公司绿色化转型数据&#xff08;仅结果&#xff09; 1、时间&#xff1a;2007-2022年 2、范围&#xff1a;上市公司 3、来源&#xff1a;上市公司年报、上市公司社会责任报告、上市公司网站信息 4、指标&#xff1a;证券代码、年份、绿色化转型 5、方法说明…

【JAVA日志】关于日志系统的架构讨论

目录 1.日志系统概述 2.环境搭建 3.应用如何推日志到MQ 4.logstash如何去MQ中取日志 5.如何兼顾分布式链路追踪 1.日志系统概述 关于日志系统&#xff0c;其要支撑的核心能力无非是日志的存储以及查看&#xff0c;最好的查看方式当然是实现可视化。目前市面上有成熟的解决…

【Go语言】Go语言中的数组

Go语言中的数组 1 数组的初始化和定义 在 Go 语言中&#xff0c;数组是固定长度的、同一类型的数据集合。数组中包含的每个数据项被称为数组元素&#xff0c;一个数组包含的元素个数被称为数组的长度。 在 Go 语言中&#xff0c;你可以通过 [] 来标识数组类型&#xff0c;但…

瑞_Redis_Redis命令

文章目录 1 Redis命令Redis数据结构Redis 的 key 的层级结构1.0 Redis通用命令1.0.1 KEYS1.0.2 DEL1.0.3 EXISTS1.0.4 EXPIRE1.0.5 TTL 1.1 String类型1.1.0 String类型的常见命令1.1.1 SET 和 GET1.1.2 MSET 和 MGET1.1.3 INCR和INCRBY和DECY1.1.4 SETNX1.1.5 SETEX 1.2 Hash类…

Java+SpringBoot+Vue+MySQL:狱内罪犯危险性评估系统全栈开发

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

5.WEB渗透测试-前置基础知识-常用的dos命令

内容参考于&#xff1a; 易锦网校会员专享课 上一篇内容&#xff1a;4.WEB渗透测试-前置基础知识-快速搭建渗透环境&#xff08;下&#xff09;-CSDN博客 常用的100个CMD指令 1.gpedit.msc—–组策略 2. sndrec32——-录音机 3. Nslookup——-IP地址侦测器 &#xff0c;是一个…

ruoyi框架学习

RBAC模型 数据字典 拦截器 token没有&#xff0c;submit&#xff0c;request.js中&#xff0c;前端前置拦截器&#xff0c;响应拦截器 后台 注解

35岁了,还能转行做鸿蒙开发吗?

随着互联网行业的蓬勃发展时&#xff0c;不止从何时网上开始就有了&#xff1a;“程序员30岁危机、35岁中年危机”这种类似的话题&#xff0c;可以说影响了不少程序员。 人们一般常说的是三十而立&#xff0c;一个人应该对生活、职业、个人信仰等方面有了明确的认识和规划&…

【Linux】HTTP协议

目录 预备知识 认识url urlencode和urldecode http和https的区别 http request 和 http response http request格式: http reponse格式&#xff1a; HTTP的请求方法 HTTP的状态码 HTTP常见Header cookie文件 cookie是什么 问题 解决方案 预备知识 认识url 平时…

pytorch 数据集处理以及模型训练

1.基础类说明 为了统一数据的加载和处理代码&#xff0c;pytorch提供了两个类&#xff0c;用来处理数据加载&#xff1a; torch.utils.data.DataLoader torch.utils.data.Dataset 通过这两个类&#xff0c;可以使数据集加载和预处理代码&#xff0c;与模型训练代码脱钩…

10.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏发送数据的操作

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;接管游戏连接服务器的操作 码云地址&#xff08;master 分支&#xff09;&#xff1a;染指/titan 码云版本号&#xff1a;00820853d5492fa7b6e32407d46b5f9c01930ec6 代码下载地址&#xff0c;在 ti…

RTF文件格式解析(二)图像问题

图片 一个RTF文件可以包含由其他应用创建的图象。这些图象可以是16进制(默认的)或2进制格式。图象属于目标引用&#xff0c;由\pict 控制字开始。如后面的例子中将描述的&#xff0c;\pict关键字应在\*\shppict引用控制关键字之后。一个图象引用具有如下语法&#xff1a; <p…

frp 内网穿透 linux部署版

frp 内网穿透 linux部署版 前提安装 frp阿里云服务器配置测试服务器配置访问公网 前提 使用 frp&#xff0c;您可以安全、便捷地将内网服务暴露到公网&#xff0c;通过访问公网 IP 直接可以访问到内网的测试环境。准备如下&#xff1a; 公网 IP已部署好的测试服务 IP:端口号阿…