精华内容
下载资源
问答
  • 《高质量编程程序设计指南-C/C++语言》中有这样一句话:return语句不可返回指向“堆栈内存”的“指针”或者“引用”,因为该内存单元在函数体结束时被自动释放。 (1) char *Func(void) {  char str[]="hello ...

    出处:http://blog.sina.com.cn/s/blog_4a1648c50100sugm.html

      

    《高质量编程程序设计指南-C/C++语言》中有这样一句话:return语句不可返回指向“堆栈内存”的“指针”或者“引用”,因为该内存单元在函数体结束时被自动释放。
    (1)
    char *Func(void)
    {
       char str[]="hello world"; //str数组创建在函数堆栈上,并用字符串常量来初始化
       ......
       return str; //该句存在隐患,str指向的内存单元将被释放
    }
    (2)
    const char *Func(void)
    {
        (const) char *p="hello world";  //字符串常量存放在程序的静态数据区
        ......
        return p;  //返回字符串常量的地址,没有问题
    }
    (3)
    void Func(char *p)
    {
       p="hello world";  //这样就有问题了
    }
    char q[10];
    Func(q);
    以上函数调用之后,q的值不会因为调用函数而改变成“hello world”.

    展开全文
  • 最近在看java核心技术,在之前写代码的过程中没有意识到 “不可编写返回引用可变对象的访问器方法” 这一知识,特此记之。 转载自 https://blog.csdn.net/m0_37620545/article/details/77895518 问题: 使用...

    最近在看java核心技术,在之前写代码的过程中没有意识到 “不可编写返回引用可变对象的访问器方法” 这一知识点,特此记之。
    转载自 https://blog.csdn.net/m0_37620545/article/details/77895518

    问题:
    使用java进行编程时,有时会发现在一个类中明明定义的是private类型,结果却能够在其他类中被修改。
    代码:

    class Employee
    {
        private String name;
        private double salary;
        private Date hireDay;
    
        public Date getHireDay(){
            return hireDay;
        }
    
    }
        Employee harry = new Employee("harry",75000,1987,12,15);
        Date d = harry.getHireDay();
        double tenYearsInMilliSeconds = 10 * 365.25 * 24 * 60 * 60 * 1000;
        d.setTime(d.getTime() - (long)tenYearsInMilliSeconds);
        System.out.println(harry.getHireDay());

    按理说这里hireDay定义成了Date,此时打印输出的harry的雇佣日期应该是1987年,结果却是“Wed Dec 14 12:00:00 CST 1977”?!
    出错的原因很微妙。d和harry.HireDay引用了同一个对象,对调用更改其方法就可以自动的改变这个雇员对象的私有状态。如果这里在main函数中更改引用的salary,就不会出现这个问题,如:

    class Employee
    {
        private String name;
        private double salary;
        private Date hireDay;
    
        public double getSalary(){
            return salary;
        }
    }
        double test = harry.getSalary();
        test = 50;
        System.out.println(test);
        System.out.println(harry.getSalary());

    打印结果:
    50.0
    75000.0
    解决方法:
    如果需要返回一个可变对象的引用,应该首先对它进行克隆。对象clone是指存放在另一个位置上的对象副本。下面是修改后的代码:

    class Employee
    {
        private String name;
        private double salary;
        private Date hireDay;
    
        public Date getHireDay(){
            return hireDay.clone();
        }
    }

    凭经验可知,如果需要返回一个可变数据域的拷贝,就应该使用clone。
    这里有的同学可能会想到,如果hireDay用final修饰,是不是就解决了这个问题呢?然而事实并非如此,对于可变的类,使用final修饰符可能会对读者造成混乱。private final Date hireDay;仅仅意味着存储在hireDay变量中的对象引用在对象构造之后不能被改变,而并不意味着hireDay对象是一个常量。任何方法都可以对hireDay引用的对象调用setTime更改器。
    参考:Java核心技术。

    展开全文
  • 近期要做一个预约功能,其中预约日期是有范围限制的,预约的时间也是按后台配置起止时间的,这就需要前端将不需要的日期和时间设置为不可选择。 效果如下: 1、日期按照后台返回,控制能选择的日期。 2、时间的...

    近期要做一个预约功能,其中预约日期是有范围限制的,预约的时间点也是按后台配置起止时间的,这就需要前端将不需要的日期和时间设置为不可选择。

    效果如下:

    1、日期按照后台返回,控制能选择的日期。

    2、时间的话,过滤了不可选时间。

     

    这里使用的是iview的DatePicker组件,type为datetime

    日期不可选通过options属性来控制, 时间不可选通过time-picker-options属性来控制

    代码示例如下,可copy到iview这里运行查看效果:https://run.iviewui.com/S10Xjfll

    <template>
       
        <br>
        <DatePicker v-modal="time" :options="options3" :time-picker-options="{steps: [1,60],disabledHours: disabledHours,hideDisabledOptions:true}" type="datetime" format="yyyy-MM-dd HH:mm":editable="false" placeholder style="width: 200px"></DatePicker>
        <br>   
    
    </template>
    <script>
        export default {
            data(){
              return {
                steps: [1, 60],//下拉列表的时间间隔,数组的三项分别对应小时、分钟、秒。例如设置为 [1, 15] 时,分钟会显示:00、15、30、45。我这里只让选择整点,所以分钟间隔设置为60
                disabledHours: [0,1,2],
                ableDates:[],
                options3: {
                 disabledDate :(date)=> {
                   //这里写上自己的逻辑,返回true,表示当前日期需要设置为不可选
                     var disabled=true;
                     if (date.getTime()>=this.ableDates[0] && date.getTime()<=this.ableDates[this.ableDates.length-1]) {
                         disabled=false;
                     }
                     return disabled;
                  }
             },
                 disabled: false,
                time:''            
    
              }
            },
           mounted () {
             this.getDisabledHours();
             this.getAbledDates();
           },
           methods: {
              getDisabledHours(){
                //实际逻辑,是调接口获得能显示的时间点list,再算出需要设置为不可选的时间点,这里写死数组数据
                 let array = [0,1,2,3,4,5,20,21,22,23];                  
    
                 this.disabledHours=array;    
             },
             getAbledDates(){
                //实际逻辑,是调接口获得能显示的日期list,这里写死数组数据
               let res=[1563811200000,1563897600000,1564070400000,1564156800000];
               
                            for (let i = 0; i < res.length; i++) {
                                var dateUnix=res[i];
                                var date=new Date(dateUnix);
                                this.ableDates.push(date);
                            }
                        
             }
           }
        }
    </script>
    

     

     

    展开全文
  • 之前在网上找过,都说没有什么好的办法。我有的说有js,但效果不好,说连点两下能够让他失效,有不同浏览器中也无法兼容,如 function gogo(){ javascript:window.history.forward(1); } gogo(); 这段js代码加...

    在项目开发中非常多人会有这种需求。就是想要操作做过了不能后退。之前在网上找过点,都说没有什么好的办法。我有的说有js,但效果不好,不说连点两下能够让他失效,有不同浏览器中也无法兼容,如

    function gogo(){
        javascript:window.history.forward(1);
    }
    gogo();

    这段js代码加在html中能够在IE与google中有效,但到火狐中就失效了(ps:效果 是你点到下一张后,点回来,又立即到下一张去)


    <A HREF="http://www.baidu.com" οnclick="javascript:location.replace(this.href); 
    
    event.returnValue=false; "> 
    
    禁止后退到本页面的链接</A> 

    这段在google中有效(其它没有试)。但在我的IE中就失效了。所以也不是非常好(ps效果:点到下一张后,点回来。地址换了,所以回不到前一张)


    个人感觉最好的方法还是用ajax(在同一张界面内,要换内容。用js换)或走server(把缓存都清空掉,请他走流程时,都进server推断,可否到上一张)

    转载于:https://www.cnblogs.com/wzjhoutai/p/6728502.html

    展开全文
  • getElementsByTagName返回的类数组对象的属性是不可写的,但是是活的对象。因此对getElementsByTagName返回的对象做了如下测试。 ``` <!DOCTYPE html> window.onload=function () { var divs=document....
  • mybatis使用Set接受返回的entity集合 1.测试原因 说明:因为每次都是List queryXXXinfo 没有使用过set接受 前提:使用的是oracle数据库 测试set接受 补充小的知识: -- oracle查询建表语句模板 select dbms_metadata....
  • 一、String的不可变特性 熟悉Java的朋友都知道,Java中的String有一个很特别的特性,就是你会发现无论你调用String的什么方法,均无法修改this对象的状态。当确实需要修改String的值时,String方法的实现是构造一个...
  • dialog的代码是一个登陆状态异常后弹出,让强制重新登录的弹窗: AlertDialog.Builder builder = new AlertDialog.Builder( getActivity(), ... builder.setMessage("登录异常,请退出重新登录"); builder.se
  • String拥有一个特殊叫:String对象的内容不可改变! 在调用诸如String对象的replace()等方法时,不是在原Sting对象的基础上改变对象内容,而是创建了一个新的String对象把调用的方法后返回的结果放在这个新的...
  • 1. 核心概念entry:入口。webpack是基于模块的,使用webpack首先需要指定模块解析入口(entry),...本质就是一个函数,在该函数中对接收到的内容进行转换,返回转换后的结果。因为 Webpack 只认识 JavaScript,...
  • 在项目中为了实现选查询,是在ArcGIS Server里面发布了一个要素服务,然后将其添加到地图上渲染,并实现了鼠标的选查询功能,那这个功能可不可以通过发布服务来实现呢?想到这,打开电脑仔细翻看了了一下...
  • 题目大意:给一棵树,有黑白...分树持久化可以暴力拿个主席树维护分树的到堆的编号的映射,也可以将原树三度化之后直接持久化,后者这部分复杂度一个log(但是并很快)。 #include<bits/stdc++.h&...
  • 一、String的不可变特性 熟悉Java的朋友都知道,Java中的String有一个很特别的特性,就是你会发现无论你调用String的什么方法,均无法修改this对象的状态。当确实需要修改String的值时,String方法的实现是构造一个...
  • CAS单登录返回除ticket之外的其他参数欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格...
  • 虽然都9012年了,但男女约会...要是让女生付钱,根据次数来算,你就是小气、吝啬、吃软饭。所以,你宁愿窝在宿舍里吃一个月泡面,也敢让女生花一分钱。在这里,我真心的建议你:千万别和什么都让你买单的女生...
  • 项目中有这么一个需求:导入 (学生报名开发语言) excel表格时,如果数据库存在该id则执行导入,如果存在该语言id则提示前端,该语言id存在! 简单一点描述就是:给你几个ID,返回language表中存在的ID? ...
  • 最近三天痛苦了,被oracle和.NET之间的连接头都搞大了,经过不但的安装...(2)System.Exception: OCIEnvCreate 失败,返回代码为 -1,但错误消息文本可用。 解决问题一: 一连接数据库就出错误,刚开始弹出 ...
  • java不可变集合

    2020-02-18 17:39:39
    在 java.util.Collections 工具类里边,存在着一群类似的静态(status)方法,他们的共同是可以返回传入集合的不可变更视图,当我们需要不可变集合的时候,可以使用这些方法。这些方法有: Collection ...
  • 当然可以创建一个包含可变对象的不可变对象的,你只需要谨慎一点,不要共享可变对象的引用就可以了,如果需要变化时,就返回原对象的一个拷贝。最常见的例子就是对象中包含一个日期对象的引用。 ...
  • 在某些特殊定制的版本中要求完全去掉导航栏,那么当用户进一些系统自带的应用界面如设置、联系人等,就没法退出了,虽然可以在actionBar中添加back按钮,但总能每一个app都去添加吧。所以灵机一动我们就给系统添...
  • 欲调整ListBox每个项的高度,ListBox有一个自带属性ItemHeight,于是我们很自然的就设这个属性值,结果却发现改动,改后又返回默认值12,后面才发现要使该属性值有效更改,必须将DrawMode属性设为OwnerDr...
  • 如果APP需要后台驻留,用户返回到首页时会提示退出操作,我们可以退出而是隐藏至后台,这样的话APP就会在后台运行,以下代码须写在main.js里面,弹出的内容自定义设置。 let main = plus.android....
  • 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法...
  • 【电气学习】发电机励磁回路两接地保护11月10日,保护试验无方案,发电机烧损对发电机实际运行中,过励是指励磁电流(或电压)超过额定值的1.0~1.1倍,一般表现出来的是无功超额定,此时励磁装置会对输出进行限制,...
  • 目录 一、题目内容 二、解题思路 三、代码 ...int sumRange(int i, int j) 返回数组 nums 从索引i到j(i≤j)范围内元素的总和,包含i、j两(也就是 sum(nums[i], nums[i + 1], ... , nums...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,619
精华内容 1,047
关键字:

不可返回点