Effective Java Notes – Item 1

51icaskfpal-_sx402_bo1204203200_

Item 1: Consider static factory methods instead of constructors

Pros:

1. unlike constructors, they have names.

2. unlike constructors, they are not required to create a new object each time they’re invoked.

3. unlike constructors, they can return an object of any subtype of their return type.

4. the class of returned object can vary from call to call as a function of the input parameters.

5. the class of the returned object need not exist when the class containing the method is written.

Cons:

1. classes without public or protected constructors cannot be subclassed.

2. they are hard for programmers to find.

 

Donate $5 to me for a coffee with PayPal and read more professional and interesting technical blog articles. Follow me @Yaoli0615 at Twitter to get latest tech updates.

Advertisements
Posted in CS Research&Application, Uncategorized | Tagged | Leave a comment

iOS Development Blogs I read

ios-apps-development

Ray Wenderlich

tutorials, code examples

https://www.raywenderlich.com/

 

iOS Dev Weekly

weekly iOS development tips

https://iosdevweekly.com/

 

NSHipster

Hard code development skills

https://nshipster.com/

 

Objc.io

Advanced development skills

https://www.objc.io/blog/

 

 

Donate $5 to me for a coffee with PayPal and read more professional and interesting technical blog articles. Follow me @Yaoli0615 at Twitter to get latest tech updates.

Posted in CS Research&Application, iOS, Uncategorized | Tagged , , , | Leave a comment

Redux Notes

spaces2f-l5k1i1wsuqmz8eceuwg2favatar

What is Redux?

A predictable state container (database like) for javascript apps.

Why Redux?

It helps you write apps which behave consistently and run in different environments like client, server and native, and also very easy to test.

How to Redux?

The whole state of the app is stored in an object tree inside a single store.

Emit an action is the only way to change the state tree and the action is an object describing what happened.

Pure reducers is to specify how the actions transform the state tree, it accepts state and action as parameters, but it doesn’t have any side effect, no arguments mutations, no API calls and routing transactions, no surprise, just calculation.

Terminology:

Action: payload (type, text, etc.) to send data from app to store and use store.dispatch().

Reducers: specify how application states change in response to actions sent to the store (how app state change happens, (previousState, action) => newState). Passed to Array.prototype.reduce(reducer, ?initialValue).

Store: hold the state and takes care of calling reducer when dispatch an action. (only one single store, use reducer composition if need multiple store)

Data Flow: strict unidirectional data flow. (all data in the application follows the same lifecycle pattern, making the logic of app more predictable and easier to understand)

Three Principles:

Single source of truth

The state of the whole application is stored in an object tree within a single store.

State is read only

The only way to change the state is to emit an action, an object describing what happened.

Changes are made with pure functions

To specify how the state tree is transformed by actions, you write pure functions.

 

 

Donate $5 to me for a coffee with PayPal and read more professional and interesting technical blog articles. Follow me @Yaoli0615 at Twitter to get latest tech updates.

 

 

Posted in CS Research&Application, Uncategorized | Tagged , | Leave a comment

Spring in Action Notes

spring-framework

1. Dependency Injection (DI): decouple, wiring, tie software components together loosely

 

2. Aspect Oriented Programming (AOP): promote separation of concerns in software system

 

3. By default, all beans in Spring are singletons.

 

4. Three primary ways to wire beans together in Spring:

Automatic configuration

Explicit Java-based configuration

Explicit XML-based configuration

 

Donate $5 to me for a coffee with PayPal and read more professional and interesting technical blog articles about web and mobile development.
Follow me @Yaoli0615 at Twitter to get latest tech updates.
Resources:

Core Java Volume I–Fundamentals (10th Edition) (Core Series)

Core Java, Volume II–Advanced Features (10th Edition) (Core Series)

Test-Driven Java Development

Java Concurrency in Practice

Java: An Introduction to Problem Solving and Programming (7th Edition)

