思源笔记
使用 思源笔记 作为自己的笔记软件,是出于以下几点:
思源笔记是已本地优先的笔记。避免了云端出现问题后,笔记无法使用的尴尬。
思源笔记可以采用自建的服务器来同步数据(支持S3协议和webdav),并采用端到端加密同步,个人笔记的一些重要、敏感内容不用担心泄密。
多层级的笔记管理方式。(这里吐槽印象笔记不支持多层级)
插件、主题、外挂等扩展性比较好。
用自建同步的话,价格是买断制,不用持续的支出。
自建minio服务搭建服务器弄一台服务器的方式有很多:
oracle 的免费云服务器,一个账号2台,每台1G内存,默认50G硬盘(安装完系统剩下30G左右,另外免费账号一共是200G硬盘),带宽0.5G左右。用来同步数据绰绰有余了。
自己家里架设一台微电脑(最好是低压的CPU,低功耗)配合内网穿透用来同步数据也是绰绰有余了,内网穿透推荐natfrp。
阿里云/腾讯云买一台服务器,一般首年只有100不到。阿里云的话是新老优惠99一年,可以原价续费,2C2G3M的服务器。一个实名账号仅限购买一台。
搭建面板服务器架设完成之后就是搭建面板,推荐使用1panel, ...
程序人生
未读关于Dotnet工具箱参考开源项目 it-tools 搭建,感谢开源的力量。
这是一个很棒的网站,由 Corentin Thomasset 开源分享,再由dotnet9参考搭建、修改、个性化完善部署。
点击查看部署效果
部署下载源码github Dotnet9
如果只要工具箱的话,那就只需要src/Dotnet9.Tools 目录下的内容就可以了。
构建1docker build -t dotnet:v0.6 .
其中dotnet:v0.6只是本地镜像名字和版本,可以自己取。
构建完成之后就可以启动docker镜像了,映射容器内的80端口就可以
或者也可以参考docker-compose.yml
12345678910111213141516171819202122networks: 1panel-network: external: trueservices: dotnet: container_name: dotnet deploy: resources: l ...
程序人生
未读
最近chatGPT越来越火了,如果能用工具提高日常办公效率,那何乐不为呢
这里推荐2个浏览器的插件 sider 和 CHATSNOW
当我们在网页上选中一段文字后,就会自动给出快捷AI的选项
可以总结、解释等等,是其他语言的时候还能做翻译。
除了快捷操作之外,还能根据这个上下文继续对话,直接人机交互。
当然这些操作都是不再需要翻墙,国内网络就可以正常使用了。2个插件都是有每天的免费额度,轻度使用时完全不需要担心。如果是重度使用的话,那说明工具能带来非常大的帮助,大大提高效率。
在日常工作中为AI工具付费究竟值不值得呢?
AI技术在日常工作中的应用越来越广泛,它可以提高工作效率、降低成本、优化决策等。然而,是否值得为了AI付费取决于具体的应用场景和需求。
如果AI技术可以帮助你解决工作中的难题,提高工作效率,那么投资AI可能是值得的。例如,使用AI进行数据分析、自动化流程、智能客服等,都可以为企业带来显著的效益。
如果你所在的行业正面临着严重的人才短缺问题,AI可以在一定程度上缓解这种压力,提高企业的竞争力。在这种情况下,投资AI可能是明智的选择。
如果你的工作涉及到大量的重复 ...
金线
成事学四大公理
第一公理:人类在任何时候都要追求资源的最佳利用率和效率的最大化
第二公理:尽管任何事都没有完美解决方案,但是任何事在某个时间范围内一定有最佳解决方案
第三公理:诸法无我,无常是常,不要恋战,不要试图解决所有问题,全面应用二八原则
第四公理:解决一切问题的实质就是追求以假设为驱动、以事实为基础、符合逻辑的真知灼见(金线原理)
和结构化思维相悖的错误
审题错误快跑者未必先达,力战者未必能胜
我执错误刻舟求剑,盲人摸象
金字塔错误没遵循金字塔原理,没做到不重不漏
人力错误在解决困难问题上没能做到人岗匹配
分析错误
没有足够的脑力
没有足够的工具
没有足够的数据或者估算能力
行动错误没有和具体行动紧密结合
静止错误遇到变化不能一蹴而就
结构化思维的二十条军规第一:假设驱动
无论如何给出第一天答案,即使它是假设的、直觉的、不一定正确的
第二:确立常规
确立沿着金线拿到最终真知灼见的机制和流程
第三:界定问题
多数错误源于没有审题
没有审题的原因
没有足够的脑力审题
没有足够的时间审题
如何更好的审题
这个问题涉及的核心词的定义是什么?
产生这 ...
背景使用树莓派和内网穿透,可以很好的部署一些自己的小网站,尤其是那些对可用性、稳定性不是很高要求的网站。不过局限于内存(8G)和SD卡读写速度,导致性能还是有一丢丢的慢。
如果用家用电脑或者NAS来搭建的话,一个是成本会很高,另外一个是功耗太大,24小时开机也是一笔不小的电费。
硬件更换最近正好看到了微主机(M9),采用了interl N200的低功耗cpu,这样可以保证功耗不会太大(虽然比树莓派还是有点高的),待机也就10w~15w左右。也可以配置32G内存和1T固态硬盘,这样的性能比树莓派有很大的提升。
软件更换更换系统买来的时候预装了桌面系统,不过我们不需要桌面系统,作为服务器使用,只需要能够开机联网,打开ssh就可以了,剩下的都可以通过ssh操作主机。
系统安装比较简单,先下载官方的镜像,例如Ubuntu Server 22.04.3 LTS ,选择这个比较新的,长时间支持的服务版本。镜像下载
由于机器本身没有光盘驱动,所以需要通过U盘来安装系统。在mac上插入U盘,然后通过以下命令把系统镜像写入U盘。
12diskutil unmountDisk /dev/disk2/Us ...
背景上一次我们了解mysql在事务隔离级别为可重复读的情况下,加锁的各种现象。
知识点整理(十二)——mysql可重复读级别下的锁
这次来看一下在读已提交级别下加锁的各种情况。
实验主键索引等值更新命中1update lock_test set f_num = 0 where id = 10;
除了表意向排它锁之外,就加了主键的记录锁,这个和RR级别一样。
未命中1update lock_test set f_num = 0 where id = 11;
这和RR级别不一样了,除了表意向排它锁之外,没有任何锁。
范围更新命中1update lock_test set f_num = 0 where id >= 5 and id <=15;
这次也和RR级别不一样,除了表意向排它锁、主键记录锁之外没有间隙锁。
未命中1update lock_test set f_num = 0 where id >= 5 and id <=7;
这次依旧和RR级别不一样,但是和等值主键查询未命中是一样的,除了表意向排它锁之外,没有任何锁。
唯一索引等值更新命中1u ...
背景之前了解了mysql中的事务隔离级别,也了解了mysql中mvcc的原理。
{cat_insidepost id=”17”}
现在对不同事务隔离级别下数据库是如何加锁的比较好奇。所以从理论知识和实践两方面进行学习。
准备工具和命令
首先准备好mysql,这里用的是8.0.21版本。
接着准备表结构,一共4个字段:一个主键、一个唯一索引、一个普通索引和一个普通字段。
12345678910CREATE TABLE `lock_test` ( `id` bigint NOT NULL COMMENT '数据库主键', `f_uq` int NOT NULL COMMENT '唯一索引字段', `f_index` int DEFAULT NULL COMMENT '索引字段', `f_num` int NOT NULL COMMENT '测试表', PRIMARY KEY (`id`), UNIQUE KEY `uq_qu` (`f_uq`), KEY `idx_index` ...
背景最近更换了博客程序和主题,网站首页访问比较慢。由于之前采用的是hexo生成的纯静态页面,所以觉得换成typecho驱动的博客,有点慢也是正常的。等到把博客的内容都迁移完之后,就开始一点一点排查网站打开慢的原因了。
优化cdn打开一个网站比较慢,首先想到的是加载了很多内容,例如js、css、图片、字体文件等等。由于这些很少会发生变化,所以可以直接采用CDN的方式来加快速度。好在主题提供了相关资源cdn的设置,又有又拍云免费的cdn,所以处理起来也是比较简单的。
除了配置cdn之外,可以在cdn的浏览器缓存中也设置一下,毕竟这些静态文件很有可能几周甚至几个月都不会更新。
静态缓存对于博客来说,页面可以大致分为2种。一种是用户未登录,看到的都是一样的前端页面,这种非常时候缓存起来,下次再访问就不用再执行php和数据库查询了。好在,宝塔面板也提供了这样的功能“宝塔网站加速”。
宝塔网站加速中可以配置typecho加速规则,几乎是一键设置了。这边我设置了8小时的缓存时间,这样8小时内未登录的用户访问同一个页面是非常快的。
可以看到,效果很明显,原本首页(TTFB)需要700毫秒的,现在 ...
不同的公司总会有一些激励员工的奖项,突然发现每家公司,我或多或少都会拿到一些奖项。有些存粹是精神激励,但有些是有实质的物质奖励。😇
程序人生
未读一般来说2月份最短,只有28天或者29天。当历史上有这样一个月份,只有21天,那就是1582年的10月份。10月4日之后直接就是10月15日了,缺少了10天。
为什么会这样呢?
1582年10月只有21天是由于教皇格里高利十三世于该年颁布了一项宗教法令——“格里历”(Gregorian calendar),旨在修正当时使用的儒略历(Julian calendar)与真实太阳运行轨迹之间的差距。
儒略历中一年的长度是365.25天,但实际一年的长度略短于这个数字,约为365.2422天。这个微小的差异在长期积累下来会导致时间的偏差,比如春分和秋分等节气的日期会与真实时间不同步。格里历的改革将闰年规则调整为闰年只有在符合以下条件之一时才增加一个日历日:①能被4整除但不能被100整除;②能被400整除。这样一来,平均年长变为365.2425天,与真实年长相近,将时间误差缩减到每年约0.03天。
为了实现这个改革,教皇格里高利十三世下令从1582年10月4日开始,将日历推迟10天,即10月4日之后的下一天直接变成10月15日。这个操作虽然简单,但给当时使用儒略历的国家带来了极大的困难和混乱,尤 ...
什么是ChatGPT?ChatGPT是由OpenAI开发的一种大型自然语言处理模型,可以理解和生成人类语言。它使用了GPT(Generative Pre-trained Transformer)算法,可以根据给定的上下文生成文本,包括对话、文章和诗歌等等。ChatGPT使用了一个庞大的神经网络,以前人们需要使用大量的计算资源来训练和使用这样的模型,但现在,它可以在云端提供服务,让任何人都可以访问。ChatGPT经过广泛的预训练,拥有数十亿个参数,可以理解语言的细微差别和语境,这使得它可以更好地进行对话和文本生成。在聊天对话中,ChatGPT可以作为一个虚拟的对话伙伴,与人类进行交流。它可以回答问题、提供建议、分享知识、讲故事等等。在文章和文本生成方面,ChatGPT可以生成一篇文章或者一首诗歌,根据给定的主题、风格和语境来进行生成。总之,ChatGPT的出现开启了人机交互的新纪元,将人类和机器之间的沟通和交流提升到了一个新的高度。
ChatGPT为什么那么火?ChatGPT之所以如此火爆,是因为它是一款由OpenAI开发的自然语言处理技术(NLP)应用,可以通过对话和用户交互来提供智能 ...
背景在2022年的时候开设了个人养老金账户,并存入了第一笔个人养老金。现在已经是2023年了,很快就会进入个税年度汇算了,能免一些个税就免一些个税呗。
导出个税缴纳凭证
首先打开招商APP(为什么是招行?当然是因为我开的个人养老金账户是在招行开的呗),进入我的页面。
进入账户总览
选择个人养老金区域
选择缴费凭证
查看说明后进入
选择2022年,选择自己缴费的记录,并下载
填写自己的邮箱
确认后就会往自己邮箱发送缴费凭证了
接着登录自己邮箱,查收PDF邮件
其中最重要的就是一个缴费凭证二维码。
至此,缴费凭证已经顺利的导出了。接着就是在个税APP中导入相应的信息了。
导入个人养老金减免信息
打开个税APP,选择办税。
接着选择个人养老金扣除信息管理。
选择扫描录入,这里就需要扫描之前PDF中的二维码了。
扫描完成后得到成功的提示。
最后我们就可以看到相应的个人老金扣除信息了。
至此,顺利的完成了个人养老金减免信息的录入,就等年度汇算的时候退税了。
背景前不久使用了内网穿透+树莓派搭建了自己的服务器,最近正好又烦恼音乐的问题。现在听自己喜欢的歌都需要在好多平台上充值会员,哪天会员到期就无法听了,一个平台又听不全,实在是非常恶心。于是想着自己搭建一个属于自己的私有音乐云。
于是使用开源的navidrome搭建一个自己的私有音乐云,它除了支持web播放外,还支持app,这里推荐使用安卓的substreamer应用,除了支持播放音乐外,还支持缓存音乐、更可以设置2个服务器地址(为啥要2个?当然是为了内网穿透考虑的,在内网时直接访问内网地址,在外网时使用内网穿透地址,非常贴心)
部署服务端先建立一个docker-compose.yml文件
123456789101112131415161718192021version: "3"services: navidrome: image: deluan/navidrome:latest container_name: navidrome ports: - "4533:4533" # 左边可以改成自己服务器未被占用的端口 ...
背景123456789101112int value = 3;boolean isFinsh = false;void exeToCPUA(){ value = 10; isFinsh = true;}void exeToCPUB(){ if(isFinsh){ //value一定等于10?! assert value == 10; }}
当2个线程分别执行exeToCPUA和exeToCPUB方法时,由其是2个线程分给了不同cpu内核执行的情况下,在exeToCPUB方法中读到的value值不一定是10这就需要我们使用java的关键字voliate来保证其可见性。可是为什么呢?
CPU与内存为了了解最根本的原因,我们需要了解CPU和内存。先来看看CPU和内存的工作效率,CPU的时钟周期就是CPU频率的倒数,频率越高的CPU时钟周期约小。那CPU执行一个指令需要多少时钟周期呢?这根据指令的复杂程度而不一样,简单的指令只需要2个时钟周期。那么操作一次内存需要多少时间呢?大概需要100多个CPU的时钟周期。可 ...
背景先来看这么一段代码
123456789101112131415161718192021public class Test { public static AtomicInteger num = new AtomicInteger(0); public static void main(String[] args) throws InterruptedException { Runnable runnable = () -> { for (int i = 0; i < 1000000000; i++) { num.getAndAdd(1); } System.out.println(Thread.currentThread().getName() + "执行结束!"); }; Thread t1 = new Thread(runnable); ...
程序人生
未读背景家中闲置的一个树莓派,想着如果能用来建立网站,那也算有点用处了。看了一下树莓派的配置,和阿里云对比,那可是要不少软妹币的。
安装树莓派这里先说一下踩过的坑,如果刷raspberry pi os 的话,那后期安装nginx、mysql等都比较麻烦,如果只是想用来搭建网站服务器的话,可以刷ubuntu ,配合免费版宝塔面板,何乐而不为呢?
刷ubuntu首先下载raspberry pi Imager ,这个从官网下载就好,无论是win系统还是macos都有对应的版本。https://www.raspberrypi.com/software/
打开软件,选择os、sd卡,这里选择的是ubuntu server版本,我的树莓派都没有接显示器,所以不用装桌面版。
然后千万别忘记设置ssh服务和WIFI
这个工具方便之处在于OS镜像、ssh服务、WIFI一次搞定。烧录完成之后就可以将SD卡插入树莓派启动系统了。
调整系统刚刷完的系统还需要做一些小调整,首先通过路由器找到raspberry的ip想固定IP的话,顺带用路由器绑定一下mac和ip地址就好了。
然后登录树莓派的ssh服务(可以使用 ...
MaxCompute支持半连接操作,通过右表过滤左表的数据,使右表的数据不出现在结果集中,可以提高查询性能。
left semi join当join条件成立时,返回左表中的数据。如果左表中满足指定条件的某行数据在右表中出现过,则此行保留在结果集中。
left anti join当join条件不成立时,返回左表中的数据。如果左表中满足指定条件的某行数据没有在右表中出现过,则此行保留在结果集中。
示例数据
1select * from sale_detail a left semi join sale_detail_sj b on a.total_price=b.total_price;
1select * from sale_detail a left anti join sale_detail_sj b on a.total_price=b.total_price;
hive中如何进行行转列呢?
我们先创建一个表,并初始化一些数据进去
12345678CREATE TABLEtest( name STRING COMMENT '姓名', subject STRING COMMENT '主题', score INT COMMENT '分数' ) COMMENT '测试表' ;INSERT INTO test values('张三','语文',100),('李四','语文',90),('张三','数学',80),('李四','数学',80);
可以看到现在表test中的数据是这样的
现在我们用name进行分组,然后把subject的语文、数学变成列,再将score变成语文、数学列的值。
12345SELECT name,concat_ws('-',collect_ ...