202302

算法

为什么 360 面试官说 Trie 树没用?
https://www.zhihu.com/question/27168319

多模式匹配算法-AC算法等
https://blog.csdn.net/xiaof_90/article/details/77447625

问题一:如果有一个关键词,然后让你在一段长文本中找出这些关键词,如何做?
问题二:如果有10K个关键词,然后让你在一段长文本中找出这些关键词,如何做?

如上问题一中,一段长文本中找一个关键词,那么就是单模式匹配。除了朴素算法(暴力算法)之外,还有一些经典的算法,例如KMP算法等。
问题二中,一段长文本中找N个关键词,那么就是多模式匹配,除了朴素算法外,也有一些经典的算法,例如AC算法、BM算法等。

https://pypi.org/project/cyac/

>>> ac = AC.build([u"python", u"ruby"])
>>> for id, start, end in ac.match(u"python ruby"):
>>>     print(id, start, end)

适用于大规模的多关键字匹配的多模匹配算法

  • agrep 对处理大规模的多关键字匹配问题有高效。多模式中最著名的快速匹配算法之一。
  • MultiBDM 基于AC和DAWG两种自动机扫描思想的多模匹配算法。根据匹配过程中使用时可的不同,作者提出了两种改进。

python

获取异常信息

try:
    pass
except Exception as e:
    print getattr(e, 'message', repr(e))

Python性能分析工具Line_profiler
https://blog.csdn.net/weixin_44613728/article/details/120411325

Python代码优化工具——memory_profiler
https://blog.csdn.net/weixin_42245157/article/details/126623370

pip install line-profiler
pip install -U memory_profiler

def cpu_profiler():
    from line_profiler import LineProfiler
    p = LineProfiler()
    p.add_function(match_keywords)
    p_wrap = p(run)
    p_wrap()
    p.print_stats()

def mem_profiler():
    from memory_profiler import profile
    p = profile(precision=4)(run)
    p()

python ahocorasick介绍
https://blog.csdn.net/u010569893/article/details/97136696

ahocorasick 是个 python 模块,Aho-Corasick 算法是多模式匹配中的经典算法,目前在实际应用中较多。

  • Trie是一个字符串索引的词典,检索相关项时时间和字符串长度成正比。
  • AC自动机能够在一次运行中找到给定集合所有字符串。
  • AC自动机其实就是在Trie树上实现KMP,可以完成多模式串的匹配。

linux

Linux 内核 101:NUMA架构
https://zhuanlan.zhihu.com/p/62795773

proxy setting

