[20240814]oracle 21c NLS_DATE_FORMAT設置問題(整理版本1).txt

来源:https://www.cnblogs.com/lfree/p/18363653
-Advertisement-
Play Games

1、背景描述 在信創的大背景下,信息技術人員開始需要頻繁接觸國產資料庫。 人大金倉資料庫是國內先進的資料庫產品,廣泛服務於各個重點行業和關鍵領域,累計裝機部署超百萬套。 2020年,人大金倉實現在國產資料庫關鍵應用領域銷售套數占比第一的市場地位。 雖然人大金倉提供了官方的資料庫管理工具,但是對於非D ...


[20240814]oracle 21c NLS_DATE_FORMAT設置問題(整理版本1).txt

--//朋友遇到的問題,請求遠程協助解決問題:
--//執行sqlplus出現如下錯誤:
SQL*Plus: Release 21.0.0.0.0 - Production on Sat Aug 10 11:38:06 2024
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

Connected.
~~~~~~~~~
SQL> select sysdate from dual ;
select sysdate from dual
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0
--//我開始懷疑對方系統是否是安裝防水牆或者防火牆之類導致的問題,我以前在生產系統也遇到類似問題,出現Connected.實際上正常
--//登錄不會出現該提示。
--//幸好我即時發現NLS參數設置有單引號(註windows機器連接linux伺服器),正好對方前幾十分鐘做了增加NLS*環境變數的操作,建議
--//他取消看看,問題馬上解決,在windows下設置NLS環境變數不需要使用單雙引號。
--//也提醒遇到問題要冷靜,想想自己做了什麼改動,這樣能很快定位問題.

--//正好沒事,在自己的測試環境重覆演示遇到的問題,結果遇到自己一些問題.

1.環境:
[email protected]:1521/book> @ prxx
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 21.0.0.0.0
BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

2.建立測試環境需要文件:
D:\tmp\study> cat nls.bat
rem @ echo off
set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
set NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS.FF'
set NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'
echo select sysdate,systimestamp,localtimestamp from dual ; | sqlplus -s -l system/[email protected]:1521/book
--//註:使用單引號,這樣設置無法登錄.
--//後面的內容為了避免重覆,我直接貼出nls.bat的執行結果,不再貼出nls.bat的內容.

3.測試(單引號):
d:\tmp\study>nls
d:\tmp\study>rem @ echo off
d:\tmp\study>set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
d:\tmp\study>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
d:\tmp\study>set NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS.FF'
d:\tmp\study>set NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'
d:\tmp\study>echo select sysdate,systimestamp,localtimestamp from dual ;   | sqlplus -s -l system/[email protected]:1521/book
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-02248: invalid option for ALTER SESSION
SP2-0751: Unable to connect to Oracle.  Exiting SQL*Plus
--//這裡註意一個細節,前面使用sys登錄執行,報錯ORA-01012: not logged on.而這裡使用system用戶登錄,報錯出現ORA-02248:
--//invalid option for ALTER SESSION,至少給一個提示可能知道可能是設置環境變數錯誤.

d:\tmp\study>echo select sysdate,systimestamp,localtimestamp from dual ;   | sqlplus -s -l sys/[email protected]:1521/book as sysdba
select sysdate,systimestamp,localtimestamp from dual
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0
--//錯誤提示是ORA-01012: not logged on。
--//後面的測試使用system用戶登錄。

4.測試(雙引號):
d:\tmp\study>nls
d:\tmp\study>rem @ echo off
d:\tmp\study>set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
d:\tmp\study>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
d:\tmp\study>set NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS.FF"
d:\tmp\study>set NLS_TIMESTAMP_TZ_FORMAT="YYYY-MM-DD HH24:MI:SS.FF TZH:TZM"
d:\tmp\study>echo select sysdate,systimestamp,localtimestamp from dual ;   | sqlplus -s -l system/[email protected]:1521/book
SYSDATE             SYSTIMESTAMP                     LOCALTIMESTAMP
------------------- -------------------------------- ------------------------
2024-08-14 15:18:27 YYYY-MM-DD HH24:MI:SS.FF TZH:TZM YYYY-MM-DD HH24:MI:SS.FF

