/images/avatar.png

提升专注力的七种方法

第一,把手机放在看不见的地方:手机已成为现代生活中最大的分心来源。为确保专注力,可以关闭工作用即时通讯软件、退出群聊、取关公众号、卸载容易分心的 APP。通过将手机放在看不见的地方或设置勿扰模式,有助于减少干扰。 第二,寻找一个不易受到干扰和分心的环境:安静、舒适的环境有助于提高专注力。因此,选择图书馆、自习室或安静的咖啡馆进行学习或工作。在家里,可以选择无电视的客厅或书房,避免在卧室或躺在床上学习。 第三,列出分心物清单:在开始工作或学习之前,列出可能导致分心的事物,如电视、游戏、聊天等。意识到这些干扰因素,有助于在工作或学习时保持专注。 第四,想想现在做的事情是否值得消耗注意力:在投入精力之前,评估任务的重要性。分清优先级,考虑投入产出比和任务边界,集中注意力在重要且紧急的事情上。对于长期不做的事情,可以考虑委托给别人或机器,或者干脆不做。 第五,阅读前喝点儿咖啡:适量喝咖啡可以提神醒脑,帮助保持清醒。注意饮用时间和剂量,以免导致失眠。早上喝一杯咖啡,午睡后再喝一杯,既提神又有助于提高新陈代谢。 第六,准备一支笔:在阅读或学习时,手边准备一支笔,以便随时记录笔记、划重点或想到新的想法。没有笔也没关系,可以使用电脑编辑器或 iOS 的提醒事项软件记录想法,避免因寻找笔而分心。 第七,觉知自己走神:在工作或学习过程中,可能会不自觉地走神。根据情况采取相应措施。如果是专注力初学者,需要将注意力拉回;若是心流状态高手,分心可能是因为疲劳,此时需要的是适当休息,例如散步或冥想等。

为什么 JSON 需要转义

