Linux
JNI,介绍Java与native通信的机制与实例。
枫竹梦
枫竹梦,像风一样追逐自己的梦想!
展开
-
添加用户到sudo
添加用户到sudosudo用户的配置在文件/etc/sudoers中,一般使用visudo进行修改,当然这时是需要root权限的。更通用的做法是添加一个文件到/etc/sudoers.d下。例如我们需要添加用户mn到sudo,在/etc/sudoers.d下创建文件mn,内容如下:mn ALL=(ALL) ALL解释一下:mn表示用户名第一个ALL表示在任何一个host下执行第二个ALL表示可以让mn以所有用户身份执行命令第三个ALL表示可以执行任何命令其他示例让mn只能在d原创 2022-05-02 22:54:09 · 3865 阅读 · 3 评论 -
Ubuntu卸载安装包
查询安装包sudo dpkg --get-selections | grep -i <package-name>卸载安装包sudo apt purge <package-name>原创 2022-05-02 21:15:30 · 2166 阅读 · 0 评论 -
语义化版本规范
语义化版本规范引进到日常的版本管理与发布。参考:这里原创 2019-12-04 00:26:51 · 247 阅读 · 0 评论 -
新建文件所属组设置
问题来源问题场景1:在Linux进行开发Web程序,Web root目录下某些目录需要被www用户进行写操作,而开发过程中使用的用户假设为mn,新建的目录和文件默认用户/组为mn:mn,这对www用户来讲是不可写的。最简单的办法是使用chown -R mn:www xxx设置用户/组为mn:www。这样每次有新的文件都需要进行设置,十分不方便。问题场景2:对于运维人员来讲,需要在dirA目原创 2017-08-31 10:54:29 · 4425 阅读 · 0 评论 -
valgrind报错VEX temporary storage exhausted
最近在使用valgrind进行内存泄漏检测是时,竟然报错,如下:VEX temporary storage exhausted.Pool = TEMP, start 0x3967c4e8 curr 0x39b387b8 end 0x39b41027 (size 5000000)vex: the `impossible' happened: VEX temporary storag原创 2017-06-19 09:59:01 · 2798 阅读 · 0 评论 -
GCC的-wl,-rpath=<link_path>参数
使用GCC编译动态链接库的项目时,在其他目录下执行很可以出现找不到动态链接库的问题。这种情况多发生在动态链接库是自己开发的情况下,原因就是程序运行时找不到去何处加载动态链接库。可能会说在编译时指定了链接的目录啊!编译时指定的 -L的目录,只是在程序链接成可执行文件时使用的。程序执行时动态链接库加载不到动态链接库。解决办法有两种,第一程序链接时指定链接库的位置,就是使用-wl,-原创 2017-04-27 13:32:29 · 19162 阅读 · 1 评论 -
CLion提示can't find stdio.h等错误
先上解决办法,启动参数如下:$ LANG=en_US.UTF-8 /path/to/clion.sh查了好知久,竟然就由于编码的原因。可是Ubuntu已经设置为英文UTF-8,还是可以通过上面的方式解决问题。原创 2017-04-05 17:45:51 · 7983 阅读 · 4 评论 -
百万连接的系统内核参数调整
1.操作系统的最大打开文件数(Max Open Files)查看cat /proc/sys/fs/file-max如果没有达到百万级别,那么修改文件/etc/sysctl.conf的内容(没有就添加)fs.file-max=1002000由于系统的限制是全局,也就是对所有的进程打开的文件数的总和,所以,这里设置的大一些,留一些给其他进程使用。然后,更新系统服务# Linuxs原创 2017-01-23 00:04:48 · 1128 阅读 · 0 评论 -
sudo执行提示Command not found
运行一命令在普通用户下可行,切换到root用户依然可行,但在普通用户下使用sudo执行时,提示Command not found。修改/etc/sudoers文件,找到类似下面的一行:Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin将要执行的命令所在的目录添加到后面,即可,如:Defaults se原创 2017-01-22 10:40:15 · 20203 阅读 · 0 评论 -
vim编辑makefile时临时不展开tab为空格
可以先敲ctrl-v组合键,再敲tab键,这样就不会被转换成空格了。给自己的备忘!原创 2016-11-30 23:25:31 · 2301 阅读 · 0 评论 -
配置composer代理
composer config -g repo.packagist composer https://packagist.phpcomposer.com原创 2016-10-14 17:48:46 · 6624 阅读 · 0 评论 -
字符编码
字符编码1. GB2312、GBK、GB18030的介绍1.1 GB2312GB2312是GB2312-80的简称,是1981年5月1日实施的。GB2312采用双字节编码,每个字节使用7位。共收录7445个图形字符。编码范围为2121H-777EH,与ASCII有重叠,通行的方法将每个字节最高位置为1。1.2 GBK由于GB2312收到文字无法满足通常的使用,在1995年12月1号发布了第一版GBK原创 2017-06-19 15:58:28 · 530 阅读 · 0 评论 -
Ctags快速入门
Ctags快速入门在vim下阅读代码,特别是阅读不熟悉的代码时,ctags是一个提高效率的强大的工具。1. ctags是什么?ctags可以将代码中的函数、方法、类、变量和其他的标识符进行索引,将索引结果进行排序存储在tags中。在该文件中每一行就是一个tag。根据语言及生成时参数的不同,存储的具体内容也是不同的。ctags当前支持41种语言,具体参考ctags支持的语言,若要新增语言也是十分方便的原创 2017-06-19 16:49:09 · 2616 阅读 · 0 评论 -
在Linux下创建7种类型的文件
在测试的时候有时会需要每种类型的文件,在系统中进行搜索都会找到,当然最方便的还是手动创建它们进行测试使用。普通文件:$ touch regular目录:$ mkdir directory符号链接:$ ln -s ./regular symbolicFIFO:$ mknod fifo p字符特殊文件:# mknod characte原创 2017-09-07 23:12:02 · 7324 阅读 · 0 评论 -
Ubuntu查询已经安装的软件
Ubuntu查询已经安装的软件,由于同时使用源码和apt-get安装了相同库的不同版本,在开发的过程中可能引起问题。使用如下命令查询已经安装的软件包。dpkg --get-selections原创 2017-11-15 15:22:35 · 3071 阅读 · 0 评论 -
bashrc与profile理解
(0) 写在前面有些名词可能需要解释一下。(也可以先不看这一节,在后面看到有疑惑再上来看相关解释)$PS1和交互式运行(running interactively): 简单地来说,交互式运行就是在终端上输入指令运行,非交互式运行就是执行sh文件。交互式运行的时候echo $PS1会输出一长串字符。非交互式运行echo $PS1,会输出#或$。$代表普通用户,#代表root。非交互式转载 2017-12-15 17:15:52 · 1085 阅读 · 0 评论 -
Linux查找是发送SIGKILL信号的进程
背景最近在开发服务器上遇到了一件奇怪的事情,同事反馈之前运行着正常的程序,现在现在运行一段时间会退出,而且没有日志输出。询问后,出现这个现象是在周末由于停电重启之后。停电重启?退出,无日志?有关系吗?问题定位由于程序在常驻,所以使用了两个进程相互守护。是守护出了问题吗?如果是的话,应该会有日志输出。在服务器上查看程序的过程中又发现新的疑点,使用vim打开带有push的文件名的文件,原创 2018-01-12 11:26:53 · 7260 阅读 · 0 评论 -
ps命令中STAT列表达的含义
使用ps命令查看进程的当前状态,其中STAT列的含义如下:D 不可中断的休眠。通常是IO。R 运行。正在运行或者在运行队列中等待。S 休眠。在等待某个事件,信号。T 停止。进程接收到信息SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号。W paging,在2.6之后不用。X 死掉的进程,不应该出现。Z 僵死进程。通常还会跟随如下字母表示更详细的状原创 2018-02-01 10:33:00 · 10219 阅读 · 0 评论 -
Linux下不太常用的命令
其实想表达的意思是Linux常用的命令但是枫竹梦不还知道的那些。1 修改用户这里要说的是,将已经存在的用户的登录默认shell修改为nologin, 这样这不会出现在Ubuntu桌面版的登录界面了。$ usermod -s /usr/sbin/nologin www上面将用户www的默认登录shell修改为了nologin。2 取消shell中的变量定义比如在shell中...原创 2018-08-13 20:06:54 · 380 阅读 · 0 评论 -
svn仓库转换为git仓库
1 转换方法主要的方法参见这里。简单列举:1.1 获取提交者列表svn的提交者只有用户名而没有邮箱,需要进行转换。svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt...原创 2019-05-27 16:48:48 · 3379 阅读 · 0 评论 -
CentOS 4.8 無法使用yum
錯誤使用yum安裝軟件時,提示:Setting up Install ProcessSetting up repositoriesnot using ftp, http[s], or file for repos, skipping - Invalid release/repo/arch combinationCannot find a valid baseurl for repo: u...原创 2019-05-27 16:51:15 · 594 阅读 · 0 评论 -
Redis相关的内核参数解释与设置
参数somaxconn/proc/sys/net/core/somaxconn对于TCP连接,Client和Server连接需要三次握手来建立连接,Server端监听状态会由LISTEN切换为ESTABLISHED,此时accept函数返回。该参数就是设置连接建立之前,即三次握手完成之前,也就是accept函数返回之前,连接队列的大小的最大值。这个连接队列大小参数是由listen函原创 2016-10-24 09:40:14 · 1084 阅读 · 0 评论 -
YAML学习
YAML官方参考建议按需学习,强制自己不要看超10分钟。YAML原创 2016-10-11 17:45:23 · 540 阅读 · 0 评论 -
gem Errno::ECONNRESET: Connection reset by peer - SSL_connect
问题描述在使用gem安装软件包时,会时常遇到下面的问题:ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) Errno::ECONNRESET: Connection reset by peer - SSL_connect (xxx)问题解决办法很多人不知道原因是什么,有怀疑OpenSSL心跳出血问题的,用怀疑GF原创 2015-11-03 09:20:39 · 3019 阅读 · 0 评论 -
could not read symbols: Archive has no index;
could not read symbols: Archive has no index; run ranlib to add one collect2: ld returned 1 exit status运行ranlib后仍然无效,这时该怎么办呢?第1步首先,运行ar进行测试,检查打包的正确性。ar -t libfurzoom.a如果输出了应该打包在内的文件名,则表示正确,请继续下一步。如原创 2015-11-24 10:05:29 · 8679 阅读 · 0 评论 -
《UNIX网络编程》daytimetcpcli测试
对于刚刚接触网络的人来说,《UNIX网络编程》中第一个例子(daytimetcpcli)可能就测试不通过。也许你试着继续向后读来,自己写一个服务程序来解决这个问题,但是daytime服务也是标准服务的一个例子。你也可以对公网中的daytime服务器进行连接测试。下面先给出源代码,然后介绍如何查找daytime服务器原创 2015-10-13 17:14:26 · 1750 阅读 · 0 评论 -
MySQL备份数据库
直接在命令行中将对MySQL进行备份,可以使用mysqldump命令,如:mysqldump -uroot -p123456 database_name > backup.sql如上是使用root用户,密码为123456,要备份的数据库名为database_name,备份的文件为backup.sql。这些需要根据具体情况时行更改。更多请参考MySQL。原创 2015-10-28 15:16:16 · 860 阅读 · 0 评论 -
Linux修改主机名称
一般我们在安装操作系统的时候会设置主机的名字,但是很多时候,安装的过程中并不关注这个问题,而是希望更快地将系统安装完成。有时它们的名字可能会是bogon,或者debian等等。但是很多时候,我使用ssh来连接服务器的时候,希望在界面上直接显示出主机的名字,特别是在同时连接多于两个主机的时候,给我更直接的提示,提醒我当前操作的主机是哪一个。更改主机的名称有多种方法。临时更改运行中的主机的名字在Linu原创 2015-10-29 09:49:03 · 2827 阅读 · 0 评论 -
Linux查看硬盘使用情况
dfdf - report file system disk space usagedf是查看文件系统磁盘使用情况的命令。如:# df -hFilesystem Size Used Avail Use% Mounted on/dev/vda2 95G 51G 40G 56% /tmpfs 1.9G 80K 1.9G 1% /de原创 2015-10-10 10:10:23 · 833 阅读 · 0 评论 -
vi/vim滚动屏幕
VIM帮助文档如是说Q_sc ScrollingCTRL-E N CTRL-E window N lines downwards (default: 1)CTRL-D N CTRL-D window N lines Downwards (default: 1/2 window)CTRL-F N原创 2015-10-09 09:43:42 · 3250 阅读 · 0 评论 -
起泡排序
起泡排序算法思路有序概念在由一组整数组成的序列A[0, n - 1]中,满足A[i - 1] < A[i]的相邻元素称作顺序的;否则是逆序的。不难看出,有序序列中每一对相邻元素都是顺序的,亦即,对任意1 < i < n都有A[i - 1] < A[i];反之,所有相邻元素均顺序的序列,也必然整体有序。思路由有序序列的上述特征,我们可以通过不断改善局部的有序性实现整体的有序:从前向后依次检查每一对相邻原创 2015-10-08 11:56:07 · 1433 阅读 · 0 评论 -
Linux启动ssh服务
Linux启动ssh服务在Linux下启动ssh服务使用如下命令其一即可:$ service sshd start$ /etc/init.d/sshd start开机启动可以将命令添加到/etc/rc.local文件的末尾即可。更多请参考Linux运维。原创 2015-10-20 09:40:53 · 2416 阅读 · 0 评论 -
MySQL几个重要的目录
MySQL几个重要的目录1 数据库目录/var/lib/mysql/ 2 配置文件/usr/share/mysql(mysql.server命令及配置文件) 3 相关命令/usr/bin(mysqladmin mysqldump等命令) 4 启动脚本/etc/rc.d/init.d/(启动脚本文件mysql的目录) 更多请参考MySQL。原创 2015-11-02 10:16:28 · 743 阅读 · 0 评论 -
pkg-config设置
pkg-config在一些源码管理中会被使用到。介绍上网查资料,知道了pkg-config这个东西,下面简单介绍一下。pkg-config提供了下面几个功能:检查库的版本号。如果所需要的库的版本不满足要求,它会打印出错误信息,避免链接错误版本的库文件。获得编译预处理参数,如宏定义,头文件的位置。获得链接参数,如库及依赖的其它库的位置,文件名及其它一些连接参数。自动加入所依赖的其它库的设置。原创 2016-01-08 09:29:01 · 1682 阅读 · 0 评论 -
Linux信号处理
枫竹梦furzoom 信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式。在Linux系统中,根据POSIX标准扩展以后的信号机制,不仅可以用来通知某种程序发生了什么事件,还可以给进程传递数据。一、信号的来源信号的来源可以有很多种试,按照产生条件的不同可以分为硬件和软件两种。原创 2016-09-07 15:05:15 · 981 阅读 · 0 评论 -
OSI模型网络分层
OSI TCP/IP --- -------应用层表示层 应用层会话层----- -------传输层 TCP UDP----- -------网络层 IPv4/IPv6-----原创 2015-10-14 17:33:20 · 853 阅读 · 0 评论 -
error while loading shared libraries的解決方法
问题今天在安装测试websockets服务端时,运行时提示 ……error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory……Oh, MY GOD!!!找不到库文件,不可能,不是刚刚才编译好的啊?!排查解决首先,使用locate查看具体的文件是否原创 2015-11-13 15:09:24 · 6068 阅读 · 0 评论 -
解决/usr/bin/ld: cannot find -lmysqlclient错误
类似/usr/bin/ld: cannot find -xxxx的错误有很多, 首先我们可以最简单的判断一下:这类情况一般是由于缺乏某某库文件, 又或者可能是由于已存在的库问题版本不对造成的一般都是解决的办法就是安装缺乏的devel包就可以解决, 当然还有其他的未知因素, 我们看一个实例:我在一台装centos5.2 x86_64的系统上配置php环境, 提示这个错误/usr/bin/ld: can原创 2016-06-07 10:17:21 · 8206 阅读 · 0 评论 -
Linux系统资源查看与设置
/proc/sys/fs/file-max = 65536/proc/sys/net/ipv4/tcp_fin_timeout = 15/proc/sys/net/ipv4/tcp_tw_recycle = 1# ulimit -n 65536(未完待续)原创 2016-05-09 16:05:06 · 701 阅读 · 0 评论 -
Redmine后台修改admin密码
Redmine后台修改admin密码进入redmine安装目录,假设redmine安装在/var/www/html/redmine/目录下。 cd /var/www/html/redmine/script执行如下命令,进入ruby,根据当前使用环境不同,使用不同的参数,如:production,development,test等。 ./rails console production取得你原创 2016-05-09 16:03:40 · 11371 阅读 · 0 评论