04-java编程
java
夜未眠shm
这个作者很懒,什么都没留下…
展开
-
java并发编程(四)共享模型之无锁
1.问题提出有如下需求,保证account.withdraw取款方法的线程安全public class TestAccount{ public static void main(String[] args) { Account account = new AccountUnsafa(10000); Account.demo(account); Account account2 = new AccountCas(10000); ..原创 2020-09-27 00:48:11 · 293 阅读 · 0 评论 -
java并发编程之应用
效率案例1 - 多线程提升效率案例2-防止CPU占用100%统筹案例--烧水泡茶阅读华罗庚《统筹方法》,给出烧水泡茶的多线程解决方案。解法1申明:内容来自网络,仅供学习使用https://www.bilibili.com/video/BV1jE411j7uX...原创 2020-09-24 00:53:32 · 141 阅读 · 0 评论 -
java并发编程之原理
三. volatile原理1.如何保证可见性2.如何保证有序性3.double-checked locking问题以著名的double-checked locking单例模式为例4.double-checked locking解决申明:内容来自网络,仅供学习使用https://www.bilibili.com/video/BV1jE411j7uX...原创 2020-09-23 23:17:13 · 179 阅读 · 0 评论 -
java并发编程(三)共享模型之内存
1.java内存模型2.可见性2.1 退不出的循环2.2 解决方案volatile(易变关键字)它可以用来修饰成员变量和静态成员变量,它可以避免线程从自己的工作缓存中查找变量的值,必须到主存中获取它的值,线程操作volatile变量都是直接操作主存。2.3 可见性vs原子性2.4 模式之两阶段终止2.5 模式之Balking3.申明:内容来自网络,仅供学习使用https:/...原创 2020-09-19 01:02:28 · 212 阅读 · 0 评论 -
java并发编程之模式
1.同步模式之保护性暂停2.异步模式之生产者/消费者原创 2020-09-17 22:18:58 · 168 阅读 · 0 评论 -
java并发编程(二)共享模型之管程
4.共享模型之管程4.1 共享带来的问题@Slf4j(topic = "c.Test17")public class Test17 { static int count = 0; public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(()->{ for (int i = 0; i < 5原创 2020-09-07 19:40:03 · 301 阅读 · 0 评论 -
java并发编程(一)基础知识
1.为什么要使用并发编程充分利用多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升。 方便进行业务拆分,提升系统并发能力和性能:在特殊的业务场景下,先天的就适合于并发编程。现在的系统动不动就要求百万级甚至千万级的并发量,而多线程并发编程正是开发高并发系统的基础,利用好多线程机制可以大大提高系统整体的并发能力以及性能。面对复杂业务模型,并行程序会比串行程序更适应业务需求,而并发编程更能吻合这种业务拆分 。2.进程与线程2.1 进程与线程2.2 并行与原创 2020-09-06 20:02:27 · 215 阅读 · 0 评论 -
学习资源链接
1.jdb下载2.svn3.maven 技能 技术技能 平台技能 业务技能 工具 前端: § Html,Js,CSS,jQuery,XML ...原创 2019-11-07 18:01:54 · 529 阅读 · 0 评论 -
Java8新特性——新时间日期API
以前的时间API是线程不安全的,是可变的多线程对日期进行处理要加锁LocalDate、LocalTime、LocalDateTime 类的实例是不可变的对象,分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。 //1.LocalDate LocalTime LocalDateT...转载 2019-09-27 19:44:12 · 132 阅读 · 0 评论 -
Java8新特性——其它
并行流与串行流并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。Java 8 中将并行进行了优化,我们可以很容易的对数据进行并行操作。Stream API 可以声明性地通过 parallel() 与 sequential() 在并行流与顺序流之间进行切换。了解 Fork/Join 框架Fork/Join 框架:就是在必要的情况下,将一个大任务,进形拆分(for...转载 2019-09-27 16:36:03 · 83 阅读 · 0 评论 -
Java8新特性——Stream API
位于包: java.util.stream .*Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。...转载 2019-09-26 17:58:51 · 96 阅读 · 0 评论 -
Java8新特性——Lambda
2014年3月发布公司往往不是追求技术的新,而且追求技术的稳定。所以大多用的之前的版本。Java 8 新特性简介 速度更快 修改底层数据结构:如HashMap(数组-链表-红黑树),HashSet,ConcurrentHashMap(CAS算法) 修改垃圾回收机制:取消堆中的永久区(PremGen)->回收条件苛刻,使用元空间(MetaSpac...转载 2019-09-25 18:00:24 · 132 阅读 · 0 评论 -
学习笔记:突出程序员基本功(三)常见java集合的实现细节
1.Set和Mapset代表一种集合元素无序,集合元素不可重复的集合,Map则代表一种由多个key-value对组成的集合。可以说,map集合是set集合的扩展。map所有key集中起来就是个set集合,而对于map而言,相当于每个元素都是key-value的set集合。1.1 set和map的关系1.2 HashMap和HashSet虽然集合号称存储的是java对象,但...原创 2019-09-24 17:25:56 · 145 阅读 · 0 评论 -
学习笔记:突出程序员基本功(二)对象与内存控制
java内存管理分为两个方面:内存分配和内存回收;内存分配:这里特指创建java对象的JVM为该对象在堆内存中所分配的内存空间;内存回收:当该java对象失去引用,变成垃圾时,JVM的垃圾回收机制自动清理该对象,并回收该对象所占用的内存;1.实例变量和类变量java程序的变量大体分为成员变量和局部变量类体内定义的变量被称为成员变量。如果定义该成员变量时没用使用static修饰,...原创 2019-08-06 15:37:13 · 168 阅读 · 0 评论 -
学习笔记:突出程序员基本功(一)数组与内存控制
1.数组初始化1.1 java语言是典型的静态语言,因此java的数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。java程序中的数组必须经过初始化才可以使用。java数组一旦初始化完成,该数组的长度就不可改变。数组的初始化有以下两种方式:静态初始化:初始化时由程序员显示指定每个数组元素的初始值,有系统决定数组长度。动态初始化:初始化时程序员只指定数组长度,有系统为数组...原创 2019-08-05 15:57:01 · 2180 阅读 · 0 评论 -
BigDecimal加减乘除运算
java.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:第一种:BigDecimal(double val)Translates a double into a BigDecimal.第二种:BigDecimal(String val)Translates the String repre sentation of a BigDe...转载 2018-06-21 10:28:52 · 556 阅读 · 0 评论 -
JDK1.7 新特性
1、switch支持String做参数/*** * switch支持字符串做参数 jdk7 * @author huangjiawei */public class SwitchTest { public static void switchTest(String arg) { switch (arg) { case "Lisa": System....转载 2018-08-22 17:14:54 · 127 阅读 · 0 评论