hunkier

学习笔记,开源代码,技术分享

随着前端技术的快速发展,页面的很多功能和组件都有开源的实现,只需要把对应的开源项目的依赖加入到 package.json 的 dependencies 节点,配置好坐标中的项目名称和版本,便可直接使用。

但依赖的开源项目中往往只用到了其中的少部分功能或代码,但在使用 webpack 打包时会把开源依赖包中所有的资源全打包,这时需要进行相应的优化。

阅读全文 »

我们会在“管钱”上栽跟头、走弯路,不是因为这事有多困难,而是因为我们没有像重视自己的工作一样重视它。

也许你会说,我当然要重视工作了,要不然挣不到钱,又何谈管钱呢?这种想法不是没有道理,但是你有没有想过:为了挣钱而行色匆匆的我们,愿意花100% 的精力在工作上,却从没有停下脚步,花哪怕是 5% 的时间认真思考下关于“钱”的问题。我们为了挣钱,可以用996 的节奏工作,但真的挣到钱了,却总是往那里一放,任其贬值,或者随便投到某些看似会赚钱的地方,被别人收割。这不是很荒谬吗?

英文中有个词叫“low hanging fruit”,字面意思是“挂得很低的、容易摘的果实”,含义是那些容易实现的目标。我相信,一个真正的聪明人,应该学会用更少的精力去摘到那些生活中的 low hanging fruit。和解决你工作中那些极端刁难人的问题相比,进行有效的财富管理就是“容易摘的果子”。而我要做的,就是教给你正确的财富管理方法,让你能不那么费力地跳一跳,就能摘到这些果子。

如果你现在把 100%的时间都放在工作、学习上,那么不妨挤出 5%的时间,学习正确的财富管理方法。随着时间的推移,我相信财富管理带给你家庭的收益将逐渐超过工资收入。用5% 的时间,换取至少 50% 的收益,聪明的你不可能错过这笔买卖吧。

阅读全文 »

极客时间《MySQL实战45讲笔记》学习笔记

基础篇

大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。

Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。

而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。

WAL 的全称是 Write-Ahead Logging,它的关键点就是先写日志,再写磁盘

阅读全文 »

使用jmeter压测服务器接口,出现连接超时或者无法找到路由之类的错误。发现实际瓶颈并非出现在服务器上,而是在本机。

最大连接数限制

最大连接数限制就是系统所能打开的最大文件数(文件描述符)的限制,分全局和进程两种,相应的命令如下:

1
$ sysctl kern.maxfiles

输出

1
kern.maxfiles: 12288

说明:全局限制,也就是系统默认的最大连接数限制是12288

阅读全文 »

1.背景

Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。

我非常喜欢这种自动装配的机制,所以在自己开发中间件和公共依赖工具的时候也会用到这个特性。让使用者以最小的代价接入。想要把自动装配玩的转,就必须要了解spring对于bean的构造生命周期以及各个扩展接口。当然了解了bean的各个生命周期也能促进我们加深对spring的理解。业务代码也能合理利用这些扩展点写出更加漂亮的代码。

在网上搜索spring扩展点,发现很少有博文说的很全的,只有一些常用的扩展点的说明。

所以在这篇文章里,我总结了几乎Spring & Springboot所有的扩展接口,以及各个扩展点的使用场景。并且整理出了一个bean在spring内部从被加载到最后初始化完成所有可扩展点的顺序调用图。从而我们也能窥探到bean是如何一步步加载到spring容器中的。

阅读全文 »

  • 深度学习离不开数学分析(高等数学)、线性代数、概率论等知识,更离不开以编程为核心的动手实践。

  • 无论是在机器学习还是深度学习中,Python 已经成为主导性的编程语言。而且,现在许多主流的深度学习框架都提供Python接口,Python被用于数据预处理、定义网络模型、执行训练过程、数据可视化等

  • 熟悉 Python 的基础语法,并掌握 NumPy,Pandas 及其他基础工具模块的使用对深度学习实践是非常重要的!


阅读全文 »

python基础语法

1
2
3
4
#1.基础操作
age = 20 # 声明一个变量age 用来存储一个数字 20
1+1 # 基础数学加法
print('Hello World!') # 打印Hello World!
1
2
3
4
5
#2.条件判断if
if 1 == 2: # 如果 if 跟随的条件为 假 那么不执行属于if 的语句,然后寻找 else
print("假的")
else: # 寻找到 else 之后 执行属于else中的语句
print("1==2是假的")
阅读全文 »