6 NJUdudu

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 4w+

CAS

一、CAS简介   比较并交换(compare and swap, CAS),是原子操作的一种,可用于在多线程编程中实现不被打断的数据交换操作,从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预知性产生的数据不一致问题。 该操作通过将内存中的值与指定数据进行比较,当数值一样时将内存中的数据替换为新的值。CAS算法涉及到三个操作数:需要读写的内存值 V。进行比较的值 A。...

2020-03-30 20:06:05

synchronized关键字

https://tech.meituan.com/2018/11/15/java-lock.htmlhttps://juejin.im/post/5ae6dc04f265da0ba351d3ffhttps://leejay.top/posts/Synchronized%E9%94%81%E8%AF%A6%E8%A7%A3/

2020-02-14 15:27:15

hiveh和presto中date_add

1、日期增加函数: date_add语法:hive>select date_add(‘2016-12-29’,10);presto>select date_add(‘day’, 1, TIMESTAMP ‘2014-03-08 09:00:00’);

2020-02-09 16:23:20

happen-before原则和as-if-serial语义

一、as-if-serial  as-if-serial语义的意思是:不管怎么重排序(编译器和处理器为了提供并行度),(单线程)程序的执行结果不能被改变。编译器,runtime和处理器都必须遵守as-if-serial语义。as-if-serial语义把单线程程序保护了起来,遵守as-if-serial语义的编译器,runtime和处理器共同为编写单线程程序的程序员创建了一个幻觉:单线程程序是按...

2020-01-21 16:09:44

java中sleep和wait的区别

sleep()方法wait()方法  sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会;   sleep()是Thread类的Static(静态)的方法;因此他不能改变对象的机锁,所以当在一个Synchronized块中调用Sleep()方法是,线程虽然休眠了,但是对象...

2020-01-20 16:52:14

java线程死锁/死循环分析方法

例程:package com.sample;public class Concurrent { private static String resource_a = "A"; private static String resource_b = "B"; public static void main(String[] args) { deadLoc...

2020-01-19 21:14:18

volatile关键字

一、volatile的作用在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。我们先看具体看一下这三个概念:原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。可见性:可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。有序性:即程序执行的顺序按照代码的先后顺序执行。通常情况...

2020-01-13 17:07:28

单例双重锁的原因

class Singleton { private static volatile Singleton instance; private Singleton(){} public static Singleton getInstance() { if ( instance == null ) { synchronized (Sin...

2020-01-09 22:09:46

MYSQL优化之explain详解

原文链接:MySQL优化之EXPLAIN详解 学习MySQL时我们都知道索引对于一个SQL的优化很重要,而EXPLAIN关键字在分析是否正确以及高效的增加了索引时起到关键性的作用。这篇文章显示了如何调用“EXPLAIN”来获取关于查询执行计划的信息,以及如何解释输出。EXPLAIN命令是查看查询优化器如何决定执行查询的主要方法。这个功能有局限性,并不总会说出真相,但它的输出是可以获取的...

2019-12-19 20:04:31

PECS原则

Producer Extends Consumer Super如果参数化类型表示一个生产者,就使用<? extends T>;如果它表示一个消费者,就使用<? super T>在阅读阿里巴巴Java开发手册时看到这个原则,于是就学习了一番.个人认为这个原则重点的地方在于理解List<? extends Fruit>和List<? super Appl...

2019-10-29 11:39:06

Spring MVC自定义注解给返回值加状态信息

进行Java Web开发时,需要在controller层的返回值加上状态信息;{ "code": "200", "msg": "success", "roleInfo": { "roleId": 1, "roleCode": "ITManager", "roleName": "IT部门管理员", "enabl...

2019-10-10 20:14:48

GSON中JsonElement节点的toString()与getAsString()的区别

一、使用区别import com.google.gson.JsonElement;import com.google.gson.JsonObject;import com.google.gson.JsonPrimitive;public class GsonTest { public static void main(String[] args) { JsonE...

2019-09-29 21:24:25

Java常用工具:Guava

Guava为Java提供包括字符串处理、集合、并发、 I/O、反射等函数工具箱,自开源以来,越来越收到程序员的追捧,已成为Java开发必不可少的工具箱,这些高质量的API让你的代码优雅而漂亮。使用范例:package guava;import com.google.common.base.Joiner;import java.util.ArrayList;import java.ut...

2019-09-23 21:54:22

Java:JDK1.7和JDK1.8中HashMap扩容原理

一、扩容原理JDK1.8源码分析: final Node<K, V>[] resize() { Node<K, V>[] oldTab = table; //记住扩容前的数组长度和最大容量 int oldCap = (oldTab == null) ? 0 : oldTab.length; int ol...

2019-09-18 20:50:58

Java源码分析:HashMap 1.8 相对于1.7区别

https://juejin.im/post/5aa5d8d26fb9a028d2079264

2019-09-18 17:42:38

Java高效代码

需要 Map 的主键和取值时,应该迭代 entrySet()当循环中只需要 Map 的主键时,迭代 keySet() 是正确的。但是,当需要主键和取值时,迭代 entrySet() 才是更高效的做法,比先迭代 keySet() 后再去 get 取值性能更佳。反例:Map<String, String> map = ...;for (String key : map.keySet...

2019-09-13 19:13:01

ArrayList扩容原理

一、ArrayList扩容ArrayList底层使用数组实现,当达到容量上限时,数组会扩容,然后将原数组数据拷贝到扩容后的数组。ArrayList扩容测试: @org.junit.Test public void arrayListCapacityTest(){ ArrayList<String> objects = new ArrayList<&g...

2019-09-13 11:27:07

图解Java常用数据结构

https://www.cnblogs.com/xdecode/p/9321848.html

2019-09-13 00:17:11

linux awk命令详解

linux awk命令详解

2019-09-11 21:17:21

设计模式之工厂模式

在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部...

2019-09-11 16:04:49

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。