Jack Huang's Blog


  • 首页

  • 标签

  • 归档

  • 搜索

Oracle即时客户端连接方法

发表于 2023-01-10 | 更新于 2023-02-26

记录Oracle即时客户端连接Oracle服务器端的方法。

下载Oracle即时客户端

对应Oracle11数据库,下载如下Oracle即时客户端:

  • instantclient-basic-windows.x64-12.1.0.2.0.zip
  • instantclient-sqlplus-windows.x64-12.1.0.2.0.zip

将instantclient-basic和instantclient-sqlplus两个安装包放在同一个目录下,解压到同一个文件夹内。

修改系统变量

  • 将Oracle即时客户端的路径E:\Oracle\instantclient_12_1添加到系统环境变量PATH中。
  • 新增系统变量NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252 –>> 服务器端字符集
  • TNS_ADMIN=E:\Oracle\instantclient_12_1 –>> 指定tnsnames.ora所在位置

新建tnsnames.ora

在E:\Oracle\instantclient_12_1 下新建tnsnames.ora配置文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
orcl_service_name =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp)(HOST = localhost)(PORT = 1521)(QUEUESIZE = 100))
(CONNECT_DATA =
(SERVICE_NAME = bookstore.company.com)
)
)

orcl_sid =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = orcl)
)
)

用SQL*Plus登陆测试

Connect via SERVICE_NAME

sqlplus username/password@host:port/SERVICE_NAME

例如:

1
sqlplus admin/123456@192.168.1.11:1521/ORCL

Connect via SID

sqlplus username/password@host:port:SID,注意该方式在oracle instant client 12.1版本中没有验证通过,具体原因未知。

sqlplus system/password@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=192.168.0.49)(Port=1521))(CONNECT_DATA=(SID=ORCL)))

例如:

1
sqlplus admin/123456@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=192.168.0.49)(Port=1521))(CONNECT_DATA=(SID=ORCL)))

sqlplus命令

sqlplus登录后,使用如下sql命令查询相关信息:

  • 查看数据库名
1
SQL> select name from v$database;
  • 查询当前数据库实例名
1
SQL> select instance_name from v$instance;
  • 数据库中所有表
1
SQL> SELECT TABLE_NAME FROM DBA_TABLES;
  • 显示数据库对象结构
1
SQL> desc emp

使用node-oracledb连接数据库

连接字符串的网络服务名方法

1
2
3
4
5
6
7
8
9
10
const oracledb = require('oracledb');

const connection = await oracledb.getConnection(
{
user : "admin",
password : "123456",
connectStringForServiceName1 : "Ora11"
connectStringForServiceName2 : "192.168.0.49/ORCL",
}
);

对应的tnsnames.ora内容为:

1
2
3
4
5
6
7
8
Ora11 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.49)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)

连接字符串的网络服务标识方法

该方式可连接使用sid的oracle实例:

1
2
3
4
5
6
7
8
const connection = await oracledb.getConnection(
{
user : "admin",
password : "123456",
connectStringForSid1 : "Ora11",
connectStringForSid2 : "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=192.168.0.49)(Port=1521))(CONNECT_DATA=(SID=ORCL)))"
}
);

对应的tnsnames.ora内容为:

1
2
3
4
5
6
7
8
Ora11 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.49)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = ORCL)
)
)

oracledb读取Blob和Clob字段

请参考nodejs使用oracledb时,读取Blob和Clob字段遇到的问题。

参考链接

  1. 如何安装Oracle客户端(Oracle Instant Client),by whatday.
  2. Oracle Instant Client(即时客户端) 安装与配置,by 长烟慢慢.
  3. 使用 SQL *Plus 管理 Oracle 数据库,by Node.
  4. nodejs使用oracledb时,读取Blob和Clob字段遇到的问题,by 欢欢2776479680.
  5. CLOB data type,by oracle.
  6. Oracle的CLOB大数据字段类型,by Grand-Jon.

简明教学设计11讲读书笔记

发表于 2023-01-05 | 更新于 2023-11-14

教学法分类

  • 讲授法
  • 直导式
  • 指导发现式
  • 探究式

三大学习理论

  • 吸收理论
  • 行为理论
  • 认知理论

教学目标

布鲁姆教学目标分类:

  • 知道
  • 理解
  • 应用
  • 分析
  • 综合
  • 评价

学习内容分类:

  • 知识

分为事实性知识和概念性知识。事实性知识分为事实和程序,概念性知识分为概念和原理。

  • 技能

分为动作技能、认知技能、交互技能。

  • 情感

情感、态度和价值观。

