首页 文章 精选 留言 我的

精选列表

搜索[Excel导题],共7152篇文章
优秀的个人博客,低调大师

「中国词元」:芯片、模型、绿电的算术题

8 月 28 日周五晚,天际资本创始人张倩和开源中国 CEO 徐勇做了一场直播,聊的是英伟达收购 Hugging Face。直播后半段,徐勇提了一个概念,叫「中国词元」。 这个词是开源中国董事长马越提出来的,还在区块链上做了存证。公式很简单,中国词元=中国芯片+中国模型+中国绿电,这是一笔清晰的成本账。 徐勇讲了他在美国的见闻。今年 5 月,他有个朋友的孩子在哈佛读研究生,他问这孩子,你们在美国用什么大模型。孩子说,我现在 90% 用 Kimi。问为什么,说 Kimi 能干 90% 的活,价格是 Claude Code 的零头,穷学生用不起别的,但中国这个东西真好用。 徐勇说,这些留学生是精英中的精英,他们的选择代表了一种非常理性的、务实的选择。 「中国词元」的逻辑,就是把算力、模型、能源三样东西的中国供给捏在一起,把单位 Token 的成本打到最低。性能不输,价格便宜一大截,这就是中国 AI 的竞争力。 有意思的是,这个竞争力是倒逼出来的。中国算力被卡脖子,模型公司只能想工程化的办法,蒸馏成了看家本领。现在硅谷反过来流行蒸馏中国模型,中国把 Claude 和 Grok 蒸馏出来的数据,在硅谷非常抢手,徐勇说他已经知道有两家估值百亿美金的公司,想买中国的蒸馏数据。 连字节这种巨头,最近也严禁内部蒸馏,准备重新独立搞大模型。徐勇的判断是,以中国人的聪明才智,加上字节这种公司的资源,也许半年、最长不超过一年,中国可能还会迎来下一个 DeepSeek 时刻,就是那种一晚上把英伟达市值干掉 17% 的时刻。 他说,中国大模型这场仗,现在连中场都没到,赛程大概走了三分之一,已经和对手并驾齐驱了,后程的后劲会越来越足。 「中国词元」现在还是个新词,但它把中国 AI 的竞争力来源讲清楚了,芯片、模型、绿电,三样东西都在中国自己手里。这张牌打出去,叫性价比,也叫定价权。

优秀的个人博客,低调大师

前端百题——通俗易懂的防抖与节流

