【ANDROID源码学习计划】【无锡江苏源码】【源码移位规则】25u源码
1.html简单网页代码?
2.Go看源码必会知识之unsafe包
3.手把手带你学webpack(6)--source-map
4.Game and Watch 破解刷机教程
5.你好,源码可以麻烦你帮我写个实现下图功能的源码java源码吗,谢谢(ps:我的源码财富值是零,实在抱歉...)
6.å¨linuxä¸å®è£
jdk1.8å¨linuxä¸å®è£
jdk
html简单网页代码?
HTML做一个打开网页代码
html的源码head区域中加上scriptlanguage="javascript"location.replace("")/script即可html
html代码如下:
head
title页面跳转/title
scriptlanguage="javascript"location.replace("")/script
/head
body
/body
/html
扩展资料:
网页HTML代码大全
文件类型HTML/HTML(放在档案的开头与结尾)
文件主题TITLE/TITLE(必须放在「文头」区块内)
文头HEAD/HEAD(描述性资料,像是源码「主题」)
文体BODY/BODY(文件本体)
(由浏览器控制的显示风格)
标题H?/H?(从1到6,有六层选择)
标题的源码ANDROID源码学习计划对齐H?ALIGN=LEFT|CENTER|RIGHT/H?
区分DIV/DIV
区分的对齐DIVALIGN=LEFT|RIGHT|CENTER|JUSTIFY/DIV
引文区块BLOCKQUOTE/BLOCKQUOTE(通常会内缩)
强调EM/EM(通常会以斜体显示)
特别强调STRONG/STRONG(通常会以加粗显示)
引文CITE/CITE(通常会以斜体显示)
码CODE/CODE(显示原始码之用)
样本SAMP/SAMP
键盘输入KBD/KBD
变数VAR/VAR
定义DFN/DFN(有些浏览器不提供)
地址ADDRESS/ADDRESS
大字BIG/BIG
小字SMALL/SMALL
与外观相关的标签(作者自订的表现方式)
加粗B/B
斜体I/I
底线U/U(尚有些浏览器不提供)
删除线S/S(尚有些浏览器不提供)
下标SUB/SUB
上标SUP/SUP
打字机体TT/TT(用单空格字型显示)
预定格式PRE/PRE(保留文件中空格的大小)
预定格式的宽度PREWIDTH=?/PRE(以字元计算)
向中看齐CENTER/CENTER(文字与都可以)
网页设计常用HTML代码
网页设计常用HTML代码大全
HTML是用来描述网页的一种语言。下面我为大家分享HTML代码,源码希望对大家学习html代码有帮助!源码
忽视右键
bodyoncontextmenu="returnfalse"
或
bodystyle="overflow-y:hidden"
1.如何几秒后转到别的源码页面?
METAHTTP-EQUIV="Refresh"CONTENT="时间;URL=地址"
2.点击关闭窗口
ahref="javascript:top.window.close();"点击关闭窗口/a!
3.请问如何去掉主页右面的源码滚动条?
bodyscroll="no"
bodystyle="overflow-y:hidden"
4.请问如何做到让一个网页自动关闭.
html
head
OBJECTid=closestype="application/x-oleobject"classid="clsid:adba6-d8ff-cf--aab7a"
paramname="Command"value="Close"
/object
/head
bodyonload="window.setTimeout(‘‘‘‘closes.Click()‘‘‘‘,)"
这个窗口会在秒过后自动关闭,而且不会出现提示./body
如何在不刷新页面的情况下刷新css?
style
button{ color:#;}
/style
buttononclick=document.styleSheets[0].rules[0].style.color=‘‘‘‘red‘‘‘‘点击按钮直接修改style标签里button选择符使按钮改为红色/button
请问如何让网页自动刷新?
在head部记入METAHTTP-EQUIV="Refresh"content=""其中为秒后自动刷新,你可以更改为任意值。源码
5.如何让页面自动刷新?
方法一,源码用refresh
HTML代码片段如下:
head
meta/post/
好啦,源码这篇文章就到这里啦,源码素质三连(分享、源码点赞、在看)都是笔者持续创作更多优质内容的动力!
创建了一个Golang学习交流群,欢迎各位大佬们踊跃入群,我们一起学习交流。无锡江苏源码入群方式:加我vx拉你入群,或者公众号获取入群二维码
结尾给大家发一个小福利吧,最近我在看[微服务架构设计模式]这一本书,讲的很好,自己也收集了一本PDF,有需要的小伙可以到自行下载。获取方式:关注公众号:[Golang梦工厂],后台回复:[微服务],即可获取。
我翻译了一份GIN中文文档,会定期进行维护,有需要的小伙伴后台回复[gin
手把手带你学webpack(6)--source-map
本篇文章对应源码:JvcicpO1xuXG4gIHRocmIG5ldyBFcnJvcignctZXRoaW5nIHdybnLi4uJyk7XGXG5cbm1vZHVsZS5leHBvcnRzID0geyBlcnJvckZuIHXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSbIjoiIn0=\n//#sourceURL=webpack-internal:///./src/utils.js\n");这种方式适用于在开发模式下需要精确的source-map时使用,相比直接的eval,会更加精确些
3.4inline-source-map顾名思义,就是以内联方式存放source-map文件,它会将source-map文件的内容编码成base后直接放在打包结果的最后
constHtmlWebpackPlugin=require('html-webpack-plugin');const{ CleanPlugin}=require('webpack');/***@type{ import('webpack').Configuration}*/module.exports={ mode:'development',devtool:'inline-source-map',plugins:[newHtmlWebpackPlugin(),newCleanPlugin()],};//#sourceMappingURL=data:application/json;charset=utf-8;base,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsbUJBQW1COzs7Ozs7O1VDTm5CO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7Ozs7OztBQ3RCQSxRQUFRLFVBQVUsRUFBRSxtQkFBTyxDQUFDLCtCQUFTOztBQUVyQyIsInNvdXJjZXMiOlsid2VicGFjazovLzA2X3dlYnBhY2tfccmNlXhcC8uL3NyYydGlscy5qcyIsIndlYnBhY2s6Ly8wNlZWJwYWNrX3NvdXJjZV9tYXAvd2VicGFjay9ibc3RyYXAiLCJ3ZWJwYWNrOi8vMDZfd2VicGFjazb3VyY2VfbWFwLy4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDbZWIjpbImZ1bmN0aW9uIGVycm9yRm4oKSB7XG4gIGNvbnNvbGUubG9nKCdoZWxsbyBlcnJvcicpO1xuXG4gIHRocmIG5ldyBFcnJvcignctZXRoaW5nIHdybnLi4uJyk7XGXG5cbm1vZHVsZS5leHBvcnRzID0geyBlcnJvckZuIHXG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXGYXIgXZWJwYWNrXvZHVsZV9jYWNoZV9fID0geXG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gXZWJwYWNrXvZHVsZV9jYWNoZV9fWvZHVsZUlkXTtcblWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaWbyB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlXbbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdHXG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFjatb2R1bGVzXbbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFjayZXF1aXJlXpO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiYuc3QgeyBlcnJvckZuIH0gPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbmVycm9yRm4oKTtcbiJdLCJuYW1lcyI6WsInNvdXJjZVJvb3QiOiIifQ==从官方文档可以看到,这种方式的构建速度是最慢的,只适用于构建单个文件的时候使用
3.5cheap-source-map这种方式相比source-map而言,没有建立列映射,源码移位规则也就是说遇到报错的时候,只会告诉你哪一行代码出错了,而不会告诉你哪一列出错了,如果开发时对列映射没有太高要求的话可以使用这种方式,毕竟不用生成列映射,比起source-map来说会快一些
constHtmlWebpackPlugin=require('html-webpack-plugin');const{ CleanPlugin}=require('webpack');/***@type{ import('webpack').Configuration}*/module.exports={ mode:'development',devtool:'cheap-source-map',plugins:[newHtmlWebpackPlugin(),newCleanPlugin()],};3.6cheap-module-source-map官方文档对这种方式的devtool并没有进行任何详细介绍,事实上这种方式适用于js代码被loader转换过的场景,比如被babel进行了转换,又比如源码是用typescript写的,后来经过loader转成了js代码,而我们又希望在运行的时候出现报错信息时能够对应回typescript代码像这种有loader对js进行转换的场景下,想要保证正确的source-map就需要使用到带有module的devtool了,因为除了cheap-module-source-map,还有很多别的方式也是有module的,只要是在官方文档中看到带有module的devtool都是具有这种特性
下面就以babel为例,我们通过babel-loader对js进行转换,然后看看能否正确对应到转换前的代码首先安装如下依赖
pnpmi@babel/core@babel-preset-envbabel-loader@babel/core是babel的核心,所有功能都要在这个包的基础上运行
@babel-preset-env让我们可以不需要考虑转换成什么版本的js,它会根据要适配的fullcalendar完整源码浏览器自动转换成能兼容相应浏览器的版本,这里我们使用它主要是能够将我们写的es6代码转成es5,从而让我们的源码和打包后的结果有差异,方便观察source-map是否生效
babel-loader,用于和webpack搭配使用,转换js文件
接下来配置loader
constHtmlWebpackPlugin=require('html-webpack-plugin');const{ CleanPlugin}=require('webpack');/***@type{ import('webpack').Configuration}*/module.exports={ mode:'development',devtool:'eval',//默认就是eval,因此development模式下不写devtool配置项也可以plugins:[newHtmlWebpackPlugin(),newCleanPlugin()],};0然后我们写一个具有es6特性的语法的函数
constHtmlWebpackPlugin=require('html-webpack-plugin');const{ CleanPlugin}=require('webpack');/***@type{ import('webpack').Configuration}*/module.exports={ mode:'development',devtool:'eval',//默认就是eval,因此development模式下不写devtool配置项也可以plugins:[newHtmlWebpackPlugin(),newCleanPlugin()],};1使用到了const、箭头函数,经过babel转换成es5后,代码的位置会和源码中不一样,那么在浏览器中如果仍然能够找到转换前的源码,则说明cheap-module-source-map生效了可以看到,在浏览器中确实能够看到转换前的源码,这就是cheap-module-source-map中module的作用,事实上官方文档中这么多的配置项我们不需要害怕,只需要知道每个关键字是什么意思,那么它们组合起来无非就是各种特性的叠加而已
3.7hidden-source-map也是一个见名知意的配置项,相比于source-map,就是峰谷线源码将最后的//#sourceMappingURL=main.js.map这句注释删除了,这也就意味着source-map不会生效了,但是仍然会生成source-map文件的官方文档中给我们的建议是在只需要知道有错误出现时给我们在控制台输出出来的话就可以使用这种方式
3.8nosources-source-map这种方式能够在出现错误的时候告诉我们是源码中哪个文件第几行出错了,但是不会在浏览器中给我们生成源码
总结了解完以上这几个devtool配置项,就足够了,官网的个配置项就是根据eval、hidden、inline、cheap、module、nosources这几个关键字组合出来的
但是组合也是有规则的,官方文档中给出的规则如下:
[inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map
原文:/post/Game and Watch 破解刷机教程
本教程适用于任天堂新版Game&Watch Mario/Zelda版本。进行刷机操作有风险,若机器在刷机过程中发生硬件损坏或机器无法正常使用,我们概不负责。
更新日期://
根据评论区用户@alexzhong 的建议,在下载编译固件所需的gcc工具链时,请确保下载x版本的工具链,而非arm版本。否则,可能会在编译过程中遇到错误。
准备工具:
- 十字螺丝刀一把
- Y字螺丝刀一把
- stlink(推荐淘宝盗版stlink v2,价格在元以内)
- Game&Watch Zelda/Mario 版本 MXUFM2I-G(用于扩展内存大小,可选)
- 一台装有Ubuntu的电脑(或使用具有USB直通功能的虚拟机如VMware)
认识Game&Watch硬件:
- Game&Watch主控为stmh7b0vbt6,配备Mhz Cortex-M7内核与kb内部flash存储。
- 外部Flash采用mxu系列的1.8v spi nor flash,Zelda版本为4MB大小,Mario版本为1MB大小,通过OctoSpi接口连接主控。
- 电池与喇叭与Switch Joycon同款,以降低成本。
- 主板供电为1.8v,debug接口的VDD也是1.8v,请勿接至3.3v供电,以防硬件烧毁。
硬件接口定义:
- Zelda版本:连接SWCLK, GND, SWDIO三根线。
- Mario版本:同样连接SWCLK, GND, SWDIO三根线,但需注意不要连接VDD。
更多硬件信息参考:github.com/ghidraninja/...
破解加密和备份原机固件:
- Game&Watch固件经过加密,尽管硬件开放性高,但固件本身仍需破解。
硬件准备:
- 断开电池连接,将SWDIO, SWCLK, GND线连接至stlink对应端口。
- 将stlink连接到Ubuntu系统(或VMware)。
- 使用Game&Watch的typec电源。
系统软件准备:
- 自行编译安装OpenOCD,由于版本和自带库问题,可能无法使用apt自动安装。
- 确保git submodule更新完整,可能需要反复尝试。
- 下载并解压arm gnu toolchain。
备份和破解流程:
- 下载脚本仓库。
- 配置脚本环境。
- 运行脚本备份外部flash。
- 确保flash备份后,开始向flash中写入内容。
- 备份内部flash,确保机器处于蓝屏模式,完成所有文件备份。
- 机器在完成脚本4解锁和脚本5恢复后,变为解密状态,可刷入其他固件。
错误代码分析:
- 运行中可能出现各种问题,查看logs目录下的n_openocd.log以获取详细错误信息。
- 确保脚本有读取usb设备的权限,运行sudo命令以获得权限。
- 连接器与设备不兼容时,可尝试更新stlink v2的固件。
编译并刷入retro_go固件:
- Game&Watch无扩展存储,所有游戏rom均在固件内。
- 支持运行的游戏平台包括:GBC、GB、GBA、NES、SNES、N、MD、SMS、SCS-1、SFC、PCE、GG、PS、PSX、SCE、PS2、PS3、PS4、Xbox、Xbox、XboxOne、Wii、WiiU、DS、3DS、PSVita、NDS、3DS、WiiU、Switch等。
- 准备游戏rom,确保容量不超过flash大小。
- 编译前,确保所有破解流程要求的软件已安装完毕。
- 下载固件源码,配置运行环境。
- 将游戏rom放入rom目录,编译固件。
- 编译完成后,自行刷机。
你好,可以麻烦你帮我写个实现下图功能的java源码吗,谢谢(ps:我的财富值是零,实在抱歉...)
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/
***
* @author kaifang
* @date 年月日下午5::
*/
public class TestGUI {
private static JTextField textField;
private static JTextField textField_1;
public static void main(String[] args) {
JFrame f = new JFrame("A JFrame");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(, );
f.setLocation(, );
f.getContentPane().setLayout(null);
JLabel lblNewLabel = new JLabel("\uD3\uD");
lblNewLabel.setBounds(, , , );
f.getContentPane().add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel("\u5E\u9F");
lblNewLabel_1.setBounds(, , , );
f.getContentPane().add(lblNewLabel_1);
textField = new JTextField();
textField.setBounds(, , , );
f.getContentPane().add(textField);
textField.setColumns();
textField_1 = new JTextField();
textField_1.setBounds(, , , );
f.getContentPane().add(textField_1);
textField_1.setColumns();
JLabel lblNewLabel_2 = new JLabel("\u\uB");
lblNewLabel_2.setBounds(, , , );
f.getContentPane().add(lblNewLabel_2);
JRadioButton rdbtnN = new JRadioButton("\u");
rdbtnN.setBounds(, , , );
f.getContentPane().add(rdbtnN);
JRadioButton radioButton = new JRadioButton("\u");
radioButton.setBounds(, , , );
f.getContentPane().add(radioButton);
ButtonGroup bg = new ButtonGroup();
bg.add(rdbtnN);
bg.add(radioButton);
JLabel label = new JLabel("\uC5\uF");
label.setBounds(, , , );
f.getContentPane().add(label);
JCheckBox chckbxJava = new JCheckBox("Java");
chckbxJava.setBounds(, , , );
f.getContentPane().add(chckbxJava);
JCheckBox chckbxC = new JCheckBox("C");
chckbxC.setBounds(, , , );
f.getContentPane().add(chckbxC);
JLabel label_1 = new JLabel("\uEA\u\u4ECB\u7ECD");
label_1.setBounds(, , , );
f.getContentPane().add(label_1);
JScrollPane scroll = new JScrollPane();
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll.setBounds(, , , );
f.getContentPane().add(scroll);
JTextArea textArea = new JTextArea();
scroll.setViewportView(textArea);
JButton btnNewButton = new JButton("\uE\u5B9A");
btnNewButton.setBounds(, , , );
f.getContentPane().add(btnNewButton);
JButton btnNewButton_1 = new JButton("\uD6\u6D");
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
btnNewButton_1.setBounds(, , , );
f.getContentPane().add(btnNewButton_1);
JLabel lblNewLabel_3 = new JLabel("");
lblNewLabel_3.setIcon(new ImageIcon("C:\\Users\\Administrator\\Pictures\\_.jpg"));
lblNewLabel_3.setBounds(, , , );
f.getContentPane().add(lblNewLabel_3);
f.setVisible(true);
}
}
å¨linuxä¸å®è£ jdk1.8å¨linuxä¸å®è£ jdk
JDK1.8æä¹ä¸è½½ï¼æ¹æ³/æ¥éª¤
第ä¸æ¥ï¼ä¸è½½linuxç¯å¢ä¸çjdk1.8ï¼è¯·å»ï¼å®ç½ï¼ä¸ä¸è½½jdkçå®è£ æ件ï¼
第äºæ¥ï¼æ°å»º/usr/javaæ件夹ï¼å°jdk-8u-linux-i.tar.gzæ¾å°è¯¥æ件夹ä¸ï¼å¹¶å°å·¥ä½ç®å½åæ¢å°/usr/javaç®å½ä¸ã
第ä¸æ¥ï¼éè¿ä»¥ä¸æ¥éª¤ï¼jdk1.8就已ç»å ¨é¨å®è£ å®æäº
第åæ¥ï¼é ç½®ç¯å¢åéï¼â ã使ç¨vim/etc/profileç¼è¾profileæ件ï¼å¦ä¸1å¾æ示ï¼â¡ãå¨/etc/profileåºé¨å å ¥å¦ä¸å 容ï¼
java_home=/usr/java/jdk1.8.0_path=$java_home/bin:$pathclasspath=$java_home/jre/lib/ext:$java_home/lib/tools.jarexportpathjava_homeclasspath
第äºæ¥ï¼æå使ç¨source/etc/profile让profileæ件ç«å³çæã
第å æ¥ï¼å½ä»¤æµè¯
â ã使ç¨javacå½ä»¤ï¼ä¸ä¼åºç°commandnotfoundé误
â¡ã使ç¨java-versionï¼åºç°çæ¬ä¸ºjavaversion"1.8.0_"
â¢ãecho$java_home,echo$classpath,echo$pathï¼ççèªå·±çé ç½®æ¯å¦é½æ£ç¡®ã
å¦ä½å¨Linuxç³»ç»ä¸å®è£ 软件ï¼
ç®åLinuxç¨æ·éæå¤çç³»ç»æ¯Centosï¼ç®åææ°å¤§çæ¬æ¯Centos7,ç³»ç»è½»é级ï¼å 费使ç¨ã
å¦ä½å¨Linuxä¸å®è£ 软件ï¼æ说å 个æ¹æ³:
ä¸.使ç¨rpmç±»åç软件å è¿è¡å®è£ ï¼è½ç¶æå¨æåé¢ä½æ¯æä¹ä¸æ¨èæ°æ使ç¨ï¼å 为æä¾èµçå ä¼å¾å¤ã
1.ä»å®ç½ä¸è½½rpm软件å ï¼ç´æ¥éè¿å½ä»¤
rpm-ivh软件å å
å¦ææ¯é¿éäºæå¡å¨å¯ä»¥ä½¿ç¨å½ä»¤ã
2.å¦æéåæºé常æ°ï¼ç³»ç»å¯ä»¥èç½ï¼ä½¿å¾yuminstall软件å åæ¥å®è£ å¾æ¹ä¾¿ã
äºãæºç å®è£ ï¼æ¨è使ç¨ï¼
æºç ç±»çå®è£ ï¼ä¸»è¦çæ¥éª¤å¦ä¸:
ä¸è½½å¥½è½¯ä»¶å
1.解åå®è£ æºæ件tar-zxvftest.tar.gz
2.è¿å ¥å°è§£ååçç®å½cdtest
3../configure
4.make
5.makeinstall
以è¿ä»¥ä¸æ¥éª¤å³å¯å®ææºç å 软件çå®è£ ã
为ä»ä¹è¦æ¨èè¿ä¸ªå¢ï¼å 为è¿æ ·å¯ä»¥èªå·±éæ©æéè¦è½¯ä»¶ççæ¬ã
jdkå linuxå¯ä»¥å¨windowsç¨åï¼
å¨æç认ç¥èå´å æ¯ä¸å¯ä»¥ç
oracleå®æ¹åå«æä¾äºåºäºLinuxåwindowsä¸åç³»ç»çæ¬çjdkå®è£ å ï¼ä½ å¯ä»¥æ ¹æ®èªå·±çç³»ç»ç±»å,ç³»ç»å ·ä½ä½æ°å»éæ©åéçjdkçæ¬è¿è¡ä¸è½½ï¼ä»¥åoracleæ éç»å½å³å¯ä¸è½½ï¼ç°å¨éç»å½æè½ä¸è½½ï¼æ³¨åä¸ä¸ªå è´¹çè´¦æ·ï¼ç»å½å°±å¯ä»¥äºï¼