总结一下自己学习javaScript过程中掌握的知识点和代码片段。
随时更新

阅读全文 »

如何与我们自身的情绪和平相处,是我们每天都要面对的最困难的任务之一。
「得到」App邀请著名作家张德芬,告诉你如何觉察自己的内在情绪,进而理解与接纳它们,收获自我的成长。

fa51a39f.png
阅读全文 »

开学季,终于进入大学。可是,你真的做好准备了吗?
「得到」订阅作者吴军,与斯坦福、芝加哥和约翰·霍普金斯大学的几位教授,对大学教育进行了交流,下面的12条建议送给你。

9a23b82c.png
阅读全文 »

这一本比较火的书,推荐阅读排行榜前面的。利用国庆休息时间,通读的此书。
在有资源的情况下,通过刻意练习是可以达到一定的高度的。
那么在没有资源的情况下呢,比如:不能花很高的价钱请明白人有针对性的设计课程。这种情况适用于大多数人,那么对自己的认知度就显得非常重要了。
只有了解自己的优点,缺点,了解自己的目的,有的放矢。还要通过一定的调查寻找适合自己的课程。感觉有难度。时间成本是少不了的。
从另一个方面,也可以获得一些提示,那就是要有设计合理的循序渐进的个性化培训是最有效率的。

acc7b619.png 0215020c.png

赶上十一假期,正好可以和老婆,宝宝见见面。选择了一个没去过的城市,体验一下不同的生活。

我之前接触过一个天津的人,特喜欢他们说话的口音,听着就不由自主的想笑。注:这里没有任何不敬的意思。

day 1

第一天飞到天津,中午下的飞机。话说天津似乎不大,飞机场到市中心的地方,坐地铁才9站好像。
出了地铁闸机,对面就是一个商场入口,正好饿了,吃完饭。旁边有个超市,顺便买点水果,矿泉水什么的。
结果被坑了。三个苹果居然要16.3元。好吧,我在上海买7-8个也才12元。矿泉水最小瓶的7元。瞬间觉得自己的脑袋好大。后来才知道这个是个精品超市,矿泉水是进口的,这个我也可以理解,可是苹果是国产的呢!!

0627b196.png

拿着高价苹果去酒店办理入住,路上看到的一个大楼景色不错,可惜摄影技术还不到位,似乎体现的不太理想。

315d1132.png

哦,对了,一到天津还看到个熟人,不容易,在上海总看到她。

1923fc63.png

路上看到个卖螃蟹的摊位,旁边还摆着香蕉,猜猜这么大一串多少钱。^_^ 5块钱。哈哈,他说他是代卖的。当时还以为自己听错了,半信半疑的拿出5元钱,他把香蕉递给了我。和刚刚的苹果反差太大了,受不了这刺激。
旁边是个菜场,看来买水果是方便了。

f7e0f950.png

天津西开教堂。
外面就是一堆商场,还真热闹。院子里面弄得像寺庙一样,不太喜欢。没有感受到教堂的那种独特的氛围和气质。

04fa79b1.png

day 2

去了天津科技馆,天津美术馆,天津自然博物馆。为啥这么厉害一天去了三个馆,因为他们都在一起。哈哈
天津这边想的太周到了,还有图书馆也在这边,只是累了就没去。
美术馆是最没意思的,里面什么都没有,只有十九大相关的一个楼层,还有个不认识的画家的展览一个楼层。别的就都没内容了。
科技馆不错,里面有一些新鲜的,上海科技馆没有的东东。正好赶上一堆小学生也去参观,人比较多,好在中午的时候都走了。

天津的交通真实吓人呀。基本上是”天天堵”,从这个红绿灯堵到下一个红绿灯。而且人车混行,这里的共享自行车太危险了。

出去了一天,电话已经没电了,肿么办,先去吃饭吧,吃完饭回旅馆。碰巧在吃饭的地方看到了共享充电宝,救星呀,头一次还不知道怎么用,说是先扫二维码,习惯性的拿出微信扫了一下,然后提示需要99元押金,这个不喜欢,我记得支付宝里面有信用租借来着。于是使用支付宝扫了二维码,然后就看到了可以信用免押金的地方,我的信用第一次有了使用的价值。充电宝头30分钟免费,然后1个小时1元钱。这东西怎么赚钱呢?想不通,我拿着充电宝去吃了个饭,然后回来,没超过30分钟,充到了60%的电量,也够了。所以本次免费。

