2018-09-10 17:55:38 qq_23303245 阅读数 68

前沿:最近买了一个阿里云的服务器。在安装jdk的时候选择了10的版本,在安装Jenkins的时候恐怕版本不匹配。就重新下载了1.8的版本。一下是自己操作步骤:
1:安装jdk:下载http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载。解压到你要安装的目录就行了
2:通过命令 vi /etc/profile 修改 JAVA_HOME的路径为你现在的解压路径。
3:完事后:source /etc/profile
其中我遇到的问题:修改后:查看Java -version 还是我上一个版本。没有切换成功。
问题解决:查看指定路径:which java 显示还是我上一个版本
查看网上教程:把连接重新定向一下
rm -f /usr/lib/jvm/jdk-10.0.2/bin/java && ln -s /usr/lib/jvm/jdk1.8.0_181/bin/java /usr/lib/jvm这里写图片描述
这里写图片描述
cat /etc/profile 再看看JAVA_HOME对不对。(我在这就遇到个坑,刚才改的没起作用,但是
vi /etc/profile 看里面的JAVA_HOME又是可以的。然后我是直接暴力对文件进行修改的,问题解决)

2013-08-08 10:36:06 wangwei_007 阅读数 2099

GoogleV8 Linux下编译条件

GoogleV8使用GYP来进行工程管理的。GYP类似与Scons,也是一个python库。最近版本的GYP需要2.6以后的Python版本。如果在GCC4.4.7 以及Python2.6下按照http://code.google.com/p/v8/wiki/BuildingWithGYP步骤完全没有问题。

# cd GoogleV8
# make dependencies
# make native library=shared

这时GoogleV8/out/native/lib.target里面就会有libv8.so。

旧版本Linux环境下编译问题及解决方法

由于正式服务器的环境比较旧而且是64位的:(GCC) 4.1.2;Python 2.4.3;ar 2.17.50;这时再按照上面的步骤编译就会有很多问题。

解决方法:

  • 本地安装新版本python
http://www.hiaward.com:10004/wiki/dev/pythoninstall/#install-python 根据里面的步骤安装较新版本python(例如python2.6.6)
  • 去掉-Werror选项
# make native library=shared werror=no

  • 解决ar命令问题

解决 ar: illegal option -- X

http://bbs.chinaunix.net/thread-3776724-1-1.html根据别人方法,将命令改为

# OBJECT_MODE=64 make native library=shared werror=no

解决 ar: illegal option -- T

这时已经存在./out/Makefile.native文件,将里面的 cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) crsT $@ $(filter %.o,$^)改为

cmd_alink_thin = rm -f $@ && $(AR.$(TOOLSET)) crs $@ $(filter %.o,$^)。重新执行

# OBJECT_MODE=64 make native library=shared werror=no
就会编译出libv8.so了。



2015-08-18 10:01:39 dp_huang 阅读数 272

            先写好windows和linux各自不同版本的socket代码,就是几个头文件不一样,没有多大的区别。

            值的注意的是,我用的是xilinx ISE14.7  自带的  xilinx SDK 编译lixun端代码的,而build之后,linux端的debug中的执行文件是.elf。而在windows下,是.exe

          

            把build 好的.elf文件,拷贝到开发板的SD卡上,我这次选用的是zed board开发板。SD卡上,已经搭建好了linuxOS,其OS文件就在SD卡上。

            1.我们要用Tera Team来操作linux。把开发板用USB线和PC机连接,找到COM号,然后再Tera Team设置好相应的COM号,然后再串口中,设置好数据位宽。

            2.进入linuxOS后,我们可以通过操作,找到刚刚拷贝上去的.elf文件,然后执行。在执行之前,要配置好IP号。

 

            一些操作:

              3.“ls”:查看文件树,即列出文件
              4.“cd 文件名”:进入文件
              5.“./文件名”:运行文件
              6.“cd ../”:返回上一级
              7.“ping IP”:可以查看和IP的链接情况
              8.“ifconfig etho IP”:可以配置IP

 

    配置好这些,就可以愉快的用PC和开发板通信了。

  

  附录 linux端的socket代码,我把linux端设为服务端。

 

/* server */ 
#include <stdio.h> 
#include <sys/types.h> 
#include <netinet/in.h> 
#include <sys/socket.h> 
#include <netdb.h> 
#include <unistd.h> 
#include <string.h> 
#include <arpa/inet.h> 
#include <sys/wait.h> 
#include <errno.h> 
 
#define PORT 6000  //define the port
#define BACKLOG 10 
 
