barriers / 阅读 / 详情

visualstudiocode颜色代码起冲突的时候优先于哪个

2023-07-09 12:26:50
共4条回复
里论外几

"contrastActiveBorder"/在活动元素周围额外的一层边框,用来提高对比度从而区别其他元素

"contrastBorder"在元素周围额外的一层边框,用来提高对比度从而区别其他元素

"widget.shadow"编辑器内小组件(如查找/替换)的阴影颜色

"progressBar.background"表示长时间操作的进度条的背景色,是一个向右滑动同时伸缩的窄条

"foreground"整体前景色

"icon.foreground"工作台中图标的默认颜色

"imagePreview.border"图片边框颜色

"errorForeground"错误信息的整体前景色,颜色仅在不被组件覆盖时适用

活动栏

活动栏颜色"activityBar.activeBackground"活动栏当前选中项的背景色

"activityBar.activeBorder"活动栏当前选中项靠近窗口边缘处有竖条,竖条颜色

"activityBar.activeFocusBorder"按下活动栏的选中项,边框呈现此颜色

"activityBar.background"活动栏背景色

"activityBar.border"分隔活动栏与其他栏的边界

"activityBar.foreground"活动栏选中和悬停颜色

"activityBar.inactiveForeground"活动栏图标颜色

徽章

信息标签颜色"activityBarBadge.background"活动栏角标背景色

"activityBarBadge.foreground"活动栏角标前景色

"badge.background"信息标签背景色,资源管理器显示的“一个未保存”等等,此颜色与activityBarBadge.background不会互相覆盖,这还是jupyter notebook编辑器的一些边框颜色和文字的背景色

"badge.foreground"信息标签前景色

面包屑导航栏

面包屑导航颜色"breadcrumb.foreground"面包屑普通文字颜色

"breadcrumb.background"面包屑导航背景色

"breadcrumb.activeSelectionForeground"点击面包屑导航一段字后可见字变成此颜色并弹出菜单

"breadcrumb.focusForeground"面包屑上的一段字按住不放可见此颜色

"breadcrumbPicker.background"点击面包屑导航一段字后弹出菜单的背景色

按钮颜色

按钮颜色"button.background"按钮背景色

"button.hoverBackground"按钮在悬停时的背景色

"button.secondaryForeground"辅助按钮前景色。

"button.secondaryBackground"辅助按钮背景色

"button.secondaryHoverBackground"辅助按钮悬停

调试

调试工具栏

调试工具栏颜色 "debugToolBar.background"调试工具栏背景色,就是调试的时候一个很窄的窗口

"debugToolBar.border"调试工具栏边框

"debugIcon.continueForeground"调试工具栏图标,竖线和三角

"debugIcon.disconnectForeground"拔开的插销

"debugIcon.pauseForeground"两竖线

"debugIcon.restartForeground"循环箭头

"debugIcon.stepBackForeground"弯箭头和圆点

"debugIcon.startForeground"空心三角,这个出现在侧边栏的一个下拉框上,不在调试工具栏里

"debugIcon.stepOutForeground"上箭头和圆点

"debugIcon.stepIntoForeground"下箭头和圆点

"debugIcon.stepOverForeground"弯箭头和圆点

"debugIcon.stopForeground"空心方块

断点

断点颜色 "debugIcon.breakpointForeground"断点圆形符号颜色

"debugIcon.breakpointUnverifiedForeground"未验证断点空心圆圈符号

"debugIcon.breakpointDisabledForeground"在断点圆形符号单机右键,点禁用断点,断点圆形符号变为此颜色

"debugIcon.breakpointCurrentStackframeForeground"当前断点堆栈帧的图标颜色,D形的小框套着断点图标

"editor.stackFrameHighlightBackground"编辑器调试中,当前行背景色

"debugIcon.breakpointStackframeForeground"所有断点堆栈帧的图标颜色,有时候D形的小框会变成这种颜色,在单步调试时也可以看到普通颜色的D形框突然变成此颜色

"editor.focusedStackFrameHighlightBackground"debugIcon.breakpointStackframeForeground对应的编辑器行背景色

调试视图

调试视图"debugTokenExpression.value"、"debugTokenExpression.boolean"、"debugTokenExpression.number"、"debugTokenExpression.string"调试视图的变量中不同种类值颜色,不是变量的颜色,是值的颜色;用光标悬停在编辑器中对应变量上也可以看到这些颜色的文本(编辑器组件相关颜色未设置)

"debugTokenExpression.name"调试视图中显示的变量名称的前景色

"debugView.valueChangedHighlight"在“变量”视图中可见此颜色,当变量值改变时,此颜色作为值的背景色突然出现后逐渐淡出并消失,整个过程时间很短

"debugTokenExpression.error"调试视图中表达式错误的前景色,在2020年4月的更新中这个颜色开始可以在主题中设置,上图并没有展示此颜色

"debugView.stateLabelBackground"“调用堆栈”(CALL STACK)视图中标签的背景色,显示当前会话或线程的状态

"debugView.stateLabelForeground"“调用堆栈”视图中标签的前景色

"debugView.exceptionLabelBackground"调试器因异常而中断时,“调用堆栈”视图中显示的标签的背景色,上图并没有展示此颜色

"debugView.exceptionLabelForeground"调试器因异常而中断时,“调用堆栈”视图中显示的标签的前景色

面板

面板颜色 "panel.background"面板背景色,面板显示在编辑器区域下方,可包含输出和集成终端等视图

"panel.border"面板与编辑器之间的边界

"panelSection.border"面板标签下还可以拖好多的标签,拖进去多个视图就在面板里中水平堆叠,这些视图的分隔线颜色

"panelSectionHeader.background"当多个视图在面板中水平堆叠时,这些视图的头部背景色

"panelSectionHeader.border"上图中没有此颜色,在高对比主题中也没发现此颜色……

"panelSectionHeader.foreground"当多个视图在面板中水平堆叠时,这些视图的头部前景色

"panelTitle.activeBorder"面板标题下划线

"panelTitle.activeForeground"活动面板标题字体颜色

"panelTitle.inactiveForeground"不活动的面板标题的字体颜色

"terminal.ansiBlack"、"terminal.ansiRed"、"terminal.ansiGreen"、"terminal.ansiYellow"、"terminal.ansiBlue"、"terminal.ansiMagenta"、"terminal.ansiCyan"、"terminal.ansiWhite"、"terminal.ansiBrightBlack"、"terminal.ansiBrightRed"、"terminal.ansiBrightGreen"、"terminal.ansiBrightYellow"、"terminal.ansiBrightBlue"、"terminal.ansiBrightMagenta"、"terminal.ansiBrightCyan"、"terminal.ansiBrightWhite"这些是集成终端里有色文字的颜色

"terminal.background"集成终端背景色

"terminal.border"并排两个集成终端分割线颜色

"terminal.foreground"集成终端普通文字颜色

"terminal.selectionBackground"终端选中内容的背景颜色,此颜色不透明的话会遮挡文字

"terminalCursor.background"设置"terminal.integrated.cursorStyle": "block"之后可见,终端光标变成方块,被方块盖住的字体成为此颜色

"terminalCursor.foreground"终端光标的前景色

"debugConsole.errorForeground"调试REPL控制台中错误消息的前景色,调试控制台输入支持语法着色

"debugConsole.warningForeground"调试REPL控制台中警告消息的前景色

"debugConsole.infoForeground"调试REPL控制台中信息消息的前景色

"debugConsole.sourceForeground"调试REPL控制台中源文件名的前景色

"debugConsoleInputIcon.foreground"调试控制台输入标记图标的前景色

拖放

拖放颜色"activityBar.dropBorder": "#000"当拖动活动栏上的图标时将可以看到此颜色

"panel.dropBorder"面板头部的标签也可以拖动,拖动将看到此颜色

"panelSection.dropBackground"面板向下方拖动到头部以外时可以看到,这样拖动减少了头部的标签数量

"sideBar.dropBackground"侧边栏拖拽节标题可见

"editorGroup.dropBackground"编辑器选项卡拖拽可见

"list.dropBackground"

左迁
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!
先来说说我为什么选择Visual Studio Code,下面就简称为VSCode,使用VSCode最主要的一个原因是因为他结合EsLint之后,我们写完代码保存的时候他会对代码进行检查,如果发现代码不符合规范那么他可以自动对代码进行修复,这功能是不是简直无敌啊,还有就是他是由Microsoft所研发的并且开源、跨平台、免费的,然后就是在安装中文插件后对中文的支持特别好,因为对中文完全支持所以上手就轻松很多了。而且和其他ide类似如果想要支持其他的功能只需要安装相应的插件就可以了。
在来看看界面吧
界面的布局:
在这里插入图片描述
实际使用界面:这里使用的主题是One Dark Pro
在这里插入图片描述

配置

设置类型

设置分为两种,用户设置和工作区设置。

用户设置: 这种方式进行的设置,会应用于该用户打开的所有工程;其实可以理解为全局配置
工作空间设置:工作空间是指使用VS Code打开的某个文件夹,在该文件夹下会创建一个名为.vscode的隐藏文件夹,里面包含着仅适用于当前目录的VS Code的设置,工作空间的设置会覆盖用户的设置。可以理解为局部配置
每个人都有自己的偏好,在使用VS Code进行开发时,都会根据自己的习惯来对VS Code进行用户级别的配置。
但是当多人共同完成某个项目的时候,该项目会有一定的编码规范,如: 编辑某个语言时的设置,代码的缩进等等,这个时候就需要对该项目进行单独的工作空间级别的设置。

修改状态栏颜色

在默认情况下底部状态栏颜色是真的不忍直视,那么深的紫色和界面格格不入,所以这个对于我而言是必须要改的
进入文件–>首选项–>设置然后搜索workbench.colorCustomizations,在setting.json中添加项目内容,注意这里为了全局使用应该设置在用户设置里面

添加内容:

"workbench.colorCustomizations": {
"statusBar.background" : "#333333",
"statusBar.noFolderBackground" : "#343D46",
"statusBar.debuggingBackground": "#ABB1BA"
}
1
2
3
4
5
1
2
3
4
5
例如:

{
"workbench.colorTheme": "Mariana (Sublime)",
"workbench.statusBar.visible": true,
"diffEditor.ignoreTrimWhitespace": true,
"workbench.colorCustomizations": {
"statusBar.background" : "#333333",
"statusBar.noFolderBackground" : "#343D46",
"statusBar.debuggingBackground": "#ABB1BA"
}
}
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
自定义代码块

