
系统
xxb249
电脑爱好者,半个电脑程序员
展开
-
TLS/SSL证书彻底扫盲
TLS/SSL关于证书理解与单双向认证原创 2023-02-17 20:38:50 · 1370 阅读 · 0 评论 -
JAVA中使用jks做为证书管理
文章目录前言一、转换总结前言如果想开启ssl/tls服务,必须要要有证书才可以,然而java使用的证书格式默认是jks(java key store),所以通常需要将证书格式进行转化。不知道为什么不能直接使用openssl生成的格式一、转换#!/bin/sh# password=mypassword# convert pem to pkcs12if [ ! -n "$1" ]; then echo "pelease input pem file" exitfiif原创 2022-04-18 17:09:15 · 2415 阅读 · 0 评论 -
Linux磁盘根目录100%解决方式
今天遇到根目录磁盘空间占用100%,具体如下所示:root@localhost:~$ df -lhFilesystem Size Used Avail Use% Mounted on/dev/sda3 37G 35G 0 100% /devtmpfs 63G 0 63G 0% /devtmpfs 63G 24K 63G 1% /dev/shmtmpfs ...原创 2021-12-23 13:27:15 · 6303 阅读 · 1 评论 -
汇编基础知识
一、计算机体系在16位cpu体系:物理地址=基础地址+偏移地址=段地址*16+偏移地址段基础地址=段地址*16偏移地址=16位=2^16=[0000, FFFF]段寄存器:用于保存段地址,CS,DS,SS,ESIP:指令指针寄存器=偏移地址在8086机下,物理地址=指令地址=CS*16+IPx86通用寄存器:eax,ebx,ecx,edx,esi,edi,ebp,esp。e代表extend,扩展到32位二、寄存器cs、ip修改cs,ip寄存器只能用,jmp指令,不能用原创 2021-08-19 18:06:12 · 2060 阅读 · 0 评论 -
原来C语言也有ThreadLocal变量
都知道java中有ThreadLocal变量,那么在C语言也是支持的,有两种方式来支持第一种方法:_thread int number; //通过gcc的关键字_thread第二种方法:pthread_key_create()、pthread_getspecific()、pthread_setspecific()、pthread_key_delete()通过pthread库支持...原创 2021-07-26 15:48:37 · 1129 阅读 · 0 评论 -
C语言返回大对象本质
#include <stdio.h>typedef struct big_thing{ char buf[128];}big_thing;big_thing return_test(){ big_thing b; b.buf[0] = 0; printf("b = 0x%x, b.buf=0x%x\n", &b, b.buf); return b;}int main(){ big_thing n = return_te.原创 2021-07-25 17:22:28 · 153 阅读 · 0 评论 -
dlopen函数
dlopen如果第一个参数是NULL,则表示打开当前进程的已经加载的符号表 如果第一个参数不是NULL,则表示打开目标文件so中符号表原创 2021-07-24 11:44:33 · 757 阅读 · 0 评论 -
linux ELF文件格式分析
一、数据结构定义linux ELF相关定义/* Type for a 16-bit quantity. */typedef uint16_t Elf64_Half;/* Types for signed and unsigned 32-bit quantities. */typedef uint32_t Elf64_Word;typedef int32_t Elf64_Sword;/* Types for signed and unsigned 64-bit quantiti.原创 2021-07-22 16:47:58 · 332 阅读 · 0 评论 -
CGroup操作
一、cgroup简介1.1、cgroup子系统cgroup支持多种维度的限制,具体如下:子系统 说明 blkio 这个子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB 等等) cpu 这个子系统使用调度程序原创 2021-06-26 21:51:31 · 1264 阅读 · 1 评论 -
mac安装指定版本thrift
brew tap-new $USER/local-tapbrew extract --version='0.11.0' thrift $USER/local-tapbrew install thrift@0.11.0原创 2021-05-13 14:17:35 · 593 阅读 · 0 评论 -
在centos7.6编译kurento
centos7.2git checkout 6.16.0 -b 6.16.0root@63d5c0084f5b kurento-media-server]# mkdir build[root@63d5c0084f5b kurento-media-server]# cd build/[root@63d5c0084f5b build]# ls[root@63d5c0084f5b build]# cmake ../-- The C compiler identification is GNU 4原创 2021-05-06 11:46:01 · 1459 阅读 · 4 评论 -
overlay文件系统-C语言操作
一、overlay文件系统关于overlay文件操作,网上有很多但是很多说的不太清楚,在维基百科里说的还是很详细,大家可以参考《overlay 命令行操作实现》二、c语言实现网上大多数都是通过命令行方式操作,然而耿直的苦逼IT男,还是希望知道如何用代码实现。1、Docker实现docker底层使用系统调用,完成overlay,这里可以操作这个文件https://github.com/docker/docker-ce/blob/master/components/engine/daem..原创 2021-04-22 18:05:31 · 896 阅读 · 0 评论 -
使用supervisor监控进程关键点
1、使用supervisor监控进程,通常做法是创建一个sh脚本,然后在脚本中启动真正服务进程,但是千万不能用nohup进行启动服务进程,否则supervisor无法监听。2、启动服务进程必须使用exec 进程参数,例如: execjava -Dprofiles=prod-jar my-monitor.jar根本原因:1)supervisor进程会调用我们写的sh脚本,那么sh脚本相当于supervisor的子进程,supervisor是通监听子进程退出信号(sigchld),帮助我们重启进程...原创 2021-03-17 20:46:27 · 512 阅读 · 0 评论 -
maven跨平台编译thrift
在java开发中,如果需要编译thrift文件时,需要使用插件maven-thrift-plugin,然而这个插件不支持跨平台(比如开发在window,运行在linux上),这就对编译环境提出比较高的要求。然而我们可以通过简单的配置。 <build> <extensions> <extension> <groupId>kr.motd.maven</groupId>原创 2021-02-24 21:08:47 · 879 阅读 · 2 评论 -
Freeswitch常见问题
一、返回480Reason: Q.850;cause=96;text="MANDATORY_IE_MISSING" 我这里遇到原因是:fs外呼时, 对端的ip端口写错了。freeswitch internal端口是5060,external端口是5080 <extension name="Output fs"> <condition field="destination_number" expression="^0(10[01][0-9])$">..原创 2020-09-22 20:00:53 · 5474 阅读 · 0 评论 -
github clone 慢
通过站长工具:http://tool.chinaz.com/dns/输入github.com,进行dns查询,挑选一个TTL最小的ip,然后设置hosts文件,添加dns影射即可,例如:13.250.177.223 github.com原创 2020-08-29 16:09:59 · 177 阅读 · 0 评论 -
C语言实现为终端程序--webshell基石
之前对ssh一直很困惑它是如何实现的,网上也没有相关代码实例,所以自己花了一段时间研究了一下。本篇博客主要写了两个程度:服务端和客户端,通过客户端可以远程登录服务端,执行shell命令。代码实现的比较糙,但是基本原理一看就明白。一、主要核心思想:1)创建pty终端,即open("/dev/ptmx", O_RDWR | O_NOCTTY),关于pty的介绍网上有很多,这里简单说明一下pty类似我们管道,但是pty是全双工的。pty有master、slave,两者之间可以进行通信。当我open的时候返原创 2020-06-30 19:56:53 · 2282 阅读 · 0 评论 -
Linux namespace定位
1、lsns命令查看系统中namespace[root@localhost hotspot]# lsns NS TYPE NPROCS PID USER COMMAND4026531836 pid 324 1 root /usr/lib/systemd/systemd --switched-root --system --deserialize 224026531837 user 326 1 root /usr/lib/syste原创 2020-05-22 17:23:10 · 932 阅读 · 0 评论 -
Centos安装GIMP图片软件
一、安装GIMPGIMP应该是linux下面Photoshop,在linux下安装也很方便。我的系统是Cenots7.4版本,下面是我的安装方式通过flatpak 进行安装即可,如下命令:[root@localhost 下载]# flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.fl...原创 2019-12-05 15:22:51 · 984 阅读 · 0 评论 -
Linux进程、线程绑定CPU以及独占CPU
在很早之前就了解一项技术:线程绑定cpu。该项技术也应用到各种应用软件,来提高性能。这里把自己做的一个实验记录下来,方便日后查阅。一、进程绑定cpu我们通过系统调用sched_setaffinity进行绑定,通过sched_getaffinity获取绑定关系。注意这对方法是进程级别的绑定。代码中指定cpu0和cpu3,我们可以通过htop查看,两个cpu使用达到了100%,其他的cpu均不...原创 2019-11-04 19:49:19 · 9038 阅读 · 3 评论 -
Qemu虚拟化PowerPc
由于工作需要,需要需要虚拟出一个PowerPc64的系统,在介绍之前,先Qemu、Kvm、vmWare。之前对这三者虚拟化特点并没有特别关注。 是否基于硬件平台是否全虚拟化与宿主主机CPU一致性能Kvm是是是高VmWare是否(半虚拟化)是高Qemu否,纯软件模拟是否(在x86上可以模拟powerpc)差各个虚拟化对比表Kvm与QEMU关系:Kvm是基于linux kernel的,它已经成...原创 2018-03-19 13:03:30 · 7909 阅读 · 2 评论 -
编译Openjdk
从来没有想过要自己去编译jdk,更没有想过要交叉编译jdk。哈哈,我也真是个人才(主要是领导安排的活)。为了联手以及填坑,先编译x86平台下的openjdk,下面是编译过程其中包含很多错误,记录一下心路历程。一、环境软件版本操作系统Redhat7.1bootJdk1.7.0_51GNU Make3.82g++ (GCC)4.8.2 Openjdk1.8u二、步骤2.1 安装依赖文件(其实就是co...原创 2018-03-19 20:01:47 · 4871 阅读 · 2 评论 -
Centos7.4.1708 安装usb无限网卡驱动
今天总结一下前几天折腾的usb无线网卡驱动。一、确定网卡驱动实验机器内核版本信息如下:[root@localhost ~]# uname -aLinux localhost.localdomain 3.10.0-693.21.1.el7.x86_64 #1 SMP Sat Jun 2 02:26:41 CST 2018 x86_64 x86_64 x86_64 GNU/Linux...原创 2018-11-22 10:08:51 · 13202 阅读 · 1 评论 -
死磕Linux防火墙(iptables和firewalld)
对于Linux防火墙无论是使用方式上还是实现机制上理解的都不是很深刻。例如,在windows做端口映射很方便,但是到了linux下面却很头疼,今天打算彻底搞懂它。一、Linux防火墙概述1.1、背景1) iptables和firewalld并不是真正的防火墙,他们两个只是管理工具。通过他们两个自身的服务(配置),去配置内核中Netfilter和TCPwrappers。对于日常工作,这两...原创 2019-01-02 13:03:56 · 520 阅读 · 0 评论 -
c语言实现容器
为了实现了解docker容器底层实现原理,特地用C语言实现了一个简单的Demo--ContainerC,放到了github中地址,仅供参考学习。在实现ContainerC的时候参考iproute2源代码。...原创 2019-02-13 10:35:43 · 3043 阅读 · 0 评论 -
KVM虚拟机典型配置文件xml
<domain type='kvm'> <name>vm64-1</name> //虚拟机名称 <memory unit='MiB'>2300</memory> //最大内存,单位M <currentMemory unit='MiB'>2300</currentMemory> //可用内存,单位M &am原创 2019-01-29 13:14:29 · 5664 阅读 · 1 评论 -
C语言创建tap设备并且设置ip
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <sys/socket.h>#include <netinet/in.h>#include <net/if.h>#include &a原创 2019-01-29 15:03:33 · 2540 阅读 · 0 评论 -
CMake基本常识
不清楚,为什么很多越来越多的软件都用CMake去编译。CMake就是一个大奇葩,这么难用的东西,居然越来越火了!!真心感觉Makefile比CMake容易看懂的多。下面是对CMake一些总结,后续在一点点补充。我们可以通过命令cmake --help-command XXX 查看离线帮助文档。一、内置变量CMake比较难学主要原因之一是有很多内置变量,在阅读CMakeLists.tx...原创 2019-05-30 17:20:56 · 534 阅读 · 0 评论 -
内存检测工具sanitize
以前用过valgrind这个内存泄露检查工具,这个工具相对简单,对于一些复杂的内存泄露可能无法解析出来而且有一个问题就是只有检测的进程退出后才会输出内存泄露信息。今天介绍的工具sanitize可以在检测到内存泄露第一时间立刻终止进程,并且它可以深入检测(随应用进程一起编译)。下面举例说明:#include <stdlib.h>#include <unistd.h>...原创 2019-06-04 11:06:06 · 7970 阅读 · 0 评论 -
ssh免密登录
一、环境三台机器做ssh免密登录用户 IP test 192.168.10.10 test 192.168.10.20 test 192.168.10.30 二、操作2.1、生成秘钥登录192.168.10.10,通过ssh-keygen生成秘钥,一路回车即可,生成秘钥会在/home/test/.ssh目录中,具体如下:[@test_1...原创 2019-06-21 11:42:24 · 659 阅读 · 2 评论 -
Perf工具使用
最近在提升软件性能,用到了Perf工具.网上有很多文章都在介绍,这里只简单记录使用历程.一、软件必备我们必须安装perf工具,可以通过yum方式进行安装:yum install -y perf使用perf通常和火焰图结合,有了火焰图就比较直观.火焰图用到另外一个软件,可从github中克隆出来git clonehttps://github.com/brendangregg/F...原创 2019-06-17 11:41:59 · 3763 阅读 · 0 评论 -
Centos编译并安装wireshark-3.0.2
Centos默认提供的wireshark rpm包是1.10,这个版本太老了而且有很多bug,所以打算升级一下wireshark版本。可是无奈网上没有适合centos的rpm包,所以打算自己编译wireshark源码.如果希望编译windows下面的wireshak可移至这里查看。一、升级cmake在wireshark要求cmake版本是3.5以上,这里下载了一个最新版本cmake ver...原创 2019-06-27 16:59:32 · 4415 阅读 · 6 评论 -
centos下使用搜狗输入法
搜狗输入法官方网站没有提供centos7下面的安装包,网上大部分教程都是针对deb包进行解压然后安装。我是怎么安装的我也记不清楚了,稀里糊涂的就安装上了。但是安装的时候遇见两个重要问题:1、有的博客建议将ibus卸载掉。我这里不建议卸载:因为卸载了ibus可能导致桌面系统无法正常使用,我之前就遇到了这个大坑,卸载了ibus无法进入桌面。2、安装完后,中文标点符号不能使用。解决方法:安装过程...原创 2019-07-15 15:12:05 · 3617 阅读 · 0 评论 -
基于ISO镜像文件搭建私有YUM源
很多时候,我们需要通过yum(rpm)在线安装一些软件,然而出于安全考虑很多机器并不能直接访问外网,因此自己搭建YUM源就显得十分必要了。今天就介绍一下如何基于ISO镜像构建自己的YUM源。【必要条件】一个webserver:采用nginx,因为nginx比较简单。也可以采用apache。一个iso镜像文件。下载最新的nginx源码,然后进行编译,nginx编译还是比较容易,应该不会出现问...原创 2018-03-19 10:49:13 · 2716 阅读 · 0 评论