星期五, 五月 15, 2009

[转]Chrome启动参数方案

下面是常用的一些启动参数:
–user-data-dir=UserDataDir 自定义用户数据目录
–start-maximized 启动就最大化
–no-sandbox 取消沙盒模式
–single-process 单进程运行
–process-per-tab 每个标签使用单独进程
–process-per-site 每个站点使用单独进程
–in-process-plugins 插件不启用单独进程
–disable-popup-blocking 禁用弹出拦截
–disable-javascript 禁用JavaScript
–disable-java 禁用Java
–disable-plugins 禁用插件
–disable-images 禁用图像
A Complete list to Google Chrome Startup Switches…
see below
-disable-hang-monitor
-disable-metrics
-disable-metrics-reporting
-assert-test
-renderer-assert-test
-crash-test
-renderer-crash-test
-renderer-startup-dialog
-plugin-startup-dialog
-testshell-startup-dialog
-plugin-launcher
-channeltesting-channel
-homepagestart-renderers-manuallyrenderer
-renderer-pathplugin
-single-process
-process-per-tab
-process-per-site
-in-process-plugins
-no-sandbox
-safe-plugins
-trusted-plugins
-test-sandbox
-user-data-dir
-appupload-file
-dom-automation
-plugin-pathjs-flags
-geoidlangdebug-children
-wait-for-debugger-children
-log-filter-prefix
-enable-logging
-dump-histograms-on-exit
-disable-logging
-remote-shell-port
-uninstallomnibox-popup-count
-automation-channel
-restore-last-session
-record-mode
-playback-mode
-no-events
-hide-icons
-show-icons
-make-default-browser
-proxy-server
-dns-log-details
-dns-prefetch-disable
-debug-print
-allow-all-activex
-disable-dev-tools
-always-enable-dev-tools
-memory-model
-tab-count-to-load-on-session-restore
-memory-profile
-enable-file-cookies
-start-maximized
-enable-watchdogfirst-run
-message-loop-strategy
-message-loop-histogrammer
-importsilent-dump-on-dcheck
-disable-prompt-on-repost
-disable-popup-blocking
-disable-javascript
-disable-java
-disable-plugins
-disable-images
-use-lf-heap
-new-http

本文来源于谷歌Chrome中文站 http://www.downdig.com/chrome , 原文地址:

Chrome启动参数及地址栏功能

Chrome启动参数及地址栏功能,希望各位大力支持(持续更新)。
转: http://bbs.webmou.com/thread-2343-1-1.html

启动参数
--disable-plugins 禁用插件
--User-data-dir=dir 设置缓存
--single-process 单线程模式
--no-sandbox 非沙箱模式
process-per-tab 每个标签使用单独进程
process-per-site 每个站点使用单独进程
in-process-plugins 插件不启动单独进程
start-maximized 启动就最大化
first-run 第一次运行
disable-popup-blocking 禁用弹出拦截
disable-javascript 禁用javascript
disable-java 禁用java
disable-images 禁用图像

disable-hang-monitor
disable-metrics
disable-metrics-reporting
assert-test
renderer-assert-test
crash-test
renderer-crash-test
renderer-startup-dialog
plugin-startup-dialog
testshell-startup-dialog
plugin-launcher
channel
testing-channel
homepage
start-renderers-manually
renderer
renderer-path
plugin
safe-plugins
trusted-plugins
test-sandbox
app
upload-file
dom-automation
plugin-path
js-flags
geoid
lang
debug-children
wait-for-debugger-children
log-filter-prefix
enable-logging
disable-logging
log-level
dump-histograms-on-exit
remote-shell-port
uninstall
omnibox-popup-count
automation-channel
restore-last-session
record-mode
playback-mode
no-events
hide-icons
show-icons
make-default-browser
proxy-server
dns-log-details
dns-prefetch-disable
debug-print
allow-all-activex
disable-dev-tools
always-enable-dev-tools
memory-profile
memory-model
enable-file-cookies
enable-watchdog
message-loop-histogrammer
import
silent-dump-on-dcheck
disable-prompt-on-repost
use-lf-heap
gears-plugin-path
gears-in-renderer
new-http
javascript-debugger-path
enable-p13n


地址栏功能:
about:version - 显示当前版本 也可以是chrome-resource://about/
about:plugins - 显示已安装插件,Google Chrome支持Active X!
about:histograms - 显示历史记录
about:dns - 显示DNS状态
about:cache, 重定向到 view-cache: 显示缓存页面
view-cache:stats - 缓存状态
about:stats - 显示状态
about:network - 很酷的网络工具
about:internets - 这应该算是一个彩蛋
chrome-resource://new-tab/ - 新标签页
about:memory - 可以查看内存和进程占用。也可以Shift+ESC,点击Statistics for nerds(傻瓜统计信息)

谷歌浏览器(Google Chrome)不支持本地js文件

I am using the jQuery Cookie plugin (download and demo and source code with comments) to set and read a cookie. I'm developing the page on my local machine.

The following code will successfully set a cookie in FireFox 3, IE 7, and Safari (PC). But if the browser is Google Chrome AND the page is a local file, it does not work.

$.cookie("nameofcookie", cookievalue, {path: "/", expires: 30}); 