例如配置vue模板代码块。

使用快捷键Ctrl+Shift+P打开搜索栏–>输入snippet–>选择首选项

打开了snippet搜索栏–>输入vue–>选择vue.json

在打开的vue.json文件中添加模板;

{
"Print to console": {
"prefix": "vuetmp",
"body": [
"<template>",
" <div> ",
" </div>",
"</template> ",
"<script>",
"export default {",
" data() {",
" return { ",
" }",
" },",
" methods: { ",
" },",
" components: { ",
" }",
"}",
"</script> ",
"<style> ",
"</style>",
"$2"
],
"description": "创建一个自定义的vue组件代码块"
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
定义好之后在vue文件中输入前缀vuetmp,直接选择模板就可以自动生成模板了

插件

插件给你一切可能,VSCode之所以好用是因为它里面包含了丰富的插件。下面是一些常用的插件

Chinese (Simplified)

中文插件 安装后会将页面改为中文版的,而且对中文支持很好
Vetur

vue插件 语法高亮、智能感知、Emmet等
EsLint

语法纠错,以及自动修复,

使用EsLint需要在项目中添加EsLint的语法检查配置,需要在项目中添加.eslintrc.js文件,.eslintrc.js文件的配置我会在文章后面给出,大家可以根据自己的需要进行修改

开启自动修复,在settings.json文件中添加(建议设置在工作空间级别)

{
"files.autoSave": "off",//关闭自动保存
"eslint.run": "onSave", //eslint在保存时运行
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true //保存时自动修复
}
}
1
2
3
4
5
6
7
1
2
3
4
5
6
7
Debugger for Chrome

在VSCode中结合使用debug的插件
主题插件

常用主题
Bimbo
One Monokai Theme
Mariana
One Dark Pro
Dracula Official
Auto Close Tag

自动闭合HTML/XML标签
Auto Rename Tag

自动完成另一侧标签的同步修改
JavaScript(ES6) code snippets

ES6语法智能提示以及快速输入,除js外还支持.ts,.jsx,.tsx,.html,.vue,省去了配置其支持各种包含js代码文件的时间
这个安装之后还得自己去看他的快捷操作,可以直接到安装插件哪里搜索然后再主页查看
HTML Snippets

智能提示html标签,具体看主页使用,其实就是直接输入标签名他自动给你补全
Path Intellisense

自动路劲补全
HTML CSS Support

让 html 标签上写class 智能提示当前项目所支持的样式
jQuery Code Snippets

jquery智能提示,写jquery可以用
js-beautify for VS Code

格式化 html ,js,css 。如果使用了ESlint这个基本不需要了
Bracket Pair Colorizer

给括号加上不同的颜色,便于区分不同的区块
GitLens

方便查看日志,增强git。不过感觉有点麻烦,具体参考:https://www.j*****.com/p/a91cb8a2e55d
Markdown Preview Enhanced

Markdown 预览编写插件
常用快捷键:
ctrl-shift-v 打开预览
shift-enter 运行代码块
markdownlint

markdown 语法纠错
快捷键

自定义快捷键

自定义快捷可以通过:首选项–>键盘快捷键方式 来打开,打开后直接在搜索框输入快捷按钮或者描述关键字进行搜索

更改的快捷键

触发建议

默认触发建议是Ctrl + space(空格),和输入法冲突
更改为alt + /
保存所有

默认保存所有是Ctrl + k s
把保存书所有设置为Ctrl + Shift + s ,而默认Ctrl + Shift + s为另存为这个并不常用,所以调换快捷键
更改为:Ctrl + Shift + s
转换大小写

默认情况下转换大小写是没有快捷键的。搜索transform添加快捷键为大写改为:Ctrl + shift + x,小写改为:Ctrl + shift + y,而这两个默认都有了不过感觉不会常用所以改把之前的改为Ctrl + alt+ x 和 Ctrl + alt+ y
大写:Ctrl + shift + x
小写:Ctrl + shift + y
合并行

默认合并行是没有添加快捷键的,搜索合并然后将合并行的快捷键改为Ctrl + Alt + j
更改为: Ctrl + Alt + j
编辑类

Ctrl + Shift +
在括号的开头和结尾之间跳转
Alt + 单击 或Ctrl + d 按多次
在不同的位置添加光标实现多处编辑,其中Ctrl + d他会在文本中自动搜索当前选中的单词并且在单词后面添加光标从而实现多出编辑
Ctrl + shift + space
参数触发建议
shift + alt + f
格式化文档,不过有了eslint之后也没有必要了,有了eslint之后保存的时候会自动格式化
alt+ u
回到上一个光标位置
Alt + <-- (左箭头)/–>(右箭头)
alt + 左箭头表示回到上一个编辑位置,alt + 右箭头表示从上一个编辑位置回来
Alt + 上箭头/下箭头
上下移动行
删除当前行
默认为Ctrl + Shift + k 不过我们通常习惯使用Ctrl+d,所以可以调换一下这两个快捷建。当然其实也可以使用Ctrl + x直接剪切来实现类似的效果
Shift+alt+向下箭头
快速复制当前行到下一行
Shift+alt+向上箭头
快速复制当前行到上一行
复制某一行
将光标移动到某一行上不选中任何数据直接按Ctrl+c就是复制当前行
跳转到函数的定义处
选择函数然后按f12就可以跳转到函数的定义处
参考函数在哪里被引用了
选中函数名,然后按Shift+f12就会显示一个提示框,里面可以查看函数在哪里被引用了
文件操作类

Ctrl + w
关闭当前打开文件
搜索替换
单文件为Ctrl + f 和Ctrl + h,多文件为Ctrl + Shift + f 和 Ctrl + Shift + h
Ctrl + e 或 Ctrl + p
通过文件名或路径快速打开某个文件
公共类

Ctrl + shift + p
打开命令面板
因为这个工具对中文的支持很好所以上手也挺简单的,很多功能普通的ide其实没有什么很大的区别例如像git的使用之类的,这里就不多说了,最后附加上ESLint的配置文件
.eslintrc.js
可乐

Keyboard Shortcuts editor)键盘快捷键编辑器

Source control 版本控制

git

macOS:Sierra Tabs

macOS:鼠标滑动导航

集成终端连链接和列范围

(Languages)代码语言

TypeScript 2.3

键入检查JavaScript文件

per file

使用设置

使用JSConfig或TSConfig

更改TypeScript版本而不重新加载VS代码

Markdown 预览和缩放

Markdown的环绕代码提示|补全片段

(Editor)编辑区

CarieVinne

准备两个 Gitee 账号

2. A账号使用VS Code处理代码,B账号使用 记事本处理代码

3.两个账号都拉取最新代码

4.模拟 A , B 两账号,修改相同的文件,并且 B 要在 A之前提交,让 A不能正常拉取代码

5. B账号修改代码,并推送远程库

相关推荐

sharepoint发生意外错误,求助!!!

电脑A和服务器B都在一个域中,我用电脑A登陆B的sharepoint网站提示输入账号你看下,B对脑可开通了来宾帐户访问的权限,如果还不行。你再Ping下对方
2023-07-09 11:18:352

c++程序老是报内存冲突的错误,求解决

熟悉又陌生的YUV...不清楚你的RGB信息是 3个字节存储1个像素点信息还是 4个字节存储1个像素点信息?这种常见的内存越界错误,其实很容易定位。在debug下,F5启动调试模式,程序会在出错出弹出 访问冲突提示框,我们选 Debug->window->callstack 可以查看当前的调用栈情况,然后根据call stack可以定位到出错位置。接着在出错位置处,通过查看比较各个变量的值,我们一般就能找到问题所在了。
2023-07-09 11:18:421

如何关闭 PHP 报错的 Call Stack

在php.ini上修改 display_errors的值为OFF就可以了然后重启web环境~
2023-07-09 11:18:491

JQuery错误Maximum call stack size exceeded

for (int j=0; j<l+i; j++)System.out.print(" ");for (int k=2*l-1-2*i; k>0; k--)String str=br.readLine();int m=Integer.parseInt(str);int count=0;for (int i=0; i<m; i++){
2023-07-09 11:18:573

用u盘启动工具制作u盘提示创建uD分区失败

我今天也遇到同样的问题了,把U盘在PC机上格式化一下就好了,供参考哦
2023-07-09 11:19:065

什么是线程

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。一个进程可以有很多线程,每条线程并行执行不同的任务。线程特点1、轻型实体线程中的实体基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。线程的实体包括程序、数据和TCB。线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述。2、独立调度和分派的基本单位在多线程OS中,线程是能独立运行的基本单位,因而也是独立调度和分派的基本单位。由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中的)。3、可并发执行在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。4、共享进程资源在同一进程中的各个线程,都可以共享该进程所拥有的资源,这首先表现在:所有线程都具有相同的地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的每一个虚地址。此外,还可以访问进程所拥有的已打开文件、定时器、信号量机构等。由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。
2023-07-09 11:19:281

在JavaScript中,“Uncaught RangeError: Maximum call stack size exceeded”如何解决?

在JavaScript中,“Uncaught RangeError: Maximum call stack size exceeded”如何解决?而回看二战以来历史,立陶宛明明曾经加入苏联。其成为苏联的一个加盟共和国后,苏联领土包括立陶宛一事,获得了联合国和国际社会的普遍认可。中国科学院院士、中国科学院古脊椎动物与古人类研究所研究员周忠和负责的“克拉通破坏与陆地生物演化”成为2016年首批获得该项资助的三个项目之一。他对《中国新闻周刊》说,该项目经费管理比较宽松,但问题是这种项目太稀缺了,这虽然是一种稳定支持的模式,但本质上仍是一类竞争性很强的项目。庄辞也认为,这类项目支持的比例非常小,仍是面向极少数人,目前竞争已趋白热化。
2023-07-09 11:19:451

我下了一个国王的恩赐:北方勇士-冰与火中文版 打不开,错误提示 ”Call stack functions:"

我觉得很有可能使visual C++ 的问题,运行环境装全了吗?DirectX9.0及以上visual C++ 2008net.framework 3.5及以上这三个是大多数游戏的运行环境
2023-07-09 11:19:581

怎么调用CALL 使CALL在堆栈里不平衡

