ASM

曹工说Spring Boot源码(24)-- Spring注解扫描的瑞士军刀,asm技术实战(上)

不羁岁月 提交于 2020-03-25 23:42:32
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean Definition到底是什么,咱们对着接口,逐个方法讲解 曹工说Spring Boot源码(3)-- 手动注册Bean Definition不比游戏好玩吗,我们来试一下 曹工说Spring Boot源码(4)-- 我是怎么自定义ApplicationContext,从json文件读取bean definition的? 曹工说Spring Boot源码(5)-- 怎么从properties文件读取bean 曹工说Spring Boot源码(6)-- Spring怎么从xml文件里解析bean的 曹工说Spring Boot源码(7)-- Spring解析xml文件,到底从中得到了什么(上) 曹工说Spring Boot源码(8)-- Spring解析xml文件,到底从中得到了什么(util命名空间) 曹工说Spring Boot源码(9)-- Spring解析xml文件,到底从中得到了什么(context命名空间上) 曹工说Spring Boot源码(10)-- Spring解析xml文件,到底从中得到了什么(context:annotation-config 解析)

STM32学习笔记一一UCOSII(1)

本秂侑毒 提交于 2020-03-25 13:00:06
3 月,跳不动了?>>> 1.简介 UCOSII 是一个可以基于 ROM 运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。 1.1 UCOSII 体系结构图 UCOSII 的移植,我们只需要修改: os_cpu.h、 os_cpu_a.asm 和 os_cpu.c等三个文件。 os_cpu.h: 进行数据类型的定义,以及处理器相关代码和几个函数原型; os_cpu_a.asm:是移植过程中需要汇编完成的一些函数,主要就是任务切换函数; os_cpu.c:定义一些用户 HOOK 函数。 定时器的作用:为 UCOSII 提供系统时钟节拍,实现任务切换和任务延时等功能。这 个时钟节拍由 OS_TICKS_PER_SEC(在 os_cfg.h 中定义)设置,一般我们设置UCOSII 的系统时钟节拍为 1ms~100ms,具体根据你所用处理器和使用需要来设置。本章,利用 STM32的 SYSTICK 定时器来提供 UCOSII 时钟节拍。 1.2 任务 任务:其实就是一个死循环函数,该函数实现一定的功能,一个工程可以有很多这样的任务(最多 255 个), UCOSII 对这些任务进行调度管理, 让这些任务可以并发工作(注意不是同时工作,并发只是各任务轮流占用 CPU,而不是同时占用

centos7静黙安装Oracle11.2.0软件响应文件oracle_install.rsp

杀马特。学长 韩版系。学妹 提交于 2020-03-25 10:12:50
3 月,跳不动了?>>> oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0 oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME=localhost.localdomain UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory SELECTED_LANGUAGES=en,zh_CN,zh_TW ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.isCustomInstall=false oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0

C和C++中的volatile、内存屏障和CPU缓存一致性协议MESI

戏子无情 提交于 2020-03-24 08:09:42
3 月,跳不动了?>>> 目录 1. 前言 2 2. 结论 2 3. volatile 应用场景 3 4. 内存屏障( Memory Barrier ) 4 5. setjmp 和 longjmp 4 1) 结果 1 (非优化编译: g++ -g -o x x.cpp -O0 ) 5 2) 结果 2 (优化编译: g++ -g -o x x.cpp -O2 ) 6 6. 不同 CPU 架构的一致性模型 6 7. x86-TSO 7 8. C++ 标准库对内存顺的支持 7 1) 头文件 <stdatomic.h> 7 2) 头文件 <atomic> 8 附 1 : CPU 、缓存和主存 8 第三级缓存( L3 Cache )多核共享: 8 附 2 : SMP 对称多处理器结构 9 附 3 :在线 C++ 编译器 9 附 4 :资源链接 10 1) C++ 标准委员会( The C++ Standards Committee ) 10 2) 标准 C++ 基金会 10 3) C++ 之父 10 4) Linux 内核关于 volatile 的说明 10 5) Intel 内存模型( Intel Memory Model ) 10 6) Intel TSO 内存模型 10 7) Sequential Consistency &TSO 10 8) Write buffer 10 9)

RabbitMQ环境安装

回眸只為那壹抹淺笑 提交于 2020-03-21 06:55:12
1.安装erlang 语言环境 安装依赖 yum install ncurses-devel (如果没安装GCC,执行 yum install gcc或者:yum groupinstall “Development Tools” “Development Libraries” “Compatibility libraries”) 进入 http://www.erlang.org/download.html 选择源文件下载 wget http://erlang.org/download/otp_src_19.0.tar.gz 注意:(这里可以提前下载openssl如何之前没有安装) 见附录 tar zxvf otp_src_19 . 0 . tar . gz cd otp_src_19 . 0 . /configure - - with - ssl=/opt/ssl/ - - prefix=/opt/erlang - - enable - threads - - enable - smp - support - - enable - kernel - poll - - enable - hipe - - without - javac make && make install 配置环境变量: 修改/etc\/profile文件,增加下面的环境变量: set erlang

