zoukankan      html  css  js  c++  java
  • JavaScript 各种事件触发总结

    JavaScript 事件绑定

    ◆键盘鼠标◆

    键盘事件: 当键盘接收到按下弹起等按键时,执行操作.

    <body onkeypress="keycode()">
        <input type="text" name="text" onkeydown="func_keydown()">
        <input type="text" name="text" onkeyup="func_keyup()">
        <input type="text" name="text" onkeypress="func_keypress()">
    
        <script type="text/javascript">
            function func_keydown() { alert("你按下了键"); }
            function func_keyup() { alert("你松开了键"); }
            function func_keypress() { alert("你按下并松开"); }
            function keycode(){
                if(window.event.keyCode==32)
                {
                    alert("你在body区域按下了空格.");
                }
            }
        </script>
    </body>
    

    Resize: 当浏览器窗口或帧的大小发生变化时触发Resize事件.

    <body onresize="mesg()">
    
        <script type="text/javascript">
            function mesg() {
                document.write("窗口大小已被改变了..." + "<br>")
            }
        </script>
    </body>
    

    鼠标 Click: 鼠标在一个对象上左键点击触发Click事件,对象包括button,document,checkbox,link,radio,submit.

    <body>
    
        <input type="button" id="button1" value="按钮1" onclick="alert('按钮1被按下了...')">
        <input type="button" id="button2" value="按钮2" onclick="alert('按钮2被按下了...')">
        
        <script type="text/javascript">
        </script>
    </body>
    

    MouseDown&MouseUP: 当我们按下鼠标,系统触发MouseDown事件,释放鼠标时自动触发MouseUP事件.

    <body>
        <input type="button" value="点我" onmousedown="down()">
        <input type="button" value="点我" onmouseup="up()">
        
        <script type="text/javascript">
            function down() {
                document.write("你按下了按键...")
            }
            function up() {
                document.write("你释放了按键...")
            }
        </script>
    </body>
    

    MouseOver&MouseOut: 鼠标指针到达一个对象之上时,触发MouseOver事件,鼠标离开时触发MouseOut事件.

    <body>
        <input type="submit" value="鼠标在按钮上" onmouseover="in_over()"></input>
        <input type="submit" value="鼠标离开按钮" onmouseout="out_over()"></input>
    
        <script type="text/javascript">
            function in_over() {
                alert("鼠标在按钮上...")
            }
            function out_over(){
                alert("鼠标离开按钮...")
            }
        </script>
    </body>
    

    OnClick: 通用事件,可以绑定到任何可以操作的标签中,当事件触发后,执行对应的函数体.

    <body>
        <input type="button" value="弹窗" onclick="show()">
    
        <script type="text/javascript">
            function show(){
                alert("触发弹窗一个窗口提示...")
            }
        </script>
    </body>
    

    Focus&Blur: 当屏幕上的光标进入对象区域内时触发focus事件,反之当光标离开时触发blur事件.

    <body>
        <input onfocus="Focus(this);" onblur="Blur(this);"
        	   id="search" value="请输入关键字" style="color: gray;" />
    
        <script type="text/javascript">
           function Focus(ths){             //光标来到执行
                ths.style.color = "black";
                if(ths.value == '请输入关键字' || ths.value.trim() == ""){
    
                    ths.value = "";
                }
            }
            function Blur(ths){            //光标离开执行
                if(ths.value.trim() == ""){
                    ths.value = '请输入关键字';
                    ths.style.color = 'gray';
                }else{
                    ths.style.color = "black";
                }
            }
        </script>
    </body>
    

    Submit: 通常和form标记配合使用,其作用是用于送出数据,用户在form中输入数据后,点击Sumbit触发自定义函数.

    <body>
        <form name="forms" method="post" onsubmit="return check()">
            <input type="text" name="texts" size="20">
            <input type="submit" value="提交">
        </form>
    
        <script type="text/javascript">
            function check() {
                if(document.forms.texts.value == ""){
                    document.forms.focus()
                    alert("用户没有输入任何内容...")
                    return false
                }else
                {
                    alert("用户输入了内容...")
                    return true
                }
            }
        </script>
    </body>
    

    Submit: 通常和form标记配合使用,其作用是用于送出数据,用户在form中输入数据后,点击Sumbit触发自定义函数.

    <body>
        <form action="https://www.baidu.com">
            <input type="text" id="username">
            <input type="submit" value="提交" onclick="return MySub()">
        </form>
    
        <script type="text/javascript">
            function MySub(){
                var user = document.getElementById("username");
                if(user.value.length > 0){
                    alert("编辑框内有数据,允许提交数据..")
                    return true;
                }else
                {
                    alert("用户名输入不能为空...")
                    return false;
                }
            }
        </script>
    </body>
    

    Reset: 通常情况下和form标记配合使用,其起到的作用是,当用户完成信息输入后,按下按钮自动清空已经输入的数据.

    <body>
        <form name="forms" method="post" >
            <input type="text">
            <input type="password">
            <input type="reset" value="重置" onreset="reset()">
        </form>
    
        <!--<script type="text/javascript">-->
            <!--function reset(){-->
                <!--alert("内容已经清空了...")-->
                <!--return 1-->
            <!--}-->
        <!--</script>-->
    </body>
    

    Change: 当文本区域中的鼠标指针移离该对象时,若对象内容与原来内容不同,则就会触发Change事件.

    <body>
        <textarea name="text" rows="3" cols="30" value=""
                  onchange="show()"></textarea>
    
        <script type="text/javascript">
            function show(){
                alert("您在文本框中添加了新的内容...")
            }
        </script>
    </body>
    

    Select: 当一个文本框,文本区域对象中的文本被选中时就会触发Select事件,未被选择则不会出现提示框.

    <body>
        <input type="text" value="hello lyshark" onselect="show()">
    
        <script type="text/javascript">
            function show(){
                alert("您选中了文本框中的文本内容...")
            }
        </script>
    </body>
    

    Error: 当网页因为某种原因出现错误时就会触发,在错误处理程序中可以绑定操作,该标签常用与<body>,<img>配合.

    <body>
        <img src="temp.jpg" onerror="error_msg()">
    
        <script type="text/javascript">
            function error_msg(){
                alert("图片加载失败了...")
            }
        </script>
    </body>
    

    JavaScript 对象编程

    对象是编程语言中很重要的特征之一,JS是基于对象的编程语言,所以支持面向对象的所有特性,灵活使用这些对象能够实现丰富而强大的功能,下面我们首先来看如何创建一个自定义类,代码如下:

    <body>
        <script type="text/javascript">
            function MyClass(name,age){                  //定义类,类名MyClass
                this.name = name;
                this.age = age;
    
                this.print = function(name,age){         //定义的一个函数体
                    document.write("姓名: " + this.name + "年龄: " + this.age);
                }
            }
    
            var temp = new MyClass("lyshark",22);        //实例化一个对象
            temp.print()                                 //调用对象中的函数体
        </script>
    </body>
    

    上述代码执行后会打印出姓名和年龄,但是这种写法在实例化对象时,系统会为每个对象中均保存了一个相同的print()函数,从而浪费内存,使用原型写法可以解决该问题,改进代码如下:

    <body>
        <script type="text/javascript">
            function MyClass(name,age){
                this.name = name;
                this.age = age;
            }
            MyClass.prototype = {
                print:function(){
                    document.write("姓名: " + this.name + "年龄: " + this.age);
                }
            }
    
            var temp = new MyClass("lyshark",22);        //实例化一个对象
            temp.print()                                 //调用对象中的函数体
        </script>
    </body>
    

    ◆其他事件◆

    打开关闭窗口: 利用window.open()打开网页,window.close()关闭打开的网页.

    msg.html
    
    <body bgcolor="#bc8f8f">
        <table width="300" height="200" border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td valign="top"> 网页通知
                    <p> 这是一个通知信息,您可以忽略掉</p>
                </td>
            </tr>
        </table>
    </body>
    
    index.html
    
    <body>
        <input type="button" value="弹出通知" onclick="msg()">
        <input type="button" value="关闭通知" onclick="msg_close()">
        <script type="text/javascript">
            function msg(){
                open("msg.html","通知",height=50,width=30,top=20,left=10);
            }
            function msg_close() {
                close()
            }
        </script>
    </body>
    

    弹出提示框: 点击按钮自动弹出Window.alert()提示消息框.

    <body>
    
        <input type="button" value="点击弹窗" onclick="msg()">
        <script type="text/javascript">
            function msg(){
                alert("这是一个提示框...")
            }
        </script>
    </body>
    

    弹出选择框: Window.confirm()弹出一条信息让用户确认,包括确认和取消按钮.

    <body>
        <input type="button" value="弹窗口" onclick="msg()">
        <script type="text/javascript">
            function msg(){
                if(confirm("请输入你的选项..")){
                    alert("感谢您的参与..")       //确认按钮执行语句
                }else{
                    alert("取消语句..")           //取消按钮执行语句
                }
            }
        </script>
    </body>
    

    弹出输入框: window.prompt()用于弹出一个输入框,可以让用户输入一些信息.

    <body>
        <script type="text/javascript">
            var passwd = prompt("请输入密码(密码是123): ","");
            while(passwd !="123"){
                passwd = prompt("密码错误,请重新输入: ");
            }
            if(passwd =="123"){alert("密码正确...")}
        </script>
    </body>
    

    设置单次定时器: 以下案例,实现当点击删除按钮时,屏幕提示删除成功,在5秒后自动的隐藏标签.

    <body>
        <div id="status" style="color: red;"> </div>
        <input type="button" value="删除定时" onclick="DeleteStatus()">
    
        <script type="text/javascript">
            function DeleteStatus(){
                var temp = document.getElementById("status");
                temp.innerText = "删除成功了...";
                setTimeout(function(){
                    temp.innerText = "";
                },50000);                     //设置5秒后执行清空标签
            }
        </script>
    </body>
    

    输入框触发事件: 当输入框中输入内容时,自动触发输入事件.

    <form action="">
        手机号: <input type="text" id="userphone">
        <input type="submit">
    </form>
        <script type="text/javascript">
        // 输入框发生变化触发
        document.getElementById("userphone").oninput=function(){
            console.log(this.value);
        }
        // 键盘按下触发
        document.getElementById("userphone").onkeyup=function(){
            console.log(this.value);
        }
    </script>
    

    网络相关事件: 当网络断开,或者连接时自动触发的事件.

    <script>
        // 网络联通后执行
        window.addEventListener("online",function(){
            console.log("网络已连接");
        });
        // 网络断开后触发
        window.addEventListener("offline",function(){
            console.log("网络已断开");
        });
    </script>
    

    设置循环定时器: setIntercal设置定时器,clearInterval清除定时器,定时器用于周期性执行.

    <body>
        <input type="text" id="clock">
        <input type="button" value="开始执行" onclick="begin_func()">
        <input type="button" value="取消执行" onclick="end_func()">
    
        <script type="text/javascript">
            function begin(){
                var now = new Date();
                var stime = now.getTime()
                var ret = document.getElementById("clock");
                ret.value=stime;
            }
    
            var ID;                                //定义全局变量,后期用于清楚定时器
            function begin_func(){
                 ID =setInterval(begin,1000);     //每隔1秒执行一次,设置定时器
            }
            function end_func(){
                clearInterval(ID);                //取消一秒内执行,清除定时器
                ID = undefined;
            }
        </script>
    </body>
    

    定时器设置按钮: 通过定时器计时默认将按钮禁止点击,等超过五秒后将按钮变为可点击状态.

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <input type="button" id="btnShow" disabled="true" value="等待5秒后可用"/>
    
    <script type="text/javascript">
        var time1 = 5;
        var id1, btnShow;
        onload = function () 
        {
            // 获取按钮,启动定时器
            btnShow = document.getElementById('btnShow');
            id1 = setInterval('changeBtn(btnShow)', 1000);
        };
    
        function changeBtn(btn1) {
            time1--;
            btn1.value = "等待" + time1 + "秒后可用";
            if (time1 == 0) 
            {
                // 当5秒结束后让按钮可用
                btn1.value = "立即注册";
                btn1.disabled = false;
                clearInterval(id1); // 停止定时器
            }
        }
    </script>
    

    动态生成超链接: 通过循环的方式动态生成超链接,并设置点击后变为红色.

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <div id="myDiv"></div>
    
    <script type="text/javascript">
        onload = function () {
            //获取容器
            var div = document.getElementById('myDiv');
            
            //循环创建5个超链接
            for (var i = 0; i < 5; i++) {
                //创建a对象
                var a = document.createElement('a');
                //为属性赋值
                a.href = 'http://www.itcast.cn';
                a.innerHTML = '链接' + i;
                a.onclick = function() {
                    //设置背景色为红色
                    this.style.backgroundColor = 'red';
                    return false;
                };
                //追加到容器中
                div.appendChild(a);
            }
        };
    </script>
    

    绘制方框嵌套图: 每次循环并绘制方框图.

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script type="text/javascript">
        onload = function () {
            //根据标签获取body元素
            var body = document.getElementsByTagName('body')[0];
            //规定初始值
            var width = 500, height = 500, left = 10, top = 10;
            //循环创建div
            while (true) {
                //创建div加入body中
                var div1 = document.createElement('div');
                div1.style.position = 'absolute';
                div1.style.left = left + 'px';
                div1.style.top = top + 'px';
                div1.style.border = '1px solid blue';
                div1.style.width = width + 'px';
                div1.style.height = height + 'px';
                body.appendChild(div1);
                
                //改写数值
                left += 5;
                top += 5;
                width -= 10;
                height -= 10;
                
                //当div的宽度<=0时,在页面上不会显示,所以退出循环
                if (width <= 0) {
                    break;
                }
            }
        };
    </script>
    

    DIV显示隐藏: 默认DIV为显示状态,当我们点击按钮后自动收缩隐藏.

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <input type="button" id="btnShow" value="隐藏"/>
    <div style="border: 1px solid red;" id="divShow">test</div>
    
    <script type="text/javascript">
        onload = function() {
            document.getElementById('btnShow').onclick = function () {
                var divShow = document.getElementById('divShow');
                if (this.value == '隐藏') {
                    this.value = '显示';
                    divShow.style.display = 'none';//控制层隐藏
                } else {
                    this.value = '隐藏';
                    divShow.style.display = 'block';//控制层显示
                }
            };
        };
    </script>
    

    图片跟随鼠标移动: 让一张图片跟随屏幕鼠标动态调整.

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <img id="img1" style="background: red; 20px; height: 20px;position: absolute;" />
    
    <script type="text/javascript">
        onload = function() {
            //鼠标移动:mousemove
            window.onmousemove = function (e) {
                //获取图片对象
                var img1 = document.getElementById('img1');
                //设置x坐标
                img1.style.left = e.clientX - parseInt(img1.width) / 2 + 'px';
                //设置y坐标
                img1.style.top = e.clientY - parseInt(img1.height) / 2 + 'px';
            };
        };
    </script>
    

    显示按钮详细信息: 将鼠标放到按钮上,即可显示出按钮的详细信息.

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    
    <input type="button" id="btn1" value="一号"/>
    <input type="button" id="btn2" value="二号"/>
    <div style=" 100px;height: 100px; position: absolute;display: none;" id="divShowId"></div>
    
    <script type="text/javascript">
        onload = function () {
            //获取所有按钮
            var btns = document.getElementsByTagName('input');
            //遍历按钮,绑定事件
            for (var i = 0; i < btns.length; i++) {
                btns[i].onmouseover = function(e) {
                    //获取div
                    var divShowId = document.getElementById('divShowId');
                    divShowId.textContent = this.value;
                    //显示
                    divShowId.style.display = 'block';
                    //定义位置
                    divShowId.style.left = e.clientX + 'px';
                    divShowId.style.top = e.clientY + 'px';
                };
                btns[i].onmouseout = function() {
                    //获取div
                    var divShowId = document.getElementById('divShowId');
                    //隐藏
                    divShowId.style.display = 'none';
                };
            }
        };
    </script>
    

    按钮点击事件: 当用户点击按钮时,会自动将按钮的标题设置为其他值.

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <input type="button" name="btnCry" id="0" value="哈哈"/>
    <input type="button" name="btnCry" id="1" value="哈哈"/>
    <input type="button" name="btnCry" id="2" value="哈哈"/>
    <input type="button" name="btnCry" id="3" value="哈哈"/>
    <input type="button" name="btnCry" id="4" value="哈哈"/>
        
    <script type="text/javascript">
        //事件只能接收函数,这里直接使用匿名函数更简便
        onload = function () {
            //获取所有name为btnCry的按钮
            var btn = document.getElementsByName('btnCry');
            for (var i = 0; i < btn.length; i++) {
                //逐个为按钮注册点击事件
                btn[i].onclick = function () {
                    //改写按钮的显示文本
                    this.value = '呜呜';
                };
            }
        };
    </script>
    

    给图片添加描述: 当鼠标经过特定的图片时,就显示出图片的具体信息.

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <style>
            #showCountry {
                position: absolute;display: none;
                 200px;height: 100px;
                border: 1px solid red;
                background-color: blue;color: white;
            }
        </style>
        <script>
            var list = {
                'zg': ['中国', '北京', '牡丹', '世界第二大经济体'],
                'mg': ['美国', '华盛顿', '玫瑰', '白人与黑人一起劳动,却想到仇视'],
                'rb': ['日本', '东京', '樱花', '世界文明的两样东西:忍者和A片'],
                'hg': ['韩国', '首尔', '无穷', '民族意识超强']
            };
    
            onload = function () {
                //获取所有图片
                var imgs = document.getElementsByTagName('img');
                //为每个图片指定指向、移开事件
                for (var i = 0; i < imgs.length; i++) {
                    imgs[i].onmouseover = function(e) {//指向国旗显示国家信息
                        //获取国家信息
                        var msg = list[this.id];
                        //构造描述字符串
                        var msgStr = '国家:' + msg[0] + '<br>首都:' + msg[1] + '<br>国花:' + msg[2] + '<br>描述:' + msg[3];
                        //获取div
                        var showCountry = document.getElementById('showCountry');
                        //显示div
                        showCountry.style.display = 'block';
                        //设置描述信息
                        showCountry.innerHTML = msgStr;
                        //让div在鼠标的位置显示
                        showCountry.style.left = e.clientX + 'px';
                        showCountry.style.top = e.clientY + 'px';
                    };
                    imgs[i].onmouseout = function() {//移开国旗隐藏显示
                        //获取div
                        var showCountry = document.getElementById('showCountry');
                        showCountry.style.display = 'none';
                    };
                }
            };
        </script>
    </head>
    <body>
        <img id="zg"  width="100" height="100" />
        <img id="mg"  width="100" height="100" />
        <img id="rb"  width="100" height="100" />
        <img id="hg"  width="100" height="100" />
        <div id="showCountry"></div>
    </body>
    

    动态生成表格: 通过JS代码动态的生成表格,将鼠标放上后会高亮本行.

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script type="text/javascript">
        var bgColor;
        var list = [
            { id: '1', country: '中国', capital: '北京' },
            { id: '2', country: '美国', capital: '华盛顿' },
            { id: '3', country: '日本', capital: '东京' },
            { id: '4', country: '韩国', capital: '首尔' }
        ];
        onload = function() {
            var body = document.getElementsByTagName('body')[0];
            
            //创建表格
            var table = document.createElement('table');
            table.border = 1;
            body.appendChild(table);
            
            //创建标题行
            var thead = document.createElement('thead');
            var item0 = list[0];
            for (var key0 in item0) {
                //创建标题单元格
                var th = document.createElement('th');
                th.innerText = key0;
                thead.appendChild(th);
            }
            table.appendChild(thead);
    
            for (var i = 0; i < list.length; i++) {
                //遍历对象
                var item = list[i];
                //创建行
                var tr = document.createElement('tr');
                table.appendChild(tr);
                //注册事件
                tr.onmouseover = function () {//指向行时高亮
                    //改变颜色前,先获取值,用于恢复
                    bgColor = this.style.backgroundColor;
                    this.style.backgroundColor = 'green';
                };
                tr.onmouseout = function() {//移开行时恢复原来颜色
                    this.style.backgroundColor = bgColor;
                };
                //设置行的背景色
                if (i % 2 == 0) {
                    tr.style.backgroundColor = 'red';
                } else {
                    tr.style.backgroundColor = 'blue';
                }
                
                //遍历对象
                for (var key in item) {
                    //创建单元格
                    var td = document.createElement('td');
                    td.innerText = item[key];
                    tr.appendChild(td);
                }
            }
        };
    </script>
    

    ◆反调试◆

    禁用F12调试键

    <script type="text/javascript">
    window.onkeydown = window.onkeyup = window.onkeypress = function (event) {
        if (event.keyCode === 123) {
            event.preventDefault(); // 阻止默认事件行为
            window.event.returnValue = false;
        }
    }
    </script>
    

    禁用页面的ctrl功能,来禁止ctrl+S保存功能

    <script type="text/javascript">
    //禁用页面的ctrl功能,来禁止ctrl+S保存功能
    window.addEventListener('keydown', function (e) {
        if(e.keyCode == 83 && (navigator.platform.match('Mac') ? e.metaKey : e.ctrlKey)){
            e.preventDefault();
        }
    })
    </script>
    

    禁用页面的ctrl功能,来禁止ctrl+C保存功能

    <script type="text/javascript">
    window.addEventListener('keydown', function (e) {
        if(e.keyCode == 67 && (navigator.platform.match('Mac') ? e.metaKey : e.ctrlKey)){
            e.preventDefault();
        }
    })
    </script>
    

    屏蔽Ctrl+Shift+I

    <script type="text/javascript">
    window.addEventListener('keydown', function (e) {
        if((e.ctrlKey) && (e.shiftKey) && (e.keyCode == 73)){
            e.preventDefault();
        }
    })
    </script>
    

    为右键添加自定义事件,禁用菜单右键,或者使用HTML插入代码来禁用菜单.

    <script type="text/javascript">
    window.oncontextmenu = function() {
        event.preventDefault();
        return false;
    }
    </script>
    
    <body leftmargin=0 topmargin=0 oncontextmenu='return false' ondragstart='return false' 
    onselectstart ='return false' onselect='document.selection.empty()' 
    oncopy='document.selection.empty()' onbeforecopy='return false' onmouseup='document.selection.empty()'>
    

    当通过特殊途径打开浏览器调试窗口时,会无限刷新,导致无法调试

    <script type="text/javascript">
    var x = document.createElement('div');
    var isOpening = false;
    Object.defineProperty(x, 'id', {
      get:function(){
         console.log("Please close debug now");
          window.location.reload()
      }
    });
    console.info(x);
    </script>
    

    当通过特殊途径打开F12时,会清空页面内容.

    <script type="text/javascript">
    var x = document.createElement('div');
    var isOpening = false;
    Object.defineProperty(x, 'id', {
      get:function(){
        bodys=document.body.firstChild.data;
        document.body.innerHTML=bodys;
        heads = document.head.firstChild.data;
        document.head.innerHTML=heads;
        document.open();
        document.close();
      }
    });
    console.info(x);
    </script>
    

    当控制台被打开时,自动清空所有内容,只保留一段话.

    <script type="text/javascript">
    document.onkeydown = document.onkeyup = document.onkeypress = function(event) { 
      var e = event || window.event || arguments.callee.caller.arguments[0]; 
      if (e && e.keyCode == 123) { 
    	document.open();
    	document.close();
    	var docFragment = document.createDocumentFragment();
    	var node = document.createElement("b");
    	var node_text = document.createTextNode("请勿调试本页面..");
    	node.appendChild(node_text);
    	docFragment.appendChild(node);
    	document.body.appendChild(docFragment);
    	} 
    }
    </script>
    

    自动触发点击指定标签

    <script type="text/javascript">
    setTimeout(function() {
        // IE
        if(document.all) {
            document.getElementById("clickMe").click();
        }
        // 其它浏览器
        else {
            var e = document.createEvent("MouseEvents");
            e.initEvent("click", true, true);
            document.getElementById("clickMe").dispatchEvent(e);
        }
    }, 2000);
    </script>
      
    <a href="http://www.baidu.com" id="clickMe">触发onclick</a>
    

    版权声明: 本博客,文章与代码均为学习时整理的笔记,博客中除去明确标注有参考文献的文章,其他文章【均为原创】作品,转载请务必【添加出处】,您添加出处是我创作的动力!

    警告:如果您恶意转载本人文章,则您的整站文章,将会变为我的原创作品,请相互尊重!
  • 相关阅读:
    Hibernate>查询缓存 小强斋
    hibernate>抓取策略 小强斋
    Spring>环境 及 为什么使用spring 小强斋
    Hibernate>一级缓存 小强斋
    Spring>环境 及 为什么使用spring 小强斋
    【设计模式系列】OO设计原则之LSPLiskov替换原则
    【设计模式系列】OO设计原则之SRP单一职责原则
    【Android】选项卡使用
    【人生】不管你挣多少, 钱永远是问题
    【设计模式系列】序
  • 原文地址:https://www.cnblogs.com/LyShark/p/13373710.html
Copyright © 2011-2022 走看看