四时宝库

程序员的知识宝库

如何避开Java开发中有关Unsafe类的”坑“?

Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java语言拥有了类似C语言指针一样操作内存空间的能力,这无疑也增加了程序发生相关指针问题的风险。在程序中过度、不正确使用Unsafe类会使得程序出错的概率变大,使得Java这种安全的语言变得不再“安全”,因此对Unsafe的使用一定要慎重。

JVM系列之:Contend注解和false-sharing

简介

现代CPU为了提升性能都会有自己的缓存结构,而多核CPU为了同时正常工作,引入了MESI,作为CPU缓存之间同步的协议。MESI虽然很好,但是不当的时候用也可能导致性能的退化。

到底怎么回事呢?一起来看看吧。

BASE64Encoder找不到jar包的解决方法

sun.misc.BASE64Encoder找不到jar包的解决方法:

1.右键项目-》属性-》java bulid path-》jre System Library-》access rules-》resolution选择accessible,下面填上** 点击确定即可!!!

2.在MyEclipse中编写Java代码时,用到了BASE64Decoder,import sun.misc.BASE64Decoder;可是Eclipse提示:

通过rt.jar包中的sun.misc.Unsafe实例化无构造方法实例

import java.io.Serializable;
import java.lang.reflect.Field;
import sun.misc.Unsafe;

public class Demo {
    public static void main(String[] args) {
        try {
            Field f = Unsafe.class.getDeclaredField("theUnsafe");
            f.setAccessible(true);
            Unsafe unsafe = (Unsafe) f.get(null);
            Test1 t6 = (Test1) unsafe.allocateInstance(Test1.class);
            t6.say("unsafe Test");
        } catch (NoSuchFieldException | SecurityException | InstantiationException | IllegalArgumentException | IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}


class Test1 implements Cloneable, Serializable {
    private static final long serialVersionUID = -8655076206703674175L;

    public Test1() {
        throw new Error("不能创建实例");
    }

    public void say(String str) {
        System.out.println(str);
    }

    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

import sun.misc.BASE64Decoder idea报红,找不到对应的包

1、异常背景

现象:import sun.misc.BASE64Decoder idea报红,找不到对应的包

Flink源码篇——Flink 1.15.0源码编译

目录

1. 下载源码并解压

Demo入门Mycat(demo application)

前言

Mycat是一个开源的分布式数据库系统,是一个实现了MySQL协议的的Server,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生(Native)协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里;

使用Mycat实现MySQL数据库的读写分离

前提准备

1.一台CentOS机器

2.Mycat安装包 (http://www.mycat.io/)

安装使用

1.解压Mycat的安装包到/user/local/下

2.设置mycat的环境变量

基于mycat+haproxy+keepalived搭建mysql高可用之部署xinetd服务

概述

继续分享mysql高可用集群搭建的内容,前面介绍了haproxy安装部署部分,今天主要介绍安装xinetd服务及相关脚本来检测mycat是否存活。

架构图:

运作理解:主机1与主机2上的keepalived会为该服务器抢占vip,抢占到vip后,对该主机的访问可以通过原来的ip访问,也可以直接通过vip访问,当其中一台宕机时,vip会漂移到另一台机器上,当我们访问VIP时haproxy会根据配置将请求分发到两台Mycat上实现负载均衡,并且haproxy会检测mycat是否存活。

springboot整合mycat- -后续(二)(springboot整合mybatis步骤)

3、完整代码如下:

/**

* 自定义多字段算法计算

*/

public class HeiMaBurstRuleAlgorithm extends AbstractPartitionAlgorithm implements RuleAlgorithm {

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接