- 博客(26)
- 收藏
- 关注
原创 java多线程(四)-juc包- 原子变量类atomic
原子变量类atomic简介Atomic包中的原子操作类提供了一种用法简单、性能高效、线程安全地更新一个变量的方式。有4种类型的原子更新方式,分别是原子更新基本类型,原子更新数组,原子更新引用和原子更新属性,Atomic包里的类基本都是使用Unsafe实现的包装类.原子更新基本类型类使用原子的方式更新的基本类型,提供了以下3个类:(1)AtomicBoolean:原子更新布尔类型(2)AtomicInteger:原子更新整型(3)AtomicLong:原子更新长整型这里我们分析AtomicIn
2021-01-07 20:18:09
212
原创 java多线程(三)-juc包- Concurrent集合
ReadWriteLock使用ReadWriteLock可以提高读取效率:ReadWriteLock只允许一个线程写入(其他线程不能读写)ReadWriteLock允许多个线程同时读取ReadWriteLock适合读多写少的场景class Counter { private ReadWriteLock lock = new ReentrantReadWriteLock(); private Lock readLock = lock.readLock();
2021-01-06 21:51:34
218
原创 java多线程(二)- juc包-ReenTrantLock和ReadWriteLock
ReenTrantLockReenTrantLock 是 java.util.locks包提供的锁,可用于代替synchronized 实现更细粒度的锁。class Count { private Lock lock = new ReentrantLock(); private int value = 0; public void add(int m) { lock.lock(); try { this.value +=
2021-01-06 21:06:02
152
原创 java多线程(一)
多线程简介同步和异步同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以据徐后续的操作并发和并行并发就是多个任务交替执行,多个任务之间还是串行的。 并行是真正意思上的同时执行。真实的并行只可能出现在多CPU系统中临界区临界区的资源可被多个线程使用,但是每一次,只能有一个线程来使用它,一旦临界区资源被占用,其他线程若想要这个资源,就必须等待阻塞和非阻塞阻塞和非阻塞通常用来形容多线程间的相互影响。一个
2021-01-05 21:47:21
121
原创 接口,继承,重写,重载,多态
继承java支持的是一种单继承,不支持多继承,可以多重继承。只有接口可以多继承接口public interface InterfaceTest extends InterfaceB ,InterfaceA {}继承的特点子类具有父类的非private(私有)的属性和方法子类可以拥有自己的属性和方法,,即子类可以对父类进行扩展子类可以用自己的方式实现父类的方法, 即为重写(@Override)如果一个类用final修饰,那么他不能被继承,如果类的方法被final修饰,那么不能被重写。
2021-01-02 15:56:09
375
原创 java的final,static,this,super,代码块,静态代码块总结
thisthis是对对象而言的,每个对象被创建时,虚拟机都会为对象准备一个指向自己的指针,这个指针就是this。this是对对象而言的,所以它不能出现在static方法中。也不能存在于静态代码块中finalfinal这个关键字的含义是“这是无法改变的”或者“终态的”;1.修饰变量final成员变量表示常量,只能被赋值一次,赋值后值不再改变。2.修饰方法final方法不能被子类方法覆盖,但可以被继承。3.修饰类final类不能被继承,没有子类,final类中所有方法都是final的。
2021-01-02 09:58:06
187
原创 java数组
数组的三种初始化方式一:静态初始化在声明的时侯就给数组赋值的方式如int[] arr = {1,2,3};User[] arr = {new User(),new User()};二:默认初始化在声明的时候只给数组指定大小,那么分配的空间就会根据类型自动初始化,如int为0,对象为null。如: int[] arr = new int[3];三:动态初始化在声明的时候只给数组指定大小,随后指定每个对象具体的值如://3、动态初始化 int [ ] d= new int[
2021-01-02 09:37:24
142
原创 java异常体系
什么是反射[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1YyVWF0e-1609492340795)(D:\study\md\image\image-20201227094653872.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5oux7kul-1609492340796)(D:\study\md\image\image-20201227094800525.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存
2021-01-01 21:33:52
98
原创 Java八大数据类型和String
#JAVA基本数据类型JAVA基本数据类型: byte,short,int,long为整型;float,double为浮点型;char为字符型;boolean 为布尔类型基本类型间的转换存储范围小的类型到存储范围大的类型: 自动转换byte → short(char) → int → long → float → double从存储范围大的类型到存储范围小的类型(使用强转,可能会损失精度)double → float → long → int → short(char) → byteStri
2021-01-01 17:05:11
719
1
原创 java集合
java 集合基本介绍java.util提供了集合类,包括:Collection:根接口List:有序列表Set:无重复元素集合Map:通过Key查找Value的映射表Java集合支持范型,通过迭代器(Iterator)访问集合。以下类是java的历史遗留实现,不推荐使用Hashtable : 一种线程安全的Map实现Vector: 一种线程安全的List 实现Stack: 基于Vector实现的LIFO 的栈Collection 接口collection 接口定义如下p
2020-12-30 15:35:58
240
1
原创 java泛型
什么是泛型泛型是jdk5引入的类型机制,就是将类型参数化。先来看一个例子 public static void main(String[] args) { List list = new ArrayList(); list.add("str"); list.add(1); int s = (int)list.get(0); System.out.println(s); }运行代码结果: java.lang
2020-12-29 20:48:42
154
原创 git在idea中的使用
工程初始化为本地库首先,进入setting,然后搜索git,填写git安装目录。然后点击Test,有successfully代表成功然后再点击github,登录你的github账户然后apply就行初始化git仓库,相当于git init选择项目本身目录开始初始化所有的文件会变成红色,即未追踪状态。忽略特定文件按照全局方式去忽略也是可以的,在idea还可以通过插件来完成...
2020-03-10 10:04:09
338
原创 git在eclipse中的使用
工程初始化为本地库ecipse 中内置了git插件,可以看到我们配置的全局签名。接下来将项目初始化为本地库工程→右键→Team→Share Project→Git点击Create Repository完成初始化初始完成后,再次点击项目team即可完成相关操作如果想添加项目级别的签名。初始化后,文件会带有标识开始都是未追踪。忽略特定文件点击commit后,可以看到...
2020-03-10 10:03:30
306
原创 git底层原理
Git存储对象(hashMap)Git 是一个内容寻址文件系统,其核心部分是一个简单的键值对数据库(key-value data store),你可以向数据库中插入任意内容,它会返回一个用于取回该值的hash 键// git键值库中插入数据echo 'weiifeng is good man'| git hash-object -w --stdine8d72b50f0aaaf43ca5ce...
2020-03-10 10:02:48
160
原创 Git的基本使用
git 体系介绍git 和SVN 的区别存储方式不一样git把内容按元数据方式存在k/v数据库,而svn是按文件。git hash-object -w README.MFgit cat-file -p commonitId使用方式不一样从本地把文件推送远程服务,svn只需要commint,而git 需要add,commint, push 三个步骤。管理模式不一样git是一个分...
2020-03-10 10:01:42
213
原创 简单的Socket 编程
什么是Socketsocket的概念有很多,这里介绍的是进行网络中通信的Socket。网络中的通信不仅仅需要知道彼此的主机还要知道彼此通信的进程。网络中是通过IP:端口来实现点对点的通信的。这就是Socket。Socket 通信流程首先,服务器先创建Socket 然后绑定端口号进入监听状态。 客户端发送请求时,先创建Socket然后向服务器发送连接请求。 服务端调用Accept()接受连...
2019-07-15 15:48:00
189
原创 JVM内存区域与内存溢出异常总结
JVM内存区域数据区域基本作用线程私有性溢出异常备注虚拟机栈创建栈帧保存局部变量表,操作数栈,动态链接,方法出口等线程私有请求栈深度过深:StackOverFlowError异常,内存不足,OutOfMemoryError异常本地方法栈和虚拟机栈基本一致线程私有StackOverFlowError 和OOM程序计数器字节码执行行号指示器...
2019-07-08 21:14:53
210
原创 HashMap,HashTable,conccurentHashMap的区别
HashMapHashMap是线程不安全的。可以通过Collections将其包装为线程安全的Map我们看一下Collections的synchronizedMap方法public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) { return new SynchronizedMap&...
2019-07-07 10:28:13
937
原创 java动态代理
代理模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用代理模式设计类图如下:代理模式包含如下角色:Subject: 抽象主题角色Proxy: 代理主题角色RealSubject: 真实主题角色代理类实现代码:public class Proxy implements Subject {private RealSubject realSubject = new Re...
2019-06-21 20:26:17
174
原创 IDEA使用lombok使用get set无效处理
原因安装了lombok,但是可能没有激活配置,从而造成lombok不可用解决方案file-》setting,Build, Execution,Deployment-》Annotation Processors选中下图中复选框,重启项目完美解决!...
2019-06-19 22:07:52
3162
2
原创 java设计模式之组合模式
动机对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象,如子文件夹和文件)并调用执行(递归调用)由于容器对象和叶子对象在功能上的区别,在使用这些对象的客户代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下客户希望一致地处理它们,因为对于这些对象的区别对待将会使得程序非常复杂...
2019-06-05 15:51:19
266
原创 java的三种工厂模式
一,简单的工厂模式首先举一个例子:我们现在开了一家饭馆:public interface Restaurant { public void cook();}然后呢我们的大厨可以做几种菜:public class Fish implements Restaurant{ @Override public void cook() { System.out.println("来一个...
2019-05-29 20:37:57
270
原创 利用内存分析工具(Memory Analyzer Tool,MAT)分析java项目内存泄露
前言在平时开发、测试过程中、甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序有严重的问题。我们需要找造成OutOfMemoryError原因。一般有两种情况:1、内存泄露,对象已经死了,无法通过垃圾收集器进行自动回收,通过找出泄露的代码位置和原因,才好确定解决方案;2、内存溢出,内存中的对象都还必须存活着,这说明Java堆分配空间不足,检查堆设置大小...
2019-05-16 14:08:56
953
原创 使用Spring缓存机制整合Redis
准备测试环境先定义一个简单的角色Pojo/** * 因为要序列化对象,所以需要实现Serializable 接口,表明它能够序列化 */public class Role implements Serializable { private String note; private long id; private String roleName; public Stri...
2019-04-11 22:13:31
134
原创 spring 整合 redis
前期准备(1)spring-data-redir1.7.2.jar(2) spring4.3.2版本相关jar包下载链接: spring4.2.3下载注:其他版本可能会出现不兼容问题,出现各种错误。第一步 配置redis连接池使用reids 大多数情况下会使用连接池。在spring 中配置如下:<bean id="poolConfig" class="redis.client...
2019-04-10 15:50:59
226
原创 redis 伪集群搭建
一 redis集群架构细节:(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可(4)redis-cluster把所有的物理节点映射到[0-16383]slot上...
2019-04-09 10:55:29
134
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人