vue2 案例入门

vue2 案例入门

  • 1 vue环境
  • 2 案例
    • 2.1 1.v-text v-html
    • 2.2 v-bind
    • 2.3 v-model
    • 2.4 v-on
    • 2.5 v-for
    • 2.6 v-if和v-show
    • 2.7 v-else和v-else-if
    • 2.8 计算属性和侦听器
    • 2.9 过滤器
    • 2.10 组件化
    • 2.11 生命周期
    • 2.12 使用vue脚手架
    • 2.13 引入ElementUI
      • 2.13.1 npm方式安装
      • 2.13.2 main.js导入elementUI组件
      • 2.13.3 配置vue快捷模板

1 vue环境

参考官网:https://v2.cn.vuejs.org/v2/guide/installation.html
npm 安装

npm install vue@^2

之后在项目引入

<script src="./node_modules/vue/dist/vue.js"></script>

Visual Studio Code 安装插件

Auto Close Tag
Auto Rename Tag
Chinese (Simplified)
ESLint
HTML CSS Support
HTML Snippets
JavaScript (ES6) code snippets
Live Server
open in browser
Vetur
Vue 2 Snippets

在这里插入图片描述

2 案例

2.1 1.v-text v-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>
    <div id="app">
        {{msg}} {{1+1}} {{hello()}} <br/>
        <span v-html="msg"></span>
        <br/>
        <span v-text="msg"></span>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        new Vue({
            el:"#app",
            data:{
                msg:"<h1>Hello</h1>"
            },
            methods:{
                hello(){
                    return "World"
                }
            }
        });
    </script>
</body>
</html>

2.2 v-bind

<!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>
    <!-- 给html标签的属性绑定 v-bind是单向绑定-->
    <div id="app">
        <a v-bind:href="link">gogogo</a>
        <!--class,style      {class名:加上?}-->
        <span v-bind:class="{active:isActive,'text-danger':hasError}"
              v-bind:style="{color: color1,'font-size': size}">你好</span>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        let vm = new Vue({
            el:"#app",
            data:{
                link:"http://www.baidu.com",
                isActive:true,
                hasError:true,
                color1:"red",
                size:"36px"
            }
        });
    </script>
</body>
</html>

2.3 v-model

<!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>
    <!--表单项,自定义组件-->
    <div id="app">
        精通的语言:
        <input type="checkbox" v-model="language" value="Java">java<br/>
        <input type="checkbox" v-model="language" value="PHP">PHP<br/>
        <input type="checkbox" v-model="language" value="Python">Python<br/>
        选中了{{language.join(",")}}

    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        let vm = new Vue({
            el:"#app",
            data:{
                language:[]
            }
        })
    </script>
</body>
</html>

2.4 v-on

