win10安装Oracle连接PL/SQL

Oracle安装:

首先因为不想在官网注册,所以用了百度网盘来下载Oracle,下面是我找的连接:

http://pan.baidu.com/s/1hrvQyS8

需要下载的是oracle11grl-win64.iso和instantclient-basic-win-x86-64-11.1.0.7.0.zip(后一个我是别的地方下的,这个网盘的内容我下下来打开失败了

下载后解压,得到database文件夹:

进入文件夹,双击文件夹内的setup.exe开始安装:

目录路径不要含有中文或其它的特殊字符。全局数据库名字可以默认。需要记住的是数据库口令,也就是密码,密码输入时如果不按照Oracle建议的(也就是大小写字母加数字,8位以上)会有警告提示,当然这个不要紧,按自己的习惯来,密码简单一点也可以。我这里全局数据库名的下划线是不能有的,忘记重新截图了。当然这里创建启动数据库设置不设置问题不大,用于访问服务器数据库内容时不需要这些设置信息。

电子邮件可填可不填,我这边默认不填,直接下一步。

然后会碰到经常碰到的一些安装报错:

①正在检查操作系统要求…

要求的结果: 5.0,5.1,5.2,6.0,6.1 之一

实际结果: 6.2

检查完成。此次检查的总体结果为: 失败 <<<<

问题: Oracle Database 11g 未在当前操作系统中经过认证。

建议案: 确保在正确的平台上安装软件。

—————————————————————————————

需要修改oracle11g\stage\prereq\db\refhost.xml 文件,在原有内容后新增所需要的版本内容:

关闭重新安装后,到同样的页面显示:

详细解决方案http://blog.itpub.net/30260000/viewspace-1819714/

由于我win10没有Microsoft LoopBack Adapter这个网络适配器,所以百度上的方法一直没有配置网卡成功,也不知道具体怎么解决,所以就直接安装了。最后好像也没出什么问题,所以我很想知道win10的配置问题是怎么解决的,好多电脑甚至不会出现这个问题,一直下一步即可。

安装完成后,会列出相关数据库配置清单,最好保存一下,这里“口令管理”需要有需要的话也可以设置保存一下:

连接PL/SQL:
安装一个破解版的PLSQL Developer,过程比较简单,无脑操作即可:

然后安装instant oracle(可以去网上下载这个Instant Client):

在..\Oracle Client\Instant Client\network\admin目录下(缺少的文件夹自己新建)创建一个tnsnames.ora文件和sqlnet.ora文件。前者是ORACLE的配置文件,
客户机为了和服务器连接,必须先和服务器上的监听进程联络。ORACLE通过tnsnames.ora文件中的连接描述符来说明连接信息。一般tnsnames.ora 是建立在客户机上的。如果是客户机/服务器结构,整个网络上只有一台机器安装了ORACLE数据库服务器,那么只需在每个要访问ORACLE服务器的客户机上定义该文件,在服务器上无需定义。下面是tnsnames.ora的文件样式,主要要设置的就是数据库名(第一行)和HOST(IP地址)以及PORT(端口),对每一行不是很理解的也可以具体百度一下:

后内内容为

# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES = (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

接下来,我们需要配置一下PL/SQL Developer,先添加电脑的系统环境变量:

变量名为TNS_ADMIN,路径为上述两个.ora的目录。

打开PL/SQL Developer,首次无需登录,在菜单中找到“工具”->“首选项”,

主要是要手动添加一下两个目录,第一个是上述两个.ora的目录(同上),第二个是oci.dll的整个路径包括文件名,我这里是f:\plsql\instantclient-basic-nt-11.2.0.2.0\instantclient_11_2\oci.dll(就是一开始下载个那个压缩包解压后里面的一个oci.dll路径)

设置好这些后,重新打开PL/SQL就可以连接数据库啦:

Android使用讯飞实现语音转文本

Android Studio+讯飞实现语音转文本详细步骤

进入讯飞开放平台注册账号https://passport.xfyun.cn/register

注册完毕后登陆账号,点击右上角“控制台”选项,进入后创建一个应用:

创建完成后,点击右边的“SDK下载”:

添加自己想要的功能:

选择“语音听写”选项,当然如果你想要语音播报功能的话,可以一并下载“在线语音合成”:

选择SDK打包下载:

解压下载后的压缩包,将libs目录下的jar包放到Android Studio工程文件app/libs中:

由于本Demo中会用到json的东西,所以还得自己去网上下一个json的jar包,一并引进去(以及加入你在项目完善过程中所需要的jar包,我这里多余的是为了完成我除了语言转文本之外的功能):

这里需要注意的是!!你可以重新build一下gradle,但为了以防万一,可以现在gradle的配置文件中写明你添加的jar包以便编译:

改过后记得刷新一下:

之后在main目录下新建一个jniLibs目录,将 SDK中 libs 目录下的armeabi 拷进去,如下图所示:

讯飞为我们提供了一套语音听写时的UI,这个需要我们先将 SDK 资源包 assets 路径下的资源文件拷贝至 Android 工程asstes 目录下(没有的话自己新建,但是一般项目都是有的):

接下来开始添加代码,首先在AndroidManifest中添加一下权限(AndroidManifest在app/src/main目录下):

<!--连接网络权限,用于执行云端语音能力 -->
<uses-permission android:name="android.permission.INTERNET" />
<!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!--读取网络信息状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--获取当前wifi状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序改变网络连接状态 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<!--读取手机信息权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<!--SD卡读写的权限(如果需要保存音频文件到本地的话)-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

然后开始编写或者在原有的基础上更改你的MainActivity:

下面我放一个比较官方的Demo代码

package zhaoq_qiang.xunfeidemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn_click;
private EditText mResultText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_click = (Button) findViewById(R.id.btn_click);
mResultText = ((EditText) findViewById(R.id.result));
SpeechUtility.createUtility(this, SpeechConstant.APPID + "= 此处需要填写你所申请的appId");
btn_click.setOnClickListener(this);
}
@Override
public void onClick(View v) {
btnVoice();
}
//TODO 开始说话:
private void btnVoice() {
RecognizerDialog dialog = new RecognizerDialog(this,null);
dialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
dialog.setParameter(SpeechConstant.ACCENT, "mandarin");
dialog.setListener(new RecognizerDialogListener() {
@Override
public void onResult(RecognizerResult recognizerResult, boolean b) {
printResult(recognizerResult);
}
@Override
public void onError(SpeechError speechError) {
}
});
dialog.show();
Toast.makeText(this, "请开始说话", Toast.LENGTH_SHORT).show();
}
//回调结果:
private void printResult(RecognizerResult results) {
String text = parseIatResult(results.getResultString());
// 自动填写地址
mResultText.append(text);
}
public static String parseIatResult(String json) {
StringBuffer ret = new StringBuffer();
try {
JSONTokener tokener = new JSONTokener(json);
JSONObject joResult = new JSONObject(tokener);
JSONArray words = joResult.getJSONArray("ws");
for (int i = 0; i &lt; words.length(); i++) {
// 转写结果词,默认使用第一个结果
JSONArray items = words.getJSONObject(i).getJSONArray("cw");
JSONObject obj = items.getJSONObject(0);
ret.append(obj.getString("w"));
}
} catch (Exception e) {
e.printStackTrace();
}
return ret.toString();
}
}

 

