2020年8月读书心得

起因

起因是我在小专栏中看到了《美港股投资入门指南》 by 寂小桦,就饶有兴趣的看起来。
可能很多人都渴望在股票的牛市里分到一杯羹,我也是其中一个。如果说仅仅是作为一个业余的投资者,恰当的股票投资,也能够为投资者带来可观的被动收入,这便是我对股票开始有兴趣的原因。专栏中还有一篇专门推荐《给股票投资新手的书单》。十分值得参考,《股票大作手回忆录》便是我读完的书单里的第一本书。

导读

能看对波动方向的人很多,能看对波动并坚持不动的人才真正厉害。但是,一个股票投资者只有牢牢掌握了这个诀窍才能赚大钱。而这是最难学的。

这里我就直接拿作者举例了。就算强如利弗摩尔这样的操盘手,在他的投资生涯当中也是几经沉浮,不断地上演破产又东山再起又破产的故事。原因恰恰都是因为他没有坚守自己的投资原则。本书没有太多的干货,但是不乏十分具体的操盘过程和细节,而作者始终想告诉读者的其实是,交易方法任何人都可以学习,而获得什么样的结果,最终取决于对自身的认知和心性。

投资从无新鲜事。所有的一切都是轮回。

此话无需多言,你品,你细品。

股市永远是对的

真正打败我的,是我没有继续坚持我的交易方法。换句话说,只有当市场上有先例支持我的交易计划时,我才做交易。

任何投资都不应该仅凭主观意识下决定,而是应该通过市场和行情,甚至在有必要的时候,交上一笔”学费“,以证明当下的判断是对是错。不要因为跌了几个点,就慌乱了阵脚,相信自己的判断才是最重要的。

在正确的时机买进卖出

我从不介意告诉别人我对市场的看法,无论是看好还是看坏。但也仅仅于此,我从不会告诉别人是买进还是抛出具体的某种股票。

作者在文中提到,许多人不会听取他对股市的分析和看法,他们只希望确切地知道到底该买什么,抛什么。”而和市场打交道,就应该默默无闻,一声不吭。否则,只会招来非议和提防。这对投资没有任何好处“

真正的股市之王

当投资机会来临时,不要畏首畏尾、裹足不前。如果有利可图,而风险又在可承受的范围内,就应果断地采取行动。—— 索罗斯

我一直遵循一条古老的交易原则,那就是当股票第一次上穿100美元、200美元或300美元时,上涨的趋势是不会就此止步的,只会升高更多。因而只要它一上穿关键点你就买,肯定能赚上一笔,胆小的人不喜欢在股价创新高时买入股票,但我却有类似的“史实”来指引我在这个时候大胆买入。

对我来说,赚钱的方法就是行动起来,而赚大钱的方法却是要在机会来临的时候做出正确的选择。在这一行业你要理论结合实际,绝不能只做书面研究,而是既要做一个研究者,又要做一个投机者。

个人感觉,作者的经验,仅适用于作者本人。因为文中其实多次提到,利弗摩尔经常会有要抛出或买进某只股票的预感,值得注意的是,这种预感不是空穴来风的。或许是因为他几十年作手生涯积累的经验和直觉,在潜意识中告诉了他答案。所以作者想告诉我们的是,如果建立起了自己的交易原则,且行情风险又恰好都在能接受的体系之内,就应该相信自己,果断采取行动,抓住赚取利润的机会。

别让希望和恐惧伤害你

在所有游戏中,唯一真正需要在行动前做好准备的恰恰是准备本身,有些人在用他一半的财产冒险时,用来准备的时间还没有买一辆平价汽车考虑的时间久。

在建仓的过程中,总会先亏掉5万或6万美元去测试市场。看起来这种测试的代价确实不小,但事实并非如此,当真正的行情开始时,这点亏损很快就会赚回来,只有把握住正确的机会才能赚到钱。

我对自己的交易方法已经说得很清楚了,只在稳操胜券的时候才下大注,而犯错的时候只亏损一点探测性的赌注,这种做法相当英明。如果按我说的方法去交易,就可以始终持有有利润的头寸,回报也总是最为丰厚。

大多数情况下,股市并不会像投机者心里一厢情愿所期盼的方向发展,如果心中有了预测方向,接下去要做的就应该是通过少量下注和跟踪来论证自己的假设,检验市场的走势和自己的判断是否一致或者相悖,不管结局是哪一种,按做好计划,按计划执行,大概率地情况下,能够赚取到不错的利润,或者规避掉可能的损失。永远不要去打无准备的战争,不然结局可能会很惨。

投机商真正的敌人往往是自己内心的想法,它与人性的希望和恐惧融为一体。在交易中,当市场对你不利时,你总是希望这一天早日结束,但你失去的总是比你预想的要多;当市场一旦按你的方向走,你就会心生恐惧,担心第二天你的利润就没有了,于是迅速终结交易。恐惧使你没有勇气赚得即将到手的钱,一个成功的交易商必须要战胜这两种根深蒂固的本能,打消本能的冲动。别人认为充满希望的时候警惕谨慎,而别人徘徊犹豫的时候大胆出手。他必须时刻警惕他的亏损会让自己无力承受,也必须希望他的利润能迅猛增长。平常人对股票所持有的赌博观念是十分错误的。

每个人都应该有自己的交易原则和止损线,而不应该让贪婪和恐惧侵占了大脑中所有的理智。

交易者无法离开市场

对于业余投资者来说,非常重要的一点是要用一种适当怀疑的眼光来审视专业投资人,至少这样做可以让你弄清楚在投资中你所面对的是一些什么样的人。由于主要上市公司70%的股票都掌握在机构投资者手中,因此不论你是买入还是卖出股票的时候,你所面对的投资竞争对手是专业投资者的可能性越来越大。—— 彼得·林奇

论投机,个人应该是玩儿不过机构投资者,所以个人投资更应该倾向于对上市公司长期的价值投资,而非短期投机。

投机者要接受必要的训练

业余投资者只要花少量时间,研究自己比较熟悉的行业中的几家上市公司,股票投资业绩就能超过95%的管理基金的专业投资者,而且会从中得到许多乐趣。—— 彼得·林奇

即:做认知内的投资。

当心“匿名内幕人”的“忠告”

大众必须牢记一点:股价长期下跌绝不是空头打压所致。一只股票不断下跌时,背后一定存在着隐情,不是市场有问题,就是公司本身有问题。

