Specs

StackOverflow 周报

孤人 提交于 2020-04-29 18:59:35
这是 Stack Overflow 第三周周报,由于本周周四外出,所以只有三篇内容。两篇 Java、一篇 Python。公众号 「渡码」 为日更,欢迎关注。 DAY1. 枚举对象 == 和 equals 区别 我们在比较枚举常量时可以使用 == 运算符或者 equals 方法,如: 先考虑第一个问题:为什么可以用 == 判断枚举常量相等? 我们都知道判断对象的相等应该用 equals 方法,== 只是判断对象的引用是否相等,枚举常量能够使用 == 判断相等是因为枚举常量除了定义时初始化的对象外,没有其他实例。例如:常量 APPLE 在定义时已经初始化,并且运行时不会再有其他的 APPLE 枚举常量。根据 JLS 文档,Java 通过以下四点保证枚举常量不存在定义之外的实例 试图显式实例化枚举类型是编译时错误,例如:new FRUITS() Enum 类中的 clone 方法确保永远不能克隆Enum常量,看看 clone 方法可以看到直接抛出 CloneNotSupportedException 异常 序列化机制的特殊处理确保不会因为反序列化而创建重复的实例 禁止枚举类型的反射实例化 因为枚举常量只有一个实例,因此可以直接用 == 判断枚举实例的相等。如果我们看下 equals 源码就可以发现它也是用 == 进行判断,所以我们考虑第二个问题:使用 == 和 equals 的区别是什么

Java面试系列第1篇-基本类型与引用类型

被刻印的时光 ゝ 提交于 2020-04-26 19:30:45
这篇文章总结一下我认为面试中最应该掌握的关于基本类型和引用类型的面试题目。 面试题目1:值传递与引用传递 对于没有接触过C++这类有引用传递的Java程序员来说,很容易误将引用类型的参数传递理解为引用传递,而基本类型的传递理解为值传递,这是错误的。要理解值传递与引用传递,首先要理清值传递、引用传递与指针传递三个概念。 值传递与引用传递最重要的就是看在传递的过程中,值是否发生了复制。在Java中没有指针的概念,但是引用类型做为参数进行传递时,JVM将其实现为指针传递,那么重点就是搞清楚指针传递到底是值传递还是引用传递了。指针在传递时也会复制,所以是值传递,Java中不存在引用传递。 面试题目2:int类型的范围 Java中4种基本类型表示的范围如下图所示。 Java中不能明确指示某个数为无符号类型,所以最高位一般为符号位。拿占一个字节的byte来说,由于最高位需要表示符号,所以只能用剩下的7位来表示数。所以最大可表示的数为 0111 1111(二进制) max = (2^0+2^1+2^2+...+2^6) = 127 最小可表示数的范围用二进制表示应该为: 1111 1111(二进制) 但是对于计算机来说,负数其实是用补码表示的,也就是反码加1,所以在计算机中存储的二进制为1000 0001(补码),这个值才是-127。 我们要对待一种特殊情况,如下: 1000 0000(原码)

CDN: trunk URL couldn't be downloaded: *** Response: Couldn't connect to server

廉价感情. 提交于 2020-04-25 14:56:56
进行swift开发,执行pod install时出现 CDN: trunk URL couldn't be downloaded: *** Response: Couldn't connect to server 错误,可以尝试如下两种解决办法: 1. 执行 pod repo remove trunk 命令,移除掉trunk源就行了 2. 打开你工程的podfile文件,在最顶部添加 source ' https://github.com/CocoaPods/Specs.git' 来源: oschina 链接: https://my.oschina.net/dong706/blog/4053403

Java中synchronized的内存理解

