苹果系统有一个GateKeeper保护机制(自 OSX 10.5 加入)。从互联网上下载来的文件,会被自动打上com.apple.quarantine标志,翻译过来就是免疫隔离,系统根据这个附加属性对这个文件作出限制。 在安装软件的时候需要移除quarantine属性,步骤如下: 1、开启任何来源代码 打开终端,输入sudo spctl --master-disable然后回车,输入电脑密码后回 More
总结: 单机互斥锁 1. SET KEY Value PX milliseconds NX SET 商品ID 线程ID PX 30000 NX 1.PX 防止锁过期,NX互斥 2.线程ID 记录下来,作为唯一值 3.释放锁验证value,不能让别人的线程,解了别人的锁。 2. 集群锁 RedLock 假设集群5个节点 P1.获取当前Unix时间,毫秒为单位 P2.依次从5台机器,相同的KEY 和 唯一性的Value请求锁,为每 More
REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案 缓存穿透:程序绕过缓存,不停的查询数据库 key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。 举例子:查询id=-1 这条数据库不 More
订单过期30分钟,不支付自动取消方案 1. 扫描数据库 最简单,粗暴的办法。开个任务,每3分钟扫描一次数据库 select orderid from table where .... 服务器开启crontab 定时扫描 优点:容易实现,支持集群服务 缺点: 1. 服务器消耗大 2. 存在延迟,并不是精确的3分钟 3. 如果订单量很大,比如1000万条没有付款,数据库压力很大 2. JDK延迟 More
1 什么是JVM 1.1 定义: JVM:Java Virtual Machine 直接翻译java虚拟机,就是java虚拟了一个机器,安装在你的电脑上,java跨平台属性全靠JVM Java Runtime Environment (JRE) is the implementation of the Java Virtual Machine (JVM). JVM analyze the bytecode, interprets it, and execute the same bytecode to display the output. JRE是一个JVM的 More
寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。) 堆:存放所有new出来的对象。 静态域:存放静态成员(static定义的) 常量池:存放字符串常量和基本类型常量(public More
Java中对象和对象引用的区别,引用、指向是什么意思 new Person(); //一个对象 Person p1 = new Person();//p1 是一个对象的引用 P1指向那个对象new Person() Java的变量分为两大类:基本数据类型和引用数据类型。 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量,其他变量都是引用数据类型,如类、接口 More
栈内存 堆内存 基础类型,对象引用(堆内存地址) 由new创建的对象和数组 存取速度快 相对于栈内存较慢 数据大小声明周期必须确定 分配的内存由java虚拟机自动垃圾回收器管理。动态分配内存大小 共享特性栈中如果有字符串,则直接引用 如果没有,开辟新的空间存入值 每new一次在堆内存中生成一个新的对象。 创建之后值可 More
小的时候,只有一台服务器,把程序,文件,数据库丢在一起 2. 流量变大了,买了三台服务器,把程序,文件,数据库分开 3. 为了加速,开始加入缓存服务器组,redis,memcached 等 4. 流量进一步增加,开始用负载均衡,把应用服务器,改为一组,使用LVS,NGINX减少单机应用压力 5. 数据库进行读写分离,主库负责写,多台从库负责 More