--//居然執行成功,如果沒有做這個測試,也許就沒有後面的許多事情,浪費大量的時間分析為什麼?
--//很明顯這樣設置可以登錄,我開始不理解的是為什麼sysdate可以正常的輸出時間,而SYSTIMESTAMP,LOCALTIMESTAMP卻可以輸出正常格
--//式.

--//於是我修改nls.bat腳本,在括弧內加入一些內容:
d:\tmp\study>nls
d:\tmp\study>rem @ echo off
d:\tmp\study>set NLS_DATE_FORMAT="1234YYYY-MM-DD HH24:MI:SS"
d:\tmp\study>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
d:\tmp\study>set NLS_TIMESTAMP_FORMAT="1234YYYY-MM-DD HH24:MI:SS.FF"
d:\tmp\study>set NLS_TIMESTAMP_TZ_FORMAT="1234YYYY-MM-DD HH24:MI:SS.FF TZH:TZM"
d:\tmp\study>echo select sysdate,systimestamp,localtimestamp from dual ;   | sqlplus -s -l system/[email protected]:1521/book
SYSDATE             SYSTIMESTAMP                         LOCALTIMESTAMP
------------------- ------------------------------------ ----------------------------
2024-08-14 15:24:12 1234YYYY-MM-DD HH24:MI:SS.FF TZH:TZM 1234YYYY-MM-DD HH24:MI:SS.FF

[email protected]:1521/book> show parameter nls_
PARAMETER_NAME           TYPE   VALUE
------------------------ ------ -----------------------------------------
nls_calendar             string GREGORIAN
nls_comp                 string BINARY
nls_currency             string $
nls_date_format          string YYYY-MM-DD HH24:MI:SS
nls_date_language        string AMERICAN
nls_dual_currency        string $
nls_iso_currency         string AMERICA
nls_language             string AMERICAN
nls_length_semantics     string BYTE
nls_nchar_conv_excp      string FALSE
nls_numeric_characters   string .,
nls_sort                 string BINARY
nls_territory            string AMERICA
nls_time_format          string HH24:MI:SSXFF
nls_time_tz_format       string HH24.MI.SSXFF TZH:TZM
nls_timestamp_format     string "1234YYYY-MM-DD HH24:MI:SS.FF"
nls_timestamp_tz_format  string "1234YYYY-MM-DD HH24:MI:SS.FF TZH:TZM"

--//於是我開始懷疑nls_date_format被重置了.直到我做了alter system set events '10046 trace name context forever, level 12';
--//整個過程略(浪費大量時間).是因為環境變數設置ORACLE_PATH,SQL_PATH,路徑裡面調用了tanel poder的tpt的login.sql腳本,
--//login.sql又調用init.sql.

d:\tmp\study> cat d:\tools\sqllaji\tpt\login.sql
cat d:\tools\sqllaji\tpt\login.sql
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.

-- calling init.sql which will set up sqlpus variables
@init.sql
-- i.sql is the "who am i" script which shows your session/instance info and
-- also sets command prompt window/xterm title
-- @i.sql

-- you can put your own login scripts here

d:\tmp\study> grep alter  d:\tools\sqllaji\tpt\init.sql
  alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';

--//tpt的腳本初始化會重新設置nls_date_format = 'YYYY-MM-DD HH24:MI:SS';

d:\tmp\study>nls
d:\tmp\study>rem @ echo off
d:\tmp\study>set NLS_DATE_FORMAT="1234YYYY-MM-DD HH24:MI:SS"
d:\tmp\study>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
d:\tmp\study>set NLS_TIMESTAMP_FORMAT="1234YYYY-MM-DD HH24:MI:SS.FF"
d:\tmp\study>set NLS_TIMESTAMP_TZ_FORMAT="1234YYYY-MM-DD HH24:MI:SS.FF TZH:TZM"
d:\tmp\study>echo select sysdate,systimestamp,localtimestamp from dual ;   | sqlplus -s -l -R 3 system/[email protected]:1521/book
SP2-0738: Restricted command "@@ (START)" not available
SP2-0738: Restricted command "@@ (START)" not available

