git 误删的本地分支恢复方法 git log -g 找回之前提交的commit,并记下commit_idgit branch newbranch commit_id切换到newbranch分支,检查文件是否存在。
java设计模式之工厂模式 1.简单工厂模式(静态工厂模式)首先建立一个car接口,以及两个具体的实现类:public interface Car { void run();}public class Audi implements Car{ public void run() { System.out.println("audi"); }}public class byd implements ...
eclipse类图插件ModelGoon 的安装教程 之前尝试用Eclipse UML小工具AmaterasUML,但是安装成功后,将eclipse中的java文件拖拽到AmaterasUML空白处却无法自动生成类图,显示的还是原来java的代码。之后尝试多次无果,遂放弃。改用eclipse的另外一个插件ModelGoon。下面是ModelGoon 的安装教程。 今天,在修改毕设论文的时候需要画类图,系统已经开发完成,如果...
Elasticsearch-如何合理分配索引分片 大多数ElasticSearch用户在创建索引时通用会问的一个重要问题是:我需要创建多少个分片?在本文中, 我将介绍在分片分配时的一些权衡以及不同设置带来的性能影响. 如果想搞清晰你的分片策略以及如何优化,请继续往下阅读.为什么要考虑分片数分片分配是...
java设计模式之单例模式 文章目录1. 何为单例模式?单例模式和静态类单例模式与静态类的区别:什么时候应该用静态类,什么时候应该用单例模式呢?2. 单例模式的实现2.1 饿汉模式2.2 懒汉式2.2.1第一种方式,在单线程下没问题,在多线程下就出现问题了。2.2.2 第二种方法,使用synchronized关键字对getInstance方法进行同步2.2.3不对方法加锁,而是将里面的代码加锁,也可以实现线程安全。2.2.4...
volatile关键字的功能和底层实现原理 文章目录功能1:变量内存间的可见性1. 概述2. 底层原理功能2: 禁止指令重排序1.概念2. 指令重排序可能会带来的问题3. 禁止指令重排的原理事例待续。。。功能1:变量内存间的可见性1. 概述如果一个变量被volatile关键字修饰,那么所有线程都是可见的。所谓可见就是,当一条线程修改了这个变量值,新值对于其他线程来时是立即可见的; 而普通变量不能做到这一点。对于普通的变量: 普通变...
多线程下的单例设计模式 方法一:public class Singleton1 { /* */ private static Singleton1 singleton = new Singleton1();//直接初始化一个实例对象 private Singleton1() {//私有构造函数,保证其他对象不能够直接new出该对象的一个实例 } public static Singleton...
java并发编程总结三ThreadLocal(待补充) ThreadLocal一般称为线程本地变量,它是一种特殊的线程绑定机制,将变量与线程绑定在一起,为每一个线程维护一个独立的变量副本。通过ThreadLocal可以将对象的可见范围限制在同一个线程内。举个栗子:一个线程中更改了名字,另外一个线程立即能够看到public class ThreadLocal1 { volatile static Person p = new Person();...
java并发编程面试题2.生产者消费者模式 面试题:生产者消费者模式写一个固定容量的同步容器,拥有put和get方法,以及getCount方法能够支持两个生产者线程以及十个消费者线程的阻塞调用方法一:使用wait和notify来调用public class MyContainer2<T> { final private LinkedList<T> lists = new LinkedList<...
java并发编程总结二ReentrantLock 1. 使用ReentrantLock来替代synchronized需要注意的是,使用reentrantLock必须手工释放锁使用synchronized锁如果出现异常的话,jvm会自动释放锁,但是lock必须手工释放,可以在finally代码块中释放public class ReentrantLock2 { Lock lock = new ReentrantLock(); voi...
java并发编程面试题1 实现一个容器,提供两个方法add和size写两个线程,线程1添加十个元素到容器中,线程2实现监控元素的个数,当个数达到五个时线程2 给出提示并结束方法一:volatile关键字public class MyContainer1 { volatile List list = new ArrayList(); public void add(Object o) { list.ad...
java并发编程总结一(待补充) synchronized关键字对某个对象进行加锁自己新建一个对象作为锁住的对象public class T{ private int count = 10; private Object o =new Object(); public void m(){ synchronized(o){ count--; System.out.println(Thtread.cur...
Java虚拟机三、类加载机制1 一、类加载的过程概述类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:**加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)**7个阶段。其中准备、验证、解析3个部分统称为连接(Linking)。加载、验证、准备、初始...
LeetCode刷题之道 本文作者:侯振宇,原文链接:https://www.cnblogs.com/sskyy/p/8268976.html这篇文章最早发在我团队的文档中。我的团队鼓励每个同学都在业余时间多做算法题,特别是新人。个人认为在编程能力的提升上比做 side project 更有用,对职业发展也是如此。当然出于兴趣做的 side project 另当别论。转到这里,希望对各位读者有用。如何有效地写算法题...
图解JVM 转载自:http://blog.csdn.net/luanlouis/注:一下内容均针对jdk1.7之前的版本,新版中中可能有一些变动 JVM运行时数据区(JVM Runtime Area)其实就是指JVM在运行期间,其对计算机内存空间的...
Java虚拟机二、垃圾回收与内存分配(4)内存分配和回收策略(待补充) 关于Java虚拟机的垃圾回收,前面分别提到1. 哪些需要回收?什么时候回收? 如何进行回收?2.四种不同的垃圾回收算法3. 七种应用于不同场景下的垃圾回收器本次着重关注于虚拟机的内存分配和回收策略1. 内存分配回收策略在 四种不同的垃圾回收算法 中,我们知道目前主流的商业虚拟机的垃圾回收器都采用分代收集算法,下图便是HotPot对于不同年代内存的划分:对象的内存分配大体上可以分为三...
Java虚拟机二、垃圾回收与内存分配(3)垃圾回收器(待补充) 1. 概述垃圾收集器是垃圾回收算法(标记-清除算法、复制算法、标记-整理算法、火车算法)的具体实现,本文主要介绍HotSpot虚拟机中的垃圾收集器。1.1 垃圾回收器的组合上图中各个垃圾回收器所处区域,则表明其是属于新生代收集器还是老年代收集器:新生代收集器:Serial、ParNew、Parallel Scavenge;老年代收集器:Serial Old、Parallel Ol...
Java虚拟机二、垃圾回收与内存分配(2)垃圾回收算法(待补充) 1. 标记清除算法1. 思路第一步、标记即:标记出所有要回收的对象如何标记参考:https://blog.csdn.net/weixin_42156928/article/details/90311595中的2.4第二步、清除即:两次标记后,将即将回收的对象统一回收2. 优缺点优点基于最基础的可达性分析算法,是最基础的收集算法;而后续的收集算法都是基于这种思路...
Java虚拟机二、垃圾回收与内存分配(1)概述 垃圾回收概述1.垃圾回收垃圾回收,或称垃圾收集(Garbage Collection,GC)是指自动管理回收不再被引用的内存数据。Lisp语言首次使用了动态内存分配和垃圾收集技术,可以实现垃圾回收的一个基本要求是语言是类型安全的,现在使用的包括Java、Perl、ML等。1.1了解垃圾回收的必要性?1、当需要排查各种内存溢出、内存泄漏问题时;2、当垃圾收集成为系统达到更高并发量的...