<!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>
    <div id="app">
        <!--事件中直接写js片段-->
        <button v-on:click="num++">点赞</button>
        <!--事件指定一个回调函数,必须是Vue实例定义的函数-->
        <button v-on:click="cancle">v-on取消</button>
        <!--简写v-on @-->
        <button @click="cancle">简写@取消</button>
        <!-- -->
        <h1>{{num}} 个赞</h1>

        <!--事件修饰符
        在事件处理程序中调用event.preventDefault()或event.stopPropagation()是非常常见的
        需求。尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,
        而不是去处理DOM事件细节。
        为了解决这个问题,Vue.js为 v-on 提供了事件修饰符。修饰符是由点开头的指令后缀来表示的

        stop :阻止事件冒泡到父元素
        prevent: 阻止默认事件发生
        capture:使用事件捕获模式
        self:只有元素自身触发事件才执行。冒泡或捕获的都不执行
        once:只执行一次
        -->
        <div style="border:1px solid red;padding:20px;" v-on:click="hello">
            大div
            <!--正常的点 @click会弹两次 加上stop阻止事件冒泡到父类-->
            <div style="border:2px solid blue;padding:20px;" @click.stop="hello">
                小div<br/>
                <a href="http://wwww.baidu.com">去百度</a>
            </div>

            <div style="border:2px solid blue;padding:20px;" @click.stop="hello">
                小div<br/>
                <!--prevent: 阻止默认事件发生-->
                <a href="http://wwww.baidu.com" @click.prevent>click.prevent点击也不去百度</a>
            </div>
            <div style="border:2px solid blue;padding:20px;" @click.stop="hello">
                小div<br/>
                <!--prevent: 阻止默认事件发生-->
                <a href="http://wwww.baidu.com" @click.prevent="hello">@click.prevent="hello"点击也不去百度,还可以走其他方法(hello方法)</a>
            </div>
            <div style="border:2px solid blue;padding:20px;" @click.stop="hello">
                小div<br/>
                <!--prevent: 阻止默认事件发生-->
                <a href="http://wwww.baidu.com" @click.prevent.stop="hello">@click.prevent.stop="hello"点击也不去百度,还可以走其他方法(hello方法),之后还可以阻止默认行为</a>
            </div>
        </div>


        <div style="border:1px solid red;padding:20px;" v-on:click.once="hello">
            大div v-on:click.once 只执行一次再点就不弹了
            <!--正常的点 @click会弹两次 加上stop阻止事件冒泡到父类-->
            <div style="border:2px solid blue;padding:20px;" @click.stop="hello">
                小div<br/>
                <a href="http://wwww.baidu.com">去百度</a>
            </div>
        </div>

        <!--按键修饰符
        在监听键盘事件时,我们经常需要检查常见的键值。Vue允许为 v-on 在监听键盘事件时添加按键修饰符

        只有在keyCode=13时调用vm.submit()
        <input v-on:keyup.13="submit">

        记住所有的 keyCode 比较困难,所以 Vue 为最常用的按键提供了别名:
        <input v-on:keyup.enter="submit">
        缩写法
        <input @keyup.enter="submit">
        全部的按键别名:
        .enter
        .tab
        .delete
        .esc
        .space
        .up
        .down
        .left
        .fight
        -->

        <!--组合按钮
        可以用如下修饰符来实现仅在按下响应按键时才会触发鼠标或键盘事件的监听器。
        .ctrl
        .alt
        .shift
        Alt + C
        <input @keyup.alt.67="clear"
        Ctrl + Click
        <div @click.ctrl="doSomething">Do something</div>
        -->
        <input type="text" v-model="num" v-on:keyup.up="num+=2" @keyup.down="num-=2" @click.ctrl="num=10"><br/>
        提示:鼠标单击下input输入框后才有效果 按上加2 按下减2 按ctrl + click 直接改为10


    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        new Vue({
            el:"#app",
            data:{
                num:1
            },
            methods:{
                cancle(){
                    this.num--;
                },
                hello(){
                    alert("点击了")
                }
            }
        })
    </script>
</body>
</html>

2.5 v-for