中断INT过程:1.取得中断类型码2.把标志位压入栈中3.把CS压入栈中4.把IP压入栈中5.更改CS和IP,转到中断程序CALL:将当前IP或者CS和IP压入栈中,到底是把IP还是IP和CS压入栈中。就要看CALL后到底是一个字还是2个字的,如果是一个字的,就只把IP压入栈中,例如CALL AX;如果是两个字,就先把CS压入有栈中,再把IP压入栈中,例如CALL dword ptr 内存单元地址希望对你有帮助!
2023-07-09 11:20:051

计算机需要用到的英语术语词汇表

   计算机需要用到的英语术语词汇表   CPU(Center Processor Unit)中央处理单元   Main board主板   RAM(random access memory)随机存储器(内存)   ROM(Read Only Memory)只读存储器   Floppy Disk软盘   Hard Disk硬盘   CD-ROM光盘驱动器(光驱)   monitor监视器   keyboard键盘   mouse鼠标   chip芯片   CD-R光盘刻录机   HUB集线器   Modem= MOdulator-DEModulator,调制解调器   P-P(Plug and Play)即插即用   UPS(Uninterruptable Power Supply)不间断电源   BIOS(Basic-input-Output   System)基本输入输出系统   CMOS(Complementary Metal-Oxide-Semiconductor)互补金属氧化物半导体   setup安装   uninstall卸载   wizzard向导   OS(Operation Systrem)操作系统   OA(Office AutoMation)办公自动化   exit退出   edit编辑   copy复制   cut剪切   paste粘贴   删除   select选择   find查找   select all全选   replace替换   undo撤消   redo重做   program程序   license许可(证)   back前一步   next下一步   finish结束   folder文件夹   Destination Folder目的文件夹   user用户   click点击   double click双击   right click右击   settings设置   update更新   release发布   data数据   data base数据库   DBMS(Data Base Manege   System)数据库管理系统   view视图   插入   object对象   configuration配置   command命令   document文档   POST(power-on-self-test)电源自检程序   cursor光标   attribute属性   icon图标   service pack服务补丁   option pack功能补丁   Demo演示   short cut快捷方式   exception异常   debug调试   previous前一个   column行   row列   restart重新启动   text文本   font字体   size大小   scale比例   interface界面   function函数   access访问   manual指南   active激活   computer language计算机语言   menu菜单   GUI(graphical user interfaces )图形用户界面   template模版   page setup页面设置   password口令   code密码   print preview打印预览   zoom in放大   zoom out缩小   pan漫游   cruise漫游   full screen全屏   tool bar工具条   status bar状态条   ruler标尺   table表   paragraph段落   symbol符号   style风格   execute执行   graphics图形   image图像   Unix用于服务器的一种操作系统   Mac OS苹果公司开发的操作系统   OO(Object-Oriented)面向对象   virus病毒   file文件   open打开   colse关闭   new新建   save保存   exit退出   clear清除   default默认   LAN局域网   WAN广域网   Client/Server客户机/服务器   ATM( Asynchronous   Transfer Mode)异步传输模式   Windows NT微软公司的网络操作系统   Internet互联网   WWW(World Wide Web)万维网   protocol协议   HTTP超文本传输协议   FTP文件传输协议   Browser浏览器   homepage主页   Webpage网页   website网站   URL在Internet的WWW服务程序上   用于指定信息位置的.表示方法   Online在线   Email电子邮件   ICQ网上寻呼   Firewall防火墙   Gateway网关   HTML超文本标识语言   hypertext超文本   hyperlink超级链接   IP(Address)互联网协议(地址)   Search Engine搜索引擎   TCP/IP用于网络的一组通讯协议   Telnet远程登录   IE(Internet Explorer)探索者(微软公司的网络浏览器)   Navigator引航者(网景公司的浏览器)   multimedia多媒体   ISO国际标准化组织   ANSI美国国家标准协会   able 能   active file 活动文件   add watch 添加监视点   all files 所有文件   allrightsreserved 所有的权力保留   altdirlst 切换目录格式   andotherinFORMation 以及其它的信息   archivefileattribute 归档文件属性   assignto 指定到   autoanswer 自动应答   autodetect 自动检测   autoindent 自动缩进   autosave 自动存储   available on volume 该盘剩余空间   bad command 命令错   bad command or filename 命令或文件名错   batch parameters 批处理参数   binary file 二进制文件   binary files 二进制文件   Borland international borland国际公司   bottommargin 页下空白   bydate 按日期   byextension 按扩展名   byname 按名称   bytesfree 字节空闲   callstack 调用栈   casesensitive 区分大小写   centralpointsoftwareinc central point 软件股份公司   changedirectory 更换目录   changedrive 改变驱动器   changename 更改名称   characterset 字符集   checkingfor 正在检查   chgdrivepath 改变盘/路径   chooseoneofthefollowing 从下列中选一项   clearall 全部清除   clearallbreakpoints 清除所有断点   clearsanattribute 清除属性   clearscommandhistory 清除命令历史   clearscreen 清除屏幕   closeall 关闭所有文件   codegeneration 代码生成   colorpalette 彩色调色板   commandline 命令行   commandprompt 命令提示符   compressedfile 压缩文件   conventionalmemory 常规内存   copydiskette 复制磁盘   copyrightc 版权(c   createdospartitionorlogicaldosdrive 创建DOS分区或逻辑DOS驱动器   createextendeddospartition 创建扩展DOS分区   createprimarydospartition 创建DOS主分区   createsadirectory 创建一个目录   currentfile 当前文件   defrag 整理碎片   dele 删去   deltree 删除树   devicedriver 设备驱动程序   dialogbox 对话栏   directionkeys 方向键   directly 直接地   directorylistargument 目录显示变量   directoryof 目录清单   directorystructure 目录结构   diskaccess 磁盘存取   diskcopy 磁盘拷贝   diskspace 磁盘空间   displayfile 显示文件   displayoptions 显示选项   displaypartitioninFORMation 显示分区信息   dosshell DOS 外壳   doubleclick 双击   driveletter 驱动器名   editmenu 编辑选单   emsmemory ems内存   endoffile 文件尾   endofline 行尾   enterchoice 输入选择   entiredisk 转换磁盘   environmentvariable 环境变量   everyfileandsubdirectory 所有的文件和子目录   existingdestinationfile 已存在的目录文件时   expandedmemory 扩充内存   expandtabs 扩充标签   explicitly 明确地   extendedmemory 扩展内存   fastest 最快的   fatfilesystem fat 文件系统   fdiskoptions fdisk选项   fileattributes 文件属性   fileFORMat 文件格式   filefunctions 文件功能   fileselection 文件选择   fileselectionargument 文件选择变元   filesin 文件在   filesinsubdir 子目录中文件   fileslisted 列出文件
2023-07-09 11:20:121

汇编语言CALL指令都将什么压入堆栈?INT指令呢?

首先指令寄存器在16/32/64位下分别是IP,EIP,RIP,标志寄存器是FLAGS,EFLAGS,RFLAGS下面都以32位为例CALL将下一条指令的CS:EIP压入堆栈INT要看是什么模式,还有是否更改CPL,行为比较复杂,反正最后压入堆栈的三个是EFLAGS,CS和下一条指令的EIP具体可以参考Intel或AMD的文档
2023-07-09 11:20:302

汇编中未定义stack段 call命令执行后 cs ip放哪里

放在默认栈中。这个栈是不安全的,因为你实际不能操作它。
2023-07-09 11:20:395

MATLAB simulink中出现如下错误 怎么办

1、检查电脑是否存在病毒,请使用百度卫士进行木马查杀。2、系统文件损坏或丢失,盗版系统或ghost版本系统,很容易出现该问题。建议:使用完整版或正版系统。3、安装的软件与系统或其它软件发生冲突,找到发生冲突的软件,卸载。如果更新下载补丁不是该软件的错误补丁,也会引起软件异常,解决办法:卸载该软件,重新下载重新安装试试。顺便检查开机启动项,把没必要启动的启动项禁止开机启动。扩展资料:1、硬件本身质量不佳。粗糙的生产工艺、劣质的制作材料、非标准的规格尺寸等都是引发故障的隐藏因素。由此常常引发板卡上元件焊点的虚焊脱焊、插接件之间接触不良、连接导线短路断路等故障。2、人为因素影响。操作人员的使用习惯和应用水平也不容小觑,例如带电插拔设备、设备之间错误的插接方式、不正确的BIOS参数设置等均可导致硬件故障。3、使用环境影响。这里的环境可以包括温度、湿度、灰尘、电磁干扰、供电质量等方面。每一方面的影响都是严重的,例如过高的环境温度无疑会严重影响设备的性能等等。4、其他影响。由于设备的正常磨损和硬件老化也常常引发硬件故障。
2023-07-09 11:20:561

我的魔兽大脚插件一直出现错误信息,怎么办啊?

出现错误信息,是用插件经常出现的问题。通常采用先点屏蔽错误,再点关闭。如果在出现一样这么处理。这通常是插件内部的问题,可以采用删除插件,在重新加载插件。如果不行可以等下次插件更新。(其实这种错误,对游戏影响不大,没必要理会).
2023-07-09 11:21:111

魔兽世界出现断网~插件显示如下

从语句上来看应该是有BUFF框架引起的大脚错误,这个没有办法,要么你把interface都删掉,要么就是等大脚更新,现阶段大脚问题很多,这个也是没有办法的,要么不用插件,要么自己整合,要么下多玩或者月光,或者是NGA上各位大大的插件包,就这几种办法了,首先要把插件删干净~
2023-07-09 11:21:181

巫师2错误,弹出框显示如下

第一步,调节画面,调完不要打开游戏。第二步,到我的文档witcher2的config文件夹里有个user.ini,打开,在第一行[Engine]多加一个[,也就是有两个[了,保存,然后右键点击user.ini,勾选只读,然后再进入游戏,搞定。
2023-07-09 11:21:251

QQ登陆 遇到未知的错误

意思是:你的号被网上警察封了
2023-07-09 11:21:334

迅雷不断崩溃怎么办

去下5.8版本的旧的,新的很多人都讲不好用
2023-07-09 11:21:536

JavaScript错误提示:Maximum call stack size exceeded

second方法里的 setTimeout(second(),1000); 改成 setTimeout(second,1000);试试看
2023-07-09 11:22:093

Java中在线程中再开线程,可以么

对于进程最直观的感受应该就是“windows任务管理器”中的进程管理:(计算机原理课上的记忆已经快要模糊了,简单理解一下):一个进程就是一个“执行中的程序”,是程序在计算机上的一次运行活动。程序要运行,系统就在内存中为该程序分配一块独立的内存空间,载入程序代码和资源进行执行。程序运行期间该内存空间不能被其他进程直接访问。系统以进程为基本单位进行系统资源的调度和分配。何为线程?线程是进程内一次具体的执行任务。程序的执行具体是通过线程来完成的,所以一个进程中至少有一个线程。回忆一下 HelloWrold 程序中main方法的执行,其实这时候,Java虚拟机会开启一个名为“main”的线程来执行程序代码。一个进程可以包含多个线程,这些线程共享数据空间和资源,但又分别拥有各自的执行堆栈和程序计数器。线程是CPU调度的基本单位。多线程一个进程包含了多个线程,自然就叫做多线程。拥有多个线程就可以让程序看起来可以“同时”处理多个任务,为什么是看起来呢?因为CPU也分身乏术,只能让你这个线程执行一会儿,好了你歇着,再让另一个线程执行一会儿,下次轮到你的时候你再继续执行。这里的“一会儿”实际上时间非常短,感觉上就是多个任务“同时”在执行。CPU就这样不停的切来切去…既然CPU一次也只能执行一个线程,为什么要使用多线程呢?当然是为了充分利用CPU资源。一个线程执行过程中不可能每时每刻都在占用CPU,CPU歇着的时候我们就可以让它切过来执行其他的线程。Java中的多线程Java中启用多线程有两种方式:①继承Thread类;②实现Runnable接口。There are two ways to create a new thread of execution. One is to declare a class to be a subclass of Thread. This subclass should override the run method of class Thread. An instance of the subclass can then be allocated and started.The other way to create a thread is to declare a class that implements the Runnable interface. That class then implements the run method. An instance of the class can then be allocated, passed as an argument when creating Thread, and started. 继承Thread类创建一个类,继承java.lang.Thread,并覆写Thread类的run()方法,该类的实例就可以作为一个线程对象被开启。/*** Dog类,继承了Thread类* @author lt*/class Dog extends Thread {/** 覆写run()方法,定义该线程需要执行的代码*/@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println(i);}}}线程创建好了,怎么让它作为程序的一个独立的线程被执行呢?创建一个该类的实例,并调用start()方法,将开启一个线程,并执行线程类中覆写的run()方法。public class ThreadDemo {public static void main(String[] args) {Dog dog = new Dog();dog.start();}}看不出什么端倪,如果我们直接调用实例的run()方法,执行效果是完全一样的,见上图。public class ThreadDemo {public static void main(String[] args) {Dog dog = new Dog();dog.run();}}如果一切正常,这时候程序中应该有两个线程:一个主线程main,一个新开启的线程。run()方法中的代码究竟是哪个线程执行的呢?Java程序中,一个线程开启会被分配一个线程名:Thread-x,x从0开始。我们可以打印当前线程的线程名,来看看究竟是谁在执行代码。class Dog extends Thread {@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println("当前线程:" + Thread.currentThread().getName() + "---" + i);}}}public class ThreadDemo {public static void main(String[] args) {System.out.println("当前线程:" + Thread.currentThread().getName());Dog dog = new Dog();dog.start();}}可以看到,确实开启了一个新的线程:Thread-0,main()方法的线程名就叫main。同一个实例只能调用一次start()方法开启一次,多次开启,将报java.lang.IllegalThreadStateException异常:我们再创建一个实例,开启第三个线程:public class ThreadDemo {public static void main(String[] args) {System.out.println("当前线程:" + Thread.currentThread().getName());Dog dog = new Dog();Dog dog2 = new Dog();dog.start();dog2.start();}}这时候我们已经能够看到多线程的底层实现原理:CPU切换处理、交替执行的效果了。run和start上面我们直接调用run()方法和调用start()方法的结果一样,现在我们在打印线程名的情况下再来看看:public class ThreadDemo {public static void main(String[] args) {System.out.println("当前线程:" + Thread.currentThread().getName());Dog dog = new Dog();Dog dog2 = new Dog();dog.run();dog2.run();}}可以看到,这时候并没有开启新的线程,main线程直接调用执行了run()方法中的代码。所以start()方法会开启新的线程并在新的线程中执行run()方法中的代码,而run()方法不会开启线程。查看start()的源代码,该方法调用了本地方法 private native void start0();即调用的是操作系统的底层函数:public synchronized void start() {if (threadStatus != 0)throw new IllegalThreadStateException();group.add(this);boolean started = false;try {start0();started = true;} finally {try {if (!started) {group.threadStartFailed(this);}} catch (Throwable ignore) {/* do nothing. If start0 threw a Throwable thenit will be passed up the call stack */}}}private native void start0();实现Runnable接口第二种方式,实现Runnable接口,并覆写接口中的run()方法,这是推荐的也是最常用的方式。Runnable接口定义非常简单,就只有一个抽象的run()方法。//Runnable接口源码public interface Runnable {public abstract void run();}class Dog implements Runnable {@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println("当前线程:" + Thread.currentThread().getName() + "---" + i);}}}这时候的Dog类看起来跟线程什么的毫无关系,也没有了start()方法,怎么样开启一个新的线程呢?直接调用run()方法?想想也不行。这时候我们需要将一个Dog类的实例,作为Thread类的构造函数的参数传入,来创建一个Thread类的实例,并通过该Thread类的实例来调用start()方法从而开启线程。public class ThreadDemo {public static void main(String[] args) {System.out.println("当前线程:" + Thread.currentThread().getName());Dog dog = new Dog();Thread thread = new Thread(dog);thread.start();}}这时候如果要开启第三个线程,需要创建一个新的Thread类的实例,同时传入刚才的Dog类的实例(当然也可以创建一个新的Dog实例)。这时候我们就可以看到跟继承Thread类的方式的区别:多个线程可以共享同一个Dog类的实例。public class ThreadDemo {public static void main(String[] args) {System.out.println("当前线程:" + Thread.currentThread().getName());Dog dog = new Dog();Thread thread = new Thread(dog);Thread thread2 = new Thread(dog);thread.start();thread2.start();}}两种方式的比较继承Thread类的方式有它固有的弊端,因为Java中继承的单一性,继承了Thread类就不能继承其他类了;同时也不符合继承的语义,Dog跟Thread没有直接的父子关系,继承Thread只是为了能拥有一些功能特性。而实现Runnable接口,①避免了单一继承的局限性,②同时更符合面向对象的编程方式,即将线程对象进行单独的封装,③而且实现接口的方式降低了线程对象(Dog)和线程任务(run方法中的代码)的耦合性,④如上面所述,可以使用同一个Dog类的实例来创建并开启多个线程,非常方便的实现资源的共享。实际上Thread类也是实现了Runnable接口。实际开发中多是使用实现Runnable接口的方式。
2023-07-09 11:22:161

