Java设计模式-工厂模式
《Head first设计模式》之工厂模式 按照这本书以披萨店为例子讲解,工厂模式分为简单工厂模式,工厂方法模式,抽象工厂模式 参考:http://www.importnew.com/23499.html https://github.com/crazysunj/crazysunj.github.io/wiki/%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F https://www.jianshu.com/p/78c4d93fab87 简单工厂模式预定披萨假设有一家披萨店,预定披萨的代码如下: 12345678910111213Pizza orderPizza(){ Pizza pizza = new Pizza(); // 准备面皮,加调料等 pizza.prepare(); // 烘烤 pizza.bake(); // 切片 pizza.cut(); //包装 pizza.box(); return pizza;} 更多披萨类型 刚刚只是一个Pizza类型,现...
Java虚拟机笔记-getProperty
System.getProperty System.getProperty()参考:https://www.jianshu.com/p/9b262628e041 123456789101112131415161718package indi.greenhat.jvm;public class Test { public static void main(String[] args) throws Exception{ /** * 获取指定键指示的系统属性 * 首先,如果存在安全管理器,会调用其checkPropertiesAccess无参方法,有可能抛出安全异常 * 当前系统属性集会通过Property对象返回(对象有getProperty()方法) * 如果当前没有系统属性集,会创建并初始化系统属性集。 */ //获得根类加载器系统属性 System.out.println(System.getProperty("sun....
MySql8-arch下二进制安装
二进制安装可控,方便 参考: https://linuxops.org/blog/mysql/mysql8.html https://www.kancloud.cn/lengyueguang/linux/660448 官方文档: https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html 下载二进制包选择一个镜像站下载,查找起来比较方便,因为官网没有提供国内的源,所以挑了一个比较快的。 http://mysql.inspire.net.nz/Downloads 然后下载mysql-xxxx-linux-glibcxx-xx.xx就行了 比如http://mysql.inspire.net.nz/Downloads/MySQL-8.0/mysql-8.0.15-linux-glibc2.12-i686.tar.xz 解压解压 1tar -xvf mysql-8.0.15-linux-glibc2.12-x86_64.tar.xz 移动到~/opt(可选) 1mv mysql-8.0.15-linux-gl...
Java虚拟机笔记-类加载器的命名空间
类加载器的命名空间 参考:https://blog.csdn.net/sureyonder/article/details/5564181 http://www.importnew.com/17093.html 命名空间类加载体系为不同类加载器加载的类提供不同的命名空间,同一命名空间内的类可以互相访问,不同命名空间的类不知道彼此的存在(除非显式提供访问机制)。同一类可以再不同的命名空间内,但无法在同一命名空间内重复出现。 命名空间是这样定义的:实际完成加载类的工作的加载器为定义类加载器,而加载的双亲委托路径上的所有加载器为初始类加载器,某个加载器的命名空间就是所有以该加载器为初始类加载器的类所组成。 可以预见,子加载器的命名空间包括其父/祖先加载器的命名空间和只有自己才可以加载的类所组成。根据加载体系结构的安全机制,同一命名空间内的类可 以互相访问,所以父加载器所加载的类不一定可以访问子加载器所加载的类,但子加载器所加载的类必然可以访问父加载器加载的类。父加载器加载的类就好像小箱 子,子加载器加载的类可能用到父加载器加载的类,就像一个大箱子,只能把小箱子放进大箱子,而不能反...
Java虚拟机笔记-类的卸载
jvm类的卸载 当MySample类被加载,连接和初始化后,它的生命周期就开始了。当代表MySample类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期,MySample类在方法区内的数据也会被卸载,从而结束MySample类的生命周期。 一个类何时结束生命周期,取决于代表它的Class对象何时结束生命周期。 由Java虚拟机自带的加载器所加载的类,在虚拟机的生命周期中,始终不会被卸载。Java虚拟机自带的类加器包括根类加载器,扩展类加载器和系统类加载器。Java虚拟机本身会始终引用这些类加载器,而这些类加载器则会始引用它们所加载的类的Class对象,因此这Class对象终是可及的。 由用户自定义的类加载器所加载的类是可以被卸载的。 Sample类中由loader1加载。在类加载器的内部实现中,用一个Java集合来存放所加载类的引用。另一方面,一个Class对象总是会引用它的类加载器,调用Class对象的getClasslodar()方法,就能获得它的类加载器。此可见,代表Sample类的Class实例与loader1之间为双向关取关系。一个类的实...
线段树模板
「LYOI2018 Summer」Hzy’s Rabbit Array 参考: wyy603 「LYOI2018 Summer」Hzy’s Rabbit Array 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681...
Java虚拟机笔记-自定义类加载器
jvm自定义类加载器 JDK加载类流程参考:https://juejin.im/post/5a1fad585188252ae93ab953 loadClass123456789101112131415161718192021222324252627282930313233343536373839404142protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException{ synchronized (getClassLoadingLock(name)) { /** * 1.检查类是否已经加载过 * @param name 类的二进制名字 * @return 类对象(Class<?>),如果没有加载该类,则返回null */ Class c = findLoadedClass(name); if (c ==...
容斥与抽屉定理
容斥与抽屉定理 容斥定理定理参考:百度百科 在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。 两个集合的容斥关系公式:A∪B =|A∪B| = |A|+|B| - |A∩B |(∩:重合的部分) 三个集合的容斥关系公式:|A∪B∪C| = |A|+|B|+|C| - |A∩B| - |B∩C| - |C∩A| + |A∩B∩C| 例如三个集合的关系: (图里面的A+B+C划红色部分应该是划去{2,3,4,2,1,2},即划去A∩B,B∩C,A∩C) 一般情况: 51nod1284 容斥定理,先求反面,即1-N有多少是2 3 5 7的倍数,然后再用总数减去反面的数量即为所求。 1cnt = A2+A3+A5+A7-(A23+A25+A27+A35+A37+A57)+(A235+A237+A257+A357)-A2357 A2表示被2整除的...
Java虚拟机笔记-ClassLoder部分文档解读
ClassLoder部分文档解读 Documentation123java.lang public abstract class ClassLoaderextends Object 123A class loader is an object that is responsible for loading classes. The class ClassLoader is an abstract class. Given the binary name of a class, a class loader should attempt to locate or generate data that constitutes a definition for the class. A typical strategy is to transform the name into a file name and then read a "class file" of that name from a file system.一个类加载器是一个对象,负责加载类。类C...
Java虚拟机笔记-类加载器双亲委托派制2
继续学习jvm类加载器双亲委派机制 循环获得ClassLoader1234567891011121314151617181920public class Main{ public static void main(String[] args) throws Exception{ //获取系统类加载器 ClassLoader classLoader = ClassLoader.getSystemClassLoader(); System.out.println(classLoader); System.out.println("-------------------"); while(null != classLoader){ //获取加载器的父亲 classLoader = classLoader.getParent(); System.out.println(class...