由于作手的操盘,造成短期内走势出现较大的波动,是有可能的。但从长期来看,股票的价格,体现的是公司的价值所在,这才是投资的本质和初衷。

总结

作者在书中多处详细地描述了他在期货、股票上的操作,值得多读细品。对于我一个股市小白来说,收货还是很大的。入股市之前,提升专业知识和自我认知尤为重要。操作股票不仅需要技巧,更是考验人性的一件事。

LPR浮动利率究竟是什么?

写作目的

相信各位可能和我一样,在前段时间收到了一条短信,内容大致为:

按照人民银行[2019]30号公告要求,为简化您的操作,XX银行将于2020年8月25日起将您在我行的住房贷款转换为LPR浮动利率定价方式。

此时的我,一脸懵逼,LPR利率是个什么玩儿?它还是浮动的?那岂不是以后的利息都没准儿?利息有可能会升高吗?

在观看了B站李永乐老师的视频《房贷合同要变了!LPR利率和固定利率哪个合算?会影响房价走势吗?》之后,对LPR浮动利率和利率转换有了一定的认识,在这里和大家分享一下。

贷款基准利率

在实行LPR浮动利率之前,我们实行的是贷款基准利率,商业银行的利率计算公式为:

商业银行贷款利率 = 基准利率 * (1 + 浮动加点)
央行基准利率:4.9%(2015公布~至今)
浮点:根据央行、政策、银行、个人情况而定

实例:假设某个城市对首套房的浮动加点是10%,那么我们的贷款利率就是:

首套贷款利率:4.9% * (1 + 10%) = 5.39%

数字先放这儿,后面会用到。

利率的双轨制

原有的贷款利率带来的问题是,市场利率政策利率存在双轨制。
市场利率也就是市场对资金需求程度,决定了利率的变化。市场如果非常需要资金,那么利率就上升;如果市场资金比较充裕,那么利率相对地就会下降。
这里涉及到MLF利率的问题,MLF的定义,我们不去管它,大体理解就是,央行给商行投钱,商行需要一些抵押给央行,后期在通过一定利率将钱还给央行,这里就存在一个MLF利率。
而政策利率,主要指的就是基准利率。商行拿到钱之后,再加上一定的浮动,贷款给客人或企业。
这样会出现一个问题,那就是货币政策传导不畅。
当MLF下调,商行拿到了钱。但是基准利率没有及时下调,那么贷款利率还是很高,那么个人和企业还是很难贷到钱。
这就是利率双轨制存在的问题。

贷款基础利率

也就是LPR利率。简单说:

LPR利率 = MLF利率 + 商行平均加点

这里的商行平均加点,是怎么得来的呢?
它是由国内选出来的18家商业银行,一起来报价决定,这18家银行可能来自大型国有银行,城市银行,外资银行和物联网银行等不同的类型。这些银行有不同的特色,服务于不同的人群,可以综合地从各个方面代表整体的市场情况。由这些银行各自根据市场情况报价,最后去除最高和最低,取平均即可。

在LPR利率下,我们的贷款利率就变为了:

贷款利率 = LPR利率 + 政策加点 + 商行附加利率
LPR利率:4.8%(2019年12月)
政策加点:如果国家觉得首套房利率不能下浮,那至少要保持LPR利率,那么政策加点可是是0%;限制二套房的购买,那二套房的政策加点可以定为0.6%
商行附加利率:商行需要盈利,所以也会有个加点。假设是0.59%

那么首套房和二套房的利率就分别为:

首套:4.8% + 0% + 0.59% = 5.39%
二套:4.8% + 0.6% + 0.59% = 5.99%

以上都是针对新利率执行之后的贷款进行的解释,没有太大问题。而接下来就是我们最关心的问题,还在还款期内的贷款是如何转换的。

基准利率 转 基础理论

根据国家政策,在转化的第一年的一整年时间里,也就是2020年,它会保证我们的利率是和2019年12月20日是一模一样的。(上文我们假定了我们原先的贷款利率是5.39%)。细心的童鞋一定发现了,原先的贷款利率和LPR利率之间存在一个差值,我们可以称这个差值为加点,因为这是我们后期利率计算的条件之一。

原有贷款利率 = LPR利率 + 加点(差值)
5.39% = 4.8% + 0.59%
注意:原本的利率如果是低于LPR利率的,加点值允许是负的。

得到了加点的具体指,那么我们以后每年的房贷利率就会根据LPR的调整而改变了。有些人可能会担心,如果LPR上升了,我的贷款利率不就上去了吗?根据世界范围的运行规律,国家发展到一定程度后,利率都是会下降的。长期来看,利率下行的概率应该是高于利率上行的概率的。
下面附上一张近一年的利率走势表,供大家参考。

日期 1年期LPR利率(%) 5年期LPR利率(%)
2020-08-20 3.85 4.65
2020-07-20 3.85 4.65
2020-06-20 3.85 4.65
2020-05-20 3.85 4.65
2020-04-20 3.85 4.65
2020-03-20 4.05 4.75
2020-02-20 4.05 4.75
2020-01-20 4.15 4.80
2019-12-20 4.15 4.80
2019-11-20 4.15 4.80
2019-10-20 4.20 4.85
2019-09-20 4.20 4.85
2019-08-20 4.25 4.85

LeetCode算法学习日记(2020年8月)

2020.8.14


题目:有效的括号
解题思路:
示例:

输入: “( ) [ ] { }”
输出: true

输入: “( [ ) ]”
输出: false

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    func isValid(_ s: String) -> Bool {       
if s.isEmpty {
return true
}
let dic:[Character:Int] = ["(":1,")":2,"[":3,"]":4,"{":5,"}":6]
var arr = [s[s.startIndex]]
var isSkip = false //是否清空
for index in 1..<s.count {

let currentS : Character = s[s.index(s.startIndex, offsetBy: index)]

if isSkip {
isSkip = false
arr = [currentS]
continue
}

let lastS : Character? = arr.last
let currentNum = dic[currentS] // 当前符号代表的数
let lastNum = dic[lastS!] // 栈顶符号代表的数
if (lastNum! == 1 && currentNum! == 2) || (lastNum! == 3 && currentNum! == 4) || (lastNum! == 5 && currentNum! == 6){
arr.removeLast()
}else{
arr.append(currentS)
}
isSkip = (arr.count == 0)

}

return arr.count > 0 ? false : true
}