<!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>
    <div id="app">
        <ul>
            <li v-for="user in users">
                <!-- 1.显示user信息:v-for="item in items" -->
                {{user.name}} ==> {{user.gender}} ==> {{user.age}}
                <!-- 2.获取数组下标:v-for="(item,index) in items"-->
                <!-- 3.遍历对象
                        v-for="value in object"
                        v-for="(value,key) in object"
                        v-for="(value,key,index) in object"
                -->
                对象信息v:
                <span v-for="v in user">{{v}} ==> </span>
                <!-- 4.遍历的时候加上:key来区分不同数据,提高vue渲染效率 -->
            </li>

            <li v-for="user in users">
                对象信息v,k:
                <span v-for="(v,k) in user">{{k}} ==> {{v}} ==> </span>
            </li>

            <li v-for="user in users">
                对象信息v,k,i:
                <span v-for="(v,k,i) in user">{{k}} ==> {{v}} ==> {{i}} </span>
            </li>

            <li v-for="(user,index) in users">
                <!-- 2.获取数组下标:v-for="(item,index) in items"-->
                当前索引:{{index}} ==> {{user.name}} ==> {{user.gender}} ==> {{user.age}}
            </li>

            <li v-for="user in users" :key="user.name">
                <!-- 1.显示user信息:v-for="item in items" -->
                {{user.name}} ==> {{user.gender}} ==> {{user.age}}
                <!-- 2.获取数组下标:v-for="(item,index) in items"-->
                <!-- 3.遍历对象
                        v-for="value in object"
                        v-for="(value,key) in object"
                        v-for="(value,key,index) in object"
                -->
                对象信息v:
                <span v-for="v in user">{{v}} ==> </span>
                <!-- 4.遍历的时候加上:key来区分不同数据,提高vue渲染效率 -->
            </li>
        </ul>
        <ul>
            <!--推荐以后遍历的时候都加上 :key来区分不同的元素-->
            <li v-for="(num,index) in nums" :key="index">

            </li>
        </ul>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        let app = new Vue({
            el:"#app",
            data:{
                users:[{name:'孙悟空',gender:'男',age:25},
                {name:'克林',gender:'男',age:26},
                {name:'比克',gender:'男',age:27},
                {name:'贝吉塔',gender:'男',age:25},
                {name:'布玛',gender:'女',age:24}],
                nums:[1,2,3,4,4]
            }
        })
    </script>
</body>
</html>

2.6 v-if和v-show

<!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>
    <!--
        v-if,顾名思义,条件判断。当得到结果为true时,所在的元素会被渲染。
        v-show,当得到结果为true,所在的元素才会被显示
    -->
    <div id="app">
        <button v-on:click="show = !show">点我啊</button>
        <!--1.使用v-if显示-->
        <h1 v-if="show">if=看到我....</h1>
        <!--2.使用v-show显示-->
        <h1 v-show="show">show=看到我</h1>

    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        let app = new Vue({
            el:"#app",
            data:{
                show:true
            }
        })
    </script>
</body>
</html>

2.7 v-else和v-else-if

<!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>
    <div id="app">
        <button v-on:click="random=Math.random()">点我啊</button>
        <span>{{random}}</span>

        <h1 v-if="random>=0.75">
            看到我拉 &gt;=0.75
        </h1>

        <h1 v-else-if="random>=0.5">
            看到我拉 &gt;=0.5
        </h1>

        <h1 v-else-if="random>=0.2">
            看到我拉 &gt;=0.2
        </h1>

        <h1 v-else>
            看到我拉 &gt;=0.1
        </h1>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        let app = new Vue({
            el:"#app",
            data:{random:1}
        })
    </script>
</body>
</html>

2.8 计算属性和侦听器

<!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>
    <div id="app">
        <!-- 某些结果是基于之前数据实时计算出来的,我们可以利用计算属性来完成-->
        <ul>
            <li>西游记;价格:{{xyjPrice}},数量: <input type="number" v-model="xyjNum"></li>
            <li>水浒传;价格:{{shzPrice}},数量: <input type="number" v-model="shzNum"></li>
            <li>总价:{{totalPrice}}</li>
            {{msg}}
        </ul>

    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        //watch可以让我们监控一个值的变化,从而做出相应的反应。
        new Vue({
            el:"#app",
            data:{
                xyjPrice:99.98,
                shzPrice:98.00,
                xyjNum:1,
                shzNum:1,
                msg:""
            },
            //计算属性
            computed:{
                totalPrice(){
                    return this.xyjPrice*this.xyjNum+this.shzPrice*this.shzNum
                }

            },
            watch:{
                xyjNum(newVal,oldVal){
                    // alert("newVal"+newVal+"==>oldVal"+oldVal)
                    if(newVal>=3){
                        this.msg="库存超出限制";
                        this.xyjNum=3
                    }else{
                        this.msg="";
                    }
                }

            }
        })
    </script>

</body>
</html>

2.9 过滤器

