自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(167)
  • 收藏
  • 关注

转载 设置程序崩溃时产生 core 文件的配置

1 /* 不限制 core 文件的大小 */2 ulimit -c unlimited3 4 /* 使用 pid 进行命名 */5 echo "1" > /proc/sys/kernel/core_uses_pid6 7 /* 配置 core 文件存储路径,及名称的格式 */8 echo "~/corefile/core-%e-%p-%t" >...

2019-09-05 23:04:00 426

转载 使用 pthread_cancel 引入的死锁问题

先来说一下 pthread_cancel 基本概念。pthread_cancel 调用并不是强制终止线程,它只提出请求。线程如何处理 cancel 信号则由目标线程自己决定,可以是忽略、可以是立即终止、或者继续运行至 Cancelation-point(取消点),由不同的 Cancelation 状态决定。有几个与pthread_cancel 相关的函数也要提及一下:...

2019-09-05 23:01:00 570

转载 为什么全局变量一定要初始化?

一、初始化规则部分在说明为什么要初始化之前,先提及下 C 语言的初始化规则,以备后用。可能大家在对数组进行初始化时用的是这样的方法:char buf[10] = {0};那么char buf[10] = {1};是不是将每个数组中的每个元素都初始化为 1 了呢?其实不然,根据编译器的特性,在指定初始化元素时,如果元素的个数少于数组元素的总个数,那么其它的元素将会...

2019-09-02 23:10:00 2663

转载 SecureCRT 使用密钥登录 Ubuntu

记录 SecureCRT 通过 SSH 使用密钥登录 Ubuntu。具体步骤如下:1. 使用 SecureCRT 生成密钥对: 工具 -> 创建公钥 -> 密钥类型 RSA -> 密钥格式 OpenSSH2. 上传公钥至 Ubuntu: 将公钥拷贝至用户目录下 .ssh 下3. 配置 sshd_config: s...

2019-08-25 15:21:00 313

转载 ubuntu samba 服务器搭建

最近总是在搭建 samba 环境,写在笔记上记录下以备后用,长时间不操作了肯定会忘记。Linux 版本:Ubuntu 18.04具体的操作命令:1. 安装:  sudo apt-get install samba2. 修改配置文件:  sudo vim /etc/samba/smb.conf3. 具体修改内容如下:  [samba]  co...

2019-08-25 13:30:00 133

转载 Linux 软硬链接的区别及目录权限对软硬链接的影响

目录权限的影响 首先,构建实验环境如下图:    有 A、B 两个目录,A 目录下建有 test 文件,且文件中的内容为 "Hello"。B 目录下分别创建 test 文件的硬链接 testHard 和 软链接 testSoft。  分别 cat 这两个链接文件,都可以正常的输出内容:    现在将 A 目录的权限更改为 000,命令为 chmod 000 A。...

2019-04-26 15:38:00 344

转载 【转载】解析 java 按值传递还是按引用传递

原文链接说明:(1):“在Java里面参数传递都是按值传递”这句话的意思是:按值传递是传递的值的拷贝,按引用传递其实传递的是引用的地址值,所以统称按值传递。(2):在Java里面只有基本类型和按照下面这种定义方式的String是按值传递,其它的都是按引用传递。就是直接使用双引号定义字符串方式:String str = “Java私塾”;转载于:ht...

2019-04-19 16:38:00 86

转载 【转载】java final 关键字的几种用法

原文链接点这里,感谢博主分享在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们来了解一下final关键字及其用法。final关键字在java中,final的含义在不同的场景下有细微的差别,但总体上来说,它指的是“这是不可变的”。下面,我们来讲final的四种主...

2019-04-19 16:06:00 93

转载 【转载】java static 关键字的四种用法

原文链接点这里,感谢博主分享在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们先来了解一下static关键字及其用法。static关键字1.修饰成员变量在我们平时的使用当中,static最常用的功能就是修饰类的属性和方法,...

2019-04-19 16:00:00 62

转载 【转载】假设有以下代码 String s = “hello”; 阿里巴巴笔试题

原文链接点这里equals 源码如下:分析://true equal用于比较两个对象的值是否相同,和内存地址无关转载于:https://www.cnblogs.com/GyForever1004/p/10736172.html...

2019-04-19 15:22:00 295

转载 【转载】java 中 String s = new String("abc") 创建了几个对象?!

原文链接点这里,感谢博主分享答案是两个,现在我们具体的说一下:String s = new String("abc");首先我们要明白两个概念,引用变量和对象,对象一般通过new在堆中创建,s只是一个引用变量。所有的字符串都是String对象,由于字符串文字的大量使用,java中为了节省时间,在编译阶段,会把字符串文字放在文字池中,文字池的一个好处就是可以把相同的...

