2016-04-15 Eric Wang
把辛勤的耕作当做生命的必要,即使没有收获的指望依然心平气和的继续耕种。 路遥 在Java中,通常情况下,需要将异常堆栈信息输出到日志中,这样便于纠错及修正Bug,而多数情况下,大家最常用的是使用e.printStackTrace()直接打印堆栈信息完事,这并不是值的推荐的做法。 1. 当出现异常时,调用e.printStackTrace();其实相当于什么都没做,同时也不会把异常信息输出到日志文件中 2. 使用log.error(e.getMessage());只能够输出异常信息,但是并不包括异常堆栈,所以无法追踪出错的源点 3. 使用log.error(e);除了输出异常信息外,还能输出异常类型,但是同样不包括异常堆栈,该 继续阅读 »
2014-12-12 党洁
启动模式 lauchmode 在开启activity后 由activityXML中配置的默认模式 决定其所在的堆栈状态 和 退栈顺序 基本模式4种 standard 默认 每次都新建一个新的activity singleTop 位于栈顶 复用堆栈中原有的 否则新建一个 常用于存储一些状态值啥的 singleTask 堆栈中只能有一个实例 跳到SINGLE TASK的activity 会把其之上的界面踢出栈 主要通过这个属性 清理一些中间过渡界面 singleInstance 堆栈中只能有一个ACTIVITY 就是它自身 主要给予外部调用 返回就是回到桌面 示例: 继续阅读 »
2012-12-16 Klaus Ma
在编写Java程序时,Exception类的printStacktrace()可以打印异常堆栈,这个小工具极大的提高了调试效率;虽然不是一个好习惯,却很实用。习惯了Java编程,很希望 C/C++里也有这样的小工具可以帮助调试程序. 经过几天查找,发现其实每个系统都提供了打印调用堆栈的函数;这些函数是系统相关,这里仅以Linux下的函数作说明. Linux中共提供了三个函数用于打印调用堆栈: 继续阅读 »
2016-04-29 zzyhappyzzy
堆栈 栈用于静态内存分配,堆用于动态内存分配,它们都存储在内存RAM里。 栈 栈上面的变量一般编译时就分配好了(如函数临时变量等)。栈遵循LIFO(后进先出),非常方便管理。 栈的内存分配一般由系统管理,开发者无需关心。 读取栈上的变量速度很快。 当一个方法function被调用时,它会被push进栈中,该方法中的参数和局部变量存储在栈中,当方法执行完后,该方法pop出来,相应的栈空间被释放。 堆 堆上的变量,一般在程序运行期分配。 读取堆上数据速度较慢。 堆上的元素能够在任何时候被读取,开发者也能够在任何时候申请堆内存空间并且释放申请的空间,所以管理堆上的变量比较复杂。 通常我们说的内存管理实际上是指堆内存管理。 堆的大小 继续阅读 »
2016-10-29 ruki
tbox的协程实现,是stackfull模式的,需要指定独立堆栈和协程函数,目前暂时还不能像golang那样实现堆栈的动态增长,之后会对其进行支持。 目前提供下面一些功能特性: 1. 提供yield切换调度支持,这个是必须的哈 2. 提供suspend(挂起)/resume(恢复)协程接口,不同于yield的是,被suspend后,如果不显示调用resume恢复它,是永远不会被调度到的 3. 提供sleep等待接口支持 4. 提供io调度支持,支持socket等io等待(内部使用epoll, poll, kqueue, select, poll等接口调度) 5. 原生支持stream,socket,http等模块的协程支持,可 继续阅读 »
2015-06-20 W.Y.
ES6
今天讨论的新特性让我非常兴奋,因为这个特性是 ES6 中最神奇的特性。 这里的“神奇”意味着什么呢?对于初学者来说,该特性与以往的 JS 完全不同,甚至有些晦涩难懂。从某种意义上说,它完全改变了这门语言的通常行为,这不是“神奇”是什么呢。 不仅如此,该特性还可以简化程序代码,将复杂的“回调堆栈”改成直线执行的形式。 我是不是铺垫的太多了?下面开始深入介绍,你自己去判断吧。 more 简介 什么是 Generator? 看下面代码: javascript function* quips(name) { yield "hello " + name + "!"; yield "i hope you are enjoy 继续阅读 »
2014-03-21 Xiaosong Gao
iOS
iPhone中的线程应用并不是无节制的,官方给出的资料显示iPhone OS下的主线程的堆栈大小是1M,第二个线程开始都是512KB。并且该值不能通过编译器开关或线程API函数来更改。只有主线程有直接修改UI的能力。 一、线程概述 继续阅读 »
2014-03-25 W.Y.
1. 异常和 try/catch 当执行可能失败的操作时,采用异常机制和 try/catch 是一种直观的方式,这样我们就可以从异常中恢复,或将异常抛出,异常沿着调用堆栈到达调用者,调用者可以处理该异常或将其继续抛出。 看一个简单的例子: ```javascript function thisMightFail() { //... if(badThingsHappened) { throw new Error(...); } return theGoodResult; } function recoverFromFailure(e) { //... return re 继续阅读 »
2014-03-25 W.Y.
正如我们在凌乱的异步编程一文中看到的那样,基于回调函数的异步代码的错误处理也很快变得混乱起来,丢失了许多同步代码具有的优秀品质,使我们更难定位到错误原因。在用 Promises 简化异步编程一文中,我们介绍了 Promises,看到了它如何使我们回到“调用 - 返回”编程模型,允许异步错误像同步错误那样沿着调用堆栈向上传播,并提供一种更清晰方法来管理异步,特别是在处理错误时。 1. Try/catch/finally 在同步代码中,try/catch/finally 提供了一种简单友好但非常强大的惯用语法来执行任务、处理错误,并且总是确保稍后可以执行清理。 译注:idiom 习语 下面是一个简单的 try/catch/fin 继续阅读 »
2018-01-30 Vaniot
C++
一、常用的STL包含的文件 1 迭代器 #include 2 输入输出流 #include 标准输入输出流 #include 文件输入输出流 #include 字符串输入输出流 3 字符串 #include 4 函数对象 #include 3 通用容器 #include 4 向量容器 #include 双端队列 #include 链表容器 #include 队列 ,优先队列 #include 堆栈 #include 集合 继续阅读 »