谁能帮忙看下这个代码的组成哪里有问题

1、下面程序的运行结果是

 
 

19、一个棧的入栈序列是 AB,CD,E则栈的不可能的输出序列是?(C)




堆栈分别是先进后出后进先出,选项 a 是 abcde 先入栈然后依次出栈,正好是 edcba選项 b 是 abcd 先依次入栈,然后d出栈 e再入栈, e出栈选项c是错误的不可能a先出栈。选项 d 是 a 入栈然后 a 出栈;b 再入栈, b 出栈依此类推。最后的結果选择 C

20、同一进程下的线程可以共享以下?(BD)

 




● 线程共享的内容包括:

进程的公有数据(利用这些共享的数据线程很容易的实现相互之间的通讯)


进程的当前目录和进程用户 ID 与进程组 ID
● 线程独有的内容包括:





21、递归函数最终会结束,那么这个函数一定(B)

 


触发 java.lang.OutOfMemoryError:最常见嘚原因就是应用程序需要的堆空间是大的,但是 JVM 提供的却小这个的解决方法就是提供大的堆空间即可。
除此之外还有复杂的原因:内存泄露:特定的编程错误会导致你的应用程序不停的消耗更多的内存每次使用有内存泄漏风险的功能就会留下一些不能被回收的对象到堆涳间中,随着时间的推移泄漏的对象会消耗所有的堆空间,最终触发java.lang.OutOfMemoryError: Java heap space 错误
解决方案:你应该确保有足够的堆空间来正常运行你的应用程序,在 JVM 的启动配置中增加如下配置:-Xmx1024m流量/数据量峰值:应用程序在设计之初均有用户量和数据量的限制,某一时刻当用户数量或数據量突然达到一个 峰 值 , 并 且 这 个 峰 值 已 经 超 过 了 设 计 之 初 预 期 的 阈 值 那 么 以 前 正 常 的 功 能 将 会 停 止 , 并 触

???????34、下列关于棧的描述错误的是(B)

 
 
A.栈是先进后出的线性表


D.对栈的插入和删除操作中不需要改变栈底指针

???????35、对于长度为 n 的线性表,在朂坏的情况下下列个排序法所对应的比较次数中正确的是(D)

 



36、阅读下列代码的组成后,下列正确的说法是(A)

 
 

B.编译时正确运行时将產生错误

???????37、执行以下程序后输出的结果是(D)

 
 



???????38、下列不属于持久化的是(A)

 
A.把对象转换成为字符串的形式通过网络传输,在另一端接收到字符串把对象还原出来
B.把程序数据从数据库中读出来
C.从 XML 配置文件中读取程序的配置信息
D.把程序数据保存为攵件

39、???????下列代码的组成输出的结果是(C)

 
 



40、下列程序段输出的结果是(B)???????

 
 



41、???????一个栈的输入序列为123则下列序列中不可能是栈输出的序列的是(C)

 



D. 1 2 3?????????????????????

程序员的工作内容除了大部分時间写代码的组成之外,因为有不少的时间是用在调试代码的组成上甚至说不是在调试代码的组成,就是即将调试代码的组成 :)

今天我們来谈谈调试代码的组成的一些技巧,在使用IDE提供的debugger时一些快速定位问题的方式

看到这里的朋友,不要马上认为我标题党再往下看看,如果你还有一些更好用的技巧欢迎留言。

开发过多线程应用的朋友应该有体会有些时候,为了观察多个线程间变量的不同状态以忣锁的获取等,就会想到在代码的组成里加个断点debug一下

在IDE里断点停下来的时候,可以切换到另外的线程中跑其他的代码的组成,不会互相影响当然,这里是有个开关的在Eclipse里默认开启,

但是在IntelliJ IDEA里默认是没有开启的也就是说如果你在IDEA里代码的组成里加断点,虽然一个線程的断了下来但其他线程的已经执行过了。此处把线程的suspend设置成和Eclipse模式一样之后也可以开始多线程应用的调试。简单设置可以直接茬断点处将suspend改成Thread

一个线程断下来之后,可以通过在线程窗口切换到其它线程中继续运行。

我们看到main线程和pool-1-thread-1这两个线程都处于RUNNING状态切換到任何一个都可以继续运行。

此时就可以写一个多线程的应用,同时向ArryList这一类非线程安全的容器中存放内容然后观察为什么他们是線程不安全的,会出现什么问题生动又形象。

PS: 这里顺道说一下这就是为什么创建线程时建议起一个有意义的名字,至少是可以识别的洺字否则在这里都不能区分出哪个是自己的线程,想切换还麻烦

这里所说的后退执行,是有些时候我们在debug代码的组成时懒的每个方法都进入单步调试,就会出现你观察一个变量值的变化时某个方法没跟进去,结果值就变了不得不重来一次。

依靠后退执行的功能鈳以后退,就像下棋时悔棋那种功能一样当然,这个后退招待的名字是我自己起的在IDE里被称为Drop Frame。

有了这个功能我们在Drop 了当前这个Frame之後,已经改变的变量值不会恢复比如你向当前调用方法里传入了一个List,并且在方法中向List里添加了内容那在Drop到调用该方法的地方时,List不會恢复到之前的状态

但是在该方法再次被调用时,你可以观察List什么时候被改变的至少不需要再重跑一遍程序了。甚至你可以一言不合僦后退

为了调试代码的组成,就需要在要观察变更的地方添加断点然后小心翼翼的一步步执行。但是如果是在一个循环里又或者该方法会被多线程同时调用到的时候,你小心的向下单步调试发现没有你关心的内容,又从循环开始处跑下来还是没你的内容,人就开始烦燥起来

其实,在添加断点的时候我们可以为断点增加一定的条件,这样在指定的条件满足时,断点才会生效

IntelliJ IDEA内,在断点上右擊会弹出如下图的条件框,输入指定的条件即可

有了条件断点,不相关不感兴趣的代码的组成就可以直接跳过了。

这个没想好用什麼名字来表述有些时候在调试过程中,忽然想招待一段与此相关但不在源文件中的代码的组成来观察一下,辅助进行问题分析此时伱会停止程序,添加代码的组成然后重新跑一次吗?

在IDEA里有一个执行代码的组成片断的功能可以在当前代码的组成的上下文内,执行你临時写的代码的组成

例如,当前方法传入一个List但这个方法里少一个你后面条件需要使用到的元素,此时你可以临时使用片断代码的组成執行的功能添加一个进去。

注意在IntelliJ IDEA里,这个上面红框像个小计算器的按钮就是临时执行的功能,点击之后会弹出按钮下方这个Evaluate Expression的框,输入代码的组成点击右下角的Evalute即可。返回值会显示在Result处

这就就相当于临时改变了变量内容。

然后还可以调用对象的方法,执行功能获取属性值等。

每个IDE在调试代码的组成时都提供了一个观察当前上下文变量值的窗口其实除了查看之外,一些非final的基本类型还鈳以直接在此处修改值。这样如果多次循环执行时每次可以恢复到期望的值,不需要重启程序

本站文章除注明转载外,均为本站原创戓翻译欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接尊重他人劳动成果

光看这个代码的组成截图太累了建议用浏览器的开发者工具去查问题。看看样式都应用了哪些造成这样的结果

我要回帖

更多关于 代码 的文章

 

随机推荐