maximum call stack size exceeded怎么解决

可以对WINDOW窗体的onerror事件做出操作,具体请参考以下代码:window.onerror=function (){return true;}注:此代码一定要放在所有JS脚本代码前,否则是不会起作用的。
2023-07-09 11:22:241

iOS与多线程(十) —— NSThread的使用以及锁(一)

首先看下写作环境 NSThread 位于 Foundation 库中,是对 pthread 对象化的封装,首先看一下苹果给的API,后续会根据这些进行详细的说明。 这个是类可以直接访问的属性,使用的使用直接类方法调用就可以 [NSThread currentThread] 。 使用示例 用于判断是否是多线程 使用示例 下面看一下输出 每个线程都维护了一个键-值的字典,它可以在线程里面的任何地方被访问。你可以使用该字典来保存一些信息,这些信息在整个线程的执行过程中都保持不变。比如你可以使用它来存储在你的整个线程过程中 Run loop 里面多次迭代的状态信息。 使用示例 下面看一下输出 下面看一下线程优先级的设置 这里,iOS 8.0以后 threadPriority 已经被废弃了,用 qualityOfService 替换,这个是一个枚举,在线程start以后,就变为只读属性了。 使用示例 主线程名字默认为 main ,子线程如果不指定就为空。 使用示例 callStackReturnAddresses 线程的调用都会有函数的调用函数的调用就会有栈返回地址的记录,在这里返回的是函 数调用返回的虚拟地址,说白了就是在该线程中函数调用的虚拟地址的数组。 使用示例 同上面的方法一样,只不过返回的是该线程调用函数的名字数字。 使用示例 isMainThread 用来判断该线程是否是主线程,而 mainThread 用来获取当前的主线程。 使用示例 对象方法创建 下面看一下线程的初始化 类方法创建 下面就是使用示例 下面是输出 隐式创建 下面就是线程的状态控制 isExecuting 判断线程是否正在执行, isFinished 判断线程是否已经结束, isCancelled 判断线程是否撤销。 这个是线程的入口函数。 在程序运行过程中,如果存在多线程,那么各个线程读写资源就会存在先后、同时读写资源的操作,因为是在不同线程,CPU调度过程中我们无法保证哪个线程会先读写资源,哪个线程后读写资源。因此为了防止数据读写混乱和错误的发生,我们要将线程在读写数据时加锁,这样就能保证操作同一个数据对象的线程只有一个,当这个线程执行完成之后解锁。 常用的锁有下面几种 下面就是一个卖票的示例,用来说明互斥锁的作用 下面看一下输出 首先看一下API 下面我们换成NSLock看一下 接着看一下输出 NSConditionLock 用于需要根据一定条件满足后进行 加锁/解锁. 首先看下API 下面就看一下适用场景 此锁可以在同一线程中多次被使用,但要保证加锁与解锁使用平衡,多用于递归函数,防止死锁。 首先看下API文档 下面看这个示例,其实就是递归使用这个锁 看一下输出 前面四种都是互斥锁,这里和自旋锁有什么区别和联系呢? 共同点 不同点
2023-07-09 11:22:301

Vc2010下编译通过,但是运行时出现:Debug Assertion Failed!

我也想知道
2023-07-09 11:22:382

oracle expdp导出报错“字符串缓冲区太小”

