- 浏览: 34415 次
-
最新评论
文章列表
关于线程安全的一些小问题
- 博客分类:
- java
Person 类代码如下
public class Person {
private int age;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public ...
线程公有的区域主要包含Java堆内存,方法区,运行常量池
Java堆是被所有线程共享的一块内存区域,在虚拟机启动的时候创建。此内存区域的唯一目的就是存放对象实例。
Java虚拟机规范描述:所有的对象实力以及数组都要在堆上进行分配。
方法区与Java堆一样,是各个线程共享的内存区域,它用于储存已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。
运行时常量池是方法区的一部分,Class文件除了有类的版本,字段,方法,接口等描述信息外,还有一个就是常量池。
用于存放编译器生成的各种字常量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放 ...
线程安全的策略
如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误,有三种方式可以修复这个问题。
1.不在线程之间共享该状态变量(虚拟机栈和Threadlocal)
2.将状态变量修改为不可变的变量
3.在访问状态变量时使用同步
程序计数器
由于线程具有时分的特点,所以需要一个东西来记录当前线程被切换前运行到了哪里?这就是程序计数器,等待切换回来的时候,继续原来的程序。
虚拟机栈
如果多线程访问单例对象时,其类变量和成员变量都可能受到多线程影响产生不可预期的结果。
虚拟机栈是线程私有的,生命周期与线程相同。
每个方法执行的同时都会创 ...
/**
@since 1.7
*/
public final class Objects {
......
}
1.7出现的工具类,final修饰类不可继承,这个类断子绝孙了。
private Objects() {
throw new AssertionError("No java.util.Objects instances for you!");
}
构造器私有,该类不能创建对象。
public static boolean equals(Object a, Object b) {
retu ...
废话不多说,直接上遇见的坑。
尽管可以增加新的类型到索引中,或者增加新的字段到类型中,但是不能添加新的分析器或者对现有的字段做改动。 如果你那么做的话,结果就是那些已经被索引的数据就不正确, 搜索也不能正常工作。对现有数据的这类改变最简单的办法就是重新索引:用新的设置创建新的索引并把文档从旧的索引复制到新的索引。字段 _source 的一个优点是在Elasticsearch中已经有整个文档。你不必从源数据中重建索引,而且那样通常比较慢。为了有效的重新索引所有在旧的索引中的文档,用 scroll 从旧的索引检索批量文档 , 然后用 bulk API 把文档推送到新的索引中。
链接 ...
在pom中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
然后发现只有/health可以调用,其他信息都不可见。
在yml中加入,可以看一切信息了。
management:
security:
...
官方链接:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file
公司开发使用了Springboot,但是为什么我们还会打成war包呢,因为我们公司的运维做了钩子,只要有代码往master上合并,它会自动部署到对应tomcat下面,所以我们公司都用war包部署项目,而且tomcat是一个很完整的servlet容器。
关于打war包让我们看看官网怎么说的
The first step in producing a deploy ...
spring-mybatis文件
- 博客分类:
- mybatis
编写mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<s ...
spring自带拦截器
- 博客分类:
- springmvc
代码来自Spring in action 165页
在pojo上加入注解,个人认为这样编写工作量相当大,而且对代码侵入比较高。
public class Spitter {
private Long id;
@NotNull
@Size(min=5, max=16)
private String username;
@NotNull
@Size(min=5, max=25)
private String password;
@NotNull
@Size(min=2, max=30)
private ...
springmvc中的编码过滤器
- 博客分类:
- springmvc
在web.xml中编写一下代码
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param- ...
springmvc文件安全控制
- 博客分类:
- springmvc
对于jsp页面和静态资源文件不进行安全控制,则用户访问项根目录的时候,所有的数据都会呈现出列表的形式。所以需要将文件放到WEB-INF文件夹下,此时用户就无法访问,但是放到WEB-INF会太安全。外部无法访问,所以在Springmvc中支持映射,此处使用了视图解析器。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pa ...
springmvc拦截器
- 博客分类:
- springmvc
拦截器源代码如下
public interface HandlerInterceptor {
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception;
void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws ...
转 springmvc配置文件
- 博客分类:
- springmvc
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context=&qu ...
1、Spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2、在web.xml配置监听器ContextLoaderListener(listener-class) ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了Serv ...
请写出java代码,实现一下方法,计算对于数字100,共有多少种组合方法。
(假设组合时可以使用的数字包括100,50,20,10,5,2,1),比如如果M为1,共有1中组合方法,即1*1个;
如果M为2,则共有2种组合方式,2*1个 和1*2个;
求出返回组合方法的个数。
package org.son;
public class Mytest {
private static int count;
public static void main(String args[]) {
int max = 10;
int[] cents = { 100, 50, ...