Java内存模型
基本概念
1 | 1. 线程通信 |
指令重排
1 | 1. 编译器重排 |
jvm 指令执行
1 | 未使用同步的程序在jvm中的执行基本无序、 |
1 | 1. 线程通信 |
1 | 1. 编译器重排 |
1 | 未使用同步的程序在jvm中的执行基本无序、 |
1 | http://archive.apache.org/dist/lucene/solr/ |
1 | 1. 将下载完成的solr解压到tomcat的指定目录中 |
1 | 重启tomcat |
1 | 访问 localhost:8081/solr/index.html 可以看到solr的管理界面 |
==solr服务搭建end
1 | 这样就搭建完成、可以开始使用了 |
1 | 1. 创建文件夹 ~/www/Java/solr_home/new_core 用来存放core内容 |
1 | 1. 引入jar包 |
1 | 这样就可以开始使用了^.^ |
1 | 类方法:(静态方法) static修饰、可以通过类名直接访问、 |
可以将类看成自定义数据类型
1 | 1. 定义一个类本身、什么都不会做、不会分配内存、也不会执行代码 |
1 | 1. 程序运行时、第一次通过new创建一个类的对象的时候、or 直接通过类名访问类变量/类方法的时候、 |
1 | 1. java 使用extends表明继承关系、一个类只有一个父类 |
1 | 在Java中、类的加载时将类的相关信息加载到内存、Java是动态加载的、第一次使用时才会加载 |
1 | 在类加载的时候、为每个类创建一个表、包括类的对象所有动态绑定的方法及地址、包括父类的方法 |
1 | Q. 实例变量的初始化是在new的时候进行的、类变量的初始化呢 ?(MyNumber.class) |
1 | 1. newSingleThreadExecutor |
1 | corePoolSize: 线程池中维护的核心线程数、空闲依然存在、除非设置了 allowCoreThreadTimeOut 参数 |
1 | 1. LinkedBlockingQueue |
1 | 1. ThreadPoolExecutor.AbortPolicy:这就是默认的方式,抛出异常 |
1 | 1. 在系统负载很高的情况下、newFixedThreadPool可以通过队列对新任务排队、保证有足够的资源处理实际任务 |
1 | 若任务之间有依赖、可能会出现线程池的死锁 |
1 | 1. 核心线程不会预先创建,只有当有任务时才会创建 |
1 | 1. brew install hbase |
1 | 1. conf/hbase-env.sh 添加Java jdk路径 |
1 | /usr/local/Cellar/hbase/{version}/libexec/bin/start-hbase.sh |
1 | hbase shell |
1 | status 查询服务器的状态 |
1 | 1. create |
1 | 1. add |
1 | 1. 行以 rowkey 作为唯一标识、最大长度 64KB |
http://einverne.github.io/post/2017/02/hbase-introduction-and-use.html
http://einverne.github.io/post/2017/02/hbase-shell-command.html
1 | Spring的`scope` : |
1 | @PostConstruct 在 construct之后执行、 |
提供不同环境不同配置文件的支持
1 |
|
Spring的事件为Bean与Bean之间的通信提供了支持、
1) 自定义事件 继承ApplicationEvent
2) 定义事件监听器 实现 ApplicationListener
3) 使用容器发布事件
1 |
|
1 |
|
主要用来存放函数调用所需要的数据(函数参数、返回地址及函数内部的局部变量)、但、返回值不在桟中、会有一个专门的返回值存储器、
1 |
|
1 |
|
对象:每次new创建一个对象的时候、对象产生、在内存中、会存储这个对象的实例变量值、每new一次、对象就会产生一个、就会有一份独立的实例变量
@Scheduled
注解、简单轻量级task配置
@Scheduled
使用:
@Scheduled(cron = "0 5 * * * * ?")
10分钟执行1次@Scheduled(fixedRate = 2000)
每2s执行1次、不用等待上次执行完成@Scheduled(fixedDelay = 2000)
等待上次请求结束后、delay 2s 执行下次任务@Scheduled(fixedDelay = 2000, initDelay = 2000)
项目启动成功后、延迟2s执行任务 @Controller
mvc中、声明一个控制器@Component
声明一个通用组件@Repository
声明一个dao组件@Service
声明一个service组件
@Bean
声明一个bean容器@Configuration
声明配置类@ComponentScan
包扫描
@Async
声明一个异步方法@EnableAsync
开启异步任务支持@Scheduled
声明一个计划任务
fixdRate
表明每隔固定时间间隔执行
cron
表明按照cron表达式在指定时间执行@EnableScheduling
开启计划任务支持@EnableCaching
开启注解式的缓存支持
@RequestMapping
配置url和方法之间的映射关系@Conditional
条件注解@ResponseBody
将返回值放在response返回体内、而不是返回一个页面@RequestBody
允许将request参数放在request体中、而不是放在连接地址后边@PathVariable
用来接收路径参数
组合注解@WiselyConfiguration
代替 @Configuration
+ @ComponentScan
@RestController
代替 @Controller
+ @ResponseBody
@SpringBootApplication
组合了@Configuration
+@EnableAutoConfiguration
+@ComponentScan
@ConditionalOnBean
当容器里有指定的bean的条件下@ConditionalOnClass
当类路径下有指定的类的条件下@ConditionalOnExpression
基于SpEL做判断@ConditionalOnJava
基于jvm版本做判断@ConditionalOnMissingBean
当容器中无指定bean的条件下@ConditionalOnMissingClass
类路径下无指定class的情况下@ConditionalOnNotWebApplication
当前项目不是web项目的情况下@ConditionalOnWebApplication
当前项目是web项目的情况下@ConditionalOnProperty
指定的属性是否有指定值@ConditionalOnResource
类路径是否有指定值
tickTime
用于计算的时间单元、eg. session超时、N*tickTimeinitLimit
用于集群、允许从节点连接、并同步到master节点的初始化连接时间、以tickTime的倍数来表示syncLimit
用于集群、master主节点与从节点之间发送消息、请求和应答的时间长度(心跳机制)dataDir
数据文件目录、必须dataLogDir
日志目录、非必须、默认dataDir
clientPort
连接服务器的端口、默认 2181
zkCli.sh
默认连接2181
ls
与linux下ls
同义ls
等同于 ls
+ stat
stat
状态显示 zZxid zookeeper为数据分配的id pZxid 子节点的idget
查看节点数据create
创建节点 -e 临时节点set
修改节点数据delete
删除节点数据
构成: scheme: 采用的权限机制
(word:anyone:[permissions] |
auth:user:password:[permissions] |
digest:user:BASE64(SHA1(pass)):[permissions])
(ip:192.168.1.1:[permission])
(super: 代表超管、拥有所有的权限)
id: 代表允许访问的机制
permissons: 权限
权限字符缩写 crdwa
create: 创建子节点
read: 获取节点、子节点
write: 设置节点数据
delete: 删除子节点
admin: 设置权限
getAcl
获取节点的acl权限信息setAcl
设置某个节点的acl权限信息addAuth
输入认证权限信息、注册时、输入明文密码(登录)、但在zk的系统里、是以密文存在的
stat
当前节点的状态信息ruok
当前节点是否okconf
查看服务器相关的配置cons
展示连接到server的client信息envi
打印环境变量信息mntr
监控zk的健康信息wchs
watcher的信息wchc
session与watch对应关系信息wchp
path与watch对应关系