你没有ORACLE账户吧,你公司要是买了付费ORACLE会给账号的,你去要一个,我把里面关于这个的文章粘给你,不给你翻译了挺长的。你看看Symptoms应该是你这个问题,在你的11.2.0.1.0是可以发生的。后面有SolutionSymptomsAll of a sudden, your data pump export jobs all fail with the following bunch of errors:Export: Release 11.2.0.3.0 - Production on Sunday, Apr 28, 22:00:26 2013Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,Data Mining and Real Application Testing optionsORA-31626: Job does not existORA-31638: cannot attach to job Your_JOBNAME for user SYSTEMORA-06512: at "SYS.DBMS_SYS_ERROR", line 95ORA-06512: at "SYS.KUPV$FT_INT", line 428ORA-39077: unable to subscribe agent KUPC$A_4_220050709685000 to queue "KUPC$C_4_20130428220032"ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95ORA-06512: at "SYS.KUPC$QUE_INT", line 250ORA-06502: PL/SQL: numeric or value error: character string buffer too smallSolutionInitially, Oracle Development built a fix under Patch 16473783.We found out that the fix was incomplete and needed to be re-written.This is under progress and monitored via unpublished Bug 16928674.After encountering this symptom, this is not resolved unless recreating of datapump like followings. @$ORACLE_HOME/rdbms/admin/catdph.sql @$ORACLE_HOME/rdbms/admin/prvtdtde.plb @$ORACLE_HOME/rdbms/admin/catdpb.sql @$ORACLE_HOME/rdbms/admin/dbmspump.sql @$ORACLE_HOME/rdbms/admin/utlrp.sqlGenerally speaking, we can recreate the datapump objects in 11g by calling;1. Catproc.sql SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql2. To recompile invalid objects, if any SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sqlThis is described in Note 430221.1 How To Reload Datapump Utility EXPDP/IMPDP
2023-07-09 11:22:451

如何分析Thread Dump

当Java Web程序运行变慢,或者发生故障时,需要使用Thread Dumps. 如果你觉得ThreadDumps非常复杂,这篇文章很可能帮助你。将会分析Java中的线程,线程如何创建的,如何管理线程,怎么从运行中的程序中dump 线程,最后怎么分析他们得到阻塞和存在瓶颈的线程。本文是在应用程序调试下得到的结果。Java和线程 一个web server使用几十到几百条线程去处理大量的并发用户。如果多条线程使用共享的资源,无法避免线程之间对数据的竞争,有时候还会发生死锁。 线程竞争是web程序上不同的线程去访问共享资源,一条线程等待另外线程释放锁。例如,在记录log的时候,线程记录log时,必须先获得锁,然后去再访问共享资源。 死锁是一种特殊的线程竞争,两个或多个线程要完成自己的任务,都要必须要等待其他的线程完成他们的任务。 线程竞争会带来各种不同的问题,为了分析这些问题,需要使用Thread Dump。Thread Dump记录了每个线程真正的状态。 Java线程的背景 线程同步 多条线程之间可以同时执行,为了确保多线程在使用共享资源上面的通用性,使用线程同步保证在同一时间只能有一条线程可以访问共享资源。 线程同步在Java中可以使用监视器。每个Java对象都有一个监视器,这个监视器只能被一个线程拥有。当一个线程要获得另外线程拥有的监视器时,需要进入等待队列直到线程释放监视器。 线程的状态 为了分析Thread Dump ,需要先了解线程的状态。线程的状态是在java.lang.Thread.State中。NEW:线程被创建但是还没有被执行RUNNABLE:线程正在占用cpu并且在执行任务BLOCKED:线程为了获得监视器需要等待其他线程释放锁WAITING:调用了wait,join,park方法使线程等待-无限期等待TIMED_WAITING:调用了sleep,wait,join,park方法使线程等待--有限期等待线程类型java中线程可以分为两种: 1. 后台线程 2. 非后台线程当没有其他的非后台线程运行时后台线程将会终止。即使你不创建线程,java应用默认也会创建很多线程。这些大多数都是后台线程,主要为了执行gc或者jmx等类型的任务从 "static void main(String[] args)"方法中开启的线程叫做非后台线程,当这些线程停止时,其他的所有后台线程也会停止()获得一个Thread Dump将会介绍三种常用的方法。请注意还会有其他很多方法可以获取Thread Dump。一个Thread dump仅仅可以显示测量时的线程状态。所以为了查看线程状态的变化,建议5到10次,每次间隔5秒。使用jstack获得Thread Dump通过使用jsp命令来获得当前正在运行的Java程序的PID[user@linux ~]$ jps -v 25780 RemoteTestRunner -Dfile.encoding=UTF-8 25590 sub.rmi.registry.RegistryImpl 2999 -Dapplication.home=/home1/user/java/jdk.1.6.0_24 -Xms8m 26300 sun.tools.jps.Jps -mlvV -Dapplication.home=/home1/user/java/jdk.1.6.0_24 -Xms8m使用PID作为jstack的参数获得Thread Dump[user@linux ~]$ jstack -f 5824使用jVisualVM获得Thread Dump通过使用jVisualVm来获得Thread Dump左边的标记,当前正在运行的进程。点击你想查看的进程,选择现场选项来查看实时的线程信息。点击Thread Dump右边的按钮来获得Thread Dump文件在Linux终端中生成通过使用ps -ef命令去获得当前正在运行的Java进程[user@linux ~]$ ps - ef | grep javauser 2477 1 0 Dec23 ? 00:10:45 ...user 25780 25361 0 15:02 pts/3 00:00:02 ./jstatd -J -Djava.security.policy=jstatd.all.policy -p 2999user 26335 25361 0 15:49 pts/3 00:00:00 grep javaUse the extracted pid as the parameter of kill –SIGQUIT(3) to obtain a thread dump.Thread Information from the Thread Dump File"pool-1-thread-13" prio=6 tid=0x000000000729a000 nid=0x2fb4 runnable [0x0000000007f0f000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158) - locked <0x0000000780b7e688> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(InputStreamReader.java:167) at java.io.BufferedReader.fill(BufferedReader.java:136) at java.io.BufferedReader.readLine(BufferedReader.java:299) - locked <0x0000000780b7e688> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(BufferedReader.java:362)Thread name:当使用 Java.lang.Thread类去生成一个线程,将被命名为Thre-(Number),然而当使用java.util.concurrent,ThreadFactory类,将会被命名为pool-(Number)-thread-(Number)Priority:表示线程的优先级Thread ID:代表线程的唯一id。(通过线程id可以获得一些有用的信息,包括cpu使用率,或者内存使用率)Thread status:代表线程的状态Thread callstack:代表线程调用的堆栈信息Thread Dump模式的类型当无法获得一个锁(阻塞)当一个线程占领住锁而其他线程无法获得这个锁,而导致应用程序所有的性能都下降。在下面的例子中,BLOCKED_TEST pool-1-thread-1 线程运行时获得<0x0000000780a000b0>锁, 同时BLOCKED_TEST pool-1-thread-2 和 BLOCKED_TEST pool-1-thread-3正在等待获得<0x0000000780a000b0>锁"BLOCKED_TEST pool-1-thread-1" prio=6 tid=0x0000000006904800 nid=0x28f4 runnable [0x000000000785f000] java.lang.Thread.State: RUNNABLE at java.io.FileOutputStream.writeBytes(Native Method) at java.io.FileOutputStream.write(FileOutputStream.java:282) at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) - locked <0x0000000780a31778> (a java.io.BufferedOutputStream) at java.io.PrintStream.write(PrintStream.java:432) - locked <0x0000000780a04118> (a java.io.PrintStream) at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202) at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272) at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:85) - locked <0x0000000780a040c0> (a java.io.OutputStreamWriter) at java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:168) at java.io.PrintStream.newLine(PrintStream.java:496) - locked <0x0000000780a04118> (a java.io.PrintStream) at java.io.PrintStream.println(PrintStream.java:687) - locked <0x0000000780a04118> (a java.io.PrintStream) at com.nbp.theplatform.threaddump.ThreadBlockedState.monitorLock(ThreadBlockedState.java:44) - locked <0x0000000780a000b0> (a com.nbp.theplatform.threaddump.ThreadBlockedState) at com.nbp.theplatform.threaddump.ThreadBlockedState$1.run(ThreadBlockedState.java:7) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Locked ownable synchronizers: - <0x0000000780a31758> (a java.util.concurrent.locks.ReentrantLock$NonfairSync) "BLOCKED_TEST pool-1-thread-2" prio=6 tid=0x0000000007673800 nid=0x260c waiting for monitor entry [0x0000000008abf000] java.lang.Thread.State: BLOCKED (on object monitor) at com.nbp.theplatform.threaddump.ThreadBlockedState.monitorLock(ThreadBlockedState.java:43) - waiting to lock <0x0000000780a000b0> (a com.nbp.theplatform.threaddump.ThreadBlockedState) at com.nbp.theplatform.threaddump.ThreadBlockedState$2.run(ThreadBlockedState.java:26) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Locked ownable synchronizers: - <0x0000000780b0c6a0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync) "BLOCKED_TEST pool-1-thread-3" prio=6 tid=0x00000000074f5800 nid=0x1994 waiting for monitor entry [0x0000000008bbf000] java.lang.Thread.State: BLOCKED (on object monitor) at com.nbp.theplatform.threaddump.ThreadBlockedState.monitorLock(ThreadBlockedState.java:42) - waiting to lock <0x0000000780a000b0> (a com.nbp.theplatform.threaddump.ThreadBlockedState) at com.nbp.theplatform.threaddump.ThreadBlockedState$3.run(ThreadBlockedState.java:34) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Locked ownable synchronizers: - <0x0000000780b0e1b8> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)当是死锁的状态线程A需要获得线程B的锁才能继续执行任务,同时线程B需要获得线程A的锁才能继续执行任务。在Thread Dump中,可以发现 DEADLOCK_TEST-1 线程拥有0x00000007d58f5e48锁,并且试着去获取0x00000007d58f5e60这把锁。另外 DEADLOCK_TEST-2 线程拥有0x00000007d58f5e60锁,并且尝试获取0x00000007d58f5e78锁。,DEADLOCK_TEST-3 线程拥有0x00000007d58f5e78锁,并且尝试获得0x00000007d58f5e48锁。可以看得出来,每个线程都在等待另外线程的锁,这种状态知道一个线程放弃锁之前都不会被改变。"DEADLOCK_TEST-1" daemon prio=6 tid=0x000000000690f800 nid=0x1820 waiting for monitor entry [0x000000000805f000] java.lang.Thread.State: BLOCKED (on object monitor) at com.nbp.theplatform.threaddump.ThreadDeadLockState$DeadlockThread.goMonitorDeadlock(ThreadDeadLockState.java:197) - waiting to lock <0x00000007d58f5e60> (a com.nbp.theplatform.threaddump.ThreadDeadLockState$Monitor) at com.nbp.theplatform.threaddump.ThreadDeadLockState$DeadlockThread.monitorOurLock(ThreadDeadLockState.java:182) - locked <0x00000007d58f5e48> (a com.nbp.theplatform.threaddump.ThreadDeadLockState$Monitor) at com.nbp.theplatform.threaddump.ThreadDeadLockState$DeadlockThread.run(ThreadDeadLockState.java:135) Locked ownable synchronizers: - None "DEADLOCK_TEST-2" daemon prio=6 tid=0x0000000006858800 nid=0x17b8 waiting for monitor entry [0x000000000815f000] java.lang.Thread.State: BLOCKED (on object monitor) at com.nbp.theplatform.threaddump.ThreadDeadLockState$DeadlockThread.goMonitorDeadlock(ThreadDeadLockState.java:197) - waiting to lock <0x00000007d58f5e78> (a com.nbp.theplatform.threaddump.ThreadDeadLockState$Monitor) at com.nbp.theplatform.threaddump.ThreadDeadLockState$DeadlockThread.monitorOurLock(ThreadDeadLockState.java:182) - locked <0x00000007d58f5e60> (a com.nbp.theplatform.threaddump.ThreadDeadLockState$Monitor) at com.nbp.theplatform.threaddump.ThreadDeadLockState$DeadlockThread.run(ThreadDeadLockState.java:135) Locked ownable synchronizers: - None "DEADLOCK_TEST-3" daemon prio=6 tid=0x0000000006859000 nid=0x25dc waiting for monitor entry [0x000000000825f000] java.lang.Thread.State: BLOCKED (on object monitor) at com.nbp.theplatform.threaddump.ThreadDeadLockState$DeadlockThread.goMonitorDeadlock(ThreadDeadLockState.java:197) - waiting to lock <0x00000007d58f5e48> (a com.nbp.theplatform.threaddump.ThreadDeadLockState$Monitor) at com.nbp.theplatform.threaddump.ThreadDeadLockState$DeadlockThread.monitorOurLock(ThreadDeadLockState.java:182) - locked <0x00000007d58f5e78> (a com.nbp.theplatform.threaddump.ThreadDeadLockState$Monitor) at com.nbp.theplatform.threaddump.ThreadDeadLockState$DeadlockThread.run(ThreadDeadLockState.java:135) Locked ownable synchronizers: - None持续等待来自远程服务的信息线程看起来是正常的,因为它的状态一直都是RUNNABLE,然而当你将thread dump按时间有序的排列,你可以看出来socketReadThread线程一直在读socket
2023-07-09 11:22:531

