傻猫网络日志 Samool's blog - 二十年老博客 - 时候
type: channel
link: https://www.samool.com/tag/%E6%97%B6%E5%80%99/
items: yum update更新遇到错误
items: 成都新公园，418万平方米的公园
items: SQL Server 2008 评估期已过的解决办法
items: 马云最新演讲全文2020-9-30
items: 关于px、em、rem、rpx、upx的知识
items: Golang 汇编入门知识总结
items: 【Redis持久化】服务器突然挂了！Redis缓存都在内存中啊
items: 如何评价视频博主给“狗不理”给差评，商家直接报警？
items: 如何学习一门新的语言
items: 我的一天

yum update更新遇到错误
type: item
date: 2020-12-25T16:00:23+08:00
description: AI摘要 本文介绍了解决yum更新时遇到的错误的方法。首先，如果出现未完成的yum事务，可以通过安装yum-utils、清理缓存和运行yum-complete-transaction来解决。其次，如果发现RPM数据库问题，可以尝试运行package-cleanup --cleandupes命令，或者使用yum -y update --skip-broken来跳过错误。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); yum安装东西的时候,老是报:There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.意思是:有未完成的yum事务,建议先运行yum-complete-transaction命令清除解决方法：这是强制结束yum引起的安装 yum-complete-transaction（这是一个能发现未完成或被中断的yum事务的程序）yum -y install yum-utils清除yum缓存yum clean all运行 yum-complete-transaction,清理未完成事务yum-complete-transaction --cleanup-only发现 29 个已存在的 RPM 数据库问题， 'yum check' 输出如下：解决办法运行package-cleanup --cleandupes如若依然报错：yum -y update --skip-broken

成都新公园，418万平方米的公园
type: item
date: 2020-12-07T19:53:32+08:00
description: AI摘要 成都新公园天府艺术公园占地418万平方米，位于成都老西门，旨在再现“蜀风揽胜画卷”。公园内包含天府艺术馆、天府美术馆和天府图书馆，其中美术馆屋顶设计为芙蓉花瓣形状，艺术馆和图书馆屋顶为斜向上的斜面曲面。公园预计将于2021年8月前开放，有望成为成都新地标。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 初次对成都加深印象是在什么时候呢？应该是那句歌词唱的那样，走在成都的街道上也停不下来，这首歌火遍了校园，到处都能听到哼着小曲的人。成都的这个热闹的大城市，一个又一个远方的游客的吸引着人们，成都的发展观光业也在这里盛行，父亲总是一种令人羡慕的语气，他的旧同学谁又说成都旅行了，这样，这里真的是一个好地方，这个公园的名字叫天府艺术公园，地点在成都老西门，这个公园的建成范围有多大？这个公园的目的是再现“蜀风揽胜画卷”，既然是艺术类的，那一定展示了艺术性的内容，这个公园还引进了展馆。有天府艺术馆、天府美术馆、天府图书馆，下面详细说明这些展馆。天府美术馆，这个展馆富有艺术性，屋顶是用芙蓉花瓣形状的金属素材建造的，从远处看，这个美术馆是盛开在湖里的芙蓉花。天府艺术馆和图书馆的屋顶造型是斜向上的斜面曲面，对面就是美术馆，今后，如果小队友们如果有读书的欲望，在图书馆中读书，读着书，同时可以欣赏美丽的设计，精神的喜悦心情，同时也能好转，这是什么人的人梦想的生活！该公园的建设是一个文化艺术爱好者争相，但他们在图书馆里徜徉中，美术馆也培养情操，比他们两人呐喊，也在一个地方停留的时间长了，特别是也改变了，从任何角度而言的一种心情，这是文艺爱好者的理想的天堂，今后，这里很有可能成为成都的“新地标”，对这里感兴趣的朋友们不要着急，这个公园将在2021年8月之前亮相。