What I know:

  • The plugin's demo works with Chrome.
  • If I put my code on a web server (address starting with http://), it works with Chrome.

So the cookie fails only for Google Chrome on local files.

Possible causes:

  • Google Chrome doesn't accept cookies from web pages on the hard drive (paths like file:///C:/websites/foo.html)
  • Something in the plugin implentation causes Chrome to reject such cookies

Chrome doesn't support cookies for local files unless you start it with the --enable-file-cookies flag. You can read a discussion about it at http://code.google.com/p/chromium/issues/detail?id=535.


Get organized with GTDTiddlyWiki

Get organized with GTDTiddlyWiki

by Jason Thomas

Everyone has to find their own killer personal organizational app, and for me, it's a single, free HTML document calledGTDTiddlyWiki. The self-contained standalone mini-wiki is packed with features but it doesn't dictate how you work - it provides a canvas on which you can design your own process improvements and workflows.

Don't let GTDTiddlyWiki's unusual name put you off. It's one of the best organization apps available, and in fact it beats the pants off all the commercial organizational software I've tried.

If you're looking for your killer app, today I've got a primer on how I've put GTDTiddlyWiki to work for me.

What's GTDTiddlyWiki?

GTDTW is an HTML document that you save to your local hard drive and edit there using your web browser. When you save information, it edits itself, and stores what you've written in an internal data format. This is very convenient for people who are into portable apps on USB keys, because it's completely self-contained, always with you and only requires a web browser to edit. It's also very easy to back it up: just send it up to your Gmail account every few days, or better yet schedule a job to do it for you.

To download GTDTW, right-click this GTDTiddlyWiki link and save it to a folder on your desktop. Don't save it to your desktop if you intend to keep it there; I'll explain why in a minute. In fact, you don't even need to save it at all: you can follow through most of this tutorial with the one that's up there on the site.

Now that you've saved it, load it up in Firefox. You're going to see something like this (click to enlarge):

Over there on the left is a menu. That's all editable, and it's one way you can get around in GTDTW.

Over on the right are what they call "tiddlers." These are analogous to pages in a traditional wiki. You could also say that they're like notecards in a Hipster PDA, and that's no accident: GTDTW was designed from the get-go to work like index card stacks. You can even print tiddlers to index cards, so you have a nice way of dumping out lists and so on for when you're on the go.

Editing GTDTiddlyWiki

GTDScreenshot2.jpg

There's a button on the menu to the left that says "CreateNewTiddler." Click it. On the right, you'll see a new card appear. Double-click it, enter a title — for now, call it Lists — and type in some text. When you're finished, click "done" or just hit Ctrl-Enter. Your tiddler's finished now. But it's not saved permanently yet. To do so, click "save changes" on the menu. Your first time it will trigger a Firefox warning telling you that the Javascript wants to save something on your local hard drive. Click the "Allow" button and check off "Remember this decision" so you don't get asked every time. You're good to go now, and next time you load up GTDTW your new tiddler will show up in the system.

Note: If you've never done much with wikis before, the formatting involved can seem daunting at first. GTDTW syntax is a simplified version of the highly evolved app that runs Wikipedia, but it does take getting used to. Bear with me; after a little practice it becomes automatic.

Building your GTDTiddlyWiki

You've probably evolved a number of organizational methods of your own that fit your own work style. You're probably going to want to edit the menu to reflect your own process. To do that, click on the "MainMenu" button in the menu. It pops up a tiddler. That's right — the menu itself lives on a tiddler, and you can edit it just like any other card. Click the yellow "edit" button on the MainMenu tiddler. You'll see a number of entries in brackets. Add a new one: type "[[Lists]]" and close the card. Now, over on the left, you should see the item appear in the menu. Click the menu item Lists and the new card you made earlier should appear. Snazzy.

You might want to call it something more descriptive than that. I have one called "Ideas" that I use to reference other cards containing ideas for articles, projects, etc. Here's how to link to other cards from within a tiddler:

Say you're going on vacation and you need to remember to bring everything with you. That would be a new list, so you want it to be referenced from your "Lists" card.

Open up "Lists" from the menu, or if you already have it open, just double-click it to edit the card. On it, you have whatever you typed earlier. Now, type "VacationList" and close the tiddler. It's important that you make it one single word with two capitals ("camel case"). That's a WikiWord, and it's how wiki's indicate links to other pages. Alternatively, you can just enclose the word in double brackets like we did above.

You'll see that VacationList link is on there, and it's in italics. The italics mean that the tiddler hasn't been created yet. Click that link and it'll create a new tiddler called VacationList. You can edit that tiddler to indicate everything you need to bring with you. You can make it a bulleted list by typing an asterisk ahead of each word.

If you want, just paste the following text into your new card:

!Packing
*Into Suitcase
**Scarf
**Gloves
**iPod

!Shopping
*Sporting Goods Store
**New Boots
**Trail Mix
**Pocket Heaters

When you click "Done," here's what it should look like:

GTDScreenshot4.jpg

Here's a tip for things like shopping or packing lists you might print out to index cards: If you use a double asterisk, it'll result in an empty circle instead of a solid bullet. That way, when you finish each item on the list, just fill in the corresponding circle. Make sure to use a sharp number 2 pencil! That and numerous other tips are on the FormattingInstructions menu item.

Configuring GTDTiddlyWiki

GTDScreenshot3.jpg

There are a few little usability issues with GTDTW, but they're easy to get around. Firstly, you should go into "options" on the menu and click "AutoSave." I also uncheck "EnableAnimations," because sometimes the animations can result in slowness, especially if you're running from remote over X or through something like VMWare.

The reason AutoSave is so important is because GTDTW lives in Firefox. More specifically, it lives in a Firefox tab. It's real easy to forget and start up multiple instances of GTDTW, making you run into version control issues. You also might just accidentally close the tab GTDTW is on, and even though it'll ask you to confirm, you don't want to be adding a lot of cards to the system, switch to another tab and forget to save it.

In Options, you'll also notice a checkbox labeled "Save Backup." That button is the reason why you don't want to throw GTDTW onto your desktop. It saves incremental backups every time you make a change, each one in its own new file. This is nice in case you make a mistake or need to revert, but it can result in clutter that you don't really need, so you want to place GTDTW in its own separate folder. Once your GTDTW file grows to a few megs or so, you'll also want to go into its folder and clear out some of the older backup files occasionally to save disk space, because it can add up.

When I want to back up my GTDTW, I just send it to a Gmail account I've set up for handling backups. I have a Linux cron job that sends it up there every day. That way, you keep running incremental backups of your work over time. It's not good to use Gmail as a primary file storage, but it's great for backups like this because it keeps everything nicely organized by date. You could also just use your "Gmail This" bookmarklet and add your saved GTDTW file as an attachment. Here's a previous Lifehacker feature on emailing yourself backups on Windows.

External links to your other capture tools

For a while, I was adding everything under the sun into GTDTW. Now, not so much. The file will get big, bloated and unwieldy. For a while, I was linking to files on my local hard drive (see the LinktoFolders tiddler under FormattingInstructions), but that's unwieldy too if you move from computer to computer.

Better to link to your Google Notebooks and store information there. Just add an external link to a tiddler like so:[[MyNotebook|http://www.google.com/notebook/]]. If you're logged into Google Notebook, it'll bring up your full page view. In Firefox, you can just middle-click the link and it will open in a new tab.

Ready to print something to notecards? Just hit "Print" from your browser and the tiddlers you have open will print just as nice as could be.

You'll find that your methods for using GTDTW will evolve over time. For a while, I was using GTDTW for my monthly planner. Now, under my "Agenda" menu item, I have a link to my Google calendar. You guessed it— it's just the same as above, except the link looks like this: [[http://www.google.com/calendar/]].

GTDTW is a great tool for research, organizing different clippings, images and whatnot into an format that's easy to navigate and search. In fact, you might want to save Google searches to look at later. Just link to them:[[Lifehacker|http://www.google.com/search?q=lifehacker]]

I could go on for probably twenty more pages about all the ways I've used GTDTW. I'm not even touching on how to use tags, or the search utility, or the full-featured regular expression searching that it offers.

GTDTiddlyWiki took getting used to, but now I use it every day. But in its customizability lies a pitfall: it has the potential to be an incredible distraction and time-waster. Don't just play with it like a new toy and then discard it. Work up a system and stick with it for a while, actually use it. Then, after you've integrated it into your workflow, start refactoring: look at the way you're using it and figure out how you can streamline your process. That's how you get continual improvement over time.

For more ideas of what you can do with these great apps, check tiddlywiki.com. Also, thank the developers. They deserve it.


4 Free Proxies To Block Ads in Google Chrome (or any browser)

4 Free Proxies To Block Ads in Google Chrome (or any browser)


So you've tested Google Chrome and decided that you like it. You say you'd switch, but there's no adblocker? Fortunately for you, there are several free, tiny filtering proxy applications available that can do the job.

The best part is, they'll help block ads in any browser - including Chrome.

Before I get into a list, it's important to know that several of these apps haven't been updated in ages. However, content filtering is a pretty straightforward operation, so even the old ones work just fine - and you can always tweak the blocking rules yourself.

CyberGuard WebWasher Classic
is another great option. It's small, fast, and very customizable. It's got additional capabilities to block popups, scripts, referrers, cookies, and prefixes. New filters are incredibly easy to set up, and there's no noticeable lag in load times. Of the apps I tested, WebWasher was my favorite.

Proxomitron has a god awful GUI, but it works well enough that its appearance can be overlooked (you can create your own bitmaps if you really hate it). It offers extremely flexible bloxing rules, and the default set is extrmely effective. Blocked ads are replaced with [red text in brackets], and pages load times weren't adversely affected.


iReject Trash is a tiny download (200k) and works extremely well. Its log view also gives you an interesting insight into the pages you're visiting. CNET.com, for example, had 33 items blocked. Out-of-the-box the blocking was very good, and the rules are fully customizable. You can block by host, pattern, or image dimensions. Page load times were a bit slower on certain sites.

Lifehacker suggests Privoxy
as an option (via GeekZone NZ). Privoxy is more low-fi: all your configuration tweaks are done by editing text files. It is, however, very easy on processor usage and it also does a very good job with no tweaking. I didn't notice any difference in page load times with Privoxy.

There are tons of other options for blocking ads (just check the Google Directory), so don't give up on Chrome just because there's no AdBlock. Grab one of these apps, and give it another try - then tell us how it went!

星期四, 五月 14, 2009

WINRAR KEY 注册码

选择对应的代码复制到TXT文本文档中,命名为rarreg.key放入WinRAR 的安装目录中的文件中(如果没有就自己创建一个)!!
呃,多嘴说一句,使用方法不是双击 RarReg.key 导入注册表
而是把 RarReg.key 放到 WinRAR 的安装目录
WinRAR 的安装目录通常在 C:\Program Files\WinRAR

3.6 beta8版以下:

RAR registration data
Alexander Aymanov
Single PC usage license
UID=dc1d9fdb26f9be064d83
64122122504d83d04ee243231738b88600fb267f1d3b9632421295
d1048b98780395138be06035c6ab9048e2c5c62f0238f183d28519
aa87488bf38f5b634cf28190bdf438ac593b1857cdb55a7fcb0eb0
c3e4c2736090b3dfa45384e08e9de05c58609e0915bfdc561003a6
755c95e82155892c0f36e7ff4b3d62f55230e8ad51b6756d092d0b
89e5c480d3449cc0c7d9ab1d3d4abb32baf07ebabe0e145e608494
e628198aaef1e665f9d63f719cb57ef19f3443f31a830478060233

3.71版以下:
RAR registration data
Ian Gledhill
Single PC usage license
UID=1b80823684224d9b748a
6412212250748a81108382cda7d3d039b93ea05369c1b3222bcc93
248e0a5c901e7a89b5946035c6ab9048e2c5c62f0238f183d28519
aa87488bf38f5b634cf28190bdf438ac593b1857cdb55a7fcb0eb0
c3e4c2736090b3dfa45384e08e9de05c58604100fe88f402153c05
aa6e9cf44271379afcc502a027ec9ef029e9691f1d734d58eb8016
4dfef1ff926eee74128b50442ab561e9abfdd6b8490e36e46004bb
71874b07a0fb27a6c5d662140fae567747083ae2ed070249382990

3.80版以下:

RAR registration data
Database Administrators
5 PC usage license
UID=54d582e921e445f1bfe8
6412212250bfe8e73e20bdb947f60ef0da9624150bcf8668412c68
84affda559742bbb686d6071302587655a7ba28d516e17834b7616
47cd79a293eb4c0e4fbf5e9f967e6ed5b28a02418d0ab2549fc4da
19e4644f2345190bf26ff7bcd0c819f12560b57cf28adc164a00c6
3174fcbb69509912e7c7c4793779b941901c6c793b7319cc395ee0
8bddb923fa08fc20019b59d0b246e0ac325d2e5854d4f97a602fc0
a4357b8f857cfb717545410ecad088fb28a2a3cf0dff2102863273

3.60 beta8 :

RAR registration data
vncodered
Single PC usage license
UID=1779147d103f2fdbd317
6412212250d317d5ea5a69ea5936c8a67dd60fc5eb0e3b230a0cce
d95d6cc8c4b5248e40986035c6ab9048e2c5c62f0238f183d28519
aa87488bf38f5b634cf28190bdf438ac593b1857cdb55a7fcb0eb0
c3e4c2736090b3dfa45384e08e9de05c5860266bd3d416f192e71b
c2ec1d27fd4b058c495a2bf7e1ad7bbddbbee27df7988217761f42
45d28472a7591f8faaf3e78c78f9f97112fcd8a662a5401c60d21a
2e9f208d4dd673099d78613e7a1bc45bac1f6d65a10a1775209829

WinRAR 3.8 key!注册文件(共2个,任选一个都行,


请复制另存为文本文件,命名为以下名称 rarreg。key,并保存在winrar文件夹里。}

WinRAR v3.80 Final working key





注册码1
=================================================

RAR registration data
Federal Agency for Education
1000000 PC usage license
UID=b621cca9a84bc5deffbf
6412612250ffbf533df6db2dfe8ccc3aae5362c06d54762105357d
5e3b1489e751c76bf6e0640001014be50a52303fed29664b074145
7e567d04159ad8defc3fb6edf32831fd1966f72c21c0c53c02fbbb
2f91cfca671d9c482b11b8ac3281cb21378e85606494da349941fa
e9ee328f12dc73e90b6356b921fbfb8522d6562a6a4b97e8ef6c9f
fb866be1e3826b5aa126a4d2bfe9336ad63003fc0e71c307fc2c60
64416495d4c55a0cc82d402110498da970812063934815d81470829275

=================================================

RAR registration data
Database Administrators
5 PC usage license
UID=54d582e921e445f1bfe8
6412212250bfe8e73e20bdb947f60ef0da9624150bcf8668412c68
84affda559742bbb686d6071302587655a7ba28d516e17834b7616
47cd79a293eb4c0e4fbf5e9f967e6ed5b28a02418d0ab2549fc4da
19e4644f2345190bf26ff7bcd0c819f12560b57cf28adc164a00c6
3174fcbb69509912e7c7c4793779b941901c6c793b7319cc395ee0
8bddb923fa08fc20019b59d0b246e0ac325d2e5854d4f97a602fc0
a4357b8f857cfb717545410ecad088fb28a2a3cf0dff2102863273

星期三, 五月 13, 2009

SUDOKU破解与生成程序1.0

不多说了,增加了第三逻辑和对可能情况的遍历(也就是当不能用逻辑区分的时候的暴力破解)。
http://lostabaddon.spaces.live.com/cns!EB06676D0B60BFBD!1986.entry
FrmSudoku.FRM:
Option Explicit
Dim SUDOKU(9, 9, 9) As Integer
Dim SudokuSolution As New ClsSudoku
Private Sub CmdClear_Click()
Dim I As Integer, J As Integer, K As Integer
For I = 1 To 9
For J = 1 To 9
For K = 0 To 9
SUDOKU(I, J, K) = 0
Next K
Next J
Next I
ShowSUDOKU
End Sub
Private Sub Form_Load()
Dim I As Integer, J As Integer, X As Integer, Y As Integer
Dim T As Integer
Dim P As Single
P = (Me.ScaleWidth - 3700) / 2
TxtInput(0).Visible = False
For I = 1 To 3
For J = 1 To 3
For X = 1 To 3
For Y = 1 To 3
T = ((I - 1) * 3 + (J - 1)) * 9 + ((X - 1) * 3 + Y)
Load TxtInput(T)
TxtInput(T).Left = ((I - 1) * 3 + X - 1) * 400 + (I - 1) * 50 + P
TxtInput(T).Top = ((J - 1) * 3 + Y - 1) * 400 + (J - 1) * 50
TxtInput(T).Visible = True
TxtInput(T) = ""
Next Y
Next X
Next J
Next I
CmdStart.Top = Me.ScaleHeight - CmdStart.Height
CmdGenerate.Top = Me.ScaleHeight - CmdGenerate.Height
CmdStart.Left = (Me.ScaleWidth - CmdStart.Width - CmdGenerate.Width) / 2
CmdGenerate.Left = (Me.ScaleWidth - CmdStart.Width - CmdGenerate.Width) / 2 + CmdStart.Width
End Sub
Private Sub CmdStart_Click()
ReadSUDOKU
If SudokuSolution.Solution(SUDOKU) Then
ShowSUDOKU
End If
ShowSUDOKU
End Sub
Private Sub CmdGenerate_Click()
SudokuSolution.Build SUDOKU
ShowSUDOKU
Me.Caption = "Sudoku Solution"
End Sub
Private Sub TxtInput_DblClick(Index As Integer)
Dim A As Integer
A = Int((Index - 1) / 9) + 1
Dim X As Integer, Y As Integer
X = A - Int(A / 3) * 3
If X = 0 Then X = 3
Y = Int((A - 1) / 3 + 1)
A = Index - ((Y - 1) * 3 + X - 1) * 9
Dim I As Integer, J As Integer
I = A - Int(A / 3) * 3
If I = 0 Then I = 3
J = Int((A - 1) / 3 + 1)
MsgBox Str((X - 1) * 3 + I) & "," & Str((Y - 1) * 3 + J)
End Sub
'辅助区
Private Sub ReadSUDOKU()
Dim I As Integer, J As Integer, X As Integer, Y As Integer
Dim T As Integer, Q As Integer, K As Integer
For I = 1 To 3
For J = 1 To 3
For X = 1 To 3
For Y = 1 To 3
T = ((I - 1) * 3 + (J - 1)) * 9 + ((X - 1) * 3 + Y)
Q = Val(TxtInput(T))
If Q >= 0 Then
SUDOKU((I - 1) * 3 + X, (J - 1) * 3 + Y, 0) = Q
End If
For K = 1 To 9
SUDOKU((I - 1) * 3 + X, (J - 1) * 3 + Y, K) = 0
Next K
Next Y
Next X
Next J
Next I
End Sub
Private Sub ShowSUDOKU()
Dim I As Integer, J As Integer, X As Integer, Y As Integer
Dim T As Integer, Q As Integer
For I = 1 To 3
For J = 1 To 3
For X = 1 To 3
For Y = 1 To 3
T = ((I - 1) * 3 + (J - 1)) * 9 + ((X - 1) * 3 + Y)
Q = SUDOKU((I - 1) * 3 + X, (J - 1) * 3 + Y, 0)
If Q > 0 Then
TxtInput(T).Text = Q
Else
TxtInput(T).Text = ""
End If
Next Y
Next X
Next J
Next I
End Sub
'辅助区结束
ClsSudoku.CLS:
Option Explicit
Dim SUDOKU(9, 9, 9) As Integer
'功能区
Public Function Solution(ByRef S() As Integer) As Boolean
Dim I As Integer, J As Integer, T() As Integer, K As Integer
Dim IsOK As Boolean
ReDim T(0)
GetSUDOKU S
Solution = False
If Check Then
If Not CheckEmpty Then
Exit Function
End If
Else
Exit Function
End If
IsOK = True
Do While IsOK
IsOK = Deal Or ThirdLogic
Loop
Solution = IsFinished
If Solution Then
BackSUDOKU S
Else
Find I, J, T
If UBound(T) = 0 Then Solution = False: Exit Function
For K = 1 To UBound(T)
If Try(I, J, T(K)) Then BackSUDOKU S: Solution = True: Exit For
Next K
End If
End Function
Public Sub Build(ByRef S() As Integer)
'初始化最原始SUDOKU
Dim I As Integer
For I = 1 To 9
SUDOKU(I, 1, 0) = I
Next I
For I = 1 To 3
SUDOKU(6 + I, 2, 0) = I
SUDOKU(I, 3, 0) = 6 + I
Next I
For I = 1 To 6
SUDOKU(I, 2, 0) = 3 + I
SUDOKU(3 + I, 3, 0) = I
Next I
For I = 1 To 8
SUDOKU(I, 4, 0) = I + 1
SUDOKU(I + 1, 7, 0) = I
Next I
SUDOKU(3, 4, 0) = 1
SUDOKU(6, 4, 0) = 4
SUDOKU(9, 4, 0) = 7
SUDOKU(1, 7, 0) = 3
SUDOKU(4, 7, 0) = 6
SUDOKU(7, 7, 0) = 9
For I = 1 To 5
SUDOKU(I, 5, 0) = I + 4
SUDOKU(I + 1, 8, 0) = I + 3
Next I
SUDOKU(6, 5, 0) = 7
SUDOKU(7, 5, 0) = 2
SUDOKU(8, 5, 0) = 3
SUDOKU(9, 5, 0) = 1
SUDOKU(3, 5, 0) = 4
SUDOKU(1, 8, 0) = 6
SUDOKU(4, 8, 0) = 9
SUDOKU(7, 8, 0) = 3
SUDOKU(8, 8, 0) = 1
SUDOKU(9, 8, 0) = 2
For I = 1 To 5
SUDOKU(I + 3, 6, 0) = I + 1
SUDOKU(I + 4, 9, 0) = I
Next I
SUDOKU(1, 6, 0) = 8
SUDOKU(2, 6, 0) = 9
SUDOKU(3, 6, 0) = 7
SUDOKU(6, 6, 0) = 1
SUDOKU(9, 6, 0) = 4
SUDOKU(1, 9, 0) = 9
SUDOKU(2, 9, 0) = 7
SUDOKU(3, 9, 0) = 8
SUDOKU(4, 9, 0) = 3
SUDOKU(7, 9, 0) = 6
'SUDOKU混排
I = 5 + Int(Rnd() * 10)
Do While I > 0
If Rnd() > 0.5 Then
RowTrans 1 + Int(Rnd() * 3), 1 + Int(Rnd() * 3)
Else
ColTrans 1 + Int(Rnd() * 3), 1 + Int(Rnd() * 3)
End If
I = I - 1
Loop
For I = 1 To 6
RowTrans 1 + Int(Rnd() * 3), 1 + Int(Rnd() * 3)
ColTrans 1 + Int(Rnd() * 3), 1 + Int(Rnd() * 3)
Next I
Cycle
Cover
BackSUDOKU S
End Sub
'功能区结束
'辅助区
Private Function Try(ByVal I As Integer, ByVal J As Integer, ByVal T As Integer) As Boolean
Dim SS(9, 9, 9) As Integer
BackSUDOKU SS
SS(I, J, 0) = T
Dim SSS As New ClsSudoku
Try = SSS.Solution(SS)
If Try Then
GetSUDOKU SS
End If
End Function
Private Sub Find(ByRef I As Integer, ByRef J As Integer, ByRef T() As Integer)
Dim A As Integer, B As Integer, C As Integer
Dim D As Integer, E As Integer
E = 10
For A = 1 To 9
For B = 1 To 9
If SUDOKU(A, B, 0) = 0 Then
D = 0
For C = 1 To 9
If SUDOKU(A, B, C) = 1 Then D = D + 1
Next C
If D < E And D > 0 Then
ReDim T(0)
For C = 1 To 9
If SUDOKU(A, B, C) = 1 Then
ReDim Preserve T(UBound(T) + 1)
T(UBound(T)) = C
End If
Next C
I = A
J = B
End If
End If
Next B
Next A
End Sub
Private Function IsFinished() As Boolean
IsFinished = False
Dim I As Integer
Dim J As Integer
If Not Check Then Exit Function
For I = 1 To 9
For J = 1 To 9
If SUDOKU(I, J, 0) = 0 Then Exit Function
Next J
Next I
IsFinished = True
End Function
Private Function Check() As Boolean
Dim I As Integer, J As Integer, X As Integer, Y As Integer
Dim T As Integer, Q As Integer
Dim P1(9) As Integer, P2(9) As Integer, P3(9) As Integer
Check = True
For I = 1 To 3
For X = 1 To 3
For T = 1 To 9
P1(T) = T
P2(T) = T
P3(T) = T
Next
For J = 1 To 3
For Y = 1 To 3
Q = SUDOKU((I - 1) * 3 + X, (J - 1) * 3 + Y, 0)
If P1(Q) > 0 Or Q = 0 Then
P1(Q) = 0
Else
Check = False
Exit Function
End If
Q = SUDOKU((J - 1) * 3 + Y, (I - 1) * 3 + X, 0)
If P2(Q) > 0 Or Q = 0 Then
P2(Q) = 0
Else
Check = False
Exit Function
End If
Q = SUDOKU((I - 1) * 3 + J, (X - 1) * 3 + Y, 0)
If P3(Q) > 0 Or Q = 0 Then
P3(Q) = 0
Else
Check = False
Exit Function
End If
Next
Next
Next
Next
End Function
Private Function CheckEmpty() As Boolean
Dim I As Integer, J As Integer
Dim P As Integer
For I = 1 To 9
For J = 1 To 9
P = P + SUDOKU(I, J, 0)
Next J
Next I
If P = 0 Then
CheckEmpty = False
Else
CheckEmpty = True
End If
End Function
Private Sub GetSUDOKU(ByRef S() As Integer)
Dim I As Integer, J As Integer, K As Integer
For I = 1 To 9
For J = 1 To 9
SUDOKU(I, J, 0) = S(I, J, 0)
For K = 1 To 9
SUDOKU(I, J, K) = 0
Next K
Next J
Next I
End Sub
Private Sub BackSUDOKU(ByRef S() As Integer)
Dim I As Integer, J As Integer, K As Integer
For I = 1 To 9
For J = 1 To 9
S(I, J, 0) = SUDOKU(I, J, 0)
For K = 1 To 9
S(I, J, K) = SUDOKU(I, J, K)
Next K
Next J
Next I
End Sub
'辅助区结束
'SUDOKU生成区
Private Sub RowTrans(ByVal SupN As Integer, ByVal SubN As Integer)
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim R As Integer
Dim S As Integer
Dim A(9) As Integer, B(9) As Integer
I = (SupN - 1) * 3
J = I
Select Case SubN
Case 1
I = I + 2
J = J + 3
Case 2
I = I + 1
J = J + 3
Case 3
I = I + 1
J = J + 2
End Select
For K = 1 To 9
A(K) = SUDOKU(I, K, 0)
B(K) = SUDOKU(J, K, 0)
Next K
K = Int(Rnd() * 5) + 1
S = SUDOKU(J, K, 0)
R = SUDOKU(I, K, 0)
A(K) = S
B(K) = R
Do While S <> R
For K = 1 To 9
If SUDOKU(I, K, 0) = S Then Exit For
Next K
S = SUDOKU(J, K, 0)
A(K) = SUDOKU(J, K, 0)
B(K) = SUDOKU(I, K, 0)
Loop
For K = 1 To 9
SUDOKU(I, K, 0) = A(K)
SUDOKU(J, K, 0) = B(K)
Next K
End Sub
Private Sub ColTrans(ByVal SupN As Integer, ByVal SubN As Integer)
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim R As Integer
Dim S As Integer
Dim A(9) As Integer, B(9) As Integer
I = (SupN - 1) * 3
J = I
Select Case SubN
Case 1
I = I + 2
J = J + 3
Case 2
I = I + 1
J = J + 3
Case 3
I = I + 1
J = J + 2
End Select
For K = 1 To 9
A(K) = SUDOKU(K, I, 0)
B(K) = SUDOKU(K, J, 0)
Next K
K = Int(Rnd() * 5) + 1
S = SUDOKU(K, J, 0)
R = SUDOKU(K, I, 0)
A(K) = S
B(K) = R
Do While S <> R
For K = 1 To 9
If SUDOKU(K, I, 0) = S Then Exit For
Next K
S = SUDOKU(K, J, 0)
A(K) = SUDOKU(K, J, 0)
B(K) = SUDOKU(K, I, 0)
Loop
For K = 1 To 9
SUDOKU(K, I, 0) = A(K)
SUDOKU(K, J, 0) = B(K)
Next K
End Sub
Private Sub Cycle()
Dim T(9) As Integer
Dim I As Integer
Dim J As Integer
Dim K As Integer
Randomize
Do While I < 9
J = Int(Rnd() * 9) + 1
If J = 10 Then J = 1
K = K + J
If K > 9 Then K = K - 9
Do While T(K) > 0
K = K + 1
If K = 10 Then K = 1
Loop
I = I + 1
T(K) = I
Loop
For I = 1 To 9
For J = 1 To 9
SUDOKU(I, J, 0) = T(SUDOKU(I, J, 0))
Next J
Next I
End Sub
Private Sub Cover()
Dim Total As Integer
Total = 25 + Int((Rnd() + Rnd()) / 2 * 9)
Total = 81 - Total
Dim I As Integer
Dim J As Integer
Do While Total > 0
I = Int(Rnd() * 9) + 1
If I = 10 Then I = 1
J = Int(Rnd() * 9) + 1
If J = 10 Then J = 9
If SUDOKU(I, J, 0) > 0 Then
SUDOKU(I, J, 0) = 0
Total = Total - 1
End If
Loop
End Sub
'SUDOKU生成区结束
'排除法分析区
Private Function AnalyzeRestH(ByVal Index As Integer) As Integer()
Dim I As Integer
Dim J As Integer
Dim P() As Integer
ReDim P(0)
J = 1
For I = 1 To 9
If SUDOKU(Index, I, 0) > 0 Then
ReDim Preserve P(J)
P(J) = SUDOKU(Index, I, 0)
J = J + 1
End If
Next I
AnalyzeRestH = P
End Function
Private Function AnalyzeRestV(ByVal Index As Integer) As Integer()
Dim I As Integer
Dim J As Integer
Dim P() As Integer
ReDim P(0)
J = 1
For I = 1 To 9
If SUDOKU(I, Index, 0) > 0 Then
ReDim Preserve P(J)
P(J) = SUDOKU(I, Index, 0)
J = J + 1
End If
Next I
AnalyzeRestV = P
End Function
Private Function AnalyzeRestR(ByVal Index As Integer) As Integer()
Dim I As Integer
Dim J As Integer
Dim P() As Integer
ReDim P(0)
I = Int(Index / 3)
J = Index - I * 3
If J = 0 Then J = 3: I = I - 1
I = I + 1
Dim T As Integer
T = 1
Dim X As Integer, Y As Integer
For X = 1 To 3
For Y = 1 To 3
If SUDOKU((I - 1) * 3 + X, (J - 1) * 3 + Y, 0) > 0 Then
ReDim Preserve P(T)
P(T) = SUDOKU((I - 1) * 3 + X, (J - 1) * 3 + Y, 0)
T = T + 1
End If
Next
Next
AnalyzeRestR = P
End Function
Private Function Union(ByRef A() As Integer, B() As Integer, C() As Integer) As Integer()
Dim I As Integer
Dim P(9) As Integer
Dim Q() As Integer
ReDim Q(0)
For I = 1 To 9
P(I) = 1
Next
For I = 1 To UBound(A)
P(A(I)) = 0
Next
For I = 1 To UBound(B)
P(B(I)) = 0
Next
For I = 1 To UBound(C)
P(C(I)) = 0
Next
Dim J As Integer
J = 1
ReDim Union(0)
For I = 1 To 9
If P(I) = 1 Then
ReDim Preserve Q(J)
Q(J) = I
J = J + 1
End If
Next
Union = Q
End Function
'排除法分析区结束
'外推法分析区
Private Function Surround(ByVal Number As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal I As Integer, ByVal J As Integer) As Boolean
Dim A As Integer, B As Integer, C As Integer, D As Integer
Dim M As Integer, N As Integer, P As Integer, Q As Integer
GetBoundary X, M, N
GetBoundary Y, P, Q
GetBoundary I, A, B
GetBoundary J, C, D
Dim Ans As Integer, Res As Integer
Dim T As Integer, R As Integer
Dim Fin As Boolean
Dim TmpA As Integer, TmpB As Integer
Dim Tmp(4) As Integer
T = X * 3 - 3 + A
Fin = False
If SUDOKU(T, Y * 3 - 2, 0) > 0 And SUDOKU(T, Y * 3 - 1, 0) > 0 And SUDOKU(T, Y * 3, 0) > 0 Then
Ans = 1
Else
For R = P * 3 - 2 To P * 3
If SUDOKU(T, R, 0) = Number Then Ans = 1: Fin = True: Exit For
Next R
If Not Fin Then
For R = Q * 3 - 2 To Q * 3
If SUDOKU(T, R, 0) = Number Then Ans = 1: Fin = True: Exit For
Next R
End If
If Fin Then Tmp(1) = 1
End If
T = X * 3 - 3 + B
Fin = False
If SUDOKU(T, Y * 3 - 2, 0) > 0 And SUDOKU(T, Y * 3 - 1, 0) > 0 And SUDOKU(T, Y * 3, 0) > 0 Then
Ans = Ans + 1
Else
For R = P * 3 - 2 To P * 3
If SUDOKU(T, R, 0) = Number Then Ans = Ans + 1: Fin = True: Exit For
Next R
If Not Fin Then
For R = Q * 3 - 2 To Q * 3
If SUDOKU(T, R, 0) = Number Then Ans = Ans + 1: Fin = True: Exit For
Next R
End If
If Fin Then Tmp(2) = 1
End If
T = Y * 3 - 3 + C
Fin = False
If SUDOKU(X * 3 - 2, T, 0) > 0 And SUDOKU(X * 3 - 1, T, 0) > 0 And SUDOKU(X * 3, T, 0) > 0 Then
Res = 1
Else
For R = M * 3 - 2 To M * 3
If SUDOKU(R, T, 0) = Number Then Res = 1: Fin = True: Exit For
Next R
If Not Fin Then
For R = N * 3 - 2 To N * 3
If SUDOKU(R, T, 0) = Number Then Res = 1: Fin = True: Exit For
Next R
End If
If Fin Then Tmp(3) = 1
End If
T = Y * 3 - 3 + D
Fin = False
If SUDOKU(X * 3 - 2, T, 0) > 0 And SUDOKU(X * 3 - 1, T, 0) > 0 And SUDOKU(X * 3, T, 0) > 0 Then
Res = Res + 1
Else
For R = M * 3 - 2 To M * 3
If SUDOKU(R, T, 0) = Number Then Res = Res + 1: Fin = True: Exit For
Next R
If Not Fin Then
For R = N * 3 - 2 To N * 3
If SUDOKU(R, T, 0) = Number Then Res = Res + 1: Fin = True: Exit For
Next R
End If
If Fin Then Tmp(4) = 1
End If
If Ans = 2 And Res = 2 Then Surround = True: Exit Function
TmpA = SUDOKU(X * 3 - 3 + I, Y * 3 - 3 + C, 0)
TmpB = SUDOKU(X * 3 - 3 + I, Y * 3 - 3 + D, 0)
If Ans = 2 And ((TmpA > 0 And TmpB > 0) Or (Tmp(4) = 1 And TmpA > 0) Or (Tmp(3) = 1 And TmpB > 0)) Then Surround = True: Exit Function
TmpA = SUDOKU(X * 3 - 3 + A, Y * 3 - 3 + J, 0)
TmpB = SUDOKU(X * 3 - 3 + B, Y * 3 - 3 + J, 0)
If Res = 2 And ((TmpA > 0 And TmpB > 0) Or (Tmp(2) = 1 And TmpA > 0) Or (Tmp(1) = 1 And TmpB > 0)) Then Surround = True: Exit Function
End Function
Private Function Environment(ByVal Number As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal I As Integer, ByVal J As Integer) As Boolean
Dim A As Integer, B As Integer, C As Integer, D As Integer
Dim M As Integer, N As Integer, P As Integer, Q As Integer
GetBoundary X, M, N
GetBoundary Y, P, Q
GetBoundary I, A, B
GetBoundary J, C, D
Dim Tmp(1) As Boolean
Dim Found As Boolean
Dim T As Integer
Dim K As Integer
Dim Tmps As Integer
Environment = False
Found = True
K = X * 3 - 3 + I
For T = 1 To 3 '当所在列出现该数的存在概率时
If SUDOKU(K, P * 3 - 3 + T, Number) = 1 Or SUDOKU(K, Q * 3 - 3 + T, Number) = 1 Then Found = False: Exit For
Next T
If Found Then
K = X * 3 - 3 + A
If SUDOKU(K, Y * 3 - 3 + J, 0) > 0 Then
Found = True
Else
For T = 1 To 3
If SUDOKU(K, P * 3 - 3 + T, Number) = 1 Then Exit For
If SUDOKU(K, Q * 3 - 3 + T, Number) = 1 Then Exit For
If SUDOKU(K, P * 3 - 3 + T, 0) = Number Then Exit For
If SUDOKU(K, Q * 3 - 3 + T, 0) = Number Then Exit For
Next T
If T < 4 Then Found = True
End If
If Found Then
Found = False
K = X * 3 - 3 + B
If SUDOKU(K, Y * 3 - 3 + J, 0) > 0 Then
Found = True
Else
For T = 1 To 3
If SUDOKU(K, P * 3 - 3 + T, Number) = 1 Then Exit For
If SUDOKU(K, Q * 3 - 3 + T, Number) = 1 Then Exit For
If SUDOKU(K, P * 3 - 3 + T, 0) = Number Then Exit For
If SUDOKU(K, Q * 3 - 3 + T, 0) = Number Then Exit For
Next T
If T < 4 Then Found = True
End If
End If
End If
If Found Then Tmp(0) = True
Found = True
K = Y * 3 - 3 + J
For T = 1 To 3 '当所在列出现该数的存在概率时
If SUDOKU(M * 3 - 3 + T, K, Number) = 1 Or SUDOKU(N * 3 - 3 + T, K, Number) = 1 Then Found = False: Exit For
Next T
If Found Then
K = Y * 3 - 3 + C
If SUDOKU(X * 3 - 3 + I, K, 0) > 0 Then
Found = True
Else
For T = 1 To 3
If SUDOKU(M * 3 - 3 + T, K, Number) = 1 Then Exit For
If SUDOKU(N * 3 - 3 + T, K, Number) = 1 Then Exit For
If SUDOKU(M * 3 - 3 + T, K, 0) = Number Then Exit For
If SUDOKU(N * 3 - 3 + T, K, 0) = Number Then Exit For
Next T
If T < 4 Then Found = True
End If
If Found Then
Found = False
K = Y * 3 - 3 + D
If SUDOKU(X * 3 - 3 + I, K, 0) > 0 Then
Found = True
Else
For T = 1 To 3
If SUDOKU(M * 3 - 3 + T, K, Number) = 1 Then Exit For
If SUDOKU(N * 3 - 3 + T, K, Number) = 1 Then Exit For
If SUDOKU(M * 3 - 3 + T, K, 0) = Number Then Exit For
If SUDOKU(N * 3 - 3 + T, K, 0) = Number Then Exit For
Next T
If T < 4 Then Found = True
End If
End If
End If
If Found Then Tmp(1) = True
If Tmp(0) And Tmp(1) Then Environment = True: Exit Function
If Tmp(0) And SUDOKU(X * 3 - 3 + I, Y * 3 - 3 + C, 0) > 0 And SUDOKU(X * 3 - 3 + I, Y * 3 - 3 + D, 0) > 0 Then Environment = True: Exit Function
If Tmp(1) And SUDOKU(X * 3 - 3 + A, Y * 3 - 3 + J, 0) > 0 And SUDOKU(X * 3 - 3 + B, Y * 3 - 3 + J, 0) > 0 Then Environment = True
End Function
Private Sub GetBoundary(ByVal Index As Integer, ByRef Down As Integer, ByRef Up As Integer)
Select Case Index
Case 1
Down = 2: Up = 3
Case 2
Down = 1: Up = 3
Case 3
Down = 1: Up = 2
End Select
End Sub
'外推法分析区结束
Private Function Deal() As Boolean
Deal = False
Dim HasNew As Boolean
HasNew = True
Dim I As Integer, J As Integer, K As Integer
Dim P1() As Integer, P2() As Integer, P3() As Integer, P4() As Integer
Dim T As Integer
Do While HasNew = True
HasNew = False
For I = 1 To 9
P1 = AnalyzeRestH(I)
For J = 1 To 9
If SUDOKU(I, J, 0) = 0 Then
P2 = AnalyzeRestV(J)
P3 = AnalyzeRestR(Int((I - 1) / 3) * 3 + Int((J - 1) / 3) + 1)
P4 = Union(P1, P2, P3)
If UBound(P4) = 1 Then
SUDOKU(I, J, 0) = P4(1)
HasNew = True
Else
For T = 1 To UBound(P4)
If Surround(P4(T), Int((I - 1) / 3 + 1), Int((J - 1) / 3 + 1), I - Int((I - 1) / 3) * 3, J - Int((J - 1) / 3) * 3) Then
SUDOKU(I, J, 0) = P4(T)
HasNew = True
Exit For
End If
Next T
End If
End If
Next
Next
If HasNew Then Deal = True
Loop
End Function
Private Function ThirdLogic() As Boolean
ThirdLogic = False
Dim HasNew As Boolean
HasNew = True
Dim I As Integer, J As Integer
Dim T As Integer, K As Integer
Dim X As Integer, Y As Integer
Dim P1() As Integer, P2() As Integer, P3() As Integer, P4() As Integer
For I = 1 To 9
P1 = AnalyzeRestH(I)
For J = 1 To 9
For T = 1 To 9
SUDOKU(I, J, T) = 0
Next T
If SUDOKU(I, J, 0) = 0 Then
P2 = AnalyzeRestV(J)
P3 = AnalyzeRestR(Int((I - 1) / 3) * 3 + Int((J - 1) / 3) + 1)
P4 = Union(P1, P2, P3)
If UBound(P4) > 1 Then
For T = 1 To UBound(P4)
SUDOKU(I, J, P4(T)) = 1
Next
End If
End If
Next J
Next I
Do While HasNew = True
HasNew = False
For I = 1 To 9
For J = 1 To 9
For T = 1 To 9
If SUDOKU(I, J, T) = 1 Then
X = Int((I - 1) / 3 + 1)
Y = Int((J - 1) / 3 + 1)
If Environment(T, X, Y, I - Int((I - 1) / 3) * 3, J - Int((J - 1) / 3) * 3) Then
SUDOKU(I, J, 0) = T
For K = 1 To 9
SUDOKU(I, K, T) = 0
SUDOKU(K, J, T) = 0
Next K
For K = 1 To 3
SUDOKU(X * 3 - 2, Y * 3 - 3 + K, T) = 0
SUDOKU(X * 3 - 1, Y * 3 - 3 + K, T) = 0
SUDOKU(X * 3, Y * 3 - 3 + K, T) = 0
Next K
HasNew = True
Exit For
End If
End If
Next T
Next J
Next I
If HasNew Then ThirdLogic = True
Loop
End Function

华为 OptiX OSN 2500

OptiX OSN 2500 智能光传输系统是继承了MSTP技术的全部特点,与传统SDH、MSTP网络保持兼容,融SDH、PDH、Ethernet、WDM、ATM、ESCON、FC/FICON、DVB-ASI(Digital Video Broadcast-Asynchronous Serial Interface)、RPR等技术为一体的新一代2.5G/622M多业务光传输平台(MSTP),主要应用在城域网络中的汇聚与接入层,为现有SDH设备向智能光网络设备过渡提供了完善的解决方案。
功能描述: 高性价比的平台化 OptiX OSN 7500/3500/2500/1500业务板件、软件完全兼容,构成统一平台。这样可以大大降低维护成本以及备板备件的成本。OSN智能平台在业务能力方面高效组合,给运营商最高性价比的解决方案;同时与华为已有的设备可以混合组网,可以纳入华为光网络网管解决方案进行统一管理。 灵活的设备配置 STM-16/4兼容设备; 支持网络设备从622M到2.5G的在线升级。 大容量调度 支持20G高低阶全交叉:高阶128×128 VC-4,低阶8064×8064 VC-12或等效的VC-3交叉能力。 多业务提供 业务接口 支持STM-1(O/E); 支持STM-4/16标准或级联业务; 支持E1/T1/E3/T3/E4;支持FE、GE业务的透传和交换; 支持ATM业务;   支持IMA业务;  支持SAN业务和视频业务; 提供基于GMPLS的快速端到端业务
特征与优势: 高度集成 子架集成度:子架尺寸为460mm(高)×440mm(宽)×295mm(深),单子架具备9个业务板位,8个接口板位。 REG功能 支持基于 OSN 2500 设计的硬件REG设备; 强组网能力 支持Mesh网络节点即插即用 支持Mesh网络在线任意速率升级扩容; 支持Mesh网络中多达40个光方向的组网; 支持链、环、相交环、相切环等多种SDH组网拓扑;   支持RPR、VP-RING环网; 单子架可实现1×STM-64四纤环或2×STM-16四纤环或4×STM-16二纤环。 内置波分技术 提供双路光分叉复用单板; 提供任意速率光波长转换单板。 完善的网络生存机制 Mesh恢复 支持分布式可恢复重路由保护; 提供5类更细化的业务保护方案,根据不同SLA提供:钻石级、金级、银级、铜级、铁级业务。 SDH保护 支持2F/4F MSP、SNCP、DNI、共享光线虚拟路径保护等。 数据业务保护 支持以太业务RPR环网保护,STP生成树保护; 支持ATM业务VP-RING环网保护。 完备的设备保护机制 智能控制单元保护:1+1热备份; 支持关键单元如交叉、时钟1+1热备份保护; 电源保护; TPS保护。
技术规格: OptiX OSN 2500 电源接入 -48V DC、通过外置UPM实现交流220V接入 安装方式 ETSI 300mm深机柜、ETSI 600mm深机柜、19英寸机柜中安装 尺寸 460mm(高)×440mm(宽)×295mm(深) 典型重量 24kg 典型功耗 206W