自然博物馆挺好玩的,比较有特色。
看,天太热了。哈哈

e3e2dfa2.png
a96f1c31.png
总体来说非常不错,因为都是免费的。 哦,有一点很重要,自然博物馆在参观的馆里面没有卫生间,要到外面的走廊两侧才可以,这个不是很方便。要是走到一半想去卫生间就尴尬了。

还有就是天津路边没有24小时的便利店,也不是很方便。
科技馆的泡泡曲面好有趣。

day 3

五大道风景区是最坑的地方,可以不用去了。因为就是一些名人的旧居,而且只能在外面看,就是座个马车走一圈,有个讲解说一下,这是谁的房子,不能进去看的。最好的游览方式是,共享单车跟着马车骑一圈。有个民园广场旁边有些小商贩,要是时间充裕没地方去了,可以考虑去一下,否则别去了。

day 4

天津古文化街风景区,里面有一些小店很有特色,卖一些手工艺品和一些小的装饰品。喜欢小玩意儿的可以去看看。
意大利风情街也不错,里面有一些有创意的小东西。

day 5

天津自然博物馆,人真多排队排了老长了。
天津有一点很好,就是场馆比较集中,天津科学技术馆,自然博物馆,天津博物馆,天津图书馆,都在一个地方。如果时间比较紧的话,这些场馆也能走一遍。并且都是免费的。只要用身份证换票就可以了,自然博物馆直接刷身份证进入,很方便。

友情提示:
上面场馆的开馆时间如下:

  • 参观时间:09:00——16:30 (16:00停止入馆)。
  • 每周二至周日免费开放,每周一闭馆

day 6

天津之眼,排队的人更多了,晚上去了都是人,而且票也卖完了。有时间限制的。想要做的要早点去了。

be05e50b.png
回来的时候去退天津城市一卡通,结果看到了如下提示。这个有点坑呀。买票的时候说可以退,结果要9号才可以退。
a7f4ece6.png
还要有两个公交站点可以办理退卡,一个人最多可以退2张,要退三张还要复印身份证,这什么规定。有什么意义在里面。而且这里还没有复印机。幸好不远的街口有一家复印社,按照官僚程序走一圈,100多元总算退回来了。

滨海文化中心图书馆-下地铁要走20分钟的路,还好有共享单车。
这个全景图人太多,也懒得修图了,里面会有细节问题,直接pass就好了^_^!

d9c21972.png
造型很不错,看起来比较有冲击感,但是实用性不大,台阶14岁以下的不让上,需要做电梯上二楼,而且好多书都是摆在楼梯侧面的,很不方便查找,并且侧面的书架旁边就是楼梯,非常危险,如果找书的时候一不留心,那就从二楼直接滚到一楼了。 这里办读者证非常方便,使用身份证就可以自助办理了,非常好,这一点比上海要好些,不用再多带一张卡,还节省成本,身份证本来就应该发挥自己的作用。 还有这个图书馆不可以带水,食物,照相机,打火机,安检堪比飞机场。 里面有自习室,但是电源的位置并不是为了自习的人提供的,在地上,所以有的还可以,有的位置不方便不能用。

总结

天津作为直辖市,大型商场不少,但是还没形成商业圈,街头巷尾偶见几位老人在玩耍蟋蟀。交通比较乱,指示牌不清晰,并且没有南北等方向指示。共享单车在这里有的路段很危险,行人,单车,汽车混行。地铁里面的指示牌就更坑人了。公交站牌也坑人。
从上海出来后,有了对比也就有了追求。一线城市比其他城市最明显的就是“舒服”。生活中的琐事中最能体现出政府的服务态度和成果。

总体来说,硬件上天津也算可以了,但是软件差距较大,在这里服务还没体现出来,只看到了各种官僚规定。

松浦弥太郎的人生信条-100个基本-ab6cc408.png

猫空看到的一本书,看了几页试读之后,决定买下来慢慢看。
需要不断的领悟,反复的参透。