2019-04-19 15:09:00 216

转载 【转载】java 中变量的存储位置

原文链接点这里,感谢博主分享* 寄存器:最快的存储区,由编译器根据需求进行分配,我们在程序中无法控制.* 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new出来的对象)或者常量池中(字符串常量对象存放在常量池中。)* 堆:存放所有new出来的对象。* 静态域:存放静态成员(static定义的)* 常量池:存放字符串常量和基...

2019-04-19 14:58:00 86

转载 Linux 用户与组的基本操作及文件权限位的设置方法

用户的基本操作添加用户: useradd xxx 查看所有的用户: cat /etc/passwd用户更改组: usermod -G groups loginname将用户从组中删除: gpasswd -d userName groupName文件标志位关于 SUID、SGID、SBIT 标志位的详解可以参考该网友的文章:Linux...

2019-02-27 18:55:00 139

转载 ubuntu:xxx is not in the sudoers file. 问题解决

ubuntu 下普通用户用 sudo 执行命令时报 "xxx is not in the sudoers file.This incident will be reported" 错误,解决方法是在 /etc/sudoers 文件里给该用户添加权限。操作过程如下:1. 切换到 root 用户下2. /etc/sudoers 文件默认是只读的,对 root 来说也是,因此需先添加 s...

2019-02-26 12:02:00 207

转载 内核中 EXPORT_SYMBOL 标志分析

内核版本:Linux-4.191. EXPORT_SYMBOL 的作用:EXPORT_SYMBOL 定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在其它内核模块中直接调用,即使用 EXPORT_SYMBOL 可以将一个函数以符号的方式导出给其他模块使用。EXPORT_SYMBOL(name);EXPORT_SYMBOL_GPL(name);这两个宏均用于给...

2019-02-24 11:33:00 164

转载 练习使用 __attribute__ 属性(仿照内核)

上一篇文章分析了内核中各种 initcall 的调用过程,在这个基础上大概掌握了内核中使用的这种方法,于是参考内核及网友的文章自己动手写了下,记录在这个随笔中。源代码如下:#include <unistd.h>#include <stdint.h>#include <stdio.h>typedef void (*myown_call)(vo...

2019-02-22 17:12:00 87

转载 Linux 系统调用过程详细分析

内核版本:Linux-4.19操作系统通过系统调用为运行于其上的进程提供服务。那么,在应用程序内,调用一个系统调用的流程是怎样的呢?我们以一个假设的系统调用 xyz() 为例,介绍一次系统调用的所有环节。如上图所示,系统调用执行的流程如下:1. 应用程序代码调用 xyz(),该函数是一个包装系统调用的库函数;2. 库函数 xyz() 负责准备向内核传递的参数,并触发软中断以...

2019-02-21 17:27:00 255

转载 内核中 xxx_initcall 的调用过程分析

内核版本:linux-4.19上一篇文章提到了这段代码:arch_initcall_sync(of_platform_default_populate_init);它的功能是完成 device_node 到 platform_device 的转换。这篇文章就来大概的分析一下,它是怎样被调用的。arch_initcall_sync 定义如下:#define ___define_i...

2019-02-19 12:27:00 224

转载 设备树学习:内核对设备树的处理

内核版本:linux-4.19之前系统的学习了有关设备树的一些知识,时间长了总会有忘记的时候,所以现在把所学到的知识记录下来。系统启动后,内核会执行一段汇编代码,汇编代码暂不分析,我们从 start_kernel 开始。优先被初始化的信息调用流程:start_kernel -->setup_arch -->setup_machine_fd...

2019-02-19 12:23:00 159

转载 CAN总线学习记录之四:位定时与同步

一、位定时1.1 比特率和波特率1)位速率:又叫做比特率(bit rata)、信息传输率,表示的是单位时间内,总线上传输的信息量,即每秒能够传输的二进制位的数量,单位是bit per second。 2)波特率:又叫做传码率、信号传输率,表示的是单位时间内传输的码元的数量,当两相调制时,一个码元用一个二进制位表示,此时波特率在数值上和比特率是一样的,CAN总线正是两项调制这种情...

2018-11-12 22:28:00 117

转载 CAN总线学习记录之三:总线中主动错误和被动错误的通俗解释