int main(void) 

    int sockServer, sockClient; 
    struct sockaddr_in my_addr; 
    struct sockaddr_in their_addr; 
    int sin_size; 
 
    if ((sockServer = socket(AF_INET, SOCK_STREAM, 0)) == -1) 
    { 
        fprintf(stderr, "socket error!\n"); 
  //stderr:The standard error stream is the default destination
  // for error messages and other diagnostic warnings.
          return 0; 
    } 
    my_addr.sin_family = AF_INET; 
    my_addr.sin_port = htons(PORT); 
    my_addr.sin_addr.s_addr = INADDR_ANY; 
    bzero(&(my_addr.sin_zero), 8);
 //The bzero() function sets the first n bytes
 //of the byte string s to zero. 
    if (bind(sockServer, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) 
    { 
        fprintf(stderr, "bind error!\n"); 
           return 0; 
    } 
    if (listen(sockServer, BACKLOG) == -1) 
    { 
        fprintf(stderr, "listen error!\n"); 
          return 0; 
    } 
    while (1) 
    { 
        sin_size = sizeof(struct sockaddr_in); 
        if ((sockClient = accept(sockServer, (struct sockaddr *)&their_addr, &sin_size)) == -1) 
        { 
            fprintf(stderr, "accept error!\n"); 
            continue; 
        } 
        printf("server: got connection from %s\n", inet_ntoa(their_addr.sin_addr)); 
        if (!fork()) 
        { 
        double recvData[3];
     char *pRecv = (char *)&recvData[0];//接受客户端返回的字符串
     memset(pRecv, 0, sizeof(double) * 3);

     //接收并打印客户端数据
     if(recv(sockClient, pRecv, sizeof(double) * 3, 0) == -1)
      {   
              fprintf(stderr, "recv error!\n");
     close(sockClient); 
     return 0; 
      }
     
     printf("-->\ndata1 = %lf\ndata2 = %lf\ndata3 = %lf\n\n\n", recvData[0], recvData[1], recvData[2]);
 
            if (send(sockClient, "data trans success.", sizeof("data trans success."), 0) == -1) 
    { 
             fprintf(stderr, "send error!\n"); 
     close(sockClient); 
        return 0; 
    }
        } 
        close(sockClient); 
        while(waitpid(-1, NULL, WNOHANG) > 0); 
    } 

 

2017-12-28 17:18:55 qq_26702601 阅读数 114
主要实现功能:实现两台数据库服务之间数据同步

实现前准备:两台带数据库服务的linuxOS(此处使用centOS6 64位,ip分别是192.168.88.129和192.168.88.131,下文用192和131称呼,mysql5.7)防火墙和selinux都关闭

主主复制模式是指两台mysql服务都是master,同时又都是slave,这样的话在其中一台做数据操作,另外一台的数据库服务也会执行同样的操作
还有一种是主从复制:
其中一台作为master,另外一台作为slave,在slave服务器修改数据库的话是不会同步到master服务器的,而master服务器修改数据库会同步到slave服务器,
因此这种模式要进行读写分离的话,写的操作必须是在 master服务

1、更改两台主机的mysql配置文件/etc/my.cnf
在129的my.cnf添加
server-id=1
log-bin=mysqlmaster-bin.log
auto-increment-increment=2
auto-increment-offset=1
在131的my.cnf添加
server-id=2
log-bin=mysqlmaster-bin.log
auto-increment-increment=2
auto-increment-offset=2
说明:
server-id:在集群时本机服务的唯一标志,因此不能相同
auto-increment-increment:整个结构中服务器的总数,此实验为两台服务器,所以值为2
auto-increment-offset:数据库中自动增长的起点的,因为服务器都设定了一次自动增长的值为2,所以他们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突


注意:可能在etc下没有my.cnf文件,解决方法是复制mysql的安装路径下my.cnf(cp /usr/local/mysql/my.cnf /etc/my.cnf)
2.root登陆MySQL,创建同步数据所需要的用户
129 
GRANT REPLICATION SLAVE ON *.* TO 'synuser1'@'192.168.88.%' IDENTIFIED BY '123456';
131
GRANT REPLICATION SLAVE ON *.* TO 'synuser2'@'192.168.88.%' IDENTIFIED BY '123456';
3.查看两台服务器的master状态
129
mysql>show master status;
+------------------------+----------+--------------+------------------+-------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------------+----------+--------------+------------------+-------------------+
| mysqlmaster-bin.000002 |      120 |              |                  |                   |


执行(主从模式下,若此机作为master,则不需要再执行,因为本文是使用主主模式,因此两台服务器都要指明对应的master)
CHANGE MASTER TO MASTER_HOST='192.168.88.131',MASTER_USER='synuser2',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=336;


131:
mysql>show master status;
+------------------------+----------+--------------+------------------+-------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------------+----------+--------------+------------------+-------------------+
| mysqlmaster-bin.000001 |      336 |              |                  |                   |


执行
CHANGE MASTER TO MASTER_HOST='192.168.88.129',MASTER_USER='synuser1',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=120;


4.两台服务器都执行mysql>start slave;从而开启同步功能
分别输入show slave status;查看结果中的以下两个属性值是否为yes,若是则成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
注意:通常做集群实验的时候都是在一台虚拟机上安装mysql之后复制一台作为另外一台,这样会出现两台mysql服务的server-uuid相同,解决方法是修改其中一台的uuid
vim /usr/local/mysql/data/auto.cnf 改成与另外一台不一样即可,修改之后重启两台服务器的MySQL服务
没有更多推荐了,返回首页