<!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>
    <!--过滤器常用语处理文本格式化的操作,过滤器可以用在两个地方:双花括号插值和v-bind表达式-->
    <div id="app">
        <ul>
            <li v-for="user in userList">
                {{user.id}},{{user.name}},{{user.gender==1?"男":"女"}} ,
                {{user.gender | genderFilter}} , {{user.gender|gFilter}}
            </li>
        </ul>

    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        //全局过滤器
        Vue.filter("gFilter",function(val){
            if(val==1){
                return "男----";
            }else{
                return "女----"
            }

        })
        let vm = new Vue({
            el:"#app",
            data:{
                userList:[
                    {id:1,name:'jack',gender:1},
                    {id:2,name:'peter',gender:0}
                ]
            },
            //过滤器实现 filters定义局部过滤器,只可以在当前vue实例中使用
            filters:{
                //用在{{user.gender | genderFilter}}
                genderFilter(val){
                    if(val==1){
                        return "男";
                    }else{
                        return "女"
                    }
                }

            }
        })
    </script>
</body>
</html>

2.10 组件化

<!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>
    <div id="app">
        <button v-on:click="count++">我被点了 {{count}}</button>
        <!--1.1 使用全局组件-->
        <counter></counter>
        <!--2.2使用局部组件-->
        <button-counter></button-counter>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        //1.全局声明注册一个组件,可以在任何一个vue实例中调佣
        Vue.component("counter", {
            template: '<button v-on:click="count++">我被点了 {{count}} 次</button>',
            data() {
                return {
                    count: 1
                }
            }
        });
        //2.局部声明一个组件
        const buttonCounter={
            template: `<button v-on:click="count++">我被点了 {{count}} 次····</button>`,
            data() {
                return {
                    count: 1
                }
            }
        };
        new Vue({
            el: "#app",
            data: {
                count: 1
            },
            //2.2 必须写在vue里的components里
            components:{
                'button-counter': buttonCounter
            }
        })
    </script>
</body>

</html>

2.11 生命周期

<!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>
    <div id="app">
        <span id="num">{{num}}</span>
        <button @click="num++">赞!</button>
        <h2>{{name}},{{num}}个人点赞</h2>
    </div>
    <script src="./node_modules/vue/dist/vue.js"></script> 
    <script>
        let app = new Vue({
            el:"#app",
            data:{
                name:"张三",
                num:100
            },
            methods:{
                show(){
                    return this.name;
                },
                add(){
                    this.num++;
                },
                beforeCreate(){
                    console.log("========beforeCreate========");
                    console.log("数据模型未加载:"+this.name,this.num);
                    console.log("方法未加载:"+this.show());
                    console.log("html模板未加载:"+document.getElementById("num"));
                },
                created: function(){
                    console.log("======= created==========");
                    console.log("數数据模型已加载:"+this,name,this.num);
                    console.log("方法已加载:"+this.show());
                    console.log("htm1模板已加载:"+ document. getelementbyid("num"));
                    console.log("htm模板未渲染:"+ document, getelementbyid("num"). innertext);
                },
                beforeMount(){
                    console.log("========beforeMount========");
                    console.log( "html模板未渲染:"+ document.getelementbyid ("num").innertext);
                },
                mounter(){
                    console.log("========mounter========");
                    console.log( "html模板已渲染:"+ document.getelementbyid ("num").innertext);
                },
                beforeUpdate(){
                    console.log("========beforeUpdate========");
                    console.log("数据模型已更新:",this.num);
                    console.log( "html模板未更新: "+ document.getelementbyid("num").innertext);
               },
               updated(){
                console.log("========updated========");
                console.log("数据模型已更新:"+this.num);
                console.log("html模板已更新"+document.getElementById("num").innerText);
               }
            }
        })
    </script>
</body>
</html>

2.12 使用vue脚手架

1.全局安装webpack

npm install webpack -g

在这里插入图片描述
2.全局安装vue脚手架