[技术干货] Oracle单机实例+ASM

风流意气都作罢 提交于 2020-03-13 14:31:08
本环境CentOS7.4使用的主要软件包: 11.2.0.1版本 linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip linux.x64_11gR2_grid.zip 需要额外一个磁盘做完ASM挂载磁盘:本实例使用50G 使用x-shell进行远程,通过Xmanager进行图形化显示(需关闭selinux) 一、环境准备 1.创建ORACLE用户和组成员 groupadd oinstall groupadd dba groupadd oper groupadd asmadmin groupadd asmdba groupadd asmoper useradd -g oinstall -G dba,asmdba,oper -d /home/oracle oracle (命令自动创建/home/oracle目录) useradd -g oinstall -G dba,asmadmin,asmdba,asmoper -d /home/grid grid (命令自动创建/home/grid目录) 2.分别创建oracle、grid用户的密码 passwd oracle new unix password: oracle passwd grid new unix password: grid 3./

U-BOOT的移植与分析(第一阶段配置过程)(1)

早过忘川 提交于 2020-03-07 19:17:09
U-BOOT配置   补丁文件中修改代码的表示方法:(1)“---” 表示是 原来代码 (2)“+++”表示修改后的代码 补丁要补的位置 diff -urN u-boot-1.1.6/board/100ask24x0/100ask24x0.c u-boot-1.1.6_jz2440/board/100ask24x0/100ask24x0.c --- u-boot-1.1.6/board/100ask24x0/100ask24x0.c 1970-01-01 07:00:00.000000000 +0700 +++ u-boot-1.1.6_jz2440/board/100ask24x0/100ask24x0.c 2010-11-26 12:54:37.034090906 +0800 @@ -0,0 +1,96 @@ “-”表示没有修改过的代码;“+”表示修改后的代码 原来的代码是从第0行开始共有0行(补丁产生新文件)修改过的代码从第1行开始向下共有96行。 补丁的详细过程 解压U-BOOT文件 tar xjif u-boot-1.1.6.tar.bz2 打补丁 打补丁时一般 已经是进到“u-boot-1.1.6”这个目录下,所以 patch时便忽略去目录“u-boot-1.1.6”。用到参数 -p1 。是指忽略去第一 个“/”。 启动内核 1.先配置 make xx_config:在

Oracle卸载之正确卸载rac数据库的方法(MOS卸载方法)

半世苍凉 提交于 2020-03-04 17:20:20
一、关闭数据库和资源 1、节点1 [root@node1 bin]# pwd /u01/app/11.2.0/grid/bin [root@node1 bin]# ./crsctl stop crs CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'node1' CRS-2673: Attempting to stop 'ora.crsd' on 'node1' CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on 'node1' CRS-2673: Attempting to stop 'ora.LISTENER_SCAN3.lsnr' on 'node1' CRS-2673: Attempting to stop 'ora.oc4j' on 'node1' CRS-2673: Attempting to stop 'ora.GRIDDG.dg' on 'node1' CRS-2673: Attempting to stop 'ora.registry.acfs' on 'node1' CRS-2673: Attempting to stop 'ora.orcl

Golang 调用汇编代码,太方便啦

拥有回忆 提交于 2020-03-02 17:14:45
今天在翻阅Golang代码时,发现了Golang调用汇编代码的方法(详见pkg/bytes)。大概要做三件事,我以用汇编实现一个判断字符串是否相等的方法Equal为例,测试一下: 准备工作,创建工程目录: asm_demo |--bin |--pkg |--src | |--strlib | |--demo 第一、编写平台对应的编码代码。 汇给代码文件以如下格式的命名:asm_$ARCH.s (asm_386.s, asm_amd64.s, asm_arm.s, ...),我的环境是Ubuntu 12.04 LTS amd64架构. $ GOPATH=<youpath>/asm_demo $ cd $GOPATH $ cat <<EOF > src/strlib/asm_amd64.s TEXT .Equal(SB),7,$0 MOVL len+8(FP), BX MOVL len1+24(FP), CX MOVL $0, AX CMPL BX, CX JNE eqret MOVQ p+0(FP), SI MOVQ q+16(FP), DI CLD REP; CMPSB MOVL $1, DX CMOVLEQ DX, AX eqret: MOVB AX, ret+32(FP) RET EOF 本段代码来自 $GOROOT/src/pkg/bytes/asm_amd64.s 可以看出