QQ运行一段时间后就自动弹出,报错为Type: EXCEPTION_ACCESS_VIOLATION,是咋回事?

可能是木马插件作怪。,用软件扫描下,如果没问题将QQ卸载重装。
2023-07-09 11:23:001

Call Stack窗口是怎么显示出来的

首先要进入调试状态(F5),VC6.0 在菜单栏或工具栏右键便可以看到调试窗口( watch Window、call stack Window、...)。如果是VC8.0或者VC9.0在菜单debug=〉windows下面可以找到。
2023-07-09 11:23:181

Fatal error: Call to undefined function get_header() in C:wampwwwindex.php on line 1 Call Stack

上面的错误提示是说,get_header()这个函数没有定义,据此,以下建议可供参考:1.检查这个函数是否是拼写错误在php里,内置有get_headers()函数,该函数的功用是:返回一个数组,包含有服务器响应一个http请求所发送的标头。如果失败则返回false并发出一条e_warning级别的错误信息2.检查是否在其它地方定义了这个函数如果定义,请将这个函数引入。
2023-07-09 11:23:251

Maximum call stack size exceeded 问题出现原因是什么

Maximum call stack size exceeded这个错误其实很直白,就是你程序代码堆栈调用超出了系统最大限制了。就是你不能这么一直调用【TS。DM】
2023-07-09 11:23:321

洛奇游戏BUG

分类: 电脑/网络 问题描述: client.exe caused an EXCEPTION_ACCESS_VIOLATIONin module Renderer2.dll at 001B:65F06203, pleione::rc_mesh2::Transform()+0x3d<system>OS : Microsoft Windows XP, Service Pack 2CPU : GenuineIntel, Intel(R) Pentium(R) D CPU 2.80GHz, 2810Mhz x2Video Adapter : NVIDIA GeForce 7300 GT (4318[0x10de]/915[0x393]/6.14.10.9136)Memory : 1023MBDate/Time : 2006/08/20, 20:28:38Version : 34Account : "yuyuxrx", (4503599627530115)<registers>EAX=25F92974 EBX=06AF4388 ECX=13CA06C0 EDX=0EE68300 ESI=618442DBEDI=*********** EBP=0012F7B4 ESP=0012F748 EIP=65F06203 FLG=***********CS=001B DS=0023 SS=0023 ES=0023 FS=003B GS=0000<call stack>[65F06203] Renderer2.dll::pleione::rc_mesh2::Transform() + 0x3d[65F080DF] Renderer2.dll::pleione::CRC_Mesh::_Transform() + 0x51[65E9AECE] Renderer2.dll::pleione::CActor::Transform() + 0x15[65E9AECE] Renderer2.dll::pleione::CActor::Transform() + 0x15[3F800000] <unknown module>::<unknown symbol>() + 0x0有没有高手能告诉我怎么解决??? 解析: 洛奇的许多程序都不完善,我也有过这事,天成的质量。。。。汗
2023-07-09 11:23:381

Keil的Vision4版本如何找到watch&call stack window

调试的时候在view下拉菜单里面
2023-07-09 11:23:471

Jquery出错:Uncaught RangeError: Maximum call stack size exceeded

