- 博客(107)
- 资源 (1)
- 收藏
- 关注
转载 【JVM系列】new Object()到底占用几个字节,看完这篇就彻底明白了
【JVM系列】new Object()到底占用几个字节,看完这篇就彻底明白了前言上一篇我们分析了Java虚拟机方法执行流程及方法重载和方法重写原理,并分析了方法的调用过程及原理,Java虚拟机栈是线程私有的,没有数据安全问题,而堆相比较于Java虚拟机栈而言更为复杂,因为堆是所有线程共享的一块内存空间,会出现线程安全性问题,而垃圾回收也主要是回收堆内空间,所以堆内的布局我们非常有必要深入去了解一下。现在就让我们继续来分析一下堆内布局以及Java对象在内存中的布局把。对象的指向先来看一段代码:pac
2020-09-19 01:10:38 472
原创 AQS详解
文章目录一、 AQS的类图结构1. state2. Node二、AQS同步队列(CLH)1. AQS同步原理2. AQS同步器的结构—入列与出列2.1 AQS同步器的结构2.2 入列2.3 出列三、 AQS锁1. AQS支持的锁的类别2. 基于AQS实现锁(独占与共享模式)2.1 独占锁的获取2.1.1 acquire()2.1.2 tryAcquire()2.1.3 addWaiter()2....
2020-01-09 00:57:27 817
原创 自旋锁
简单回顾一下CAS算法CAS算法 即compare and swap(比较与交换),是一种有名的无锁算法。无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步(Non-blocking Synchronization)。CAS算法涉及到三个操作数需要读写的内存值 V进行比较的值 A拟写入的新值 B当且仅当 V 的值等于...
2019-12-31 16:31:45 620
原创 ReentrantLock详解
ReentrantLock详解Locklock()过程公平锁非公平锁unlock()过程lockInterruptibly()过程tryLock()tryLock(long timeout, TimeUnit unit)newCondition()斜体为抽象类,下横线为接口聚合关系总结:ReentrantLock实现了Lock,Serializabl...
2019-12-20 18:12:20 365 1
原创 MySql——锁的类型及锁带来的问题(脏读等)
1 什么是锁1.1 锁的概述在生活中锁的例子多的不能再多了,从古老的简单的门锁,到密码锁,再到现在的指纹解锁,人脸识别锁,这都是锁的鲜明的例子,所以,我们理解锁应该是非常简单的。再到MySQL中的锁,对于MySQL来说,锁是一个很重要的特性,数据库的锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性,这样才能保证在高并发的情况下,访问数据库的时候,数据不会出现问题。1.2 锁的两...
2019-12-13 17:43:41 999
转载 进程间通信的方式——信号、管道、消息队列、共享内存
常见的通信方式:管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小...
2019-12-11 20:31:55 135
转载 Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比
Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比Github 地址:https://github.com/Snailclimb/JavaGuide/edit/master/Java相关/synchronized.mdSynchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock...
2019-12-10 16:52:41 698
转载 fail-fast与fail-safe在Java集合中的应用
fail-fast与fail-safe简介如果一个系统,当有异常或者错误发生时就立即中断执行,这种设计称之为fail-fast。相反如果我们的系统可以在某种异常或者错误发生时继续执行,不会被中断,这种设计称之为fail-safe。fail-fast与fail-safe在Java迭代器中的设计在Java中,最典型的fail-fast与fail-safe就是关于迭代器的设计。通常情况下,那些线程...
2019-12-06 18:25:39 118
原创 String, StringBuffer, StringBuilder比较
概览String是不可变的字符序列;StringBuffer是线程安全的,可变的字符序列;StringBuilder是可变的字符序列。StringBuffer Java.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。Stri...
2019-12-05 16:10:25 244
原创 transient关键字
java 的transient关键字的作用是需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。transient使用小结1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本...
2019-12-05 14:33:43 151
转载 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。参考:[http://www.cnblogs.com/dolphin0520/p/3920397.html]一.CountDownLatch用法 CountDownLatch类位于java.u...
2019-12-02 17:05:19 103
原创 多线程方法详解
1.wait() 与 notify/notifyAll 方法必须在同步代码块中使用①wait() 与 notify/notifyAll() 是Object类的方法,在执行两个方法时,要先获得锁。那么怎么获得锁呢?synchronized 关键字锁住的是当前对象。这也是称为对象锁的原因。wait() 与 notify/notifyAll() 经常`与synchronized搭配使用`,即在s...
2019-11-13 21:09:30 178
原创 MySQL——InnoDB存储引擎的锁
锁是数据库系统系统区别于文件系统的一个关键特性。一、lock和 latch1. latch latch在MySQL中是用来保证并发多线程操作操作临界资源的锁,锁定的对象线程,是和咱们使用的Java等传统语言中的锁意义相近,而且没有死锁检测的机制。2. lock lock是MySQL中在事务中使用的锁,锁定的对象是事务,来锁定数据库中表、页、行;通常只有在事务commit或...
2019-11-08 11:52:57 190
原创 集合类——HashMap详解
一.Map类族概述实现类:Hashtable,HashMap,LinkedHashMap,TreeMap。在Hashtable子类中,还有Properties类的实现。Hashtable和HashMap区别①Hashtable的大部分方法做了同步,而HashMap没有,因此HashMap不是线程安全的。②Hashtable不允许key或者value使用null值,而HashMap...
2019-11-05 20:47:18 821
原创 正则表达式匹配(动态回归系列)
一、正则表达式匹配题目来源:https://leetcode-cn.com/problems/regular-expression-matching1.题目描述给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。...
2019-11-05 15:21:34 815
原创 单点登录实现原理(SSO)
简介单点登录是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的保护资源,若用户在某个应用系统中进行注销登录,所有的应用系统都不能再直接访问保护资源,像一些知名的大型网站,如:淘宝与天猫、新浪微博与新浪博客等都用到了这个技术。原理一.单点登录有一个独立的认证中心,只有认证中心才能接受用户的用户名和密码等信息进行认证,其他系统不提供登录入口,只接受认证中心...
2019-11-05 01:24:47 718
原创 JVM 性能调优监控工具
涉及工具A、jps(Java Virtual Machine Process Status Tool)B、jstackC、jmap(Memory Map)和jhat(Java Heap Analysis Tool)D、jstat(JVM统计监测工具)E、hprof(Heap/CPU Profiling Tool)现实企业级Java应用开发、维护中,有时候我们会碰到下面这些问题:Ou...
2019-11-04 00:18:53 576
原创 JVM内存结构
内存结构 运行时数据区包括:程序计数器、虚拟机栈、本地方法栈、Java堆、方法区以及方法区中的运行时常量池1、程序计数器: 线程私有。每个线程都有自己独立的程序计数器,用来指示下一条指令的地址。是当前线程所执行的字节码的行号指示器,如果线程正执行一个java方法,计数器记录正在执行的虚拟机字节码指令的地址,如果线程正在执行的是Native方法,则计数器值为空。2、虚拟机栈: 即栈区...
2019-11-02 23:12:17 179
转载 @Controller和@RestController的区别?
知识点:@RestController注解相当于@ResponseBody + @Controller合在一起的作用。1) 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。2) 如果需要...
2018-07-10 19:31:08 401
原创 Struts2——对JSON的支持(struts2-json-plugin.jar )
一、struts2对于JSON支持 struts2提供了一个struts2-json-plugin.jar 用于支持JSON的使用。当我们在struts2中使用JSON的时候必须导入struts2-json-plugin.jar并且需要一下几点:struts2-json-plugin.jar中struts-plugin.xml配置信息:需要转换json的struts.xml文件,其拦截器所在包
2017-08-08 16:13:47 2328
原创 华为OJ——24点运算
题目描述 计算 24 点是一种扑克牌益智游戏,随机抽出 4 张扑克牌,通过加 (+) ,减 (-) ,乘 ( * ), 除 (/) 四种运算法则计算得到整数 24 ,本问题中,扑克牌通过如下字符或者字符串表示,其中,小写 joker 表示小王,大写 JOKER 表示大王: 3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER 本程序要求实现:输入 4 张牌
2017-08-08 15:23:31 1339
转载 Struts2——将字符串、对象、list集合保存到值栈中,在jsp页面中获取的方法
封装对象User,属性有id,username,email等 1.1:在action中将字符串保存到值栈中 1.1.1 获取值栈对象 ValueStack stack = ActionContext.getContext().getValueStack(); 1.1.2 将字符串保存到值栈中stack.set("username","leo");1.2:在jsp页面中获取值栈中的字符串
2017-08-07 10:18:01 2047
原创 华为OJ——扑克牌大小
题目描述 扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王): 3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER 输入两手牌,两手牌之间用”-“连接,每手牌的每张牌以空格分隔,”-“两边没有空格,如:4 4 4 4-joker J
2017-08-05 13:27:51 459
原创 华为OJ——密码强度等级
题目描述 密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。一、密码长度:5 分: 小于等于4 个字符 10 分: 5 到7 字符 25 分: 大于等于8 个字符二、字母:0 分: 没有字母 10 分: 全都是小(大)写字母 20 分: 大小写混合字母三、数字:0 分: 没有数字 10 分: 1 个数字 20 分: 大于1 个数
2017-08-05 12:52:53 512
原创 华为OJ——求最大连续bit数
题目描述 功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1输入:一个byte型的数字输出: 无返回: 对应的二进制数字中1的最大连续数输入描述: 输入一个byte数字输出描述: 输出转成二进制之后连续1的个数示例1 输入 3 输出 2 实现代码package cn.c_shuang.demo81;
2017-08-04 18:54:05 436
原创 华为OJ——统计大写字母个数
题目描述 找出给定字符串中大写字符(即’A’-‘Z’)的个数接口说明原型:int CalcCapital(String str); 返回值:int输入描述: 输入一个String数据输出描述: 输出string中大写字母的个数示例1 输入 add123#$%#%#O 输出 1 实现代码注意:正则表达式的使用package cn.c_shuang.demo80;i
2017-08-04 17:13:32 260
原创 华为OJ——将真分数分解为埃及分数
题目描述 分子为1的分数称为埃及分数。现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数。如:8/11 = 1/2+1/5+1/55+1/110。接口说明/* 功能: 将分数分解为埃及分数序列 输入参数: String pcRealFraction:真分数(格式“8/11”) 返回值: String pcEgpytFraction:分解后的埃及分数序列(
2017-08-04 17:00:44 1150
原创 华为OJ——字符串匹配
题目描述题目标题: 判断短字符串中的所有字符是否在长字符串中全部出现详细描述: 接口说明 原型: boolIsAllCharExist(char* pShortString,char* pLongString); 输入参数: char* pShortString:短字符串 char* pLongString:长字符串输入描述: 输入两个字符串。第一个为短字符,第二个为长字符。输
2017-08-04 15:31:26 634
原创 华为OJ——整形数组合并
题目描述题目标题: 将两个整型数组按照升序合并,并且过滤掉重复数组元素 [注: 题目更新了。输出之后有换行]详细描述: 接口说明 原型: voidCombineBySort(int* pArray1,intiArray1Num,int* pArray2,intiArray2Num,int* pOutputArray,int* iOutputNum); 输入参数: int* pArra
2017-08-04 15:27:47 480
原创 华为OJ——计算字符串的相似度
题目描述 对于不同的字符串,我们希望能有办法判断相似程度,我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法如下: 1 修改一个字符,如把“a”替换为“b”。 2 增加一个字符,如把“abdd”变为“aebdd”。 3 删除一个字符,如把“travelling”变为“traveling”。 比如,对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通
2017-08-04 14:40:08 421
转载 jQuery——获取option方法汇总
jQuery的一些方法理出一些常用的方法://获取第一个option的值 $('#test option:first').val(); //最后一个option的值 $('#test option:last').val(); //获取第二个option的值 $('#test option:eq(1)').val(); //获取选中的值 $('#test').val(); $('#te
2017-08-03 22:41:50 316
原创 华为OJ——超长正整数相加
题目描述 请设计一个算法完成两个超长正整数的加法。接口说明/* 请设计一个算法完成两个超长正整数的加法。 输入参数: String addend:加数 String augend:被加数 返回值:加法结果 */ public String AddLongInteger(String addend, String augend) { /在这里实现功能/return null;
2017-08-03 20:00:34 325
原创 华为OJ——尼科彻斯定理
题目描述 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。 例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 接口说明 原型:/* 功能: 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。 原型: int GetSequeOddNum(int m,char * pc
2017-08-03 15:05:37 753
原创 华为OJ——公共字串计算
题目描述题目标题:计算两个字符串的最大公共字串的长度,字符不区分大小写详细描述:接口说明 原型: int getCommonStrLength(char * pFirstStr, char * pSecondStr); 输入参数: char * pFirstStr //第一个字符串 char * pSecondStr//第二个字符串输入描述:输入两个字符串输出描述:输出一
2017-08-03 11:09:11 347
原创 华为OJ——参数解析
题目描述 在命令行输入如下命令: xcopy /s c:\ d:\, 各个参数如下: 参数1:命令字xcopy 参数2:字符串/s 参数3:字符串c:\ 参数4: 字符串d:\ 请编写一个参数解析程序,实现将命令行各个参数解析出来。解析规则: 1.参数分隔符为空格 2.对于用“”包含起来的参数,如果中间有空格,不能
2017-08-03 03:11:09 531
原创 华为OJ——计算日期到天数转换
题目描述 根据输入的日期,计算是这一年的第几天。。详细描述: 输入某年某月某日,判断这一天是这一年的第几天?。输入描述: 输入三行,分别是年,月,日输出描述:成功:返回outDay输出计算后的第几天; 失败:返回-1示例1输入 2012 12 31 输出 366 实现代码:package c
2017-08-03 02:27:18 377
原创 华为OJ——百钱买百鸡问题
题目描述 公元前五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?详细描述:接口说明 原型: int GetResult(vector &list) 输入参数: 无 输出参数(指针指向的内存区域保证有效): list 鸡翁、鸡母、鸡雏组合的列表 返回值: -1
2017-08-03 02:14:31 418
原创 华为OJ——字符串通配符
题目描述 问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。要求: 实现如下2个通配符: *:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同) ?:匹配1个字符输入: 通配符表达式; 一组字符串。输出: 返回匹配的结果,正确输出true,错误输出false输入描述: 先输入一个
2017-08-03 01:53:53 765 1
原创 华为OJ——矩阵乘法计算量估算
题目描述 矩阵乘法的运算量与矩阵乘法的顺序强相关。例如: A是一个50×10的矩阵,B是10×20的矩阵,C是20×5的矩阵 计算A*B*C有两种顺序:((AB)C)或者(A(BC)),前者需要计算15000次乘法,后者只需要3500次。 编写程序计算不同的计算顺序需要进行的乘法次数输入描述: 输入多行,先输入要计算乘法的矩阵个数n,每个矩阵的行数,列数,总共2n的数,最后输入
2017-08-03 00:31:15 1439
原创 华为OJ——矩阵乘法
题目描述 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的:原型:voidmatrix_multiply(int *m1,int *m2,int *r, int x, int y, int z); 输入参数: int *m1:x行y列的矩阵(array1[x][y]) int *m2:y行z列的矩阵(a
2017-08-02 21:11:43 609
自适应滤波算法汇总
2017-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人