• 关于 sa linux 的搜索结果

回答

为了解决Linux系统连接MSSql Server的问题,微软为Linux系统提供了连接MSSql Server的ODBC官方驱动。通过官方驱动,Linux程序可以方便地对MSSql Server进行访问。 官网提供了三个版本的驱动,分别用于以下发行版的Linux系统: 64bit Red Hat Enterprise Linux 5 64bit Red Hat Enterprise Linux 6 64bit SUSE Linux Enterprise 11 Service Pack 2 (实测 64bit CentOS 6.4 和 64bit CentOS 7.1 可以安装使用64bit Red Hat Enterprise Linux 6版本的ODBC驱动) 安装配置过程可以通过以下步骤完成: 下载安装包 Red Hat 5/6:https://www.microsoft.com/en-us/download/details.aspx?id=36437 SUSE 11:http://www.microsoft.com/en-us/download/details.aspx?id=34687 安装unixODBC 2.3.0 以red hat 6版本为例 tar xzf msodbcsql-11.0.2270.0.tar.gz cd msodbcsql-11.0.2270.0 ./build_dm.sh (这个文章似乎漏了一步,因为命令行有提示Run the command 'cd/tmp/unixODBC.30130.2651.301/unixODBC-2.3.0;make install' to install the driver manager) 安装Microsoft ODBC Driver 11 for SQL Server on Linux ./install.sh install 4. 通过命令行连接到数据库服务器 安装完驱动后就可以通过驱动自带的命令行工具测试连接了: sqlcmd -S 192.168.1.10 -U sa -P sa -d master -Q 'select "Hello World"' 假如连接成功,该命令就会输出“Hello World”的查询结果 配置unixODBC数据源 sqlcmd命令除了可以通过指定地址、用户名密码连接数据库外,还可以通过指定数据源名称连接数据库。数据源可以通过unixODBC所提供的odbcinst命令进行配置: 1). 建立模版配置文件 template.ini,内容如下 复制代码 [DataSourceName] Driver = ODBC Driver 11 for SQL Server Server = 192.168.1.10 UID = sa PWD = sa Database = master 复制代码 2). 导入配置 odbcinst -i -s -l -f template.ini 执行完之后,可以再次通过sqlcmd命令工具来测试连接 sqlcmd -S DataSourceName -Q 'select "Hello World"' 该命令和前面的直接指定IP地址和用户名密码的命令得到同样的结果 通过PHP连接到数据库服务器 该例子是通过修改CodeIgniter 3.0.0的mssql driver,把所有原mssql_* API 替换成odbc_* API,让所有数据库操作都通过ODBC连接进行,同时也复用了原CodeIgniter框架对mssql的支持。项目代码托管在github上:https://github.com/ratzhou/CodeIgniter。以下是使用修改后的CodeIgniter框架通过ODBC连接MSSql Server

问问小秘 2019-12-27 16:34:08 0 浏览量 回答数 0

问题

Android5.0 SDK 64bit 编译报错?报错

爱吃鱼的程序员 2020-06-14 17:51:28 0 浏览量 回答数 1

问题

tomcat报错日志?报错

爱吃鱼的程序员 2020-06-09 14:57:00 0 浏览量 回答数 1

新手开公司,教你化繁为简

开公司到底有没有那么难,传统的手续繁琐,线下跑断腿,场地搞不定等问题,通过阿里云”云上公司注册“解决你的烦恼。

问题

java.lang.NoClassDefFoundError?报错

爱吃鱼的程序员 2020-06-06 14:50:40 0 浏览量 回答数 1

回答

收到一字节数据后,SIGIO应该立即启动。 这是在带驱动程序的Linux上测试的最小示例ftdi_sio: #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <time.h> #include <unistd.h> #include <termios.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/uio.h> #include <signal.h> #include <termios.h> #include <unistd.h> #define tty "/dev/ttyUSB0" #define baudrate B9600 void byteCallback(int status); // interrupt function int main(){ int ttyDev = open(tty, O_RDWR | O_NOCTTY | O_NONBLOCK); if (!ttyDev) { printf("couldn't open serial device"); return -1; } struct sigaction byteAction; // set the serial interrupt handler struct termios oldtio, newtio; //create signal handler byteAction.sa_handler = byteCallback; sigemptyset(&byteAction.sa_mask); //sa_mask = 0 byteAction.sa_flags = SA_RESTART; sigaction(SIGIO, &byteAction, NULL); //Allow process to detect SIGIO fcntl(ttyDev, F_SETOWN, getpid()); fcntl(ttyDev, F_SETFL, FASYNC); tcgetattr(ttyDev, &oldtio); //backup current settings newtio.c_cflag = baudrate | CS8 | CLOCAL | CREAD; newtio.c_cflag &= ~CRTSCTS; //disable hw flow control newtio.c_iflag &= ~(IXON | IXOFF | IXANY); //disable flow control newtio.c_iflag |= IGNPAR; //ignore parity newtio.c_oflag = 0; newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); //raw mode newtio.c_cc[VMIN] = 1; newtio.c_cc[VTIME] = 0; tcflush(ttyDev, TCIFLUSH); tcsetattr(ttyDev, TCSANOW, &newtio); while(1){ //Wait for SIGIO to fire } } void byteCallback(int status){ printf("SIGIO fired!\r\n"); }

祖安文状元 2020-01-06 16:28:48 0 浏览量 回答数 0

回答