为什么 JSON 需要转义? [TOC] 适合人群:入门级 JSON 和 JSON 转义 21 世纪初,Douglas Crockford 寻找一种简便的数据交换格式,能够在服务器之间交换数据。当时通用的数据交换语言是 XML,但是 Douglas Crockford 觉得 XML 的生成和解析都太麻烦,所以他提出了一种简化格式,也就是 JSON。 JSON 其结构形如 {"云原生":"Kubernetes"},可以很直观的使用字符串表示对象或数据结构。对象或数据结构使用序列化接口转换成 JSON 字符串,比如 Golang 中的json.Marshal接口。 你可能会有这样的疑问:既然 JSON 字符串结构简单,为什么不直接使用字符串拼接的方式,而是要使用 JSON 序列化接口呢? 结果显而易见:JSON 序列化接口会一并将数据中的特殊字符进行转义,防止其破坏 JSON 原有结构。比如数据中含有双引号"特殊字符,序列化接口便会对双引号进行转义,最终结果类似于{"云原生":"\"Kubernetes\""},否则,该场景下直接拼接的字符串会非法。 JSON 转义 许多程序设计语言把双引号字符(")用作字符串的分界符。反斜线(\)转义字符提供了两种方式来把双引号字符置入字符串中,或者是使用转义序列\"表示单个的"字符本身,而不是作为字符串分界符;或者是直接开始字符"的 16 进制编码值的转义序列\x22来表示",也可以使用 8 进制编码值的转义序列,如\042。 在 Python 中,下面的代码将会产生语法错误 1 print "Cloud Navite "Hello World!"."; 而另一段 Python 代码则会产生符合预期的结果 1 print "Cloud Navite \"Hello World!\"."; 在 JSON 中,也是如此:当使用 json 接口解析字符串{"云原生":""Kubernetes""}时会报错,而解析经过转义的 JSON 字符串{"云原生":"\"Kubernetes\""}则会解析成功。

《欧洲绘画五百年》参观有感

生日的时候飞去成都参观成都博物馆正在展出的西方绘画史,庆祝生日,感慨良多,记录下自己的感想 画作主题受限于思想。被神学/基督教控制的文艺复兴初期,画作只能是神祗,颜料也尽显奢华;随着西方文艺复兴给人们带来的思想解放,大家的主题不再局限于神祗,更注重于人本身,比如充满情趣的田园画,肖像画/自画像;随着科技进步,颜料可以带出门,派生出风景画派;大家生活水平提升,画画不再是一定是谋生手段(为达官贵人画肖像画可以填饱肚子),可以画自己想画的东西,主题百花齐放。 吃饱了才能搞艺术。西方文艺复兴以来其艺术中心的变迁:意大利/罗马(文艺复兴)->荷兰黄金时代(荷兰小画派)->巴黎->西欧以及美国百花齐放百家争鸣,其实也对应的是西方十四世纪以来的经济中心的变迁:从东西罗马纵横捭阖,荷兰/西班牙黄金一代/大航海时代,法兰西帝国和日不落帝国,第一次和第二次工业革命英国和美国变为世界的两极。 一个人的成功不仅要靠自身的努力和天分,还要考虑历史的进程以及找对师父。要有天分,很多大家早在十几岁二十几岁其绘画天赋便锋芒毕露;要靠个人努力,大部分在展上的画师无一不是耗费了巨大的精力投入在艺术创作中,年少成名的画师也是十一二岁便要在画师家里当学徒,兢兢业业;要站在巨人的肩膀上,要师从名师/大家,名画家的师父往往也很有名,自学成才的很少,比如高更(月亮与六便士的主角)。 画作充满美感。个人艺术细胞不足,对于艺术性的感受就是,不论是端庄严谨的教会画、轻松愉快的田园画、栩栩如生的肖像画和风景画、百花齐放百家争鸣的现实主义、浪漫主义、象征主义画作,都很美。在场看跟在网上或书上看的感觉完全不一样。 参考链接 欧洲绘画五百年丨高更:被画画拐上“歧路”,却抵达了艺术的神坛

从 nginx 热更新聊一聊 Golang 中的热更新

从 nginx 热更新聊一聊 Golang 中的热更新 静态语言在服务器编程时都会遇到这样的问题:如何保证已有的连接服务不中断同时又升级版本? 最近花了点时间看了下 nginx 热更新代码流程,想了下结合之前的经验一并总结下热更新 热更新是什么? 举个例子,你现在在坐卡车,卡车开到了 150KM/H 然后,有个轮胎,爆了 然后,司机说,你就直接换吧,我不停车。你小心点换 嗯。就这个意思 网关中的热更新 服务程序热更新这个问题在层 7 网关中尤其严重,网关中承载着大量的请求,包括 HTTP/HTTPS 短连接、HTTP/HTTPS 长连接、甚至是 websocket 这种超长连接(websocket 通常连接时间会很长,十几分钟到几天不等)。服务进程热更新是非常有必要的。 网关作为一个基础组件,需要保证高可用,是很难将其先停下来再更新的; 有人说可以使用负载均衡将需要更新的组件先隔离,再停机更新,但是如果是一个很小的集群没有负载均衡呢,又或者这样手动一台一台升级也着实麻烦,部分情况下就算隔离了也不过是不会有新的连接过来,旧的连接/请求依旧需要处理完成,否则就会造成部分服务不可用 不过实际上线上操作是集群隔离加热更新一起操作 nginx 热更新 (Upgrading Executable on the Fly) nginx [engine x] 是 Igor Sysoev 编写的一个 HTTP 和反向代理服务器,另外它也可以作为邮件代理服务器。 它已经在众多流量很大的俄罗斯网站上使用了很长时间,这些网站包括 Yandex、Mail.Ru、VKontakte,以及 Rambler。据 Netcraft 统计,在 2012 年 8 月份,世界上最繁忙的网站中有 11.48%使用 Nginx 作为其服务器或者代理服务器。 NginX 采用 Master/Worker 的多进程模型,Master 进程负责整个 NginX 进程的管理。Nginx 的模块化、热更新、Http 处理流程、日志等机制都非常经典。这里将会简要介绍一下热更新的机制

获取服务器本机 IP 的不同语言实现

C/C++ 版本 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 int CNetOperations::GetLocalIp(__be32 *pLocalIp, const char* pIfName) { if (!pLocalIp || !pIfName) { return (-EINVAL); } int iSocket; iSocket = socket(AF_INET, SOCK_DGRAM, 0); if (iSocket < 0) { return (-errno); } struct ifreq stIfr; memset(stIfr.ifr_name, 0x0, sizeof(stIfr.ifr_name)); strcpy(stIfr.

perf 入门教程(待补充和完善)

perf 使用教程 perf 简介 Perf 是 Linux kernel 中的系统性能优化工具,perf 基本原理的话是在 CPU 的 PMU register 中 Get/Set performance counters 来获得诸如 instructions executed,cache-missed suffered,branches mispredicted 等信息。 perf 本身的工具有很多,这里主要介绍个人在查询程序性能问题时使用的一些工具 包括 perf list、perf stat、perf record、perf report perf list 使用 perf 之前肯定要知道 perf 能监控哪些性能指标吧?那么就要使用 perf list 进行查看,通常使用的指标是 cpu-clock/task-clock 等,具体要根据需要来判断 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 $ perf list List of pre-defined events (to be used in -e): cpu-cycles OR cycles [Hardware event] instructions [Hardware event] … cpu-clock [Software event] task-clock [Software event] context-switches OR cs [Software event] … ext4:ext4_allocate_inode [Tracepoint event] kmem:kmalloc [Tracepoint event] module:module_load [Tracepoint event] workqueue:workqueue_execution [Tracepoint event] sched:sched_{wakeup,switch} [Tracepoint event] syscalls:sys_{enter,exit}_epoll_wait [Tracepoint event] … 不同内核版本列出的结果不一样多。.