我的得到时光书签也有了一个好的归宿。

阅读全文 »

得到清单笔记

这个清单的作者,曾花了12年时间游历欧美,他的私家心得,帮你的这趟旅程跟“普通人”拉开距离。建议收藏,只要有一城一处用得上,就值回票价。

561f4ebb.png
阅读全文 »

整个操作过程的视频已经上传了。
youku视频
youtub视频

项目地址:https://github.com/aslucky/springBoot-kotlin-crud.git

建立项目

使用IDEA开发Spring Boot + Kotlin搭建后端Restful服务
Java 1.8
File-New project- Spring initializr下一步,语言选择Kotlin,其他根据需要选择,这里使用maven。
下一步,依赖里面选择Web-Web其他的暂时不选,下一步设置项目名称,完毕。
大致如下:

30f395b9.png
DemoApplication.kt文件里面是main入口函数。

添加控制器代码

新建一个Kotlin类controllerTopic

@RestController
class controllerTopic {

@RequestMapping(value = "/",method = arrayOf(RequestMethod.GET))
fun index():String = "hi there"

}

在DemoApplication.kt文件上右键-debug…一般情况下会成功启动服务
使用Postman发送请求Get http://localhost:8080/
会看到回复hi there

实现CRUD接口

添加一个数据类Topic,设置了默认值。

data class Topic (val id:String="", val name:String="", val description:String="") {
}

添加一个服务类TopicService,实现CRUD服务,这里暂时先使用一个可写列表作为数据源。

@Service
class TopicService {

private var topics = mutableListOf(
Topic("spring", "spring framework", "spring description"),
Topic("java", "java framework", "java description"),
Topic("java script", "java script framework", "java script description")
)

fun getAll(): List<Topic> = topics

fun getTopic(id: String) = topics.filter({ it -> it.id == id }).firstOrNull()

// return Boolean. true success otherwise failed
fun addTopic(topic: Topic) = topics.add(topic)

fun updateTopic(id: String, topic: Topic):Int {
var list = topics.filter({ it -> it.id == id }).firstOrNull()
if (list == null)
return -1
else
topics.set(topics.indexOf(list), topic)
return 0
}

//true : success otherwise false
fun deleteTopic(id: String): Boolean{
val ret = topics.removeIf({ it -> it.id.equals(id) })
return ret
}
}

创建一个用来返回信息的数据类ProcResp

data class procResp(var code:Int, var message:String,var data:Any? = null)

处理控制器的操作

@RestController
class controllerTopic(val topicService: TopicService) {

@RequestMapping(value = "/",method = arrayOf(RequestMethod.GET))
fun index():String = "hi there"

@RequestMapping(value = "/topics",method = arrayOf(RequestMethod.GET))
fun getAllTopic(): procResp{
var resp = procResp(0,"success")
resp.data = topicService.getAll()
return resp
}

@RequestMapping(value = "topics/{id}",method = arrayOf(RequestMethod.GET))
fun getTopic(@PathVariable id: String) : procResp
{
var resp = procResp(0,"success")
resp.data = topicService.getTopic(id)
return resp
}

@RequestMapping(value = "topics",method = arrayOf(RequestMethod.POST))
fun addTopic(@RequestBody topic:Topic):procResp{
var resp = procResp(if (topicService.addTopic(topic)) 0 else -1,"success")
return resp
}

@RequestMapping(value = "topics/{id}",method = arrayOf(RequestMethod.PUT))
fun updateTopic(@RequestBody topic:Topic, @PathVariable id:String):procResp{
val ret = topicService.updateTopic(id, topic)
var resp = procResp(ret,if (ret != 0) "error" else "success")
return resp
}

@RequestMapping(value = "topics/{id}",method = arrayOf(RequestMethod.DELETE))
fun deleteTopic(@PathVariable id: String) : procResp{
val ret = if (topicService.deleteTopic(id)) 0 else -1
var resp = procResp(ret ,if (ret != 0) "error" else "success")
return resp
}
}

现在就可以运行起来了。照比我之前用spring mvc写的CRUD简单的太多了。
和python的flask很像。能自动处理的部分都屏蔽掉了,比较人性化。