算法理解:
当我们在遍历的时候,遇到左括号,就希望在后续中有右括号与之对应。根据先出现的左括号,延后对应,后出现的左括号,遇到右括号先对应的特点,栈的特点非常适合这道题的解题思路(先进后出)。
我们可以依次将一个符号压入栈顶,当有左括号遇到右括号时,两两相消,一直到最后如果栈内符号全部消除,则说明这组符号是有效的。

简单瀑布流布局实现(Swift)

写作目的

前段时间面试,问了瀑布流布局,所以就想到写这篇文章分享一下相关的知识点。
瀑布流布局是一种常见的布局方式,它能够美观、灵活地展示不同高度的素材组合的视图控件。
瀑布流布局的特点就在于,item从上往下排列,每次item的放置位置,都是当前的最短列下方。

主要的类

  • UICollectionView:视图
  • UICollectionViewFlowLayout:布局
  • UICollectionViewLayoutAttributes:item配置

需要重写的系统方法

1
2
3
4
5
6
1) 准备布局(第一次布局和刷新时调用)
override func prepare
2) 设置视图内容的尺寸
override var collectionViewContentSize: CGSize
3) 返回计算好的属性数组
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]?

准备工作

视图&数据源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import UIKit

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {

// 数据源
var dataArr = [Int]()
// 列数
let columnCount:Int = 3;
// 瀑布流布局
var flowLayout: WaterfallFlowLayout!

var collectionView: UICollectionView!


//MARK: - --- 视图已经加载
override func viewDidLoad() {
super.viewDidLoad()
// 数据源,同时也是高度值(实际项目中应根据内容计算高度)
self.dataArr = [300,200,300,400,100,200,300,400,100,200,300,400,100,200,300,400]
self.createUI()
}


//MARK: - --- 创建UI
func createUI(){
// 创建collectionView视图 和 flowLayout布局
self.flowLayout = WaterfallFlowLayout()
self.flowLayout.dataArr = self.dataArr
let rect: CGRect = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: SCREEN_WIDTH, height: SCREEN_HEIGHT))
let collectionView = UICollectionView.init(frame: rect, collectionViewLayout:self.flowLayout)
collectionView.delegate = self
collectionView.dataSource = self
collectionView.backgroundColor = UIColor.white
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "HomeCell")
self.view.addSubview(collectionView)
self.collectionView = collectionView

// 设置布局属性
self.setWaterfallFlowLayouts()

}

//MARK: - --- 设置item的布局
func setWaterfallFlowLayouts(){
// 设置布局属性
self.flowLayout.columnCount = self.columnCount
// 边界
self.flowLayout.sectionInset = UIEdgeInsets.init(top: 10, left: 10, bottom: 10, right: 10)
// 设置间距
self.flowLayout.minimumLineSpacing = 10.0
self.flowLayout.minimumInteritemSpacing = 10.0
}

//MARK: - --- delegate,dataSource
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.dataArr.count
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell:UICollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "HomeCell", for: indexPath)
cell.backgroundColor = .red
cell.layer.cornerRadius = 8
cell.layer.masksToBounds = true

var label: UILabel!

if let lab: UILabel = cell.contentView.subviews.last as? UILabel{
label = lab
}else{
label = UILabel.init(frame: CGRect.init(x: 0, y: 0, width: 30, height: 30))
label.textAlignment = .center
cell.contentView.addSubview(label)
label.textColor = .white
}

label.text = "\(indexPath.row)"
return cell
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// 点击添加数据
self.dataArr += [300,200,300,400,100,200,300,400,100,200,300,400,100,200,300,400]
self.flowLayout.dataArr = self.dataArr
self.collectionView.reloadData()
}
}

核心代码

计算布局

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
let SCREEN_WIDTH = UIScreen.main.bounds.size.width
let SCREEN_HEIGHT = UIScreen.main.bounds.size.height

class WaterfallFlowLayout: UICollectionViewFlowLayout {
// 总列数
var columnCount:Int = 0
// 数据数组
var dataArr = [Int]()
// 整个collectionView的高度
private var maxH:Int?
//所有item的属性
fileprivate var layoutAttributesArray = [UICollectionViewLayoutAttributes]()

// 准备布局时调用
override func prepare() {
/**
* 计算每个item的宽度
* 即:(collectionView的宽度 - 左右边距和 - item的水平间距之和) / 每行的item数量
*/
let itemWidth = ((self.collectionView?.bounds.size.width)! - self.sectionInset.left - self.sectionInset.right - self.minimumInteritemSpacing * CGFloat(self.columnCount - 1)) / CGFloat.init(self.columnCount)

// 通过item的宽度,计算并设置属性
self.computeAttributesWithItemWidth(CGFloat(itemWidth))
}

///根据itemWidth计算布局属性
func computeAttributesWithItemWidth(_ itemWidth:CGFloat){

// 定义一个列高数组 记录每一列的总高度(初始值都为上边距)
var columnHeightArr = [Int](repeating: Int(self.sectionInset.top), count: self.columnCount)
// 定义一个 记录每一列的item个数的数组
var columnItemCountArr = [Int](repeating: 0, count: self.columnCount)

// 定义一个 存储属性的临时数组
var attributesArray = [UICollectionViewLayoutAttributes]()

// 遍历数据计算每个item的属性并布局
for (index, dj_height) in self.dataArr.enumerated() {

// 根据IndexPath获取Cell元素的属性
let attributes = UICollectionViewLayoutAttributes.init(forCellWith: IndexPath.init(item: index, section: 0))
// 找出最短列的下标
let minHeight:Int = columnHeightArr.sorted().first!
let column = columnHeightArr.firstIndex(of: minHeight)

// 将数据追加在最短列
columnItemCountArr[column!] += 1
// 计算该项的坐标
let itemX = (itemWidth + self.minimumInteritemSpacing) * CGFloat(column!) + self.sectionInset.left
let itemY = minHeight
// 计算item的高度(机型适配,注意比例缩放)
let itemH = dj_height
// 设置frame
attributes.frame = CGRect(x: itemX, y: CGFloat(itemY), width: itemWidth, height: CGFloat(itemH))

attributesArray.append(attributes)
// 累加列高
columnHeightArr[column!] += itemH + Int(self.minimumLineSpacing)
}

// 找出最高列的下标
let maxHeight:Int = columnHeightArr.sorted().last!
let maxHeightColumnIndex = columnHeightArr.firstIndex(of: maxHeight)
// 根据最高列设置itemSize的默认值 使用总高度的平均值
let itemH = (maxHeight - Int(self.minimumLineSpacing) * (columnItemCountArr[maxHeightColumnIndex!] + 1)) / columnItemCountArr[maxHeightColumnIndex!]
self.itemSize = CGSize(width: itemWidth, height: CGFloat(itemH))
// 给属性数组设置数值
self.layoutAttributesArray = attributesArray
// 将最高列的行高赋值给属性,作为contentSize.Height的值
self.maxH = maxHeight
}

// 返回计算好的layoutAttributesArray数组
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {

return self.layoutAttributesArray
}

// 重写设置contentSize
override var collectionViewContentSize: CGSize {
get {
return CGSize(width: (collectionView?.bounds.width)!, height: CGFloat(self.maxH!))
}
set {
self.collectionViewContentSize = newValue
}
}

}

