C++中的静态库与动态库 单独提这个库,我想我们在coding过程中,可能也会知道一两个词,如*标准库*、xx库等。库作为一组已编写好、组织好的、可复用的资源接口,可以被用于其他程序。很不夸张地说,很多程序都需要依赖一些底层依赖库,从而支撑它们完成一些基础工作。
TOTP算法实现 双因子认证(2FA)是一种身份验证方法,要求用户提供密码和另一个认证因子或者至少提供两个认证因子(其中一个代替密码),从而提高用户账户的安全性。传统的密码仅为一组静态信息,很容易被窃取,而导致账户被盗用,相对来说,双因子认证比传统密码还多了一个认证步骤,并且一般来说认证因子会比传统密码更难破解、获取(具有时效性),引入双因子认证虽然带来了一定复杂度,但提高了安全性。
初识FUSE(Filesystem in userspace) FUSE(全称Filesystem In Userspace)是一个用户空间的文件系统框架,也就是说能够允许用户空间创建并管理文件系统。内核模块(fuse.ko):协议封装和解析,封装转发由VFS转发过来的请求给用户态程序用户空间库(libfuse.*):协议解析和封装,负责解析由内核模块封装好的IO请求挂载工具(fusemount):用户态文件系统挂载用户态文件系统是区别于内核文件系统的,在用户态文件系统没有出现之前,常见的文件系统如Ext2Ext4。
Linux中的虚拟文件系统(virtual file system) 本文从比较简单的角度学习了Linux内核中虚拟文件系统的源码以及其核心数据结构,如果要继续剖析该模块的内容,其实还可以更深入,如发生系统调用(如readwrite等)过程中VFS在此过程中如何处理的。但理解这些深入的内容,还是回归基础,搞清楚这个基本的数据结构的定义以及它们背后隐含的关系,才能更好地去分析。后续如果来得及的话,会继续分析这部分的内容。
在C中指针的高级技巧 对于初学者来说,指针是比较头疼的东西,但是,如果你想深入了解底层的一些东西,指针你又是避不开的。既然逃避不了,干嘛不加入呢?一起继续探索指针中更高级更好玩的技巧吧1 回顾指针也指内存地址,指针变量是用来存放内存地址的变量,在32位的操作系统中,它的大小为4个字节,在64位的操作系统中则是8个字节,依次类推…c语言中常见的指针变量定义/**********************part one**********************///声明一个存储整型变量地址的指针int *p
解决Linux下交叉编译U-Boot源码时报‘multiple definition of `yylloc‘‘的错误 一、编译环境环境值操作系统Fedora release 35 (Thirty Five)交叉编译环境gcc-linaro-6.1.1-2016.08-x86_64_aarch64-linux-gnuLinux 内核版本5.14.16U-Boot版本1.7.4(板子厂商特供版)二、问题描述我们可以从报错信息看到,dtc-parser.tab.o和scripts/dtc/dtc-lexer.lex.o这两个中间文件中对yylloc多重定义了,导致在链接时,
C语言中的预处理器 预处理器作者注:最近在阅读U-Boot的源码时,发现在头文件中使用了较多的宏定义语句,顿时觉得这个宏在实现C语言程序可移植性特性起着重要作用,故本次简单地复习一下预处理器…编译一个C程序会经过四个阶段:预处理、编译、汇编、链接。而第一阶段的预处理阶段到底时做什么呢?答案就是:在源代码编译之前对其进行一些文本性质的操作。那么,什么是文本性质的操作呢? 就个人理解来说,应该是想表达一种使用某种文本去替换另一种文本的操作它的主要任务有:删除注释插入被#include指令包含的文件的内容。定义和
CentOS 7 下RabbitMQ的 安装 欢迎访问我的个人主页:传送门最近想深入学一下有关JAVA后台的一些中间件,这里选择了RabbitMQ消息中间件,并记录一下RabbitMQ的安装过程。1. 下载所需的文件为了安装rabbit-server,你需要自己去下载上图所需的三个文件。除了以rabbitmq-server开头的这个文件外,其他是是安装Rabbitmq是必需的依赖环境,版本关系最好是官网查阅确定一下。我这里提供这三个文件的压缩包下载。链接:https://pan.baidu.com/s/1f2QCvx__tzT7aFrIx9
搭建Hadoop集群之环境配置系列-配置静态ip 说在前面的话由于老师给我们学生布置了一个Linux作业,虽然有几个可选的题,但是最后我还是觉得选择Hadoop应用开发,毕竟我一直想尝试这个新东西,趁着这个机会学点东西挺好的。要想使用这个Hadoop进行应用开发,那么首先就应该配好环境,安装啥的不说了,因为我觉得这个配置静态ip有点麻烦,也最容易出问题,所以下面我将和你谈谈如何为你的hadoop集群服务器配置静态ip:为什么要配置静态ip?使用静态ip就不用担心每次联网你自己局域网的ip发生改变,进而影响你搭建Hadoop集群。开始1.查看虚
修改equals方法时为什么还要重写hashcode方法? 推荐本人Github pages: 点击这里虽然在实际开发中,我们已经使用到散列集合(如HashMap),或也单独学过散列(Hash)。但是也会有很多人像我一样,看到有些时候别人写的pojo中有对对象内hashcode函数做一个重写,这就让我重新思考为什么要这么做? 下面就让我和你一起去探索一下吧!Hash是什么?Hash就是上文说到的散列,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。它的理论时间复杂度是可以达到O(1),但一般来说,这
#每天踩一踩坑# 解决Spring MVC使用@Valid注解校验表单无效 最近在学习Spring MVC的想做一下对表单数据的校验,根据书里的提示,引入了以下依赖: <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version>
#入门#学习一波Spring MVC中的跨重定向请求传递数据(URL模板、Flash属性) 跨重定向请求传递数据1. 写在开头的话2.使用URL模板以路径变量和/或查询参数的形式传递数据3.使用flash1. 写在开头的话 在Spring MVC中,若是在控制器方法返回的视图名称中,使用了redirect:前缀,那么这个String就不再是用于查找视图了,即是用于让浏览器进行重定向的路径。当发生重定向了之后,之前的请求就会被作废,请求携带的数据也会被销毁,所以该如何保证数据在重定向时保持不变呢?(小知识点:如果使用forward:前缀则表示转发,转发宽泛的说是同一个请求,不同的视图,所以数
#入门#聊聊Spring AOP Github地址:1291945816–kilig我就站在你面前,你看我几分像从前Spring Aop入门什么是AOP?AOP中的关键术语AspectJ表达式一个包租婆卖房的例子(参考例子)定义连接点创建切面定义切点配置类AOP测试使用环绕通知基于XML实现AOPAOP中需要配置的元素参考文献什么是AOP?首先允许我引用一下维基百科关于AOP的解释:面向切面的程序设计(Aspect-oriented programming,AOP,又译作面向方面的程序设计、剖面导向程序设计)是计算机科学中的
C语言使用PV操作实现读者-写者问题 开局一张图代码一贴#include <stdio.h>#include <pthread.h>#include<semaphore.h>#define P sem_wait#define V sem_post#define writeblock &writeblock_#define mutex &mutex_sem_...
谈谈操作系统中的信号量与PV操作 在临界区的调度原则中有:互斥使用有空让进忙则等待有限等待择一而入算法可行在实际应用中,我们考虑对临界区的管理有软件算法,也有硬件设施,但是这些偏软,偏硬的方法,或存在复杂、效率低下,或存在浪费CPU时间等问题。下面笔者将和大家谈谈一种新的同步工具:信号量和PV操作。PV操作PV操作是属于原语操作,原语操作即是执行时是不可被打断的,如原子一般不可再分,通过PV操作我们可以保...
谈谈jquery获取的对象与document对象的区别 引出问题我做了一个登陆界面,想要实现一个点击验证码可以更换验证码图片的操作,所以我使用jquery做了如下操作$(function (){ $("img#checkcode").click( function () { var img = $('img#checkcode'); img.src="/test/checkco...