首先建议把广泛使用的“主动错误”和“被动错误”概念换成“主动报错”和“被动报错”。1. 主动报错站点只要检查到错误,它立即“主动地”发出错标识。所谓“出错标识“,它本身就是一个“错误的位序列”(连续的6个显性位,不满足 CAN 协议的“最多5个连续的同性位”要求),目的是“主动地”告诉大家:即使你们没有发现“刚才我已发现”的错误,现在我“以身作则”出错啦!你们该看到这个错误了吧!2...

2018-11-10 22:52:00 636

转载 CAN总线学习记录之二:系统结构与帧结构

CAN总线系统结构CAN 控制器 接收控制单元中微处理器发出的数据,处理数据并传给 CAN 收发器CAN 收发器 将数据传到总线 or 从总线接收数据给 CAN 控制器CAN 数据传递终端 避免数据传输终了反射回来CAN 数据总线 传输数据的数据线,两根:CAN-high and CAN-low,差分信号CAN 总线系统的数据传输CAN 总线节点上的节点发送...

2018-11-09 15:00:00 213

转载 CAN总线学习记录之一:CAN简介

CAN 是 Controller Area Net 的缩写,即控制器局部网,是一种有效支持分布控制或实时控制的串行通信网络。CAN 是德国 Bosch 公司为汽车的监测、控制系统而设计的,如控制发动机点火、注油及复杂的加速、刹车、抗锁定刹车系统等,已用于各种汽车上。由于 CAN 具有卓越的特性及的可靠性,因而非常适合工业过程监控设备互连。在自动化电子领域的汽车发动机控制部件、传感器、抗滑...

2018-11-06 17:40:00 362

转载 记录:C++类内存分布(虚继承与虚函数)

工具:VS2013先说一下VS环境下查看类内存分布的方法:先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 reportSingleClassLayoutXXX(XXX为类名),则只会打出指定类XXX的内存布局。编译后,输出如图的内存布局:测试代码#include...

2018-10-13 13:42:00 110

转载 使用读写锁实现线程同步

简介:读写锁与互斥量类似,但读写锁允许更高的并行性。其特性为:写独占,读共享。读写锁特性:读写锁是“写模式加锁”时,解锁前,所有对该锁加锁的线程都会被阻塞。读写锁是“读模式加锁”时,如果线程以读模式对其加锁会成功。如果线程以写模式加锁会阻塞。读写锁是“读模式加锁”时,如果有另外线程试图以写模式加锁,读写锁通常会阻塞随后的读模式锁请求,这样可以避免读模式锁长期占用,而等待...

2018-09-23 00:25:00 237

转载 使用文件锁实现进程同步