总结

本篇文章主要是对瀑布流的原理进行概述和提供思路,不涉及网络请求,动态内容计算等方面,应该还算是简单易懂的。感兴趣童鞋的可以Github上下载,欢迎交流学习。

2020年5月读书心得

《原则》是一本几乎真本书都是干货的书。作者在40年的工作和生活中,有“记录”的习惯,通过记录经历总结经验,将工作和生活良好地经营和管理起来。
作者在书中推荐阅读“生活原则”的全部内容,并将概要与列表放在章节的最后,而“工作原则”可根据需要进行选读,则把概要与列表放在了章节的开头,这一点十分贴心。
这本书更适合在实践中去借鉴书中的方法,并优化创造出属于自己的原则。

本书的第一章主要讲述的是坐着的历程:作者白手起家创建桥水基金,并通过努力获取了不错的成绩。1982年8月,墨西哥对其债务违约(其他国家有可能也会步其后尘),而美国银行正在想墨西哥一样高风险的其他国家提供贷款。而作者认为自己是少数预见到这一情况的人,并自信地表示美国会走向一场大萧条。而事实是,美联储通过增加货币供给,以一种无通胀的方式复兴了。作者感觉像是不断地被球棒打自己的头,因为这是他在众目睽睽下的失败。这使他失去了8年的努力,回到的原点。

不过逆境没有阻挡作者的脚步。他又逐渐培养了新的客户,逐渐新的团队。他开始容忍逆境,并吸取教训,走向更大的成果。

总结

本书中给我做大的感悟就是,在人生的道路上一定要有所成长,而成长的过程一定是痛苦的,一定要清楚这一点。同时对于实现目标的方式方法,不能过于固执己见,需要通过自己的反复复盘和值得信赖的人的佐证,不断提高其实现的概率,直到目标实现。

2020年4月读书心得

## 《养育男孩》 写这篇读书心得的时候,距离儿子的六月龄还有一周时间。我和妻子感谢上天赐给我们如此可爱的孩子,也开始理解父母对孩子的那种爱。 初为人父母,从宝宝出生地那一刻开始,无不督促着我们这些本来也还是“孩子”的人,突然转变角色,无条件地为了这个小生命,付出自己的一切。 未来虽然还很远,谁也不是孩子一出生就是个好父母,我们需要和孩子一起学习,一起成长。 《养育男孩》这本书,有非常多的干货,我在书的许多地方都做了笔记,可以在孩子的不同年龄阶段,尝试能够理解和帮助我们的孩子。

父亲必须做的5件事

提前“触摸”孩子
抽空陪伴孩子
亲近孩子
放低要求
与妻子分担照顾孩子的工作

家庭永远都应该被放在第一位。书中陈述了父亲在男孩成长过程中的重要性,所以不管工作轻松也好,真的很忙也罢,孩子需要父母(特别是父亲)的陪伴,而且应该在每个时间规划中,单独划出陪伴孩子的时间,多与孩子亲近和玩耍,才能是他健康快乐的成长。我们应该不仅仅是父母,更应该作为孩子最好的朋友之一。书中提到,有些儿童会患有ADD(注意力缺陷障碍),但有时候是因为父爱的确实而导致的。我们缺失应该与妻子分担照顾孩子的工作。我在妻子做月子的时候,下班回家后,我都会主动帮助她清洗奶瓶,整理宝宝需要用的东西,在喂完奶后,拍拍嗝,然后再哄睡。这一套下来,是真的累人,照顾孩子的工作,完全不亚于社会上的工作,甚至是有过之而无不及。所以也请体谅自己的妻子,也别把“挣钱”的自己,想的太伟大。

男孩与听力

男孩时常会出现听力障碍,这是由于咽鼓管堵塞引起的。不管在家还是在学校,当孩子不听话时,一定要弄明白他们是不是没听到你对他们说的话。弄清这一点非常重要。

我们在照顾孩子的头几个月就明白了一个道理,婴儿还那么小,他没有乖与不乖的分别,当他有需求的时候与我们唯一的沟通方式,就是哭,我们时常也会受不了无休止的哭闹,甚至还会发怒和抱怨,但你要知道,孩子哭闹一定是有他的原因的,父母应该多一些耐心,仔细观察,分析他是否有什么需求,或者是不舒服,找到原因后,为他解决问题或提供帮助,得到满足的小家伙,其实很快就会安静下来,过一会儿就喜笑颜开了。

字、词、句

在和孩子说话时,应高于他们的语言能力,但是只能高出一个层次。这样继续下去,孩子就能得到最大的提高。孩子喜欢这种游戏。所有人都喜欢交流。

干货,与点线面一样的道理。在教孩子讲话的时候,可以按照这个方法循序渐进地提高孩子的语言能力。

尽早给孩子读书

我和妻子都觉得应该为孩子养成阅读的习惯,而我们做父母的也应该以身作则,为家庭营造良好的阅读环境,放下手中的娱乐电子设备,大家一起投身知识的海洋。

和孩子一起做些什么

当孩子长大后,会发现和父母越来越疏远,有的心里话只愿意和自己最好的朋友倾诉,对,父母并没有成为孩子最好的朋友之一。
我和妻子都希望,如果我们的儿子需要帮助,或是有心事的时候,在他的倾诉对象中,我们作为父母的,会是他不错的选择。
当我们还是孩子的时候,应该或多或少会觉得,和自己的父母沟通会非常的尴尬和脸红,久而久之就越来越不想和父母聊一些自己的事情了。
其实和孩子聊天沟通,打成一片或许并不难。
我们可以和孩子一起做家务,一起挥动,与此同时可以聊一聊,我们的过去,聊一聊他的未来。总之,别尴聊,做点什么,变玩儿边聊,就变得顺畅又有意思了。