不太懂你这个函数为什么会报错,我copy你的本地调试,什么错误提示都没有但是我要提下:1、你的html写法不标准,a标签不能直接嵌套在ul里头的2、可能是onclick是关键字,直接写函数有误,我本地是点击直接没反应,alert也没反应3、属性选择器有误li[display="block"],这个选择不到,li[style*="block"]应该这么写才对经修改方案如下:<script type="text/javascript"> function onc(){ //alert($("#a").text()) var more = $("a"); if(more.html()=="更多"){ $("li:hidden").css("display","block"); more.html("简化"); return; } if(more.html()=="简化"){ $("li[style*="block"]").css("display","none"); more.html("更多"); return; } }</script><ul> <li style="display:none">第1个li</li> <li>第2个li</li> <li style="display:none">第3个li</li> <li>第4个li</li> <li style="display:none">第5个li</li> <li>第6个li</li> <li>第7个li</li> <li>第8个li</li></ul><a href="#" id="a" onclick="onc()">更多</a>
2023-07-09 11:24:002

keil C51 callstack+locals 窗口 函数前面的加号点不开,请问哪位大神给指点下。 这是最新版本的

http://www.21ic.com/jszt/keil.htmkeil C51 资料,或许对你以后得学习有帮助!
2023-07-09 11:24:191

求大神 C++ 接口 转成java方法

提供思路:1: 用Java对这些方法重写2: 使用JNI,调用C++代码
2023-07-09 11:24:281

汇编语言中中断INT和子程序调用CALL保护现场时分别压入堆栈的是什么?

int指令相当于pushfpush cspush ipjmp xxxx:xxxxcall指令不保存标志寄存器call分为远调用和进调用远调用压入段寄存器和返回地址近调用只压入返回地址
2023-07-09 11:24:363

ext-all.js:7 Uncaught RangeError: Maximum call stack size exceeded

估计是在尝试做Ext.JSON.encode(dataArray);类似这样的encode操作吧?如果是的话需要改成for循环数组来封装元数据
2023-07-09 11:24:451

为什么我QQ一登录就发送错误报告 就掉线了?

你这个是QQ程序出错了。1.卸载QQ.在卸载QQ时,要去c:program files encentQQ目录下,把所有文件都删除,2.用优化大师清理一下注册表,重装QQ。
2023-07-09 11:25:032

我安装国王的恩赐 交错世界 点进去就黑了 切换出来就出现了个报错。。 想问下怎么回事 我买的是正版的。。

文件名全改成英文试试
2023-07-09 11:25:193

ORACLE数据库 ORA-00600 [ktubko_1] 错误,请问如何解决。

建议你参考http://www.xifenfei.com/3336.html
2023-07-09 11:25:273

什么是堆和栈?函数压栈是怎么回事?

堆 heap栈 stack是两种不同的数据结构stack的特点是先入后出 就像叠盘子 先放上去的盘子后拿走(底里的抽不出来自然最后才能拿走)stack和heap放在一起讨论的话 其实不是讲的数据结构了 是说操作系统给程序分配内存的方式对于一个程序来说 运行的时候 系统分配了一定内存给它 其中一块叫堆 一块叫栈堆里面主要放 动态分配的内容 比如c里面用 malloc 分配到的空间 就在堆里 c++里面用new 分配到的也在堆里栈里面放 函数的局部变量 一个函数的局部变量 会在这个函数被调用时push到栈里 这个函数返回的时候才从栈里面pop出来栈的先入后出的顺序使得函数可以嵌套 递归 如果递归层数太多 栈也会满 就会出现栈溢出……
2023-07-09 11:25:342

请哪位高人帮我把这段C语言代码转换成MIPS汇编语言

1 .file "6.c"2 .section .rodata3 .LC0:4 .string "350257267350276223345205245344270200344270252345255227347254246344270262:"5 .align 86 .LC1:8 .text9 .globl main10 .type main, @function11 main:12 .LFB0:13 .cfi_startproc14 pushq %rbp15 .cfi_def_cfa_offset 1616 .cfi_offset 6, -1617 movq %rsp, %rbp18 .cfi_def_cfa_register 619 addq $-128, %rsp20 movq %fs:40, %rax21 movq %rax, -8(%rbp)22 xorl %eax, %eax23 leaq -112(%rbp), %rdx24 movl $0, %eax25 movl $12, %ecx26 movq %rdx, %rdi27 rep stosq28 movq %rdi, %rdx29 movl %eax, (%rdx)30 addq $4, %rdx31 movl $0, -116(%rbp)32 movl $.LC0, %edi33 call puts34 leaq -112(%rbp), %rax35 movq %rax, %rdi36 call gets37 movl $0, -120(%rbp)38 jmp .L239 .L5:40 movl -120(%rbp), %eax41 cltq42 movzbl -112(%rbp,%rax), %eax43 cmpb $96, %al44 jle .L345 movl -120(%rbp), %eax46 cltq47 movzbl -112(%rbp,%rax), %eax48 cmpb $122, %al49 jle .L450 .L3:51 movl -120(%rbp), %eax52 cltq53 movzbl -112(%rbp,%rax), %edx54 movl -116(%rbp), %eax55 cltq56 movb %dl, -112(%rbp,%rax)57 addl $1, -116(%rbp)58 .L4:59 addl $1, -120(%rbp)60 .L2:61 movl -120(%rbp), %eax62 cltq63 movzbl -112(%rbp,%rax), %eax64 testb %al, %al65 jne .L566 movl -116(%rbp), %eax67 cltq68 movb $0, -112(%rbp,%rax)69 movl $.LC1, %edi70 call puts71 leaq -112(%rbp), %rax72 movq %rax, %rdi73 call puts74 movq -8(%rbp), %rdx75 xorq %fs:40, %rdx76 je .L677 call __stack_chk_fail78 .L6:79 leave80 .cfi_def_cfa 7, 881 ret82 .cfi_endproc83 .LFE0:84 .size main, .-main85 .ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3"86 .section .note.GNU-stack,"",@progbits
2023-07-09 11:25:431

Java 堆和栈到底要怎么理解

这要从操作系统里进程的内存结构说起了。。。下图是linux 中一个进程的虚拟内存分布:gt;图中0号地址在最下边,越往上内存地址越大。以32位地址操作系统为例,一个进程可拥有的虚拟内存地址范围为0-2^32。分为两部分,一部分留给kernel使用(kernel virtual memory),剩下的是进程本身使用, 即图中的process virtual memory。普通Java 程序使用的就是process virtual memory.上图中最顶端的一部分内存叫做user stack. 这就是题目问的 stack. 中间有个 runtime heap。就是题目中的heap. 他们的名字和数据结构里的stack 和 heap 几乎每啥关系。注意在上图中,stack 是向下生长的; heap是向上生长的。当程序进行函数调用时,每个函数都在stack上有一个 call frame。比如对于以下程序,public void foo(){//do something...println("haha"); // <<<=== 在这儿设置breakpoint 1}public void bar(){foo();}main(){bar();println("hahaha"); // <<<=== 在这儿设置 breakpoint 2}当程序运行到breakponit1时,user stack 里会有三个frame|| main 函数的 frame-------------------|| bar 函数的 frame-------------------<<<=== %ebp|| foo 函数的 frame------------------- <<<===%esp其中 esp 和 ebp 都是寄存器。 esp 指向stack 的顶(因为stack 向下生长,esp会向下走); ebp 指向当前frame的边界。当程序继续执行到brekapoing 2的时候stack 大概是这样的:
2023-07-09 11:25:501

汇编语言中的堆栈段指针是干什么的

用于指向堆栈的栈顶,以方便管理堆栈.
2023-07-09 11:26:178

JAVA或者C#中如何获取并输出调用堆栈上的变量值

用e.printStackTrace();如果你是说你程序中的用到的堆栈,可以在finally{}块中把堆栈的内容输出来。StackTrace ss = new StackTrace(true);String flName = ss.GetFrame(1).GetFileName();// GetMethod().DeclaringType;int lineNo = ss.GetFrame(1).GetFileLineNumber();String methodName = ss.GetFrame(1).GetMethod().Name;这是 C# 的调用栈上的内容java 中也有一个,StackTraceElement calledSte = getCallStackTraceElement();int lineNo = calledSte.getLineNumber();String className = calledSte.getClassName();String methodName = calledSte.getMethodName();
2023-07-09 11:26:441

ollydbg中bp send下断后, 堆栈窗口无调用call的信息, 这是因为缺少插件吗?

这种问题,挂到 广海 看雪 吾爱破解 比较靠谱。这个跟插件没关系吧。你的问题描述不清楚,什么叫堆栈窗口无法调用call的信息。如果bp send断了,只有3层,一般来说,是使用了线程发包,所以调用层数很少,大致都是功能函数使用消息的方式通知发包线程来做的,发包是异步线程做的,所以不好跟踪。一般来说,这样的程序,bp send不会有多大效果。还有一种可能是,程序中使用了不同的发包函数。你可以尝试断WSASend看看,或者把所有的发包函数都断一下。如果线程发包,尝试跟踪封包数据的写入,因为在上层应该还有一个专门的发包函数,负责写入封包数据,通知发包线程完成发包过程,这样来说比较符合封装逻辑。至于怎么跟踪到这个调用发包线程的发包函数,个人没太多注意,没对付过线程发包。还有种方式就是,可以尝试从关键数据入手,先找到关键的call,然后通过nop方式对call进行向下跟踪,看看能不能找到线程发包函数。以上。
2023-07-09 11:26:511

ORACLE ORA-8103错误要如何解决

ORA-8103是我们Database Consultant 经常要遇到的一个问题,了解ORA-8103的成因非常重要。【数据恢复】利用构造ROWID实现无备份情况下绕过ORA-1578、ORA-8103、ORA-1410等逻辑/物理坏块问题简单来说ORA-8103 的主要成因有2类:数据块的 block type 类型 是 无效的 或者读出来的块类型与Oracle期望的不一致。 例如 Oracle 认为该数据块的类型为data(type=6),但实际却不是。数据块中的data_object_id 和 数据字典中的data_object_id不匹配针对ORA-8103问题 我们优先推荐一些措施:ORA-08103问题的诊断最好是能生成8103错误的ERROR STACK TRACE, 在TRACE中会记录具体引发8103的对象的OBJ和OBJD,这便于我们定位可能存在corruption的对象。问题在于往往前台进程遇到ORA-08103错误不会在后台生成TRACE文件,这需要我们手动设置8103 触发ERRORSTACK的EVENTS:ALTER SYSTEM SET EVENTS "8103 TRACE NAME ERRORSTACK LEVEL 3′;解决思路包括:1. 通过OBJD和DBA定位到具体的表名和块号2. 有条件的情况下对该表做一个analyze .. validate structure3. 有条件的情况下对该表所在tablespace做一个 dbms_space_admin.ASSM_TABLESPACE_VERIFY4. 有条件的情况下move这张表或者相关的分区,尝试绕过该问题5. 有条件的情况下降该表或分区移动到MSSM表空间上,绕过该问题execute dbms_space_admin.tablespace_verify(‘&tablespace_name")oradebug setmypidoradebug tracefile_nameexecute dbms_space_admin.assm_tablespace_verify(‘&tablespace_name",dbms_space_admin.TS_VERIFY_BITMAPS)oradebug setmypidoradebug tracefile_name针对不同的 analyze validate structure 后得到的结果 , 我们可以得到一些初步的结论:如果执行 flush buffer cache之后再次analyze validate structure不再报ORA-8103错误则说明:可能是完全正常的现象,之前的ORA-8103正是也因为对象正在被DROP/TRUNCATE而导致SELECT报ORA-8103。一般来说Call Stack会显示进程正尝试访问该段的segment header。 更多信息可以参考BUG 7441661也可能该问题仅仅发生在buffer cache层,而没有发生在DISK上。通过flush buffer_cache若能解决,则一般是这种情况,往往是Buffer Cache管理的BUG 。如果执行 flush buffer cache之后再次analyze validate structure再次报ORA-8103错误则说明:如果dump对应的数据块发现 该块在逻辑上是完整一致的(也可以用bbed/dbv工具验证), 则有可能是Lost Write,则不是被其他对象重格式化使用了。这里判断Lost Write的一个重要手段是 对块做recover/blockrecover,如果recover能修复该块,则说明是因为Lost Write引起了本ORA-8103问题,如果不是则说明99%的可能性是BUG引起的。常见的一种现象是 使用第三方工具在数据库打开的情况下copy 数据库,这些工具的BUG可能导致copy 老的版本的block到目标新库中。另一种可能是 extent盘区级别的不一致。 同一个数据块/extent 可能 同时属于 2个数据段segment,这导致其中的一个被后者覆盖。 通过recover的方式是无法修复这种场景的, 因为这种逻辑的讹误发生在表空间级别的extent信息上。 可以检查dba_extents/dba_segments/dba_free_space这些视图来确定问题数据块到底是否同时属于多个对象, 或者 一个数据块 同时出现在dba_extents/dba_segments/dba_free_space 三个视图中, 因为 used extent 不该出现在dba_free_space中,而free extent不该在dba_extents,当然要排除recyclebin中对象的影响。 绝大多数情况下这种extent逻辑不一致的现象, 被称作extent overlap , 通常是Oracle Space Management空间管理层面的BUG。在对ORA-8103问题的诊断过程中 定位问题的OBJD异常重要。应当说准确地将ORA-8103错误与BUG定位起来是有难度的,因为这往往需要涉及到redo dump以发现到底是哪些opcode造成了后续的objd 或 block type 不一致。在一些BUG中我们发现,由于可能的变量陈旧,造成objd的结构未合理清除, 之后就发现block上的objd是错的了,可能遇到ORA-8103也可能是ORA-1410, 这引起了后续其他的逻辑讹误,以至于很难通过TRACE/REDO LOG DUMP来定位原始问题所在。 这也是为什么虽然在例如版本10.2.0.4上有几个ORA-8103的bug Note, 但这些BUG最终未被close为real software bug即真的软件BUG , 大多都是不了了之,因为在用户现场的TRACE和REDO DUMP都未必能真实定位到问题所在,这也是为什么我们要说逻辑讹误的分析和处理原要比物理讹误来的复杂。Maclean的经验是 在有大量Oracle DB的环境下 一年出个几次的逻辑/物理坏块是很正常的事情, 对于物理讹误 我们只要切实备份即可99%得解决。 而对于逻辑坏块可做的 事情不多, 打最新的补丁 开 db_block_checking、db_block_checksum几件事情而已。值得一说的是 如果去读一下ORA-8103的一些Bug Note,可以发现使用 LOB、APPEND INSERT、PARALLEL INSERT、exchange partition 、Split partition、advanced compression、HCC 混合列压缩往往是引起ORA-8103的高危操作 , 但实际我们又不可能放弃上述操作。如果自己搞不定可以找ASKMACLEAN专业数据库修复团队成员帮您恢复!
2023-07-09 11:27:001

主程序执行完ACALL后返回主程序后,堆栈指针SP的值

加2,别误人子弟
2023-07-09 11:27:082

系统出现0x00007ff错误怎么办?

故障原因:0x00007ff指令中引用的0x000007ff内存,该内存不能为READ是因为计算机的应用程序出错。该问题为内存错误,无法解决。Windows操作系统有时会出现错误信息,例如写内存错误系统会提示:「“该内存不能为“read”或“written”」,然后应用程序自行关闭,程序不能运行。Windows操作系统出现这个问题的最终原因是因为硬件或者软件产生了冲突。解决方法:1.按“windows+X”键调出菜单点击“运行”。2.弹出窗口,输入“cmd”然后点击“确定”。3.复制以下代码:for%1in(%windir%system32*.dll)doregsvr32.exe/s%1在弹出窗口中点击右键选择“粘贴”。4.然后按回车键,耐心等待几分钟即可。
2023-07-09 11:27:171

linux重启显示call trace 为什么 怎么办 很着急啊

用户程序可以在以下情形call trace,以方便调试:l 程序崩溃时,都会收到一个信号。Linux系统接收到某些信号时会自动打印call trace。l 在用户程序中添加检查点,类似于assert机制,如果检查点的条件不满足,就执行call trace。http://blog.csdn.net/walkingman321/article/details/6114224
2023-07-09 11:27:581

如何在Zstack 中使用串口

网上和论坛里面很多帖子都把精力集中到分析协议栈的串口工作机制上,比如分析DMA工作原理,中断工作原理,然后分析输入和输出Buffer的处理等内容,学习者跟着协议栈的串口底层一直到顶层转圈、转圈、再转圈,蒙圈了。实际上,从应用角度讲,我们根本就没有必要去深入的追究Zstack中串口的工作机制,也没有必要去搞清楚到底是怎么DMA和Interrupt的,我们只要调用几个简单函数就可以正常使用串口了。其实协议栈已经把使用串口的条件准备好了,我们何必再纠结硬件底层实现呢?应用者应该把协议栈看作一个平台,平台之上的应用才是我们的目标。下面我就讲一下如何利用协议栈现有平台来实现自己的串口应用。这里我所提及的现有平台即是Zstack自带的MT包,其实Zstack中的这个MT包功能相当强大,通过TI提供的ZTOOL工具可以用串口的方式同整个协议栈进行交互,在我们编写Zigbee应用程序的过程中,很多不知道该如何调用的函数都能在MT中找到参考!这个不多说了,有兴趣的同学可以去专门研究一下MT包。二、使用方法在MT包中,已经有了串口初始化即串口数据处理函数可用,关键的几个函数出现在MT_Uart.c文件中。我们拿出来几个关键函数说明一下(我捡重要语句注释):第一个函数void MT_UartInit (){ // 这个是MT中的一个串口初始化函数,主要作用是初始化串口工作的一些规矩halUARTCfg_t uartConfig;App_TaskID = 0; //处理串口数据的任务ID,可以先不管uartConfig.configured = TRUE;uartConfig.baudRate = MT_UART_DEFAULT_BAUDRATE;//默认38400波特率;可以更改,但是可能有新问题,具体解释内容比较多,我不说;uartConfig.flowControl = FALSE;//MT_UART_DEFAULT_OVERFLOW;//禁止硬件流控,如果你的串口只有RXD,TXD和GND三条线,必须这么做;uartConfig.flowControlThreshold= MT_UART_DEFAULT_THRESHOLD;uartConfig.rx.maxBufSize = MT_UART_DEFAULT_MAX_RX_BUFF;uartConfig.tx.maxBufSize = MT_UART_DEFAULT_MAX_TX_BUFF;uartConfig.idleTimeout = MT_UART_DEFAULT_IDLE_TIMEOUT;uartConfig.intEnable = TRUE;#if defined (ZTOOL_P1) || defined (ZTOOL_P2)uartConfig.callBackFunc = MT_UartProcessZToolData;//如果编译的时候选择使用ZTOOL,那么MT_UartProcessZtoolData将会处理串口接到的数//据串#elif defined (ZAPP_P1) || defined (ZAPP_P2)uartConfig.callBackFunc = MT_UartProcessZAppData;//如果编译的时候没有选择ZTOOL,而是选择使用了ZAPP,则由MT_UartProcessZAppData//函数来处理串口数据串(*如果是用CC2530的P0口那两根串口引脚,你就要define ZTOOL_P1,如果是P1口的那两根串口引脚,你就要define ZTOOL_P2,对于ZAPP_P1和ZAPP_P2也是一个情况*)#elseuartConfig.callBackFunc = NULL;//这个地方,如果你有兴趣自己写一个串口处理函数,那么你实现一个My_UartProcessData//函数,然后填到这里,替换NULL。#endif#if defined (MT_UART_DEFAULT_PORT)HalUARTOpen (MT_UART_DEFAULT_PORT, &uartConfig);//如果定义了默认串口,(0或者1),打开串口,这个HalUartOpen函数会做一大堆工作,具//体说来就是初始化呗。。。,我没有必要展开。需要注意的是这个函数把前面哪一堆初始化//的uartConfig做为参数传进去了噢!#else(void)uartConfig;#endif#if defined (ZAPP_P1) || defined (ZAPP_P2)MT_UartMaxZAppBufLen = 1;MT_UartZAppRxStatus = MT_UART_ZAPP_RX_READY;//这两句,如果是不想使用MT_UartProcessZToolData来处理串口数据,就。。。。//再说就要深入串口机制了,网上讲解文章太多了,自己看吧,我一会儿使用//MT_UartProcessZToolData。#endif}第二个函数void MT_UartRegisterTaskID( byte taskID ){App_TaskID = taskID;}第三个函数void MT_UartProcessZToolData ( uint8 port, uint8 event )osal_msg_deallocate ( (uint8 *)pMsg );}我们往上看看这个Message是什么?MT_UartProcessZToolData函数开始不远的地方有以下程序段:if (pMsg){pMsg->hdr.event = CMD_SERIAL_MSG;pMsg->msg = (uint8*)(pMsg+1);pMsg->msg[MT_RPC_POS_LEN] = LEN_Token;state = CMD_STATE1;}从这里看到,这个函数建立了一个消息头,用CMD_SERIAL_MSG做为消息,那么osal_msg_send给任务的那个消息将会以CMD_SERIAL_MSG出现。。。。。。。好了,以上三个函数看完,我们试着使用一下:以GenericApp例子为例:void GenericApp_Init( byte task_id ){XXXXXXXXXXXXXXXXXXXXXXXXXX(这个函数的最后,其实放在这个函数的哪里都行)MT_UartInit(); //added by kennanMT_UartRegisterTaskID(GenericApp_TaskID);}再看一下MT_UartRegisterTaskID(GenericApp_TaskID):void MT_UartRegisterTaskID( byte taskID ){App_TaskID = taskID;}好了,这样,我们顺利地把串口发来的数据用MT_UartProcessZToolData来处理,并且把处理后的数据打包发给了任务GenericApp_TaskID。接下来,我们看一下在GenericApp_TaskID中如何处理吧。在GenericApp的主处理函数中:UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events ){if ( events & SYS_EVENT_MSG ){MSGpkt = (afIncomingMSGPacket_t*)osal_msg_receive( GenericApp_TaskID );while ( MSGpkt ){switch ( MSGpkt->hdr.event ){case ZDO_CB_MSG:GenericApp_ProcessZDOMsgs( (zdoIncomingMsg_t *)MSGpkt );break;case KEY_CHANGE:GenericApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t*)MSGpkt)->keys );break;//增加Case CMD_SERIAL_MSG:ProcessUartData((mtOSALSerialData_t *)MSGpkt); //这个函数你自己实现吧,想做啥呢?想做啥就做啥。如果想把接//到的数据发回串口,调用HalUARTWrite就行了。}如果你不知道如何提取串口消息并处理,我就好人做到底,帮你实现一个ProcessUartData()函数吧。这个函数的作用是把接收到的数据从CM0开始一直到payload的最后一个字节发送给串口回显,不包括校验字节噢。ProcessUartCommand((mtOSALSerialData_t *)MSGpkt){ //为了正确地进行下面工作,用mtOSALSerialData_t类型来指向整个zigbee数据包(不是串//口数据包)uint8 *pMsg;pMsg = MSGpkt->msg;//定义一个指针,指向真正的串口接收数据存放位置,MSGptk里面还有一些别的Header噢。switch ( MSGpkt->hdr.event ){case CMD_SERIAL_MSG://如果是串口消息。。。。HalLedSet( HAL_LED_RED, HAL_LED_MODE_FLASH );//用LED灯指示一下收到数据啦uint8 *pBuffer;uint8 datalength;uint8 i;//定义几个变量,为从接收到的串口包里面提取数据以及写回串口做准备datalength = *pMsg++;//串口包中第一个字节是数据长度噢pBuffer = osal_mem_alloc(datalength);//分配一块内存准备把串口消息数据拿出来if(pBuffer != NULL){for(i = 0;i < datalength; i++)*pBuffer++ = *pMsg++;//把消息中的串口数据按照datalength数量挨个捞出来放血(放血啥意思?把池子//里面那东西捞出来放血,明白不?HalUARTWrite(0,pBuffer,datalength);//捞出来放血的串口数据再写回串口,也就是送到串口助手显示Osal_memfree(pBuffer);//动态申请的内存记得用完了free一下噢}break;default:break;}}说明:因为ZTOOL发过来的数据是有格式的,所以如果你用串口助手来测试,那么发的数据要按照格式来,如果你不想按那个格式,你可以自己去修改MT_UartProcessZToolData里面的相关程序。这种方法对于想要通过PC来控制zigbee的应用场合非常实用,因为你PC发过来的一般也会有命令和数据,如果不用MT的格式,你自己也要规范一个格式,既然MT已经有了,我们就借用就好。对于MT_UartProcessZAppData这个处理方法,也就是你define了ZAPP_P1或ZAPP_P2的情况,其机制也是类似的,只不过没有规定格式,你更自由,这里我就不多说了。再有,如果你真的在测试的时候不知道那么一长串数据的xor 结果是多少,也可以去MT_UartProcessZToolData函数中,找到://if ((MT_UartCalcFCS ((uint8*)&pMsg->msg[0], MT_RPC_FRAME_HDR_SZ +LEN_Token) == FSC_Token)){osal_msg_send( App_TaskID, (byte *)pMsg );}else//{//osal_msg_deallocate ( (uint8 *)pMsg );//}把我标红的几个位置注释掉,就不会校验了,你也不用算xor结果了,不过发数据的时候这个位置还是要的,你随便填个0好了。
2023-07-09 11:28:051