npm install -g @vue/cli-init

在这里插入图片描述
3.初始化vue项目
vue init webpack appname:vue 脚手架使用webpack模块化初始化一个appname项目
建立项目目录C:\xx\work\code\vue\vue-demo
在项目目录中cmd执行

vue init webpack vue-demo

如果执行失败就尝试下面的命令

cnpm install --global vue-cli

成功后再次执行vue init webpack vue-demo
途中会询问参考我的选择

#直接回车
? Project name vue-demo
#直接回车
? Project description A Vue.js project
#直接回车
? Author
#选择Vue build standalone
? Vue build standalone
#按y 回车
? Install vue-router? Yes
#按n 回车
? Use ESLint to lint your code? No
#按n 回车
? Set up unit tests No
#按n 回车
? Setup e2e tests with Nightwatch? No
? Should we run `npm install` for you after the project has been created? (recommended) npm

cd 到生成的 vue-demo 里面输入

npm run dev

在这里插入图片描述
访问http://localhost:8080 搭建成功
在这里插入图片描述
后面转到Visual Studio Code中开发
config/index.js中port改启动端口
在这里插入图片描述

2.13 引入ElementUI

ElementUI官网:https://element.eleme.io

2.13.1 npm方式安装

npm i element-ui

2.13.2 main.js导入elementUI组件

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

Vue.use(ElementUI);

在这里插入图片描述

2.13.3 配置vue快捷模板

文件->首选项->配置用户代码片段->vue.code-snippets
在这里插入图片描述

把原始内容注解掉,放入以下模板:

{
    "生成vue模板": {
        "prefix": "vue",
        "body": [
            "<!-- $1 -->",
            "<template>",
            "<div class='$2'>$5</div>",
            "</template>",
            "",
            "<script>",
            "//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)",
            "//例如:import 《组件名称》 from '《组件路径》';",
            "",
            "export default {",
            "//import引入的组件需要注入到对象中才能使用",
            "components: {},",
            "data() {",
            "//这里存放数据",
            "return {",
            "",
            "};",
            "},",
            "//监听属性 类似于data概念",
            "computed: {},",
            "//监控data中的数据变化",
            "watch: {},",
            "//方法集合",
            "methods: {",
            "",
            "},",
            "//生命周期 - 创建完成(可以访问当前this实例)",
            "created() {",
            "",
            "},",
            "//生命周期 - 挂载完成(可以访问DOM元素)",
            "mounted() {",
            "",
            "},",
            "beforeCreate() {}, //生命周期 - 创建之前",
            "beforeMount() {}, //生命周期 - 挂载之前",
            "beforeUpdate() {}, //生命周期 - 更新之前",
            "updated() {}, //生命周期 - 更新之后",
            "beforeDestroy() {}, //生命周期 - 销毁之前",
            "destroyed() {}, //生命周期 - 销毁完成",
            "activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发",
            "}",
            "</script>",
            "<style scoped>",
            "//@import url($3); 引入公共css类",
            "$4",
            "</style>"
        ],
        "description": "生成vue模板"
    },
    "http-get请求": {
	"prefix": "httpget",
	"body": [
		"this.\\$http({",
		"url: this.\\$http.adornUrl(''),",
		"method: 'get',",
		"params: this.\\$http.adornParams({})",
		"}).then(({ data }) => {",
		"})"
	],
	"description": "httpGET请求"
    },
    "http-post请求": {
	"prefix": "httppost",
	"body": [
		"this.\\$http({",
		"url: this.\\$http.adornUrl(''),",
		"method: 'post',",
		"data: this.\\$http.adornData(data, false)",
		"}).then(({ data }) => { });" 
	],
	"description": "httpPOST请求"
    }
}

在这里插入图片描述

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

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

相关文章

BIGO前端CICD平台