最后大概就是这个样子的(我对按钮等做了改动,所以看上去会不一样,最基础的只要在activity_main.xml文件里设置一个按钮(Button)和一个文本框(TextView)即可):

Python turtle库入门学习笔记(一)

Python 海龟绘图——命令尝试

为了方便运用,可以先将引入的turtle命名为tu或者自己习惯的名字。

import turtle as tu

1、朝着画笔方向画直线——

tu.forward(距离)

2、转换画笔朝向(左转或者右转)——

tu.left(角度)/tu.right(角度)

3、朝着画笔反方向画直线——

tu.backward(距离)

4、抬起画笔,可移动但不绘制——

tu.penup()

5、放下画笔(默认开始是就是放下的)——

tu.pendown()

6、去指定的位置——

tu.goto(x,y)

7、指定去往x轴/y轴的位置——

tu.setx(数值)/tu.sety(数值)

8、画圆(半径的正负表示圆心在画笔的左右)——

tu.circle(半径)

9、直接设置画笔的角度(以水平向右为基准)——

tu.setheading(角度)

10、回归起始状态(画笔回到起点,朝向右)——

tu.home()

Linux虚拟机(Ubuntu)快速配置SSH

SSH登录虚拟机

1.安装SSH:

sudo apt-get install ssh

或者使用:sudo apt-get install openssh-client