SYSDATE
-------------------------
SYSTIMESTAMP
---------------------------------------------------------------------------
LOCALTIMESTAMP
---------------------------------------------------------------------------
1234YYYY-MM-DD HH24:MI:SS
1234YYYY-MM-DD HH24:MI:SS.FF TZH:TZM
1234YYYY-MM-DD HH24:MI:SS.FF
--//給sqlplus 加入-R 3 參數避開@之類的調用.現在輸出都出現了日期格式.
--//我在這裡走了很大的彎路,最終定位環境變數設置ORACLE_PATH,SQL_PATH路徑裡面調用了tanel poder的tpt的login.sql腳本.
--//後面的測試我修改nls.bat腳本,重置ORACLE_PATH,SQLPATH=來規避這個問題,註意這樣還是會執行oracle的
--//E:\tools\database21c\sqlplus\admin的glogin.sql的調用.
set ORACLE_PATH=
set SQLPATH=

5.如果使用1個雙引號可以登錄,嘗試2個雙引號呢?
--//使用兩個雙引號看看.實際上當時思維混亂,有點在亂嘗試。
d:\tmp\study>nls
d:\tmp\study>rem @ echo off
d:\tmp\study>set ORACLE_PATH=
d:\tmp\study>set SQLPATH=
d:\tmp\study>set NLS_DATE_FORMAT=""YYYY-MM-DD HH24:MI:SS""
d:\tmp\study>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
d:\tmp\study>set NLS_TIMESTAMP_FORMAT=""YYYY-MM-DD HH24:MI:SS.FF""
d:\tmp\study>set NLS_TIMESTAMP_TZ_FORMAT=""YYYY-MM-DD HH24:MI:SS.FF TZH:TZM""
d:\tmp\study>echo select sysdate,systimestamp,localtimestamp from dual ;   | sqlplus -s -l system/[email protected]:1521/book
SYSDATE             SYSTIMESTAMP
------------------- --------------------------------------------------------------------------- -----------------------------------------
2024-08-14 15:47:21 2024-08-14 15:47:21.156656 +08:00                                           2024-08-14 15:47:21.156659
--//居然成功了.
--//註意1個細節.標題沒有localtimestamp.遇到1個怪問題.
--//註:有時候輸出太長,為了方便閱讀,會做一些排版,縮小寬度,但是在這裡我原樣貼出.

d:\tmp\study>echo select systimestamp,localtimestamp,sysdate from dual ;   | sqlplus -s -l system/[email protected]:1521/book
SYSTIMESTAMP                                                                LOCA
--------------------------------------------------------------------------- --------------------------------------------------------------------------- -------------------
2024-08-14 15:57:42.611420 +08:00                                           2024-08-14 15:57:42.611423                                                  2024-08-14 15:57:42
--//輸出順序換一下,sysdate到最後.
--//如果你使用vi定位到LOCA可以發現正常在80列.但是為什麼這樣不理解,我做spool也是這樣.為什麼?

[email protected]:1521/book> column value format a40
[email protected]:1521/book> select * from v$nls_parameters ;
PARAMETER                      VALUE                                        CON_ID
------------------------------ ---------------------------------------- ----------
NLS_LANGUAGE                   AMERICAN                                          1
NLS_TERRITORY                  AMERICA                                           1
NLS_CURRENCY                   $                                                 1
NLS_ISO_CURRENCY               AMERICA                                           1
NLS_NUMERIC_CHARACTERS         .,                                                1
NLS_CALENDAR                   GREGORIAN                                         1
NLS_DATE_FORMAT                ""YYYY-MM-DD HH24:MI:SS""                         1
NLS_DATE_LANGUAGE              AMERICAN                                          1
NLS_CHARACTERSET               ZHS16GBK                                          1
NLS_SORT                       BINARY                                            1
NLS_TIME_FORMAT                HH24:MI:SSXFF                                     1
NLS_TIMESTAMP_FORMAT           ""YYYY-MM-DD HH24:MI:SS.FF""                      1
NLS_TIME_TZ_FORMAT             HH24.MI.SSXFF TZH:TZM                             1
NLS_TIMESTAMP_TZ_FORMAT        ""YYYY-MM-DD HH24:MI:SS.FF TZH:TZM""              1
NLS_DUAL_CURRENCY              $                                                 1
NLS_NCHAR_CHARACTERSET         AL16UTF16                                         1
NLS_COMP                       BINARY                                            1
NLS_LENGTH_SEMANTICS           BYTE                                              1
NLS_NCHAR_CONV_EXCP            FALSE                                             1
19 rows selected.
--//格式裡面記錄的是2個雙引號。