教学过程设计

准备

  • 安心学习
  • 激发学习动机

输入

  • 抓住注意力
  • 激活旧知
  • 组织教学内容
  • 轻教学

加工

  • 以问题开始
  • 以对话维持
  • 以反思检视

输出

反思

参考链接

  1. 简明教学设计11讲,by 郑杰.

新版Chrome对JavaScript的Array.sort()不支持

发表于 2022-12-20

碰到一个JavaScript的Array.sort函数排序失败的奇怪问题,具体解决方案请参考新版Chrome对JavaScript的Array.sort()不支持。

参考链接

  1. 新版Chrome对JavaScript的Array.sort()不支持,by chrome.
  2. Array.prototype.sort(),by mozilla.

计算机安全的理论知识笔记

发表于 2022-12-20

计算机安全、网络安全(网络安全)或信息技术安全(IT 安全)是保护计算机系统和网络免受恶意行为者的攻击,这些攻击可能导致未经授权的信息泄露、盗窃或损坏硬件、软件或数据,以及他们提供的服务的中断或误导。

CIA三要素

保密性又称机密性,其与Integrity(完整性)和 Availability(可用性)并称为信息安全的CIA三要素。

信息安全三要素之间存在互相牵制的关系,例如:过度强化机密性时,将造成完整性与可用性的降低,需要高可用性的系统则会造成机密性与完整性的降低,因此在有限资源的前提下,在信息安全三要素中获取适当的平衡是信息安全管理层次结构的重要课题。

保密性

机密性(Confidentiality)确保资料传递与存储的隐密性,避免未经授权的用户有意或无意的揭露资料内容。

完整性

完整性是指在传输、存储信息或数据的过程中,确保信息或数据不被未授权的篡改或在篡改后能够被迅速发现。在信息安全领域使用过程中,常常和保密性混淆。通常使用数字签名、散列函数等手段保證數據完整性。

可用性

在信息安全领域,可用性(Availability)是成功的信息安全项目应具备的需求,意及当用户需透过信息系统进行操作时,资料与服务须保持可用状况(能用),并能满足使用需求(够用)。

认证、授权和记录

认证(Authentication)

识别信息用户的身份,可记录信息被谁所访问使用,例如:透过密码或证书方式验证用户身份。身份认证主要有三种方式:

  • 你所知道的(Something you know):账号/密码
  • 你所拥有的(Something you have):IC卡、数字设备、数字签名、一次性密码(OTP)
  • 你所具备的(Something you are):指纹、虹膜、声纹、脸部特征、静脉脉纹、DNA

授权(Authorization)

依照实际需求给予实体适当的权限,一般建议采最小权限(Least privilege),意即仅给予实际作业所需要的权限,避免过度授权可能造成的信息暴露或泄漏。

信息系统层面的实用访问控制方法分类如下:

  • 强制访问控制(Mandatory Access Control)
  • 自由选定访问控制(Discretionary Access Control)
  • 以角色为基础的访问控制(Role-Based Access Control)
  • 以规则为基础的访问控制(Rule-Based Access Control)

纪录(Accounting)

内容项目包含量测(Measuring)、监控(Monitoring)、报告(Reporting)与日志案(Logging),以便提供未来作为审核(Auditing)、计费(Billing)、分析(Analysis)与管理之用,主要精神在于收集用户与系统之间交互的资料,并留下轨迹纪录。

威胁建模

威胁建模是一个过程,通过该过程可以识别和列举潜在威胁,例如结构漏洞或缺乏适当的保护措施,并确定对策的优先级。威胁建模的目的是根据系统的性质、可能的攻击者概况、最可能的攻击向量以及攻击者最需要的资产,为防御者提供系统分析,说明需要包括哪些控制或防御措施攻击者。威胁建模回答诸如“我在哪里最容易受到攻击?”之类的问题,“最相关的威胁是什么?” ,以及“我需要做什么来防范这些威胁?”

参考链接

  1. Crash Course Computer Science,by Crash Course.
  2. Computer security,by wikipedia.
  3. 信息安全,by wikipedia.

金句摘抄

发表于 2022-12-16 | 更新于 2023-02-11

中国教材的最大问题,并不是知识点的讲解,而是缺乏得出结论的过程。

– 《为什么医学教材不好用?》

我不善于当众演讲,在人多的场合发言,我会紧张。但是后来,我发现听众真的不在乎,如果你讲得很糟糕,他们可能会发笑片刻,但很快就会忘记。

事实是我们放大了别人的想法。有人说的很对:我们在想象中比在现实中,遭受更多的痛苦。