本文首发于&#xff1a;https://github.com/bigo-frontend/blog/ 欢迎关注、转载。 我是谁 BIGO前端CICD平台&#xff0c;是一个服务于前端团队的全研发周期管理平台&#xff0c;已经是我们团队日常都要使用的工具了。 该平台实现了一键创建项目、发布编排、新建迭代、checkl…

互联网应用主流框架整合之数据库事务管理

在互联网系统中同时运行着成千上百个线程是十分常见的事情&#xff0c;尤其当一个热门出现时&#xff0c;用户几乎同时打开手机、电脑、平板灯设备进行访问&#xff0c;这样就会导致数据库处在一个多事务访问的环境中&#xff0c;从而引发数据丢失或者数据不一致的现象&#xf…

Java GC问题排查的一些个人总结和问题复盘

个人博客 Java GC问题排查的一些个人总结和问题复盘 | iwts’s blog 是否存在GC问题判断指标 有的比较明显&#xff0c;比如发布上线后内存直接就起飞了&#xff0c;这种也是比较好排查的&#xff0c;也是最多的。如果单纯从优化角度&#xff0c;看当前应用是否需要优化&…

Mowgli用于配对多组学整合

对同一组细胞的多个分子层进行分析逐渐流行。越来越需要能够联合分析这些数据的多视图学习方法。Mowgli是一种支持配对多组学数据的整合方法。值得注意的是&#xff0c;Mowgli将非负矩阵分解和最优传输相结合&#xff0c;同时提高了非负矩阵分解的聚类性能和可解释性。作者将Mo…

解锁数据的力量:Navicat 17 新特性和亮点

解锁数据的力量&#xff1a;Navicat 17 新特性和亮点 大家好&#xff0c;我是猫头虎。今天我要为大家介绍 Navicat 17 的新特性和亮点。Navicat 是一款专业的数据库管理工具&#xff0c;支持多种数据库类型&#xff0c;包括 MySQL、Oracle、SQL Server、PostgreSQL、MariaDB、…

5月28号总结

刷题记录 1.A. Phone Desktop 输入&#xff1a; 11 1 1 7 2 12 4 0 3 1 0 8 1 0 0 2 0 15 0 8 2 0 9 输出&#xff1a; 1 1 2 2 1 1 0 1 1 2 5 题意&#xff1a;题目给我们1x1和2x2的图标个数&#xff0c;让我们求最少需要多少个5x3的屏幕。 思路&#xff1a;当只看2x2的图…

新建一个esri_sde_gists的服务

需求 新建一个esri_sde_gists的服务 步骤&#xff1a; 需要拷贝ora11gexe目标为新的目录&#xff0c;例如ora11gexe_gists 运行drivers找到etc下面的services文件&#xff0c;添加端口5152&#xff1a; 检查sde的library并创建&#xff1a; CREATE or REPLACE LIBRARY ST_S…

elastich运维

Elastichsearch是一种高度可扩展的开源全文搜索和分析引擎&#xff0c;可以用来实现快速、高效的数据检索。 集群规划与部署&#xff1a;首先需要根据业务需求规划Elastichsearch集群的节点数量和角色&#xff08;如主节点、副本节点、协调节点等&#xff09;。在部署时&#x…

@EnableConfigurationProperties源码解析

前言 EnableConfigurationProperties注解的使用&#xff0c;请移步相关博文&#xff1a;EnableConfigurationProperties注解使用 前置知识 Import注解作用简述 注入的类一般继承 ImportSelector 或者 ImportBeanDefinitionRegistrar 接口 继承ImportSelector接口&#xff…

AIGC 人工智能全能实操课:用AI工作,提升效率,帮你赚钱(33节课)

课程目录 2-AIGC介绍先导1.mp4 3-第一节-chatGPT介绍与原理1.mp4 4-第二节-CHATGPT提示词的三个原则_1.mp4 5-第三节-chatgpt提示词的7个步骤1.mp4 6-第四节-chatgpt提示词的4个技巧1.mp4 7-第五节-chatgpt制作分镜案例分享1.mp4 8-第六节-chatgpt提示词生成工具1.mp4 …

