- 博客(183)
- 资源 (1)
- 收藏
- 关注
原创 虚拟机 永久代和元空间
在 JDK 1.7 及以往的 JDK 版本中,Java 类信息、常量池、静态变量都存储在 Perm(永久代)里。类的元数据和静态变量在类加载的时候分配到 Perm,当类被卸载的时候垃圾收集器从 Perm 处理掉类的元数据和静态变量。当然常量池的东西也会在 Perm 垃圾收集的时候进行处理。JDK 1.8 的对 JVM 架构的改造将类元数据放到本地内存中,另外,将常量池和静态变量放到 Java 堆里。HotSopt VM 将会为类的元数据明确分配和释放本地内存。在这种架构下,类元信息就突破了原来 -XX:
2021-12-19 16:59:40 121
原创 查看当前服务使用的垃圾收集器
1 命令java -XX:+PrintCommandLineFlags -version2 输出内容: -XX:InitialHeapSize=2147483648 -XX:MaxHeapSize=32210157568 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGCjava version "1.8.0_65"Java(TM) SE ..
2021-09-27 10:42:53 364
原创 算法题目整理
1对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。给定字符串A以及它的长度n,请返回最长回文子串的长度解析:动态规划定义二维数组dp[length][length],如果dp[left][right]为true,则表示字符串从left到right是回文子串,如果dp[left][right]为false,则表示字符串从left到right不是回文子串。如果dp[left+1][right-1]为true,我们判断s.charAt(left)和s.charAt(right.
2021-09-08 23:15:28 102
原创 java单例模式
基于双重检查的单例模式public class Singleton { // 通过volatile关键字来确保安全,必需添加volatile //来防止指令重排序 private volatile static Singleton singleton; private Singleton(){} public static Singleton getInstance(){ if(singleton == null){
2021-05-23 13:05:22 50
原创 hashMap资料整理
https://tech.meituan.com/2016/06/24/java-hashmap.htmlhttps://juejin.cn/post/6844904013909983245
2021-04-28 07:14:11 50
原创 字符串比较常见面试题
1 说出字符串比较后的结果package string; public class Demo2_String { public static void main(String[] args) { String st1 = "abc"; //常量池中创建字符串’abc‘ String st2 = "abc"; //发现常量池中已经存在对象’abc‘ 直接复用 System.out.println(st1 == st2); // System.out
2021-04-10 08:40:11 130
原创 深入理解String.intern
一 字符串概述在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种直接使用双引号声明出来的String对象会直接存储在常量池中。 如果不是用双引号声明的String对象,可以使用String提供的intern方法。intern 方法会从字符串常量池中查询当前字符串..
2021-04-08 08:58:49 80
原创 3 强引用,软引用,弱引用,幻象引用都有什么区别
一 不同引用类型的区别 不同的引用类型,主要体现的是对象不同的可达性状态和对垃圾收集的影响。1.1强引用 特定:强引用就是我们最常见的普通对象引用,我们平常典型编码Object obj = new Object()中的obj就是强引用。通过关键字new创建的对象所关联的引用就是强引用。 当JVM内存空间不足,JVM宁愿抛出OutOfMemoryError运行时错误(OOM),使程序异常终止,也不会靠随意回收具有强引用的“存活”对象来解决内存不足的问题。对于一个普通的对象,如果没有其他的引...
2021-04-07 08:26:21 60
原创 final,finally, finalize有什么不同
final final 可以用来修饰类、方法、变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可以重写的(override)finally finally 则是 Java 保证重点代码一定要被执行的一种机制。我们可以使用 try-finally 或者 try-catch-finally 来进行类似关闭 JDBC 连接、保证 unlock 锁等动作finalizefinalize 是基础...
2021-04-01 08:19:12 47
原创 java异常体系学习
java异常处理学习学习文章:https://www.cnblogs.com/aspirant/p/10790803.html考点解析:NoClassDefFoundError是一个错误(Error),而ClassNOtFoundException是一个异常,在Java中对于错误和异常的处理是不同的,我们可以从异常中恢复程序但却不应该尝试从错误中恢复程序。ClassNotFoundException的产生原因:Java支持使用Class.forName方法来动态地加载类,任意一个类的..
2021-03-31 08:20:33 49
原创 Split Temporary Variabe(分解临时变量)
一 使用场景 临时变量被赋值超过一个,它既不循环变量也不是被用于收集计算结果,赋值超过一次,意味着它们在函数中承担了一个以上的责任。如果临时变量承担了多个责任,它就应该被替换成多个临时变量,每个临时变量程度一个责任,同一个临时变量程度两件不同的责任,会令代码阅读者糊涂。二 做法 1 将新的临时变量声明为final。 2 以临时变量的第二次赋值动作为界,修改此前对临时变量的所有...
2019-03-05 22:07:16 153
原创 Replace Temp with Query( 以查询取代临时变量)
一 次重构方式是用说明 临时变量只被赋值一次,校验是否只被赋值一次方式,将临时变量修饰符改成final类型,编译器无报错则证明只被赋值一次。 临时变量提到单独查询函数中,保证其他引用方法,不用写重复代码。二 使用实例//包含两个临时变量double getPrice() { int basePrice = quantity * itemP...
2019-03-05 07:26:45 1319 1
原创 threadPoolExecutor源码简析
线程池状态* RUNNING: Accept new tasks and process queued tasks //执行中* SHUTDOWN: Don't accept new tasks, but process queued tasks //继续处理队列中的任务* STOP: Don't accept new tasks, don't process queued tasks...
2018-09-02 10:25:19 116
原创 读写锁学习记录
/** * 写锁获取过程 * @param acquires * @return */ protected final boolean tryAcquire(int acquires) { Thread current = Thread.currentThread(); int c = getState(); //...
2018-05-19 17:14:20 164
原创 volatile学习记录
一 volatile关键字第一:使用volatile关键字会强制将修改的值立即写入主存;(修改后强制回写到主存,普通变量修改后写回主存时间不确定)第二:使用volatile关键字的话,当线程2进行修改时,会导致线程1的工作内存中缓存变量stop的缓存行无效(反映到硬件层的话,就是CPU的L1 或者L2缓存中对应的缓存行无效,cpu缓存的最下单位);第三:由于线程1的工作内存中缓存变量stop的...
2018-05-04 08:06:33 225
原创 单例模式学习记录
/** * 饿汉试 * Created by jw.chen on 2018/4/30. */public class SingletonDemo1 { //注意修饰符为私有的private private static SingletonDemo1 singleton = new SingletonDemo1(); //注意构造方法一定要用private防止外部...
2018-04-30 17:46:28 102
原创 notify,wait,condition实现生产消费者模型
1 wait()和notify实现生产消费者模型package com.qunar.conditionTest;import java.util.PriorityQueue;/** * Created by chen on 2018/4/22. */public class Testwaitnotify { private int queueSize = 10; p...
2018-04-22 11:16:46 221
原创 >>与>>>区别
今天看hashMap源码,看到做位运算的时候,用的是>>>移动位运算,于是乎查了下>>与>>>的用法15 >> 2 = 315 >>> 2 = 3就是将15除以4 二进制操作0000 1111 >> 2 = 00000011 = 3,低位被丢失了0000 1111 >>&a
2018-04-21 20:48:19 1534
原创 面试题目链接汇总
java经典面试题https://blog.csdn.net/achiberx/article/details/73289511#comments
2018-04-15 16:11:21 129
原创 java invoke详解
感觉介绍比较详细的一篇文章https://www.cnblogs.com/onlywujun/p/3519037.html
2018-04-03 18:55:04 1009
原创 读写锁demo
package com.qunar.thread.readwriteLock;import java.util.HashMap;import java.util.Map;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReadWriteLock;import java.util.concu
2018-01-11 22:35:28 297
原创 Effective Java学习记录
1 Builder模式 package com.qunar.bean;/** * Created by chenjunwei on 2017/11/6. */public class Student { private String name; private int age; private String sex; private String
2017-11-06 11:12:24 133
原创 ApplicationContextAware 获取任意bean信息
@Componentpublic class SpringAppContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContextHolder; @Override public void setApplicationContext(A
2017-08-08 15:01:17 427
原创 elasticsearch入门学习
一,索引添加curl -X PUT 'http://localhost:9200//website/blog/123' -d'{ "title": "My first blog entry", "text": "Just trying this out...", "date": "2014/01/01"}'二 查询 curl -X GET htt
2017-03-20 22:47:13 220
原创 简单springmvc搭建流程
web.xml文件配置 springmvc19_day01_01 characterEncoding org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8
2016-04-11 20:25:38 344
原创 linux基础命令
软链接 ln -s 要创建软链接的文件 软链接名称 类是于window的快捷方式硬链接 ln 要创建软链接的文件 硬链接名称 类是于 cp + 同步更新chmod u+x file 给所有者x权限chmod 640 filesu - 用户名 切换用户添加用户 useradd 新用户名passwd 输入密码
2015-10-12 20:42:30 405
原创 ubuntu14.04 flash安装
下载安装包: apt-get update安装flash sudo apt-get install flashplugin-nonfree 所有程序执行成功后即可看视频啦
2015-09-28 18:05:33 476
原创 Spring JdbcTemplate笔记
xml配置文件context:annotation-config /> //加入注解context:component-scan base-package="foo.bar"/> //批量扫描该包下的类context:property-placeholder location="dp.properties">context:property-placeholder> //
2015-08-09 16:20:08 373
转载 git如何clone所有的远程分支
git clone只能clone远程库的master分支,无法clone所有分支,解决办法如下:1. 找一个干净目录,假设是git_work2. cd git_work3. git clone http://myrepo.xxx.com/project/.git ,这样在git_work目录下得到一个project子目录4. cd project5. git branch
2015-05-26 16:18:27 459
原创 zoj3872
#include #include #include #include using namespace std;const int M = 100005;int num[M];long long dp[M];long long check(int i){ long long s = 0; for(int k = i -1; k >= 1; k--){
2015-04-26 20:26:31 655
原创 求子数组的最大和(数组)
#include #include #include using namespace std;int findGreatsubsum(const int *a, const int size){ int cursum = 0; int maxnsum = -99999999; for(int i = 0; i < size; i++){ cu
2015-04-13 16:17:34 403
转载 设计包含min函数的栈(栈)
#include #include #include using namespace std;template class StackWithMin{private: stack datastack; stack minstack;//存最小值而不是最小值的下标public: void push(const T &data) {
2015-04-13 15:59:05 345
转载 把二元查找树转变成排序的双向链表
#include using namespace std;struct BSTreeNode{ int m_nValue; // value of node BSTreeNode *m_pLeft; // left child of node BSTreeNode *m_pRight; // right child of node};void addBSTr
2015-04-13 14:45:35 374
转载 C++引用传递和值传递
从概念上讲。指针从本质上讲就是存放变量地址 的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它 的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++ 中,指针和引用经常用于函数的参数传递,然而,指针
2015-04-13 14:36:31 531
转载 最大公共序列
#include "stdio.h"#include "string.h"#include "stdlib.h"int longest_common_substring(char *str1, char *str2){ int i,j,k,len1,len2,max,x,y; len1 = strlen(str1); len2 = strlen(str2);
2015-04-02 14:57:41 335
转载 C++中堆栈 堆和栈的区别
C++中堆栈,堆和栈的区别分类: C++ 基础2012-12-06 22:15 3993人阅读 评论(0) 收藏 举报cCc++C++编译器堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、
2015-04-02 14:16:04 672
原创 多少分
#include #include #include using namespace std;bool IspopOrder(const int *pPush, const int *pPop, int length){ bool possible = false; if(pPush != NULL &&
2015-04-01 20:30:09 363
原创 顺时针打印矩阵
void PrintMatrixInCircle(int** number, int columns, int rows, int startY, int startX){ int endX = rows - startY -1; int endY = columns - startX -1; //向左输出数组中的值; for(int i = startY; i
2014-12-30 21:12:55 522
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人