我之前在《使用SQL计算宝宝每次吃奶的时间间隔(数据保障篇)》中提到数据实时同步的方案,其中有一种是数据表通过OGG进行同步,当时没有详细展开测试,只给了之前学习OGG时的配置示例。由于之前很少接触OGG的管理运维,最近在进行实际测试时遇到些问题,虽然不难,但也是初学者常遇到的问题,所以记录下这个过程。
需求: 将TEST用户下的数据表T_BABY通过OGG进行同步。 环境: 源端:RHEL6.5, IP地址:192.168.1.61 Oracle 11.2.0.4 RAC(2 nodes)+ OGG 12.2.0.2 待同步数据表test.t_baby已有数据
目标端:OEL5.7, IP地址:192.168.1.11 Oracle 11.2.0.3 单实例 + OGG 12.2.0.2
数据表通过OGG配置同步:
1.源端和目标端软件安装部署
2.源端配置
3.目标端配置
4.实验中遇到的问题处理
1.源端和目标端软件安装部署
在源端和目标端都部署OGG 12.2.0.2,使用图形界面安装,默认选择安装完成后自动启动mgr进程,安装截图类似如下:
2.源端配置
首先确认数据库是否处于归档模式,是否开启force logging和数据库最小附加日志:
select log_mode,supplemental_log_data_min,force_logging from v$database;
特殊参数enable_goldengate_replication设置:
alter system set enable_goldengate_replication=true scope=both;
2.1 数据库开启最小附加日志、归档模式、force logging
--1) RAC开启归档模式
srvctl stop database -d demo
sqlplus / as sysdba
startup mount
alter database archivelog;
alter database open;
srvctl start database -d demo
--2)开启force logging
alter database force logging;
--3)开启数据库最小附加日志
alter database add supplemental log data;
开启后再次检查确认数据库已经处于归档模式、开启了force logging和数据库最小附加日志:
sys@DEMO> select log_mode,supplemental_log_data_min,force_logging from v$database;
LOG_MODE SUPPLEME FOR
------------ -------- ---
ARCHIVELOG YES YES
2.2 需要同步的表开启详细附加日志 在GGSCI命令行下,使用"add trandata user.table_name"开启表的详细附加日志。
GGSCI (jystdrac1) 1> add trandata test.t_baby;
ERROR: Not logged into database, use DBLOGIN.
GGSCI (jystdrac1) 2> dblogin userid ggs_admin
Password:
Successfully logged into database.
GGSCI (jystdrac1 as ggs_admin@demo1) 3> add trandata test.t_baby;
ERROR: No viable tables matched specification.
GGSCI (jystdrac1 as ggs_admin@demo1) 4> add trandata test.t_baby
Logging of supplemental redo data enabled for table TEST.T_BABY.
TRANDATA for scheduling columns has been added on table 'TEST.T_BABY'.
TRANDATA for instantiation CSN has been added on table 'TEST.T_BABY'.
注意上述命令3是因为结尾多写了";",而OGG并不需要像SQL那样以";"结尾,所以多写了";"反而会报错。
2.3 源端配置extract和datapump进程 源端配置extract和datapump进程:
GGSCI (jystdrac1) 1> edit param extbaby
--Local Extract extbaby
--Author: Alfred Zhao
--
EXTRACT extbaby
SETENV(NLS_LANG=american_america.ZHS16GBK)
SETENV(ORACLE_SID=demo1)
USERID ggs_admin, PASSWORD ggs_admin
TRANLOGOPTIONS ASMUSER sys@ASM,ASMPASSWORD oracle
EXTTRAIL ./dirdat/st
TABLE TEST.T_BABY;
GGSCI (jystdrac1) 2> edit param dpbaby
--Local datapump dpbaby
--Author: Alfred Zhao
--
EXTRACT dpbaby
PASSTHRU
RMTHOST 192.168.1.11, MGRPORT 7809
RMTTRAIL ./dirdat/tt
TABLE TEST.T_BABY;
--添加extbaby(注意这里RAC2个节点,所以指定threads 2)
GGSCI (jystdrac1) 3> add extract extbaby, tranlog, begin now, threads 2
GGSCI (jystdrac1) 4> add exttrail ./dirdat/st, extract extbaby, megabytes 50
--添加dpbaby
GGSCI (jystdrac1) 5> add extract dpbaby, exttrailsource ./dirdat/st, begin now
GGSCI (jystdrac1) 6> add rmttrail ./dirdat/tt, EXTRACT dpbaby, MEGABYTES 50
--启动extract和datapump进程
GGSCI (jystdrac1) 7> start *
确认抽取进程正常后,初始化数据做准备,备份当前的t_baby表:
[oracle@jystdrac1 ggs]$ /bin/sh /home/oracle/baby/backup_exp_t_baby.sh
Export: Release 11.2.0.4.0 - Production on Tue Feb 11 17:36:20 2020
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Tes
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
. . exporting table T_BABY 462 rows exported
Export terminated successfully without warnings.
导出文件:/public/backup/t_baby_20200211.dmp
将源端这个导出文件传输到目标端,给后续导入使用,我这里的/public目录是NAS,源端目标端都可以访问,所以无需拷贝。
3.目标端配置
3.1 初始化数据,导入目标端数据库 导入之前确认已创建用户:test imp test/test file=/public/backup/t_baby_20200211.dmp full=y
[oracle@OEL-ASM dirdat]$ imp test/test file=/public/backup/t_baby_20200211.dmp full=y
Import: Release 11.2.0.3.0 - Production on Tue Feb 11 17:38:09 2020
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
Export file created by EXPORT:V11.02.00 via conventional path
import done in ZHS16GBK character set and AL16UTF16 NCHAR character set
import server uses WE8MSWIN1252 character set (possible charset conversion)
. importing TEST's objects into TEST
. importing TEST's objects into TEST
. . importing table "T_BABY" 462 rows imported
Import terminated successfully without warnings.
3.2 目标端配置checkpointtable
view params ./GLOBALS
checkpointtable ggt_admin.chkpt
dblogin userid ggt_admin, password ggt_admin
add checkpointtable ggt_admin.chkpt
3.3 目标端配置replicat进程
edit param repbaby
--Local datapump repbaby
--Author: Alfred Zhao
--
REPLICAT repbaby
SETENV(NLS_LANG=american_america.ZHS16GBK)
SETENV (ORACLE_SID=test)
USERID ggt_admin, PASSWORD ggt_admin
DISCARDFILE ./dirrpt/repbaby.dsc, PURGE
HandleCollisions
AssumeTargetDefs
Map test.*,Target test.*;
--添加repbaby进程
add replicat repbaby, exttrail ./dirdat/tt
--确认初始化数据完成后,开启repbaby进程
GGSCI (OEL-ASM) 4> start *
Sending START request to MANAGER ...
REPLICAT REPBABY starting
GGSCI (OEL-ASM) 5> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REPBABY 00:00:00 00:01:48
GGSCI (OEL-ASM) 6> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REPBABY 00:00:00 00:00:00
4.实验中遇到的问题处理
4.1 extract进程extbaby启动不成功,报错OGG-02091
2020-02-11 16:34:28 ERROR OGG-02091 Oracle GoldenGate Capture for Oracle, extbaby.prm: Operation not supported because enable_goldengate_replication is not set to true.
2020-02-11 16:34:28 ERROR OGG-01668 Oracle GoldenGate Capture for Oracle, extbaby.prm: PROCESS ABENDING.
这个报错很明显,按要求修改这个参数即可:
alter system set enable_goldengate_replication=true scope=both;
4.2 extract进程extbaby启动不成功,报错OGG-00446 extbaby启动不成功,日志显示:
2020-02-11 16:36:55 ERROR OGG-00446 Oracle GoldenGate Capture for Oracle, extbaby.prm: No valid log files for current redo sequence 859, thread 1, error retrieving redo file name for sequence 859, archived = 0, use_alternate = 0Not able to establish initial position for begin time 2020-02-11 16:33:22.000000.
2020-02-11 16:36:55 ERROR OGG-01668 Oracle GoldenGate Capture for Oracle, extbaby.prm: PROCESS ABENDING.
这是因为RAC的redo日志在ASM中无法访问到,extbaby配置文件中加入ASM实例的访问配置,并配置好对应的tnsnames.ora即可:
TRANLOGOPTIONS ASMUSER sys@ASM,ASMPASSWORD oracle
tnsnames.ora添加:
ASM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.61)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = +ASM)
(SID = +ASM1)
)
)
4.3 extract进程extbaby启动不成功,依然报错OGG-00446,但内容有区别 具体表现为启动后,还是运行一会儿后abended,具体报错如下:
2020-02-11 16:58:34 ERROR OGG-00446 Oracle GoldenGate Capture for Oracle, extbaby.prm: Could not find archived log for sequence 2157 thread 2 under default destinations SQL , error retrieving redo file name for sequence 2157, archived = 1, use_alternate = 0Not able to establish initial position for begin time 2020-02-11 16:33:22.000000.
2020-02-11 16:58:34 ERROR OGG-01668 Oracle GoldenGate Capture for Oracle, extbaby.prm: PROCESS ABENDING.
这里是因为实例2一直处于关闭状态,且历史归档文件已经不存在:
sys@DEMO> set lines 180
sys@DEMO> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- ------------ -------------------
1 1 859 52428800 512 1 YES INACTIVE 32719197 2020-02-11 07:00:52 32755401 2020-02-11 17:00:53
2 1 860 52428800 512 1 NO CURRENT 32755401 2020-02-11 17:00:53 2.8147E+14
3 2 2157 52428800 512 2 YES INACTIVE 31139538 2020-01-15 11:31:48 31139543 2020-01-15 11:31:49
4 2 2156 52428800 512 2 YES INACTIVE 31115572 2020-01-15 11:29:39 31139538 2020-01-15 11:31:48
--实例2目前没有启动,且对应sequence 2157 thread 2的归档日志已经不存在:
RMAN> list archivelog sequence 2157 thread 2;
using target database control file instead of recovery catalog
specification does not match any archived log in the repository
RMAN> list archivelog sequence 859 thread 1;
List of Archived Log Copies for database with db_unique_name DEMO
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - -------------------
262 1 859 A 2020-02-11 07:00:52
Name: +FRA/demo/archivelog/2020_02_11/thread_1_seq_859.421.1032109253
--尝试临时启动实例2
2020-02-11 17:15:25 ERROR OGG-00446 Oracle GoldenGate Capture for Oracle, extbaby.prm: Could not find archived log for sequence 2157 thread 2 under default destinations SQL , error retrieving redo file name for sequence 2157, archived = 1, use_alternate = 0Not able to establish initial position for begin time 2020-02-11 16:33:22.000000.
2020-02-11 17:15:25 ERROR OGG-01668 Oracle GoldenGate Capture for Oracle, extbaby.prm: PROCESS ABENDING.
--切换日志后,再启动ogg进程:
sys@DEMO> alter system archive log current;
System altered.
sys@DEMO> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- ------------ -------------------
1 1 861 52428800 512 1 NO CURRENT 32759599 2020-02-11 17:17:18 2.8147E+14
2 1 860 52428800 512 1 YES INACTIVE 32755401 2020-02-11 17:00:53 32759599 2020-02-11 17:17:18
3 2 2159 52428800 512 2 NO CURRENT 32759603 2020-02-11 17:17:18 2.8147E+14
4 2 2158 52428800 512 2 YES INACTIVE 32756440 2020-02-11 17:12:36 32759603 2020-02-11 17:17:18
GGSCI (jystdrac1) 1> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DPBABY 00:00:00 00:00:02
EXTRACT STOPPED EXTBABY 00:00:00 00:44:42
GGSCI (jystdrac1) 2> start ext*
Sending START request to MANAGER ...
EXTRACT EXTBABY starting
GGSCI (jystdrac1) 3> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DPBABY 00:00:00 00:00:00
EXTRACT RUNNING EXTBABY 00:00:00 00:44:50
--依然报错:sequence 2157 thread 2
2020-02-11 17:19:31 ERROR OGG-00446 Oracle GoldenGate Capture for Oracle, extbaby.prm: Could not find archived log for sequence 2157 thread 2 under default destinations SQL , error retrieving redo file name for sequence 2157, archived = 1, use_alternate = 0Not able to establish initial position for begin time 2020-02-11 16:33:22.000000.
2020-02-11 17:19:31 ERROR OGG-01668 Oracle GoldenGate Capture for Oracle, extbaby.prm: PROCESS ABENDING.
只启动实例+切换日志不行?那考虑停止所有进程和MGR,删除检查点信息,重新添加:
[oracle@jystdrac1 ggs]$ cd dirchk/
[oracle@jystdrac1 dirchk]$ ls
DPBABY.cpe EXTBABY.cpb EXTBABY.cpe
[oracle@jystdrac1 dirchk]$ rm *
[oracle@jystdrac1 dirchk]$ ls
[oracle@jystdrac1 dirchk]$ pwd
/data/ggs/dirchk
[oracle@jystdrac1 dirchk]$ cd /data/ggs
[oracle@jystdrac1 ggs]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 12.2.0.2.2 OGGCORE_12.2.0.2.0_PLATFORMS_170630.0419_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Jun 30 2017 14:42:26
Operating system character set identified as UTF-8.
Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
GGSCI (jystdrac1) 1> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER STOPPED
GGSCI (jystdrac1) 2> start mgr
Manager started.
GGSCI (jystdrac1) 3> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
GGSCI (jystdrac1) 4> view param extbaby
--Local Extract extbaby
--Author: Alfred Zhao
--
EXTRACT extbaby
SETENV(NLS_LANG=american_america.ZHS16GBK)
SETENV(ORACLE_SID=demo1)
USERID ggs_admin, PASSWORD ggs_admin
TRANLOGOPTIONS ASMUSER sys@ASM,ASMPASSWORD oracle
EXTTRAIL ./dirdat/st
TABLE TEST.T_BABY;
GGSCI (jystdrac1) 5> view param dpbaby
--Local datapump dpbaby
--Author: Alfred Zhao
--
EXTRACT dpbaby
PASSTHRU
RMTHOST 192.168.1.11, MGRPORT 7809
RMTTRAIL ./dirdat/tt
TABLE TEST.T_BABY;
GGSCI (jystdrac1) 6> add extract extbaby, tranlog, begin now, threads 2
add exttrail ./dirdat/st, extract extbaby, megabytes 50EXTRACT added.
GGSCI (jystdrac1) 7>
EXTTRAIL added.
GGSCI (jystdrac1) 8> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED EXTBABY 00:00:00 00:00:03
GGSCI (jystdrac1) 9> add extract dpbaby, exttrailsource ./dirdat/st, begin now
add rmttrail ./dirdat/tt, EXTRACT dpbaby, MEGABYTES 50EXTRACT added.
GGSCI (jystdrac1) 10>
RMTTRAIL added.
GGSCI (jystdrac1) 11> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED DPBABY 00:00:00 00:00:02
EXTRACT STOPPED EXTBABY 00:00:00 00:00:10
GGSCI (jystdrac1) 12> start *
Sending START request to MANAGER ...
EXTRACT DPBABY starting
Sending START request to MANAGER ...
EXTRACT EXTBABY starting
GGSCI (jystdrac1) 13> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DPBABY 00:00:00 00:00:20
EXTRACT RUNNING EXTBABY 00:00:01 00:00:00
GGSCI (jystdrac1) 14> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DPBABY 00:00:00 00:00:07
EXTRACT RUNNING EXTBABY 00:00:00 00:00:00
GGSCI (jystdrac1) 15> info extbaby
EXTRACT EXTBABY Last Started 2020-02-11 17:24 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:06 ago)
Process ID 7702
Log Read Checkpoint Oracle Redo Logs
2020-02-11 17:25:08 Thread 1, Seqno 861, RBA 282624
SCN 0.32760678 (32760678)
Log Read Checkpoint Oracle Redo Logs
2020-02-11 17:25:10 Thread 2, Seqno 2159, RBA 260096
SCN 0.32760681 (32760681)
GGSCI (jystdrac1) 16>
正常不再报错后,关闭实例2不会影响OGG同步(因为我测试环境节点2有其他测试需要,所以这里关闭节点2的oracle实例)。
4.4 测试源端DML操作,目标端REPBABY进程abended,报错OGG-00869、ORA-01841 测试源端DML操作,目标端REPBABY进程abended:
--target - ogg - log:
2020-02-11 17:56:03 INFO OGG-03522 Oracle GoldenGate Delivery for Oracle, repbaby.prm: Setting session time zone to source database time zone 'GMT'.
2020-02-11 17:56:05 WARNING OGG-02760 Oracle GoldenGate Delivery for Oracle, repbaby.prm: ASSUMETARGETDEFS is ignored because trail file ./dirdat/tt000000000 contains table definitions.
2020-02-11 17:56:05 INFO OGG-03506 Oracle GoldenGate Delivery for Oracle, repbaby.prm: The source database character set, as determined from the trail file, is zhs16gbk.
2020-02-11 17:56:05 INFO OGG-06506 Oracle GoldenGate Delivery for Oracle, repbaby.prm: Wildcard MAP resolved (entry test.*): Map "TEST"."T_BABY",Target test."T_BABY".
2020-02-11 17:56:07 INFO OGG-02756 Oracle GoldenGate Delivery for Oracle, repbaby.prm: The definition for table TEST.T_BABY is obtained from the trail file.
2020-02-11 17:56:07 INFO OGG-06511 Oracle GoldenGate Delivery for Oracle, repbaby.prm: Using following columns in default map by name: ID, FEED_TIME, LABEL.
2020-02-11 17:56:07 INFO OGG-06510 Oracle GoldenGate Delivery for Oracle, repbaby.prm: Using the following key columns for target table TEST.T_BABY: ID.
2020-02-11 17:56:07 INFO OGG-03010 Oracle GoldenGate Delivery for Oracle, repbaby.prm: Performing implicit conversion of column data from character set zhs16gbk to we8mswin1252.
2020-02-11 17:56:07 WARNING OGG-00869 Oracle GoldenGate Delivery for Oracle, repbaby.prm: OCI Error ORA-01841: (full) year must be between -4713 and +9999, and not be 0 (status = 1841), SQL .
2020-02-11 17:56:07 WARNING OGG-01004 Oracle GoldenGate Delivery for Oracle, repbaby.prm: Aborted grouped transaction on 'TEST.T_BABY', Database error 1841 (OCI Error ORA-01841: (full) year must be between -4713 and +9999, and not be 0 (status = 1841), SQL ).
2020-02-11 17:56:07 WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle, repbaby.prm: Repositioning to rba 1882 in seqno 0.
2020-02-11 17:56:07 WARNING OGG-01154 Oracle GoldenGate Delivery for Oracle, repbaby.prm: SQL error 1841 mapping TEST.T_BABY to TEST.T_BABY OCI Error ORA-01841: (full) year must be between -4713 and +9999, and not be 0 (status = 1841), SQL .
2020-02-11 17:56:07 ERROR OGG-01296 Oracle GoldenGate Delivery for Oracle, repbaby.prm: Error mapping from TEST.T_BABY to TEST.T_BABY.
2020-02-11 17:56:07 ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle, repbaby.prm: PROCESS ABENDING.
2020-02-11 17:57:09 INFO OGG-00987 Oracle GoldenGate Command Interpreter for Oracle: GGSCI command (oracle): info all.
开始尝试根据字符集设置变量,无效,最终采用修改目标端字符集的方式(这个目标端没有其他业务,所以可以修改字符集)
--开始尝试根据字符集设置变量,无效:
--setenv (NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252)
--修改字符集:
alter database character set zhs16gbk;
alter database character set internal_use zhs16gbk;
--修改目标端字符集实际步骤:
shutdown immediate;
startup mount exclusive
alter system enable restricted session;
alter database open;
alter database character set internal_use zhs16gbk;
select userenv('language') from dual;
再次启动目标端replicat进程repbaby成功,且正常同步:
[oracle@OEL-ASM ggs]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 12.2.0.2.2 OGGCORE_12.2.0.2.0_PLATFORMS_170630.0419_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Jun 30 2017 14:42:26
Operating system character set identified as UTF-8.
Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
GGSCI (OEL-ASM) 1> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REPBABY 00:00:00 00:00:02
GGSCI (OEL-ASM) 2> info repbaby
REPLICAT REPBABY Last Started 2020-02-12 07:27 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:06 ago)
Process ID 9260
Log Read Checkpoint File ./dirdat/tt000000000
2020-02-12 07:12:13.691544 RBA 2664
GGSCI (OEL-ASM) 3> stats rep repbaby
Sending STATS request to REPLICAT REPBABY ...
Start of Statistics at 2020-02-12 07:30:56.
Replicating from TEST.T_BABY to TEST.T_BABY:
*** Total statistics since 2020-02-12 07:27:40 ***
Total inserts 4.00
Total updates 0.00
Total deletes 1.00
Total discards 0.00
Total operations 5.00
*** Daily statistics since 2020-02-12 07:27:40 ***
Total inserts 4.00
Total updates 0.00
Total deletes 1.00
Total discards 0.00
Total operations 5.00
*** Hourly statistics since 2020-02-12 07:27:40 ***
Total inserts 4.00
Total updates 0.00
Total deletes 1.00
Total discards 0.00
Total operations 5.00
*** Latest statistics since 2020-02-12 07:27:40 ***
Total inserts 4.00
Total updates 0.00
Total deletes 1.00
Total discards 0.00
Total operations 5.00
End of Statistics.
GGSCI (OEL-ASM) 4>
至此,OGG实验:数据表通过OGG配置同步已完成。
你可能感兴趣的:(OGG实验:喂奶间隔数据表通过OGG配置同步)
Seata-Server配置文件详解
驜鸈
linux运维服务器
seata-server配置文件详解registry.conf有registry{}和config{}两个配置registry{}配置server的注册中心,配置zk为注册中心时,server注册的节点为/registry/default/config{}配置server的配置中心,一般默认的file。file配置的文件为file.conffile.conf主要配置项是配置存储方式有db,redi
SpringBoot整合DeepSeek技术指南(2025版)
hjy1821
AI人工智能
SpringBoot整合DeepSeek技术指南(2025版)环境准备com.deepseekdeepseek-java-sdk2.5.0org.springframework.bootspring-boot-starter-webflux配置中心设置#application.ymldeepseek:api:base-url:https://api.deepseek.com/v2token:${D
使用 Rust 实现验证码识别
ttocr.com
rust开发语言后端
步骤安装TesseractOCR引擎首先,您需要安装TesseractOCR引擎。可以参考以下的安装方法:Linux:bashsudoapt-getinstalltesseract-ocrmacOS:bashbrewinstalltesseractWindows:请参考TesseractWindows安装指南。创建Rust项目如果您还没有Rust项目,可以通过以下命令创建一个新的项目:bashca
C 语言经典练习题:从基础到算法的实战演练
Aphelios380
C语言c语言算法开发语言
在学习C语言的过程中,通过实际的练习题来巩固知识是非常有效的方法。下面我将分享一些C语言的经典练习题,涵盖了登录验证、函数递归、数据查找与排序等多个方面,希望能对正在学习C语言的小伙伴们有所帮助。练习题1:连续登录3次,锁定账号题目描述实现一个简单的登录验证系统,用户有3次尝试登录的机会,如果连续3次输入的用户名或密码错误,则锁定账号。代码实现#define_CRT_SECURE_NO_WARNI
用Rust破解极验验证码
2401_85453501
rust开发语言后端
极验验证码是一种广泛应用的滑动验证码系统,通过分析其加密和验证机制,我们可以模拟滑动操作并破解验证码。本文将详细介绍如何在Rust语言环境下实现这一过程。一、观察verify请求首先,我们需要观察verify请求的来源。在浏览器开发者工具中查看verify请求的发起者,可以发现它来自于gcaptcha4.js文件。由于该文件经过混淆处理,我们需要对其进行还原和分析。二、AST还原混淆代码为了便于调
Android Binder 用法详解
令狐掌门
Android开发笔记androidbinderAndroidBinder
Binder是Android系统中的一种进程间通信(IPC)机制,它允许不同进程之间进行高效通信。Binder在Android系统中被广泛使用,例如在Activity与Service的交互中。Binder的基本组成实现Binder通信通常包含以下几个关键部分:AIDL接口定义:通过AndroidInterfaceDefinitionLanguage定义接口服务端实现:实现AIDL接口并在Servi
win10 安装WSL ubuntu20、配置git问题及解决记录
YANGM
gitubuntulinux
1WslRegisterDistributionfailedwitherror:0x800701bc问题问题现象如下图:处理方式有两种:1)切换使用WSL1,在windows命令输入wsl命令:wsl--set-default-version12)安装新内核,内核没有升级,前往微软WSL官网下载安装适用于x64计算机的最新WSL2Linux内核更新包即可。下载链接:https://wslstore
linux实战小笔记(十五)Centos7下静默安装Oracle 11g(无图形化界面)
时间与思念
linux笔记oracle
7.配置oracle用户环境变量==================在文件/home/oracle/.bash_profile里添加下面内容(具体值根据实际情况修改)umask022exportORACLE_HOSTNAME=oracledbexportORACLE_BASE=/data/app/oracleexportORACLE_HOME=$ORACLE_BASE/product/11.2.0
vue项目中使用scss
筱筱°
#scssvue.jsscss
vue项目中使用scss一、安装使用scss1.安装scss2.安装node-sass和sass-loader3.配置webpack.base.conf.js文件4.组件中使用scss二、设置scss变量1.使用sass-resources-loader实现全局变量2.新建一个public.scss文件3.根目录下找到build下的utils.js文件4.运行项目三、常用全局变量1.设置变量2.使
React入门简介
地信小学生
WebGIS一起学react.js前端前端框架javascript
Vue与React是前端编程中常用的两个JS框架,两者的一些简单如下所示。Vue建立在一个基于组件的架构上,以组件为中心,可以更轻松地创建动态用户界面。它还有一个强大的双向数据绑定系统,可以让我们轻松地保持数据和用户界面同步;Vue轻量、灵活且强大,最重要的是对于初学者来说相对简单。Vue中文官网包含了详细的说明与教程:https://cn.vuejs.org/React为开发人员提供了一种声明式
go mysql 中间件_GitHub - wushilong/go-sharding: Mysql 分库分表中间件
网络安全技术联盟
gomysql中间件
Go-Sharding简介数据库分库分表中间件,尽可能兼容ShardingSphere的golang实现,基于小米Gaea魔改,但是路由算法支持ShardingSphere的inline表达式风格,而不是Mycat/kingshard这类晦涩而又不灵活的配置,移除多租户功能(配置太复杂了,部署多套即可)为什么造这个轮子尝试了ShardingSphereProxy,其有着糟糕的insert性能和CP
java excel 导入 加校验_Java通过POI为Excel添加数据验证
夏至未至
javaexcel导入加校验
Stringpath="d:\\success.xlsx";StringsheetName="sheetlist";XSSFWorkbookwb=null;XSSFSheetsheetlist=null;FileinputFile=newFile(path);if(inputFile.exists()){wb=newXSSFWorkbook(newFileInputStream(path));}e
超详细的docker以及docker-compose的部署教程
沉默的良
dockerdockerjava
目录一、docker安装1.准备工作2.安装docker3.设置国内镜像2.docker-compose安装1.准备工作2.通过curl命令下载(不建议)3.手动安装(强烈建议)3.docker常用命令一、docker安装1.准备工作(1)一台Linux服务器,如果使用的是CentOS系统,请确保内核要不低于3.10。以下的演示环境皆为CentOS7.6。(2)安装之前,请执行下面的命令卸载旧的d
JAVA多线程详解(超详细)
m0_74823434
面试学习路线阿里巴巴资料职业发展javapython开发语言后端
目录一、线程简介1、进程、线程2、并发、并行、串行3、进程的三态二、线程实现1、继承Thread类2、实现Runnable接口3、实现Callable接口(不常用)三、线程常用方法1、线程的状态2、线程常用方法四、多线程1、守护(Deamon)线程2、多线程并发与同步3、死锁4、Lock(锁)5、线程协作6、线程池一、线程简介1、进程、线程程序:开发写的代码称之为程序。程序就是一堆代码,一组数据和
使用react-native-vector-icons
孟宪磊mxl
reactnativereact.jsjavascript
ReactNativeVectorIcons是一个在GitHub上非常受欢迎的ReactNative图标库。它提供了许多常见的图标集,如FontAwesome和Ionicons等。使用这个库可以简化在ReactNative项目中使用图标的过程。一、安装npminstallreact-native-vector-icons二、配置环境(android)1.打开android/app/build.gr
ubuntu 环境变量配置总结
m0_70082703
Android经验分享面试
注:~在LINUX下面是代表HOME这个变量的。另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是~/.bash_profile;~/.bash_login或~/.profile其中的一种或几种,如果存在几种的话,那么执行的顺序便是:~/.bash_profile、~/.bash_login、~/.profile。比如我用的是Ubuntu,我的用户文件夹下默认的就只有~/.profil
图数据库Neo4j面试内容整理-Cypher 查询优化
不务正业的猿
面试Neo4j数据库neo4j面试职场和发展图数据库
Cypher查询优化是在Neo4j中提高查询性能的关键部分。Cypher是Neo4j的查询语言,允许我们通过图的结构进行高效的数据检索。然而,随着数据量的增大和查询复杂度的提高,查询性能可能会变差。为了优化Cypher查询,我们可以使用多种策略,包括合理设计查询、利用索引和约束、避免不必要的查询操作等。以下是一些Cypher查询优化的最佳实践和策略:1.使用索引(Index)
golang分布式中间件之MySQL
SMILY12138
mysqlgolang分布式
MySQL是广泛应用于Web应用程序和其他分布式系统中的关系型数据库管理系统(RDBMS)。在golang分布式中间件领域,MySQL作为一种常用工具,被广泛使用。本文将深度探讨MySQL在golang分布式系统中的应用,包括MySQL的基础知识、MySQL在golang中的使用方法、MySQL的主从复制以及MySQL在分布式系统中的应用场景。一、MySQL基础知识MySQL的安装与配置MySQL
linux iostat 命令详解
夜光小兔纸
Linuxlinux运维服务器
iostat主要用于监控系统设备的IO负载情况,iostat提供了丰富的参数给我们查询各种维度的io数据,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。一、命令相关参数命令使用:iostat[-c][-d][-N][-n][-h][-k|-m][-t][-V][-x][-y][
Redhat 系统修改主机名 hostname
夜光小兔纸
Linuxlinux
临时修改主机名方法如下:#hostnamenewname//将newname替换为想要的主机名如:#hostnametest01//将主机名修改为test01永久修改主机名(说明:不同的系统修改主机名称的方式不尽相同,这里以Redhat系统为例。)1.系统安装完成后通过hostname命令查看当前系统默认的主机名称#hostname2.修改文件/etc/sysconfig/networkvi/et
mac idea配置了八百次maven都不成功,mac source不生效 source ~/.bash_profile
Alisa_wu666
ideamavensourcemaven
终端输入open~/.bash_profile,检查内容:exportPATH=/usr/bin:/usr/sbin:/bin:/sbinexportJAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/HomeexportM2_HOME=/Users/nanwu/mooc/apache-maven-3.5.3e
React Native 新架构,前端开发框架
2401_83974173
2024年程序员学习reactnative架构react.js
JSthread会先对其序列化,形成下面一条消息UIManager.createView([343,“RCTView”,31,{“backgroundColor”:-16181,“width”:200,“height”:200}])通过Bridge发到ShadowThread。ShadowTread接收到这条信息后,先反序列化,形成Shadowtree,然后传给Yoga,形成原生布局信息。接着又通
docker-compose部署开源堡垒机Orion-Visor——筑梦之路
筑梦之路
linux系统运维docker容器运维
gitclone--depth=1https://github.com/dromara/orion-visorcdorion-visordockercomposepull#配置,此处我保持默认cp.env.example.env#启动进行数据库初始化dockercomposeup-d#访问http://[ip]:8081进行登陆Adminer#依次导入这些初始化sqlorion-visor/sql
HTNN 如何斟酌出更好的插件扩展机制
开源后端python
HTNN如何斟酌出更好的插件扩展机制在设计插件扩展机制时,HTNN关注两点:扩展性尽可能强。扩展能力是插件的根基。如果一个插件机制一无所长、处处碰壁,那么其他能力再好也拯救不了它。开发效率尽可能高。大部分功能都是通过插件来实现的,所以插件机制的开发效率越高,整体的功能迭代速度就越快。GitHub:https://github.com/mosn/htnnFilterPolicyCRD绝大部分应用网络
linux桌面qt应用程序UI自动化实现之dogtail
测试盐
python自动化python
1.前言Dogtail适用于Linux系统上进行GUI自动化测试,利用Accessibility技术与桌面程序通信;Dogtail包含一个名为sniff的组件,这是一个嗅探器,用于GUI程序追踪;源码下载:dogtail·PyPI可通过sudopythonsetup.pyinstall安装或sudopipinstalldogtail安装,但是有用户反馈pip安装不能使用sniff命令,自己选择。还
python定义字典
Ai...空白
Python
python定义字典定义字典如果字典中同一个键被复制多次,最后一次的赋值被记住。通过字典的键或对应的值len(),获取字典长度(键值对的个数)str(),将字典转换为字符串keys(),获取字典中的所有键,可以结合list()函数,将字典中的键转换为列表将两个列表中值,一个作为键,一个作为值,添加到字典中需要使用zip()函数,和dict()函数实现将list1中的值作为键,list2中的值做值添
这些部署方式你知道么:灰度发布、蓝绿部署与金丝雀部署
提前退休了-程序员阿飞
架构分布式微服务java
灰度发布、蓝绿部署与金丝雀部署:核心概念与实战选型指南在软件交付过程中,如何安全、高效地将新版本发布到生产环境一直是开发团队的核心挑战。灰度发布、蓝绿部署和金丝雀部署是三种主流的渐进式发布策略,它们通过不同的方式降低发布风险。本文将深入解析它们的原理、优缺点及适用场景。一、核心概念与原理1.灰度发布(GrayRelease)定义:灰度发布是一种渐进式发布策略,将新版本逐步推送给特定用户群体(如10
python 基础命令-详解python常用命令行选项与环境变量
weixin_37988176
一、命令行选项1.解释器选项python的解释器非常像unix的shell,在我们使用python的过程中,我们可以指定很多的选项。比如,最常用的选项如下:pythonscript.py在非交互的模式中,整个输入选项在代码执行前被执行。所有的命令行选项可以通过sys.argv来获取。Note:sys.argv的第一个参数sys.argv[0]表程序的源文件。1.python-c在命令行中执行pyt
分布式与微服务区别?
明天更新
面试题SpringCloudAlibaba分布式微服务架构
1、概念角度:分布式:把多个应用部署到多台服务器(云)上,多个应用之间相互协作,提高系统的扩展性和稳定性。微服务:是分布式的一种实现方式。2、粒度划分:分布式:服务划分粒度可大可小,服务之间的耦合度不如微服务极致。微服务:粒度划分更小,专注业务进行划分(可以将某个接口作为一个应用,例如:下单)3、目标:分布式:注重解决存储和扩展问题,通过负载均衡提升系统的稳定性。微服务:简化开发流程,迭代频次更高
构建会议发布页鸿蒙示例代码
本文原创发布在华为开发者社区。介绍本示例是使用ArkTS编写的会议发布UI页面,该页面提供了会议内容和人员的填写功能,方便开发者后续进行进一步开发。构建会议发布页源码链接效果预览使用说明打开页面,展示会议发布页面,用户可以根据需求填入信息。实现思路该页面通过DatePickerDialog实现日期选择功能。DatePickerDialog.show({selected:newDate(this.m
设计模式介绍
tntxia
设计模式
设计模式来源于土木工程师 克里斯托弗 亚历山大(http://en.wikipedia.org/wiki/Christopher_Alexander)的早期作品。他经常发表一些作品,内容是总结他在解决设计问题方面的经验,以及这些知识与城市和建筑模式之间有何关联。有一天,亚历山大突然发现,重复使用这些模式可以让某些设计构造取得我们期望的最佳效果。
亚历山大与萨拉-石川佳纯和穆雷 西乐弗斯坦合作
android高级组件使用(一)
百合不是茶
androidRatingBarSpinner
1、自动完成文本框(AutoCompleteTextView)
AutoCompleteTextView从EditText派生出来,实际上也是一个文本编辑框,但它比普通编辑框多一个功能:当用户输入一个字符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个菜单项之后,AutoCompleteTextView按用户选择自动填写该文本框。
使用AutoCompleteTex
[网络与通讯]路由器市场大有潜力可挖掘
comsci
网络
如果国内的电子厂商和计算机设备厂商觉得手机市场已经有点饱和了,那么可以考虑一下交换机和路由器市场的进入问题.....
这方面的技术和知识,目前处在一个开放型的状态,有利于各类小型电子企业进入
&nbs
自写简单Redis内存统计shell
商人shang
Linux shell统计Redis内存
#!/bin/bash
address="192.168.150.128:6666,192.168.150.128:6666"
hosts=(${address//,/ })
sfile="staticts.log"
for hostitem in ${hosts[@]}
do
ipport=(${hostitem
单例模式(饿汉 vs懒汉)
oloz
单例模式
package 单例模式;
/*
* 应用场景:保证在整个应用之中某个对象的实例只有一个
* 单例模式种的《 懒汉模式》
* */
public class Singleton {
//01 将构造方法私有化,外界就无法用new Singleton()的方式获得实例
private Singleton(){};
//02 申明类得唯一实例
priva
springMvc json支持
杨白白
json springmvc
1.Spring mvc处理json需要使用jackson的类库,因此需要先引入jackson包
2在spring mvc中解析输入为json格式的数据:使用@RequestBody来设置输入
@RequestMapping("helloJson")
public @ResponseBody
JsonTest helloJson() {
android播放,掃描添加本地音頻文件
小桔子
最近幾乎沒有什麽事情,繼續鼓搗我的小東西。想在項目中加入一個簡易的音樂播放器功能,就像華為p6桌面上那麼大小的音樂播放器。用過天天動聽或者QQ音樂播放器的人都知道,可已通過本地掃描添加歌曲。不知道他們是怎麼實現的,我覺得應該掃描設備上的所有文件,過濾出音頻文件,每個文件實例化為一個實體,記錄文件名、路徑、歌手、類型、大小等信息。具體算法思想,
oracle常用命令
aichenglong
oracledba常用命令
1 创建临时表空间
create temporary tablespace user_temp
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local
25个Eclipse插件
AILIKES
eclipse插件
提高代码质量的插件1. FindBugsFindBugs可以帮你找到Java代码中的bug,它使用Lesser GNU Public License的自由软件许可。2. CheckstyleCheckstyle插件可以集成到Eclipse IDE中去,能确保Java代码遵循标准代码样式。3. ECLemmaECLemma是一款拥有Eclipse Public License许可的免费工具,它提供了
Spring MVC拦截器+注解方式实现防止表单重复提交
baalwolf
spring mvc
原理:在新建页面中Session保存token随机码,当保存时验证,通过后删除,当再次点击保存时由于服务器端的Session中已经不存在了,所有无法验证通过。
1.新建注解:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
《Javascript高级程序设计(第3版)》闭包理解
bijian1013
JavaScript
“闭包是指有权访问另一个函数作用域中的变量的函数。”--《Javascript高级程序设计(第3版)》
看以下代码:
<script type="text/javascript">
function outer() {
var i = 10;
return f
AngularJS Module类的方法
bijian1013
JavaScriptAngularJSModule
AngularJS中的Module类负责定义应用如何启动,它还可以通过声明的方式定义应用中的各个片段。我们来看看它是如何实现这些功能的。
一.Main方法在哪里
如果你是从Java或者Python编程语言转过来的,那么你可能很想知道AngularJS里面的main方法在哪里?这个把所
[Maven学习笔记七]Maven插件和目标
bit1129
maven插件
插件(plugin)和目标(goal)
Maven,就其本质而言,是一个插件执行框架,Maven的每个目标的执行逻辑都是由插件来完成的,一个插件可以有1个或者几个目标,比如maven-compiler-plugin插件包含compile和testCompile,即maven-compiler-plugin提供了源代码编译和测试源代码编译的两个目标
使用插件和目标使得我们可以干预
【Hadoop八】Yarn的资源调度策略
bit1129
hadoop
1. Hadoop的三种调度策略
Hadoop提供了3中作业调用的策略,
FIFO Scheduler
Fair Scheduler
Capacity Scheduler
以上三种调度算法,在Hadoop MR1中就引入了,在Yarn中对它们进行了改进和完善.Fair和Capacity Scheduler用于多用户共享的资源调度
2. 多用户资源共享的调度
Nginx使用Linux内存加速静态文件访问
ronin47
Nginx是一个非常出色的静态资源web服务器。如果你嫌它还不够快,可以把放在磁盘中的文件,映射到内存中,减少高并发下的磁盘IO。
先做几个假设。nginx.conf中所配置站点的路径是/home/wwwroot/res,站点所对应文件原始存储路径:/opt/web/res
shell脚本非常简单,思路就是拷贝资源文件到内存中,然后在把网站的静态文件链接指向到内存中即可。具体如下:
关于Unity3D中的Shader的知识
brotherlamp
unityunity资料unity教程unity视频unity自学
首先先解释下Unity3D的Shader,Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的FX文件或者NVIDIA的CgFX有些类似。传统意义上的vertex shader和pixel shader还是使用标准的Cg/HLSL 编程语言编写的。因此Unity文档里面的Shader,都是指用ShaderLab编写的代码,然后我们来看下Unity3D自带的60多个S
CopyOnWriteArrayList vs ArrayList
bylijinnan
java
package com.ljn.base;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* 总述:
* 1.ArrayListi不是线程安全的,CopyO
内存中栈和堆的区别
chicony
内存
1、内存分配方面:
堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。
栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中
回答一位网友对Scala的提问
chenchao051
scalamap
本来准备在私信里直接回复了,但是发现不太方便,就简要回答在这里。 问题 写道 对于scala的简洁十分佩服,但又觉得比较晦涩,例如一例,Map("a" -> List(11,111)).flatMap(_._2),可否说下最后那个函数做了什么,真正在开发的时候也会如此简洁?谢谢
先回答一点,在实际使用中,Scala毫无疑问就是这么简单。
mysql 取每组前几条记录
daizj
mysql分组最大值最小值每组三条记录
一、对分组的记录取前N条记录:例如:取每组的前3条最大的记录 1.用子查询: SELECT * FROM tableName a WHERE 3> (SELECT COUNT(*) FROM tableName b WHERE b.id=a.id AND b.cnt>a. cnt) ORDER BY a.id,a.account DE
HTTP深入浅出 http请求
dcj3sjt126com
http
HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后We
判断MySQL记录是否存在方法比较
dcj3sjt126com
mysql
把数据写入到数据库的时,常常会碰到先要检测要插入的记录是否存在,然后决定是否要写入。
我这里总结了判断记录是否存在的常用方法:
sql语句: select count ( * ) from tablename;
然后读取count(*)的值判断记录是否存在。对于这种方法性能上有些浪费,我们只是想判断记录记录是否存在,没有必要全部都查出来。
对HTML XML的一点认识
e200702084
htmlxml
感谢http://www.w3school.com.cn提供的资料
HTML 文档中的每个成分都是一个节点。
节点
根据 DOM,HTML 文档中的每个成分都是一个节点。
DOM 是这样规定的:
整个文档是一个文档节点
每个 HTML 标签是一个元素节点
包含在 HTML 元素中的文本是文本节点
每一个 HTML 属性是一个属性节点
注释属于注释节点
Node 层次
jquery分页插件
genaiwei
jqueryWeb前端分页插件
//jquery页码控件// 创建一个闭包 (function($) { // 插件的定义 $.fn.pageTool = function(options) { var totalPa
Mybatis与Ibatis对照入门于学习
Josh_Persistence
mybatisibatis区别联系
一、为什么使用IBatis/Mybatis
对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate、JPA 这样的一站式对象 / 关系映射(O/R Mapping)解决方案盛行之前,iBaits 基本是持久层框架的不二选择。即使在持久层框架层出不穷的今天,iBatis 凭借着易学易用、
C中怎样合理决定使用那种整数类型?
秋风扫落叶
c数据类型
如果需要大数值(大于32767或小于32767), 使用long 型。 否则, 如果空间很重要 (如有大数组或很多结构), 使用 short 型。 除此之外, 就使用 int 型。 如果严格定义的溢出特征很重要而负值无关紧要, 或者你希望在操作二进制位和字节时避免符号扩展的问题, 请使用对应的无符号类型。 但是, 要注意在表达式中混用有符号和无符号值的情况。
&nbs
maven问题
zhb8015
maven问题
问题1:
Eclipse 中 新建maven项目 无法添加src/main/java 问题
eclipse创建maevn web项目,在选择maven_archetype_web原型后,默认只有src/main/resources这个Source Floder。
按照maven目录结构,添加src/main/ja
(二)androidpn-server tomcat版源码解析之--push消息处理
spjich
javaandrodipn推送
在 (一)androidpn-server tomcat版源码解析之--项目启动这篇中,已经描述了整个推送服务器的启动过程,并且把握到了消息的入口即XmppIoHandler这个类,今天我将继续往下分析下面的核心代码,主要分为3大块,链接创建,消息的发送,链接关闭。
先贴一段XmppIoHandler的部分代码
/**
* Invoked from an I/O proc
用js中的formData类型解决ajax提交表单时文件不能被serialize方法序列化的问题
中华好儿孙
JavaScriptAjaxWeb上传文件FormData
var formData = new FormData($("#inputFileForm")[0]);
$.ajax({
type:'post',
url:webRoot+"/electronicContractUrl/webapp/uploadfile",
data:formData,
async: false,
ca
mybatis常用jdbcType数据类型
ysj5125094
mybatismapperjdbcType
MyBatis 通过包含的jdbcType
类型
BIT FLOAT CHAR
按字母分类:
ABCDEFGHIJKLMNOPQRSTUVWXYZ其他
首页 -
关于我们 -
站内搜索 -
Sitemap -
侵权投诉
版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.