導航:首頁 > 源碼編譯 > console源碼

console源碼

發布時間:2022-11-30 03:48:17

⑴ 如何做到本地保持,使得下一次打開小程序後,仍舊能看到以前的數據,代碼該如何實現(附有源碼

使用html5的localStorage。將數據JSON.stringify後儲存到localStorage。

⑵ 瀏覽器 console 怎麼引用js

這里拿網路音樂VIP兌換頁面來做演示。
首先打開網路音樂VIP兌換頁面,然後按F12調出切換到Console控制台。如圖:

然後在Console控制台里輸入如下代碼,再回車它就會自動點擊,如演示圖:
setInterval(function () {$('#exchange-submit').click(); },800);setInterval(function () {$('.txt').click(); },800)
----------分隔符------------
代碼講解:
#exchange-submit,這說的是ID如:源碼中的 <span id="exchange-submit"></span>
.inner(把inner改成txt也行看代碼),這說的是CLASS如:源碼中的<span class="inner"><span class="txt">關閉</span> </span>
這里的數字是毫秒
「;」代碼中是上下隔一段代碼,如您要循環點擊3個不一樣順序的東西就再最後加個「;」再繼續輸入代碼就行了。

⑶ 如何看c#console的類源碼

除了MSDN以外一般還真沒太好的辦法,也有頭文件,不過C#叫命名空間(nameSpace)
跟C差不多,引入命名空間以後就可以使用這個命名空間裡面的類和函數,這點跟C的庫很像,不過封裝更厲害一點而已。
如果你知道你要用的類在哪個命名空間的話其實還是好辦的,因為在VS環境下,只要你引入了命名空間,隨便瞧一個字母就能給出你能創建的所有類,枚舉,結構的提示,方向鍵選中相關的內容就有描述,包括作用,參數名稱,類型,返回值等信息。
假如你想知道函數的的參數和返回值還有個辦法就是在函數的括弧中按下組合鍵(ctrl+shift+space)也能調出函數的重載列表,通過方向鍵上下就可以看每個重載的參數和返回值了。
假設你完全不知道你要實現的功能來自哪個命名空間的哪個類,估計你就只能藉助MSDN和度娘了。
最後如果你用的是第三方的東西,只能藉助第三方的文檔並且寄希望於第三方的開發工程師有個良好的文檔注釋習慣了。不得已只能問度娘了,不過比較冷僻的第三方東西度娘一般不知道。

⑷ 為什麼無法反匯編從c++編寫的Console程序....

多給點信息……
用的什麼反匯編程序?
什麼平台下的?Windows、Linux還是Mac
Console就是控制台的意思……但究竟是怎樣的一個控制台……

我猜可能是Win平台下用OD反匯編的……
如果是的話,問題可能處在控制台本身的運行級別上
雖然我不太清楚你要調試的是怎樣一個控制台
但很有可能控制台是運行在ring0層上的,
而OD作為一個ring3層的調試器是無法載入的……

如果不是我猜的這樣,你最好還是多給點信息
我也好根據情況幫你想想

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

這樣啊~~
說實話我對控制台的概念並不很清楚~~
但如果OD無法載入的話
就直接用IDA吧~~
既然是自己寫的,肯定也沒有加密~~
靜態反匯編就可以了~~沒必要用OD這種動態調試器~~

另外,如果是作業的話
應該是要求交源碼吧?
反匯編出來的匯編代碼和正向寫出來的代碼可是有差別的~~
而且用高級語言寫的代碼明顯帶有高級語言編譯器的自身風格
如果是精通逆向工程的人一眼就能看出來反匯編出來的代碼是出自哪款編譯器
即便你們老師不懂逆向,看不出編譯器
也明顯能看出這不是W32ASM的作品
畢竟高級語言編譯成機器碼後都是很羅唆的~~
不可能像直接編寫匯編那樣簡潔明了。

⑸ 如何修改consolecmdvm函數的源代碼

關閉cmd窗口,打開注冊表編輯器,展開子項
HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
刪除 CodePage 、FaceName 、FontFamily 、FontSize 這些鍵值,
再打開cmd窗口,屬性字體中就有新宋體了。

⑹ 編寫一個C#程序,實現從鍵盤中輸入兩個數字,屏幕輸出這兩個數值的和、差、積、商。

C#程序源碼:

static void Main(string[] args)

{

Console.Write("a=");

string a = Console.ReadLine();

Console.Write("b=");

string b = Console.ReadLine();

double x = Convert.ToDouble(a);

double y = Convert.ToDouble(b);

Console.WriteLine("a+b=" + (x + y));

Console.WriteLine("a-b="+ (x-y));

Console.WriteLine("a*b=" + (x * y));

Console.WriteLine("a/b=" + x / y);

Console.ReadKey();

}

程序運行結果:


(6)console源碼擴展閱讀:

C語言實現方法:

#include "pch.h"

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()

{

int num1, num2;

char operate;

scanf("%d %c %d", &num1, &operate, &num2);

switch (operate) {

case '+':

printf("%d", num1 + num2);

break;

case '-':

printf("%d", num1 - num2);

break;

case '*':

printf("%d", num1*num2);

break;

case '/':

printf("%d", num1 / num2);

break;

case '%':

printf("%d", num1%num2);

break;

default:

printf("ERROR");

}

return 0;

}

⑺ bat查看網頁源代碼

@echo off
>tmp.vbs echo Dim Mx, cAS
>>tmp.vbs echo Set Mx = CreateObject("MsXml2.XmlHttp")
>>tmp.vbs echo Mx.open "get", "網路不給放網址自己放啊", False:Mx.send()
>>tmp.vbs echo Do Until Mx.readyState = 4 : WScript.Sleep 200 :Loop:WScript.Sleep 1000
>>tmp.vbs echo Set cAS = CreateObject("Adodb.Stream")
>>tmp.vbs echo cAS.Type = 1:cAS.Mode = 3:cAS.Open():cAS.Write Mx.responseBody:cAS.SaveToFile "tmp.txt", 2:Mx.abort:Set Mx = Nothing:cAS.Close
tmp.vbs
for /f "tokens=2 delims=[]" %%i in (tmp.txt) do >1.txt echo %%i
del tmp.*
start "" 1.txt

⑻ 如何學習TensorFlow源碼

如果從源碼構建TensorFlow會需要執行如下命令
bazel build -c opt //tensorflow/tools/pip_package:build_pip_package

對應的BUILD文件的rule為:
sh_binary(
name = "build_pip_package",
srcs = ["build_pip_package.sh"],
data = [
"MANIFEST.in",
"README",
"setup.py",
"//tensorflow/core:framework_headers",
":other_headers",
":simple_console",
"//tensorflow:tensorflow_py",
"//tensorflow/examples/tutorials/mnist:package",
"//tensorflow/models/embedding:package",
"//tensorflow/models/image/cifar10:all_files",
"//tensorflow/models/image/mnist:convolutional",
"//tensorflow/models/rnn:package",
"//tensorflow/models/rnn/ptb:package",
"//tensorflow/models/rnn/translate:package",
"//tensorflow/tensorboard",
],
)

sh_binary在這里的主要作用是生成data的這些依賴。一個一個來看,一開始的三個文件MANIFEST.in、README、setup.py是直接存在的,因此不會有什麼操作。
「//tensorflow/core:framework_headers」:其對應的rule為:
filegroup(
name = "framework_headers",
srcs = [
"framework/allocator.h",
......
"util/device_name_utils.h",
],
)

這里filegroup的作用是給這一堆頭文件一個別名,方便其他rule引用。
「:other_headers」:rule為:
transitive_hdrs(
name = "other_headers",
deps = [
"//third_party/eigen3",
"//tensorflow/core:protos_all_cc",
],
)

transitive_hdrs的定義在:
load("//tensorflow:tensorflow.bzl", "transitive_hdrs")

實現為:
# Bazel rule for collecting the header files that a target depends on.
def _transitive_hdrs_impl(ctx):
outputs = set()
for dep in ctx.attr.deps:
outputs += dep.cc.transitive_headers
return struct(files=outputs)

_transitive_hdrs = rule(attrs={
"deps": attr.label_list(allow_files=True,
providers=["cc"]),
},
implementation=_transitive_hdrs_impl,)

def transitive_hdrs(name, deps=[], **kwargs):
_transitive_hdrs(name=name + "_gather",
deps=deps)
native.filegroup(name=name,
srcs=[":" + name + "_gather"])

其作用依舊是收集依賴需要的頭文件。
「:simple_console」:其rule為:
py_binary(
name = "simple_console",
srcs = ["simple_console.py"],
srcs_version = "PY2AND3",
deps = ["//tensorflow:tensorflow_py"],
)
py_library(
name = "tensorflow_py",
srcs = ["__init__.py"],
srcs_version = "PY2AND3",
visibility = ["//visibility:public"],
deps = ["//tensorflow/python"],
)

simple_console.py的代碼的主要部分是:
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import code
import sys

def main(_):
"""Run an interactive console."""
code.interact()
return 0

if __name__ == '__main__':
sys.exit(main(sys.argv))

可以看到起通過deps = [「//tensorflow/python」]構建了依賴包,然後生成了對應的執行文件。看下依賴的rule規則。//tensorflow/python對應的rule為:
py_library(
name = "python",
srcs = [
"__init__.py",
],
srcs_version = "PY2AND3",
visibility = ["//tensorflow:__pkg__"],
deps = [
":client",
":client_testlib",
":framework",
":framework_test_lib",
":kernel_tests/gradient_checker",
":platform",
":platform_test",
":summary",
":training",
"//tensorflow/contrib:contrib_py",
],
)

這里如果仔細看的話會發現其主要是生成一堆python的模塊。從這里貌似可以看出每個python的mole都對應了一個rule,且mole依賴的mole都寫在了deps里。特別的,作為一個C++的切入,我們關注下training這個依賴:
py_library(
name = "training",
srcs = glob(
["training/**/*.py"],
exclude = ["**/*test*"],
),
srcs_version = "PY2AND3",
deps = [
":client",
":framework",
":lib",
":ops",
":protos_all_py",
":pywrap_tensorflow",
":training_ops",
],
)

這里其依賴的pywrap_tensorflow的rule為:
tf_py_wrap_cc(
name = "pywrap_tensorflow",
srcs = ["tensorflow.i"],
swig_includes = [
"client/device_lib.i",
"client/events_writer.i",
"client/server_lib.i",
"client/tf_session.i",
"framework/python_op_gen.i",
"lib/core/py_func.i",
"lib/core/status.i",
"lib/core/status_helper.i",
"lib/core/strings.i",
"lib/io/py_record_reader.i",
"lib/io/py_record_writer.i",
"platform/base.i",
"platform/numpy.i",
"util/port.i",
"util/py_checkpoint_reader.i",
],
deps = [
":py_func_lib",
":py_record_reader_lib",
":py_record_writer_lib",
":python_op_gen",
":tf_session_helper",
"//tensorflow/core/distributed_runtime:server_lib",
"//tensorflow/core/distributed_runtime/rpc:grpc_server_lib",
"//tensorflow/core/distributed_runtime/rpc:grpc_session",
"//util/python:python_headers",
],
)

tf_py_wrap_cc為其自己實現的一個rule,這里的.i就是SWIG的interface文件。來看下其實現:
def tf_py_wrap_cc(name, srcs, swig_includes=[], deps=[], copts=[], **kwargs):
mole_name = name.split("/")[-1]
# Convert a rule name such as foo/bar/baz to foo/bar/_baz.so
# and use that as the name for the rule procing the .so file.
cc_library_name = "/".join(name.split("/")[:-1] + ["_" + mole_name + ".so"])
extra_deps = []
_py_wrap_cc(name=name + "_py_wrap",
srcs=srcs,
swig_includes=swig_includes,
deps=deps + extra_deps,
mole_name=mole_name,
py_mole_name=name)
native.cc_binary(
name=cc_library_name,
srcs=[mole_name + ".cc"],
copts=(copts + ["-Wno-self-assign", "-Wno-write-strings"]
+ tf_extension_copts()),
linkopts=tf_extension_linkopts(),
linkstatic=1,
linkshared=1,
deps=deps + extra_deps)
native.py_library(name=name,
srcs=[":" + name + ".py"],
srcs_version="PY2AND3",
data=[":" + cc_library_name])

按照SWIG的正常流程,先要通過swig命令生成我們的wrap的c文件,然後和依賴生成我們的so文件,最後生成一個同名的python文件用於import。這里native.cc_binary和native.py_library做了我們後面的兩件事情,而swig命令的執行則交給了_py_wrap_cc。其實現為:
_py_wrap_cc = rule(attrs={
"srcs": attr.label_list(mandatory=True,
allow_files=True,),
"swig_includes": attr.label_list(cfg=DATA_CFG,
allow_files=True,),
"deps": attr.label_list(allow_files=True,
providers=["cc"],),
"swig_deps": attr.label(default=Label(
"//tensorflow:swig")), # swig_templates
"mole_name": attr.string(mandatory=True),
"py_mole_name": attr.string(mandatory=True),
"swig_binary": attr.label(default=Label("//tensorflow:swig"),
cfg=HOST_CFG,
executable=True,
allow_files=True,),
},
outputs={
"cc_out": "%{mole_name}.cc",
"py_out": "%{py_mole_name}.py",
},
implementation=_py_wrap_cc_impl,)

_py_wrap_cc_impl的實現為:
# Bazel rules for building swig files.
def _py_wrap_cc_impl(ctx):
srcs = ctx.files.srcs
if len(srcs) != 1:
fail("Exactly one SWIG source file label must be specified.", "srcs")
mole_name = ctx.attr.mole_name
cc_out = ctx.outputs.cc_out
py_out = ctx.outputs.py_out
src = ctx.files.srcs[0]
args = ["-c++", "-python"]
args += ["-mole", mole_name]
args += ["-l" + f.path for f in ctx.files.swig_includes]
cc_include_dirs = set()
cc_includes = set()
for dep in ctx.attr.deps:
cc_include_dirs += [h.dirname for h in dep.cc.transitive_headers]
cc_includes += dep.cc.transitive_headers
args += ["-I" + x for x in cc_include_dirs]
args += ["-I" + ctx.label.workspace_root]
args += ["-o", cc_out.path]
args += ["-outdir", py_out.dirname]
args += [src.path]
outputs = [cc_out, py_out]
ctx.action(executable=ctx.executable.swig_binary,
arguments=args,
mnemonic="PythonSwig",
inputs=sorted(set([src]) + cc_includes + ctx.files.swig_includes +
ctx.attr.swig_deps.files),
outputs=outputs,
progress_message="SWIGing {input}".format(input=src.path))
return struct(files=set(outputs))

這里的ctx.executable.swig_binary是一個shell腳本,內容為:
# If possible, read swig path out of "swig_path" generated by configure
SWIG=swig
SWIG_PATH=tensorflow/tools/swig/swig_path
if [ -e $SWIG_PATH ]; then
SWIG=`cat $SWIG_PATH`
fi

# If this line fails, rerun configure to set the path to swig correctly
"$SWIG" "[email protected]"

可以看到起就是調用了swig命令。
「//tensorflow:tensorflow_py」:其rule為:
py_library(
name = "tensorflow_py",
srcs = ["__init__.py"],
srcs_version = "PY2AND3",
visibility = ["//visibility:public"],
deps = ["//tensorflow/python"],
)

⑼ logback之Appender源碼解讀

在logback日誌框架中,每一個Logger都會去關聯一個Appender,Appender是真正把日誌內容輸出到控制台,文件等,可以說在日常應用中非常重要和拓展的一個組件。

其中最重要的就是 doAppend() 方法,每一個日誌事件輸出,都會調用到這個介面。

其中,有我們熟悉的 ConsoleAppender 和 FileAppender ,還有 RollingFileAppender 。另外,有一個很重要的 AsyncAppender 介面,非同步輸出,這也是logback日誌受歡迎的一個非常重要的特性。他們都繼承與抽象類 UnsynchronizedAppenderBase 類。

在 UnsynchronizedAppenderBase 中,我們看一下其中實現了最重要的一個方法 doAppend()

其實這個方法沒有東西也沒有做,只是使用模版方法,讓具體的子類交給子類的 append() 方法實現具體的邏輯。

在 OutputStreamAppender 類中,有幾個比較重要的成員變數。

其中 encoder 最主要的作用就是把日誌事件要輸出的內容變成位元組數組,然後把位元組數組寫入到 outputStream 。

其中 outputStream 可以是控制台或者文件等。

接著看 append() 方法

這個方法也是沒有做什麼,接著具體看 subAppend() 方法。

在這個方法中,可以看到 encoder 的作用,同時還有一個重要的方法 writeBytes()

這個方法就是把位元組數組寫入到outputStream中。

總結一下:一個日誌事件記錄的流程就是,要需要輸出的內容通過encoder變成位元組數組,然後寫入到具體的輸出流中。

ConsoleAppender 繼承了 OutputStreamAppender ,唯一不一樣的就是輸出的位置, ConsoleAppender 是輸出到控制台,outputStream輸出流也應該是控制台。

其中, start() 方法會在初始化logback.xml配置的時候去調用,在 start() 方法中就設置了outputStream輸出流——控制台。

FileAppender ,如果一個日誌事件需要輸出到文件中,那麼它就需要一個文件輸出流FileOutStream。

需要設置一個文件名。在看看 start() 方法對 FileAppender 進行初始化工作。

主要看 openFile() 方法

在這個方法中,通過文件名去 new File() 文件,然後封裝到 ResilientFileOutputStream 中,然後設置 setOutputStream() ,這樣子就可以把日誌輸出到文件中了。

非同步輸出,也就意味著會把日誌事件先放入到一個隊列中,然後由專門的線程去隊列中拿日誌事件消費。

看類 AsyncAppenderBase 中幾個重要的成員變數

AppenderAttachableImpl 裡麵包含一個Appender列表,列表是具體的Appender,如上面講到的ConsoleAppender和FileAppender。

BlockingQueue是一個隊列,Worker是一個消費線程。

例如,在配置文件中定義一個非同步的Appender

接下來看看具體是如何實現非同步輸出的。

start() 方法初始化中,定義了一個 ArrayBlockingQueue 隊列,以及啟動了一個worker線程。

接著看 append() 方法

在 append() 方法中,並沒有馬上處理日誌事件,而是調用 put() 方法

接著把日誌事件放進去消息隊列中。然後由 Worker 線程去處理

Worker 線程從隊列中take()取出事件,然後由具體的Appender去處理

看到調用 doAppend() ,已經和之前的Appender是一樣的啦。
本文是筆者個人的理解,若有不正確指出請多多糾正。

閱讀全文

與console源碼相關的資料

熱點內容
美東伺服器叫什麼 瀏覽:532
四年級平均值怎麼算簡單演算法 瀏覽:183
冷撲大師演算法 瀏覽:373
重復數據比對演算法 瀏覽:740
golang調用python 瀏覽:171
hsc伺服器做raid0怎麼做 瀏覽:231
android50源代碼 瀏覽:127
程序員需要本科學位證書嗎 瀏覽:775
手機版wps許多文檔如何放到文件夾 瀏覽:687
安卓手機怎麼退出帳戶 瀏覽:767
夜神安卓模擬器怎麼刪 瀏覽:561
運行命令無法打開共享 瀏覽:524
安卓怎麼與單片機交互 瀏覽:736
linux下tcpdump 瀏覽:919
華為榮耀手機隱藏文件夾方法 瀏覽:535
python怎麼做簡單線性回歸模型 瀏覽:252
安卓系統電視是什麼 瀏覽:343
全款買了房開發商遲遲不解壓 瀏覽:812
linux退出oracle 瀏覽:652
不能截圖的app怎麼截長圖 瀏覽:307