自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式(单例写法复制就能运行)

public class Singleton { public static void main(String[] args) { System.out.println(Singleton1.getInstance() == Singleton1.getInstance()); System.out.println(Singleton2.getInstance() == Singleton2.getInstance()); System.out.p..

2021-09-23 15:15:56 9

原创 hive常用窗口函数

DROP TABLE IF EXISTS demo ;CREATE TABLE IF NOT EXISTS demo ( id INT COMMENT 'id' ,name STRING COMMENT '名字' ,group_id INT COMMENT '组id' ,group_name STRING COMMENT '组名' ,age INT COMMENT '年龄');INSERT OVERWRITE TABLE HZYC_BI_dev.dem.

2021-09-18 15:40:12 4

原创 自定义注解(反射赋值)怎么玩demo复制就能运行

思路通过反射获取属性上的注解再获取里面的值,再通过反射new对象,为对象赋值import java.lang.annotation.*;import java.lang.reflect.Field;public class MyAnnotation { @MyValue("1") String id; @MyValue("1号") String name; public static void main(String[] args) throws E

2021-08-11 11:05:18 10

原创 Java8常用时间方法(LocalDateTime操作)

Java8常用时间方法(LocalDateTime操作)import java.time.Duration;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.Period;import java.time.format.DateTimeFormatter;public class java8Time { public static void main(String[] args) {

2021-07-20 10:38:30 24

原创 代码demo再谈Java线程池

代码demo再谈Java线程池上代码import java.util.concurrent.*;import java.util.concurrent.atomic.AtomicInteger;public class ThreadPool { public static void main(String[] args) { ThreadPoolExecutor executor = new ThreadPoolExecutor(2, 3, 0, TimeUnit.SEC

2021-06-21 17:16:49 4

原创 java的队列同步器AbstractQueuedSynchronizer(AQS)

AQS定义队列同步器AbstractQueuedSynchronizer(以下简称同步器),是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO双端队列来完成资获取线程的排队工作。head指向第一个节点,tail指向最后一个节点节点状态CANCELLED,值为1,由于在同步队列中等待的线程等待超时或者被中断,需要从同步队列中取消等待,节点进人该状态将不会变化SIGNAL,值为-1,后继节点的线程处于等待状态,而当前节点的线程如果释放了同步状态或者被

2021-06-17 01:04:57 38

原创 centos7防火墙的端口操作

Addfirewall-cmd --permanent --zone=public --add-port=8080/tcpReloadfirewall-cmd --reload检查是否生效firewall-cmd --zone=public --query-port=8080/tcp查看防火墙状态firewall-cmd --state

2021-06-16 14:51:02 6

原创 Java代码查看对象头和锁状态

Java代码查看对象头和锁状态添加Maven <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.9</version> </dependency>import or

2021-06-11 16:07:37 1043 1

原创 redis数据类型及底层结构

redis数据类型源码类型/* The actual Redis Object */#define OBJ_STRING 0 /* String object. */#define OBJ_LIST 1 /* List object. */#define OBJ_SET 2 /* Set object. */#define OBJ_ZSET 3 /* Sorted set object. */#define OBJ_HASH 4 /* Hash

2021-06-11 01:06:51 137

原创 Redis 底层数据结构(sds,链表,字典,跳跃表,整数集合,压缩列表)

Redis 底层数据结构1.动态字符串SDS2.链表3.字典4.跳跃表5.整数集合6.压缩列表7.对象动态字符串源码sds是Redis中最基本的数据结构,使用一整段连续的内存来存储sds头信息和数据信息。其中,字符串的header包括了sds的字符串长度,字符串的最大容量以及sds的类型这三种信息。这三种基本的类型能够简化许多sds的操作,如字符串的长度只需要O(1)即可,而strlen的O(N)好很多。另外,sds还提供了很多的操作函数,在其拥有的字符串的原生特性之外,还能动态扩展内存

2021-06-11 00:19:47 19

原创 JVM Shenandoah收集器

JVM Shenandoah收集器深入理解java虚拟机Shenandoah是由RedHat公司独立发展的新型收集器项目,在2014年RedHat把Shenandoah贡献给了OpenJDK与G1的不同之处1.支持并发的整理算法,G1的回收阶段是可以多线程并行的,但却不能与用户线程并发2.是默认不使用分代收集的3.摒弃了在G1中耗费大量内存和计算资源去维护的记忆集,改用名为“连接矩阵”的全局数据结构来记录跨Region的引用关系,降低了处理跨代指针时的记忆集维护消耗,也降低了伪共享问题的发生

2021-06-08 00:09:57 41 3

原创 synchronized原理

Java synchronized 原理1.synchronized 可以放普通方法 ,锁定的是当前对象实例2.synchronized 可以放静态方法 ,锁定的是当前类的class对象3.synchronized 可以放方法块 ,锁定的是括号里面的对象JVM基于进入和退出Monitor对象来实现的,代码块同步是使用monitorenter 和monitorexit指令实现的,方法的同步同样可以使用这两个指令来实现。 monitorenter指令是在编译后插入到同步代码块的开始位置,而monitor

2021-05-31 17:47:17 7

原创 JavaCAS无锁算法

JavaCAS无锁算法CAS全称 Compare And Swap(比较与交换),是一种无锁算法,java.util.concurrent包中的原子类就是通过CAS来实现。原理CAS算法涉及到三个操作数:需要读写的内存值 V。进行比较的值 A。要写入的新值 B。JDK通过cmpxchg指令,去比较寄存器中的 A 和 内存中的值 V。如果相等,就把要写入的新值 B 存入内存中。如果不相等,就将内存值 V 赋值给寄存器中的值 A。然后通过Java代码中的while循环再次调用cmpxchg指令进行

2021-05-31 17:23:17 17

原创 Java常用内存诊断命令

Java常用内存诊断命令java官网常用命令jcmdjmapjinfojstatjcmdjcmd显示java进程jcmd pid help看某个进程的详细信息查询heap信息 jcmd pid GC.heap_info查看启动参数 jcmd pid VM.falgs查询运行时间 jcmd pid VM.uptime打印线程 jcmd pid Thread.printjmap遇到Error attaching to process: sun.jvm.hots

2021-05-25 17:07:58 17

原创 Java垃圾收集器

Java垃圾收集器重要概念:并行(Parallel):并行描述的是多条垃圾收集器线程之间的关系,说明同一时间有多条这样的线程在协同工作,通常默认此时用户线程是处于等待状态。并发(Concurrent):并发描述的是垃圾收集器线程与用户线程之间的关系,说明同一时间垃圾收集器线程与用户线程都在运行。由于用户线程并未被冻结,所以程序仍然能响应服务请求,但由于垃圾收集器线程占用了一部分系统资源,此时应用程序的处理的吞吐量将受到一定影响。OopMap当用户线程停顿下来之后,其实并不需要一个不漏地检查完所有执

2021-05-23 22:59:47 47

原创 Java垃圾收集算法

Java垃圾收集算法1.标记清除2.标记复制3.标记整理标记清除算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对象,也可以反过来,标记存活的对象,统一回收所有未被标记的对象。缺点第一个是执行效率不稳定,如果Java堆中包含大量对象,而且其中大部分是需要被回收的,这时必须进行大量标记和清除的动作,导致标记和清除两个过程的执行效率都随对象数量增长而降低;第二个是内存空间的碎片化问题,标记、清除之后会产生大量不连续的内存碎片,空间碎片太多可

2021-05-23 21:10:26 5

原创 JAVA判断对象是否死了

JAVA判断对象是否死了(是否需要回收)两种算法:1.引用计数法2.可达性分析法引用计数法在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。要配合大量额外处理才能保证正确地工作,譬如单纯的引用计数就很难解决对象之间相互循环引用的问题。例如一下情况就无法回收object objA = new object ();object objB = new object ();objA.= objB;obj

2021-05-23 20:49:06 13

原创 计算机位运算

位运算符&按位与的运算规则是将两边的数转换为二进制位,然后运算最终值,运算规则即(两个为真才为真)1&1=1 , 1&0=0 , 0&1=0 , 0&0=03的二进制位是0000 0011 , 5的二进制位是0000 0101 , 那么就是011 & 101,由按位与运算规则得知,001 & 101等于0000 0001,最终值为17的二进制位是0000 0111,那就是111 & 101等于101,也就是0000 0101,故值为5逻

2021-05-13 16:36:34 5

原创 Java如何创建对象

Java如何创建对象当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到 一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那 必须先执行相应的类加载过程, 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成 后便可完全确定,为对象分配空间的任务实际上便等同于把一块确定 大小的内存块从Java堆中划分出来。假设Java堆中内存是绝对规整的,所有被使用过的内存都被放在一 边,空闲的内存被放在另一边,

2021-05-12 15:14:05 8

原创 Java线程知识点整理

Java线程线程如何产生实现线程主要有三种方式:1.使用内核线程实现2.使用用户线程实现3.使用用户线程加轻量级进程混合实现内核线程使用内核线程实现的方式也被称为1:1实现。内核线程(Kernel-Level Thread,KLT)就是直接由操作系统内核(Kernel,下称内核)支持的线程,这种线程由内核来完成线程切换,内核通过操纵调度器(Scheduler)对线程进行调度,并负责将线程的任务映射到各个处理器上。每个内核线程可以视为内核的一个分身,这样操作系统就有能力同时处理多件事情,支持多线

2021-05-12 00:11:27 5

原创 jvm和jmm区别

jvm和jmm区别概念JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JMM即Java内存模型(Java memory model),在JSR133里指出了JMM是用来定义一个一致的、跨平台的内存模型,是缓存一致性协议,用来定义数据读写的规则。...

2021-05-07 16:35:28 49

原创 在Windows上使用nginx搭建图片服务器

在Windows上使用nginx搭建图片服务器1.下载nginxnginx下载链接: nginx.2,解压nginx3. 打开nginx配置文件路径为 nginx-1.18.0\conf\nginx.conf4.修改文件找到location / {root html;index index.html index.htm;}复制一份到下面修改成以下配置location /img/ {alias D:/img/;}以D盘为例 存放图片的文件夹名称为:img代码如下 s

2021-05-07 15:02:12 22

原创 java8stream做统计(分组后取最大最小,排序)

java8 stream代码import java.io.Serializable;import java.util.ArrayList;import java.util.Comparator;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import java.util.function.Function;import java.util.function.Predicate;import java

2021-04-14 16:28:01 1505

s_provinces.sql

省市区数据sql 带经纬度,区号,拼音,树级关系

2021-08-11

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除