自然结果和公正意识

自然结果和公正意识,是你教育孩子的两大工具。只要是有关孩子的事,就一定要和他商量再决定。你绝不能强迫十几岁的孩子做他不愿意做的事。

我自己的父母是比较传统的强势的那种,但是我和我的妻子的想法与我们的父母相比截然不同。我们认为孩子不是父母的附属品,没有必要事事听命于父母。和孩子有关的事情,他有权利为自己做决定,尽管我们知道,有些决定大概率会有不好的结果,但是我们应该作为意见的提出者,而不是为孩子强行决策,其实如果真的有些小挫折,对他也是一种成长和锻炼,有时候真的不能太“溺爱”孩子了。让孩子为自己的事情做决定,能够让他们拥有自己的主见和为后果负责的勇气,积极地面对未来的生活。

性教育

父母主动为孩子提供应有的性教育应该是十分重要的。
我们应该教给孩子分辨喜欢、爱和色欲的不同,并告诉他一些有关性的知识,让他远离不健康的性行为,避免伤害别人,也避免受到伤害。

总结

当有了孩子的那一刻开始,生活就开始不一样了。
孩子学着长大,父母开始真正地成熟。
孩子也是独立的个体,我们应该学会倾听。
未来是美好而未知的,健康快乐比什么都重要❤️



## 《白说》 ### 起因 > 人生是一个围棋盘,当你读的书很少的时候,也就是这个棋盘上点的子很少,不成势,随时可能被别人吃掉。另外人找书书是很难的,但是书找书是非常容易的,越读书越知道该读什么书,书会带着你去读书,当你读了足够多了,这个围棋盘上的子连在一起,那它就会成势,人生就成势了。

在阅读《白说》之前,已经读完了两本书,读书的目的是为了在书中能够学到可以在生活中运用的知识,或者说是干货。某天在逛B站的时候,看到了白岩松的一个片段,是关于对读书的看法(即上述引用),又从关联视频当中得知了《白说》这本书,就饶有兴趣地想去读一读。
我们这一代年轻人,应该都已经不怎么看电视了,就算打开电视,也都是听着声音玩手机玩电脑,而我一般打开电视就会转到新闻台,因为新闻台有说不完的话,也能顺便了解一下时事。

代序

我姓白,所以这本书叫《白说》。其实,不管我姓什么,这本书都该叫《白说》。

全书是作者整理总结了自己在各个地方的演讲稿所汇集的书,每个章节的最后还会附上自己的”读后感“,或者说称之为总结,个人觉得这体现了的一种严谨,既有助于读者的理解,还能让人拥有与作者交流的奇妙感觉。

这个时代,误解传遍天下,理解寂静无声。即便你的整体节目本是为他们说话,但其中的一两句话没按他们期待的说,责难照样送上。后面跟过来责骂的人,大多连节目都没看过,看一两个网上的标题或一两条情绪化的微博就开始攻击。

我基本赞同“被误解是表达者的宿命”这个观点,不同的人从不同的利益点出发,会对观点有不同的解读,甚至即便是毫无敌意的,帮助ta的人,也性所难免会被责备,人性的成长需要漫长的时间,但是我对人性依然有种渴望和信心,希望每个人为自己的言行负责,宽以待人,严于律己。

做点无用的事儿

普京送的手机与法国人的度假

俄罗斯有一种手机是双面屏幕的,一面是普通的手机屏幕,另一面跟Kindle一样,是电子墨屏幕。因为俄罗斯的人均阅读量在全世界是很靠前的。

当一个民族持续二十多年都不读诗,甚至厌恶诗,把诗歌边缘化,你就知道我们生活中发生了什么样的问题。

如今的生活节奏越来越快,在这个娱乐至死,流量至上的时代,无数次地刷低下线,快消文化从眼前不停地刷新又不停地消失,没有什么能在人们心上留下印记。也很少能有时间,在某个夜里,放松心情,浊酒赏月,发出”青天有月来几时百? 我今停杯一问之“的感叹。我认为诗词和歌曲是相对应的,当它们与场景和心境相互碰撞产生共鸣的时候,就是最美妙的时候。

价值得失不是非有即无

每一本书中都蕴藏着你所期待的自己

因为无知所以读书,越读书越觉得自己无知,就应该读更多的书,或许理想中的自己,是一个”完美到无法触及“的人,但是读书真的可以武装人,让自己越来越接近那个期待的自己,因为我们会从书中汲取养分,有的是自己渴望的养分,有的甚至是意想不到的养分。

沟通世界不是非黑即白

八十年代的新闻专业,写导语讲究的是五个W:什么人(Who)、什么事(What)、什么时间(When)、什么地方(Where)、为什么(Why)

不仅仅是新闻专业,我认为凡事都可以遵循明确五个W的原则,这五个W能够基本确定一件事情的总体大纲,言简意赅,又能够从其中的任意一个点进行延展,锦上添花。

态度进退不是非取即舍

涉及道德的问题,不应追问人们“有没有道德”,更应该思考的是,我们的社会环境、相关的法律制度,是否进步到了让人们“可以展现道德”的时候。中国人不缺德,缺的就是让“德”展现出来的制度保障与大环境。

作者通过对比“交通事故交强险“和“扶摔倒老人被讹”两个事例分析“社会道德”问题,第一次看感觉角度和观点很新颖,也比较能接受。由此感悟:个人品德靠教育,社会品德靠制度。

今年我常说的一句话是:“我们批评政府、批评党、批评社会不够进步,是不是也该批评一下自己?每一个公民都没问题,都是党和政府的问题,谁说的?党和政府什么时候让你闯红灯?什么时候让你用散步的速度在街上开车并乱加塞?”

回想起自己大学的时候还是个愤青,会因为很多事情愤懑不满。随着时间的推移,看着祖国的发展和强大,一路有荣耀也有苦难,总来说,我的国,有我的家的感觉!尤其近期的新冠疫情,真的是举国之力救命于水火,大家也都很给力,配合和响应国家的号召,居家隔离减少外出,避免聚集性传染,徒增医疗负担。总体上,大家也是越来越团结的,或许我们的国家和政府还有很多不足,该说还是要说,同时,还是那句话“严于律己,宽以待人”,我们也要改正个体的缺点,使社会总体的水平走上新的台阶,才是有益于整个名族的进步。