Java 9 for Programmers (Deitel Developer Series)

Java SE8 for the Really Impatient: A Short Course on the Basics (Java Series)

Core Java for the Impatient

Java: The Beginners Guide for every non-programmer which will attend you trough your learning process

Java Deep Learning Essentials

Machine Learning in Java

Learning Reactive Programming With Java 8

Java 9 Programming By Example

Thinking in Java (4th Edition)

The Java EE Architect’s Handbook, Second Edition: How to be a successful application architect for Java EE applications

Java Artificial Intelligence: Made Easy, w/ Java Programming

Posted in Book/Movie/Music, CS Research&Application, Uncategorized | Tagged , , | Leave a comment

Softwares in MacOS

software-development-mac-os-user-interface-os-x-10-10-yosemite-apps

iTerm

1Password

Postman

Docker

Tunnelblick

Sequel Pro

SmartGit

Netease Music

Posted in CS Research&Application, Uncategorized | Tagged , | Leave a comment

Blockchain Dev – EOS

Bootstrap Demo – set up a local testnet

https://vimeo.com/252935097

 

Standardize Currencies on EOS.IO Software

https://vimeo.com/253072484

 

Performance Demo of EOS.IO Software

https://vimeo.com/253062268

 

EOS HowTo videos

https://vimeo.com/channels/eosiohowto

 

EOS Developers Telegram Channel

 

EOS中文社区

https://eosfans.io/

 

EOS contracts: Development with the CLion IDE

Posted in CS Research&Application, Uncategorized | Tagged | Leave a comment

JavaEye老炮杂谈之一——比特币和区块链(摘录)

Trustno1v2

 

一直想请教一下@trustno1v2,对比特币和区块链是什么观点?想听听你的理解,雪球上好像没看到你有相关讨论。因为有利于跨国的资金投送么?汇兑方便

 

对投行业务有帮助吧

对金融交易有帮助,区块链还是不错的

 

流通显然不是货币的前提条件。比如弗里德曼的那个很著名的太平洋岛国的故事

 

南太平洋岛国用石头作为货币,历史上某次岛民在外海踩到一块巨石,将它运回来的途中船只沉默,石块跌入大海,但是岛民依然以此石块作为基本货币单位直到白人殖民者的到来。这个石头显然是无法流通的东西,但是依然是某种货币。

实际上,包括黄金,很大程度上都是不流通的

 

货币即信用,信用即债务。我今天欠你100元,给你打一个欠条。如果有足够多的人相信我的品行,那么这个欠条既是货币。

你可以用这个欠条,去认识我的人哪里换任何东西,当然这些人会根据和我的关系远近亲疏,给出不同的折价:比如我老婆那里,大概可以换满100块,如果在robbin那里应该只能换50

 

不是存款创造了货币,而是贷款创造了货币。实际上这个原理,跟多线程是非常类似的

 

《人类简史》的第十章 金钱的味道,讲得很简单易懂

 

银行和金融系统类似一个极端高效的线程切换系统,举个栗子:

比如,你有一笔闲钱1000块,你觉得最近不会太用的着,于是你存入了银行,这个时候银行户头上有多少钱呢?实际上,有1000元资产,同时有1000元负债。这个时候A想要用钱了,去银行借500块,那么这个时候,银行现金流出去了500块,但是资产是多少呢是1500块,负债也是1500块,但是整个市场上,现金一共多少呢?不过还是1000块,但是整个社会的货币膨胀到了1500块。这1000块的现金,其实好比就像是电脑的内存,而每一个交易实体,则类似操作系统的进程,有些实体在某些时候放弃内存资源,有些实体在某些时候争用资源,银行在期间进行高效的资源调度,使得所有实体的货币流动看上去都是无摩擦的,但同时他又是高效的。如果没有信用和债务,那么社会的货币体系就会像批操作系统一样,一批用完,下一批继续用,前现代社会就是这样的。比如大清为何打不过日本,因为很简单,大清的财政靠的是税收,而日本的财政靠的国债,税收就是一个典型的批操作系统,农民赚完分一部分给地主,地主赚完了分一部分给衙门,而国债显然是比这个更家高级,所有国民暂时不用的资金都融给了政府,一个是批操作系统,一个是多线程操作系统,怎么可能打的过?

 