bash <(curl -s -L https://git.io/v2ray.sh)
stress-ng -c 0 -l 30 -t 8640000000

mysql

带进度导入数据

pv database1.sql.gz | gunzip | mysql -uroot -p database1

字节面试:知道MySQL 的 NULL 值是怎么存放的吗?
https://blog.csdn.net/Javatutouhouduan/article/details/128150631

结果集行号

select @rowNum:=@rowNum + 1 AS '行号',a.username,a.money
from account a, (select @rowNum:=0) b

books

The Subtle Art of Not Giving a F*ck
https://book.douban.com/subject/26895197/

作者:易又饕(来自豆瓣)
来源:https://book.douban.com/review/10006306/

  • 第一,要区分“快乐”(happiness)和"快感"(high)。前者具有可持续性,能真正让生活变得美好。后者往往是短暂的生理刺激,在刺激结束后还可能带来更深的痛苦。
  • 第二,生活中充满了问题,因为问题本来就是生活的常态。不必为连绵不断的问题本身而感到苦恼,如果因为这些苦恼而纠结,我们必然就干不了其他事情,进而会为无所成就而进一步苦恼,陷入恶性循环。
  • 第三,快乐只有在解决问题的过程中才能获得,而从长期来看,逃避问题只能带来更多的压力和挑战。用追求快感的方式来逃避挑战,最后只能像喝海水解渴,越喝越渴。
  • 第四,既然痛苦和挣扎是人生不可避免的一部分,就应该时刻做好直面它们的准备。同时,要选择自己的战场,把精力、能力和毅力用到那些真正值得解决的问题上。
  • 第五,明白自己所在乎的价值,同时明白自己用以衡量这些价值的标尺是否真正合适。好的价值,是往往是自己可以掌控的、真实的并且不会伤害其他人。好的标尺,往往也不依赖于我们无法控制的他人评价。
  • 第六,真正能够持续带来快乐的,只有不断提升自我、不断达到目标、不断解决问题的过程,而任何存量指标,比如金钱的数量等等,一旦被我们达到,就不会再带来快乐了。
  • 第七,没有必要和别人比较。没有必要对自己感觉过于良好或者不好。有时候,我们觉得自己在某些方面表现平常,这本来就是生活的应有之义,接受就好。
  • 第八,与其抱怨自己没有灵感或者动力,不如直接上手去干事情。很多时候,灵感和动力是在劳动的过程中产生的。克服惰性与恐惧,踏踏实实开始行动,很多问题都会迎刃而解。
  • 第九,情感上的支持自有其意义和价值,但每个人的问题都要每个人自己去解决。亲密关系中最好的相处之道,不是施舍与依赖,而是坦诚与理解。
  • 第十,生命短暂,但生活充实的人在死亡面前就会变得坦然。我们所在乎的许多东西,在生命这个宏大的命题面前,可能根本就不值得为之纠结。我们要选择自己在乎什么。

AI

GPT in 60 Lines of NumPy
https://jaykmody.com/blog/gpt-from-scratch/

投资

在投资分析中,简单的往往是实用的。我的投资理念很简单:在好行业中挑选好公司,然后等待好价格时买入。与之相对应的投资分析工具也同样简单。

  • 波特五力分析。不要孤立地看待一只股票,而要把一个公司放到行业的上下游产业链和行业竞争格局的大背景中分析,重点搞清三个问题:
    • 公司对上下游的议价权
    • 与竞争对手的比较优势
    • 行业对潜在进入者的门槛。
  • 杜邦分析。弄清公司过去5年究竟是靠什么模式赚钱的(高利润、高周转还是高杠杆),然后看公司战略规划、团队背景和管理执行力等是否与其商业模式一致。例如,
    • 高利润模式的看其广告投入、研发投入、产品定位、差异化营销是否合理有效,
    • 高周转模式的看其运营管理能力、渠道管控能力、成本控制能力等是否具备
    • 高杠杆模式的看其风险控制能力、融资成本高低等。
  • 估值分析。通过同业横比和历史纵比,加上市值与未来成长空间比,在显著低估时买入。

这“三板斧”分别解决的是好行业、好公司和好价格的问题,挑出来的“三好学生”就是值得长期持有的好股票了。

javascript

js 爬虫
https://github.com/zloirock/core-js/blob/master/scripts/usage/usage.mjs

others

TL;DR: The Top 6 Text Summarization APIs
https://rapidapi.com/blog/top-text-summarization-apis/

随机卡通头像
Vanilla JavaScript Library For Creating Avatars On The Client or Server-Side
https://webcodeflow.com/avataaars-js

SQLite the only database you will ever need in most cases
https://www.unixsheikh.com/articles/sqlite-the-only-database-you-will-ever-need-in-most-cases.html
https://news.ycombinator.com/item?id=34812527

Goodbye, CSS-Tricks!
https://geoffgraham.me/goodbye-css-tricks/
https://news.ycombinator.com/item?id=34864701
https://css-tricks.com/snippets/css/a-guide-to-flexbox/

Write a First Person Game in 2KB With Rust
https://grantshandy.github.io/posts/raycasting/

数字人建模软件,有14天试用 https://www.agisoft.com/ Process digital images and generate 3D spatial data. Fast and highly accurate.

Deepfakes中文版,汉化版下载,各换脸软件下载(都已整理好)
https://blog.csdn.net/woniu211111/article/details/107901535
https://github.com/deepfakes/faceswap
https://blog.csdn.net/kaidikake/article/details/105224241

java

Bistoury原理解析
https://cloud.tencent.com/developer/article/1553180

Bistoury
去哪儿网开源的一个对应用透明无侵入的Java应用诊断工具,可以让开发人员无需登录机器或修改系统,就可以从日志、内存、线程、类信息、调试、机器和系统属性等各个方面对应用进行诊断,提升开发人员诊断问题的效率和能力。内部集成了arthas,所以它是arthas的超集。其中两个比较有特色的功能:在线DEBUG、动态监控,就是基于 Instrumentation + ASM 做的。

iBatis详解以及和MyBatis区别
https://www.iocoder.cn/MyBatis/x-plugins/

https://blog.csdn.net/zzuhkp/article/details/123518287

spring-boot-starter-parent 和 spring-boot-dependencies 都进行了依赖管理,如果依赖中存在漏洞我们就需要紧急进行修复,它们之间的升级方式有所不同。

  • 对于 spring-boot-starter-parent 而言,我们可以直接在 properties 中指定依赖的版本,因为在 spring-boot-dependencies 中包的坐标使用了这个属性值作为版本号
  • 对于 spring-boot-dependencies,如果要进行依赖升级,配置属性是不行的,需要在 spring-boot-dependencies 前面加上要升级的依赖的坐标
  • 如果要升级的依赖不是 spring-boot-starter-parent 或 spring-boot-dependencies 管理的依赖,还可以直接把它加到 dependencies 标签下,这样依据最短路径原则,我们直接配置的依赖会覆盖间接引入的依赖