一味地宣传“大公无私”,鼓励“见义勇为”和“集体利益高于个人利益”,是扭曲的价值观。一个连自己都不爱的人,怎么会去爱别人、爱社会呢?反过来,只有当帮助别人成为自己的需求,而且是实实在在的需求时,公益、慈善、爱才真正具备了推动的基础,而不是作秀。

请先爱己,及伴侣家人和朋友,再谈博爱。有些时候看着那些为了救助轻生的人,而献出自己生命的人的时候,真的是感到非常的惋惜。

好医生一定会开“希望”这个配方

三十年前的中国人,很多疾病是由于营养不良造成的,现在的疾病,尤其是慢性病,大多是由营养过剩造成的。

中国近三十年的发展真的很快,特别是经济,快到很多其他方面都跟不上。三十年前,很多疾病是因为营养不良造成的,现在的疾病,大多是由营养过剩造成的,一前一后,一个是因为食不饱,另一个是因为是太饱(吃太饱,就会闲地)。

尽管我爸两年后还是过世了,但是我妈在讲述这个故事的时候,安安静静地说:“如果遇上这样的医生,加上现在的技术,也许你爸的病就能治好了。”

作者的父亲在他很小的时候因为疾病去世,虽然他们遇到了一位好医生,但是当时的医疗条件有限,所以非常可惜。
再谈谈如今,其实好医生还是会有,如今的医疗条件也好,但是医疗不是万能的,医疗也不是服务行业,患者真的别把自己当大爷,也没有包治百病,定能救活的医生,医疗只是为生命的延续增加可能,如果没有医疗,可能离死就更近了。社会,甚至制度应该给医疗更多的关注和庇护,严惩造成不良医患关系的始作俑者。

时代真相不是非此即彼

中国结束了挨打的时代、挨饿的时代,正在进入一个挨骂的时代。

为过去三十年在这块土地上成功过或失败过的人们,鼓一次掌。

还记得2019年的10月1日那天,我坐着很早的高铁回家。火车上,信号不好,虽然断断续续地看着祖国70华诞阅兵仪式,但还是会忍不住感慨如今的国富民强,周围也有很多和我差不多年纪的人拿着手机也在看阅兵。上学那会儿老师总是笑说(九零后)是带过的最差的一届,而九零后也开始抗上时代的大旗案首阔步,不畏艰难。
过去的70年了,在这块土地上有过成功也有过失败,而失败应该像成功一样得到正视和认可,允许失败才能够促进创新,才能够距离成功更近一步。
感谢过去,在这块土地上成功过或失败过的人们。

因此全世界很多媒体也在分析“为什么”。世界看中国的面孔,哪一张才是真的?事实上,如此错综复杂的面孔,就是世界看中国的面孔。未来十年,甚至很长的一段时间,中国都将面临这样的世界环境。不适应吗?要适应。

中国现在面临着愈发复杂的外交环境,没办法做到邓小平爷爷说的“韬光养晦”。
外国现在看着我们所取得的成就,羡慕又不愿意承认我们的进步和强大。附和着老美诋毁我们以获取政治利益。他们不了解现在的中国,对于这些外行,要适应,用郭德纲的话讲就是,你正眼看他一下你就输了。(不包括应有的外交策略)

时间轴上的中国

我仔细研究过十七大报告,关键字是“民”,前半本是民生,后半本是民主。报告用两个章节探讨民主的问题,尤其在党建部分,有很多很棒的说法。
比如,在党章修改里面,“上级任命”这四个字没有了。请各位去思考,取消“上级任命”这四个字意味着什么?党建部分有这样一句话:将来我们的领导干部是由党委推荐和群众推荐相结合,实行“票决制”。什么意思?这都是未来有关民主的某种粗框架模式的确立。
在十七大报告里,民主改革有了明确的时间表,叫“公民的有序参与”,先党内后党外,写得清清楚楚。我认为媒体在传播十七大报告的过程中是失职的,只强调了民生,几乎没强调民主。有关民主的报道也忽略了实现路径。

中国的民主需要一写时间,就像市场经济体制的到来,它可能会迟到,但它迟早会来到。
我相信中国的民主也一定会具有我们中国的特色,和符合我们中国特色社会主义的国情需要的。

有人说应该控制互联网上的谣言,务必谨慎,并合理合法。正如化疗在杀死癌细胞的同时也会杀死正常细胞,谣言被消灭了,真理也就跟着消失了。

所有事情都是物极必反,具有两面性的。我原本觉得,互联网不应该成为法外之地,应该执行彻底的实名制,但是在某些时刻我们又希望通过匿名发声,想想着实还有些矛盾和悲凉啊。不过所谓言论自由都是相对的,从2019年的香港问题到2020年的新冠疫情,真是看足了好几场大戏,笑过骂过之后,还是安分做自己的事儿吧。

中国梦

“很多很多年前,如果美国发生了这样的状况,也许中国人会感到很开心,‘你看,美国又糟糕了’。但是今天的中国人会格外地希望美国尽早好起来,因为我们有几千亿的钱在美国。”
我们还有大量产品等待着装上货船,送到美国来。如果美国的经济进一步转好,这些货品背后,就是一个又一个中国人增长的工资,是他重新拥有的就业岗位,以及家庭的幸福。

中国梦已经从过去的国家梦成长为每个个体的梦想,可以让个体实现自我价值和理想,这在国家存亡之际都是不可能的,所以我们一直倡导和平和发展,因为中国深知战争的痛苦和危害。
在总体和平的今天,中美两个超级大国不大可能爆发大规模战争冲突,所以有冷战意味的贸易战就来了,就国力而言,美国确实还是世界第一,但中国人从来都不喜战,更不怕战…怎么写着写着,还激动起来了…
其实想说的是,在经济全球化的今天,这场危机的到来,没有谁可以独善其身,全身而退的,结局必定是两败俱伤的。

总结

《白说》这本书值得多读细读,
然后,或许,有些时候,应该静下心来多看看这个世界。

2020年3月读书心得

## 《富爸爸穷爸爸》 都说三十而立,我明年也就三十了。我们这代人,多“大器晚成”,因为没有太多生活的压力,面对如今这丰富的物质世界,挣钱慢,花钱快。 已经不记得是从哪个途径获取到《富爸爸穷爸爸》这这本书。读完它并没有对我接下来的“致富”有多大帮助,但是从书中却可以看到很多作者提出的“穷人”因何而穷的原因,在自己身上都会被对应到。 读罢本书,给我最大的收获是,重新确立自己的财富观和消费观。接下去,将从几个点,描述一下我从书中所得到的一些感受。

专注自己的事业/正确的消费观

