自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 干了 11 年程序员,AI 时代我为什么还在焦虑?

今天是 2026 年 9 月 6 日,算下来,我做程序员已经整整 11 年了。11 年,说长不长,说短不短。从当年那个熬夜啃文档、为一行报错折腾半天的毛头小子,到如今能熟练指挥 AI 完成大部分编码工作的"老油条",技术栈换了一茬又一茬,唯独焦虑这件事,好像从来没离开过。尤其是这两年,AI 技术的革新速度,真的完全改变了程序员的发展道路。以前我们拼的是谁记得 API 多、谁手速快、谁能熬夜肝需求;现在呢?工作里几乎处处都在用 AI,写代码、查资料、写注释、补测试,AI 全都能干。

2026-09-14 11:18:16 127

原创 手写promise

function Promise(executor) { var self = this; self.status = 'pending'; self.onResolvedCallback = []; self.onRejectedCallback = []; function resolve(value) { if (value instanceof Promise) { return value.then(resolve, reject); } setTimeout(fun

2021-04-09 16:23:43 195

原创 数组排序

冒泡排序 var arr = [1, 3, 6, 3, 23, 76, 1, 34, 222, 6, 456, 221]; function sort(arr) { const len = arr.length; if (len < 2) return arr; for (let i = 0; i < len; i++) { for (let j = 0; j < i; j++) { if (arr[j] > arr[i]) { const temp = .

2021-04-09 14:53:21 154

原创 手动实现promise.all和promise.race

function myAll(iterators) { const promises = Array.from(iterators); const len = promises.length; let count = 0; let results = []; return new Promise((resolve, reject) => { promises.forEach((v, i) => { Promise.resolve(v).then(value => {

2021-04-08 19:25:33 368

原创 理解React框架的Fiber架构

如图所示,同步渲染的递归调用栈是非常深的,只有最底层的调用返回了,整个渲染过程才会开始逐层返回。这个漫长且不可打断的更新过程,将会带来用户体验层面的巨大风险:同步渲染一旦开始,便会牢牢抓住主线程不放,直到递归彻底完成。在这个过程中,浏览器没有办法处理任何渲染之外的事情,会进入一种无法处理用户交互的状态。因此若渲染时间稍微长一点,页面就会面临卡顿甚至卡死的风险。 而 React 16 引入的 Fiber 架构,恰好能够解决掉这个风险:Fiber 会将一个大的更新任务拆解为许多个小任务。每当执行完一个小任务时

2021-03-15 18:21:10 1159 3

原创 为什么要用react-hooks

回答面试官问: 告别难以理解的 Class; 解决业务逻辑难以拆分的问题; 使状态逻辑复用变得简单可行; 函数组件从设计思想上来看,更加契合 React 的理念

2021-03-12 19:48:26 197

原创 redux原理

先看一张图~~~~ 使用 createStore 来完成 store 对象的创建 reducer 的作用是将新的 state 返回给 store action 的作用是通知 reducer “让改变发生” 派发 action,靠的是 dispatch import { createStore } from 'redux' // 创建 reducer const reducer = (state, action) => { // 此处是各种样的 state处理逻辑 return

2021-03-12 19:00:53 255

原创 发布-订阅(超级容易理解)

class myEventEmitter { constructor() { // eventMap 用来存储事件和监听函数之间的关系 this.eventMap = {}; } // type 这里就代表事件的名称 on(type, handler) { // hanlder 必须是一个函数,如果不是直接报错 if (!(handler instanceof Function)) { throw new Error("哥 你错了 请传一个函数"

2021-03-12 18:11:26 182

转载 Promise限流并发

promise-limit用法 npm install promise-limit var promiseLimit = require('promise-limit') var limit = promiseLimit(2) var jobs = ['a', 'b', 'c', 'd', 'e'] Promise.all(jobs.map((name) => { return limit(() => job(name)) })).then(results => { cons

2021-03-10 17:08:51 813

原创 js之发布-订阅模式

class EventEmitter { constructor() { // 事件池 this._events = Object.create(Object.create(null)); } // 绑定事件 on(eventName, callback) { if (this._events[eventName]) { this._events[eventName].push(callback); } else { this._events[eventName] =

2021-03-04 16:53:49 244 1

原创 事件循环event loop

所有同步任务都在主线程上执行,形成一个执行栈。 主线程之外,还存在一个任务队列(事件)。只要异步任务有了运行结果,就在任务队列之中放置一个事件。 一旦执行栈中的所有同步任务执行完毕,系统就会读取任务队列,将队列中的事件放到执行栈中依次执行。 主线程从任务队列中读取事件,这个过程是循环不断的。 整个的这种运行机制又称为Event Loop(事件循环)。 ...

2021-03-03 16:53:22 292 3

原创 实现发布订阅

let _subscribe = function(){ class Sub { constructor() { //创建一个事件池,用来存储后期需要执行的方法 this.$pond = []; } // 向事件池中追加方法(重复处理) add(func) { let flag = this.$pond.some(item => item === func); !flag ? this.$pond.push(func) : null; .

2021-03-02 17:14:24 183

原创 正向代理和反向代理的区别

正向代理 意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。 反向代理 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速..

2021-03-01 14:29:16 994 10

原创 5年前端心得体会

从事前端开发5年半了,可我现在内心慌得一批,没有核心竞争力,感觉和3年开发经验的差不多,没有记笔记的习惯,距离上次发文已近4年,这中间我都做了什么? 目前任职一家外包公司,月入左右,主要做一些管理页面的开发,各种表格、表单,其实这几年也一直倾向后台管理页面方向,除了这些我好像不会其他什么了,目前技术栈react+antd,职业生涯中,移动端就做了几个页面,全都是pc端,框架到是全用过了,只限于会用,源码看不懂,这几个月听了珠峰的架构课,讲到深入就听不懂了,听懂的过一遍就忘了。现在特别迷茫,到今年9月份就6年

2021-02-24 14:34:35 867 1

原创 h5定位

1、根据当前所处位置 定位所在城市信息<html> <head> <meta charset="UTF-8" /> <title>js 百度 geolocation 定位当前城市</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta n

2017-06-07 16:26:41 2483

原创 substring()和slice()的区别

一、substring()是截取字符串var s = 'hello, world' s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello' s.substring(7); // 从索引7开始到结束,返回'world'二、slice()是截取数组var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; arr.slice(0,

2017-06-07 10:25:23 5422 5

原创 js面向对象

JS面向对象的几种写法 JS 中,面向对象有几种写法。归纳下,大概有下面这几种:工厂模式,构造函数模式,原型模式,构造函数与原型模式的混合使用,原型链继承,借用构造函数继承。 一、工厂模式闭包使用的原理与之很相似,最后返回的function person (name,age,jpb){ var o={};//定义o这个对象 o.name=name; o.age=age; o.

2017-06-06 10:42:07 300

原创 Nicescroll滚动条插件的用法

Nicescroll滚动条插件是一个非常强大的基于JQUERY的滚动条插件,不需要增加额外的css,几乎全浏览器兼容。ie6+,实现只需要一段代码,侵入性非常小,样式可完全自定义,支持触摸事件,可在触摸屏上使用。官网地址:http://www.areaaperta.com/nicescroll/引入核心文件,插件需要引入1.5.X以上版本的jquery库最简单的用法如下:$(document).re

2017-06-06 10:29:51 486

原创 javascript Date format(js日期格式化)

方法一:// 对Date的扩展,将 Date 转化为指定格式的String. // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符. // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字). // 例子: // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 20

2017-06-06 10:21:34 431

原创 日期时间函数

js日期时间函数var b = new Date(); //获取当前时间b.getTime(); //获取时间戳b.getFullYear(); //获取年份b.getMonth()+1; //获取月份b.getDate(); //获取天b.getHours(); //获取小时b.getMinutes(); //获取分钟b.getSeconds(); //获取秒数b.getDay(); //获取星期

2017-06-06 10:09:49 400

原创 js函数递归

一、递归函数概念:自己调用自己。二、知识说明function fuc(){ fuc(); console.log("a"); } fuc();三、函数+变量//用递归来求5的阶乘 function func(n){ if(n = 1){ return 1; } return n * func(n-1); } console.log(func(5

2017-06-06 09:50:11 373

转载 cesium.js获取经度、纬度、高度

function getPosition() { //得到当前三维场景 var scene = viewer.scene; //得到当前三维场景的椭球体 var ellipsoid = scene.globe.ellipsoid; var entity = viewer.entities.add({

2016-11-22 10:00:13 2830

原创 无缝滚动

js代码 $(function() { var $this = $(".renav"); var scrollTimer; $this.hover(function() { clearInterval(scrollTimer); }, function() { scrollTimer = setInterval(functi

2016-11-14 18:07:45 311

转载 javascript闭包

闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 下面就是我的学习笔记,对于Javascript初学者应该是很有用的。 一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可以直接读取全

2016-11-14 16:51:17 223

转载 apply()与call()的区别和用法

主要我是要解决一下几个问题: 1.apply和call的区别在哪里 2.什么情况下用apply,什么情况下用call 3.apply的其他巧妙用法(一般在什么情况下可以使用apply) 我首先从网上查到关于apply和call的定义,然后用示例来解释这两个方法的意思和如何去用. apply:方法能劫持另外一个对象的方法,继承另外一个对象的属性. Function

2016-11-14 14:44:08 415

原创 签到

大家好!做前端开发两年了,从没有做过系统的培训和学习,从一个门外汉硬是挤进这个互联网行业了,之间的波折想必和我一样的人都会有感触,学习的过程零零碎碎,用到哪学到哪,也会去提前学习一些新东西、新技术,以前一直是看别人的博客,以后我没事也写写,把自己遇到的问题和总结的经验和大家分享分享,大家一起进步。

2016-09-28 11:03:03 289

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除