实际上就是一个多线程模型,所谓的挤兑,就是所有的进程同时争用资源。

银行干的活,拿着A的钱借给B,B如果暂时不用再存回银行,银行继续拿着B的钱借给C。换来换去,如果没有外部影响,总共只有A当初存进来那么点钱,但是轮换几次货币规模可能扩张3-4倍

货币规模的扩张的唯一限制,不过是整体社会的预期收益率,就是说银行觉得贷款出去能不能赚到钱,能赚到多少钱的问题。如果银行普遍预期整体社会的收益率下降,那么银行就不会继续发放贷款,换而收缩资产负债表。现在日本,欧洲,所谓的负利率就是这样,整体社会的收益率为0,银行不愿意贷款,结果央行说不行,你不贷款我就扣你钱

说到底,货币总体增量对应的是社会财富的增加

对于bitcoin 这种上限固定的商品,除非整个世界退回工业革命之前,否则几乎没有任何货币意义吧

当然作为通缩型的投资品,那是另外一回事情

参与通缩型的投资,本质上是参与旁氏,要么不完,要么早完

从投资的角度说,知道有泡沫,第一时间就是要冲进去

 

晚了就不要进去了[偷笑],坐等下一波

 

赚旁氏的钱,等于赚傻逼的钱吧,傻逼够多就行

 

我一直不喜欢比特币的原因比较奇怪,因为它是通过毫无意义的浪费电力,制造出来的……

 

呵呵黄金更不环保吧。有一句名言叫做:人类把黄金从地里开采出来,然后再埋入地下,除此之外毫无用处

 

所以我听说区块链可以做有意义的计算时,感觉多半有钱途。

 

对于金融交易来说区块连还是有意义,这玩意会干掉交易所

狗门之类的的dark pool trader 早就看交易所不顺眼了吧

 

干掉交易所的条件是有足够多trader,我对私有链完全没有兴趣

至于比特币是不是货币,我的态度是:它看着像个货币,用起来也像个货币,那么它就是货币….

 

不是。票据清算,这类集中式的交易服务,很消耗时间和资源

注意,主语,谁用起来

 

我们不能证明,一个东西是货币时它就不能是商品,所以比特币看起来像货币或商品,用起来象货币或商品,我们就可以大胆的猜测——它既是货币,也是商品

 

其实,广义上说所有可以交易的东西都是商品,如果一个东西不是商品,只是说明我们还没法将其货币化或者证券化而已

总结我所理解的三类观点:

T1:通缩是大问题,结果指向庞氏骗局

老庄:太费电了,不喜欢 🙂

国宁:不建议交易,因为涉及对赌未来,但是认可比特币的价值

不知道我理解的有没有问题 @trustno1v2 @庄表伟@上海 @lgn21st-吕国宁

 

功利性判断当然不是不可以,但问题是你的语境是是什么?转换语境其实是没有办法对话的。比如说大家在讨论,世界上最好吃的蛋糕是什么,你说我觉得最好吃的就是最好吃的。

显然你的回答不是大家要谈论的问题

 

我主要是关心比特币本身的未来,比如如果是旁氏,那早晚要完蛋

 

也许不一定,比如文物这类玩意,很难完蛋,虽然也是个旁氏

 

哦?还有长期存在的庞氏骗局?

文物怎么是旁氏呢?我们的定义可能不一样

 