2.启动服务:

sudo service ssh start

(停止服务:sudo service ssh stop)

(重启服务:sudo service ssh restart)

3.用SSH登录本机验证是否安装成功

博主可以说是两步搞定,如果出现的问题有提示,可以按照提示的输入,若是一直报错,那就只能再针对问题寻求答案喽。

CentOS安装gitlab快速教程

阿里云服务器搭建自己的gitlab(无具体解析)

先新建并配置一个文件

vim /etc/yum.repos.d/gitlab-ce.repo

i开始编辑,将一下文字复制进去,并按Esc回到一般模式,输入:wq保存并退出。

[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

安装依赖包

sudo yum install curl openssh-server openssh-clients postfix cronie

安装 GitLab 社区版

sudo yum install gitlab-ce

初始化

GitLab sudo gitlab-ctl reconfigure

然后你需要等待半个到一个小时(画面最后一个单词将会在run上停留很长的时间)

此时你已经安装完成,可以通过IP访问并修改账号密码啦。如需要汉化,开通邮件服务,配置地址等,再做具体的操作。

初入Ruby自学笔记(一)

Ruby入门——环境(Ruby、NetBeans)搭建

笔者听说Ruby是一种跨平台、面向对象的动态类型编程语言,十分注重均衡性和简练性,它不需要编译就可以直接运行,不需要申明变量,所有的东西都是对象,Ruby的语句甚至就像是我们说话一样,非常便于使用。

出于好奇,我开始了一个菜鸡的自学之旅程,下面我们来看一段简单易懂的代码——该实例摘自《Ruby完全自学手册》:

#Robot类
#可以说话的机器人
class Robot
#说话
def say(words)
puts words
end
#说你好!
def say_hello
say "你好!"
end
my_robot = Robot.new
my_robot.say_hello

这是我看到的一个例子,学过一到两门语言的孩子应该会觉得比较好理解,简单感受一下Ruby的便捷。

那么现在我们来安装一下Ruby的环境(当然你也可以根据自己的喜好下载不同的Ruby环境,这边主要是Ruby和NetBeans)

安装过程中的选项按照默认的来就OK,

安装成功即刻运行的界面如下,

明显,Java Platform(JDK)9与NetBeans with JDK 是不一样的,我们选择右边这个,然后根据自己的电脑选择相应的类型。

安装时自己选择安装位置,点击[下一步(N)>]将进入一段较长时间的安装过程:

安装成功进入后界面如下,

哈哈哈,环境装完了!可以开始你的基础练习咯!

Linux入门指令(三)

管道命令学习过程(未补全)

很多时候,我们将管道命令理解为能够将一个命令的执行结果经过筛选,最后保留我们想要的内容的命令,它只要就是使用“|”这个界定符,那么它到底有哪些具体的操作呢?下面简单讲一下我学习到的一些基础知识:

打个比方,我们在用ls查询某些信息时,信息量大到一屏幕都显示不下,这样会使得我们看不到前面的内容,这个时候就需要将信息筛选一下啦!这边主要罗列一些比较常用到的命令:

cut -d '分隔字符' -f fields

cut本身是一个按行处理信息的选取命令,可以通过cut –help来查看它的具体介绍,而上面那句指令的意思是,将查询到的结果按照单引号中的分隔字符切割并编号,最后显示-f后面数字所指向的那一块或者几块内容,演示如下:

从图中我们可以看到,test.txt文本中的内容是很长一段以逗号隔开的字母,我们按照逗号切割后取出第2部分,结果就是hdakhdkshdk。如果你想取出不止其中一截的话,-f 2,3即可(用逗号将你要获取的截数写明)。

cut -c 长度范围

这句话的意思是,在你输出或者输入数据时,可以规定每一行的字符长度,它可以是   5-   形式,也可以是   5-10   形式(数字代表了你自己想要的长度)。

grep '想要搜索的内容'

可以将内容中包含单引号的所有行输出:

grep  -v '不想要搜索的内容'

可以将内容中不包含单引号的所有行输出:

grep还可以配合着cut一起使用,读者可以自己尝试更多新的玩法^.^

 

Linux入门指令(二)

自主定义登录主机后信息的显示情况

一个小小的指令,编辑motd文档:

 vi /etc/motd

按    i    编辑,按    Esc    进入一般模式,    :wq    (冒号别漏了哦)保存并退出:

哈哈哈哈哈,超级简单的一个小操作!

Linux指令入门(一)

vim的块选择

这里要从vi先讲起,vi是所有Linux都会内置的文本编辑器,而vim则更像是一个vi的升级版,可以说是一个程序开发工具。

目前大部分的distributions都以vim来代替vi的功能,如果你在文本的编辑模式下,编辑一个文件时,出现的界面有以下特点:

1.会有彩色字 2.光标位置在右下角给出

那么你现在看到的就是vim形式啦,比如我随意打开的passwd.conf

.conf是一个配置文件,所以vim会进行语法的检验,就像你看到的图中以‘#’开头的蓝色文字内容,左下角的18L,568C说明这个文件有18行,568个字符。

接下来,我们来示范一下vim的块选择——给每一行后面都添加相同的内容,为了方便学习,可以先找一个地方创建一个文件夹——

mkdir XXX

(XXX为你的文件夹名称),再创建文件——

vim text.txt

,把顺手找的文字段先复制粘贴进去并保存,具体操作如下:

Ctrl+C

复制一段文字,按

i

进入编辑模式

Ctrl+V

粘贴进text.txt,如下图

然后,将光标移到你需要复制的内容的起点,按下

Ctrl+V

,并再次移动光标到你需要复制的内容的终点,并按下

y

定下你的复制内容(下图白色部分就是整块复制的内容):

此时,你已经把整个块复制下来,并且进入的一般模式(无法添加内容),按

i

再次进入编辑模式,找个空位(案例中是第一行最右边再空两格),然后

Esc

回到一般模式,按下

p

键后粘贴成功。

是不是感觉还蛮有意思的!

 

 

Android Studio之APP项目创建

AS新手入门(一)

在Android Studio下载安装完毕后,双击打开,此处需要注意的是,如果出现以下两个错误,可以这样处理:

  • unable to access android sdk add-on list

解决方法:在自己安装的目录下找到:bin\idea.properties用文本打开这个文件,在末尾添加一行disable.android.first.run=true

  • Your Android SDK is missing, out of date, or is missing templates. You can configure your SDK via Configure | Project Defaults | Project Structure | SDKs

解决方法:按以上选项打开Project Structure后填写你下载的SDK和JDK的路径(若是还没有下载,需要下载一下;若是版本未更新,用SDK Manager.exe更新一下)

如果你没有上述问题,就在开始界面选择“Start a new Android Studio project”

出现以下配置界面:

配置项目,确定各个名称和存放项目存放路径;                                    Application name:项目名称  Company Domain:公司域名                            Package name:app打包名称  project location:存放路径

接下来设定兼容的安卓的最小版本,这依情况而定,我这里设定为安卓4.0.3版本(如果不确定各个版本的区别,可以点击“help me choose”,在打开的窗口中介绍了各个安卓版本的功能)。

点击“Next”,初始化组件:

再次点击“Next”,进入选择项目的活动类型界面,这里有很多现成的模板可以使用,新手选择默认即可。

接下来设定活动名称,界面布局的名称,点击finish完成项目的创建:

创建完后,在项目名->app->src->main->res->layout下双击xml文件就是打开活动界面设计窗口了:

若出现以上报错,更改gradle.propertiesorg.gradle.jvmargs=-Xmx512m即可:

然后重新打开就没有问题了!可以去学习编写完善APP啦!