– Hacker News 读者

参考链接

  1. GitHub 上这个「计算机科学」自学指南火了!,by 吴师兄.

软件行业的思考

发表于 2022-12-08

中国软件三十年:烟尘隐入,夹缝重生这篇文章对中国软件行业的历史、发展规律和现状认识比较深刻,因此摘抄一下:

中国软件的三大顽疾:一是企业数字化认识低,认为软件没用;二是定制化需求多且杂,「项目」导向而非「产品」导向;三是用户付费意愿和能力不足,软件公司难以积累利润投入研发。

大约是在2002年左右,雷军为了求证用户到底在意什么, 专门请了一家调查公司,在4个城市作了样本调查, 在4个城市作了用户专访, 最后结果让金山的工程师们很伤心:用户最在意的就是使用习惯,并不在意那些「创新」。

软件行业最终还是要靠「产品」说话。无论2C还是2B,软件好不好用,是用户选择最简单直接的一个标准。

参考链接

  1. 中国软件三十年:烟尘隐入,夹缝重生,by 饭统戴老板.

CPlusPlus之Socket网络编程

发表于 2022-12-07 | 更新于 2022-12-09

inet_pton和inet_ntop

这两个函数是随IPv6出现的函数,对于IPv4地址和IPv6地址都适用,函数中p和n分别代表表达(presentation)和数值(numeric)。地址的表达格式通常是ASCII字符串,数值格式则是存放到套接字地址结构的二进制值。

1
2
3
4
5
6
7
//将点分十进制的ip地址转化为用于网络传输的数值格式
//返回值:若成功则为1,若输入不是有效的表达式则为0,若出错则为-1
int inet_pton(int family, const char *strptr, void *addrptr);

//将数值格式转化为点分十进制的ip地址格式
//返回值:若成功则为指向结构的指针,若出错则为NULL
const char * inet_ntop(int family, const void *addrptr, char *strptr, size_t len);

参考链接

  1. C++高性能网络编程,by huangwang.
  2. inet_pton()和inet_ntop()函数详解,by QvQ是惊喜不是哭泣.
  3. 2021-07-07使用winsock2.h中函数还需要链接静态库ws2_32.lib,by 杨晴朗Solo.

游戏网络研究笔记

发表于 2022-11-14

游戏网络库

C / C++

  • ENet - 简单而强大的可靠 UDP 网络库。
  • GameNetworkingSockets - Valve 用于游戏的内部(Steam)网络传输层。
  • GGPO - 好游戏,Peace Out 回滚网络 SDK。
  • KCP - 一种快速可靠的 ARQ 协议。
  • RakNet - 功能齐全且成熟可靠的 UDP 网络引擎。
  • TNL2 -(非活动)扭矩网络库 2,与TRIBES 网络模型非常相似。
  • yojimbo - 用于具有专用服务器的客户端/服务器游戏的可靠 UDP 网络库。

参考链接

  1. Beginner’s Guide to Game Networking,by pvigier.
  2. GameNetworkingResources,by ThusSpokeNomad.
  3. Real Time Multiplayer in HTML5,by Sven Bergström.

Web打印方案

发表于 2022-10-31 | 更新于 2023-01-14

想在前端打印word文档,调研一下解决方案。

Vuejs解决方案

请参考记录超简单实现打印,window.print() 分页打印,vue element-ui window.print()打印。

print样式调试

请参考How do you debug printable CSS?。

打印页面样式设置

请参考css 打印print。

参考链接

  1. web打印,一篇搞定,by 俊劫​.
  2. window.print()打印样式不生效的问题,by 很远有多远.
  3. window.print() 前端页面打印与预览PDF,by 小何开发.
  4. window.print打印不全如何解决,by juejin.
  5. 关于@media print 的二三事..,by kakadodo.
  6. 记录超简单实现打印,window.print() 分页打印,vue element-ui window.print()打印,by 程序员李钟意.
  7. How do you debug printable CSS?,by stackoverflow.
  8. css 打印print,by 恬雅过客.

三分线构图方法

发表于 2022-10-28

参考链接

  1. 三分线构图,7种玩法,简单拍出美!,by 手机摄影构图大全.
  2. 常用的摄影构图之三分线,by 慢热氧气.
  3. 设计理论:如何使登录页更完美与高效?,by Lainey.
  4. ps制作设计网站登录界面,by 正在修炼web的小芮.
上一页1…131415…54下一页

Jack Huang

535 日志
69 标签
© 2026 Jack Huang
由 Hexo 强力驱动
|
主题 — NexT.Muse