通缩型物品取决于进入市场的交易人数的多寡吧。比如说,中国传统的艺术品,在很长时间里在世界上都没啥价值,八国联军抢了不少清宫画册去海外拍卖都没卖出什么价钱。只有东亚经济发达以后,东亚高净值人群增加,这类艺术品价格才水涨船高

BTC 最直接的威胁,大概就是量子计算和量子通信吧

这些也不是很遥远的事情,可能比AI更靠谱

中科大的量子通信已经做的非常好了 (今年建成京沪量子网络)

都已经实用阶段了

 

量子通信对比特币估计没啥影响,量子计算就不好说了

都量子纠缠了,还要算啥总帐呢?量子纠缠本来就不可串改

 

量子计算预计至少3-5年后,量子存储要10年后。目前量子计算还处于科研小范围环境,国内目前实现的是依靠量子网络进行秘钥传输,绝无泄密可能

 

DWAVE,google在用

 

这个和量子纠缠没关系吧,区块链解决的是分布式节点达成共识的问题

不需要达成共识啊,要啥共识,我传给你的,不可改变。所谓的共识就是大家认为这个玩意没被修改过

 

你是说用量子位记录所有比特币状态?这个难以想象,我有点跟不上你的思路了

@fsword@杭州 这不是我想的,是物理学里上个世纪就提出来的假想,叫薛定谔货币

 

PARK

本质上货币交换会被数字交换取代

 

要成为一种广泛使用的支付手段,数字货币须具备区别于电子货币、虚拟货币的显著特点,包括安全性、可控匿名性、周期性、不可重复性、系统无关性,并且要在开放互联环境中达到很高的交易性能(高并发交易量和海量数据处理效率)。

 

如何评价《加密货币和区块链(一):历史的重演》?

类比是一种很低效的分析问题方法,还是得回到本源。

南海泡沫,郁金香泡沫,互联网泡沫都是泡沫。那房价是不是泡沫?学区房是不是泡沫?

如果你说房价永远涨不算泡沫,那九十年代的海南房价为啥崩了?

如果分析成本,螺纹钢水泥卖的比白菜还便宜,那凭啥房子还那么贵?

如果分析使用价值,黄金的工业用途值得所有央行来搞黄金储备么?

是泡沫也好,不是泡沫也好,把自己的逻辑理顺了,再来说三道四。

 

记得15年牛市的时候,有一个同事洋洋得意的说中国股市是巨大泡沫,你看我说对了吧,我问他赚了多少?他说早知道是泡沫,所以从14年起就一分钱不投中国股市,没亏就是赚。我15年翻翻的都没乱说话,倒是这货喊了一年的空,还洋洋得意。我能说啥,只能说他牛逼啊。

 

在我看来,这个市场只有两种人,知道自己在赌什么的,不知道自己在赌什么的。

 

用闲钱风投BTC,并且用BTC币本位而非法币本位的,是真正BTC项目的信仰者,他知道自己在干什么。 另外在二级市场买卖并能够从波动中获利,这也是懂行的。

 

一直嚷嚷比特币会上天,想当价值投资者,结果买入被套就茶饭难安天天看着币价的;以及一直嚷嚷比特币会归0,比特币一跌就出来洋洋得意的。这都是不懂行的。只不过一个用价格永远涨来安慰自己被套只是暂时的。另一个用这玩意就是泡沫来抚平自己踏空时的焦虑。同样是不懂行的,洋洋洒洒写个历史故事来讽刺另外一群不懂行的,有意思么?

 

最后还想说一句,区块链是社会学革命,而非技术革命,技术并不新鲜,中本聪之于BTC顶多也是乔布斯之于苹果。他只是技术的组装者。 所以那些仗着对区块链底层算法了如指掌就指点江山的,还是多了解了解人性吧。

 

Reference:

https://zhuanlan.zhihu.com/p/20882356

如何评价《加密货币和区块链(一):历史的重演》?

 

 

Posted in CS Research&Application, Uncategorized | Tagged , | Leave a comment