读书笔记

重学JS 1

浪子不回头ぞ 提交于 2021-02-12 06:51:14
js 对象:unfined null bool number string object function 可以调用type of 返回类型. undefined null "" 0 转成逻辑值 为false. 其中只有 undefined == null. js 比较分为数据值,与数据类型的比较,比如"234 " == 234 这个是比较数据值, 所以 返回的是true.但是他们的数据类型并不相等.可以通过"234"===234 这个返回的是false. js 中没有对象的概念,随时都可以 var body = {}; body.hand="left" body.leg="ewl".灵活的对象与属性的关系. function 一种类型。typeof(myfunction)返回的将是function数据类型. var functionA = function(){ alert("come in world"); } 在js 中代码也是一种数据,同意可以被赋值和修改. function 有 caller property , function whereIam(){ aler("call me who"+ whereIam.caller) } function oschinaCall(){whereIam();} oschinaCall(); // call me who

《Effective Java》读书笔记--创建和销毁对象

白昼怎懂夜的黑 提交于 2020-03-01 22:46:06
考虑用静态工厂方法代替构造函数。 当我们在写一个工具类时,是不希望用户将该类实例化的,所以应该定义一个private的构造函数,而不 是将类声明成abstract,因为这样用户可以继承该类,子类可以被实例化。 String类型是非可变对象,如下代码中,s指向的String的值是不能被更改的,当s重新赋值时,s就指向另一个String对象。 String s = new String("silly"); 上句代码每次执行都会创建一个新的String实例,建议用 String s = "silly";代替上一句,这样的话,对于同一个虚拟机中运行的代码,每次执行该句时,因为它们包含相同的字符串字面常量"silly",该对象就会重用,避免创建重复对象。 过期的引用应该手动将它赋值成null,这有两个好处: 让垃圾回收机制及早清理掉这些“垃圾”,提高程序的性能。 如果它们在以后又被错误地解引用,则程序会立即抛出NullPointerException异常,而不是悄悄的错误运行。 不要把JAVA的finalizer当成C++的构造函数。因为JAVA的对象不可达时,finalizer函数不确定何时才能执行。不建议把释放资源的操作写在finalizer中,应该显式的提供一个close()函数给用户手动释放资源。 来源: oschina 链接: https://my.oschina.net/u

《Effective Java读书笔记》--类和接口

Deadly 提交于 2020-02-28 11:42:57
使类和成员的可访问能力最小化 应该尽可能使每一个类或成员不被外界访问。 如果一个包级私有的顶层类或者接口只是在某一个类的内部被调用到,应该考虑使用嵌套类实现。 确保public staitc final所引用的对象是不可变的。 public static final的数组几乎总是错误的: import java.util.Arrays; import java.util.Collections; import java.util.List; public class Test { public static void main(String[] args) { for (int i = 0; i < foo.VALUES.length; i++) { foo.VALUES[i] = new Integer(0); } for (int i = 0; i < foo.VALUES.length; i++) { System.out.println(foo.VALUES[i]); } } } class foo { public static final Integer[] VALUES = { new Integer(0), new Integer(1), new Integer(2), new Integer(3) }; } 虽然VALUES被定义成final

《Effective Java读书笔记》--序列化

狂风中的少年 提交于 2019-12-20 10:33:35
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 谨慎地实现Serializable 实现Serializable有以下几点风险 实现Serializable的类一旦发布,则“改变这个类的实现”的灵活性将大大降低。 增加了错误和安全漏洞的可能性。 测试负担会增加。 为了继承而设计的类应该很少实现Serializable,接口也应该很少会扩展它。 保护性地编写readObject方法 不严格的说,readObject是一个“用字节流作为唯一参数”的构造函数"。所以在写readObject时,就想象自己正在编写一个构造函数。 例如,在一个类的构造函数中,对参数的有效性做了检查,并且也做了保护性拷贝的话,readObject中也应该实现该逻辑。Period类(参考 http://my.oschina.net/u/1453800/blog/263037#OSC_h3_2 )的readObject可以写成这样: private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException { s.defaultReadObject(); start = new Date(start.getTime()); end = new Date(end.getTime()); if

2016这一年读过的那些书

