精华内容
下载资源
问答
  • 左边的swagger上看起来是正常的,网络上很多都是用这种@Requestbody方式,但是我们约定的是form-data,所以不能使用@Requestbody接收参数。而如果不用,那么swagger文档上看到的都是全部铺开的,不是很方便使用。...
  • 用了sqlserver的分页后查询效率大大增加,不过在排序上遇到了点小问题,那就是每次点击触发sorting事件后,的sortdirection都是Ascending,查了下后发现有人已经详细分析过了,下面是原文:(来自破宝) ...
    用了sqlserver的分页后查询效率大大增加,不过在排序上遇到了点小问题,那就是每次点击触发sorting事件后,它的sortdirection都是Ascending,查了下后发现有人已经详细分析过了,下面是原文:(来自破宝

    GridView 是 ASP.NET 2.0 中提供的原来 DataGrid 的后继控件。提供了比 DataGrid 更为强大的功能。

    GridView 现在有两种数据绑定模型。一种是向后(backward)兼容 1.x 的 DataSource 语法。一种是新的 DataSourceID 语法。

    前者通过在代码中直接将数据源赋值给 DataSource 属性,并调用 DataBind 方法实现数据的绑定。
    后者可以在“Design”视图中,放置 DataSource 控件(SqlDataSource, AccessDataSource, ObjectDataSource, XmlDataSource等),然后将 DataSource 控件的 ID 在“Properties”面板中设置给 GridView 控件的 DataSourceID 属性。

    关于第二种绑定语法,QuickStart 中的示例挺多。演示了自动的分页、排序、(通过脚本回调式的)无刷新分页、排序等等。应该很全面了。

    我尝试用一个 GridView 控件列出 ASP.NET 2.0 成员资格(Membership)中的所有角色。简单的使用 System.Web.Security.Roles.GetAllRoles() 方法即可得到全部的角色列表。

    Roles.GetAllRoles 方法返回的是一个 string 数组,直接按照第一种绑定语法,写上两行代码:this.GridView1.DataSource = Roles.GetAllRoles(); this.GridView1.DataBind(); 效果便出来了。

    只有一列,列头是一个“Item”字样,很不好,我需要自定义的列头(比如我想写一个“Role”的列头会更好一些)。这个“需求”可以简单的用自定义 GridView 的 Columns 来实现:我添加了一个 TemplateColumn,指定列头为“Role”,模版中写的代码是 还是用 1.x 中的绑定语法。(其实 2.0 中新推出的绑定语法是 EvalBind 语法,不过我这个地方没办法使用。不信?你试试看,呵呵)另外,要顺便关闭 AutoGenerateColumns 属性。

    OK,截至目前,上面的需求都顺利完成了,下面我尝试给它加入排序功能。

    对于 GridView 的 Column 来说,如果其 SortExpression 没有设置,呈现后的列头不会出现排序用的 LinkButton。于是我就为刚才添加的那个 TemplateColumn 设置了 SortExpression = "role"。现在再到浏览器里去看,LinkButton 就出来了。

    点一下试一试?那个再熟悉不过的错误页面出来了,“The GridView 'GridView1' fired event Sorting which wasn't handled.”查了查文档,原来,GridView 内置了对于第二种绑定模型的自动分页、排序功能。对于通过 DataSource 的第一种绑定模型,GridView 只提供 UI,不提供实现。看来还需要我们手工去实现。

    文档还有刚才那个错误消息都告诉我们,实现排序是通过 Sorting 事件。这个事件处理程序,我是这么写的:

    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) ...{ if (e.SortExpression == "role") ...{ string[] roles = this.GridView1.DataSource as string[]; if (roles == null) ...{ roles = Roles.GetAllRoles(); } if (e.SortDirection == SortDirection.Ascending) ...{ Array.Sort<string>(roles); } else ...{ Array.Sort<string>(roles, new Comparison<string>( delegate(string a, string b) ...{ return -a.CompareTo(b); } )); } this.GridView1.DataSource = roles; this.GridView1.DataBind(); } else ...{ e.Cancel = true; } }

    效果如何呢?点一下试验一下,第一下还好用,正序排列没问题;再点一次问题就出来了:依然是正序,并没有按照预想那样变成逆序。

    我在?Visual Web Developer?2005 Express?Edition 中启动 Debug,设置了断点,发现每次进入这个事件处理程序时,e.SortDirection 都等于 Ascending。看来问题出在这里啊。

    尝试了其他一些方法,都没有解决这个问题,我决定使用 Reflector 来看看究竟。有这么两段代码:

    private void HandleSort(string sortExpression) ...{ if (this.AllowSorting) ...{ SortDirection direction1 = SortDirection.Ascending; if ((this.SortExpressionInternal == sortExpression) && (this.SortDirectionInternal == SortDirection.Ascending)) ...{ direction1 = SortDirection.Descending; } this.HandleSort(sortExpression, direction1); } }

    Sorting 事件触发前,实际上是有这样的一个判断:如果此次排序列的 SortExpression 和前次的排序列的 SortExpression (GridView 的 SortExpression 属性值和它等价,即上面的 SortExpressionInternal 字段)相同,并且前次排序方向为正序,那这次排序方向就改为 Descending。其他情况为 Ascending。这段代码和我们的预期逻辑是一致的,但为什么效果不对?接着看:

    private void HandleSort(string sortExpression, SortDirection sortDirection) ...{ bool flag1 = base.IsBoundUsingDataSourceID; GridViewSortEventArgs args1 = new GridViewSortEventArgs(sortExpression, sortDirection); this.OnSorting(args1); if (!args1.Cancel) ...{ if (flag1) ...{ ....... this.SortExpressionInternal = args1.SortExpression; this.SortDirectionInternal = args1.SortDirection; this._pageIndex = 0; } this.OnSorted(EventArgs.Empty); base.RequiresDataBinding = true; } }

    看到了吧,if (flag1) { ... } 当 flag1 也就是 base.IsBoundUsingDataSourceID 为真时,才会执行那两行改变 SortExpressionInternalSortDirectionInternal 的代码。换句话说,如果使用的是第一种绑定模型,这两个 private 的字段是不会被修改的了;那么无论点多少次,在前面那个方法中,都不会进入 direction1 = SortDirection.Descending; 这一行代码的。

    如果是这样,能不能我们手动设置这两个要紧的字段值呢?很遗憾,GridView 的 SortExpressionSortDirection 两个属性是只读的,不能直接设置;SortExpressionInternalSortDirectionInternal 两个字段是 private 的,即使从 GridView 派生子类都无法访问这两个字段。

    找了一圈,似乎陷入绝境了,恐怕只能等微软来解决了。

    (BTW,哪位知道 .NET Framework 2.0 的 Bug 报告网址?)
    ====================================================
    我用了留言里的一种方法解决了问题:

        public SortDirection GridViewSortDirection
        {
            get
            {
                if (ViewState["sortDirection"] == null)
                    ViewState["sortDirection"] = SortDirection.Ascending;

                return (SortDirection)ViewState["sortDirection"];
            }
            set { ViewState["sortDirection"] = value; }
        }


    然后在sorting里面改变GridViewSortDirection的值就可以了。

    转载于:https://www.cnblogs.com/vagerent/archive/2007/10/17/927114.html

    展开全文
  • 程序是思想的表达,只有思想的才能写出意义的程序。 技术是问题的解决方案,只有合适的才是最好的,所以千万不要盲目追求使用某种新技术。 一、 在每一个线程内只要使用COM组件,就一定要调用COM初始化 在...

    程序是思想的表达,只有有思想的人才能写出有意义的程序。

    技术是问题的解决方案,只有合适的才是最好的,所以千万不要盲目追求使用某种新技术。

    一、              在每一个线程内只要使用COM组件,就一定要调用COM初始化

    在COM中,COM环境的维护是以线程为单位的,在一个线程里初始化了COM环境,只要这个线程退出,那么COM环境就被注销了。这时,倘若我们在其他的线程里在使用组件就会调用失败,表现在两个方面:

    1、已经创建了的对象无法释放,即调用Release会出错。

    2、要创建的对象无法创建,即调用CreateInstance会失败。

    因此、建议总是调用CoInitialize

    二、              不要在线程之间传递原始接口指针

    一个COM对象往往具有共用性,在一个进程的不同线程内,不同的进程中可能需要对同一个COM对象的同一个接口的访问。这就引入了并发问题。COM并发的一个基本原则,就是如果多个不同线程共享同一接口,那么在线程之间传递接口时,首先要进行封送。封送接口指针可使COM创建一个新的代理,以允许从另一个单元向外调用。不通过封送而将一个原始接口指针(内存中的一个32位地址)直接传递给另一线程,会绕过COM的并发机制,将会由于各种临界资源的访问产生各种错误。Windows NT 4.0 和更高版本可以使用一对名为 CoMarshalInterThreadInterfaceInStream 和 CoGetInterfaceAndReleaseStream 的 API 函数,在线程之间轻松地封送接口指针。

    三、              接口调用的默认规则

    一个接口往往是实现一组功能的函数集合。设计的原则是函数的独立性,即是强调各个函数之间尽量做到相互独立。最后的结果就是它们之间的调用次序不会影响函数功能的实现。但是,在具体的实现中,往往由于各方面的缘故难以满足这个要求。这就有了函数之间的依赖关系。举例来说,一个查询的函数的执行需要首先存在数据库连接,而这个连接是通过另外的一个接口函数传入对象里面的,那么,这两个函数就有了调用的先后顺序,我们称之为接口调用的默认规则

    这个规则的普遍存在,除了要求我们在设计接口时要避免,更重要的是维护规则的逻辑不变性。无论对象内部如何调整,都不会影响到外部的用户。

           因此接口的发布时,除了描述接口函数功能,还要描述接口调用的默认规则。

    四、              函数实现和调用的良好习惯

    在某些函数的实现时,往往我们需要通过函数的参数返回一个对象或者接口指针。首先说实现,存在两种可能,一是函数满足用户的要求,返回了对象或者接口的指针;二是函数不能满足用户的要求,不能返回对象或者接口的指针。良好的习惯就是函数要对自己的能力明确表态,如果能实现,则返回,否则应该赋值NULL。这样用户可以根据参数返回值得知指针的有效性。其次说调用,也存在两种可能,一是函数明确表态,用户在调用了函数之后,可以判别指针返回值;二是函数只能返回正常值,对于不能满足的,参数返回值不做任何赋值操作,这就可能是乱码啊。良好的调用习惯就是指针在调用函数之前先进行初始化赋值NULL。试想,如果供需双方都有不良习惯,那么,函数在正常调用时,没有任何错误;倘若不能正常调用时,只能出错了。

    五、              界面状态机

    在这里定义界面的状态机,主要是为了解决界面控制和用户操作带来的问题,企图保证界面状态的正确:包括输入数据、输出数据、可操作性。

    六、              全局变量的弊端和妙用

    作为全局变量一向由于其作用范围广,便于在对象间传递信息的优点被许多程序员使用,但是好的东西往往也有反面性,根据本人的建议,一般情况下,还是少用全局变量为妙。全局变量是在模块装载时就装载并分配内存的,其有效期为模块存在的整个生命期内,与模块内对象的生命期无关。由于全局变量的作用范围广,作用周期长,容易使得程序带来记忆效应,容易 出现问题。由于模块内的任何对象和函数都具有对全局变量的修改能力,容易使得全局变量的值修改出错;全局变量的应用会增加模块之间的耦合性,打乱模块之间的逻辑结构。所有这些都说明全局变量存在着各种弊端,但是,我们并没有禁止使用,正是由于全局变量在模块退出时才最后析构,可以利用全局变量的这一特点来判断对象的状态,这正是全局变量的妙用。

    七、              程序的运行过程和DLL的调用机制

    程序的运行首先是由操作系统将程序代码装入内存栈中,栈中就有了类的定义,函数实现等,然后进入运行阶段,首先,创建全局变量,如果全局变量是对象,那么就要根据类定义(成员的大小)分配内存,保存对象,同时使对象的函数列表指针指向类的函数列表。从而使对象具有了成员和函数的双重功能。

    八、              测试工作三步走

    1、界面、功能、性能三大内容

    2、界面讲控制-状态机,闭集回归

    3、功能:考虑业务逻辑正确性,算法逻辑正确性,功能实现全面性

    4、性能:考虑业务逻辑性能优化,算法逻辑性能优化

    5、语言逻辑:正确性和速度优化

    九、              关于线程

    多线程对于模块划分的问题和多线程中线程有效性判断。多线程对于模块的划分要掌握一个 “功能原子性”原则,这类似于数据库设计中的原子性原则。

    十、              关于内存和野指针

    关于内存的详细讨论,我专门写了一个专题《关于内存问题和使用内存建议》,这里指了一般错误原因。

    1        内存分配未成功,却使用了它。

    2        内存分配虽然成功,但是尚未初始化就引用它。

    3        内存分配成功并且已经初始化,但操作越过了内存的边界。

    4        忘记了释放内存,造成内存泄露。

    5        释放了内存却继续使用它。

     

    十一、   Windows程序运行机制

    在Window操作系统平台上编写window程序,不能不了解window程序的运行机制:这就是Windows消息机制。Windows消息犹如发动机的油泵,获取用户操作等的各种消息,并发送出去,由窗口接收消息,并作相应的处理。因此,在编写程序时,如果有什么问题无法解决时,我们不妨回到消息机制中来,通过消息机制来实现,必定这是window操作系统的根本,也是经验。

    十二、   软件工程化之路

    用分阶段的周期计划严格管理

    1.项目概要计划

    2.里程碑计划

    3.项目控制计划

    4.产品控制计划

    5.验证计划

    6.运行维护计划

    坚持阶段评审:错误发现的越晚,修正这些错误所付出的代价越大。坚持阶段评审,以便尽早发现错误。

    严格的产品控制:需求等变动所造成的软件改动,要保证各界段文档与代码一致。

    结果应能清楚地审查:为保证阶段化管理,明确地规定开发小组的责任和产品标准

    十三、   关于使用ADO进行数据库操作的说明

    数据库打开判断和关闭,数据集判断

    循环与moveNext的对应

    数据库操作(插入、删除、修改)事务机制

    数据库查询的精简机制和类型匹配机制。

    数据集打开和执行SQL语句的方式打开。

    查询的关心属性与关键属性的选取,语意与语句不一致,语意如何以逻辑的形式表达,这条适合关联查询和其他查询,这种情况建议使用层次查询,但是层次查询将会出现循环,所以会影响速度。所以说改善查询条件是至关重要的。

    十四、   运行时类型识别

    需要进行内存块的检测。

    十五、   面向对象的本质

    设计面向对象的类,做C++的设计者,而不要做VC工具的奴隶。

    十六、   接口的多态和对象的多态

    多接口,是对象多态的体现,一个对象可以有不同的功能。

    一个接口被多个对象实现,这叫做接口的多态,调用统一接口,却看到了不同的结果,这个问题,在C++中应用非常普遍。自动化和ATL中的多接口实现多态

    十七、   自动化和ATL的选取,最好不要混用

    十八、   注册的本质:静态注册和动态注册

     静态注册,也就是我们所说的将对象、接口、类型库的位置写入注册表,通过注册表建立起他们及其位置的对应关系。

    十九、   自描述语言和格式化语言的选择

    自描述语言XML在信息传递、特别是网络信息传递中具有不可逾越的优势,但是,自描述语言由于带有自描述的赘余信息,致使数据量大,在读取和写入时,比较耗时。因此,在选择自描述语言生成文件还是格式化文件时,关键要看信息占用度。如果信息占用度较高,则可以采用此种文件格式,否则,信息占用度较低,且又要关系计算的速度,则最好采用格式化数据。第二种选择方案是:如果文件信息是用来与外部交换数据的则采用XML,如果是内部的计算过程文件,则只需要格式化数据。

    二十、   Goto和return 的谨慎

    鉴于goto得到了C++程序员公然的抨击,但是return 的使用,却没有引起程序员足够的重视,尤其在一些复杂的含有动态分配的问题中,返回前没有保证内存问题,这就造成了内存使用的问题。

    二十一、      数组定义的大小问题

    好多采用变量定义的数组,致使编译器无法通过编译,这是由于编译阶段,编译器无法识别数组的大小问题造成的,有些大小是在编译阶段就已经知道了,有些则必须在运行阶段才能够解决。

    二十二、      为什么静态数组的大小不能采用变量?

    这涉及到程序的编译期和运行期两个阶段的问题。

    二十三、      计算机的栈思想应用

    辅助解决程序返回时的错误。

    二十四、      想不到的exit原来这么武断、这么懒

    所以你最好不要用它。

    二十五、      编成良好的习惯能够暴露逻辑问题和解决问题

    二十六、      三个目标:

    1、自觉执行起编码规范,严格编码

    2、引入设计模式,设计出良好的组件、系统

    3、重视复用,逐步建立完善的可复用组件库

    二十七、      系统交互性(输入、输出、灵活控制)

    界面友好的本质在于从用户角度考虑,用户易于获得所期望的结果,增加人性化的设计.这必然要求与用户进行大量的交互。确定用户以什么方式输入比较合适,然后以什么方式输出结果才合理,实用。例如,商业化的软件像Word,Excel ,

    XML,Txt,Access,dmp格式的文件已经成为全球人们信息交互的主要载体.那么,我们的软件在入口和出口上都应该充分的考虑这些数据格式.比如,将Word 的表格数据,通过设置的行列对应关系进行入库,而不要一个一个的入库,这样就来得简单.输出的数据也同样保存为这些格式。

    开发软件具有自己的数据形式,具有完善的功能需要庞大的开发工作量,同时增加了开发难度,合理的采用商业化的软件作为中间介质,不但具有通用性,同时也可以利用商业化的软件完成相当数量的功能,稳定、简单而实用。比如将

    表格数据存储为Excel,就可以很轻松的实现打印等。

    二十八、      逻辑关系的定制、存储,简化界面的开发

    在开发复杂界面,且界面与数据相关的情况下,请不要在软件中将数据的关系锁死,这样一旦修改数据的关系,软件就要跟着修改,增加了开发和测试的工作量。这种数据之间的逻辑关系,我们可以进行综合归类,或通过数据库,或者通过格式化文件来描述这种逻辑关系,在软件实现中,只考虑逻辑关系,不考虑具体的数据,这样就不会由于数据扩展升级带来麻烦。例如需求数据采集,需求类型,网络类型关系要在库中存储,然后在外面可以设置修改他们的关系。

     

    二十九、      在数据库查询中,关键字段和非关键字段的使用:关键字段可以关联,非关键字段不能关联,注意正确表达语义,不要漏掉记录,也不要多选记录

    三十、   一个分号引发的血案

    三十一、      一个括号{}生机无限

    三十二、      查找文件函数,注意千万别漏了

    三十三、      桥模式的魅力

    三十四、      模式的本质在于理解问题本身后灵活运用

    三十五、      有关数据库操作中的翻译,请不要采用if语句,而应该在数据字典中定义,通过语句查询而得,有利于提高查询效率和简化编程。

    三十六、      软件架构

    软件架构多组涉众,具有多个视图。

    第一个问题,软件架构的表达与交流问题。

    第二个问题,软件架构的设计问题,可以从用户、客户、开发人员、管理人员四个视角采取分而治之的方式进行设计。软件架构设计中牵扯很多概念和技术,例如逻辑层、物理层、子系统、模块、接口、进程、线程、消息和协议等,可以一次只围绕少数概念和技术展开,分别着重研究软件架构的不同方面。

    架构设计方法的5视图:逻辑架构、开发架构、运行架构、数据架构和物理架构,其中逻辑架构视图和物理架构视图是最基本的架构视图。

    物理架构规定了组成软件系统得物理元素,这些元素之间的关系,以及他们部署到硬件上的策略。物理架构可以反映出软件系统动态运行时的组织情况。

    软件逻辑架构设计的三大核心任务:

    l        识别功能块

    l        规划功能块的接口

    l        明确功能块之间的使用关系和使用机制。

    成功的软件架构设计应具有的品质:

    l        良好的模块化。每个模块职责明晰,模块之间松耦合,模块内部高聚合并合理地实现了信息的隐藏;

    l        适应功能需求的变化,适应技术的变化。典型地,应该保持应用相关模块和领域通用模块的分离,技术平台相关模块和独立于具体技术的模块相分离,从而达到隔离变化的效果;

    l        对系统的动态运行有良好的规划。明确哪些模块是主动模块,那些模块是被动模块,他们之间的调用关系和加锁策略。

    l        对数据的良好规划。包括数据的持久化存储方案,数据传递、数据复制、和数据同步等策略。

    l        明确灵活的部署规划。涉及到可移植性、可伸缩性、持续可用性和互操作性。

     

    展开全文
  • 一次我在培训说「程序员要善于使用 Terminal 以提高开发效率」,一位程序员反驳道:「这是 21 世纪,我们为什么要用落后的命令行,而不是先进的 GUI?」 是的,在一些眼里,这个黑黑的终端窗口确实代表着...

    引言

    有一次我在培训时说「程序员要善于使用 Terminal 以提高开发效率」,一位程序员反驳道:「这是 21 世纪,我们为什么要用落后的命令行,而不是先进的 GUI?」

    是的,在一些人眼里,这个黑黑的终端窗口确实代表着落后,或者装B。
    而在另一些人手里,它却是一个高效的工具。

    其实很多人觉得 Terminal 难用,他们认为:

    • 命令很多,难记
    • 敲命令很麻烦
    • 界面黑黑的,难看
    • ...

    我认为这些印象可能都来自于「未经任何武装」的 Terminal,实际上始终有一部分人是 Terminal 的忠实用户,他们也在推动着 Terminal 与时俱进。
    所以,接下来我准备分享一系列使用 Terminal 的技巧。

    目录

    别再用 CD 切换目录了
    「What the fuck」妈妈再也不用担心我敲错命令了

    正文

    使用 Terminal 最难的就是要叫住众多的 Linux 命令了,比如:sshcurlgrep等,经常会记不住参数的顺序。

    今天要介绍的工具叫:tldr
    在很多地方都会看到:「tl;dr」或「TL;DR」。
    它的意思是「Too long, Don't read」,翻译成中文就是:「太长不读」。

    我们可以使用man或者--help来查看特定命令的用法,但读起来效率很低。

    tldr 根据「二八原则」原理,将命令的常用「场景」给出示例,让人一看就懂。
    来看几个例子吧:



    怎么样,比man看起来舒服多了吧?

    安装

    安装也很简单,各种包管理工具都支持。

    还等什么,赶紧上手体验一下吧!


    「软件匠艺社区」旨在传播匠艺精神,通过分享好的「工作方式」和「习惯」以帮助程序员更加快乐高效地编程。
     

    转载于:https://www.cnblogs.com/zknublx/p/6378395.html

    展开全文
  • composer.lock是记录当前所有安装的php组件的版本,如果多人协作开发需保持下载的php组件的版本一样...需要注意的是,当composer install进行组件依赖不会进行更新composer.lock文件除非引入了新的组件到compos

    使用composer安装php组件时候你会发现创建了一个composer.lock文件,这是做什么的呢


    composer.lock是记录当前所有安装的php组件的版本,如果多人协作开发需保持下载的php组件的版本一样减少不必要的麻烦,那么需要把composer.lock加入版本控制当中,比如使用git或者svn那么你就需要把它加入把版本控制当中。

    反之则不用。


    需要注意的是,composer install进行组件依赖时不会进行更新composer.lock文件除非引入了新的组件到composer.json中,如果想更新请使用composer update会把组件更新到最新稳定版本同时会更新最composer.lock文件。

     

    如何优雅删除COMPOSER.LOCK

    刷新 composer.lock 文件

    composer update nothing 

    或者

    composer update --lock

    展开全文
  • 每个第一桶金——潘石屹

    千次阅读 2017-07-10 23:12:00
    一直想写点东西,但是肚子里又没有多少墨水,今天突然想到了一篇很好的文章,记在自己的摘抄本上,今天抽点空把誊在...每次有人问我这些问题,我都想说,人的第一桶金是自信。即使你没钱也不要怕,自信就是你的资本
  •  把移出系统盘,可以使系统盘“干净”,在更换系统可以不用备份和重新配置,基本上可以认为是绿色的。  而且,“让你到哪儿,你就得到哪儿”,自己的机器自己作主,这感觉还是很值得折腾一下的。  网上的许多...
  • 在手机游戏《王者荣耀》风靡全国的今天,多少因为玩游戏手机发烫,而不得不停下来给物理降温?多少在团战正酣的时候手机突然提示电量低,错过打BOSS最佳时机而被冠以“猪队友”,“坑王”的名号?又...
  • Windows XP是目前大家普遍使用的操作系统,其...但是也像一样会闹个头疼脑热,出现点“感冒”症状,严重得了重感冒一病不起也是不鲜见的事,这时很多就会想到重装系统,但重装系统一个最大的麻烦,就是...
  • 莫管漏水

    千次阅读 2005-07-08 19:12:00
    一次,一条渡船过河,船身突然撞上了礁石。河水不断地涌进舱里,旅客们惊慌失措。 唯有一位先生没事似地坐着不动,并且讥笑众人大惊小怪。 “不用着急嘛!关咱们什么事,”那说,“莫管漏水!船又不是咱们的...
  • 免费的5T大容量更是满足了大家存储稀有资源的需求,唯一让恼火的就是下载速度,当你想要再次观看自己存储的内容,面对几十KB的下载速度,确实一点无所适从。 一个几G的大文件,居然要让我下载几个小时?...
  • 只是说了相应的框架与库,写起来更为便利。 本文也准备了一个原生实现<a href="https://github.com/Lucifier129/Lucifier129.github.io/tree/master/todos-vanillajs">todos-vanillajs</a>,可作MVC...
  • c++写拷贝

    2019-02-02 18:16:43
    当一个拷贝构造一个需要动态开辟内存空间的对象,用浅拷贝就会出现空间被释放两次的情况,这样显然会出现问题,用深拷贝的话就可以解决此问题,但是每一次不管不用都是空间被申请,这样就很浪费。...
  • 图解JVM运行数据区

    2019-03-25 17:47:47
    图解JVM运行数据区 前沿 Q1:为何要图解? 在我自己学习JVM的时候,啃过很多相关的书籍,但是总是不能形成一个长久的记忆。书上晦涩的词语即使当时记住了但是长久不用也会忘记。用图解的方式就是作者亲自使用...
  • 关掉浏览器清除session

    千次阅读 2008-09-01 09:31:00
    可是,当你给一个flag实际还是存储在session中,这样的话,在我把url直接跨过框架指向一个新增或者其它后台页面,只要session中登录过保存的值,直接关闭后,还是没有清除,因此,有人下次不用登录就可以指...
  • 2011年,当时的宝马机界面负责Bernarhd Neidermaier在一次交流中提到,设计师们心里其实一条水平参考线——显示相关的都在线上,控制相关的在线下。他们努力将两者剥离,目的是尽可能地减少低头看屏分散注意力...
  • 您的宠物很可爱吧,您要离开怎么办?找宠物公司来照顾他们?现在不用了。加拿大大学生推出了其3D打印的宠物机器人PetBot,能照顾您的宠物,让您远程监控宠物,并能让您和宠物互动。 “认为宠物是一个...
  • 这在构建数据科学项目非常有用,因为通常会明确的阶段,例如EDA和建模。 这使您的项目更易于消化,因为某人可以在特定阶段运行一个笔记本,而不用运行一个冗长的笔记本。 我还建议在每个阶段将数据/模型另存为...
  • 厉害的

    2021-05-31 09:09:20
    动手,从「消费」到「创造」。...当你玩到一款精良的神作游戏,当然不用你去再做一个游戏,但你没有想过去主动寻找游戏彩蛋,创造新的玩法,写攻略分享出去呢? *一些自由度极高的游戏里这种大神
  • 当你学会运用自己内在无限的潜能,你才变得真实而价值。为了帮助你充分利用自己的潜能,我写下了这本书,希望你读过以后,能发现或利用自己内在的金矿或油井。你的"自然资源"跟地球上的自然资源不同,如果一直...
  • 这些平台一般都很完善的修改手机号的功能,你只需要按提示进行操作,并提供必要的证明,如身份证信息,可能再配合线上的实认证即可以。 银行卡的话,相对麻烦些,不同的银行,可能办理流程不同,...
  • 我觉得百分之九十的提出这个问题的情形是应该这样的:他没有用接口的习惯,在能少则少的指导思想下,只要是只有一个类,他绝对不用接口。突然一天,他看到他的一个同事,在写具体的类之前,先把接口写好了并且...
  • 不用声明,因为没有人也不能有人调用。中断函数可以写在子程序中,无需在.h文件中声明,他可以在和主函数完全不同的一个.c文件中,而且也无需在头文件或主函数所在.c文件中声明。只需在工程中加载此文件即可。好像...
  • 当时我在Github上下载了一个SpringBoot的项目...网上有人不用,直接运行也是可以的,但是毕竟看着难受。下面就是解决方案: 用Maven构建的项目,在pom.xml中导入依赖: <dependency> <groupId>or...
  • 做一件事一定要目的,否则就失去了意义,无论为了什么最终目的是做好。我当初学习jvm就是为了面试,我发誓我不会再让虚拟机的问题难住,我要让那些面试官看看,于是我拿着周志明的《深入理解Java虚拟机》一遍一...
  •  由于本书第1版的赫赫声名,新版的《件》是我不用看就会决定购买的少数几本书之一。  ——Steve McConnell, IEEE Software  这是我一直喜爱的软件工程书籍。《件》正确指出软件工程是针对“”,而不是针对...

空空如也

空空如也

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

有人时不用它