ReCentOS6.3的几个小问题 灰常感谢各位的回复,尤其感谢两位版主大大的解答! 本人初学Linux,各种不懂,真心苦13啊google了一下午的资料,现在终于有点眉目了: [/var/log/maillog]Apr  4 13:50:01 AY1211101104422521140 postfix/sendmail[14822]: fatal: parameter inet_interfaces: no local interface found for ::1Apr  4 14:00:01 AY1211101104422521140 postfix/sendmail[14848]: fatal: parameter inet_interfaces: no local interface found for ::1[/var/log/cron]Apr  4 13:50:01 AY1211101104422521140 CROND[14821]: (root) CMD (/usr/lib64/sa/sa1 1 1)Apr  4 13:50:01 AY1211101104422521140 CROND[14820]: (root) MAIL (mailed 56 bytes of output but got status 0x004b#012)Apr  4 14:00:01 AY1211101104422521140 CROND[14847]: (root) CMD (/usr/lib64/sa/sa1 1 1)Apr  4 14:00:01 AY1211101104422521140 CROND[14846]: (root) MAIL (mailed 56 bytes of output but got status 0x004b#012)关于maillog、cron日志每10分钟报错的问题,在 mrznz的启发下,确定跟IPv6有关,后来编辑/etc/hosts文件,把::1条目注释掉后就“解决了”: 127.0.0.1 localhost#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 //就是这一行10.200.116.26 AY1211101104422521140但是,maillog开始报新的警告级别信息(依旧是每10分钟报一次): Apr  4 14:10:01 AY1211101104422521140 postfix/postdrop[14885]: warning: unable to look up public/pickup: No such file or directoryApr  4 14:20:01 AY1211101104422521140 postfix/postdrop[14899]: warning: unable to look up public/pickup: No such file or directory继续google一圈后,终于发现是由于postfix服务默认没有启动,于是service postfix start、chkconfig --level 3 postfix on: chkconfig --list postfixpostfix            0:off    1:off    2:off    3:on    4:off    5:off    6:off好了,maillog日志终于不再报“ warning: unable to look up public/pickup: No such file or directory”了,取而代之的是每10分钟收到一封新邮件,内容是: Cannot open /var/log/sa/sa04: No such file or directory 最后在log目录下手工创建sa目录后,系统终于也不再给我发邮件了。 ps: 上述问题都是在把OS更换为6.3以后才出现的(也可能在使用6.2时就存在,自己没注意到),希望同样使用64位CentOS 6.3的同学们也检查一下自己的系统,看看都是这种情况还是说我的RP有问题。 ------------------------- 回6楼twl007的帖子 FreeBSD只能说是使用过,单位有个PV5k左右的网站,3年前改版时把服务器OS从win换成FB了,怪只怪这货实在太稳定了,至今没出现过任何故障(安装时是8.0版本,现在还是,3年来基本上没重启过),因此我的UNIX知识也一直停留在Apache、MySQL、PHP基本安装配置的层次上,并且已经忘得差不多了。。 最近才开始想做个人网站,了解的VPS、云主机貌似都不支持FB,貌似CentOS才是最流行的,所以才开始学习Linux。但是越来越发现自己并不是“做网站”的料,兴趣过于广泛,客户端、服务端都是略懂,PHP、MySQL、JS、HTML5、CSS没一样说得上精通,纠结得很呐。。。

t5500 2019-12-02 00:56:01 0 浏览量 回答数 0

问题

SOS!为什么运行时报错“connect error():Connection ?报错

爱吃鱼的程序员 2020-06-09 12:39:52 0 浏览量 回答数 1

问题

在 Ubuntu 16.04 里安装 SQL Server 2017

dongshan8 2019-12-01 22:00:43 2339 浏览量 回答数 1

回答

1. 有可能。阿里云的运动安全检测中的比如登录检测,需要分析本机的日志才可以。估计是这些产生的流量。安装一个jnettop进行详细分析(手头没有空白机器)。 2.执行第一个命令后提示找不到文件或文件夹。手动在/var/log/下创建sa后可以看到文件。 然后重新执行第二个命令即可看到相应的输出结果 3.mail提示找不到ipv6下的本机环路接口,应该是系统没有开启ipv6所致。建议配置文件中添加 inet_protocols = ipv4指定使用ipv4协议来避免在看见类似找不到ipv6环路地址的信息 PS:看了你的头像我觉得我也弄个系统图标当头像算了…… ------------------------- 回 5楼(t5500) 的帖子 应该是最开始Postfix没打开报错。正常的话mail应该会记录crontab执行出错的信息的。 启动postfix后报错的是crontab执行出错的信息,如果你手动执行第一条命令也会看见同样的命令。 还有你真的是Linux初学者么 0 0 怎么会用FreeBSD做头像,刚接触Linux的人很少会去关注UNIX的说 ------------------------- 回 7楼(t5500) 的帖子 额… FreeBSD的确很稳定。我个人见过一台Debian做ftp服务器跑了5年没重启过,最后一次重启还是因为接的存储挂了… Unix跟Linux的稳定性的确惊人额… Linux使用很简单的,我在写相关教程,以后会慢慢放出的。 ------------------------- 回 9楼(t5500) 的帖子 建议你自己用jnettop看一下是什么导致的流量,手头没有空白的Centos 6.3所以没法帮你看 貌似阿里云的IP都会默认走内网,无论内外网IP。以前需要做特殊设置,但是现在貌似不用了。 还有他那个交换分区,貌似6.2也没有了吧,他的映像文件都更新了好想,原来的是有的,新的貌似都无,估计是后台的映像部署方式变化了。

twl007 2019-12-02 00:56:01 0 浏览量 回答数 0

问题

linux 下获取本机地址和掩码

a123456678 2019-12-01 20:08:08 884 浏览量 回答数 1

问题

阿里云虚机,创建线程时,SCHED_FIFO Operation not permitted

游客zz7fxmxhkklsw 2020-07-17 15:04:24 7 浏览量 回答数 0

回答

Re阿里云每小时产生一个hserrpid文件 同样的问题 一直频现 # # There is insufficient memory for the Java Runtime Environment to continue. # pthread_getattr_np # Possible reasons: #   The system is out of physical RAM or swap space #   In 32 bit mode, the process size limit was hit # Possible solutions: #   Reduce memory load on the system #   Increase physical memory or swap space #   Check if swap backing store is full #   Use 64 bit Java on a 64 bit OS #   Decrease Java heap size (-Xmx/-Xms) #   Decrease number of Java threads #   Decrease Java thread stack sizes (-Xss) #   Set larger code cache with -XX:ReservedCodeCacheSize= # This output file may be truncated or incomplete. # #  Out of Memory Error (os_linux_x86.cpp:718), pid=8379, tid=139744224728832 # # JRE version: Java(TM) SE Runtime Environment (7.0_75-b13) (build 1.7.0_75-b13) # Java VM: Java HotSpot(TM) 64-Bit Server VM (24.75-b04 mixed mode linux-amd64 compressed oops) # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again # ---------------  T H R E A D  --------------- Current thread (0x00007f18c0085800):  JavaThread "Signal Dispatcher" daemon [_thread_new, id=8384, stack(0x0000000000000000,0x0000000000000000)] Stack: [0x0000000000000000,0x0000000000000000],  sp=0x00007f18bcdfca00,  free space=136468969458k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V  [libjvm.so+0x9a18da] V  [libjvm.so+0x4975ab] V  [libjvm.so+0x8249ca] V  [libjvm.so+0x824a15] V  [libjvm.so+0x953f94] V  [libjvm.so+0x95a754] V  [libjvm.so+0x820b88] ---------------  P R O C E S S  --------------- Java Threads: ( => current thread ) =>0x00007f18c0085800 JavaThread "Signal Dispatcher" daemon [_thread_new, id=8384, stack(0x0000000000000000,0x0000000000000000)]   0x00007f18c0064800 JavaThread "Finalizer" daemon [_thread_blocked, id=8383, stack(0x00007f18bcdfe000,0x00007f18bceff000)]   0x00007f18c0062800 JavaThread "Reference Handler" daemon [_thread_blocked, id=8382, stack(0x00007f18bceff000,0x00007f18bd000000)]   0x00007f18c0008800 JavaThread "main" [_thread_in_vm, id=8380, stack(0x00007f18c6bc2000,0x00007f18c6cc3000)] Other Threads:   0x00007f18c005e800 VMThread [stack: 0x00007f18c4015000,0x00007f18c4116000] [id=8381] VM state:not at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread:  ([mutex/lock_event]) [0x00007f18c0005e20] Threads_lock - owner thread: 0x00007f18c0008800 Heap def new generation   total 7232K, used 290K [0x00000000e3600000, 0x00000000e3dd0000, 0x00000000eb350000)   eden space 6464K,   4% used [0x00000000e3600000, 0x00000000e3648aa8, 0x00000000e3c50000)   from space 768K,   0% used [0x00000000e3c50000, 0x00000000e3c50000, 0x00000000e3d10000)   to   space 768K,   0% used [0x00000000e3d10000, 0x00000000e3d10000, 0x00000000e3dd0000) tenured generation   total 16000K, used 0K [0x00000000eb350000, 0x00000000ec2f0000, 0x00000000fae00000)    the space 16000K,   0% used [0x00000000eb350000, 0x00000000eb350000, 0x00000000eb350200, 0x00000000ec2f0000) compacting perm gen  total 21248K, used 2163K [0x00000000fae00000, 0x00000000fc2c0000, 0x0000000100000000)    the space 21248K,  10% used [0x00000000fae00000, 0x00000000fb01cf08, 0x00000000fb01d000, 0x00000000fc2c0000) No shared spaces configured. Card table byte_map: [0x00007f18c4497000,0x00007f18c457d000] byte_map_base: 0x00007f18c3d7c000 Polling page: 0x00007f18c6ccb000 Code Cache  [0x00007f18bd000000, 0x00007f18bd270000, 0x00007f18c0000000) total_blobs=156 nmethods=0 adapters=126 free_code_cache=48779Kb largest_free_block=49950080 Compilation events (0 events): No events GC Heap History (0 events): No events Deoptimization events (0 events): No events Internal exceptions (1 events): Event: 0.030 Thread 0x00007f18c0008800 Threw 0x00000000e360f2b8 at /HUDSON/workspace/7u-2-build-linux-amd64/jdk7u75/1940/hotspot/src/share/vm/prims/jni.cpp:3991 Events (10 events): Event: 0.058 loading class 0x00007f18c43a39f0 done Event: 0.058 loading class 0x00007f18c0085090 Event: 0.058 loading class 0x00007f18c0085090 done Event: 0.058 loading class 0x00007f18c43de890 Event: 0.059 loading class 0x00007f18c43de890 done Event: 0.059 loading class 0x00007f18c43ea7d0 Event: 0.059 loading class 0x00007f18c43ea7d0 done Event: 0.059 loading class 0x00007f18c43a3310 Event: 0.059 loading class 0x00007f18c43a3310 done Event: 0.059 Thread 0x00007f18c0085800 Thread added: 0x00007f18c0085800 Dynamic libraries: 00400000-00401000 r-xp 00000000 ca:01 713940                             /usr/java/jdk1.7.0_75/bin/java 00600000-00601000 rw-p 00000000 ca:01 713940                             /usr/java/jdk1.7.0_75/bin/java 013c7000-013e8000 rw-p 00000000 00:00 0                                  [heap] e3600000-e3dd0000 rw-p 00000000 00:00 0 e3dd0000-eb350000 rw-p 00000000 00:00 0 eb350000-ec2f0000 rw-p 00000000 00:00 0 ec2f0000-fae00000 rw-p 00000000 00:00 0 fae00000-fc2c0000 rw-p 00000000 00:00 0 fc2c0000-100000000 rw-p 00000000 00:00 0 7f18aa16f000-7f18b0000000 r--p 00000000 ca:01 673661                     /usr/lib/locale/locale-archive 7f18b0000000-7f18b0021000 rw-p 00000000 00:00 0 7f18b0021000-7f18b4000000 ---p 00000000 00:00 0 7f18b4000000-7f18b4021000 rw-p 00000000 00:00 0 7f18b4021000-7f18b8000000 ---p 00000000 00:00 0 7f18b8000000-7f18b8021000 rw-p 00000000 00:00 0 7f18b8021000-7f18bc000000 ---p 00000000 00:00 0 7f18bcbfc000-7f18bcbfd000 ---p 00000000 00:00 0 7f18bcbfd000-7f18bcdfe000 rw-p 00000000 00:00 0 7f18bcdfe000-7f18bce01000 ---p 00000000 00:00 0 7f18bce01000-7f18bceff000 rw-p 00000000 00:00 0 7f18bceff000-7f18bcf02000 ---p 00000000 00:00 0 7f18bcf02000-7f18bd000000 rw-p 00000000 00:00 0 7f18bd000000-7f18bd270000 rwxp 00000000 00:00 0 7f18bd270000-7f18c008b000 rw-p 00000000 00:00 0 7f18c008b000-7f18c4000000 ---p 00000000 00:00 0 7f18c4015000-7f18c4016000 ---p 00000000 00:00 0 7f18c4016000-7f18c4161000 rw-p 00000000 00:00 0 7f18c4161000-7f18c4320000 r--s 039eb000 ca:01 714812                     /usr/java/jdk1.7.0_75/jre/lib/rt.jar 7f18c4320000-7f18c4421000 rw-p 00000000 00:00 0 7f18c4421000-7f18c4497000 rw-p 00000000 00:00 0 7f18c4497000-7f18c449b000 rw-p 00000000 00:00 0 7f18c449b000-7f18c44d5000 rw-p 00000000 00:00 0 7f18c44d5000-7f18c44de000 rw-p 00000000 00:00 0 7f18c44de000-7f18c4553000 rw-p 00000000 00:00 0 7f18c4553000-7f18c455e000 rw-p 00000000 00:00 0 7f18c455e000-7f18c457c000 rw-p 00000000 00:00 0 7f18c457c000-7f18c457d000 rw-p 00000000 00:00 0 7f18c457d000-7f18c4597000 r-xp 00000000 ca:01 714115                     /usr/java/jdk1.7.0_75/jre/lib/amd64/libzip.so 7f18c4597000-7f18c4797000 ---p 0001a000 ca:01 714115                     /usr/java/jdk1.7.0_75/jre/lib/amd64/libzip.so 7f18c4797000-7f18c4798000 rw-p 0001a000 ca:01 714115                     /usr/java/jdk1.7.0_75/jre/lib/amd64/libzip.so 7f18c4798000-7f18c47a4000 r-xp 00000000 ca:01 729117                     /lib64/libnss_files-2.12.so 7f18c47a4000-7f18c49a4000 ---p 0000c000 ca:01 729117                     /lib64/libnss_files-2.12.so 7f18c49a4000-7f18c49a5000 r--p 0000c000 ca:01 729117                     /lib64/libnss_files-2.12.so 7f18c49a5000-7f18c49a6000 rw-p 0000d000 ca:01 729117                     /lib64/libnss_files-2.12.so 7f18c49a6000-7f18c49cf000 r-xp 00000000 ca:01 714085                     /usr/java/jdk1.7.0_75/jre/lib/amd64/libjava.so 7f18c49cf000-7f18c4bcf000 ---p 00029000 ca:01 714085                     /usr/java/jdk1.7.0_75/jre/lib/amd64/libjava.so 7f18c4bcf000-7f18c4bd1000 rw-p 00029000 ca:01 714085                     /usr/java/jdk1.7.0_75/jre/lib/amd64/libjava.so 7f18c4bd1000-7f18c4bde000 r-xp 00000000 ca:01 714114                     /usr/java/jdk1.7.0_75/jre/lib/amd64/libverify.so 7f18c4bde000-7f18c4ddd000 ---p 0000d000 ca:01 714114                     /usr/java/jdk1.7.0_75/jre/lib/amd64/libverify.so 7f18c4ddd000-7f18c4ddf000 rw-p 0000c000 ca:01 714114                     /usr/java/jdk1.7.0_75/jre/lib/amd64/libverify.so 7f18c4ddf000-7f18c4de6000 r-xp 00000000 ca:01 729129                     /lib64/librt-2.12.so 7f18c4de6000-7f18c4fe5000 ---p 00007000 ca:01 729129                     /lib64/librt-2.12.so 7f18c4fe5000-7f18c4fe6000 r--p 00006000 ca:01 729129                     /lib64/librt-2.12.so 7f18c4fe6000-7f18c4fe7000 rw-p 00007000 ca:01 729129                     /lib64/librt-2.12.so 7f18c4fe7000-7f18c506a000 r-xp 00000000 ca:01 729109                     /lib64/libm-2.12.so 7f18c506a000-7f18c5269000 ---p 00083000 ca:01 729109                     /lib64/libm-2.12.so 7f18c5269000-7f18c526a000 r--p 00082000 ca:01 729109                     /lib64/libm-2.12.so 7f18c526a000-7f18c526b000 rw-p 00083000 ca:01 729109                     /lib64/libm-2.12.so 7f18c526b000-7f18c5dde000 r-xp 00000000 ca:01 714119                     /usr/java/jdk1.7.0_75/jre/lib/amd64/server/libjvm.so 7f18c5dde000-7f18c5fde000 ---p 00b73000 ca:01 714119                     /usr/java/jdk1.7.0_75/jre/lib/amd64/server/libjvm.so 7f18c5fde000-7f18c60a2000 rw-p 00b73000 ca:01 714119                     /usr/java/jdk1.7.0_75/jre/lib/amd64/server/libjvm.so 7f18c60a2000-7f18c60e3000 rw-p 00000000 00:00 0 7f18c60e3000-7f18c626d000 r-xp 00000000 ca:01 729101                     /lib64/libc-2.12.so 7f18c626d000-7f18c646c000 ---p 0018a000 ca:01 729101                     /lib64/libc-2.12.so 7f18c646c000-7f18c6470000 r--p 00189000 ca:01 729101                     /lib64/libc-2.12.so 7f18c6470000-7f18c6471000 rw-p 0018d000 ca:01 729101                     /lib64/libc-2.12.so 7f18c6471000-7f18c6476000 rw-p 00000000 00:00 0 7f18c6476000-7f18c6478000 r-xp 00000000 ca:01 729107                     /lib64/libdl-2.12.so 7f18c6478000-7f18c6678000 ---p 00002000 ca:01 729107                     /lib64/libdl-2.12.so 7f18c6678000-7f18c6679000 r--p 00002000 ca:01 729107                     /lib64/libdl-2.12.so 7f18c6679000-7f18c667a000 rw-p 00003000 ca:01 729107                     /lib64/libdl-2.12.so 7f18c667a000-7f18c6690000 r-xp 00000000 ca:01 714798                     /usr/java/jdk1.7.0_75/lib/amd64/jli/libjli.so 7f18c6690000-7f18c6890000 ---p 00016000 ca:01 714798                     /usr/java/jdk1.7.0_75/lib/amd64/jli/libjli.so 7f18c6890000-7f18c6891000 rw-p 00016000 ca:01 714798                     /usr/java/jdk1.7.0_75/lib/amd64/jli/libjli.so 7f18c6891000-7f18c68a8000 r-xp 00000000 ca:01 729125                     /lib64/libpthread-2.12.so 7f18c68a8000-7f18c6aa8000 ---p 00017000 ca:01 729125                     /lib64/libpthread-2.12.so 7f18c6aa8000-7f18c6aa9000 r--p 00017000 ca:01 729125                     /lib64/libpthread-2.12.so 7f18c6aa9000-7f18c6aaa000 rw-p 00018000 ca:01 729125                     /lib64/libpthread-2.12.so 7f18c6aaa000-7f18c6aae000 rw-p 00000000 00:00 0 7f18c6aae000-7f18c6ace000 r-xp 00000000 ca:01 729091                     /lib64/ld-2.12.so 7f18c6ad0000-7f18c6adb000 rw-p 00000000 00:00 0 7f18c6adb000-7f18c6afa000 rw-p 00000000 00:00 0 7f18c6afa000-7f18c6b04000 rw-p 00000000 00:00 0 7f18c6b04000-7f18c6bba000 rw-p 00000000 00:00 0 7f18c6bba000-7f18c6bc2000 rw-s 00000000 ca:01 811032                     /tmp/hsperfdata_root/8379 7f18c6bc2000-7f18c6bc5000 ---p 00000000 00:00 0 7f18c6bc5000-7f18c6cc7000 rw-p 00000000 00:00 0 7f18c6cca000-7f18c6ccb000 rw-p 00000000 00:00 0 7f18c6ccb000-7f18c6ccc000 r--p 00000000 00:00 0 7f18c6ccc000-7f18c6ccd000 rw-p 00000000 00:00 0 7f18c6ccd000-7f18c6cce000 r--p 0001f000 ca:01 729091                     /lib64/ld-2.12.so 7f18c6cce000-7f18c6ccf000 rw-p 00020000 ca:01 729091                     /lib64/ld-2.12.so 7f18c6ccf000-7f18c6cd0000 rw-p 00000000 00:00 0 7fff6387c000-7fff63891000 rw-p 00000000 00:00 0                          [stack] 7fff639ff000-7fff63a00000 r-xp 00000000 00:00 0                          [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall] VM Arguments: java_command: org.apache.catalina.util.ServerInfo Launcher Type: SUN_STANDARD Environment Variables: PATH=/sbin:/usr/sbin:/bin:/usr/bin Signal Handlers: SIGSEGV: [libjvm.so+0x9a21f0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGBUS: [libjvm.so+0x9a21f0], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGFPE: [libjvm.so+0x81ba40], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGPIPE: [libjvm.so+0x81ba40], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGXFSZ: [libjvm.so+0x81ba40], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGILL: [libjvm.so+0x81ba40], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000000 SIGUSR2: [libjvm.so+0x81d240], sa_mask[0]=0x00000000, sa_flags=0x10000004 SIGHUP: [libjvm.so+0x81e360], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGINT: [libjvm.so+0x81e360], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGTERM: [libjvm.so+0x81e360], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 SIGQUIT: [libjvm.so+0x81e360], sa_mask[0]=0x7ffbfeff, sa_flags=0x10000004 ---------------  S Y S T E M  --------------- OS:CentOS release 6.3 (Final) uname:Linux 2.6.32-358.6.2.el6.x86_64 #1 SMP Thu May 16 20:59:36 UTC 2013 x86_64 libc:glibc 2.12 NPTL 2.12 rlimit: STACK 10240k, CORE 0k, NPROC 11859, NOFILE 1024, AS 1048576k load average:0.00 0.00 0.00 /proc/meminfo: MemTotal:        1534896 kB MemFree:          156608 kB Buffers:          154576 kB Cached:           271084 kB SwapCached:            0 kB Active:          1119840 kB Inactive:         161912 kB Active(anon):     856172 kB Inactive(anon):      360 kB Active(file):     263668 kB Inactive(file):   161552 kB Unevictable:           0 kB Mlocked:               0 kB SwapTotal:             0 kB SwapFree:              0 kB Dirty:                84 kB Writeback:             0 kB AnonPages:        856176 kB Mapped:            80496 kB Shmem:               376 kB Slab:              65236 kB SReclaimable:      39836 kB SUnreclaim:        25400 kB KernelStack:        1536 kB PageTables:        10608 kB NFS_Unstable:          0 kB Bounce:                0 kB WritebackTmp:          0 kB CommitLimit:      767448 kB Committed_AS:    1654972 kB VmallocTotal:   34359738367 kB VmallocUsed:       11064 kB VmallocChunk:   34359725180 kB HardwareCorrupted:     0 kB AnonHugePages:    632832 kB HugePages_Total:       0 HugePages_Free:        0 HugePages_Rsvd:        0 HugePages_Surp:        0 Hugepagesize:       2048 kB DirectMap4k:        6144 kB DirectMap2M:     1566720 kB CPU:total 1 (32 cores per cpu, 2 threads per core) family 6 model 45 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, aes, ht, tsc /proc/cpuinfo: processor       : 0 vendor_id       : GenuineIntel cpu family      : 6 model           : 45 model name      : Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz stepping        : 7 cpu MHz         : 2200.003 cache size      : 15360 KB physical id     : 0 siblings        : 1 core id         : 0 cpu cores       : 1 apicid          : 0 initial apicid  : 0 fpu             : yes fpu_exception   : yes cpuid level     : 13 wp              : yes flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush mmx fxsr sse sse2 ht syscall nx lm up rep_good unfair_spinlock pni ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm bogomips        : 4400.00 clflush size    : 64 cache_alignment : 64 address sizes   : 46 bits physical, 48 bits virtual power management: Memory: 4k page, physical 1534896k(156608k free), swap 0k(0k free) vm_info: Java HotSpot(TM) 64-Bit Server VM (24.75-b04) for linux-amd64 JRE (1.7.0_75-b13), built on Dec 18 2014 16:45:18 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8) time: Mon May  4 11:41:53 2015 elapsed time: 0 seconds ------------------------- Re阿里云每小时产生一个hserrpid文件 更换 JDK 8 后,问题没有复现,请问这是什么问题

cp123 2019-12-02 01:24:05 0 浏览量 回答数 0

问题

mongodb副本集加上权限校验后java客户端连接不上?报错

爱吃鱼的程序员 2020-06-08 16:50:20 0 浏览量 回答数 1

回答

演示如何在kubernetes集群,部署virtual-kubelet,为集群增加虚拟节点,以下简称:VK节点;使kubenetes集群通过VK节点接入ECI平台,在ECI平台上创建Pod。 kubernetes集群分类: 自建kuberenetes集群: 可以是基于阿里云ECS搭建的kubenetes集群。 可以是基于其他云平台搭建的kubenetes集群。 可以是基于机房搭建的kubenetes集群。 可以是基于台式机或笔记本搭建的kubernetes集群。 阿里云容器服务kubernetes集群: 专有版 Kubernetes(Dedicated Kubernetes)。 托管版 Kubernetes(Managed Kubernetes)。 Serverless Kubernetes。 下面我们,针对不同的kubernetes集群,介绍如何部署virtual-kubeket;由于阿里云Serverless Kubernetes,默认部署virtual-kubelet,是由系统管理员统一管理,本文不涉及阿里云Serverless Kubernetes集群部署virtual-kubelet。 前提条件 您需要开通阿里云弹性容器实例 ECI 服务,登录弹性容器实例控制台开通服务。 kubernetes集群上创建的Pod具有访问外网能力,因为virtual-kubelet是Pod形式部署,需要访问阿里云公网ECI服务。 部署virtual-kubelet 容器服务kubernetes集群 通过安装ack-virtual-node插件,部署vitual-kubelet。 执行部署 登录容器服务管理控制台。 在Kubernetes 菜单下,单击左侧导航栏中的市场 > 应用目录,在右侧选中ack-virtual-node。 在应用目录>ack-virtual-node页面,单击参数,配置虚拟节点参数。 参数 参数含义 获取路径 ECI_ACCESS_KEY 用户AccessKey 请参见如何获取AccessKey ECI_SECRET_KEY 用户SecretKey 请参见如何获取AccessKey ALIYUN_CLUSTERID 集群ID 您可以在集群基本信息,基本信息区域中,获取集群ID的值 ECI_REGION 地域名称 您可以在集群基本信息,基本信息区域中,获取地域的值 ECI_VPC 集群的VPC 您可以在集群基本信息的集群资源区域中,获取虚拟专有网络 VPC的值 ECI_VSWITCH 虚拟交换机 您可以在节点列表单击某个节点,在实例详情页签的配置信息区域中,获取虚拟交换机的值 ECI_SECURITY_GROUP 安全组ID 您可以在节点列表单击某个节点,在本实例安全组页签的安全组列表区域中,获取安全组ID的值 配置完成后,在右侧的创建页面,选择对应的集群,可以看到命名空间已设定为kube-system,发布名称已设定为ack-virtual-node,单击创建。 验证 检查节点列表 安装完成后,您可以通过集群 > 节点,在节点列表页面可以看到添加了一个节点virtual-kubelet。 您可以通过 kubectl 命令,查看节点列表信息。 $ kubectl get node NAME STATUS ROLES AGE VERSION cn-beijing.192.168.0.238 Ready 66d v1.14.6-aliyun.1 cn-beijing.192.168.0.239 Ready 66d v1.14.6-aliyun.1 cn-beijing.192.168.0.240 Ready 66d v1.14.6-aliyun. virtual-kubelet Ready agent 19d v1.11.2 创建Pod到VK节点 当集群中存在虚拟节点时,您可以把Pod调度到虚拟节点上,Virtual Kubelet将会创建出相应的ECI Pod。 在 Kubernetes 菜单下,单击左侧导航栏中的应用 > 无状态,选择集群和命名空间,单击右上角的使用模板创建。 选择样例模板或自定义,然后单击创建,您可以使用如下 yaml 示例模板创建Deployment: apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: Always nodeName: virtual-node-eci-0 #virtual node name 在应用 > 无状态中,当出现如下界面时,表示 Deployment 创建成功。 在应用>容器组中,会出现如下界面时,表示 Pod 部署完成 自建kubernetes集群 采用yaml的方式部署virtual-kubelet。 准备工作 部署virtual-kubelet准备工作,需要通过阿里云获取信息: 参数 参数含义 获取路径 ECI_ACCESS_KEY 用户AccessKey 请参见如何获取AccessKey ECI_SECRET_KEY 用户SecretKey 请参见如何获取AccessKey ALIYUN_CLUSTERID 集群ID 用户自定义一个唯一标示,作为集群ID ECI_REGION 地域名称 登录弹性容器实例控制台,获取Region信息,例如:华北2,对应RegionID cn-beijing ECI_VPC 集群的VPC 登录专有网络,根据已选Region,获取合适VPC ID ECI_VSWITCH 虚拟交换机 登录专有网络>交换机,根据已选VpcID,获取合适交换机ID ECI_SECURITY_GROUP 安全组 登录专有网络,根据已选VpcID,点击进入专有网络详情>网络资源>安全组,获取合适安全组ID YAML文件 $ cat deployment-vk.yaml apiVersion: v1 kind: ServiceAccount metadata: name: virtual-node-sa namespace: kube-system apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: virtual-node-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: virtual-node-sa namespace: kube-system apiVersion: apps/v1beta2 kind: Deployment metadata: name: virtual-node-controller namespace: kube-system labels: app: virtual-node-controller spec: replicas: 1 selector: matchLabels: app: virtual-node-controller template: metadata: labels: app: virtual-node-controller spec: serviceAccount: virtual-node-sa containers: - name: alicloud-virtual-kubelet image: registry.cn-hangzhou.aliyuncs.com/acs/virtual-nodes-eci:v1.0.0.1-aliyun imagePullPolicy: Always args: ["--provider", "alibabacloud"] env: - name: KUBELET_PORT value: "10250" - name: VKUBELET_POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: VKUBELET_TAINT_KEY value: "virtual-kubelet.io/provider" - name: VKUBELET_TAINT_VALUE value: "alibabacloud" - name: VKUBELET_TAINT_EFFECT value: "NoSchedule" - name: ECI_REGION value: ${aliyun_region_name} - name: ECI_VPC value: ${aliyun_vpc_id} - name: ECI_VSWITCH value: ${aliyun_vswitch_id} - name: ECI_SECURITY_GROUP value: ${aliyun_sg_id} - name: ECI_ACCESS_KEY value: ${aliyun_access_key} - name: ECI_SECRET_KEY value: ${aliyun_secret_key} - name: ALIYUN_CLUSTERID value: ${custom_define_cluster_id} 根据之前准备的信息,替换yaml文件中的: aliyun_region_name aliyun_vpc_id aliyun_vswitch_id aliyun_sg_id aliyun_access_key aliyun_secret_key 最后,需要给你的集群设置集群ID,替换custom_define_cluster_id。 执行部署 部署前,集群Node节点信息 [root@k8s-master01 ~]# [root@k8s-master01 ~]# kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-master01 Ready 50d v1.14.2 192.168.0.15 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 k8s-master02 Ready 50d v1.14.2 192.168.0.16 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 k8s-master03 Ready 50d v1.14.2 192.168.0.17 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 部署 [root@k8s-master01 ~]# kubectl apply -f deployment-vk.yaml serviceaccount/virtual-node-sa created clusterrolebinding.rbac.authorization.k8s.io/virtual-node-role-binding created deployment.apps/virtual-node-controller created 查看部署情况 [root@k8s-master01 ~]# kubectl get deploy/virtual-node-controller -n kube-system NAME READY UP-TO-DATE AVAILABLE AGE virtual-node-controller 1/1 1 1 161m 获取集群Node列表 [root@k8s-master01 ~]# kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-master01 Ready 50d v1.14.2 192.168.0.15 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 k8s-master02 Ready 50d v1.14.2 192.168.0.16 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 k8s-master03 Ready 50d v1.14.2 192.168.0.17 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 virtual-kubelet Ready agent 82m v1.11.2 172.30.176.3 验证 指定节点创建pod。 $ cat test-pod.yaml apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: centos image: centos:latest args: - /bin/sh - -c - date; sleep 6000h nodeName: virtual-kubelet 创建Pod [root@k8s-master01 ~]# kubectl create -f test-pod.yaml pod/test-pod created 检查Pod创建情况。 [root@k8s-master01 ~]# kubectl get pod/test-pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES test-pod 1/1 Running 0 95s 192.168.6.165 virtual-kubelet virtual-kubelet会为运行在VK节点的Pod添加Annotation [root@k8s-master01 ~]# kubectl get pod -o yaml test-pod apiVersion: v1 kind: Pod metadata: annotations: ProviderCreate: done k8s.aliyun.com/eci-instance-id: eci-2zeaak7c7i6xb5uqnw4m 通过ECI控制台查看。

1934890530796658 2020-03-20 17:41:55 0 浏览量 回答数 0

问题

LINUX日志系统之WEB日志(一)

麻子来了 2019-12-01 21:43:45 7487 浏览量 回答数 1

问题

[转载]Linux/UNIX 定时任务 cron 详解

我的中国 2019-12-01 21:51:12 1961 浏览量 回答数 1

问题

服务器日志There is insufficient memory for the Java Run

1163543301225520 2019-12-01 19:16:32 116 浏览量 回答数 1

问题

SLB 7层负载均衡“HUNG”问题追查

huiweiliu 2019-12-01 22:08:15 10958 浏览量 回答数 8

回答

postgres本身支持数据库备份操作,基于安装路径下bin目录下的两个脚本文件pg_dump pg_dumpall  一个支持单库备份,一个支持整个数据库备份 这里实现的是不同机子间的备份,例如我在101.62上面是线上数据库,我需要定时备份到101.68这台机子上。 以下是命令: -- 备份 pg_dump 数据库名 -h 要备份的数据库ip -p 你的端口 -U postgres > 备份结果文件名.dmp pg_dumpall -h 要备份的数据库ip -p 你的端口 -U postgres > 备份结果文件名.dmp example: pg_dump database -h 192.168.101.62 -p 5432 -U postgres > fileName pg_dumpall -h 192.168.101.62 -p 5432 -U postgres > fileName -- 还原 psql -h 要还原的数据库ip -p 端口 -U postgres -d 指定数据库名 < 备份文件地址 psql -h 要还原的数据库ip  -p 端口 -U postgres < 备份文件地址 example: psql -h 192.168.101.68 -p 5432 -U postgres -d new_db < fileName psql -h 192.168.101.68 -p 5432 -U postgres < fileName 注意:用到的脚本都在postgres的安装bin下,所以该方案要求接受备份文件的机子也需要安装postgres 这样显然,我这里需要的是定时备份,那么只需要利用linux的crontab 定时器就可以了 crontab相关命令:     crontab –e 添加定时任务     crontab -l 表示列出所有的定时任务     crontab -r 表示删除用户的定时任务   0 23 * * *  /temp/pgsql_backup.sh >> /temp/pgdata_export.log  2>&1   //例如每晚23点执行 这个命令指的是每晚23点执行脚本进行备份,日志写入/temp/pgdata_export.log中 crontab如果没有安装,centos执行yum安装即可:       yum -y install vixie-cron       yum -y install crontabs pgsql_backup.sh脚本为: #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/apache2/bin:/root/bin:/usr/local/pgsql/bin export LANG=zh_CN.UTF-8 export export PGPASSWORD=postgres   dest_folder=/temp/ dest_file=pgdata_$(date +%Y%m%d).dmp tar_file=pg_$(date +%Y%m%d).tar.gz   echo [$(date +'%F %H:%M:%S')]  准备导出postgresql数据库 导出文件地址为$dest_folder$dest_file echo [$(date +'%F %H:%M:%S')]  ..................正在导出............................ pg_dumpall -h 你需要备份的ip -p 你需要备份的端口 -U postgres > $dest_folder$dest_file   echo [$(date +'%F %H:%M:%S')]  导出成功,准备压缩已导出文件 压缩文件地址为$dest_folder$tar_file echo [$(date +'%F %H:%M:%S')]  ..................正在压缩............................   cd $dest_folder tar -czf $tar_file $dest_file   echo [$(date +'%F %H:%M:%S')]  压缩完毕,准备删除数据库导出文件 rm -f  $dest_folder$dest_file echo [$(date +'%F %H:%M:%S')] 数据库导出文件已删除 ———————————————— 版权声明:本文为CSDN博主「fwfg12113」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/fwfg12113/article/details/84643765

养狐狸的猫 2019-12-02 02:12:20 0 浏览量 回答数 0

问题

centos6.8服务器突然崩溃,并且无法输入指令,求大神帮忙。

mcxzadmin 2019-12-01 19:56:58 2812 浏览量 回答数 2

回答

“求知若饥,虚心若愚”——这个原本出自《全球概览》的俳句,因为乔布斯在斯坦福大学毕业演讲中的引用而备受推崇,流传成为 IT 界的至理名言之一。在编程界,亦有“代码胜于雄辩”、“Done is better than perfect”等警句,寥寥数语将编程工作者的形象特质描摹到了极致。程序员,就是技术至上、唯代码是瞻且必须不断武装自己的群体。 21 世纪,高薪、高端、高技术范儿已成为程序员的固有标签,在这个新的元年,CSDN 将基于一年一度的开发者大调查数据,以全新的视角深入发掘中国开发者群体的整体现状、应用开发技术以及开发工具/平台的发展趋势,呈现更真实、更全面且更有学习价值的开发者画像。 30 岁以下开发者人数占比超八成,全国有 19.6% 开发者月薪超过 1.7 万元; 六成开发者在使用 Java 语言,近五成开发者近期最想学 Python 语言; Spark、Redis 和 Kafka 正在成为企业大数据平台通用技术组件; 区块链技术近两年是热点,比特币和以太坊是两种主流的区块链开发平台; 人工智能技术日益受到企业和市场的关注,但 64% 企业尚未实现智能化,机器学习/深度学习算法工程师最为急缺; 近七成开发者认为未来 5G 网络的传输速率能达到 4G 网络的 10 倍以上; Apache 项目和 Linux 是开发者较为喜欢的开源项目; 半数开发者很少参与开源项目的开发、维护、运营和社区发展等。 软件开发准入门槛持续降低,近 2 成开发者月薪超过 1.7 万 30 岁以下开发者人数占比超八成,软件开发从业门槛持续降低 从 2015 年到 2019 年的调研数据来看:30 岁及以下的开发者人群占比在 8 成以上,一直是软件开发领域的主力军;全国近半数的开发者工作在一线城市(北京、上海、广州、深圳、天津);物联网、软件、IT 制造三个技术领域涵盖了国内 84% 以上的开发者;本科及以上学历占 8 成;92% 的开发者是男性。 和国外开发者年龄分布趋势大概一致,国内的软件开发群体一直呈现出越来越年轻化的特点。这是因为,一方面软件开发行业蓬勃发展,各行各业都需要软件开发相关人才,也有越来越多的毕业生选择从事该行业;另一方面,是因为编程语言、框架、云服务等基础设施的持续完善,从事软件开发的门槛在持续降低,更容易接纳新鲜血液,报告统计发现,本科学历是开发者的主力军,66% 的开发者拥有本科学历,而硕士研究生、博士研究生仅占 11%、1%。 八成以上开发者月薪在 5 千~3 万元之间,19.6% 开发者月薪超过 1.7 万元 通过结合受教育程度和薪资水平的数据特点来看,学历越高的人群中,月薪 1.7 万元以上的高收入比例越高。在一线城市(北京、上海、广州、深圳、天津)中,月薪超过 1.7 万元的开发者占比为 30%,该比例远高于国内其它城市。 开发者属于相对高薪的职业,尤其是在一线城市中,但不同开发者之间收入差距较大。软件开发是一个智力密集型的工作,不同开发者能够提供的价值差别很大,这就使得一个优秀开发者的收入远高于普通开发者:硕士和博士毕业的高收入者比率要远高于本科及以下的;金融和互联网行业的高收入比率最高。 自学是开发者持续学习的主要路径 软件开发行业日新月异,只有保持持续学习才能跟上技术变化的脚步,终身学习是现代人保持竞争力甚至是维持生存的必要手段。 从调研中可以看到,53% 的开发者会通过在未参加正式课程的情况下,自学一门新语言、框架或工具。但同时,也有半数的人参加过在职培训或者线下课程,相对于自学的灵活性而言,这类培训会更为系统和完整,对于长期的个人提升有所裨益,开发者可以适当选择。但与之相悖的是,只有不到 40% 的开发者,愿意为学习付费,这可能会导致参与的课程质量不够高。 Java 雄踞语言榜,Visual Studio 受开发者欢迎 Java 长盛:使用最多,开发者最想学 从编程语言来看,Java 是最多人使用的语言,而 JavaScript 和 SQL 分别是第二第三位。这三门语言,使用场景都很广泛,Java 一方面后端开发最常使用,生态成熟度无人可比;另一方面,Java 依然是 Android 上最重要的开发语言,与之相比 ,新兴的 Kotlin 只有 2% 的开发者在使用。而 JavaScript 不仅是前端开发的必备语言,还用在 Web 开发、小程序开发等场景下。 Java 和 Python 依然是开发者最希望学习的语言之一,只是相比之下,Python 的热度有所降低,这可能和机器学习没有去年那么火热有所关联。变化比较大的是 Go 语言,与去年相比,今年的调研中想学 Go 语言的开发者降低到了 4%,与之相似,Kotlin、R 的学习意愿也大幅降低。 从这个趋势也可以看到,如今的开发者更意愿去学习一些相对成熟度、用途更为广泛的语言,对一些代表新模式的语言乐衷程度有所降低。 七成以上在使用 Windows 操作系统,83% 在使用 MySQL 数据库 72% 开发者在使用 Windows 操作系统,18% 在使用 Linux 系列操作系统。在存储服务的使用上,MySQL 继续扩大其使用率到达了 83%,几乎是开发者必备的技能。和去年相比,Elasticsearch 出现在数据库使用的调研中,在大数据时代,Elasticsearch 作为提供搜索服务的第一选型,也必然会被越来越多的开发者学习和使用 Node.js 是相对使用普遍的技术框架 在 Web 开发上,前端使用 Vue.js 后端使用 Spring 是最常见的选型方案,与之相对应,Node.js 是最多被用到的框架,这和当今多端开发的趋势密不可分。后端用微服务架构,中间用 Node.js 粘合出适合 Web、Android、iOS 等不同端和场景使用的 APIs,是当下主流的部署方案之一,既可以前后端分离提高开发效率,又可以在保障服务稳定性的同时提升灵活性。而TensorFlow 成为开发者最期望学习的框架,这说明开发者依然对机器学习保持关注和热情。 Visual Studio 是最为普遍使用的开发环境 在开发环境的选择上,Visual Studio 是最为普遍使用的开发环境,这和微软对开发者的投入密不可分。微软投入了大量的研发力量,使得 Visual Studio 可以在各种操作系统进行各种编程语言的开发,其强大且完善的插件系统可以满足开发者的各种需求,使其可以超过 IntelliJ。 大数据平台以私有云部署为主,Spark 使用率高达 44% 私有云部署解决方案是企业构建大数据平台的主要方式 随着分布式计算和云平台的逐步成熟,目前大部分公司都有能力搭建自己的大数据平台。调研数据显示,81% 企业在进行大数据相关的开发和应用,50% 的企业选择私有云解决方案来部署大数据应用,28% 的企业选择自主研发。 仅 19% 企业使用商业发行版 Hadoop 版本搭建数据平台 调查报告发现,有 30% 以上的企业并没有使用相对成熟的 Hadoop 技术搭建数据平台,这些企业的算法性能会很大程度上受限于低效的平台,更不可能开发出更高效的数据分析算法。但幸运的是大部分企业都基于商业版或者社区版 Hadoop 搭建了数据平台,这些公司的侧重点主要在应用发现和算法的设计层面,更有可能在不久的将来实现大数据的价值。 Spark 是企业大数据平台最普遍的组件 Apache Spark 是一个处理大规模数据的快速通用引擎,它可以独立运行,也可以在 Hadoop、Mesos、云端运行,它可以访问各种数据源包括 HDFS、Cassandra、HBase 和 S3,可以提升 Hadoop 集群中的应用在内存和磁盘上的运行速度。Spark 生态系统中除了核心 API 之外,还包括其他附加库,可以为大数据分析和机器学习领域提供更多的能力。本次调研中,Spark 是使用最普遍的大数据平台组件,使用率达到44%,而MapReduce使用率仅为21%。 分布式文件系统 HDFS 作为核心组件之一,使用率也达到了 39%。企业对大数据平台应用最多的场景是统计分析、报表生成及数据可视化,38% 企业使用ELK(ElasticSearch + Logstash + Kibana)实时日志分析平台。 综上所述,目前大数据的发展热潮令人欢欣鼓舞。一个优秀的大数据团队,需要有对产品开发具有高敏感性同时对技术有一定理解的人才,同时需要理论基础极其扎实,能对实际问题进行抽象建模和算法设计的人才。只有双管齐下,在产品和技术方面进行深层次探索,才能真正实现大数据产业的繁荣。 区块链质变,比特币逆袭以太坊成 TOP 1 开发平台 22% 的开发者正在用或者准备用区块链技术解决技术问题 区块链技术的发展,是一个量变到质变的过程。相比于 2018 年,对区块链和加密货币了解的人从 22% 增长到 32%,准备尝试用区块链技术解决一些问题的人数从 14% 增长到 16%,仅有 4% 的人对区块链完全不了解。 43% 的受访者在从事公有链(比特币、以太坊等)的开发 本次调研中,43% 的受访者在从事公有链(比特币、以太坊等)的开发。目前行业侧重发展的方向为解决方案、公链及联盟链,公有链由于其自带激励机制,对于普通开发者有直接的回馈,所以上面开发者占比高也比较合情理。行业解决方案从去年的 27% 增加到今年的 36%,说明传统行业开发者对区块链的认可度在增加。 区块链本质上是技术,落地场景及实际应用才是连接社会效益的关键。 比特币和以太坊是当前两种主流的区块链开发平台 在行业开发者的印象中,以太坊一直是开发平台领域的头号玩家。但今年数据显示,以太坊从 2018 年的 44% 占比第一,降到 24%;比特币从 2018 年的 28%,上升到 35%,占比第一。比特币在行业内外仍然拥有最强共识,在闪电网络的加持下,大家也似乎感受到比特币离商用也不再遥远了。 金融是普遍认为的行业应用方向 金融行业是普遍认为的行业应用方向,占 36%。区块链本身具备的防篡改、可追溯的特点,能大大降低金融行业监管成本,不过金融的进入门槛相对也较高,需要各方面技术的配合。其次,智能硬件和物联网也被认为是主流应用方向,占 14%。不过相比其他众多已经很成熟的技术,依托区块链的解决方案在实际使用中,往往面临必要性缺失的问题,因此区块链应用发展仍任重道远。 在区块链结合行业之前,更加要重视与其他新技术的结合和协同:物联网设备能够提供大量数据,5G 能够提供高速传输,存储可以解决区块存放的问题等。 算法工程师最急缺,TensorFlow 占据 AI 深度学习框架榜首 64% 的企业尚未实现智能化 在经历了 2019 年的行业低谷期之后,无论是行业巨头还是新兴独角兽,都开始审视 AI 能够切实落地的场景。调研数据显示,14% 的企业尚无信息化基础,27% 的企业实现了事务处理数字化,22% 的企业具备商业智能基础设施,实现描述性分析。使用机器学习实现预测性分析和决策优化的企业占 16%,而在业务中全面使用 机器学习/深度学习算法工程师最急缺 在岗位分布上,由于深度学习是以大数据为基础的,而感知智能中的计算机视觉又是目前深度学习较为成熟的应用,所以,机器学习和深度学习工程师,以及数据工程师、计算机视觉工程师排行在前三位。当前最急缺的岗位也是机器学习/深度学习算法工程师、数据科学家/数据分析师/数据挖掘工程师岗位。 53% 的开发者表示其团队急缺机器学习/深度学习算法工程师,37% 表示急缺数据科学家/数据分析师/数据挖掘工程师。 TensorFlow是人工智能领域主流深度学习框架 此次调研中,TensorFlow 使用普及率达到 48%。从技术本身的角度来看,较为成熟的 TensorFlow 成为 AI 工程师的首选深度学习框架,Torch/PyTorch由于其开发效率较高,也得到了较多支持。 35% 开发者选用国产 AI 芯片应用于自己的 AI 开发 在 AI 芯片领域,国内厂商也开始弯道超车,越来越多的开发者也开始关注国内 AI 芯片的进展。调查数据显示,选用国产 AI 芯片应用于自己的 AI 开发时最看重的因素方面,对主流 AI 框架的支持能力是最普遍的因素,占 35%。 物联网云平台三足鼎立:阿里物联、华为云、百度 IoT 69% 的开发者认为未来 5G 网络的传输速率能达到 4G 的 10 倍以上 每一代新型的通信系统总是能带来更大的带宽。据报告显示,近七成开发者认为未来 5G 网络的传输速率能够达到 4G 网络的 10 倍以上。 影响 5G 普及的三大因素:5G 套餐价格未定、运营商的开发程度、需要更换手机 由于目前 5G 网络使用者较少,费用较低廉的套餐还没有推出,第一代 5G 终端不太成熟等原因,目前 87% 的开发者认为 5G 套餐费用过高,并且大部分开发者认为 5G 网络目前覆盖范围有限,因此将近 40% 的开发者正处于观望阶段。 值得一提的是,本次调查中 62% 的开发者认为,5G 时代应该加强对个人隐私的保护,这反映出目前社会对数据隐私越来越重视的整体趋势。 阿里物联和华为云是应用相对普遍的 IoT 云平台 根据调查,2019 年物联网云平台呈现三足鼎立的趋势:阿里物联、华为云、百度 IoT 成为用户最多的三种物联网平台,并且和第四名中移物联远远拉开了差距,这和我们的实际使用体验一致。 未来的基础物联网平台可能会继续呈现以偏硬件实现为主的华为云和以偏软件体验为主的阿里、百度物联平台的三足鼎立局面。 物联网技术开发:Linux 和 Windows 是使用较多的操作系统 Linux 和 Windows 是较普遍的操作系统,使用率分别为 51%、44%。目前在物联网设备开发过程中,Linux、Windows 和 Android 较为普遍,依然延续了 PC 平台的开发者操作系统份额。虽然华为、阿里等公司在 2019 年均发布了自己的物联网专用操作系统,但还并未得到开发者的大规模认可,大公司的物联网操作系统发展之路依然任重而道远。 Wi-Fi 是应用最普遍的物联网通信技术 在本次调研中,近距离通信(比如 Wi-Fi 和蓝牙)是现存物联网开发者最主要的通信方式。然而这种比重可能会随着未来 3~4 年内车联网的大规模商业化产生变化,汽车、工业物联、智能电网这类高移动性、高可靠和低延迟物联网场景会更适合需要整体规划的运营商网络。 六成开源开发者无收入,Apache 项目最受喜欢 77% 开发者每周在开源上投入时间不超过 5 小时 无论是大数据、区块链、人工智能还是物联网领域,其中最为重要的、最受欢迎的技术都是开源的。但是报告统计发现,有超过一半的开发者很少参与开源项目,每周在开源上投入不超过 5 小时的占 77%,其中,1 小时以内的占 31%。此外,65% 的开发者不曾在开源上获得收入,获得不错收入的仅占一成。 开发者最喜欢的开源项目是 Apache 25% 开发者最喜欢 Apache,24% 开发者最喜欢 Linux。作为全球最大的软件基金会,开发者用过的诸多项目,例如 Dubbo、Log4j、Maven、RocketMQ 和 Tomcat 等,均孵化自 Apache。 国内开源的现状虽然近年来已经有了很大的发展,但是一个残酷的事实是,老兵正在离开这个行业,离开一线开发的队伍:报告数据显示,30 岁以下的开发者人数超过 82%,接触开源的时间在 5 年以内的开发者超过 83%。随着那些经验丰富的老兵转行或是进入管理层,不再写代码、也不再参与开源的事实也就凸显出来.....未来开源的建设,依然任重而道远。 在数据中寻找共性,《2019 - 2020 中国开发者调查报告》全面且真实地展现中国开发者及技术现状,希望对您的学习或工作有所帮助。 ———————————————— 版权声明:本文为CSDN博主「CSDN资讯」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/csdnnews/article/details/104538091

问问小秘 2020-03-11 16:46:19 0 浏览量 回答数 0

问题

史上有哪些程序员实用工具网站?

问问小秘 2020-03-14 23:11:50 4148 浏览量 回答数 2

回答

请参考个人博客:https://blog.csdn.net/u010870518/article/details/79450295 在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使用B+树! 学过数据结构的一般对最基础的树都有所认识,因此我们就从与我们主题更为相近的二叉查找树开始。 一、二叉查找树 (1)二叉树简介: 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: 1、任意节点左子树不为空,则左子树的值均小于根节点的值; 2、任意节点右子树不为空,则右子树的值均大于于根节点的值; 3、任意节点的左右子树也分别是二叉查找树; 4、没有键值相等的节点; 上图为一个普通的二叉查找树,按照中序遍历的方式可以从小到大的顺序排序输出:2、3、5、6、7、8。 对上述二叉树进行查找,如查键值为5的记录,先找到根,其键值是6,6大于5,因此查找6的左子树,找到3;而5大于3,再找其右子树;一共找了3次。如果按2、3、5、6、7、8的顺序来找同样需求3次。用同样的方法在查找键值为8的这个记录,这次用了3次查找,而顺序查找需要6次。计算平均查找次数得:顺序查找的平均查找次数为(1+2+3+4+5+6)/ 6 = 3.3次,二叉查找树的平均查找次数为(3+3+3+2+2+1)/6=2.3次。二叉查找树的平均查找速度比顺序查找来得更快。 (2)局限性及应用 一个二叉查找树是由n个节点随机构成,所以,对于某些情况,二叉查找树会退化成一个有n个节点的线性链。如下图: 大家看上图,如果我们的根节点选择是最小或者最大的数,那么二叉查找树就完全退化成了线性结构。上图中的平均查找次数为(1+2+3+4+5+5)/6=3.16次,和顺序查找差不多。显然这个二叉树的查询效率就很低,因此若想最大性能的构造一个二叉查找树,需要这个二叉树是平衡的(这里的平衡从一个显著的特点可以看出这一棵树的高度比上一个输的高度要大,在相同节点的情况下也就是不平衡),从而引出了一个新的定义-平衡二叉树AVL。 二、AVL树 (1)简介 AVL树是带有平衡条件的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现平衡,左右子树树高不超过1,和红黑树相比,它是严格的平衡二叉树,平衡条件必须满足(所有节点的左右子树高度差不超过1)。不管我们是执行插入还是删除操作,只要不满足上面的条件,就要通过旋转来保持平衡,而旋转是非常耗时的,由此我们可以知道AVL树适合用于插入删除次数比较少,但查找多的情况。 从上面是一个普通的平衡二叉树,这张图我们可以看出,任意节点的左右子树的平衡因子差值都不会大于1。 (2)局限性 由于维护这种高度平衡所付出的代价比从中获得的效率收益还大,故而实际的应用不多,更多的地方是用追求局部而不是非常严格整体平衡的红黑树。当然,如果应用场景中对插入删除不频繁,只是对查找要求较高,那么AVL还是较优于红黑树。 (3)应用 1、Windows NT内核中广泛存在; 三、红黑树 (1)简介 一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,可以是red或black。通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有一条路径会比其它路径长出两倍。它是一种弱平衡二叉树(由于是若平衡,可以推出,相同的节点情况下,AVL树的高度低于红黑树),相对于要求严格的AVL树来说,它的旋转次数变少,所以对于搜索、插入、删除操作多的情况下,我们就用红黑树。 (2)性质 1、每个节点非红即黑; 2、根节点是黑的; 3、每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的; 4、如果一个节点是红的,那么它的两儿子都是黑的; 5、对于任意节点而言,其到叶子点树NULL指针的每条路径都包含相同数目的黑节点; 6、每条路径都包含相同的黑节点; (3)应用 1、广泛用于C++的STL中,Map和Set都是用红黑树实现的; 2、著名的Linux进程调度Completely Fair Scheduler,用红黑树管理进程控制块,进程的虚拟内存区域都存储在一颗红黑树上,每个虚拟地址区域都对应红黑树的一个节点,左指针指向相邻的地址虚拟存储区域,右指针指向相邻的高地址虚拟地址空间; 3、IO多路复用epoll的实现采用红黑树组织管理sockfd,以支持快速的增删改查; 4、Nginx中用红黑树管理timer,因为红黑树是有序的,可以很快的得到距离当前最小的定时器; 5、Java中TreeMap的实现; 四、B/B+树 说了上述的三种树:二叉查找树、AVL和红黑树,似乎我们还没有摸到MySQL为什么要使用B+树作为索引的实现,不要急,接下来我们就先探讨一下什么是B树。 (1)简介 我们在MySQL中的数据一般是放在磁盘中的,读取数据的时候肯定会有访问磁盘的操作,磁盘中有两个机械运动的部分,分别是盘片旋转和磁臂移动。盘片旋转就是我们市面上所提到的多少转每分钟,而磁盘移动则是在盘片旋转到指定位置以后,移动磁臂后开始进行数据的读写。那么这就存在一个定位到磁盘中的块的过程,而定位是磁盘的存取中花费时间比较大的一块,毕竟机械运动花费的时候要远远大于电子运动的时间。当大规模数据存储到磁盘中的时候,显然定位是一个非常花费时间的过程,但是我们可以通过B树进行优化,提高磁盘读取时定位的效率。 为什么B类树可以进行优化呢?我们可以根据B类树的特点,构造一个多阶的B类树,然后在尽量多的在结点上存储相关的信息,保证层数尽量的少,以便后面我们可以更快的找到信息,磁盘的I/O操作也少一些,而且B类树是平衡树,每个结点到叶子结点的高度都是相同,这也保证了每个查询是稳定的。 总的来说,B/B+树是为了磁盘或其它存储设备而设计的一种平衡多路查找树(相对于二叉,B树每个内节点有多个分支),与红黑树相比,在相同的的节点的情况下,一颗B/B+树的高度远远小于红黑树的高度(在下面B/B+树的性能分析中会提到)。B/B+树上操作的时间通常由存取磁盘的时间和CPU计算时间这两部分构成,而CPU的速度非常快,所以B树的操作效率取决于访问磁盘的次数,关键字总数相同的情况下B树的高度越小,磁盘I/O所花的时间越少。 注意B-树就是B树,-只是一个符号。 (2)B树的性质 1、定义任意非叶子结点最多只有M个儿子,且M>2; 2、根结点的儿子数为[2, M]; 3、除根结点以外的非叶子结点的儿子数为[M/2, M]; 4、每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字) 5、非叶子结点的关键字个数=指向儿子的指针个数-1; 6、非叶子结点的关键字:K[1], K[2], …, K[M-1];且K[i] < K[i+1]; 7、非叶子结点的指针:P[1], P[2], …, P[M];其中P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于K[M-1]的子树,其它P[i]指向关键字属于(K[i-1], K[i])的子树; 8、所有叶子结点位于同一层; 这里只是一个简单的B树,在实际中B树节点中关键字很多的,上面的图中比如35节点,35代表一个key(索引),而小黑块代表的是这个key所指向的内容在内存中实际的存储位置,是一个指针。 五、B+树 (1)简介 B+树是应文件系统所需而产生的一种B树的变形树(文件的目录一级一级索引,只有最底层的叶子节点(文件)保存数据)非叶子节点只保存索引,不保存实际的数据,数据都保存在叶子节点中,这不就是文件系统文件的查找吗? 我们就举个文件查找的例子:有3个文件夹a、b、c, a包含b,b包含c,一个文件yang.c,a、b、c就是索引(存储在非叶子节点), a、b、c只是要找到的yang.c的key,而实际的数据yang.c存储在叶子节点上。 所有的非叶子节点都可以看成索引部分! (2)B+树的性质(下面提到的都是和B树不相同的性质) 1、非叶子节点的子树指针与关键字个数相同; 2、非叶子节点的子树指针p[i],指向关键字值属于[k[i],k[i+1]]的子树.(B树是开区间,也就是说B树不允许关键字重复,B+树允许重复); 3、为所有叶子节点增加一个链指针; 4、所有关键字都在叶子节点出现(稠密索引). (且链表中的关键字恰好是有序的); 5、非叶子节点相当于是叶子节点的索引(稀疏索引),叶子节点相当于是存储(关键字)数据的数据层; 6、更适合于文件系统; 非叶子节点(比如5,28,65)只是一个key(索引),实际的数据存在叶子节点上(5,8,9)才是真正的数据或指向真实数据的指针。 (3)应用 1、B和B+树主要用在文件系统以及数据库做索引,比如MySQL; 六、B/B+树性能分析 n个节点的平衡二叉树的高度为H(即logn),而n个节点的B/B+树的高度为logt((n+1)/2)+1;   若要作为内存中的查找表,B树却不一定比平衡二叉树好,尤其当m较大时更是如此。因为查找操作CPU的时间在B-树上是O(mlogtn)=O(lgn(m/lgt)),而m/lgt>1;所以m较大时O(mlogtn)比平衡二叉树的操作时间大得多。因此在内存中使用B树必须取较小的m。(通常取最小值m=3,此时B-树中每个内部结点可以有2或3个孩子,这种3阶的B-树称为2-3树)。 七、为什么说B+树比B树更适合数据库索引? 1、 B+树的磁盘读写代价更低:B+树的内部节点并没有指向关键字具体信息的指针,因此其内部节点相对B树更小,如果把所有同一内部节点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多,一次性读入内存的需要查找的关键字也就越多,相对IO读写次数就降低了。 2、B+树的查询效率更加稳定:由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。 3、由于B+树的数据都存储在叶子结点中,分支结点均为索引,方便扫库,只需要扫一遍叶子结点即可,但是B树因为其分支结点同样存储着数据,我们要找到具体的数据,需要进行一次中序遍历按序来扫,所以B+树更加适合在区间查询的情况,所以通常B+树用于数据库索引。 PS:我在知乎上看到有人是这样说的,我感觉说的也挺有道理的: 他们认为数据库索引采用B+树的主要原因是:B树在提高了IO性能的同时并没有解决元素遍历的我效率低下的问题,正是为了解决这个问题,B+树应用而生。B+树只需要去遍历叶子节点就可以实现整棵树的遍历。而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作或者说效率太低。 ———————————————— 版权声明:本文为CSDN博主「徐刘根」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u010870518/java/article/details/79450295

AA大大官 2020-03-31 14:54:01 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播