Java
Coding-ls
这个作者很懒,什么都没留下…
展开
-
Java线程基础
线程的概念:我们在学习操作系统的时候都了解过线程的概念,线程是操作系统中最小的调度单元,也被叫做轻量级进程。每个线程都拥有自己的计数器,堆栈,局部变量,指令指针等属性,并且能够访问共享的内存变量。Java从一开始就支持多线程,在Java中一个程序从main方法开始执行时就已经启动了线程,这个线程就是main线程。Java的线程实现是由Thread类和Runnable接口实现的,那么两者有什么区别呢...原创 2016-08-30 15:26:27 · 363 阅读 · 0 评论 -
Java并发编程(一) —Java内存模型
物理机中的并发。 处理器——>高速缓存——>内存 缓存一致性Java内存模型 Java线程——>线程工作内存——>主内存 内存一致性 内存间的交互操作 主内存到工作内存 工作内存到主内存 操作对象:变量volatile 1.保证此变量对所有线程的可见性 2.禁止指令重排序Java内存模型需要原创 2018-06-17 18:09:55 · 399 阅读 · 0 评论 -
微信公众号支付开发流程与避坑手册-Java篇
最近完成了微信公众号内的未支付功能,当然开发的过程中难免遇到各种各样的问题,在这里把我开发的过程分享出来,给大家做个参考。 首先,在准备开发的时候需要进行必要的配置。1.登录微信商户平台,在产品中心->开发配置中对支付授权目录进行配置 (注意:支付授权目录的配置规则是你使用微信支付控件页面的上一级目录,比如:你在www.xxx.cpm/wx/pay/pay.html中调用微信支付控件,那么你需要原创 2017-10-03 15:21:53 · 4686 阅读 · 2 评论 -
IntelliJ IDEA导入Maven构建的Web工程
一直以来都是使用Eclipse开发Web项目,对IntelliJ IDEA也是早有耳闻。于是就试着将Web项目迁移到IntellIj IDEA上,我所迁移的项目是使用Maven构建的,基于Spring+Spring MVC+Hibernate的Web工程。下面就分享我的配置过程。原创 2017-09-20 15:42:12 · 16172 阅读 · 2 评论 -
Java并发编程(二)—线程的本质
前言Java是一种多线程语言,从一开始就支持了多线程开发,在我们的应用程序中也难免会用到线程去解决一些问题。使用多线程会不会是程序变快呢?如今大多数计算机都是多核处理器,将程序分布到不同的处理器去处理自然会加快程序的运算速度,使程序更快的响应。但是在单处理器中多个线程运行时,还会产生上下文切换的开销,这个时候程序会更快的运行吗?答案是在单处理器情况下程序也会更快的运行,因为线程有一种状态叫做阻...原创 2018-07-17 23:18:02 · 1737 阅读 · 0 评论 -
Spring学习(一)-装配Bean的3种方式
在Spring中,依赖注入是Spring最重要的特性之一。我们所使用的Bean都是通过依赖注入完成的。在如今的Spring中,提供了3中装配Bean的方式: 1.在XML中显式配置; 2.在Java中显式配置; 3.隐式的bean发现机制和自动装配。 接下来通过一个例子一一的实现这3种配置方式。原创 2017-03-11 18:29:11 · 2698 阅读 · 0 评论 -
Maven搭建Springmvc+Spring+Hibernate+html
最近在学前端,由于之前是干Android和Java所以顺便就搞搞Web的东西。于是就摸索了用Maven搭建Springmvc+Spring+Hibernate+html的工程,废话不多说。 工具:Eclipse-Neon.1 Release RC3 (4.6.1RC3) Maven3.3.9原创 2017-01-09 17:06:13 · 3245 阅读 · 5 评论 -
Java并发编程(三)—队列同步器(AbstractQueuedSynchronizer)
前言在Java多线程环境中原子操作是保证线程同步的基本。在Java中通常使用所和循环CAS的方式实现原子操作。 使用循环CAS实现原子操作:在Java虚拟机中实现CAS操作是通过CMPXCHG指令实现的,而CAS循环就是循环的进行CAS操作直到成功为止。 使用锁机制实现原子操作:在Java中为并发编程的同步实现了很多锁机制,包括偏向锁、轻量级锁和互斥锁等。而锁机制保证了只有获取锁的线程才能...原创 2018-08-09 23:31:34 · 424 阅读 · 0 评论 -
Java并发编程(四)—基于队列同步器的可重入锁
前言在Java 1.5版本的时候,Java提供了新的同步机制—Lock接口,通过Lock接口可以实现不同类型的锁来支持多线程的同步。相比较synchronized关键字,通过Lock实现的锁可以更好的控制同步块的粒度。在Lock子类的内部实现中,锁是通过Java的队列同步器实现的(AbstractQueuedSynchronizer),不熟悉队列同步器的同学,可以参考我的另一篇博客[Java并...原创 2018-10-29 22:05:06 · 216 阅读 · 0 评论 -
Java容器(二)-CurrentHashMap详解(JDK1.8)
摘要在涉及到Java多线程同步时,如果我们使用HashMap可能会导致死锁问题吗,但是使用HashTable效率又不高。所以这个时候ConcurrentHashmap是我们最好的选择。 为什么使用ConcurrentHashMap:在多线程环境中使用HashMap的put方法有可能导致程序死循环,因为多线程可能会导致HashMap形成环形链表,即链表的一个节点的next节点永不为nul...原创 2018-05-27 20:59:39 · 41259 阅读 · 5 评论 -
Java容器(一)-HashMap详解(JDK1.8)
摘要HashMap可以说是在程序开发中使用最频繁的映射处理的数据类型。在JDK1.8中又对HashMap进行了优化,引入了红黑树的数据结构和扩容的优化。接下来就探讨一下HashMap的结构和实现原理。简介Java中的映射类容器都是继承自java.util.Map接口,Map接口主要有四个实现类,它们分别是:HashMap、LinkedHashMap、TreeMap和Hashtable。...原创 2018-04-05 15:47:02 · 1100 阅读 · 0 评论 -
Java多态全解析
Java是面向对象的语言,在Java中一切都是对象。面向对象编程有三大特性:封装、继承和多态。封装即对外部隐藏了类的具体实现,同时起到了保护数据的作用;继承即重用父类的代码,同时也提供了实现多态的基础;多态即在程序中定义的引用变量所指向的类型或者调用的方法在编程时并不确定,而在程序运行时才调用,也就是说在程序运行时才决定到底调用确定的类型已经该类型的具体方法。 多态的实现方法:上面提到继承时多态的原创 2017-02-28 18:51:41 · 328 阅读 · 0 评论 -
Java理论与实践:正确使用volatile变量
原文链接 volatile 变量使用指南 Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的 Java 理论与实践 中,Brian Goetz 将介绍几种正确使用 volatile 变量的模式,并针对其适用性限制提转载 2017-08-08 22:15:04 · 1397 阅读 · 0 评论 -
Java-Executor框架浅析
Java线程池在Java并发中应用十分广泛。而使用线程池也会带来很多好处:1.降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁的消耗;2.提高响应速度。当任务到达时,任务可以不需要等待线程创建就可以立即执行;3.提高线程的可管理性。使用线程池可以对线程进行统一分配、调优和监控。原创 2016-09-07 15:11:24 · 523 阅读 · 0 评论 -
Java内存模型学习总结
Java内存模型在并发编程中,我们主要面对两个关键的问题,就是同步与通信。如何同步?通常我们会通过加锁来控制不同线程之间的执行顺序,从而达到同步的效果;线程间如何通信?线程间的通信机制有两种:共享内存与消息传递。Java的并发采用共享内存模型,如下图,两个线程通过JMM(Java内存模型)的控制完成了相互通信。通过图中也可以看出两个线程的共享变量存储在主内存中,每个线程同时又有自己的存储空间来存储...原创 2016-08-22 19:04:05 · 336 阅读 · 0 评论 -
Java虚拟机学习(一)-运行时数据区
作为一个Java程序员,如果要深入学习Java的话,那么了解Java虚拟机是必不可少的。通过学习Java虚拟机的知识,我们不仅可以了解Java的运行原理,而且也可以加深对Java编程的理解。原创 2017-12-06 23:05:47 · 300 阅读 · 0 评论 -
Java虚拟机学习(二)-内存管理
我们都知道Java有一个鲜明的特点,就是内存的动态分配和自动回收,这使得开发者不必自己管理内存的分配与回收,可以将主要精力放在程序开发中。同时,内存管理机制也使得Java变得容易上手。 我们虽然在开发的过程中不用关心内存的回收,但是也难免会遇到内存溢出、内存泄漏这些问题。所以学习Java的内存管理有利于我们及时的发现问题。接下来就是我学习Java内存管理机制的一些笔记。原创 2017-12-30 17:09:18 · 328 阅读 · 0 评论 -
Java虚拟机学习(三)-类文件结构的简单介绍
我们都知道计算机在执行程序时,只能识别0和1格式的程序,但在Java虚拟机出现之后,便有了一种新的程序存储格式——字节码。也正因为实现了从机器码到字节码的转变,使得Java程序可以”Write Once, Run Anywhere”(一次编写,到处运行)。时至今日,出现了一大批基于虚拟机运行的语言,比如:Scala、Groovy等。 今天的学习结果就是记录一下Java程序在编译成字节码后的文件结原创 2018-01-27 16:12:30 · 261 阅读 · 0 评论 -
Java虚拟机学习(四)-类的加载机制
摘要在Java虚拟机中,经过编译的Java文件都通过Class文件格式存储。当执行Java程序时,需要将Class文件加载到Java虚拟机内存中。从虚拟机把类的Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被Java虚拟机使用的Java类型,这就是虚拟机的类加载机制。类加载简述注意:以下的类都默认表示为类或接口,在Java虚拟机中类或接口有着相似的加载过程。...原创 2018-03-31 17:51:31 · 200 阅读 · 0 评论 -
Java并发编程(五)—线程池ThreadPoolExecutor详解
前言在Java并发场景下,Java线程池是最经常运用的并发框架,而且在诸如Tomcat、数据库等工具中也都用到了Java线程池。合理地使用线程池可以给编程带来很多好处。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统...原创 2018-10-31 23:04:47 · 429 阅读 · 0 评论