6.有了雙引號的先例,嘗試2個單引號呢?

d:\tmp\study>nls
d:\tmp\study>rem @ echo off
d:\tmp\study>set ORACLE_PATH=
d:\tmp\study>set SQLPATH=
d:\tmp\study>set NLS_DATE_FORMAT=''YYYY-MM-DD HH24:MI:SS''
d:\tmp\study>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
d:\tmp\study>set NLS_TIMESTAMP_FORMAT=''YYYY-MM-DD HH24:MI:SS.FF''
d:\tmp\study>set NLS_TIMESTAMP_TZ_FORMAT=''YYYY-MM-DD HH24:MI:SS.FF TZH:TZM''
d:\tmp\study>echo select sysdate,systimestamp,localtimestamp from dual ;   | sqlplus -s -l system/[email protected]:1521/book
SYSDATE               SYSTIMESTAMP
--------------------- --------------------------------------------------------------------------- ---------------------------------------------------------------------------
'2024-08-14 15:56:01' '2024-08-14 15:56:01.616523 +08:00'                                         '2024-08-14 15:56:01.616526'
--//SYSDATE,SYSTIMESTAMP,LOCALTIMESTAMP的輸出包含引號.內容對的.
--//註意1個細節.標題沒有localtimestamp.不理解.

[email protected]:1521/book> column value format a40
[email protected]:1521/book> select * from v$nls_parameters ;
PARAMETER                      VALUE                                        CON_ID
------------------------------ ---------------------------------------- ----------
NLS_LANGUAGE                   AMERICAN                                          1
NLS_TERRITORY                  AMERICA                                           1
NLS_CURRENCY                   $                                                 1
NLS_ISO_CURRENCY               AMERICA                                           1
NLS_NUMERIC_CHARACTERS         .,                                                1
NLS_CALENDAR                   GREGORIAN                                         1
NLS_DATE_FORMAT                'YYYY-MM-DD HH24:MI:SS'                           1
NLS_DATE_LANGUAGE              AMERICAN                                          1
NLS_CHARACTERSET               ZHS16GBK                                          1
NLS_SORT                       BINARY                                            1
NLS_TIME_FORMAT                HH24:MI:SSXFF                                     1
NLS_TIMESTAMP_FORMAT           'YYYY-MM-DD HH24:MI:SS.FF'                        1
NLS_TIME_TZ_FORMAT             HH24.MI.SSXFF TZH:TZM                             1
NLS_TIMESTAMP_TZ_FORMAT        'YYYY-MM-DD HH24:MI:SS.FF TZH:TZM'                1
NLS_DUAL_CURRENCY              $                                                 1
NLS_NCHAR_CHARACTERSET         AL16UTF16                                         1
NLS_COMP                       BINARY                                            1
NLS_LENGTH_SEMANTICS           BYTE                                              1
NLS_NCHAR_CONV_EXCP            FALSE                                             1
19 rows selected.

[email protected]:1521/book> select "DUMMY",'DUMMY' c10 from "DUAL";
D C10
- ----------
X DUMMY
--//單引號定義的是字元串,而雙引號定義的欄位.

7.繼續探究:
--//突然想環境變數NLS參數的定義相當於使用特定的格式輸出.可以理解為使用了函數to_char來格式化輸出,測試並且驗證看看我的判
--//斷是否正確.

[email protected]:1521/book> select to_char(localtimestamp,''YYYY-MM-DD HH24:MI:SS.FF'') c30 from dual;
SP2-0552: Bind variable "MI" not declared.
--//單個引號,報SP2-0552: Bind variable "MI" not declared.

[email protected]:1521/book> select to_char(localtimestamp,''YYYY-MM-DD HH24MISS.FF'') c30 from dual;
select to_char(localtimestamp,''YYYY-MM-DD HH24MISS.FF'') c30 from dual
                                *
ERROR at line 1:
ORA-00907: missing right parenthesis
--//單個引號,取消:,還是報錯.說明使用單個引號會報錯.