文件锁是用于解决资源的共享使用的一种机制:当多个用户需要共享一个文件时,Linux 通常采用的方法是给文件上锁,来避免共享的资源产生竞争的状态。具体来讲,是通过借助 fcntl 函数来实现锁机制。当操作文件的进程没有获得锁时,虽然可以打开文件,但无法对文件执行执行 read、write 操作。fcntl函数:函数原型: int fcntl(int fd, int cmd,...

2018-09-21 19:24:00 97

转载 使用 Mutex 实现进程间同步

我们知道 Mutex 互斥量是可以用在线程间同步的,线程之间共享进程的数据,mutex 就可以直接引用。而进程有自己独立的内存空间,要怎样将它应用在进程间同步呢?为了达到这一目的,可以在 pthread_mutex_init 初始化之前,修改其属性为进程间共享,并将其映射到共享内存中即可。使用到的API:pthread_mutexattr_t mattr 类型: 用于...

2018-09-21 19:22:00 462

转载 C 程序与 C++ 程序之间的相互调用

因为 C 编译器编译函数时不带参数的类型信息,只包含函数的符号名字。如 void foo( int x ) , C 编译器会将此函数编译成类似 _foo 的符号,C 链接器只要找到了调用函数的符号,就会认为链接成功。而 C++ 编译器为了实现函数重载,会在编译时带上函数的参数信息。如它可以把上面的函数编译成类似于 _foo_int 这样的符号。所以在 C++ 与 C 相互调用时,要用 ...

2018-07-23 14:12:00 130

转载 使用Dev C++调试(debug)程序

在 “Tools” -> "Compiler Options" -> "Add following commands when calling complier" 下面的编辑框里加上: -g3然后在下面的 "Add these commands to the linker command line" 下的编辑框上也加上: -g3此时点击 ok。重新编译,应该就可以调试了。...

2018-07-22 09:24:00 349

转载 ARM 汇编指令 ADR 与 LDR 使用

简介这两个都是伪指令:ADR 是小范围的地址读取伪指令,LDR 是大范围的读取地址伪指令。可实际使用的区别是: ADR 是将基于 PC 相对偏移的地址值或基于寄存器相对地址值读取的伪指令,而 LDR 用于加载 32 位立即数或一个地址到指定的寄存器中。以下面的汇编代码为例:.global _start_start: ldr r0, loop adr r0, lo...

2018-07-20 19:35:00 351

转载 华为交换机以 LACP 模式实现链路聚合

LACP 链路聚合模式简介以太网链路聚合是指将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。链路聚合分为手工模式和LACP模式。LACP模式需要有链路聚合控制协议LACP的参与。当需要在两个直连设备间提供一个较大的链路带宽而设备支持LACP协议时,建议使用LACP模式。LACP模式不仅可以实现增加带宽、提高可靠性、负载分担的目的,而且可以提高Eth-Tru...

2018-06-28 14:00:00 4817

转载 DLCI 简介

数据链路连接标识(Data Link Connection Identifier)  帧中继协议是一种统计复用的协议,它在单一物理传输线路上能够提供多条虚电路。每条虚电路都是用DLCI(Data Link Connection Identifier)来标识。虚电路是面向连接的,它将用户数据帧按顺序传送至目的地。从建立虚电路的方式的不同,将帧中继虚电路分为两种类型:永久虚电路(PVC)和...

2018-06-28 13:00:00 892

转载 华为路由器帧中继 FR 实验

帧中继简介帧中继( Frame Relay)是一种用于连接计算机系统的面向分组的通信方法。它主要用在公共或专用网上的局域网互联以及广域网连接。大多数公共电信局都提供帧中继服务,把它作为建立高性能的虚拟广域连接的一种途径。帧中继是进入带宽范围从56Kbps到1.544Mbps的广域分组交换网的用户接口。实验拓扑图实验配置简介R1 的 S1/0/0.1 子接口与 R2 之间配置为动...

2018-06-28 12:59:00 1097

转载 GVRP 的工作机制和工作模式

GVRP 简介GVRP 基于 GARP 的工作机制来维护设备中的 VLAN 动态注册信息,并将该信息向其他设备传播:当设备启动了 GVRP 之后,就能够接收来自其他设备的 VLAN 注册信息,并动态更新本地的 VLAN 注册信息,包括当前的 VLAN 成员、这些 VLAN 成员可通过哪个端口到达等。此外,设备还能够将本地的 VLAN 注册信息向其他设备传播,从而使同一局域网内所有设备的...

2018-06-26 10:43:00 2892

转载 华为路由器 HDLC 实验

HDLC 简介高级数据链路控制(High-Level Data Link Control 或简称 HDLC),是一个在同步网上传输 数据、面向比特的数据链路层协议,它是由国际标准化组织(ISO)根据 IBM 公司的 SDLC(Synchronous Data Link Control)协议扩展开发而成的。特点1. HDLC 是面向比特的数据链路控制协议的典型代表,该协议不依赖于任何...

2018-06-25 18:58:00 868

转载 华为路由器 IPSec 与 GRE 结合实验

二者结合的目的GRE 支持单播、组播、广播,IPSec 仅支持单播。GRE 不支持对于数据完整性以及身份认证的验证功能,并且也不具备数据加密保护。而 IPSec 恰恰拥有强大的安全机制。达到了互补的功效!实验拓扑各路由器配置R1sysname R1ipsec proposal lance-proposalesp authentication-algorithm sha1...

2018-06-24 14:58:00 752

转载 PPP中的PAP和CHAP的区别

PAPPAP是简单认证,明文传送,客户端直接发送包含用户名/口令的认证请求,服务器端处理并回应。CHAPCHAP是加密认证,先由服务器端给客户端发送一个随机码 challenge,客户端根据 challenge 对口令进行加密,算法是 md5(password,challenge,ppp_id)。然后把这个结果发送给服务器端,服务器端从数据库中取出口令 password2,同样进行...

2018-06-18 13:55:00 1196

转载 Linux C 实现一个简单的线程池

线程池的定义线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一...

2018-06-14 22:20:00 33

转载 OJ:又一道考察多态的题目

Description下面的程序输出结果是:A::FunA::DoA::FunC::Do请填空:程序代码如下#include <iostream>using namespace std;class A { private: int nVal; public: void Fun() { cou...

2018-06-08 21:21:00 244

转载 OJ:析构函数实现多态

Description下面程序的输出结果是:destructor Bdestructor A请完整写出 class A。 限制条件:不得为 class A 编写构造函数。#include <iostream>using namespace std;class A {// Your Code Here};class B:public A { pu...

2018-06-08 21:05:00 92

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除