China☆狼群 提交于 2020-04-20 18:13:08
synchronized 具有使每个线程依次排队操作共享变量的功能。这种同步机制效率很低,但 synchronized 是其它并发容器实现的基础。 一、锁对象及 synchronized 的使用 synchronized 通过互斥锁(Mutex Lock)来实现,同一时刻,只有获得锁的线程才可以执行锁内的代码。 锁对象分为两种: 实例对象(一个类有多个)和 Class 对象(一个类只有一个)。 不同锁对象之间的代码执行互不干扰,同一个类中加锁方法与不加锁方法执行互不干扰。 使用 synchronized 也有两种方式: 修饰普通方法,锁当前实例对象。修饰静态方法,锁当前类的 Class 对象。 修饰代码块,锁括号中的对象(实例对象或 Class 对象)。 class Xz { // 类锁 public static synchronized void aa() { for ( int i = 0; i < 10; i++ ) { System.out.println( "aaa" ); try { Thread.sleep( 1000 ); } catch (InterruptedException e) { e.printStackTrace(); } } } // 对象锁 public synchronized void bb() { for ( int i = 0; i <

80.redis集群与搭建配置与操作

家住魔仙堡 提交于 2020-04-14 01:34:12
【今日推荐】:为什么一到面试就懵逼!>>> 21.22 redis集群介绍 21.23/21.24 redis集群搭建配置 21.25 redis集群操作 扩展 redis 哨兵https://segmentfault.com/a/1190000002680804 http://www.cnblogs.com/jaycekon/p/6237562.html 21.22 redis集群介绍 redis在官方叫做redis- cluster(3.0版本之后才支持的架构)。作用于单台机器不能够满足存放大量的数据,所以要多台机器构成一个大集群,用来解决存储空间、查询速度、负载太高等类似瓶颈的问题。 redis-cluster是分布式的集群,支持横向扩展,就是增加节点仅仅在配置文件中,加入这个集群就可以了。 codis是第三方的,针对redis集群的另一个解决方案。codis类似于lvs做负载均衡一样,用的是路由这样的技术 1.多个redis节点网络互联,数据共享 并不是说在一个机器上写,就能同步到其他机器上去。比如我们第一次写可能在A节点,第二次写可能在B节点,也就是说我们写了一个键值,他可能存在于A节点也可能存在于B节点。并不是这个数据A上有B上也有 但是我们在写数据的时候,都是会告诉我们在哪个机器上查询和存取的 2.所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用

Java内存可见性volatile

核能气质少年 提交于 2020-04-13 16:03:04
【今日推荐】:为什么一到面试就懵逼!>>> 概述 JMM规范指出,每一个线程都有自己的工作内存(working memory),当变量的值发生变化时,先更新自己的工作内存,然后再拷贝到主存(main memory),这样其他线程就能读取到更新后的值了。 注意:工作内存和主存是JMM规范里抽象的概念,在JVM的内存模型下,可以将CPU缓存对应作线程工作内存,将JVM堆内存对应主存。 写线程更新后的值何时拷贝到主存?读线程何时从主存中获取变量的最新值?hotspotJVM中引入volatile关键字来解决这些问题,当某个变量被volatile关键字修饰后,多线程对该变量的操作都将直接在主存中进行。在CPU时钟顺序上,某个写操作执行完成后,后续的读操作一定读取的都是最新的值。 内存可见性带来的问题 如下代码片段,写线程每隔1秒递增共享变量counter,读线程是个死循环,如果读线程始终能读取到counter的最新值,那么最终的输出应该是 12345。 public class App { // 共享变量 static int counter = 0; public static void main(String[] args) { Thread thread1 = new Thread(() -> { int temp = 0; while (true) { if (temp !=

CocoaPods安装 详细

梦想与她 提交于 2020-04-10 14:30:15
开始安装 1 安装需要⽤到Ruby,虽然Mac⾃带了Ruby,不过版本有点⽼了,最好更新⼀下 sudo gem update --system 2 接下来输⼊系统密码就可以安装了,输⼊密码时不会显⽰的,输完回车就⾏了 3 因为Ruby的软件源rubygems.org被屏蔽了,所以要更换源 gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ 4 接下来查看下源路径是否更换了 gem sources -l 5 接下来安装Cocoapods了 sudo gem install cocoapods 6 不过有可能出错(我就是出错了),出错的话执⾏下⾯的命令 sudo gem install -n /usr/local/bin cocoapods 7 安装cocospod pod setup 下载完就⼤功告成了(没有⽹络问题就可以开始使⽤了). 如果失败继续下⼀种⽅案 8 如果是下⾯的错误,说明⽹络导致下载时间⾮常长,所以,你可以在 sudo gem install -n /usr/local/bin cocoapods 命令后直接执⾏ git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos

a-practical-guide-to-writing-technical-specs

萝らか妹 提交于 2020-04-10 13:03:56
目录 Contents of a technical spec 1. Front matter 2. Introduction Solutions Further Considerations Success Evaluation Work Deliberation End Matter https://stackoverflow.blog/2020/04/06/a-practical-guide-to-writing-technical-specs/?utm_source=Iterable&utm_medium=email&utm_campaign=the_overflow_newsletter Contents of a technical spec There are a wide range of problems being solved by a vast number of companies today. Each organization is distinct and creates its own unique engineering culture. As a result, technical specs may not be standard even within companies, divisions, teams, and even among