import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class EditorJFrame extends JFrame implements ActionListener, ItemListener, MouseListener
{
private JTextField text_size; //字型大小文本行
private JCheckBox checkbox_bold, checkbox_italic; //粗體、斜體復選框
private JButton button_cut, button_, button_paste; //剪切、復制、粘貼按鈕
private JTextArea textarea; //文本區
private JPopupMenu popupmenu; //快捷菜單
private JDialog dialog; //出錯提示對話框
private JLabel label_dialog; //對話框中的標簽
public EditorJFrame()
{
super("文本編輯器"); //默認BorderLayout布局
this.setSize(500,300);
this.setLocation(300,240);
this.setDefaultCloseOperation(EXIT_ON_CLOSE); //單擊窗口關閉按鈕時,結束程序運行
textarea = new JTextArea("TextArea");
textarea.addMouseListener(this); //為文本區注冊滑鼠事件監聽器
this.add(textarea); //文本區添加到框架的中部
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); //面板為流布局,左對齊
this.add(panel,"North"); //面板添加到框架的北部
text_size = new JTextField("12",10);
panel.add(text_size);
text_size.addActionListener(this); //注冊文本行的單擊事件監聽器
checkbox_bold = new JCheckBox("粗體"); //復選框
panel.add(checkbox_bold);
checkbox_bold.addItemListener(this); //注冊復選框的選擇事件監聽器
checkbox_italic = new JCheckBox("斜體");
panel.add(checkbox_italic);
checkbox_italic.addItemListener(this);
this.addmyMenu(); //調用自定義方法,添加菜單
this.setVisible(true);
}
private void addmyMenu() //添加主菜單、快捷菜單、對話框
{
JMenuBar menubar = new JMenuBar(); //菜單欄
this.setJMenuBar(menubar); //框架上添加菜單欄
JMenu menu_file = new JMenu("文件"); //菜單
menubar.add(menu_file); //菜單欄中加入菜單
menu_file.add(new JMenuItem("打開")); //生成菜單項並加入到菜單
menu_file.add(new JMenuItem("保存"));
menu_file.addSeparator(); //加分隔線
JMenuItem menuitem_exit = new JMenuItem("退出");
menu_file.add(menuitem_exit);
menuitem_exit.addActionListener(this); //為菜單項注冊單擊事件監聽器
JMenu menu_edit = new JMenu("編輯");
menubar.add(menu_edit);
JMenu menu_style = new JMenu("字形");
menu_style.add(new JCheckBoxMenuItem("粗體")); //復選菜單項
menu_style.add(new JCheckBoxMenuItem("斜體"));
menu_edit.add(menu_style); //菜單加入到菜單中成為二級菜單
JMenu menu_color = new JMenu("顏色");
menu_edit.add(menu_color);
ButtonGroup buttongroup = new ButtonGroup(); //按鈕組
JRadioButtonMenuItem rbmi_red = new JRadioButtonMenuItem("紅",true); //單選菜單項
buttongroup.add(rbmi_red); //單選菜單項添加到按鈕組
menu_color.add(rbmi_red); //單選菜單項添加到菜單
JRadioButtonMenuItem rbmi_green = new JRadioButtonMenuItem("綠",true);
buttongroup.add(rbmi_green);
menu_color.add(rbmi_green);
JRadioButtonMenuItem rbmi_blue = new JRadioButtonMenuItem("藍",true);
buttongroup.add(rbmi_blue);
menu_color.add(rbmi_blue);
menubar.add(new JMenu("幫助"));
popupmenu = new JPopupMenu(); //彈出式菜單對象
JMenuItem menuitem_cut = new JMenuItem("剪切");
menuitem_cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));//設置快捷鍵Ctrl+X
popupmenu.add(menuitem_cut); //加入剪切菜單項
menuitem_cut.addActionListener(this);
JMenuItem menuitem_ = new JMenuItem("復制");
menuitem_.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));//設置快捷鍵Ctrl+C
popupmenu.add(menuitem_);
menuitem_.addActionListener(this);
JMenuItem menuitem_paste = new JMenuItem("粘貼");
menuitem_paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));//設置快捷鍵Ctrl+V
popupmenu.add(menuitem_paste);
menuitem_paste.addActionListener(this);
textarea.add(popupmenu); //文本區添加快捷菜單
dialog = new JDialog(this,"提示");
dialog.setSize(240,80);
label_dialog = new JLabel("",JLabel.CENTER);
dialog.add(label_dialog);
dialog.setDefaultCloseOperation(HIDE_ON_CLOSE); //單擊對話框的關閉按鈕時,隱藏對話框而不結束程序運行
}
public void actionPerformed(ActionEvent e) //單擊事件處理程序
{
if(e.getActionCommand()=="退出") //不能用switch(int)語句
System.exit(0); //單擊菜單項時結束程序
if(e.getActionCommand()=="剪切")
textarea.cut(); //將選中文本剪切送系統剪貼板
if(e.getActionCommand()=="復制")
textarea.();
if(e.getActionCommand()=="粘貼")
textarea.paste();
if(e.getSource()==text_size) //單擊文本行時,改變字型大小
{
int size=0;
try
{
size = Integer.parseInt(text_size.getText());
if (size<=0 || size>72)
throw new Exception("SizeException"); //拋出異常對象
java.awt.Font font = textarea.getFont();
textarea.setFont(new Font(font.getName(),font.getStyle(),size));
}
catch(NumberFormatException nfe)
{
label_dialog.setText("\""+text_size.getText()+"\" 不能轉換成整數,請重新輸入!");
dialog.setLocation(this.getX()+100,this.getY()+100);
dialog.setVisible(true);
}
catch(Exception ex)
{
if (ex.getMessage()=="SizeException") //捕獲自己拋出的異常對象
{
label_dialog.setText(size+" 字型大小不合適,請重新輸入!");
dialog.setLocation(this.getX()+100,this.getY()+100);
dialog.setVisible(true);
}
}
finally{}
}
}
public void itemStateChanged(ItemEvent e) //復選框選擇事件處理程序
{ //實現ItemListener介面中的方法
Font font = textarea.getFont();
int style = font.getStyle();
if (e.getSource()==checkbox_bold)
style = style ^ 1; //整數的位運算,異或^
if (e.getSource()==checkbox_italic)
style = style ^ 2;
textarea.setFont(new Font(font.getName(),style,font.getSize()));
}
public void mouseClicked(MouseEvent mec) //單擊滑鼠時觸發
{ //實現MouseListener介面中的方法
if (mec.getModifiers()==mec.BUTTON3_MASK) //單擊的是滑鼠右鍵
popupmenu.show(textarea,mec.getX(),mec.getY());//在滑鼠單擊處顯示快捷菜單
}
public void mousePressed(MouseEvent mep) { }
public void mouseReleased(MouseEvent mer) { }
public void mouseEntered(MouseEvent mee) { }
public void mouseExited(MouseEvent mex) { }
public void mouseDragged(MouseEvent med) { }
public static void main(String arg[])
{
new EditorJFrame();
}
}
㈡ C51單片機閉環控制系統的設計
控制系統以MCS-51兼容單片機AT89C51微處理器為核心,顯示模塊、定時控制模塊、電源模塊等電路組成.
AT89C51微處理器
AT89C51是一款採用ATMEL高密度非易失存儲器製造技術製造,與工業標準的MCS-51指令集和輸出管腳相兼容的單片機,其主要性能特點有:
(1)高性能、低功耗的8Byte微控制器,RISC精簡指令集機構,指令功能強大,且多數為單周期指令,具有低功耗的閑置和掉電控制模式、5個中斷源、兩個16位定時器/計數器等功能。
(2)片內集成4KB可編程閃爍存儲器,可進行1000次以上寫/擦循環操作,數據保留時間可達10年,支持三級程序存儲器鎖定。
(3)豐富強大的外部介面性能:32可編程I/O線,可編程串列通道,片內振盪器和時鍾電路。
軟體系統設計
系統利用偉福6000編寫源代碼,MEP500燒寫AT89C51晶元實現智能時鍾控制功能。由於系統軟體主要完成時鍾顯示、鬧鈴、時間設置等功能。源程序主要包括主程序、中斷子程序、顯示子程序、定時子程序、延時子程序等。
實現程序如下:
……
;**************************; 以下為主程序 (檢測各鍵是否按下)
;***************************MainLoop:
jb AlarmSetKey,CheckMinuteKey
call Delay
jb AlarmSetKey,CheckMinuteKey
setb ClockMode
call AlarmSet
CheckMinuteKey:
jb MinuteKey,CheckHourKey
mov a,Minute
add a,#1
mov Minute,a
cjne a,#3ch,NotOver1
mov Minute,#0
NotOver1:
jnb MinuteKey,$
CheckHourKey:
jb HourKey,CheckAlarmA
mov a,Hour
add a,#1
mov Hour,a
cjne a,#18h,NotOver2
mov Hour,#0
NotOver2:
jnb HourKey,$
CheckAlarmA:
jnb AlarmTimeOnA,CheckAlarmP
call StartPc; call AlarmProcess
ajmp ToReturn
CheckAlarmP:
jnb AlarmTimeOnP,ToReturn
call ShutPc
ToReturn:
ajmp MainLoop
;**************************; 定時器Timer0中斷服務程序(此程序每8ms執行一次)
;***************************
TimeInt:
mov th0,#0E0h
mov tl0,#0bfh
push acc
push psw
setb rs0
clr rs1
d jnz OneSecondCounter,NotoneSecond
mov OneSecondCounter,#125
call Clock
call ConvertoBuffer
NotoneSecond:
call ScanDisplay
pop psw
pop acc
reti
; ***************************
; 掃描顯示子程序
;***************************
ScanDisplay:
mov r1,#DisplayBuffer
mov R4,#11111011b
play:
mov a,R4
mov P2,A
mov A,@R1
mov DPTR,#TAB
movc A,@A+DPTR
mov P0,A
lcall Delay
inc R1
mov A,R4
jnb ACC.7,ENDOUT
rl A
mov R4,A
ajmp PLAY
endout: SETB P2.7
mov P0,#0FFH ret
TAB:DB 0C0H,0F9H,0A4H,0B0H,
99H,92H,82H,0F8H,80H,90H,7FH,
0B7H,0FFH
;***************************
; 時鍾內容加1秒的子程序
;***************************
Clock:
mov a,Second
add a,#1
mov Second,a
cjne a,#3cH,NotOverFlow
mov Second,#0
mov a,Minute
add a,#1
mov Minute,a
cjne a,#3cH,NotOverFlow
mov Minute,#0
mov a,Hour
add a,#1
mov Hour,a
cjne a,#18H,NotOverFlow
mov Hour,#0
NotOverFlow:
mov a,Second
jnz NotAlarm
jnb AlarmAOnOff,PAlarm
mov a,Minute
cjne a,AlarmAMinute,PAlarm
mov a,Hour
cjne a,AlarmPHour,PAlarm
ajmp alarming
PAlarm:
jnb AlarmPOnOff,NotAlarm
mov a,Minute
cjne a,AlarmPMinute,NotAlarm
mov a,Hour
cjne a,AlarmPHour,NotAlarm
ajmp Alarming1
Alarming:
setb AlarmTimeOnA
ajmp NotAlarm
Alarming1:
setb AlarmTimeOnP;
NotAlarm:
ret
;***************************
; 將時鍾內容或鬧時設置值轉換到顯示緩沖區子程序
;***************************
ConvertoBuffer:
mov r1,#DisplayBuffer
jb ClockMode,DispAlarmSet
mov a,Second
mov DispSecond,a
mov a,Minute
mov Dispminute,a
mov a,Hour
mov DispHour,a
ajmp Convert
DispAlarmSet:
jb AlarmAOnOff,AlarmAOn
mov DispSecond,#00h
jb AlarmPOnOff,AlarmPOn
mov DispSecond,#00h
ajmp Convert
AlarmAOn:
mov DispSecond,#11
NextA:
mov a,AlarmAMinute
mov Dispminute,a
mov a,AlarmAHour
mov DispHour,a
ajmp Convert
AlarmPOn:
mov DispSecond,#11
NextP:
mov a,AlarmPMinute
mov Dispminute,a
mov a,AlarmPHour
mov DispHour,a
Convert:
mov a,DispSecond
mov b,#10
div ab
mov @r1,b
inc r1
mov @r1,a
inc r1
mov a,DispMinute
mov b,#10
div ab
mov @r1,b
inc r1
mov @r1,a
inc r1
mov a,DispHour
mov b,#10
div ab
mov @r1,b
inc r1
mov @r1,a
ret
控制系統,以AT89C51微處理器為核心,具有集成度高、性能穩定、抗干擾能力強、性價比高的優點。經軟體模擬和實際功能驗證,證明設計可靠、設計方案可行,在實際應用中有較大的實 用價值。
㈢ 大數據培訓課程介紹,大數據學習課程要學習哪些
如需大數據培訓推薦選擇【達內教育】,大數據學習課程如下:
1、Java語言基礎:大數據開發主要是基於JAVA,作為大數據應用的開發語言很合適。【Java語言】基礎包括Java開發介紹、Java語言基礎、Eclipse開發工具等。
2、HTML、CSS與Java:網站頁面布局、HTML5+CSS3基礎、jQuery應用、Ajax非同步交互等。
3、Linux系統和Hadoop生態體系:大數據的開發的框架是搭建在Linux系統上面,Hadoop是一個大數據的基礎架構,它能搭建大型數據倉庫,PB級別數據的存儲、外理、分析、統計等業務。
4、分布式計算框架和SparkStrom生態體系:有一定的基礎之後,需要學習Spark大數據處理技術、Mlib機器學習、GraphX圖計算以及Strom技術架構基礎和原理等知識。Spark在性能還是在方案的統一性方面都看著極大的優越性,可以對大數據進行綜合外理:實時數據流外理,批處理和互動式查詢。感興趣的話點擊此處,免費學習一下
想了解更多有關大數據的相關信息,推薦咨詢【達內教育】。秉承「名師出高徒、高徒拿高薪」的教學理念,是達內公司確保教學質量的重要環節。作為美國上市職業教育公司,誠信經營,拒絕虛假宣傳是該機構集團的經營理念。該機構在學員報名之前完全公開所有授課講師的授課安排及背景資料,並與學員簽訂《指定授課講師承諾書》,確保學員利益。達內IT培訓機構,試聽名額限時搶購。
㈣ SCML是什麼意思啊(除了模塊庫)
SystemC模塊庫(SCML) CoWare發布了SystemC模塊庫(SCML)源代碼和復用方法導則,將SCML的標准級方法擴展到所有與IEEE 1666 SystemC相兼容的工具環境。CoWare公司營銷和業務開發副總裁AK Kalekos表示,「我們一直致力於開發SystemC TLM(交易級建模)的行業標准,而這一導則的公布則體現了我們這一目標。」 SCML應用編程介面和方法導則在1月份推出,目的是為了提供基礎架構來開發出SystemC中用戶自定義的高可復用性TLM外圍模型。CoWare 公司稱,SCML可以在外圍模型內部將TLM通信、存儲、計時和執行等程序分解開來,從而使編碼更加模塊化,易於高效的開發和測試。 東芝是採用CoWare產品的十家公司和組織之一,該公司負責半導體研發的數字媒體SoC研發中心的首席專家Nobu Matsumoto說:「半導體公司必須改變其產品開發策略,才能將重心從單個產品轉移到產品平台。對於東芝的多核MeP數字媒體平台來說,基於標準的交易級建模的互用性和設計復用是此種策略的基石。SCML方法和快速的MeP處理器模型結合,讓我們的系統架構師更快地為軟體和硬體研發隊伍提供正確抽象層級的平台模型。」 CoWare公司的源代碼庫套件包括:SCML API庫源代碼;SCML源代碼建模範例;OSCI開發源概念驗證SystemC庫的構建草稿;使用gcc 3.2.3的CoWare Model Designer;SCML API參考手冊和SCML建模TLM外圍設備用戶指南。
求採納
㈤ 如何快速安裝OSSFTP工具阿里雲OSS FTP安裝圖文詳細教程
OSSFTP工具是一個特殊FTPserver,它接收普通FTP請求後,將對文件、文件夾的操作映射為對OSS的操作,從而使得您可以基於FTP協議來管理存儲在OSS上的文件。
注意生產環境請使用osssdk,OSSFTP工具主要面向個人用戶使用。
主要特性
跨平台:
無論是Windows、Linux還是Mac,無論是32位還是64位操作系統,無論是圖形界面還是命令行都可以運行。
免安裝:
解壓後可直接運行。
免設置:
無需設置即可運行。
透明化:
FTP工具是python寫的,您可以看到完整的源碼,我們稍後也會開源到Github。
主要功能
支持文件和文件夾的上傳、下載、刪除等操作。
通過Multipart方式,分片上傳大文件。
支持大部分FTP指令,可以滿足日常FTP的使用需求。
注意
1.目前在1.0版本中,考慮到安裝部署的簡便,OSSFTP工具沒有支持TLS加密。由於FTP協議是明文傳輸的,
為了防止您的密碼泄漏,建議將FTPserver和client運行在同一台機器上,通過127.0.0.1:port的方式來訪問。
2.不支持rename和move操作。
3.安裝包解壓後的路徑不要含有中文。
4.FTPserver的管理控制頁面在低版本的IE中可能打不開。
5.FTPserver支持的Python版本:Python2.6,Python2.7。
下載
由於Windows不會默認安裝Python2.7,所以安裝包中包含了Python2.7,免去您python安裝配置的麻煩,解壓即可使用。
由於Linux/Mac系統默認會安裝Python2.7或Python2.6,所以安裝包中不再包含可執行的python,只包含了相關依賴庫。
運行
首先解壓之前下載的文件,然後根據環境情況選擇不同的運行方式。
Windows:雙擊運行start.vbs即可
Linux:打開終端,運行 i.$bashstart.sh
Mac:雙擊start.command,或者在終端運行 i.$bashstart.command
上述步驟會啟動一個FTPserver,默認監聽在127.0.0.1的2048埠。同時,為了方便您對FTPserver的狀態進行管控,還會啟動一個web伺服器,監聽在127.0.0.1的8192埠。如果您的系統有圖形界面,還會自動打開控制頁面,
如下所示:
大部分情況不要任何配置,就可以運行一個FTPserver了,如果想對FTPserver進行配置,請注意需要重啟才能生效。
連接到FTPserver推薦使用FileZilla客戶端去連接FTPserver。
下載安裝後,按如下方式連接即可:
主機:127.0.0.1
登錄類型:正常
用戶:access_key_id/bucket_name
密碼:access_key_secret
注意:
用戶中,/是必須的,如用戶
tSxyiUM3NKswPMEp/test-hz-jh-002。
-access_key_id和access_key_secret的獲取
高級使用
通過控制頁面管理FTPserver
修改監聽地址
如果需要通過網路來訪問FTPserver,那麼需要修改監聽地址,因為默認的監聽地址127.0.0.1隻允許來自本地的訪問。可以修改成內網ip或公網ip。
修改監聽埠
修改FTPserver監聽的埠,建議埠大於1024,因為監聽1024以下的埠時需要管理員許可權.
修改日誌等級
設置FTPserver的日誌級別。FTPserver的日誌會輸出到data/ossftp/目錄下,可以通過控制頁面的日誌按鈕在線查看。默認的日誌界別為INFO,列印的日誌信息較少,如果需要更詳細的日誌信息,可以修改為DEBUG模式。如果希望減少日誌的輸出,可以設置級別為WARNING或ERROR等。
設置Bucketendpoints
FTPserver默認會探索bucket的所屬location信息,隨後將請求發到對應的region(如oss-cn-hangzhou.aliyuncs.com或oss-cn-beijing.aliyuncs.com),FTPserver會優先嘗試內網訪問oss。如果您設置了bucketendpoints,如設置為test-bucket-a.oss-cn-hangzhou.aliyuncs.com,那麼當訪問test-bucket-a時,就會使用oss-cn-hangzhou.aliyuncs.com域名。
注意
所有修改都需要重啟才能生效。
上述的所有修改其實都是修改的ftp根目錄下的config.json,所以您可以直接修改該文件。
直接啟動FTPserver(Linux/Mac)
可以直接啟動ossftp目錄下的ftpserver.py,免去web_server的開銷。
1.python ossftp/ftpserver.py
配置修改方式同上。
可能遇到的問題
如果連接FTPserver時,遇到以下錯誤:
有兩種可能:
輸入的access_key_id和access_key_secret有誤。
解決 :請輸入正確的信息後再重試。
所用的access_key信息為ram子賬戶的access_key,而子賬戶不具有Listbuckets許可權。
解決 :當使用子賬戶訪問時,請在控制頁面中指定bucketendpoints,即告訴FTPserver某個bucket應該用什麼endpoint來訪問。同時,子賬戶也需要一些必須的許可權,關於使用ram訪問oss時的訪問控制。
只讀訪問
OSSFTP工具需要的許可權列表為ListObjects、GetObject、HeadObject。關於如何創建一個具有隻讀訪問的ram子賬戶,請參考圖文教程如何結合ram實現文件共享。
上傳文件
如果允許ram子賬戶上傳文件,還需要PutObject。
刪除文件
如果允許ram子賬戶刪除文件,還需要DeleteObject。
如果您在Linux下運行FTPserver,然後用FileZilla連接時遇到如下錯誤:
501 can't decode path (server filesystem encoding is ANSI_X3.4-1968)
一般是因為本地的中文編碼有問題。在將要運行start.sh的終端中輸入下面的命令,然後再重新啟動即可。
1 .$ export LC_ALL=en_US.UTF-8; export LANG="en_US.UTF-8"; locale