大多数人会冲动地用贷款去买新车或其他奢侈品,他们可能对生活有些厌烦了,所以期待有点新玩意儿。用贷款买奢侈品,结果迟早会让人们放弃那些东西,因为借下的债是个沉重的负担。
在你花时间投资并创建自己的事业之后,就准备好迎接那个富人的最大秘密吧。这个秘密铺平了富人的致富之路。

回顾自己的生活,是不是和作者描述的极其相似?我们像“穷爸爸”一样,日复一日地努力上班,为的是每个月那固定时间固定金额的工资,我们用他支付房租,支付每顿饭,甚至我们都拿不到全部的金额,因为我们还需要交税,女孩们或许还需要购买一些化妆品,男孩们想想应该买鞋了,这些都是日常生活里的“基本开销”。偶尔对生活和工作的“压力”有些不满,想要购买一些早就心仪已久的“奢侈品”(展开可以理解成价格不菲的电子产品或名牌包包),这是无可厚非的,平凡的日子里需要一些新鲜玩意儿刺激一下。但是,我们更多的支付方式是什么?望着手头本就不宽裕的现金,更可能会选择花呗、信用卡、甚至分期付款,动用未来的钱,让自己背上一个个负债。
而“富人”的选择是,现金的存是资产增值的保障,他们会使用现金去购买资产,通过资产去挣取收益,而通过收益的部分金额作为奖励全额购买“奢侈品”。
对此,我思考了以往的生活消费方式,对于一些金额“小高”的商品,我会选择存一小段时间的钱以后,全额购买;而对于金额“较高”,而我有基于想要的商品,毫无悬念地会选择分期付款的。
是时候对现有的消费观进行修正了,我们努力工作,是为了让生活变得更好,每个人都应该去“创业”,这并不是说让大家毅然决然地辞去现在还能有收入的工作,而投身去不稳定的创业中去,而是当今我们所说的“副业”,找一个自己喜欢的,擅长的,甚至是自己早就想干的事业,全身心地投入其中,努力让“副业”产生现金流。当“副业”有了一定规模,拥有了一定团队规模,它就能够成为我们的资产,而资产能够产生较为稳定的现金,是不是就离财务自由更进了一步。

资产

资产就是能把钱放进你口袋里的东西&负债是把钱从你口袋里取走的东西。

资产举例:
一、不需我到场就可以正常运作的业务
二、股票、基金、债券
三、产生收入的房地产
四、专利权和著作权
五、任何其它有价值、可产生收入或增值并且有很好的流通市场的东西
六、知识

负债举例:
一、维持生存:食、衣、住、行
二、健康问题:亚健康、医院、药物
三、休闲娱乐:出游、旅行、餐宴、活动
四、法令规定:税务、手续费、规费
五、额外开销:罚单、社交、补遗
六、资金借贷:贷款、信用卡、私人借款

作者在书中反复强调应该增加资产,减少负债。因为资产能够增加现金流,也就是为我们挣钱。而尽量减少负债,能够让我们维持手中尽量过的资金,而资金可以用来投资(钱生钱)或储蓄(我认为一定量的储蓄是必要的)。同时,我们应该养成一个良好的习惯,那就是利用创造的收入去消费,特别是大额消费,而避免所以动用储蓄。

风险与收益

“保险”的投资尝尝过于安全,太安全则会导致低收益。

高风险,高回报;低风险,低收益。
风险与收益成正比,是一个所有人都明白的道理。
将钱存在银行里,或者购买一些风险低收益稳定的基金,属于“低风险”的投资。
而创业、投资股票这类,我认为是”高风险“的投资。
我认为,每个人都值得为自己建立一份事业,这里的事业不是指上班的工作,而是实实在在的自己当”老板“,且不论规模大小,当这份事业有了一定的收入,那它就能成为我们的资产。
当然,高风险以为着失败后,所要承受的后果,也会比低风险的投资要大。所以,投入高风险投资前,需要具备尽量多的专业知识,避免采坑,将风险发生的可能性降低,同时还要有乐观迎接失败的心态。失败并不代表一无所获,可以收获经验,我们应该尽量早地去”试错“和”失败“,因为当我们还年轻的时候,我们有更高的抗风险能力,容错能力。

试着付诸实践

在周末研讨班学习”如何购买破产的房地产“时,我学会了一个模式,那就是试着付诸实践,而这一步正式许多人没能做到的。

学到的知识,如果不去实践,那就永远不会成为自己的能力。

总结

《富爸爸穷爸爸》这本书给我的最大帮助是确立正确的消费观——不要用储蓄去支付”奢侈品“,而是应该通过学习专业知识,用以购买或获取良性资产,降低风险,让资产为自己工作。

LeetCode算法学习日记(2020年3月)

2020.3.23


题目:求两数的最大公约数
知识点:辗转相除法(欧几里得算法)
代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
func getGreatestCommonDivisor(x : Int, y : Int) -> Int{
var preDivisor = max(x, y)
var Divisor = min(x, y)
repeat{
let Remainder = preDivisor%Divisor
if Remainder == 0 {
break
}
preDivisor = Divisor
Divisor = Remainder
}while true
return Divisor;
}
}

算法理解:
假设x > y,则有x = k·y + r(x,y,k,r都为正整数,且r≥0)
当r = 0,y为(x, y)
当r > 0,r = x%y = x - k·y
假设d为(x, y)的公约数,记做 d|x(x能够被d整除)和 d|y(y能够被d整除)
则以上等式可以写成r/d = x/d - k·y/d,而等式的右边一定是正整数,所以r也能被d整除,即记做 d|r
所以x, y, x%y具有相同的公约数集
同理可得x_0 = y, y_0 = x%y, r_0 = x_0 % y_0 = y%(x%y)具有相同的公约数集,并以此类推
当首次出现x_n%y_n = 0时,即为(x, y)的最大公约数

2020.3.24


题目:【水壶问题】有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?
如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。
允许操作:
· 装满任意一个水壶
· 清空任意一个水壶
· 从一个水壶向另外一个水壶倒水,直到装满或者倒空
知识点:裴蜀定理(贝祖定理)
代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
func gcd(_ x : Int,_ y : Int) -> Int{
let preDivisor = max(x, y)
let Divisor = min(x, y)
if preDivisor % Divisor == 0 {
return Divisor
}else{
return gcd(x: Divisor, y: preDivisor % Divisor)
}
}