SQL Server 2008 评估期已过的解决办法
type: item
date: 2020-10-26T15:08:00+08:00
description: AI摘要 本文介绍了如何解决SQL Server 2008评估期已过的问题。首先，通过输入相应的产品密钥进行版本升级。如果升级后仍提示评估期已过，可以通过修改注册表中的“CommonFiles”值来解决。此外，文章还提供了解决SQL Server 2008安装需要一直重启的问题的方法，即删除注册表中的PendingFileRenameOperations键值。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 今天上班一打开SQL Server，就报了下面这个问题很显然，SQL Server 试用期到了，微软提醒我们购买。大家经济允许的话，还是要买正版。对于我们这些暂时无力承担正版费用的屌丝群体怎么办呢？显然，重装不是一个好的办法。SQL Server软件装起来很麻烦，还需要一段时间。况且光卸载老版本就是个问题，很难卸载干净。卸载加安装，半天就过去了。通过百度，找到了一些解决方案，通过自身的具体实践，终于把问题解决了，特将问题与解决方法记录下来，给遇到同样问题的伙伴提供一种解决方式，也方便自己日后查看。1.开始-->所有程序-->MicrosoftSQL Server 2008-->配置工具-->SQL Server 安装中心2.打开SQL Server安装中心(64位) 点击维护-->版本升级，如果提示失败1，电脑没有重启，这个时候就需要我们手动进行重启，重新打开电脑后，从步骤1开始；接着按照提示一直点下一步，到产品密钥的时候输入Microsoft SQL Server 2008 R2序列号密钥开发版32位：MC46H-JQR3C-2JRHY-XYRKY-QWPVM开发版64位：FTMGC-B2J97-PJ4QG-V84YB-MTXX8工组版：XQ4CB-VK9P3-4WYYH-4HQX3-K2R6QWEB版：FP4P7-YKG22-WGRVK-MKGMX-V9MTM数据中心版32位：PTTFM-X467G-P7RH2-3Q6CG-4DMYB数据中心版64位：DDT3B-8W62X-P9JD6-8MX7M-HWK38企业版32位：R88PF-GMCFT-KM2KR-4R7GB-43K4B企业版64位：GYF3T-H2V88-GRPPH-HWRJP-QRTYB标准版32位：CXTFT-74V4Y-9D48T-2DMFW-TX7CY标准版64位：B68Q6-KK2R7-89WGB-6Q9KR-QHFDW输入密钥之后进行升级，升级完成后，再次打开SQL Server。如果还是提示评估期已过，进行如下操作：修改注册表： win键 + r 打开运行界面 输入regedit 就能打开注册表页面找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSQL Server\100\ConfigurationState里的“CommonFiles”值改成3，在重新执行上面的操作。sql server 2008安装需要一直重启的解决办法：同样打开注册表找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 位置然后在右边窗口右击PendingFileRenameOperations，选择删除，然后确认