性能一直是前端老生常谈的一个话题,其中有一个性能问题就是我们会频繁的触发一些事件,例如mousemove、scroll、resize等,虽然浏览器已经对这些事件的触发做了一些优化,但是如果在很短的时间内频繁的触发仍然会影响性能,这个时候就需要今天的主角:防抖和节流,利用它们来进行优化,提高性能。 21.1 防抖 21.1.1 定义 防抖就是将多次高频操作优化为只在最后一次执行(某个函数在某段时间内,无论触发了多少次回调,都只执行最后一次)。通常的使用场景是:用户输入,只需在输入完成后做一次输入校验即可。 21.1.2 实现 防抖是将多次操作合并为一次操作完成,其原理就是维护一个计时器,在规定的时间后触发函数,但是在该规定时间内再次触发的话就会取消之前的定时器而重新设置,从而保证了只有最后一次操作能够被触发。其实现步骤如下所示: 利用闭包保存一个timer变量,然后返回一个函数(这个返回的函数就是后续频繁触发操作中调用的函数); 根据标志位判断是否第一次需要立即执行(因为有些情况是需要首次调用函数立即执行的,若没有该参数,就会在定时器到了之后才会执行); 当有新的触发时,若存在定时器,则清空该定时器; 设定一个新的定时器,重新计时。 function debounce(fn, wait, immediate) { let timer = null; return function (...args) { // 立即执行的功能(timer为空表示首次触发) if (immediate && !timer) { fn.apply(this, args); } // 有新的触发,则把定时器清空 timer && clearTimeout(timer); // 重新计时 timer = setTimeout(() => { fn.apply(this, args); }, wait); } } 复制代码 21.1.3 效果预览 观察效果图可以验证上述的理论知识: 防抖之后输出内容的频次降低了; 防抖之后,其在超过一定时间之后才会输出内容。 21.2 节流 21.2.1 定义 节流就是每隔一段时间后执行一次,也就是降低频率,将高频操作优化成低频操作。通常使用场景:滚动条事件、resize事件、动画等,通常每隔100-500ms执行一次即可。 21.2.2 实现 节流函数的实现方式有两种:定时器版本、时间戳版本,这两者各有千秋,下面来简要实现一下。 21.2.2.1 定时器版本 定时器版本的节流函数其重点是利用闭包保存timer变量,具有两个特点: n秒后才会执行第一次(定时器到了时间后才会触发); 停止触发后节流函数还会执行一次(因为该函数是延迟执行的,当停止触发时其任务已经到了队列中,所以停止后还会执行一次)。 // 定时器版本 function throttle(fn, wait) { let timer = null; return function(...args) { if (!timer) { timer = setTimeout(() => { fn.apply(this, args); timer = null; }, wait) } } } 复制代码 21.2.2.2 时间戳版本 时间戳版本的节流函数重点是利用闭包保存上一次的时间previous,具有两个特点: 开始触发后会立即执行(因为previous开始会被赋值为0); 停止触发后不再执行(因为该函数是同步任务,在触发的时候就会进行相应的判断,所以就不存在停止触发后再执行的情况)。 // 时间戳版本 function throttle(fn, wait) { // 上一次执行时间 let previous = 0; return function(...args) { // 当前时间 let now = +new Date(); if (now - previous > wait) { previous = now; fn.apply(this, args); } } } 复制代码 21.2.3 效果预览 观察效果图可以验证上述的理论知识: 节流确实降低了内容的输出频率,将高频变为低频; 时间戳版本的节流函数在首次会输出内容,但是最后一次的内容不会输出(谨慎使用); 定时器版本的节流函数确实不会立刻打印内容,而是超过一定时间之后才会打印;此外,其最后输入的内容会被打印出来。 1.如果觉得这篇文章还不错,来个分享、点赞吧,让更多的人也看到 如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点star: http://github.crmeb.net/u/defu 不胜感激 ! 来自 “开源世界 ” ,链接: https://ym.baisou.ltd/post/741.html ,如需转载,请注明出处,否则将追究法律责任。

优秀的个人博客,低调大师

Nginx面试中最常见的18道题 抱佛脚必备

Nginx的并发能力在同类型网页服务器中的表现,相对而言是比较好的,因此受到了很多企业的青睐,我国使用Nginx网站的知名用户包括腾讯、淘宝、百度、京东、新浪、网易等等。Nginx是网页服务器运维人员必备技能之一,下面为大家整理了一些比较常见的Nginx相关面试题,仅供参考: 1、请解释一下什么是Nginx? Nginx是一个web服务器和反向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。 2、请列举Nginx的一些特性。 Nginx服务器的特性包括: 反向代理/L7负载均衡器 嵌入式Perl解释器 动态二进制升级 可用于重新编写URL,具有非常好的PCRE支持 3、请列举Nginx和Apache 之间的不同点 4、请解释Nginx如何处理HTTP请求。 Nginx使用反应器模式。主事件循环等待操作系统发出准备事件的信号,这样数据就可以从套接字读取,在该实例中读取到缓冲区并进行处理。单个线程可以提供数万个并发连接。 5、在Nginx中,如何使用未定义的服务器名称来阻止处理请求? 只需将请求删除的服务器就可以定义为: Server {listen 80;server_name “ “ ;return 444; } 这里,服务器名被保留为一个空字符串,它将在没有“主机”头字段的情况下匹配请求,而一个特殊的Nginx的非标准代码444被返回,从而终止连接。 6、 使用“反向代理服务器”的优点是什么? 反向代理服务器可以隐藏源服务器的存在和特征。它充当互联网云和web服务器之间的中间层。这对于安全方面来说是很好的,特别是当您使用web托管服务时。 7、请列举Nginx服务器的最佳用途。 Nginx服务器的最佳用法是在网络上部署动态HTTP内容,使用SCGI、WSGI应用程序服务器、用于脚本的FastCGI处理程序。它还可以作为负载均衡器。 8、请解释Nginx服务器上的Master和Worker进程分别是什么? Master进程:读取及评估配置和维持 Worker进程:处理请求 9、请解释你如何通过不同于80的端口开启Nginx? 为了通过一个不同的端口开启Nginx,你必须进入/etc/Nginx/sites-enabled/,如果这是默认文件,那么你必须打开名为“default”的文件。编辑文件,并放置在你想要的端口: Like server { listen 81; } 10、请解释是否有可能将Nginx的错误替换为502错误、503? 502 =错误网关 503 =服务器超载 有可能,但是您可以确保fastcgi_intercept_errors被设置为ON,并使用错误页面指令。 Location / {fastcgi_pass 127.0.01:9001;fastcgi_intercept_errors on;error_page 502 =503/error_page.html;#…} 11、在Nginx中,解释如何在URL中保留双斜线? 要在URL中保留双斜线,就必须使用merge_slashes_off; 语法:merge_slashes [on/off] 默认值: merge_slashes on 环境: http,server 12、请解释ngx_http_upstream_module的作用是什么? ngx_http_upstream_module用于定义可通过fastcgi传递、proxy传递、uwsgi传递、memcached传递和scgi传递指令来引用的服务器组。 13、请解释什么是C10K问题? C10K问题是指无法同时处理大量客户端(10,000)的网络套接字。 14、请陈述stub_status和sub_filter指令的作用是什么? Stub_status指令:该指令用于了解Nginx当前状态的当前状态,如当前的活动连接,接受和处理当前读/写/等待连接的总数 Sub_filter指令:它用于搜索和替换响应中的内容,并快速修复陈旧的数据 15、解释Nginx是否支持将请求压缩到上游? 您可以使用Nginx模块gunzip将请求压缩到上游。gunzip模块是一个过滤器,它可以对不支持“gzip”编码方法的客户机或服务器使用“内容编码:gzip”来解压缩响应。 16、解释如何在Nginx中获得当前的时间? 要获得Nginx的当前时间,必须使用SSI模块、$date_gmt和$date_local的变量。 Proxy_set_header THE-TIME $date_gmt; 17、用Nginx服务器解释-s的目的是什么? 用于运行Nginx -s参数的可执行文件。 18、解释如何在Nginx服务器上添加模块? 在编译过程中,必须选择Nginx模块,因为Nginx不支持模块的运行时间选择。 欢迎工作一到五年的Java工程师朋友们加入Java架构开发:860113481 群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

优秀的个人博客,低调大师

[算法总结] 3 道题搞定 BAT 面试——堆栈和队列

本文首发于我的个人博客:尾尾部落 0. 基础概念 栈:后进先出(LIFO) image 队列:先进先出(FIFO) image 1. 栈的 java 实现 import java.util.Arrays; public class Stack { private int size = 0; //栈顶位置 private int[] array; public Stack(){ this(10); } public Stack(int init) { if(init <= 0){ init = 10; } array = new int[init]; } /** * 入栈操作 * @param item 入栈的元素 */ public void push(int item){ if(size == array.length){ array = Arrays.copyOf(array, size*2); //扩容操作 } array[size++] = item; } /** * 获取栈顶元素,但栈顶元素不出栈 * @return 栈顶元素 */ public int peek(){ if(size == 0){ //空栈 throw new IndexOutOfBoundsException("栈是空的"); } return array[size-1]; } /** * 出栈,同时获取栈顶元素 * @return */ public int pop(){ int item = peek(); //获取栈顶元素 size--; //直接使元素个数减1,不用清除元素,下次入栈会覆盖旧元素的值 return item; } /** * 判断栈是否已满 * @return */ public boolean isFull(){ return size == array.length; } /** * 判断栈是否为空 * @return */ public boolean isEmpty(){ return size == 0; } public int getSize(){ return size; } } 2. 队列的 java 实现 public class ArrayQueue { private final Object[] queue; //声明一个数组 private int head; private int tail; /** * 初始化队列 * @param capacity 队列长度 */ public ArrayQueue(int capacity){ this.queue = new Object[capacity]; } /** * 入队 * @param o 入队元素 * @return 入队成功与否 */ public boolean put(Object o){ if(head == (tail+1)%queue.length){ //说明队满 return false; } queue[tail] = o; tail = (tail+1)%queue.length; //tail标记后移一位 return true; } /** * 返回队首元素,但不出队 * @return */ public Object peak() { if(head==tail){ //队空 return null; } return queue[head]; } /** * 出队 * @return 出队元素 */ public Object pull(){ if(head==tail){ return null; } Object item = queue[head]; queue[head] = null; return item; } /** * 判断是否为空 * @return */ public boolean isEmpty(){ return head == tail; } /** * 判断是否为满 * @return */ public boolean isFull(){ return head == (tail+1)%queue.length; } /** * 获取队列中的元素个数 * @return */ public int getsize(){ if(tail>=head){ return tail-head; }else{ return (tail+queue.length)-head; } } } 3. 用两个栈实现队列 剑指offer:用两个栈实现队列 LeetCode:Implement Queue using Stacks class MyQueue { Stack<Integer> input = new Stack<Integer>(); Stack<Integer> output = new Stack<Integer>(); /** Push element x to the back of queue. */ public void push(int x) { input.push(x); } /** Removes the element from in front of queue and returns that element. */ public int pop() { peek(); return output.pop(); } /** Get the front element. */ public int peek() { if(output.isEmpty()){ while(!input.isEmpty()) output.push(input.pop()); } return output.peek(); } /** Returns whether the queue is empty. */ public boolean empty() { return input.isEmpty() && output.isEmpty(); } } 4. 用队列实现栈 LeetCode:Implement Stack using Queues class MyStack { Queue<Integer> q1 = new LinkedList<Integer>(); Queue<Integer> q2 = new LinkedList<Integer>(); /** Push element x onto stack. */ public void push(int x) { if(q1.isEmpty()){ q1.add(x); for(int i = 0; i < q2.size(); i++){ q1.add(q2.poll()); } }else{ q2.add(x); for(int i = 0; i < q1.size(); i++){ q2.add(q1.poll()); } } } /** Removes the element on top of the stack and returns that element. */ public int pop() { return q1.isEmpty() ? q2.poll() : q1.poll(); } /** Get the top element. */ public int top() { return q1.isEmpty() ? q2.peek() : q1.peek(); } /** Returns whether the stack is empty. */ public boolean empty() { return q1.isEmpty() && q2.isEmpty(); } } 5. 包含min函数的栈 剑指offer:包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 class MinStack { Stack<Integer> stack = new Stack<Integer>(); Stack<Integer> temp = new Stack<Integer>(); public void push(int x) { stack.push(x); if(temp.isEmpty() || temp.peek() >= x) temp.push(x); } public void pop() { int x = stack.pop(); int min = temp.peek(); if(x == min) temp.pop(); } public int top() { return stack.peek(); } public int getMin() { return temp.peek(); } } 6. 栈的压入、弹出序列 剑指offer:栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) import java.util.ArrayList; import java.util.Stack; public class Solution { public boolean IsPopOrder(int [] pushA, int [] popA) { if(pushA.length != popA.length || pushA.length == 0 || popA.length == 0) return false; Stack<Integer> stack = new Stack<>(); int index = 0; for(int i = 0; i < pushA.length; i++){ stack.push(pushA[i]); while(!stack.empty() && stack.peek() == popA[index]){ stack.pop(); index++; } } return stack.empty(); } }

优秀的个人博客,低调大师

「判断路线成圈」python之leetcode刷题|005

题目 初始位置 (0, 0) 处有一个机器人。给出它的一系列动作,判断这个机器人的移动路线是否形成一个圆圈,换言之就是判断它是否会移回到原来的位置。 移动顺序由一个字符串表示。每一个动作都是由一个字符来表示的。机器人有效的动作有 R(右),L(左),U(上)和 D(下)。输出应为 true 或 false,表示机器人移动路线是否成圈。 示例 1: 输入: "UD" 输出: true 示例 2: 输入: "LL" 输出: false 解答 判断上下,和左右分别相加为零不就行了吗 class Solution(object): def judgeCircle(self, moves): """ :type moves: str :rtype: bool """ x = 0 y = 0 for i in moves: if i == 'U': x += 1 elif i == 'D': x -= 1 elif i == 'L': y += 1 else: y -= 1 return x == y == 0 当然这种方法肯定是最笨的方法,看一下结果,打败36.72%的提交者,看一下网友代码: class Solution(object): def judgeCircle(self, moves): """ :type moves: str :rtype: bool """ return moves.count('U') == moves.count('D') and moves.count('L') == moves.count('R') 一行解决,不得不说真厉害。

优秀的个人博客,低调大师

新浪Linux运维工程师面试真题曝光

作为Linux运维工程师,进入大公司是开启职业新起点的关键,今天马哥linux运维及云计算智囊团的小伙伴特别分享了其在新浪面试Linux运维及云计算工程师的题目和经历,希望对广大Linux运维及云计算的求职者有一个帮助。 【招聘岗位要求】 【岗位定义】运维工程师 【岗位薪资】10K-20K 【基本要求】经验1-3年 /本科及以上 /全职 【职位描述】 1、负责服务器和应用的监控和应急反应,需要值夜班以确保有7*24小时的持续运作能力; 2、负责设计并部署相关应用平台,并提出平台的实施、运行报告; 3、负责相关故障、疑难问题排查处理,编制汇总故障、问题,定期提交汇总报告; 4、负责日常系统维护及监控,提供IT软硬件方面的服务和支持,保证系统的稳定。 【职位要求】 1、熟悉Linux和WindowsServer操作系统及相关运维技术; 2、熟悉数据传输(如kafka、scribe等)及存储(hdfs、ceph、mfs等)相关技术,并有实际运维经验; 3、了解服务器虚拟化技术(kvm、docker),实际管理运维过服务器虚拟化高可用集群; 4、了解MySQL、SQLServer等主流数据库,并有实际运维经验; 5、有脚本开发工作经验优先(shell、python、perl、php,能有其他更好); 6、两年以上中型规模系统运维经验,思维敏捷、故障诊断及独立处理能力强。 【岗位的面试题】 一 基础知识 1 请写出一下命令执行的结果 bash$ echo “sinaops” | read a ; echo $a bash$ echo “sinaops” | while read a ;do echo $a ;done 2 什么是linux的daemon进程?和一般进程有什么区别? 3 通过free命令查看内存是,看到的buffer和cache各表示什么含义? 4 使用ln -s 和mv 对某一个文件做如下操作时(bash$ ln -s /usr/afile /etc/bfile bash$ mv /etc/afile /etc/bfile )对inode和block有哪些影响? 5 apache和nginx这两个web服务器有哪些区别? 6请例句你使用过的集群软件? 二 网络技术 1 描述tcp三次握手的过程 2 请说明一下http协议中的keeplive是做什么的?它的适应场景是什么? 3请解释一下以下response header各行的含义? Date Tue,22Feb 2011 04:37:45 GMT Server Apache Last-Modified Thu,04 Nov 2010 04;12:24 GMT Etag “9fc-10c-82-5d73fa00” Content-Length 130 Cache-Control max-age-2592000 Expires Thu,24 Mar 2011 04:37:45 GMT Age 21190 X-Cache HIT from 86-74.ul.sinaimg.cn Via 1.0.86-74.ul.sinaimg.cn:80(squid/2.6.STABLE21) Connection keep-alive 4 请解释session和cookie的实现原理和区别 5 将lvs配置为DR方式,发现无法正常工作,经测试直接访问realserver可以提供服务,请问用何种方法定位lvs问题 6 一下内核参数的含义 net.ipv4.tcp_tw_recycle=1 net.ipv4.tcp_tw_reuse=1 vm.swappiness=0 7 如何发现linux系统是否出现性能瓶颈?请例举出你常用的监控命令以及参数 三 开发能力 1 尽可能多的用不同语言打印“hello sina”(可以用任意语言实现) 2 bash shell 里$0.$?.$$各表示什么含义 3 用任意脚本统计主机tcp连接数并按照连接状态分类 4有一文件如下格式,请提取”.sina.com.cn”前面的主机名部分并写入到回到该文件中 bash$cat ip_list.txt 1 test.sina.com.cn 2www.sina.com.cn … 999 z.sina.com.cn 5 同一时间脚本只能运行一个实例(可以用任意语言实现) 6 计算出从你生日之日起到今天一共过了多少天?(可以用除shell之外任意语言实现) 7 写出一段程序,用于判断一段字符串是否是回文。(可以用除shell之外任意语言实现) 8 有一文件记录了1-100000之间随机的整数共5000个,存储的格式100,50,35,89…请取出其中最大和最小的整数。(可以用除shell之外任意语言实现)

优秀的个人博客,低调大师

从一道 Linux DHCP 配置题看懂 dhcpd.conf

DHCP 是 Dynamic Host Configuration Protocol 的缩写,也就是动态主机配置协议。它解决的问题非常实际,我们的计算机、手机或者服务器接入一个网络时,往往需要得到 IP 地址、子网掩码、默认网关、DNS 服务器等网络参数。如果所有设备都依靠管理员手工配置,几十台机器尚且能够维护,到了几百台甚至几万台终端时,人工维护成本就会迅速失控。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册