程序存储于硬盘,运行时加载至内存,内存内开始划分区(1-代码区(code segment)存放代码,2-数据区(data )用于存储静态变量和字符串常量,3-栈(stack)用于存储局部变量,4-堆(heap)用于存储new出来的对象。
内存怎么区分不同的数据类型?占的长度和布局。
\u:表示16进制;
16进制以0x开头,所以最大的数是0xff;
8进制以0开头。
浮点类型:
3.14 ;314.0;.314等都是表示浮点,科学计数法的3.14e2(表示3.14*10的2次方);3,143-2(表示3.14*10的-2次方);
浮点型的精度???
UNICODE:统一编码方式,所以java采用Unicode(utf-8和utf-16两种),java采用utf-16。所有的字符用2个字节表示。
中国:GBK,GB2132。
int x,y=9表示:x为零(当x为成员变量时默认为0),y为9
string:字符串类型,一长串字符;
char(字符类型,只能是单个字符):char c;c="\u534e"(unicode表示法,这是一个"华"字),当字符变量是局部变量时,可以声明再赋值,但是当为成员变量时,不可以声明后再赋值,而是需要直接赋值。因为需要默认值
》》》》》》》》》》》》》》》》》》》》》》》》》》
读取当前系统的环境变量和系统变量:当前的默认变量有两种,一种是用户设置的在环境变量内,一种是系统自带的。在java种获取的方法如下:
1.环境变量:
test = System.getenv("this_secret");this secret是环境变量的名称。返回值是一个string
2.系统变量:
test = System.getproperty("key"),具体的去查百度。当想取到全部变量时。不加key,返回值是一个map类的
》》》》》》》》》》》》》》》》》》》》》》
读取文件并使用内部的值:
比如运行的环境内有一个文件,通过
public String testsec() {
String filePath = "/secret-test/secret-sample";
Map<String, String> map = new HashMap<String, String>();
File file = new File(filePath);
BufferedReader reader = null;
String test = "secret is not exist";
try {
System.out.println("start to read: ");
reader = new BufferedReader(new FileReader(file));
String tempString = null;
int line = 1;
// one line for one times
while ((tempString = reader.readLine()) != null) {
// show line number
System.out.println("line " + line + ": " + tempString);
if (!tempString.startsWith("#")) {
test = tempString;
}
line++;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
return test;
}
即可以实现
spring boot:
github上有soringboot的demo。拉下来的demo后在controller内可以看到一个个接口的实现,一个
@RequestMapping("/volumesecret") 放在方法的上面即定义了该方法被调用的api的名称,比如这个例子里就是/volumesecret就是调用的api的endpoint。
spring boot:
log4j: 本章实现的是log4j2,就是升级版。具体动作如这片文章,说的很详细准确,实现的功能包括打印日志到文件及滚动转移到另一个文件rollingfile
https://blog.csdn.net/herojuice/article/details/85330743
log4j2 : spring本身有自带的日志处理系统,但是一般采用log4j2。并没有多写2,是真的有2. 集成方法:一共三步,首先pom内导入依赖,二是controller代码里写调用和输出。三是在reource下的log4j.xml里进行配置。。。首先在pom,xml内添加以下项(Springboot的pom.xml的用法,这里有个dependencies定义了无数个要是用的依赖,log4j2就是在这里定义,但是要同时排除掉一个spring默认的自带的log依赖),
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
这个pom就可以导入log4j2。
在java的controller内调用的方法:先实例化一个log的对象。然后通过调取info或者error等等方法打印日志
private static Logger logger1 = LogManager.getLogger("test.go");
private static Logger logger2 = LogManager.getLogger(HelloWorldController.class);
@RequestMapping("/hello")
public String index() {
logger1.info("------------info log1, this is test hello");
logger2.info("++++++++++++info log2, this is test hello");
第三步,配置log4j2.xml
<properties>
<property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n</property>
<property name="LOGDIR">/log</property>
</properties>
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<JsonLayout compact="true" locationInfo="true" complete="false" eventEol="true" /> </Console>
<RollingFile name="LogFile" fileName="${LOGDIR}/justin.log"
filePattern="${LOGDIR}/justin-%d{yyyy-MM-dd HH-mm}-%i.log" append="true">
<JsonLayout compact="true" locationInfo="true" complete="false" eventEol="true" />
<DefaultRolloverStrategy max="10"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
<SizeBasedTriggeringPolicy size="1 MB"/>
</Policies>
</RollingFile>
</appenders>
spring boot的使用:有个application的类作为入口,其次在controller的文件夹里写class类
注解:
@SpringBootApplication 作为入口类
@RestController 在controller类的最顶端的注解
@RequestMapping("/hello") 在方法上方的注解,用于表示api调用的路径,比如在主api后面加上/hello即可调用这个方法