最短路Dijkstra求最短路(讲解 + 模板 + 例题)

Dijkstra算法 Dijkstra是基于贪心思想的单源最短路算法; 变量定义 : const int N 510; const int INF 1e9 10 ; struct edge{int v , w ; // 表示出边和边权 }; vector<edge> e[N] ; int d[N] ; // dis[u]存u到源点s的最短距离 int vis[N] ;// vis[u]标记u是否…

K8s集群调度续章

目录 一、污点&#xff08;Taint&#xff09; 1、污点&#xff08;Taint&#xff09; 2、污点组成格式 3、当前taint effect支持如下三个选项&#xff1a; 4、查看node节点上的污点 5、设置污点 6、清除污点 7、示例一 查看pod状态&#xff0c;模拟驱逐node02上的pod …

选择快充时代下的理想充电器与电压诱骗芯片PW6606

随着科技的不断进步&#xff0c;我们的电子设备对于充电速度和效率的要求越来越高。在快充技术迅猛发展的今天&#xff0c;了解不同类型的充电器及其对应的快充协议&#xff0c;以及如何选择适合的电压诱骗芯片&#xff0c;对于提升充电体验和保障设备安全显得尤为重要。 一、快…

「代码厨房大揭秘:Python性能优化的烹饪秘籍!」

哈喽&#xff0c;我是阿佑&#xff0c;上篇咱们讲了 Socket 编程 —— 探索Python Socket编程&#xff0c;赋予你的网络应用隐形斗篷般的超能力&#xff01;从基础到实战&#xff0c;构建安全的聊天室和HTTP服务器&#xff0c;成为网络世界的守护者。加入我们&#xff0c;一起揭…

什么情况下JVM内存中的一个对象会被垃圾回收?

什么情况下JVM内存中的一个对象会被垃圾回收? 1、什么时候会触发垃圾回收?2、被哪些变量引用的对象是不能回收的?3、Java中对象不同的引用类型4、finalize()方法的作用1、什么时候会触发垃圾回收? 平时我们系统运行创建的对象都是优先分配在新生代里的,如图: 然后如果…

【JVM底层原理,JVM架构详解】

1. JVM简介 1.1 什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 主流虚拟机: 虚拟机名称介绍HotSpotOracle/Sun JDK和OpenJDK都使用HotSPo…

【算法】位运算算法——丢失的数字

题解&#xff1a;丢失的数字(位运算算法) 目录 1.题目2.题解3.位运算异或4.总结 1.题目 题目链接&#xff1a;LINK 2.题解 哈希数组查漏高斯求和排序位运算异或… 3.位运算异或 class Solution { public:int missingNumber(vector<int>& nums) {int ret 0;for…

单调栈--

1.每日温度 那么单调栈的原理是什么呢&#xff1f;为什么时间复杂度是O(n)就可以找到每一个元素的右边第一个比它大的元素位置呢&#xff1f; 单调栈的本质是空间换时间&#xff0c;因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素&#xff0c;优点是整个数…

使用大模型LLM实现销售AI

想象一个场景&#xff0c;客户通过聊天窗口咨询一款产品。销售AI首先使用LLM解析客户的问题&#xff0c;然后通过智能代理查询数据库获取产品详细信息&#xff0c;并以自然而友好的方式回应客户。 在对话过程中&#xff0c;AI可以评估客户的兴趣&#xff0c;并主动提供促销信息…

【设计模式】JAVA Design Patterns——Curiously Recurring Template Pattern(奇异递归模板模式)

&#x1f50d;目的 允许派生组件从与派生类型兼容的基本组件继承某些功能。 &#x1f50d;解释 真实世界例子 对于正在策划赛事的综合格斗推广活动来说&#xff0c;确保在相同重量级的运动员之间组织比赛至关重要。这样可以防止体型明显不同的拳手之间的不匹配&#xff0c;例如…