马云最新演讲全文2020-9-30
type: item
date: 2020-09-30T12:04:48+08:00
description: AI摘要 马云在2020年的演讲中强调了2020年作为历史分水岭的重要性，并认为海南自贸港的建设是历史性的选择。他提出，新的全球化正在开始，将由发展中国家和中小企业主导，科技和数据流动将成为主力。马云还强调了中国内需对新一轮全球化的驱动作用，以及全球化是一种服务世界的能力。他鼓励企业家面向未来，用未来的方法解决今天的问题，并强调数字化是确定的趋势，将全面改造所有行业。马云还提到，企业家应有担当，为世界变得更好而努力。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 2020年非常特殊，未来一定是一段历史的分水岭；海南成为自贸港，也必定是一个历史性的选择；我希望我们CEC这次的海南会议，也能成为一个跨越时代的会议，在疫情之后，新的全球化开始之后，在整个数字时代到来的时候，我们CEC的企业家能够在这段历史中创造独特的价值。我昨天还在武汉，也和我们CEC的三十几位理事一起，到武汉去了一趟。几个月前在电视里看武汉，确实非常之难，这次到武汉，真的感到武汉是一座英雄的城市，有英雄气质。疫情是结束了，我们该考虑如何让经济重生。经济重生不是为了回到昨天、回到以前，而是在更高的水平上面，从疫情中看到未来，看到趋势，把握机会。这次从武汉来到海南，这里面我觉得是巧合，好像也有一种必然的东西。两年前，习主席宣布了建设海南自贸港，全面开放的战略，两年过去了，世界格局发生了巨大的变化。但是我依然相信，我们必须要坚持开放，必须要坚持全球化，特别是疫情之后，我相信全世界所有的门都是要靠自己去打开的，没有门是天然开着的，这时候坚持全球化比什么时候都重要、都有意义。现在海南就站在一个新的历史的起点上，自贸港建设不是简单的海南发展的机遇，更不仅仅是中国经济发展的一个机遇，而是要担当起为世界探索新的全球化的历史责任。我自己觉得，国际化和全球化是两个不同的概念，国际化更偏向于中国人跟外国人做生意，是双边为主。而全球化是世界各国的大事情，是一个全局的问题。今天很多人觉得全球化出现了这样那样的问题，而我并不这么认为：第一，我认为今天是真正全球化开始的时候。昨天的、原来的、传统的、工业时代的全球化正在终结。新的、真正的、数字时代的全球化才刚刚打开。以前，全球化是发达国家和大企业主导，未来，全球化应该是发展中国家、中小企业走向世界；以前贸易是全球化的主力，未来科技将是全球化的主力；以前是人在流动、货在流动，未来是数据在流动、服务在流动；以前是传统企业的全球化，未来是用好互联网技术的企业的全球化；未来，任何一个人，只要有一部手机就可以做全球生意，未来所有的中小企业都是跨国公司，过去三十年是6000家大企业决定了全球化，未来应该是6000万家中小企业决定全球化。地域的扩大就是业务的扩张，这是世界给予我们的巨大机会。第二， 这是由中国内需驱动的新一轮全球化。新一轮的全球化，中国将会从“卖卖卖”，变成“买买买”。海南自由贸易港有自己的历史使命，海南未来留在历史中将会成为一个非常重要的角色。假设我们对贸易游戏规则不满意，今天给了我们一次机会，我们是否有这种胸怀、有这种格局、有这种担当为世界未来数字的全球化，为更多企业、更多国家、更多发展中国家的全球化，来制定一个更加公平、可持续、绿色的贸易规则？大家其实不用害怕从“卖卖卖”变成“买买买”。中国每一次大门打开，都是中国进步的象征，每一次大门打开，中国都进步了。我们要不断地走出去。我记得我们以前的人走出去是找差距，我们觉得人家这个做得好、那个做得好。今天我们很多中国企业走出去，或者很多中国人走出去，是在找感觉。当我们在找感觉的时候，其实我们正在退步。上一次全球化，是美国3亿人消费驱动的；中国这次的全球化是14亿人的内需，会驱动下一轮真正的全球化，带动世界经济。进口不是终点，进口最终是要倒逼中国产业提升、消费升级，促进现代服务业的发展。对于企业家来说，未来的机会在中国那些百万人口的小城镇。我不知道大家是否知道中国有多少城市过100万人口，我在2014年初步做了一个统计，美国大概有不到12个城市过100万人口，中国有167个城市过100万人口。而100万人口的基础建设、100万人口所诞生的巨大产业，我们远远没有发展好。这些近百万城市的人口，也许我们将来会有三百个，这些地方会迸发出巨大的消费潜力。内需绝对不是有钱人的拉动，内需应该是满足每一个普通百姓的需求，普通人的内需拉动，才是真正可以持续发展的内需价值。第三，新的全球…

关于px、em、rem、rpx、upx的知识
type: item
date: 2020-09-30T11:11:48+08:00
description: AI摘要 本文介绍了CSS中常用的长度单位px、em、rem、rpx和upx。px是像素单位，与显示器分辨率相关；em是相对长度单位，相对于当前对象内文本的字体尺寸；rem是CSS3新增的单位，相对于HTML根元素；rpx是微信小程序的尺寸单位，根据屏幕宽度自适应；upx是uni-app的尺寸单位，也是根据屏幕宽度自适应。选择合适的单位取决于项目需求和浏览器兼容性。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); PXpx像素（Pixel）。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。PX特点IE无法调整那些使用px作为单位的字体大小；国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位；Firefox能够调整px和em，rem，但是96%以上的中国网民使用IE浏览器(或内核)。EMem是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置，则相对于浏览器的默认字体尺寸。EM特点em的值并不是固定的；em会继承父级元素的字体大小。注意：任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算，需要在css中的body选择器中声明Font-size=62.5%，这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10，然后换上em作为单位就行了。所以我们在写CSS的时候，需要注意两点：body选择器中声明Font-size=62.5%；将你的原来的px数值除以10，然后换上em作为单位；重新计算那些被放大的字体的em数值。避免字体大小的重复声明。也就是避免1.2 * 1.2= 1.44的现象。比如说你在#content中声明了字体大小为1.2em，那么在声明p的字体大小时就只能是1em，而不是1.2em, 因为此em非彼em，它因继承#content的字体高而变为了1em=12px。REMrem是CSS3新增的一个相对单位（root em，根em），这个单位引起了广泛关注。这个单位与em有什么区别呢？区别在于使用rem为元素设定字体大小时，仍然是相对大小，但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身，通过它既可以做到只修改根元素就成比例地调整所有字体大小，又可以避免字体大小逐层复合的连锁反应。目前，除了IE8及更早版本外，所有浏览器均已支持rem。对于不支持它的浏览器，应对方法也很简单，就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。下面就是一个例子：p {font-size:14px; font-size:.875rem;}注意： 选择使用什么字体单位主要由你的项目来决定，如果你的用户群都使用最新版的浏览器，那推荐使用rem，如果要考虑兼容性，那就使用px,或者两者同时使用。px 与 rem 的选择？对于只需要适配少部分手机设备，且分辨率对页面影响不大的，使用px即可 。对于需要适配各种移动设备，使用rem，例如只需要适配iPhone和iPad等分辨率差别比较挺大的设备。rpxrpx 是微信小程序解决自适应屏幕尺寸的尺寸单位。微信小程序规定屏幕的宽度为750rpx。无论是在iPhone6上面还是其他机型上面都是750rpx的屏幕宽度，拿iPhone6来讲，屏幕宽度为375px，把它分为750rpx后， 1rpx = 0.5px。微信小程序同时也支持rem尺寸单位， rem 规定屏幕的宽度为20rem, 所以 1rem = (750/20)rpx = 37.5 rpxUPXuni-app 使用 upx 作为默认尺寸单位， upx 是相对于基准宽度的单位，可以根据屏幕宽度进行自适应。uni-app 规定屏幕基准宽度750upx。开发者可以通过设计稿基准宽度计算页面元素 upx 值，设计稿 1px 与框架样式 1upx 转换公式如下：设计稿 1px / 设计稿基准宽度 = 框架样式 1upx / 750upxupx在2018年就推出了，其初衷是为了让微信的rpx机制可以跨全端使用。在普通css写法里，upx会被编译器编译。但动态绑定时，upx无法被准确编译，此时官方提出了使用uni.upx2px()方法，用来…