[email protected]:1521/book> select to_char(localtimestamp,'"YYYY-MM-DD HH24:MI:SS.FF"') c30 from dual;
C30
------------------------------
YYYY-MM-DD HH24:MI:SS.FF
--//單個雙引號,輸出日期格式,感覺自己判斷是對的.

[email protected]:1521/book> select to_char(localtimestamp,'""YYYY-MM-DD HH24:MI:SS.FF""') c30 from dual;
C30
------------------------------
2024-08-14 16:17:24.995349

[email protected]:1521/book> select '""1234abc""' c30 from dual;
C30
------------------------------
""1234abc""
--//2個雙引號,輸出正確,與前面測試一樣.但是我不理解.....

[email protected]:1521/book> select to_char(localtimestamp,'''YYYY-MM-DD HH24MISS.FF''') c30 from dual;
C30
------------------------------
'2024-08-14 161952.893218'
--//2個單引號,可以理解裡面''解析為1個單引號,這樣結果輸出結果帶有單引號.

8.奇葩的例子:
--//在windows下定義環境變數不需要使用單雙引號,不像linux的定義環境變數字串有空格,一定要使用單雙引號,例子:
$ export NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS
-bash: export: `HH24:MI:SS': not a valid identifier

$ export NLS_DATE_FORMAT=YYYY-MM-DD:HH24:MI:SS
--//沒有空格沒事!!

--//如果那位在windows下定義環境變數結尾暗藏空格呢?
d:\tmp\study>cat -Ev nls.bat
rem @ echo off^M$
set ORACLE_PATH=^M$
set SQLPATH=^M$
set NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS                  ^M$
~~~~~~~~~~~~~~
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK^M$
set NLS_TIMESTAMP_FORMAT=YYYY-MM-DD HH24:MI:SS.FF^M$
set NLS_TIMESTAMP_TZ_FORMAT=YYYY-MM-DD HH24:MI:SS.FF TZH:TZM^M$
echo select sysdate,systimestamp,localtimestamp from dual ; | sqlplus -s -l system/[email protected]:1521/book^M$
--//下劃線哪行S後面有18個空格.

d:\tmp\study>nls
d:\tmp\study>rem @ echo off
d:\tmp\study>set ORACLE_PATH=
d:\tmp\study>set SQLPATH=
d:\tmp\study>set NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS
d:\tmp\study>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
d:\tmp\study>set NLS_TIMESTAMP_FORMAT=YYYY-MM-DD HH24:MI:SS.FF
d:\tmp\study>set NLS_TIMESTAMP_TZ_FORMAT=YYYY-MM-DD HH24:MI:SS.FF TZH:TZM
d:\tmp\study>echo select sysdate,systimestamp,localtimestamp from dual ;   | sqlplus -s -l system/[email protected]:1521/book
SP2-0642: SQL*Plus internal error state 2021, context 1:1801:0
Unsafe to proceed
kgepop: no error frame to pop to for error 1801
kpedbg_dmp_stack<-kpedbgdmp<-kgerinv_internall<-kgerinv<-kgerin<-kgepop<-kgesecl0<-kolderr<-ldxsnf<-ldxsti<-ldxbegin<-ldxini<-kpuuini..0<-kpuinit0<-kpuenvcr<-OCIEnvCreate<-OCIEnvCreate<-afioci<-aficntini<-afidrv<-main<-?__scrt_common_main_seh@@YAHXZ<-0x00007FFCD9987034<-0x00007FFCDB2E26A1
kpedbg_dmp_stack<-kpedbgdmp<-kgepop<-kgesecl0<-kolderr<-ldxsnf<-ldxsti<-ldxbegin<-ldxini<-kpuuini..0<-kpuinit0<-kpuenvcr<-OCIEnvCreate<-OCIEnvCreate<-afioci<-aficntini<-afidrv<-main<-?__scrt_common_main_seh@@YAHXZ<-0x00007FFCD9987034<-0x00007FFCDB2E26A1

--//如果有17個空格,就不會報錯.可以簡單驗證:
[email protected]:1521/book> alter session set nls_date_format='YYYY:MM:DD HH24:MI:SS                  ';
ERROR:
ORA-01801: date format is too long for internal buffer

[email protected]:1521/book> alter session set nls_date_format='YYYY:MM:DD HH24:MI:SS                 ';
ession altered.
--//後面有17個空格.

[email protected]:1521/book> select sysdate from dual ;
SYSDATE
------------------------------------
2024:08:14 16:34:15

--//不過這個問題如果那位在環境變數里定義這樣的情況,問題就很難查了.
--//提醒一下:實際上sqlplus有提示:
SP2-0642: SQL*Plus internal error state 2021, context 1:1801:0
kgepop: no error frame to pop to for error 1801
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--//裡面1801就是提示.

$ oerr ora 1801
01801, 00000, "date format is too long for internal buffer"
// *Cause:
// *Action:
--//在這樣的情況我使用toad程式直接退出,根本沒有任何提示.

9.總結:
--//寫這麼多,感覺自己把問題想的複雜了,總之在windows下定義oracle環境變數不要單雙引號就ok了.
--//windows下環境變數賦值相當於整個作為字元串傳入變數,比如結尾的空格也作為變數的一部分.
--//linux下不行,因為字元串裡面包含空格,必須使用單雙引號,並且不作為變數的一部分.
--//有機會測試linux下上面各種賦值的情況.

--//測試時走了彎路,沒有規避loing.sql的影響,導致被輸出結果給帶偏了,浪費大量的時間.

--//不過我還是無法理解使用兩個雙引號的情況,還有就是sqlplus的標題丟失問題.
--//關於標題問題只能稱為oracle的靈異事情,另外寫一篇blog分析.
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • T113s工業套件簡述 提示 T113開發交流QQ群:120575746 此開發板的任何問題都可以在我們的論壇交流討論 https://forums.100ask.net/c/aw/ 硬體簡述​ 100ASK_T113s3-Industrial-DevKit 是百問網設計的一款專門針對於工業控制場景 ...
  • 寫在前面 本隨筆是非常菜的菜雞寫的。如有問題請及時提出。 可以聯繫:[email protected] GitHhub:https://github.com/WindDevil (目前啥也沒有 下載它 隨便找個地方下載,如果官網下載速度過慢: 官網 B站 微信公眾號 知乎 各大軟體站 這裡附上我使用 ...
  • 痞子衡嵌入式半月刊: 第 106 期 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 本期刊是開源項目(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。 上期回 ...
  • 本文介紹基於PowerShell語言,對文件夾中全部文件的名稱加以批量替換、修改的方法。 在之前的文章中,我們介紹了基於Python語言,批量修改大量文件的名稱的方法。當時我們修改文件名的需求比較複雜,因此選擇了用Python語言來實現;而在我們的需求重命名規則相對比較簡單時,則可以基於PowerS ...
  • 第十九章 machine.PWM類實驗 1)實驗平臺:正點原子DNK210開發板 2)章節摘自【正點原子】DNK210使用指南 - CanMV版 V1.0 3)購買鏈接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套實驗源碼+手冊+視頻 ...
  • 基礎用法: 1、終端輸入vim filename.c 如果文件不存在則新建並打開,存在則打開 2、輸入i 進入編輯模式,編寫代碼 3、保存退出: 按Esc退出編輯模式,輸入ZZ保存並退出 vim的三大模式: 正常模式:預設進入vim處於正常模式,一般用於閱讀文件、使用快捷鍵批量修改文件 編輯模式:一 ...
  • 一,共用文件夾 virtualBox+ubuntu16.04 共用文件夾可以方便我們主機和虛擬機進行文件的傳輸 1.虛擬機菜單欄點擊設備安裝增強功能 2.增強功能安裝完成以後再點擊設備選擇共用文件夾,添加共用文件夾,並勾選"自動掛載"和"固定分配" 3.然後需要將當前用戶添加到vboxsf組 使用命 ...
  • 儘管我們在本文中只觸及了資料庫的基礎部分,實際應用中可能會遇到更複雜的業務邏輯和需求。這些複雜的場景通常需要深入瞭解更多高級特性和技巧。雖然這些內容超出了本文的範圍,但掌握基本操作是邁向高級技能的第一步。希望通過這篇文章,你能夠對資料庫有一個清晰的認識,併在實際工作中熟練運用這些基本操作。未來,隨著... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...