从i++的线程安全问题,分析volatile
看看如下代码
123456789101112131415161718192021222324package com.wzl.day26;/** * @ClassName VolatileVisibility * @Description VolatileVisibility * @Author wu ...
双冒泡语法
1234567* 双冒号语法* 1.静态方法引用(static method)语法:classname::methodname 例如:Person::getAge* 2.对象的实例方法引用语法:instancename::methodname 例如:System.out::println* 3.对象 ...
设计模式2工厂模式
模式定义:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟到子类。
简单工厂的模式样例应该是如下:
1234567891011121314151617181920212223242526272829303132333435363738394 ...
设计模式1单例模式
模式定义:
保证一个类只有
一个示例,并且提供一个全局访问点
场景:
重量级的对象,不需要多个实例,如线程池,数据库连接池。
懒汉模式:延迟加载,只有在真正使用的时候,才开始实例化。
1)线程安全问题
2)double check 加锁优化
3) 编译器(JIT),CPU有可能对指令进行重排序, ...
手撸IOC框架
IOC遵循是Spirng中对依赖倒转原则的原则,依赖倒转原则告诉我们:
上层模块不应该依赖底层模块,他们都应该依赖于抽象
抽象不应该依赖于细节,细节应该依赖于抽象
先读取bean的XML配置文件,然后使用beanId查找bean配置,并获取配置文件中class地址,得到地址后使用Java反射技术 ...
pow(x,n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
示例 3:
输入: 2.00000, -2
...
线程池代码
代码的注释都写在了这里
-
1. 线程的生命周期ExecutorService主要功能
12345678910111213141516171819202122232425262728293031323334353637/** * 履行Ruannable类型的任务 * @param c ...
JVM的类加载过程(1)
当我们执行java命令的时候,java命令是怎么执行的呢。
12345678910111213141516171819202122232425package com.wzl.jvm.math;/** * @ClassName Math * @Description Math * @Author wu ...
设计规约
【强制】存储方案和底层数据结构的设计获得评审一致通过,并沉淀成为文档。 说明:有缺陷的底层数据结构容易导致系统风险上升,可扩展性下降,重构成本也会因历史数据迁移和系统平滑过渡而陡然增加,所以,存储方案和数据结构需要认真地进行设计和评审,生产环境提交执行后,需要进行double check。 正例: ...
工程结构
(一) 应用分层
【推荐】图中默认上层依赖于下层,箭头关系表示可直接依赖,如:开放接口层可以依赖于Web层,也可以直接依赖于Service层,依此类推:• 开放接口层:可直接封装Service方法暴露成RPC接口;通过Web封装成http接口;网关控制层等。• 终端显示层:各个端的模板渲染并执行显示 ...