func canMeasureWater(_ x: Int, _ y: Int, _ z: Int) -> Bool {
if z > x+y{
return false
}
if x==0 || y==0{
return (z==0) || (x+y==z)
}
return z % gcd(x, y) == 0
}
}

算法理解:
由题可知,在z ≤ x+y,且x, y都不为0的情况下,两个水壶总水量的增加或减少,一定有至少一个壶是满的或是空的,不存在同时有水且都不满的情况。
当有一个水壶不满时,往不满的水壶里加满水,或是将水壶倒空,都是没有意义的,
所以,每次变动的 总水量 一定是 x 和 y 的变化量。
此时题目可以理解为 总水量 经过a次 x升,b次 y升 的变化,能否最终得到 z升?
也就获得了等式:

ax + by = z

而只要满足 z ≤ x+y,且这样的 a, b 存在,那么目标就可以达成。
根据 裴蜀定理(贝祖定理),ax+by = z 有解的充要条件是:当且仅当 z 是 (x, y) 最大的公约数的倍数。
因此我们只需要找到 (x, y) 的最大公约数并判断 z 是否是它的倍数即可。

2019年总结

2019是个忙碌的一年,公司的产品在市场的打磨下不断完善和优化,逐步走向正规,在开发之余还承担下了出差提供技术支持的工作,多少算是为久坐敲代码的状态,提供了外出运动的机会。
这一年的内容很丰富,但也有不足,话不多说,我来总结一下全年都做了什么。

产品

GitHub上大部分contribution都来自我独立开发的一款App——五迷——专为五月天歌迷群体所开发的App,目前累计用户450+,因为我本身也是一为“暴民”(五月天粉丝的一种称呼)。所以这个App就应运而生了。其中的小工具都是较为实用的,为五迷群体定制的一些功能,我希望在未来还能继续优化和完善这个App,让它能够活跃起来,这也算是一种情怀吧。

如果有兴趣,可以点击下载跳转至App store进行安装。

技术

2019年尝试了一些比较有趣的新技术,例如为App添加shortcut,通过Siri快速唤醒App及某项功能,同时通过阅读一些watchOS开发相关的文章,为Pigo番茄钟开发watchOS版本,个人认为番茄钟这类App注重效率,实际上最适合的平台应该是抬手即见的手表,或者是正在工作的设备上,例如手头的电脑,而不是需要解锁界面的手机。

苹果公司在2019年的WWDC上推出了macOS Catalyst功能,能够将iPad app快速地转化成桌面应用,我十分期待,并想尝试将移动版的Pigo转换成桌面应用。

阅读

2019年8月正儿八经地读一本书——《美国陷阱》,阅读的时间比较耐人寻味,这里不做解释。针对书的内容,已记录在《2019年8月读书心得》,这里也不做赘述。在这里想要分享的是对于电子书和实体书的阅读感受,我个人原本比较偏爱纸质书,因为纸质书有读书最“原始”的质感,是一种纯粹的读书感觉。不过这本书的40%我是在纸质书上阅读的,因为恰逢出差,需要在不同的地方来回穿梭,便下载了微信读书,完成了剩下60%的阅读。线上读书有很多好处,能够随时标记,发表自己的观点,同时查看和点评其他网友的见解,十分有趣,同时携带方便这一点就不用多说了。微信读书还能将微信公众号的阅读内容同步进来,这一点是十分惊喜的,这样可以相对统一地管理阅读内容,让微信成为更纯粹的社交聊天软件。

生活

2019.2.14 从此以后不仅仅是情人节,还是我和老婆77M的结婚纪念日,一路走来,有欢笑也不乏争吵,时间的沉淀让我们发现自己便是对方的Mr/Miss Right,往后余生无论平淡荣华,都是你。

同年10月,我们还迎来我们的天使小宝宝,他像极了他美丽的麻麻,他的每个微笑和啼哭,都牵动着我们,期待小家伙在我们的陪伴下健康、快乐地长大。

小结

在2019年,工作还算兢兢业业,通过阅读扩展见识,通过尝试新技术拓宽知识广度,同时在生活上由于身份的转变,让自己更加成熟。

2019,忙碌、充实,但缺章法。

2020,需要更加完善的时间和计划管理,不能让任务躺在清单里被忘记。新的一年,拭目以待。

Github项目迁移

最早用QQ号作为GitHub的登录名,感觉有点low,想着重新注册一个账号,把所有项目迁移过来,找了一些网上的资料,最后在《如何将Git仓库导入腾讯云开发者平台?》上找到了解决方案。
我是把项目从 GitHubUserOld 迁移到 GitHubUserNew 上的。不同平台的账户,操作方式相同。
具体操作如下:

新建项目

首先在GitHubUserNew账号下,新建一个同名的空项目,不选择 启用 README.md 文件初始化项目 ,以及任何 License.gitignore 文件。

克隆项目

从 GitHubUserOld 中找到需要迁移的项目,复制出项目的web URL。

![](https://gitee.com/hongdongjie/gg266picgo/raw/master/pic4blog/Github项目迁移/Github项目迁移 1.png)

确定当前路径所在,我这里是 cd 到桌面,到时候直接克隆到桌面。
Terminal执行命令

1
git clone https://github.com/GitHubUserOld/repo.git --bare

操作结束后,桌面上会多出一个 repo.git 文件夹

将克隆的仓库推送给新账户

cd到 repo.git 文件夹

1
cd repo.git

push 所有的分支和对象到新账户的仓库

1
git push https://github.com/GitHubUserNew/repo.git --all

完成后,再执行推送所有的标签。

1
git push https://github.com/GitHubUserNew/repo.git --tags

到此,GitHubUserOld账号下的repo就被完美地迁移到了GitHubUserNew账户下。

克隆速度过慢问题

我的某个项目达到了 450M 的大小,执行克隆操作的时候网速只有 20k/s 。如何解决克隆仓库时,网络过慢的问题呢。

答案是,修改hosts,添加固定的DNS解析。

MacOS系统下的操作方式:

1.打开 /etc/hosts ,拷贝出该 hosts 文件;

2.将下列内容加入到拷贝出的 hosts 文件的末尾

![](https://gitee.com/hongdongjie/gg266picgo/raw/master/pic4blog/Github项目迁移/Github项目迁移 2.png)

3.用拷贝出的文件替换 hosts 文件;

4.刷新DNS缓存:sudo dscacheutil -flushcache

参考文献:https://www.jianshu.com/p/2c18c13fbef3

请我喝杯咖啡吧~

支付宝
微信