![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 70
zajiayouzai
这个作者很懒,什么都没留下…
展开
-
JVM参数简介
参考文档地址:https://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.htmlhttps://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html#BGBCIEFC-XmnsizeSets the initial and maximu...原创 2020-01-07 13:52:24 · 251 阅读 · 0 评论 -
idea使用
二、插件集合1、Lombok用于减少重复代码,在实体类中,可以不再书写get、set、toString等方法,只要提供出基本的成员变量即可,后续增加成员变量时,也不需要再重新生成get、set、toString方法。 使用:引入Lombok的jar包,在类上或者成员变量上使用注解即可,详细使用有官方文档@Data,@NoArgsConstructor等;idea引入Lombo...原创 2018-08-20 18:01:25 · 1429 阅读 · 0 评论 -
Java使用Mongodb和Mongodb基本语法
一、springboot操作MongoTemplate的简单应用:1、基本查询新建对应mong表中的实体类:/** * @Description:测试实例 * @Author:wb */@Document(collection = "yylive_new_web")//对应数据的表名@Data@NoArgsConstructorpublic原创 2018-10-30 20:15:14 · 6568 阅读 · 0 评论 -
我的java问题排查工具单
转载:https://yq.aliyun.com/articles/69520前言平时的工作中经常碰到很多疑难问题的处理,在解决问题的同时,有一些工具起到了相当大的作用,在此书写下来,一是作为笔记,可以让自己后续忘记了可快速翻阅,二是分享,希望看到此文的同学们可以拿出自己日常觉得帮助很大的工具,大家一起进步。Linux命令类tail最常用的tail -ftail -300f shopb...转载 2018-11-12 15:27:00 · 169 阅读 · 0 评论 -
Java并发------HashMap和ConcurrentHashMap详解
HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSet 本身就采用 HashMap 来实现的。 通过 HashMap、Has原创 2018-12-06 15:37:25 · 401 阅读 · 0 评论 -
Java并发------AbstractQueuedSynchronizer之ReentrantLock(一)
一、AbstractQueuedSynchronizerAbstractQueuedSynchronizer 是 Java 并发包的基础工具类,是实现 ReentrantLock 等的基础。后面 AbstractQueuedSynchronizer 简称 AQS。1、先说一下 ReentrantLock 的使用方法:public class OrderService { privat...转载 2018-12-26 15:23:56 · 164 阅读 · 0 评论 -
设计模式
一、简单工厂定义产品抽象类public abstract class Animal { public abstract void eat();}定义工厂抽象类,返回产品抽象类public interface Factory { public Animal createAnimal();}定义实体类,实现产品抽象类public class Ca...原创 2017-10-07 16:04:52 · 225 阅读 · 0 评论 -
Java并发------并发基础之内存模型JMM
一、并发三问题1、重排序试着运行一下下面的代码:public class Test { private static int x = 0, y = 0; private static int a = 0, b =0; public static void main(String[] args) throws InterruptedException { ...转载 2018-12-27 17:18:57 · 149 阅读 · 0 评论 -
Java并发------AbstractQueuedSynchronizer之共享模式(三)
一、CountDownLatchCountDownLatch 是 AQS 共享模式使用的锁,共享的概念就是 N 条线程需要同一把锁,当 N 条线程全部执行完成后,才会继续向下执行。这是一个简单应用:public static void main(String[] args) { CountDownLatch startSignal = new CountDownLatch(1); ...转载 2018-12-26 15:24:33 · 192 阅读 · 0 评论 -
Java并发------AbstractQueuedSynchronizer之Condition(二)
二、转载 2018-12-26 15:24:22 · 191 阅读 · 0 评论 -
Java并发------Synchronized使用
前言本文介绍 Java 实现安全的方法,主要与 synchronized 相关的一些方法。一、synchronizedsynchronized 是 Java 提供多线程通信最基本的一种机制,出现的比 ReentrantLock 早,它是使用监视器(monitor)来实现。Java 每个对象都关联了一个监视器,线程可以对其进行加锁和解锁操作。在同一时间,只有一个线程可以拿到对象上的监视器锁。如...转载 2019-01-07 16:40:09 · 226 阅读 · 0 评论 -
Java并发------并发队列 BlockingQueue
一、BlockingQueue 简介BlockingQueue 接口继承了 Queue,它是一个先进先出的队列(Queue),为什么说是阻塞(Blocking)的呢?是因为 BlockingQueue 支持当获取队列元素但是队列为空时,会阻塞等待队列中有元素再返回;也支持添加元素时,如果队列已满,那么等到队列可以放入新元素时再放入。BlockingQueue 对插入操作、移除操作、获取元素操作...转载 2019-01-03 17:42:03 · 182 阅读 · 0 评论 -
Java并发------彻底理解ThreadLocal
转载地址:https://www.fangzhipeng.com/javainterview/2019/03/24/threadlocal.html彻底理解ThreadLocal深挖过threadLocal之后,一句话概括:Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。所以ThreadLocal的应用场合,最适合的是按线程多实例(每个线程对应一个...转载 2019-07-25 16:51:58 · 164 阅读 · 0 评论 -
Java并发------CopyOnWriteArrayList
前言我们所知 Map 双列集合的 Hashtable 和 Collection 单列集合的 Vector 是线程安全的,但是这两种方式都是简单粗暴的使用 synchronized 对涉及方法进行加锁,效率很低下。所以 Java 并发包中对 HashMap 提出了一种效率更高的一种线程安全的方式,也就是 ConcurrentHashMap,并且在 Jdk8 中性能得到了再次提升。而对于 List...原创 2019-08-15 17:13:38 · 250 阅读 · 0 评论 -
Java并发------JDK8 CompletableFuture
一、runAsync 和 supplyAsync1、runAsync 的基本使用:无返回值,持有一个 Runnable 对象。System.out.println("begin");CompletableFuture.runAsync(() -> { try { System.out.println("before sleep"); Thread...原创 2019-08-15 13:48:01 · 2342 阅读 · 1 评论 -
mysql索引学习
一、索引类型1、唯一索引(主键)建表语句:CREATE TABLE `person` ( `ID` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`ID`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;2、普通索引建表语句:CREATE TABLE `per...原创 2018-07-06 15:46:25 · 1515 阅读 · 0 评论 -
map遍历的几种方式和效率问题
一、map遍历的效率先创建一个map,添加好数据:Map<String, String> map = new HashMap<>();for (int i = 0; i < 1000000; i++) { map.put(i + "", i + "AA");}1、keySet的for循环方式://只获取keypublic static v...原创 2018-07-05 10:09:21 · 22471 阅读 · 5 评论 -
java数据结构——6队列(Queue)
六、队列(Queue)在“队列”(Queue)这种数据结构中,数据项是先进先出(FIFO:first in first out)。队列的容量可以有限,也可以是无限的。1、基于数组的Queue实现一般情况下,对于Queue而言,最核心的操作是:插入队列(enqueue)、移出队列(dequeue)。因为在队列中,插入操作是插入到队列的最后,而移出操作是移出队列的头部元素。因此我们通常会使原创 2018-01-24 10:19:49 · 328 阅读 · 0 评论 -
java数据结构——5栈(Stack)
五、栈(Stack)栈(Stack)是一种后进先出的数据结构(LIFO:last in first out),只允许访问栈中的第一个数据项:即最后插入的数据项。移除这个数据项之后,才能看到第二个数据项,以此类推。往栈中存入数据称之为压栈(push),移除数据称之为弹栈(pop),此外通常还提供查看栈顶元素的peek方法,此方法可以拿到栈顶元素的值,但是并不会将其移除。java.util原创 2018-01-24 10:07:51 · 267 阅读 · 0 评论 -
java数据结构——4迭代器(iterator)
四、迭代器(iterator)如果我们想遍历数组,这很容易,因为可以用数组的下标跟踪所在的位置,然而在链表中,节点没有这样的下标,怎样才能提供给链表用户类似于数组下标的东西呢?这就是迭代器(iterator)的作用。我们知道添加到链表中的数据(data),都会包装成一个节点(node),节点之间通过引用保存了先后关系(pre、next)。但是由于在获取数据时(如getFirst),返回的直原创 2018-01-24 09:39:29 · 261 阅读 · 0 评论 -
java数据结构——3链表(LinkedList)
三、链表(LinkedList)下面将有一种新的数据存储结构,它可以解决上面的一些问题。这种数据存储结构就是链表。链表可能是继数组之后第二种使用最广泛的通用存储结构。单链表双端链表有序链表双向列表有迭代器的列表链表与数组一样,都作为数据的基本存储结构,但是在存储原理上二者是不同的。在数组中,数据是存储在一段连续的内存空间中,我们可以通过下标来访问数组中的元素;而在链表中,元原创 2018-01-23 14:36:04 · 233 阅读 · 0 评论 -
java数据结构——2基于数组的ArrayList
二、基于数组的ArrayListArrayList是Java中我们最常使用的List接口的实现类,其是内部就是通过维护一个无序数组来实现的。因此ArrayList具备无须数组拥有的所有优点和缺点:操作 ———————— 时间复杂度插入 ———————— O(1) 删除 ———————— O(n)查找 ————————原创 2018-01-23 14:28:56 · 228 阅读 · 0 评论 -
java数据结构——1数组
一、数组数组是应用最广泛的数据存储结构,它被植入到大部分编程语言中。由于数组十分易懂,所以它被用来介绍数据结构的起点。 数组分为2种:无序数组与有序数组。有序数组就是无序数组经过排序后结果。另外数组需要有以下这些要求:1. 我们通常假设数组中是没有空洞的。当我们想在数组查找某个元素时,当所有元素都查过了之后,依然没有查到,就说明数组中不包含此元素。那么我们如何知道所有的元素都已经查过了原创 2018-01-23 11:02:17 · 177 阅读 · 0 评论 -
jdk8新功能
一、接口之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全部实现该接口的类,目前的java 8之前的集合框架没有foreach方法,通常能想到的解决办法是在JDK里给相关的接口添加新的方法及实现。然而,对于已经发布的版本,是没法在给接口添加新方法的同时不影响已有的实现。所以引进的默认方法。他们的目的是为了解决接口的修改与现有的实现不兼容的问题。...原创 2018-01-05 17:15:11 · 400 阅读 · 0 评论 -
java算法基础——排序算法
一、排序算法以下代码的测试数据都是:int[] arr = new int[] {10, 5, 3, 8, 2, 4, 9, 1, 7, 6};1、冒泡排序(Bubble Sort)其核心思想是:对于一组需要排序的数字,依次将个位置上的数字与逐一与其之后的数字进行比较,如果他们的顺序错误就把他们交换过来。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端。原创 2018-01-24 11:37:37 · 266 阅读 · 0 评论 -
spring事务
一、使用声明式事务进行事务管理1、声明式事务: Spring的声明式事务管理在底层是建立在AOP的基础之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过等价的基于标注的...原创 2018-05-04 09:37:40 · 4509 阅读 · 0 评论 -
开发颠覆者SpringBoot实战---------SpringBoot的基础学习
一、介绍随着动态语言的流行,常规的java开发S显得格外笨重:繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术集成难度大。为了解决这些问题,SpringBoot应运而生。它使用“习惯优化配置的理念”(项目中存在大量的配置,还内置一个习惯性配置,让你无需手动进行配置)来让项目快速运行起来,很容易创建一个独立运行、准生产级别的项目,可以不用或者需要很少的Spring配置。核心功能:...原创 2018-05-21 15:10:56 · 369 阅读 · 0 评论 -
Redis实现消息队列
redis实现消息队列转载 2018-05-07 09:24:48 · 349 阅读 · 0 评论 -
开发颠覆者SpringBoot实战---------SpringBoot的Web学习
SpringBoot提供了spring-boot-starter-web为Web开发予以支持,Web相关的自动配置存储在org.springframework.boot.autoconfigure.web下,里面有自动配置内嵌Servlet容器、自动配置http编码、自动配置上传文件的属性、配置SpringMVC等...原创 2018-05-23 10:08:30 · 2537 阅读 · 0 评论 -
开发颠覆者SpringBoot实战---------SpringBoot的数据访问学习
一、SpringBoot和mybatis整合1、使用mybatis generator 自动生成代码创建新文件resources\generator\generatorConfig.xml:&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;?xml version=&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;1.0&am原创 2018-05-29 15:47:02 · 804 阅读 · 0 评论 -
开发颠覆者SpringBoot实战---------SpringCloud学习
spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。一、服务注册中心pom文件:&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;dependencyManagement&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; &amp原创 2018-06-11 11:01:55 · 4675 阅读 · 1 评论 -
jdk7一些功能
jdk功能原创 2018-01-03 17:31:53 · 236 阅读 · 0 评论