摘要:
由于大学里面有一些任务需要投票,而又不想劳烦他人去帮我,所以打算自己写一个脚本来实现自动投票的功能。这里记录一下我的整个过程。 技术选型 java8 selenium3 实现chrome自动化的jar包 AUTolt 模拟键盘操作的软件 导入selenium3 这里我用的maven导入的,代码如下: 阅读全文
摘要:
知识点: 线程同步 线程并发 问题描述:在当处理全局变量的时候,当两个或者以上的线程处理同一个** 全局 **变量的时候,可能会出现冲突问题。 java 同步函数 首先看一下问题场景 package com.Thread.Test; /** * 抢票问题的一个案例分析 */ class Thread 阅读全文
摘要:
锁的深入理解 重入锁 这个锁相当于一个递归锁,如果上层代码已经获得到了锁的所有权,那么他的子代码也直接拥有所有权,重入锁的常见有 Lock锁(轻量级锁) 和 synchronize(重量级锁) synchronize是根据当前java线程数量,从轻量级锁逐渐变成重量级锁的过程,且此过程不可逆。 读写 阅读全文
摘要:
两个线程的基本概念 守护线程即在后台为用户提供一些基本保障的线程,例如java中的gc线程[垃圾处理机制],他会自动清理一些没有用处的变量空间,处理空间溢出等问题。守护线程会随着main函数的结束而结束。 非守护线程,也成为用户线程,他是可以由用户自己定义,不会随着main函数的结束而结束,这个特性 阅读全文
摘要:
java反射机制 我们平常都是通过new一个类来实例化一个对象,但是我们同时可以通过反射机制来构建,并且动态获取类里面的信息 比如说构造函数,方法和属性。 常用的代码像是这个: 方法 功能 Class<?> Class.forName("全类名") 加载该类对象,并且通过这个方法可以获得类的信息 x 阅读全文
摘要:
jdk1.8以前的内存模型是这样的, 下面我分析一下他们的作用 方法区 方法区也叫永久区,一些类的信息:方法名 返回值什么的,常量,静态变量都放在里面,class文件加载 这是是线程共享的 她其实是放在堆中的永久代中的,但是这个永久代又和堆是隔离的 堆 堆中存放的是new的对象,是jVM中最大的空间 阅读全文
摘要:
+这里来复习一下java多线程的三大特性 : 原子性,可见性,有序性。 什么是原子性 即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 一个很经典的例子就是银行账户转账问题: 比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户 阅读全文
摘要:
Set的定义已经很清楚了,他的集合里面是不允许有重复变量的。 所以,Set更适合集合去重。 但是在最近我做每日最热文章的时候,出现了一个小bug,就是在redis里面取数据的时候,被继承的父类是不能被写入数据的。 下面看我的例子 @Data @AllArgsConstructor @NoArgsCo 阅读全文
摘要:
这里我们分析Collection和Map 大图查看详情 javaCollection的分析 Collection是在java.util里面 集合里面是一定是存放对象的,不能存放基本数据类型,像是int,也是先转换成Integer然后在放在集合中。 List List是一个接口,而下面有ArrayLi 阅读全文
摘要:
技术需求: 当生产者更新一条数据后,会立即通知消费者。 原理分析图 这种需求可以看成一种消息队列 我们可以利用多线程来开启两个队列,一个是生产者,另一个是消费者。 利用synchronized 对象锁来实现线程原子性。 package com.Thread.Test; //消息模型 class Ms 阅读全文