时间秒杀一切 提交于 2019-12-09 09:50:32
1、 《超越自己》一位父亲写给儿子的116封信,刘墉的亲子哲学。 2、 《看见》柴静,弱女子不弱 3、 《崔永元-我有一事,生死与之》这本书并不是崔永元自己写的书,印象中他自己应该没有出过任何书籍,认识这样的崔永元 4、 《褚时健传》什么叫强人,褚时健算一个。玉溪卷烟厂厂长到褚橙,中间是牢狱啊,75岁又去创业,85岁亿万富翁,强人就是强人啊。看人生跌宕起伏。 5、 《野心优雅》不优雅,但野心。任志强也是强人一个。 6、 《一个人的朝圣》执着,信念、友情、亲情 7、 《晚清最后十八年》与历史课本不一样的历史,不一样的袁世凯,不一样的你所了解的人物。还有一本《晚清七十年》唐德刚写的(自己还没有看),再版的叫做《从晚晴到民国》 8、 《悟空传》今何在,这本书是听老婆介绍的,有些语句荡气回肠。 我要这天,再遮不住我眼, 要这地,再埋不了我心, 要这众生,都明白我意, 要那诸佛,都烟消云散! 我们活着,就要在这天地间留下自己的痕迹。 9、 《中国的人口和城市》这是知乎的选集,看到这本书,才知道知乎也出书的,他们有个 知乎【盐】系列,都挺不错。 10、 《小狗钱钱》这本还有另外的漫画版,就是儿童版本的。很好的入门理财书籍,童话色彩。 11、 《菜鸟定投笔记》基金定投,另外他们有微信号,好规划 12、 《指数基金投资指南》基金定投,如何选择基金,操作方式 13、 《简七理财,定投基金》简七

一个程序员的读书笔记:程序设计的反思

廉价感情. 提交于 2019-12-03 22:29:57
刚开始编程的时候是在高中,那个时候计算机课上老师教的是pascal。一种典型的面相过程的语言。那个时候懵懵懂懂的认为:程序还是一个蛮神奇的东西,敲几个英文字符进去,就能够有反馈。即使这个反馈只是非常简单的输出了一个“Hello World!”。 而大学开始比较系统的学习计算机这个东西。但是现在回想起来,貌似没有系统的学过程序设计这个东西啊。即使上了很多叫做《XXX程序设计》的课程之后,对于程序设计这个东西还是有种雾里看花的感觉。而且学的都是像汇编了,C了这样的一些比较底层的语言。主要是语法吧,设计层面的东西真的很少。造成很长一段时间内,我对程序设计的认知停留在高中pascal的水平,程序设计就是你输入个东西,然后设计一系列串行的逻辑,然后等着输出。 后来上了一个叫做《C++面向对象设计》的课,在上课之前以为这是一个高大上的课程,结果到最后老师把c++讲成了一个好用的c,比c优秀的地方主要就是在加了一些支持面向对象的语法。现在回想一下,那些叫做《XXX程序设计》的课程,基本上都是一些语言课程,貌似和程序“设计”这个东西有点不着边际。而也未能让我,对于“面向对象”或者“面相过程”构建起基本的概念。 写程序的时候,更多还是停留在pascal那个层次中。串行的逻辑。那个时候的梦想就是能够读完knuth四卷本的《The Art of program》还有他为这本书写的辅导书《基本数学》

《java7核心技术与最佳实践》读书笔记之 multi-thread

那年仲夏 提交于 2019-12-03 05:58:06
chapter10 多线程与并发编程 操作系统中,进程process和线程thread,process是一个计算机程序中运行实例。一个计算机可以创建多个process,这些process运行状态各不相同,有自己的独立的地址空间,包括程序内容和数据。它们间是互相隔离的。process拥有各种资源和状态信息,包括打开的文件,子进程和信号处理器等。thread表示的是程序的执行流程,是cpu调度执行的基本单位unit。thread有自己的程序计数器,寄存器,堆栈和帆等。同一个进程中的线程共享相同的地址空间,同时共享进程所拥有的内在和其他资源。引入thread来提高程序的运行性能。一个程序中主要存在cpu计算和io操作。io操作相对cpu操作来说比较耗时,而且很多是阻塞式的。当一个thread所执行的io操作被阻塞时,同一进程中的其他thread可以使用cpu来进行计算。不同os和编程语言中对thread的使用方式有很大的区别,所以对于跨平台的多线程程序来说是一个很大的挑战。但java平台通过jvm解决了跨平台的问题,使得相同api开发的程序在不同平台上都能够正确运行。 java.lang.Process /java.lang.ProcessBuilder类是进程,java.lang.Thread是表示线程。在JVM启动后,通常只有一个普通的thread来运行程序的代码

