在ArchLinux中使用最新的内核模块监控Ryzen温度
AMD Ryzen Temperatures
参考:
Monitor AMD Ryzen Temperatures In Linux with latest kernel modules
因为需要查看一些硬件的温度,又加上目前5.1.7-arch1-1-ARCH内核只是显示cpu温度,所以需要自己加载一些模块,其实过程还是很简单的
要求:
使用内核4.11或更高版本以及root权限的Linux安装。
具体流程:
确定modulesRyzen板上一般有两种模块。他们是it87和nct6775。旧的主板一般是前者,新的一般是后者,具体的可以搜索下,本次使用的MSI B450 TOMAHAWK属于后者
具体命令1234567sudo pacman -S linux-headersyay -S nct6775-master-dkms-gitsudo vim /etc/modules-load.d/modules.conf#往文件里面添加"nct6775"sudo modprobe nct6775sudo rebootsensors
记-迁移arch到不同硬盘
迁移sata固态硬盘中的arch到空的nvme固态硬盘里面
分区记原本sata固态硬盘为/dev/sda,nvme固态固态为/dev/nvme
原sata硬盘分区为,启动方式为uefi
1234/ --> /dev/sda1/home --> /dev/sda2swap --> /dev/sda3/boot/efi --> /dev/sda4
则我们需要在新的nvme固态硬盘同样分四个区,并且分别格式化为对应的格式,新的硬盘分区不能小于旧的硬盘分区。
那么迁移过来我们的分区如下:
1234/ --> /dev/nvme1 (ext4)/home --> /dev/nvme2 (ext4)swap --> /dev/nvme3 (linux-swap)/boot/efi --> /dev/nvme4 (fat32)
linux livecd原系统是哪个发行版,则最好用对应发行版的livecd。所以在此准备了个arch linux的livecd
原本是用manjaro li ...
Java设计模式-代理模式
代理模式
参考:Java三种代理模式:静态代理、动态代理和cglib代理
C#设计模式之代理模式
基于 JDK 的动态代理机制
代理模式含义代理模式是一种设计模式,提供了对目标对象额外的访问方式,即通过代理对象访问目标对象,这样可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。简言之,代理模式就是设置一个中间代理来控制访问原目标对象,以达到增强原对象的功能和简化访问方式。
举例歌手与经纪人
结构代理模式的结构比较简单,其核心是代理类,为了让客户端能够一致性地对待真实对象和代理对象,在代理模式中引入了抽象层
Subject(抽象角色):定义代理角色和真实角色的公共对外方法
Proxy(代理角色):实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作
RealSubject(真实角色):实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。关注于真正的业务逻辑
核心作用
通过代理,控制对象的访问:可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。(即AOP的微观实现 ...
Java虚拟机笔记-Launcher类
Launcher类部分内容分析
三种类加载器之间的关系
内建于JVM中的启动类加载器会加载java.lang.ClassLoder以及其他Java平台类,当JVM启动时,一块特殊的机器码会运行,它会加载扩展类加载器与系统类加载器,这块特殊的机器码叫做启动类加载器(Bootstrap)。
启动类加载器不是Java类,而其他的加载器则都是Java类,启动类加载器是特定于平台的机器指令,它负责开启整个过程。
所有类加载器(除了启动类加载器)都被实现为Java类。不过,总归要有一个组件来加载第一个Java类加载器,从而让整个加载过程能够顺利进行下去,加载第一个纯Java类加载器就是启动类加载器的职责。
启动类加载器还会负责加载供JRE正常运行所需要的基本组件,这包括java.util与java.lang包中的类等等。
验证12System.out.println(ClassLoader.class.getClassLoader());//输出null
但是不能直接获取扩展类加载器和系统类加载器,因为没有声明这两个类为public
12345678910public class La ...
Java虚拟机笔记-类加载器与web容器与OSGi
类加载器与 Web 容器,类加载器与 OSGi
参考:深入探讨 Java 类加载器
深入理解 Tomcat(四)Tomcat 类加载器之为何违背双亲委派模型
类加载器与Web容器对于运行在Java EE™容器中的 Web 应用来说,类加载器的实现方式与一般的 Java 应用有所不同。不同的 Web 容器的实现方式也会有所不同。
Apache Tomcat以Apache Tomcat来说,每个 Web 应用都有一个对应的类加载器实例。该类加载器也使用代理模式,所不同的是它是首先尝试去加载某个类,如果找不到再代理给父类加载器。这与一般类加载器的顺序是相反的。这是 Java Servlet规范中的推荐做法,其目的是使得 Web 应用自己的类的优先级高于 Web 容器提供的类。这种代理模式的一个例外是:Java 核心库的类是不在查找范围之内的。这也是为了保证 Java 核心库的类型安全。
Tomcat加载过程
我们看到,前面3个类加载和默认的一致,CommonClassLoader,CatalinaClassLoader,SharedClassLoader和WebappClassLoade ...
Java设计模式-工厂模式Java实现
工厂模式的java实现
代码地址:
github
简单工厂模式
pizzaPizza.java12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970package pizza;import java.util.ArrayList;/** * 抽象Pizza类,其他种类都继承这个类 */public abstract class Pizza { /** * Pizza名字 */ String name; /** * 面团 */ String dough; /** * 调味汁 */ String sauce; /** * 配料 */ ArrayList<String> toppings = new ArrayList<String>(); ...
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.boo ...
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-glibc ...
Java虚拟机笔记-类加载器的命名空间
类加载器的命名空间
参考:https://blog.csdn.net/sureyonder/article/details/5564181
http://www.importnew.com/17093.html
命名空间类加载体系为不同类加载器加载的类提供不同的命名空间,同一命名空间内的类可以互相访问,不同命名空间的类不知道彼此的存在(除非显式提供访问机制)。同一类可以再不同的命名空间内,但无法在同一命名空间内重复出现。
命名空间是这样定义的:实际完成加载类的工作的加载器为定义类加载器,而加载的双亲委托路径上的所有加载器为初始类加载器,某个加载器的命名空间就是所有以该加载器为初始类加载器的类所组成。
可以预见,子加载器的命名空间包括其父/祖先加载器的命名空间和只有自己才可以加载的类所组成。根据加载体系结构的安全机制,同一命名空间内的类可 以互相访问,所以父加载器所加载的类不一定可以访问子加载器所加载的类,但子加载器所加载的类必然可以访问父加载器加载的类。父加载器加载的类就好像小箱 子,子加载器加载的类可能用到父加载器加载的类,就像一个大箱子,只能把小箱子放进大箱子,而不能反过来做 ...