Golang 汇编入门知识总结
type: item
date: 2020-09-27T14:35:04+08:00
description: AI摘要 本文是一篇关于Golang汇编入门的知识总结，作者分享了自己在学习Golang底层实现机制时对Golang汇编的理解。文章首先解释了为什么需要汇编语言，然后介绍了程序与进程的概念，接着深入讲解了Go汇编的相关知识，包括核心寄存器、常用操作指令等。文章还提供了如何输出Go汇编的方法，并通过对一个简单Go函数的汇编代码进行分析，帮助读者理解Go汇编的实现过程。最后，文章还介绍了一些Go调试工具，如gdb和delve，并总结了学习Go汇编需要熟悉的几个方面。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 作者：ivansli，腾讯 IEG 运营开发工程师在深入学习 Golang 的 runtime 和标准库实现的时候发现，如果对 Golang 汇编没有一定了解的话，很难深入了解其底层实现机制。在这里整理总结了一份基础的 Golang 汇编入门知识，通过学习之后能够对其底层实现有一定的认识。0. 为什么写本文平时业务中一直使用 PHP 编写代码，但是一直对 Golang 比较感兴趣，闲暇、周末之余会看一些 Go 底层源码。近日在分析 go 的某些特性底层功能实现时发现：有些又跟 runtime 运行时有关，而要掌握这一部分的话，有一道坎是绕不过去的，那就是 Go 汇编。索性就查阅了很多大佬们写的资料，在阅读之余整理总结了一下，并在这里分享给大家。本文使用 Go 版本为 go1.14.11. 为什么需要汇编众所周知，在计算机的世界里，只有 2 种类型。那就是：0 和 1。计算机工作是由一系列的机器指令进行驱动的，这些指令又是一组二进制数字，其对应计算机的高低电平。而这些机器指令的集合就是机器语言，这些机器语言在最底层是与硬件一一对应的。显而易见，这样的机器指令有一个致命的缺点：可阅读性太差（恐怕也只有天才和疯子才有能力把控得了）。为了解决可读性的问题以及代码编辑的需求，于是就诞生了最接近机器的语言：汇编语言（在我看来，汇编语言更像一种助记符，这些人们容易记住的每一条助记符都映射着一条不容易记住的由 0、1 组成的机器指令。你觉得像不像域名与 IP 地址的关系呢？）。1.1 程序的编译过程以 C 语言为例来说，从 hello.c 的源码文件到 hello 可执行文件，经过编译器处理，大致分为几个阶段：编译器在不同的阶段会做不同的事情，但是有一步是可以确定的，那就是：源码会被编译成汇编，最后才是二进制。2. 程序与进程源码经过编译之后，得到一个二进制的可执行 文件。文件这两个字也就表明，目前得到的这个文件跟其他文件对比，除了是具有一定的格式（Linux 中是 ELF 格式，即：可运行可链接。executable linkable formate）的二进制组成，并没什么区别。在 Linux 中文件类型大致分为 7 种：b: 块设备文件c：字符设备文件d：目录-：普通文件l：链接s：socketp：管道通过上面可以看到，可执行文件 main 与源码文件 main.go，都是同一种类型，属于普通文件。（当然了，在 Unix 中有一句很经典的话：一切皆文件）。那么，问题来了：什么是程序？什么是进程？2.1 程序维基百科告诉我们：程序是指一组指示计算机或其他具有消息处理能力设备每一步动作的指令，通常用某种程序设计语言编写，运行于某种目标体系结构上。从某个层面来看，可以把程序分为静态程序、动态程序：静态程序：单纯的指具有一定格式的可执行二进制文件。动态程序：则是静态可执行程序文件被加载到内存之后的一种运行时模型（又称为进程）。2.2 进程首先，要知道的是，进程是分配系统资源的最小单位，线程(带有时间片的函数)是系统调度的最小单位。进程包含线程，线程所属于进程。创建进程一般使用 fork 方法(通常会有个拉起程序，先 fork 自身生成一个子进程。然后，在该子进程中通过 exec 函数把对应程序加载进来，进而启动目标进程。当然，实际上要复杂得多)，而创建线程则是使用 pthread 线程库。以 32 位 Linux 操作系统为例，进程经典的虚拟内存结构模型如下图所示：其中，有两处结构是静态程序所不具有的，那就是 运行时堆(heap)与 运行时栈(stack)。运行时堆从低地址向高地址增长，申请的内存空间需要程序员自己或者由 GC 释放。运行时栈从高地址向低地址增长，内存空间在当前栈桢调用结束之后自动释放(并不是清除其…

【Redis持久化】服务器突然挂了！Redis缓存都在内存中啊
type: item
date: 2020-09-27T14:29:53+08:00
description: AI摘要 文章通过Redis与MySQL的对话形式，介绍了Redis的两种持久化方式：RDB和AOF。RDB通过周期性备份内存中的数据到文件，而AOF则记录所有写入命令到文件中。文章还讨论了AOF重写的概念，即通过合并命令来减小AOF文件的大小。最后，文章提出了一个问题，即在AOF方案已经很完善的情况下，是否还需要RDB方案。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 我是Redis，一个叫Antirez的男人把我带到了这个世界上。“快醒醒！快醒醒！”，隐隐约约，我听到有人在叫我。慢慢睁开眼睛，原来旁边是MySQL大哥。“我怎么睡着了？”“嗨，你刚才是不是出现了错误，整个进程都崩溃了！害得一大堆查询请求都给我怼过来了！”，MySQL说到。刚刚醒来，脑子还有点懵，MySQL大哥扶我起来继续工作。“糟了！我之前缓存的数据全都不见了！”“WTF？你没有做持久化吗？”，MySQL大哥一听脸色都变了。我尴尬的摇了摇头，“我都是保存在内存中的，所以才那么快啊”“那也可以在硬盘上保存一下啊，遇到这种情况全部从头再来建立缓存，这不浪费时间嘛！”我点了点头，“让我琢磨一下，看看怎么做这个持久化”。RDB持久化没几天，我就拿出了一套方案：RDB既然我的数据都在内存中存放着，最简单的就是遍历一遍把它们全都写入文件中。为了节约空间，我定义了一个二进制的格式，把数据一条一条码在一起，生成了一个RDB文件。不过我的数据量有点大，要是全部备份一次得花不少时间，所以不能太频繁的去做这事，要不然我不用干正事了，光花时间去备份了。还有啊，要是一直没有写入操作，都是读取操作，那我也不用重复备份，浪费时间。思来想去，我决定提供一个配置参数，既可以支持周期性备份，也可以避免做无用功。就像这样：save 900 1 # 900秒（15分钟）内有1个写入save 300 10 # 300秒（5分钟）内有10个写入save 60 10000 # 60秒（1分钟）内有10000个写入多个条件可以组合使用，只要上面一个条件满足，我就会去进行备份。后来我又想了一下，这样还是不行，我得fork出一个子进程去做这件事，不能浪费我的时间。有了备份文件，下次我再遇到崩溃退出，甚至服务器断电罢工了，只要我的备份文件还在，我就能在启动的时候读取，快速恢复之前的状态啦！MySQL:binlog我带着这套方案，兴冲冲的拿给了MySQL大哥看了，期待他给我一些鼓励。“老弟，你这个方案有点问题啊”，没想到，他竟给我浇了一盆冷水。“问题？有什么问题？”“你看啊，你这个周期性去备份，周期还是分钟级别的，你可知道咱们这服务每秒钟都要响应多少请求，像你这样不得丢失多少数据？”，MySQL语重心长的说到。我一下有些气短了，“可是，这个备份一次要遍历全部数据，开销还是挺大的，不适合高频执行啊”“谁叫你一次遍历全部数据了？来来来，我给你看个东西”，MySQL大哥把我带到了一个文件目录下：mysql-bin.000001mysql-bin.000002mysql-bin.000003···“看，这些是我的二进制日志binlog，你猜猜看里面都装了些什么？”，MySQL大哥指着这一堆文件说到。我看了一眼，全是一堆二进制数据，这哪看得懂，我摇了摇头。“这里面呀记录了我对数据执行更改的所有操作，像是INSERT，UPDATE、DELETE等等动作，等我要进行数据恢复的时候就可以派上大用场了”听他这么一说，我一下来了灵感！告别了MySQL大哥，回去研究起新的方案来了。AOF持久化你们也知道，我也是基于命令式的，每天的工作就是响应业务程序发来的命令请求。回来以后，我决定照葫芦画瓢，学着MySQL大哥的样子，把我执行的所有写入命令都记录下来，专门写入了一个文件，并给这种持久化方式也取了一个名字：AOF（Append Only File）。不过我遇到了RDB方案同样的问题，我该多久写一次文件呢？我肯定不能每执行一条写入命令就记录到文件中，那会严重拖垮我的性能！我决定准备一个缓冲区，然后把要记录的命令先临时保存在这里，然后再择机写入文件，我把这个临时缓冲区叫做aof_buf。说干就干，我试了一下，竟然发现数据没有写入到文件中去。多方打听才知道，原来操作系统也有个缓存区，我写的数据被他缓存起来了，没有给我写入到文件中去，这不是坑爹呢嘛！看来，我写完了还得要去刷新一下，把数据真正给写下去，思来想去，我还…

如何评价视频博主给“狗不理”给差评，商家直接报警？
type: item
date: 2020-09-13T17:27:46+08:00
description: AI摘要 视频博主对狗不理包子北京王府井总店给出差评后，商家报警处理。狗不理包子作为中国传统小吃，历史悠久，但近年来价格和品质受到质疑，许多顾客认为其价格过高且味道不如从前。此次事件反映了老字号品牌在维护形象和应对消费者反馈方面的挑战。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 狗不理包子是天津市中国传统风味小吃，始创于公元1858年(清朝咸丰年间)，为“天津三绝”之首，是中华老字号之一。2011年11月，国务院公布了第三批国家级非物质文化遗产名录，“狗不理包子传统手工制作技艺”项目被列入其中。日前，微博上一则探访狗不理包子北京王府井总店的视频引发关注。视频博主吐槽商家的酱肉包“感觉里面全是肥肉”“特别腻”，并称“100块钱两屉有点贵”。不仅如此，当他在店里试吃时，后厨还不断传出咳嗽声。本来，这也就是顾客正常的“吐槽”行为。万万没想到，对此，涉事餐厅一度发布声明称已报警，将追究相关人员及机构的法律责任，后该声明及声明发布账号均被删除。据报道，视频发布者回应称，截至目前“没有接到警方的任何通知”。狗不理包子（Go Believe/Goubuli steamed bun）是中国天津的一道闻名中外的传统小吃，该小吃以一道由面粉、猪肉等材料制作而成的小吃，其始创于公元1858年（清朝咸丰年间），至今有100多年历史，该小吃为“天津三绝”之首，是中华老字号之一。狗不理包子的面、馅选料精细，制作工艺严格，外形美观，特别是包子褶花匀称，每个包子都不少于15个褶 。刚出笼的包子，鲜而不腻，清香适口。 狗不理包子以鲜肉包为主，兼有三鲜包、海鲜包、酱肉包、素包子等6大类、98个品种。2011年11月，国务院公布了第三批国家级非物质文化遗产名录，“狗不理包子传统手工制作技艺”项目被列入其中,是世界闻名的中华美食之一。所有美食的幕后都蕴藏一个传奇故事，相传百年前，乳名狗子的14岁少年高贵友谋生学艺，三年后在南河岸支摊做起包子生意，他的包子口感柔软、鲜香不腻、形式菊花的包子引来百里人们赞不绝口。且高贵友只顾做包子，而忽略客人，久而久之就有了狗子卖包子不理人的戏称。其实狗不理包子之所以有这么大的名气，还两位大人物的评价有关。清朝民国年间，作为吃遍天下美食界的大人物——慈禧太后，对狗不理包子也是赞不绝口。当年，袁世凯把狗不理包子呈现慈禧的时候，慈禧尝后就当着众人，大赞狗不理包子，甚至直接扬言称“真的是太好吃了”。狗不理包子也便因此得到了非常的名声，当然，除了慈禧太后，毛主席也品尝过这个狗不理包子，对它的味道赞不绝口。那么，作为百年老字号“狗不理”包子，如今又是怎样呢？一些吃过“狗不理”包子的网友都表示，狗不理包子现在是格外的膨胀，已经脱离了日常美食！我们大家都知道，包子再怎么说也是一种普通的食物，但如今狗不理包子的价格几乎已经可以和海参鲍鱼媲美了，这也是让很多人感到离谱的地方。对于一些曾经忠于狗不理包子的网友也表示，而且虽然狗不理包子是百年老字号，但包子的花样也越来越多，与传统越走越远，价格也是一路飙升，甚至不值得去吃。很多人听到价格都觉得偏高，如果说包子的味道还是传统的老味道，而被卖到这个价格，估计吃的人也不会有太多的抱怨，天津狗不理包子的名气也会维持的很好，不像现在很多人一提到狗不理包子，都会一副“算了”的态度，可见不好吃而又偏贵的狗不理包子已经伤透了吃客的心了。如果想品尝天津老味包子的可以去老幼乐、石头门槛、老永胜、张记、老城里二姑，这几个老字号的包子铺。但是最近几年狗不理包子让吃过的人越来越失望了，先不说价格比普通包子高出多少，包子的味道就比之前逊色了不少，很多天津本地的人也觉得现在的狗不理包子已经远远不如当年那个味道好吃了，而且现在狗不理包子在天津已经得不到人们的青睐了，只是在外地的名气比较响亮一些而已。

如何学习一门新的语言
type: item
date: 2020-09-13T17:14:29+08:00
description: AI摘要 本文探讨了学习新编程语言的方法和常见问题。作者指出，仅阅读官方文档和查看开源项目代码对初学者来说并不足够，因为这些资料可能过于复杂或不全面。作者建议初学者从官方提供的Step-By-Step代码开始学习，这些代码由浅入深、有质量保证且更新及时。同时，作者强调了实践的重要性，建议初学者通过小项目逐步提高。最后，作者呼吁开发者社区中的老手和新手之间需要更多的耐心和理解，以减少信息不对称带来的矛盾。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 首先要说，这并不是一篇教你如何学习的文章，因为到今天为止我也没有找到一种通用的方法来解决如何学习的问题。但是在探索的道路上，我确实产生过一些思路，我想把这些思考的过程分享出来让大家探讨。如果这对你有帮助的话，那我会非常高兴。我最近在学习 Rust ，这是一门很酷但是相对冷门的语言（学习冷门语言可能是我的一大爱好，比如我就非常喜欢 CoffeeScript ，这是 JavaScript 的一门方言）。自从在某些语言的舒适区待久之后，经常会产生自己无所不能的错觉，这也是我不断想学习新语言的一大动力。而我的学习过程跟大多数人类似，就是先在网上找文档然后自学。而在看文档的过程中，我就发现了一些问题。手册的作用“去看文档喽。”这是老鸟在面对新手时最喜欢扔的一句话，我通常也是这么扔给自己的。但当你打开一门语言的手册，你会发现它除了教你语法外，几乎没有教你什么其它东西。于是你会陷入这样一个境地：“背下来了么？”“背不下来，太难懂了。”“再看一遍，给我背下来。”。。。“背下来了么？”“大部分背下来了。”“给我写个程序，实现个XX功能。”“不会。。。”“。。。”在一个高级开发者眼里，你会了语法理所当然就应该会写程序了，但实际情况并非如此。这让我想起前段时间跟一个朋友关于目前编程教育市场的一个讨论。我出于自己的经验提出一个想法：让大牛开发者来教新手入门。在我的设想中，大牛开发者拥有强大的实战经验，以及丰富的专业知识，更是自带光环，这不比现在市场上那些半吊子的讲师好多了。在我为自己“伟大”的想法得意的时候，朋友给我浇了一盆冷水。他告诉我这样根本行不通，大牛根本不知道菜鸟需要什么知识，你可能以为基础语法讲清楚就好了，人家却连编辑器是什么都不清楚。设想一下，让一个大学教授去教一群小学生，这对两者来说都是一种灾难吧。这些语言的创造者，或者文档的作者，无疑都是一些大神。它们在撰写一个语言手册的过程中，只能尽量负责地把这个语言的全貌准确地有组织地展现给你。然而这种全面的展现，对于一个没有任何引导的初学者来说并不完全是一件好事。简单来说就是，你会在一些次要的事情上浪费太多时间，而一些主要的概念又没有理解透彻。关于看真实代码当觉得文档满足不了你的时候，老鸟们往往会扔给你第二招：看代码。看什么代码呢？那还用说，当然是被业界奉为经典的，在 GitHub 上至少有一万颗星的知名开源项目代码啦。当你怀着崇敬的心情，打开扔给你的网址，看着满屏幕的代码时，你会对自己问出那三个经典的哲学问题。这是什么东西？它是怎么做到的？为什么要这么写？搞不好某些人还会因为惊吓过度，从而失去了学习下去的信心。那么让我们一起来看看这些代码里有什么鬼东西，会吓得新手信心不足。大段的注释说一件事你们不要笑，在我还是个萌新的时候，我曾经对这些穿插在代码中的神秘文字产生了深深的困惑，我还以为它们对代码有某种加成作用，以至于我还试验过把注释去掉会对代码执行产生什么影响。而现实中好的代码会让后面的维护者方便很多，但不好的甚至错误的注释会让人迷惑不已。语法糖语法糖是个好东西，它大大简化了我们的编程过程，高手用起语法糖写起代码来简直不要太爽，所以越强大的项目这玩意儿越多。但是对于初学者来说，语法糖隐藏了一些细节，而且让语法看起来很怪异。有些代码如果你用标准语法来写是很好懂的，但如果用语法糖来写的话很难让人一下子明白。初学者为了弄懂这些语法往往要花大量时间，但其实这些时间在这个阶段是没必要的浪费。你看不懂它觉得它是一个很重要的东西，其实它只是一个做工精巧的小玩意儿，离开了它这些代码照样能工作。而随着你的经验丰富，也可以随时随地用起来，用的方法可能也不尽相同。代码里的重点对于一个开源项目来说，往往 50% 的代码可能都是在适配各种不同的运行环境，将系统的 API 抽象成项目里通用的接口，这部分代码除非你自己要做类似的项目，要不然的话对初学者…

我的一天
type: item
date: 2020-09-03T23:04:03+08:00
description: AI摘要 作者从去年9月开始在家自学编程和锻炼身体，享受自由生活。今年8月接新项目后，生活变得忙碌且随机。他每天早晨6点起床，晚上7点下班，回家后休息并继续工作。尽管创业过程中有各种情绪波动，但作者认为这是创业的常态，并鼓励自己坚持下去。 document.addEventListener('DOMContentLoaded', function() { const urlDisplay = document.getElementById('urlDisplay'); urlDisplay.textContent = "此内容根据文章生成，更内容请访问：" + window.location.href; }); 大约从去年9月份开始，基本上天天家里蹲，研究JS、BOOTSTRAP、研究PHP之类，加上疫情这几个月，总共大概有10个月左右吧，每天的日程有两部分：1、锻炼身体，2、研究WEB系统开发，每天基本上就是这两件事，自由自在，感觉像是过退休生活。今年8月份开始，又进入了一个新的状态，月初去了一趟东莞，接了个新项目，紧接着又来一个大项目，基本是每天都是随机模式，处理好一件事，又来一件事，钱没赚到，事多了很多。8月中旬项目定下来之后，重新又回到了原来的状态，每天6点左右准时醒来，再趟30分钟左右，起床、上完WC浇花，然后冲个澡，迎接全新的一天。每天到19点的时候，肚子饿得瓜瓜叫，我知道该下班回家吃饭了，回到家休息躺1小时，接着继续工作今天看了一会脱口秀大会，有个段子讲得有点意思，当你下班回家后，不要躺床上，如果躺床上感觉就是真的休息了，躺沙发的感觉又不一样，躺沙发是暂时休息一会，还有工作没有干完，休息一会接着干。每天有很多事，有兴奋的事，有焦虑的事，有担忧的事，有麻烦的事，有各种事或许这就是创业的酸甜苦辣吧，当悲伤的时候，给自己打打气，相信自己一定行；当泄气的时候给自己打打气，当压力大的时候给自己打打气；上班的时候想当老板，当老板之后想当员工上班；其实很多时候很纠结，但是开弓没有回头箭，干就完事了，我们身边有一些创业成功的人，我们看到的都是成功的，其实还有一大部分创业失败的人，只是我们不知道，他们不会说出来，所有事情都是28原则，能成功的都是少数，能成功的都是披荆斩棘的，能坚持到最后的人，好久没有更新博客了，意思一下，更新一篇，继续干，干好！！