读书笔记-大型分布式网站架构-设计与实践【陈康贤】

只愿长相守 提交于 2019-12-02 19:48:13
1. 面向服务的体系架构(SOA) HTTP协议的工作方式与HTTP网络协议栈的结构 如何实现基于HTTP协议和TCP协议的RPC调用,它们之间的有何差别,分别适应何种场景 如何实现服务的动态注册和路由,以及软负载均衡的实现 1.1 基于TCP协议的RPC 1.2 基于HTTP协议的RPC 1.3 服务的路由和负载均衡 1.4 HTTP服务网关 2. 分布式系统基础设施 分布式缓存memcache的使用及分布式策略,包括Hash算法的选择 常见的分布式系统存储解决方案,包括MySQL的分布式拓展、HBase的API及使用场景、Redis的使用等 如何使用分布式消息系统ActiveMQ来降低系统之间的耦合度,以及进行应用间的通信 垂直化的搜索引擎在分布式系统中的使用,包括搜索引擎的基本原理、Lucene详细的使用介绍,以及基于Lucene的开源搜索引擎工具Solr使用 2.1 分布式缓存 2.2 持久化存储 2.3 消息系统 2.4 垂直化搜索引擎 2.5 其他基础设施 3. 互联网安全架构 场景的Web攻击手段和防御方法,如XSS、CRSF、SQL注入等 常见的一些安全算法,如数字摘要、对称加密、非对称加密、数字签名、数字证书等 如何采用摘要认证方式防止信息篡改、通过数字签名验证通信双方的合法性,以及通过HTTPS协议保障通信过程中数据不被第三方监听和截获 在开放平台系统下

【读书笔记】第三章 大型网站核心架构要素

ぐ巨炮叔叔 提交于 2019-12-02 03:56:42
#第三章 大型网站核心架构要素 软件架构:有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计 软件架构需要关注的几个方面: 系统功能需求(最基本的) 性能 可用性 伸缩性 扩展性 安全性 ##3.1 性能 ##3.2 可用性 对于大型知名网站,可用性要达到99.99%。 网站高可用架构的前提是:必然会出现服务器宕机,而高可用设计的目标就是当服务器宕机的时候,服务或应用依然可用。 高可用的主要手段是 冗余 ,应用部署到多台服务器上同时提供访问,数据存储到多台服务器上互相备份。 其他:软件开发过程保证质量,自动化测试,自动化发布,灰度发布等。 如何衡量一个系统架构设计是否满足高可用的目标? 就是假设系统中任何一台或多台服务器宕机时,已经出现各种不可预期的问题时,系统整体是否依然可用。 3.3 伸缩性 伸缩性:通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。 衡量伸缩性的主要指标:是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器之后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制。 对于 应用服务器集群 ,只要服务器上不存数据,所有服务器都是对等的,通过使用合适的负载均衡设备就可以向集群中不断加入服务器。 对于 缓存服务器集群 ,新加入的服务器会导致缓存路由失效

ClassNotFoundException和NoClassDefFoundError的区别

倖福魔咒の 提交于 2019-12-01 21:17:34
正如它们的名字所说明的: NoClassDefFoundError是一个错误(Error),而ClassNOtFoundException是一个异常 ,在Java中错误和异常是有区别的,我们可以从异常中恢复程序但却不应该尝试从错误中恢复程序。 ClassNotFoundException的产生原因: Java支持使用Class.forName方法来动态地加载类,任意一个类的类名如果被作为参数传递给这个方法都将导致该类被加载到JVM内存中,如果这个类在类路径中没有被找到,那么此时就会在运行时抛出ClassNotFoundException异常 。 要解决这个问题很容易,唯一需要做的就是要确保所需的类连同它依赖的包存在于类路径中。当Class.forName被调用的时候,类加载器会查找类路径中的类,如果找到了那么这个类就会被成功加载,如果没找到,那么就会抛出ClassNotFountException,除了Class.forName,ClassLoader.loadClass、ClassLOader.findSystemClass在动态加载类到内存中的时候也可能会抛出这个异常。 另外还有一个导致ClassNotFoundException的原因就是:当一个类已经某个类加载器加载到内存中了,此时另一个类加载器又尝试着动态地从同一个包中加载这个类。