- 【鸿蒙OH-v5.0源码分析之 Linux Kernel 部分】004 - Kernel 启动引导代码head.S 源码逐行分析
"小夜猫&小懒虫&小财迷"的男人
鸿蒙OH-v5.0源码分析之Uboot+Kernel部分harmonyoslinux华为
【鸿蒙OH-v5.0源码分析之LinuxKernel部分】004-Kernel启动引导代码head.S源码逐行分析系列文章汇总:《鸿蒙OH-v5.0源码分析之Uboot+Kernel部分】000-文章链接汇总》本文链接:《【鸿蒙OH-v5.0源码分析之LinuxKernel部分】004-Kernel启动引导代码head.S源码逐行分析》head.S主要工作如下:保存内核启动参数,无效化处理器缓存(
- GCC与汇编保护模式编程实例
macroseasoft
保护模式GCC汇编
GCC与汇编保护模式编程实例实例一由于想学习保护模式编程和linux0.01,遇到不少问题。有的保护模式编程实例全是汇编语言。linux0.01在高版本GCC又编译不能通过,即使编译通过也不能正常运行。能正常运行的linux0.01的信息也是很少。况且文件也比较多,代码也是很多,不怎么好学习掌握。于是就删除了linux0.01很多文件,只留下boot/boot.s,boot/head.s,init
- Linux4.1初始化流程详细注释——第一阶段head.S与head-common.S
yonz kon
armlinuxlinuxarm开发
Linux4.1初始化流程详细注释——第一阶段head.S与head-common.S1)head.S/头文件、宏定义等2)head.S/stext2.1)编译后的汇编:head.S/stext3)head.S/__create_page_tables3.1)编译后的汇编:head.S/__create_page_tables4)暂未注解:head.S/...-)暂未注解:head-common.
- Linux5.x启动过程分析
hdh717
linux
Linux5.x启动过程ARMCotex_A7RV1103系统启动文件arch/arm/kernel/head.S//Kernelstartupcodeforall32-bitCPUs//kernel启动执行的位置Kernelstartupentrypoint..arm__HEADENTRY(stext)ARM_BE8(setendbe)@ensureweareinBE8modeTHUMB(bad
- head.s全注释
小游客_
/**注意!32位启动代码是从绝对地址0x00000000开始的,这里同样也是页目录*将要存在的地方,因此启动代码会被页目录覆盖掉*/.text.globl_idt,_gdt,_pg_dir,_tmp_floppy_area_pg_dir:!页目录将会放在这里startup_32:/**注意!!!这里已处于32位运行模式,因此这里的0x10并不是把地址0x10放入到各个段寄存器中,它现在**其实是
- Linux内核启动分析(二)——start_kernel
Stephen_Lu_Fahai
Linux内核linuxkernelkernel
在前一篇对head.S的分析中,我们知道内核启动的第一阶段的是处理u-boot传进来的机器id,由此来判断内核是否支持这个CPU以及该单板。而head.S最后跳到start_kernel这函数中作进一步的处理。分析如下:一、start_kernel在start_kernel这个函数中首先进行一系列的初始化,咱们就先不去具体分析每一个初始化函数,主要看最后两行的的setup_arch和setupc_
- 抄写Linux源码(Day14:从 MBR 到 C main 函数 (3:研究 head.s) )
shimly123456
抄写Linux内核源码linux
回忆我们需要做的事情:为了支持shell程序的执行,我们需要提供:1.缺页中断(不理解为什么要这个东西,只是闪客说需要,后边再说)2.硬盘驱动、文件系统(shell程序一开始是存放在磁盘里的,所以需要这两个东西)3.fork,execve,wait这三个系统调用,也可以说是进程调度(否则无法haltshell程序并且启动另外的程序)4.键盘驱动、VGA/console/uart驱动、中断处理(支持
- 【设备树笔记整理4】内核对设备树的处理
Vane Zhang
linux设备树linux
1从源头分析_内核head.S对dtb的简单处理1.1bootloader向内核传递的参数(1)bootloader启动内核时,会设置r0,r1,r2三个寄存器:r0一般设置为0;r1一般设置为machine_id(在使用设备树时该参数没有被使用);r2一般设置ATAGS或DTB的开始地址(2)bootloader给内核传递的参数时有2种方法:ATAGS或DTB对于ATAGS传参方法,可以参考"毕
- vscode GDB 调试linux内核 head.S
朝搴夕揽
vscodelinuxide
遇到的问题此前参考如下文章https://zhuanlan.zhihu.com/p/510289859已经完成了在ubuntu虚拟机用vscode调试linux内核。但是美中不足的是,断点最早只能加在__primary_switched()函数。无法停在更早的断点上,比如ENTRY(stext)位置。参考《奔跑吧linux内核(第2版)》卷2,3.1.5节如下位置,可以在gdb-tui中从ENTR
- 6. 内核对设备树的处理
JalynFong
一、设备树的描述对于设备树,其描述的信息可以分成三部分;在内核中,对设备树的处理也会分成三部分:LinuxusesDTdataforthreemajorpurposes:1)platformidentification,(平台识别信息)2)runtimeconfiguration,and(运行时配置信息)3)devicepopulation.(设备信息)二、内核head.S对dtb的简单处理u-b
- zImage自解压过程解析
绍兴小贵宁
Linuxlinuxarm开发运维
zImage自解压过程解析编译过程参考 上文链接中解释了编译生成镜像过程,本文主要分析内核zImage自解压过程。 zImage包含了自解压程序和内核镜像程序。 自解压程序的链接文件位于arch/arm/boot/compressed/vmlinux.lds.S。链接脚本指定了程序入口ENTRY(_start)。 程序入口位于arch/arm/boot/compressed/head.S。
- Linux内存初始化-启动阶段的内存初始化
简说Linux内核
linux运维服务器Linux内核驱动开发
本文代码基于ARM64平台,Linuxkernel5.15在加载kernel之前,kernel对于系统是有一定要求的,明确规定了boot阶段必须要把MMU关闭:arch/arm64/kernel/head.S/**Kernelstartupentrypoint.*---------------------------**Therequirementsare:*MMU=off,D-cache=off
- uImage 的 入口符号地址
__pop_
linux-boot内核
前言u-boot引导内核的时候会tftp0x30008000uImage然后bootm0x30008000可见,从字面意思上是要将控制权交给内核了,可是内核的入口符号是什么呢uImage的入口函数是arch/arm/boot/compressed/head.S中的start标号下面可以从uImage的生成过程找到这个入口符号uImage的生成过程uImage是由一个脚本做出来的,scripts/m
- linux0.12-3-4
fitpolo
linux0.12linux
71–3.4-C与汇编程序的相互调用71–3.4.1-C函数调用机制76–3.4.2-在汇编程序中调用C函数78–3.4.3-在C程序中调用汇编函数3-4C语言和汇编相互调用的原因:为了效率,C语言和汇编之间会相互调用。3-4-1C函数调用head.s如何跳转到main.c?我们先讨论C函数的调用机制、控制权传递方式;①数据的传递和局部变量存储空间的分配与回收通过栈操作来实现;解释:栈被用来传递函
- arm64 - 设备树的加载流程
Elpm1s
linuxkernelc++java开发语言
设备树的加载流程dts文件经过dtc工具编译为dtb,内核加载并解析dtb文件,最终获得设备树的信息。1.设备树地址设置我们一般通过Bootloader引导启动Kernel,在启动Kernel之前,Bootloader必须将dtb文件的首地址传输给Kernel,以供使用。Bootloader将dtb二进制文件的起始地址写入x0寄存器中Kernel在第一个启动文件head.S中,读取x0寄存器中的值
- Linux源码分析-内核启动过程
18189298828
#内核启动内核
1.启动入口通过链接脚本arch/arm/kernel/vmlinux.lds可以找到内核的入口函数,通过ENTRY(stext)可以知道内核进入的第一个接口为stext接口,由于初始化部分的代码是与架构相关的,所以在不同架构中都有对stext接口的实现,例如查看arm64架构的初始化流程,则进入arch/arm64/kernel/head.S文件,stext接口的实现如下:该接口实现了内核启动的
- uboot传递参数至linux内核
wipping的技术小栈
前言之前我们讲过uboot引导了linux内核启动的过程,但对于其中的参数传递我们还没做过多的说明,在这篇文章中,我们将继续上一片文章,继续揭秘uboot传递参数给linux的过程。下面按笔者的理解分为几个阶段向各位阐述过程讲述校验阶段当uboot引导linux启动后,linux将从入口函数进入入口函数的文件是arch/arm/kernel/head.S进入函数,首先是对内核地址进行一个映射,我们
- 【Linux0.11 源码历险记 3】《开启分页》
Blandbland
Linux源码解析linux
下面我们就正式进入head.s的代码:.text.globl_idt,_gdt,_pg_dir,_tmp_floppy_area_pg_dir:startup_32:movl$0x10,%eaxmov%ax,%dsmov%ax,%esmov%ax,%fsmov%ax,%gslss_stack_start,%esp这里是将所用的*s寄存器都置为0x10其实就是选择了gdt里的第二个表项。lss指令的
- Linux0.11内核源码解析-head.s
天才小C
linux0.11内核源码linux
学习资料:Linux内核完全注释操作系统真像还原极客时间-Linux内核源码趣读Linux0.11内核源码->设置ds,es,fs,gs,寄存器为0x10,都指向GDT的第2个描述0000000000010000/**head.scontainsthe32-bitstartupcode.**NOTE!!!Startuphappensatabsoluteaddress0x00000000,which
- Linux源码解析--从main函数初始化到开中断
gokingd
linuxlinux服务器c语言操作系统
上文讲到了Linux系统启动前执行的三个汇编程序,head.s程序通过将main函数压栈再出栈跳转到main函数执行,此时真正进入由C语言编写的Linux源代码。上一篇文章可以点这里进行跳转Linux源码解析–从开机到main函数本文基于Linux0.11源代码,分析main函数中前几个初始化步骤,直到main函数中打开中断,执行move_to_user_mode(),由内核特权级转为用户特权级。
- Linux0.11内核源码解析-setup.s
天才小C
linux0.11内核源码linux
学习资料:Linux内核完全注释操作系统真像还原极客时间-Linux内核源码趣读Linux0.11内核源码->setup程序将system模块从0x10000~0x8ffff整块向下移动到内存绝对地址0x00000处->加载中断描述符寄存器idtr和全局描述符表寄存器gdtr(为了让head.s在32位保护模式下运行,本程序中临时设置中断描述符idt和全局描述符gdt,并在gdt中设置了当前内核代
- Linux内核完全注释(基于Linux0.11)_笔记_/linux/boot/
柳家山头号矿工
操作系统linux
文章目录说明前言作用bootsect.s程序setup.s程序head.s程序执行流程代码解析linux/boot/bootsect.slinux/boot/setup.slinux/boot/head.s说明前言本章主要描述boot目录中的三个汇编文件,这三个虽都是汇编文件,但却用到了两种语法格式bootsect.s和setup.s是实模式下运行的16位代码程序,采用近似于Intel的汇编语言语
- Linux内核引导简析
浩瀚之水_csdn
嵌入式Linux相关知识汇总
bootsect.S、setup.S、head.S分析收藏2010-01-1413:36:34bootsect.S,系统引导程序,一般不超过512字节。在PC系统结构中,线性地址0xA0000以上,即640K以上用于图形接口卡和BIOS自身,640K以下为系统的基本内存。如果配置更多的内存,则0x100000,即1MB处开始称为高内存。当BIOS引导一个系统时,总是把引导扇区读入到基本内存地址为0
- linux3.10 paging_init页表初始化详解
oqqYuJi12345678
内存管理linux内存管理内存初始化paging_init页表初始化
arm架构的32位linux系统上面,使用到了两种形式的页表映射,段映射和分页映射。系统早期的页表映射都采用静态映射的方式,即对于要映射的某块物理内存,指定其映射的虚拟地址。在uboot刚跳转到linux时候,先采用了段映射的方式,在arch/arm/kernel/head.S中可以看到源码://页表目录的物理地址起始地址放在代码段向下偏移页目录大小PG_DIR_SIZE的位置.macropgtb
- Linux内核4.14版本:ARM64的内核启动过程(一)——start_kernel之前
风雨兼程8023
嵌入式一些知识arm嵌入式硬件linux内核启动
目录一、vmlinux.lds.S二、head.S(进入kernel之前)2.1kernel之前bootloder的工作2.1bootloader和kernel的交互的时候需求2.3内核执行的第一行代码(_stext)2.3.1preserve_boot_args()2.3.2el2_setup2.3.3set_cpu_boot_mode_flag2.3.4__create_page_tables
- 内核对设备树的处理(1)
小嵌同学
初窥Linux内核设备树学习嵌入式硬件linux驱动开发arm设备树
目录一、从源头分析_内核head.S对dtb的处理二、对设备树中平台信息的处理(选择machine_desc)三、对设备树中运行时配置信息的处理一、从源头分析_内核head.S对dtb的处理(1)bootloader启动内核时,会设置r0,r1,r2三个寄存器, r0一般设置为0; r1一般设置为machineid(在使用设备树时该参数没有被使用); r2一般设置ATAGS或DTB的开始地址
- 内核引导程序---head
Paranoid€
操作系统stm32linux
1.简介head.s程序在被编译生成目标文件后会与内核其他程序一起被链接成system模块,它位于system模块的最开始部分。system模块将被放置在磁盘上setup模块之后的扇区,从磁盘上第6个扇区开始放置。注:这段程序处于绝对地址0x00000处。程序进入保护模式,程序采用AT&T语法格式。LinuxAT&T汇编语法简介:添加链接描述作用:head.s程序:设置中断描述符表项(哑中断);检
- 【文魁大脑读书会】17/60马帅《linunx内核0.11全面注释》
文魁大脑马帅
阅读时间:2015年10月28日阅读技巧:细读书中内容,了解单独文件的构成,详细阅读代码阅读笔记:打开INIT文件后在内核源代码的init/目录中只有一个main.c文件。系统在执行完boot/目录中的head.s程序后就会将执行权交给main.c。该程序虽然不长,但却包括了内核初始化的所有工作。因此在阅读该程序的代码时需要参照很多其它程序中的初始化部分。如果能完全理解这里调用的所有程序,那么看完
- 嵌入式linux内核init阶段流程
d7646e4b90f1
姓名:刘伟学号:17103223402【嵌牛导读】本文介绍了嵌入式linux内核init阶段流程【嵌牛鼻子】嵌入式linux内核init阶段流程【嵌牛提问】bootsect流程是什么【嵌牛正文】内核引导阶段1、bootsect阶段2、setup阶段3、head.S阶段4、main.c阶段init阶段1.确定用户登录模式在“/etc/inittab”中列出了如下所示的登录模式,主要有单人维护模式、多
- linux swapper_pg_dir
dawter
关于swapper_pg_dir含义:linux内核页全局目录变量定义位置head.S或head_32.S/**BSSsection*/.section".bss.page_aligned","w"ENTRY(swapper_pg_dir).fill1024,4,0ENTRY(empty_zero_page).fill4096,1,0相当于pgd_tswapper_pg_dir[1024]={0}
- HttpClient 4.3与4.3版本以下版本比较
spjich
javahttpclient
网上利用java发送http请求的代码很多,一搜一大把,有的利用的是java.net.*下的HttpURLConnection,有的用httpclient,而且发送的代码也分门别类。今天我们主要来说的是利用httpclient发送请求。
httpclient又可分为
httpclient3.x
httpclient4.x到httpclient4.3以下
httpclient4.3
- Essential Studio Enterprise Edition 2015 v1新功能体验
Axiba
.net
概述:Essential Studio已全线升级至2015 v1版本了!新版本为JavaScript和ASP.NET MVC添加了新的文件资源管理器控件,还有其他一些控件功能升级,精彩不容错过,让我们一起来看看吧!
syncfusion公司是世界领先的Windows开发组件提供商,该公司正式对外发布Essential Studio Enterprise Edition 2015 v1版本。新版本
- [宇宙与天文]微波背景辐射值与地球温度
comsci
背景
宇宙这个庞大,无边无际的空间是否存在某种确定的,变化的温度呢?
如果宇宙微波背景辐射值是表示宇宙空间温度的参数之一,那么测量这些数值,并观测周围的恒星能量输出值,我们是否获得地球的长期气候变化的情况呢?
&nbs
- lvs-server
男人50
server
#!/bin/bash
#
# LVS script for VS/DR
#
#./etc/rc.d/init.d/functions
#
VIP=10.10.6.252
RIP1=10.10.6.101
RIP2=10.10.6.13
PORT=80
case $1 in
start)
/sbin/ifconfig eth2:0 $VIP broadca
- java的WebCollector爬虫框架
oloz
爬虫
WebCollector主页:
https://github.com/CrawlScript/WebCollector
下载:webcollector-版本号-bin.zip将解压后文件夹中的所有jar包添加到工程既可。
接下来看demo
package org.spider.myspider;
import cn.edu.hfut.dmic.webcollector.cra
- jQuery append 与 after 的区别
小猪猪08
1、after函数
定义和用法:
after() 方法在被选元素后插入指定的内容。
语法:
$(selector).after(content)
实例:
<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></scr
- mysql知识充电
香水浓
mysql
索引
索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。
根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。
大多数存储引擎有更高的限制。MYSQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关;
MYISAM和InnoDB存储引擎
- 我的架构经验系列文章索引
agevs
架构
下面是一些个人架构上的总结,本来想只在公司内部进行共享的,因此内容写的口语化一点,也没什么图示,所有内容没有查任何资料是脑子里面的东西吐出来的因此可能会不准确不全,希望抛砖引玉,大家互相讨论。
要注意,我这些文章是一个总体的架构经验不针对具体的语言和平台,因此也不一定是适用所有的语言和平台的。
(内容是前几天写的,现附上索引)
前端架构 http://www.
- Android so lib库远程http下载和动态注册
aijuans
andorid
一、背景
在开发Android应用程序的实现,有时候需要引入第三方so lib库,但第三方so库比较大,例如开源第三方播放组件ffmpeg库, 如果直接打包的apk包里面, 整个应用程序会大很多.经过查阅资料和实验,发现通过远程下载so文件,然后再动态注册so文件时可行的。主要需要解决下载so文件存放位置以及文件读写权限问题。
二、主要
- linux中svn配置出错 conf/svnserve.conf:12: Option expected 解决方法
baalwolf
option
在客户端访问subversion版本库时出现这个错误:
svnserve.conf:12: Option expected
为什么会出现这个错误呢,就是因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件,如### This file controls the configuration of the svnserve daemon, if you##
- MongoDB的连接池和连接管理
BigCat2013
mongodb
在关系型数据库中,我们总是需要关闭使用的数据库连接,不然大量的创建连接会导致资源的浪费甚至于数据库宕机。这篇文章主要想解释一下mongoDB的连接池以及连接管理机制,如果正对此有疑惑的朋友可以看一下。
通常我们习惯于new 一个connection并且通常在finally语句中调用connection的close()方法将其关闭。正巧,mongoDB中当我们new一个Mongo的时候,会发现它也
- AngularJS使用Socket.IO
bijian1013
JavaScriptAngularJSSocket.IO
目前,web应用普遍被要求是实时web应用,即服务端的数据更新之后,应用能立即更新。以前使用的技术(例如polling)存在一些局限性,而且有时我们需要在客户端打开一个socket,然后进行通信。
Socket.IO(http://socket.io/)是一个非常优秀的库,它可以帮你实
- [Maven学习笔记四]Maven依赖特性
bit1129
maven
三个模块
为了说明问题,以用户登陆小web应用为例。通常一个web应用分为三个模块,模型和数据持久化层user-core, 业务逻辑层user-service以及web展现层user-web,
user-service依赖于user-core
user-web依赖于user-core和user-service
依赖作用范围
Maven的dependency定义
- 【Akka一】Akka入门
bit1129
akka
什么是Akka
Message-Driven Runtime is the Foundation to Reactive Applications
In Akka, your business logic is driven through message-based communication patterns that are independent of physical locatio
- zabbix_api之perl语言写法
ronin47
zabbix_api之perl
zabbix_api网上比较多的写法是python或curl。上次我用java--http://bossr.iteye.com/blog/2195679,这次用perl。for example: #!/usr/bin/perl
use 5.010 ;
use strict ;
use warnings ;
use JSON :: RPC :: Client ;
use
- 比优衣库跟牛掰的视频流出了,兄弟连Linux运维工程师课堂实录,更加刺激,更加实在!
brotherlamp
linux运维工程师linux运维工程师教程linux运维工程师视频linux运维工程师资料linux运维工程师自学
比优衣库跟牛掰的视频流出了,兄弟连Linux运维工程师课堂实录,更加刺激,更加实在!
-----------------------------------------------------
兄弟连Linux运维工程师课堂实录-计算机基础-1-课程体系介绍1
链接:http://pan.baidu.com/s/1i3GQtGL 密码:bl65
兄弟连Lin
- bitmap求哈密顿距离-给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(
bylijinnan
java
import java.util.Random;
/**
* 题目:
* 给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(y1,y2,y3,y4,y5),
* 使得他们的哈密顿距离(d=|x1-y1| + |x2-y2| + |x3-y3| + |x4-y4| + |x5-y5|)最大
- map的三种遍历方法
chicony
map
package com.test;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class TestMap {
public static v
- Linux安装mysql的一些坑
chenchao051
linux
1、mysql不建议在root用户下运行
2、出现服务启动不了,111错误,注意要用chown来赋予权限, 我在root用户下装的mysql,我就把usr/share/mysql/mysql.server复制到/etc/init.d/mysqld, (同时把my-huge.cnf复制/etc/my.cnf)
chown -R cc /etc/init.d/mysql
- Sublime Text 3 配置
daizj
配置Sublime Text
Sublime Text 3 配置解释(默认){// 设置主题文件“color_scheme”: “Packages/Color Scheme – Default/Monokai.tmTheme”,// 设置字体和大小“font_face”: “Consolas”,“font_size”: 12,// 字体选项:no_bold不显示粗体字,no_italic不显示斜体字,no_antialias和
- MySQL server has gone away 问题的解决方法
dcj3sjt126com
SQL Server
MySQL server has gone away 问题解决方法,需要的朋友可以参考下。
应用程序(比如PHP)长时间的执行批量的MYSQL语句。执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理。都容易引起MySQL server has gone away。 今天遇到类似的情景,MySQL只是冷冷的说:MySQL server h
- javascript/dom:固定居中效果
dcj3sjt126com
JavaScript
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml&
- 使用 Spring 2.5 注释驱动的 IoC 功能
e200702084
springbean配置管理IOCOffice
使用 Spring 2.5 注释驱动的 IoC 功能
developerWorks
文档选项
将打印机的版面设置成横向打印模式
打印本页
将此页作为电子邮件发送
将此页作为电子邮件发送
级别: 初级
陈 雄华 (
[email protected]), 技术总监, 宝宝淘网络科技有限公司
2008 年 2 月 28 日
&nb
- MongoDB常用操作命令
geeksun
mongodb
1. 基本操作
db.AddUser(username,password) 添加用户
db.auth(usrename,password) 设置数据库连接验证
db.cloneDataBase(fromhost)
- php写守护进程(Daemon)
hongtoushizi
PHP
转载自: http://blog.csdn.net/tengzhaorong/article/details/9764655
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。php也可以实现守护进程的功能。
1、基本概念
&nbs
- spring整合mybatis,关于注入Dao对象出错问题
jonsvien
DAOspringbeanmybatisprototype
今天在公司测试功能时发现一问题:
先进行代码说明:
1,controller配置了Scope="prototype"(表明每一次请求都是原子型)
@resource/@autowired service对象都可以(两种注解都可以)。
2,service 配置了Scope="prototype"(表明每一次请求都是原子型)
- 对象关系行为模式之标识映射
home198979
PHP架构企业应用对象关系标识映射
HELLO!架构
一、概念
identity Map:通过在映射中保存每个已经加载的对象,确保每个对象只加载一次,当要访问对象的时候,通过映射来查找它们。其实在数据源架构模式之数据映射器代码中有提及到标识映射,Mapper类的getFromMap方法就是实现标识映射的实现。
二、为什么要使用标识映射?
在数据源架构模式之数据映射器中
//c
- Linux下hosts文件详解
pda158
linux
1、主机名: 无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。 公网:IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。 局域网:每台机器都有一个主机名,用于主机与主机之间的便于区分,就可以为每台机器设置主机
- nginx配置文件粗解
spjich
javanginx
#运行用户#user nobody;#启动进程,通常设置成和cpu的数量相等worker_processes 2;#全局错误日志及PID文件#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log inf
- 数学函数
w54653520
java
public
class
S {
// 传入两个整数,进行比较,返回两个数中的最大值的方法。
public
int
get(
int
num1,
int
nu