某一天你接到一个公司的面试邀请,去参加面试。面试官问你:HashMap熟悉吗?答:熟悉的,经常用。HashMap的底层是什么?答:数组+链表+红黑树。简单讲一下HashMap的实现原理!?答:嗯先用hash算法计算插入位置,然后插入到对应的位置,如果已经有值了判断是否一样,如果不一样就插入到其尾部。那好的,请你说一下HashMap的hash算法的实现,以及为什么?答:计算哈希值&(容量-1),这么做计算插入的位置那加载因子为什么是0.75,初始长度为什么是16?答:初始因子是一个折中的值,发生哈希碰撞的概率低,初始长度16,也是个比较折中的值那加载因子...
大家应该能明显感觉到最近几个月求职环境不太好,但究竟有多不好,具体的情况是什么样的?为了分析程序员职场现状,我进行了裁员情况调查,一共有1011位程序员朋友参与。本文会根据调查结果,为大家带来一些启示(如果不想看分析过程,可以直接跳到文末看结论)。裁员真的多么?按「工作职级」来看,受访者中「初级工程师」的裁员比例最少(可能是因为工资相对最低,裁员收益不大),而「专家及以上」最多,但整体差别不大。平均来看,受访者中有19%经历了裁员。按职级看裁员比例按「公司中技术团队人数」来定义「公司规模」,「技术团队只有几人」...
大家好,我是鱼皮。之前和大家推荐过很多前后端的开源项目,今天再来分享 12 个 yyds 的微信小程序开源项目,每一个项目都很值得学习,速速收藏!全文概览:wechat-app-mall:微信小程序商城;Vant Weapp:小程序 UI 组件库;iView Weapp:小程序 UI 组件库;echarts-for-weixin:Apache ECharts 的微信小程序版本;Gitter:GitHub 微信小程序客户端;winxin-app-watch-life.net:微慕小程序开源版;Bee:餐饮点餐商城;taro-music:网易云音乐小程序;weapp-library:在线借书平台;Garbage:小程序云开发的垃圾分类小程序;WePY:让小程序支持组件...
大家好,我是鱼皮。首先本文不是要辩论 Vue 好还是 React 好,而是要看看这两个框架在低层次上是如何选择的。有些开发者在选择框架之前会倾向于看基准。然而,这并不是最关键的方面,因为 99% 的性能都来自于你写的代码,而不是你使用的框架。那么,为什么得出这个结论的呢?这里选取了三个常见的 web 应用程序问题,并检查了 Vue 和 React 在每个场景中的响应情况。项目这里有一个类似 TODO 的项目,不过这里添加的不是事项而是水果。下面是 React 代码:Vue 代码:测试1:静态模块在第一个测试中,我们将比较 React 和 Vue 是如何编译静态部分的。...
大家好。不知道,这两天大家有没有玩这个小游戏,羊了个羊。火到什么程度呢?微博霸榜、知乎热榜,各大社区无不在讨论个小游戏,甚至就连羊了个羊的官方服务器都崩溃了几次。。9月14日,在经历了两天三崩的“事故”后,@羊了个羊甚至直接在官方微博发布了招聘信息:“简游急招后端服务器开发,推荐入职的奖励五千,自荐入职的奖励五千。欢迎各位小伙伴投简历。”还在最后附上了简历投递邮箱。看得出来,“羊了个羊”的程序员是真的累了。另外,网上还流传一张羊了个羊小程序的流量主收入图,一天净赚近500万,截止到14号当月收入高达25000万。简直就...
哈喽大家好,在我们平时做项目的时候,经常会遇到复杂的业务逻辑,如果使用 if else 来实现的话,往往会很冗长,维护成本也很高。今天编程导航给大家推荐一个轻量级流程引擎LiteFlow,可以优雅地实现复杂的业务逻辑。LiteFlow简介 LiteFlow是一个轻量且强大的国产流程引擎框架,可用于复杂的组件化业务的编排工作。通过它我们可以把业务逻辑都定义到不同组件之中,然后使用简洁的规则文件来串联整个流程,从而实现复杂的业务逻辑。LiteFlow主要特性如下:组件定义统一:所有的逻辑都是组件,直接使用 Spring 原生注解@Component定义即可。规则轻量:...
领取嵌入式学习路线,请加良许微信:coderliangxu-6链接:https://blog.devgenius.io/linux-troubleshoot-network-latency-a6da740f5cb8在我的上一篇文章中,我向您展示了如何模拟 DDoS 攻击以及如何缓解它。简单回顾一下,DDoS 利用了大量的伪造请求,导致目标服务器消耗大量资源来处理这些无效请求,从而无法正常响应正常用户请求。在 Linux 服务器中,可以通过内核调优、DPDK 以及 XDP 等多种方式提高服务器的抗攻击能力,降低 DDoS 对正常服务的影响。在应用程序中,可以使用各级缓存、WAF、CDN 等来缓解 DDoS 对应用程序的影响。但是需要注意的...
领取嵌入式学习路线,请加良许微信:coderliangxu-6链接:https://www.cnblogs.com/liugp/p/16629535.html一、概述Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。官方文档:https://docs.docker.com/engine/reference/builder/Dockerfile 示例:https://github.com/dockerfile/二、Dockerfile 结构Dockerfile 结构主要分为四部分:基础镜像信息维护者信息镜像操作指令容器启动时执行指令 (CMD/ENTRYPOINT)【温馨提示】Dockerfile 每行支持一条指令,每条指令可携带多个参数(支持&&),支持使用以“#“...
领取嵌入式学习路线,请加良许微信:coderliangxu-6推荐一位国外全栈开发者大神:Alyssa,在 Github 上有 5.34K 的关注者。她是一名全栈开发者、Sonuum 公司的创始人。被 Maker Mag 评为 2018 最佳女性 Maker,并两次入围 Product Hunt Maker of the Year 决赛。注:Product Hunt 是国外的一个寻找好产品的网站,开发者或者开发团队可以把自己开发的产品发布到网站,与社区的用户一起讨论。本文中推荐 4 个有趣的开源项目,都是由开发者 Alyssa 完成。本期推荐开源项目目录:1. 适用于 Chrome 的屏幕录制工具2. 强大的浏览器插件3. 实时协作的地图工...
领取嵌入式学习路线,请加良许微信:coderliangxu-6终端是程序员的必备工具之一,今天,给大家介绍几款程序员必备(牛逼)的终端工具!好工具是提高工作效率的必备神器!民工哥在此之前也介绍过不少的常用工具,以及它的使用与配置,大家可以点击文章上方的 Tools 专栏查阅。PuTTY这绝对是一款超级经典的终端工具!99.99%程序员都用过它。PuTTY 是一款集成虚拟终端、系统控制台和网络文件传输为一体的自由及开放源代码的程序。它支持多种网络协议,包括 SCP,SSH,Telnet,rlogin 和原始的套接字连接。它也可以连接到串行端口。其软件名字“PuTTY”...
领取嵌入式学习路线,请加良许微信:coderliangxu-6链接:https://www.cnblogs.com/liugp/p/16721252.html一、概述MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。这里主要讲 mysql 部署在 k8s 上,mysql 部署在 k8s 上的优势主要有以下几点:资源隔离动态弹性扩缩容环境一致性运维方便官方文档:https://docs.oracle.com/en-us/iaas/mysql-data...
领取嵌入式学习路线,请加良许微信:coderliangxu-6什么是最危险的 Linux 命令?有人无数次问我这个问题,我一直避免回答,因为没有一个明确的危险的 Linux 命令清单。你拥有的工具使你能够控制和修改你的操作系统的每一个方面。我不是想吓唬你,但如果你不熟悉这些命令和工具,你可以很容易地把你的系统摧毁。想象一下家庭中的小孩子的情景。孩子有许多方法可以伤害自己。但这是否意味着不应允许孩子离开婴儿床?那会对她的成长造成损害。这就是父母设定界限和引导孩子的地方。不要靠近火堆,不要把手指戳到电源插座上……随着孩子的成长和经验的积...
领取嵌入式学习路线,请加良许微信:coderliangxu-6一些小众的C语言知识点,可能会比较有趣或者怪异,分享给大家看一下。1. 数组下标C语言中访问数组元素一般都写成:arrayName[index]但其实也可以写成:index[arrayName]请看下面的代码:#include <stdio.h>int main(void){ int arr[5] = {1, 2, 3, 4, 5}; printf("%d\n", 2[arr]); return 0;}运行结果:32. 符号替换早期 IBM 在计算机产业中的地位非常重要,但是它的键盘没有中括号和花括号按键,所以在C语言中可以使用其它的组合符号来替代,并且一直保留到现在。我们可以使用<:和:>来代...
领取嵌入式学习路线,请加良许微信:coderliangxu-6链接:来自:高效运维一、校验数字的表达式数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$有两位小数的正实数:^[0-9]+(.[0-9]{2})?$有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$非...
点击左上方蓝色“一口Linux”,选择“设为星标”第一时间看干货文章 ☞【干货】☞【干货】 1任何一个用过或学过C的人对malloc都不会陌生。大家都知道malloc可以分配一段连续的内存空间,并且在不再使用时可以通过free释放掉。但是,许多程序员对malloc背后的事情并不熟悉,许多人甚至把malloc当做操作系统所提供的系统调用或C的关键字。实际上,malloc只是C的标准库中提供的一个普通函数,而且实现malloc的基本思想并不复杂,任何一个对C和操作系统有些许了解的程序员都可以很容易理解。这篇文章通过实现一个简单的malloc来描述malloc背后的机制。...
前言 前面我们了解了一些Camera的基础知识《》。接下来来看看Linux为Camera提供的驱动框架。V4L2简介 V4L2( Video for Linux Two),是一套Linux内核视频设备的驱动框架。该驱动框架为应用层提供一套统一的操作接口(一系列的ioctl)。V4L2在设计时,是要支持更广泛的设备,它们其中只有一部分在本质上是真正的视频设备,所以它不仅仅是为Camera设计。V4L2框架☞【专辑】☞【专辑】☞【专辑】入门☞【专辑】☞【专辑】☞【干货】☞【干货】
大家好,我是张巧龙,今天简单聊聊CPU与GPU。CPU的故事我们聊得比较多了,之前也发布过很多关于CPU的文章,因此这里重点聊聊GPU。01 教授 vs 小学生你可以简单的将CPU理解为学识渊博的教授,什么都精通,而GPU则是一堆小学生,只会简单的算数运算,可即使教授再神通广大,也不能一秒钟内计算出500次加减法。因此对简单重复的计算来说单单一个教授敌不过数量众多的小学生,在进行简单的算数运算这件事上,500个小学生(并发)可以轻而易举打败教授。因此我们可以看到,CPU和GPU的最大不同在于架构,CPU适用于广泛的应用场景(学识渊博),可以执行任意程...
常见IC封装形式大全版权声明:本文来源网络,版权归原作者所有。版权问题,请联系删除。-END-往期推荐:点击图片即可跳转阅读
服务端要向客户端连接发送一个文件,一般过程如下:服务端首先调用 read() 函数读取文件内容。服务端通过调用 write()/send() 函数将文件内容发送给客户端连接。上面过程如下图所示:从上图可以看出,在发送文件的过程中,首先需要将文件页缓存(Page Cache)从内核态复制到用户态缓存中,然后再从用户态缓存复制到客户端的 Socket 缓冲区中。其实在上面的过程中,复制文件数据到用户态缓存这个操作是多余的,我们完全可以直接把文件页缓存的数据复制到 Socket 缓冲区即可,这样就可以减少一次拷贝数据的操作。为了实现这样的功能,内核提供了一...
↓推荐关注↓作者:仙凌阁https://blog.csdn.net/qq_39221436/article/details/125638972大家肯定都知道计算机程序设计语言通常分为机器语言、汇编语言和高级语言三类。高级语言需要通过翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译型,另一种是解释型,因此我们基本上将高级语言分为两大类,一种是编译型语言,例如C,C++,Java,另一种是解释型语言,例如Python、Ruby、MATLAB 、JavaScript。本文将介绍如何将高层的C/C++语言编写的程序转换成为处理器能够执行的二进制代码的过程,包括四个步骤:预处理(Preprocessing)编译(Comp...
亲爱的 React ,我们在一起快 10 年了,我们一起走过了很长一段路,但事情逐渐变得有点失控了,我们需要谈谈。对你一见钟情当我最开始和 JavaScript 相遇时,我并不是一开始就喜欢这个语言。在你出现之前,我对 jQuery、Backbone.js 和 Angular.js 有过很长的学习经历。我知道我可以从这些 JavaScript 框架中得到些什么:更好的 UI、更高的生产力和更流畅的开发人员体验。但也有不得不不断改变我思考代码的方式来匹配框架的思维方式所带来的挫败感。当我刚开始遇到你时,我刚刚结束了和 Angular.js 的长期关系。我已经被 watch 和 digest 折腾累了,...
大家好,我是鱼皮。今天分享一道经典面试题:HTTPS 一定安全可靠吗?这个问题的场景是这样的:客户端通过浏览器向服务端发起 HTTPS 请求时,被「假基站」转发到了一个「中间人服务器」,于是客户端是和「中间人服务器」完成了 TLS 握手,然后这个「中间人服务器」再与真正的服务端完成 TLS 握手。具体过程如下:客户端向服务端发起 HTTPS 建立连接请求时,然后被「假基站」转发到了一个「中间人服务器」,接着中间人向服务端发起 HTTPS 建立连接请求,此时客户端与中间人进行 TLS 握手,中间人与服务端进行 TLS 握手;在客户端与中间人进行 TLS 握手...
点击左上方蓝色“混说Linux”,选择“设为星标”第一时间看干货文章 1 栈是什么?栈有什么作用?首先,栈 (stack) 是一种串列形式的数据结构。这种数据结构的特点是后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 top) 进行 推入 (push) 和 弹出 (pop) 操作。根据栈的特点,很容易的想到可以利用数组,来实现这种数据结构。但是本文要讨论的并不是软件层面的栈,而是硬件层面的栈。大多数的处理器架构,都有实现硬件栈。有专门的栈指针寄存器,以及特定的硬件指令来完成 入栈/出栈 的操作。例如在 ARM 架构上,R13 (SP...
点击左上方蓝色“混说Linux”,选择“设为星标”第一时间看干货文章 1 Linux 的发行版有很多,这里罗列7个漂亮的 Linux 发行版,可以说是Linux操作系统界的颜值担当了。 01elementary OS 网站:https://elementaryos.cnelementary OS操作系统是最漂亮的Linux发行版之一。它基于macOS外观,同时为Linux用户提供了出色的用户体验。如果用户已经习惯使用macOS,则使用elementary OS不会有任何问题。另外,elementary OS操作系统基于Ubuntu,因此用户也可以轻松找到大量应用程序来完成任务。elementary OS不仅限于外观,而且在不断的改进。...
大家好,我是LinuxZn。前言 本篇博文我们来分享嵌入式Linux设备开启无线AP/无线接入点(Wireless Access Point)的方法。什么情况下会用到无线AP?我最近的工作中有如下两种情况需要用到:(1)AP配网。设备热点配网,智能硬件处于AP模式,手机作为STA连接到处于AP模式的智能硬件后组成局域网。此时,手机就可以通过局域网把设备即将连接的路由的ssid和pwd信息至智能硬件,智能硬件接收后,连接路由器,完成配网。(2)把废旧不用的板子作为开启无线AP组建各设备的局域网通信。对于移动机器人的开发来说,设备实际工作过程中,无线调试无疑是最方便...
2023年开工也快两个星期了,各个公司的年终奖大多尘埃落定了,大环境说实话不是很好,有人欢喜有人愁,汇总了一波,大概50位小伙伴的数据,给大家分享一下。之后如果有求职、跳槽的打算,可以作为部分参考信息。1、图森未来、算法部、年终奖总额30万、5年工作经验2、百度、推荐、年终奖总额8万、5年工作经验、后端开发3、快手、海外、年终奖总额12万 1年工作经验 研发4、Google、TI、年终奖总额1万 1年工作经验 基础架构研发 海南三亚5、广汽埃安、研发、年终奖总额2.7万 0.3年工作经验6、理想汽车、智能空间、年终奖总额4万 1年工作经验 研发7、快...
大家好,我是LinuxZn。本次我们来分享gear-lib:什么是gear-lib? gear-lib是一组通用的C基础库。全部用POSIX C实现,目标是为了跨平台兼容linux, windows, android, ios。适用于物联网,嵌入式,以及网络服务开发等场景。gear-lib地址:https://github.com/gozfree/gear-lib或者https://gitee.com/gozfreee/gear-liblicense:MIT。关于开源软件协议相关文章:gear-lib的使用 gear-lib整理涵盖如下内容:下载得到:下面基于Ubuntu环境,整体编译、安装:./build.shsudo ./build.sh install下面我们选取几个库实践感受一下(库的文件夹下面有对应...
击上方“一口Linux”,选择“星标公众号”干货福利,第一时间送达!作者:zebra081.问题的引入程序员最不能容忍的是在使用终端的时候往往因为网络,关闭屏幕,执行CTRL+C等原因造成ssh断开造成正在运行程序退出,使得我们的工作功亏一篑。其背后的主要原因在于上述的相关操作,shell默认会发送中断信号给该终端session关联的进程,从而导致进程跟随终端退出,为了弄清这个问题我们首先要了解两种中断信号:1)sigint:signal interrupt,ctrl+c会发送此信号,主动关闭程序2)sighup: signal hang up,关闭终端,网络断线,关闭屏幕会发送此挂断信号...
作者:Shawn派大星链接:https://www.cnblogs.com/songhaixing/p/13799827.html一进程, 线程1.进程什么是进程?开发写的代码我们称为程序,那么将开发的代码运行起来。我们称为进程。明白点: 当我们运行一个程序,那么我们将运行的程序叫进程。精简重点进程是申请一块内存空间,将数据放到内存空间中去, 是申请数据的过程是最小的资源管理单元进程是线程的容器程序与进程的区别程序是数据和指令的集合, 是一个静态的概念, 就是一堆代码, 可以长时间的保存在系统中进程是程序运行的过程, 是一个动态的概念, 进程存在着生命周期, 也就是说进程会随着程...
来源:blog.csdn.net/weixin_45417821/article/details/122579794TabbyTabby 是一名老外在 Github 开源的终端连接的工具,至今已经累积 36K+ star。Tabby 的功能特性大概有:支持多平台,Windows、MacOS(Intel 芯片/M1 芯片)、Linux 都有对应的安装包的;自带 SFTP 功能,能够与 Linux 系统传输文件;炫酷的终端页面,简单易用,以及各种插件支持等;安装包github地址:https://github.com/Eugeny/tabby/releases找到适合自己电脑的安装版本安装之后是这个页面SSH连接一开始我以为点击「New terminal」是弹出填写连接服务器的信息。结果不是,它默...