首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
中年抠脚程序猿
字节跳动_电商_前端开发
获赞
21
粉丝
19
关注
4
看过 TA
61
男
武汉理工大学
2013
前端工程师
IP属地:上海
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑中年抠脚程序猿吗?
发布(39)
刷题
中年抠脚程序猿
2021-12-08 21:50
已编辑
字节跳动_电商_前端开发
微信小程序实现数据侦听器,类似vue的watch,替代Observer
背景 既然小程序的组件已经有Observer功能,那为什么还要手写watch功能呢? Observer只能在Component中使用,没法在Page中使用。若是想在Page中监控某一数据的变化,Observer做不到。 Observer属于小程序的新功能,只能在高版本微信使用,低版本微信无法使用。公司的小程序就因为使用了Observer功能,导致很多低版本微信用户无法使用这个小程序。 实现 新建一个watch.js文件,代码如下 function watch(key, callback) { // 先执行一次watch callback.call(this, this...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:49
字节跳动_电商_前端开发
手写SpringBoot,包含ASM获取Controller参数名
背景 读了一些SpringBoot的源码,为了加深理解,准备手写一个简易版SpringBoot框架。一期功能包括了基础的SpringBoot的功能和ASM获取Controller参数名的功能。 git地址在此。 配置 首先是pom.xml,只需引入3个依赖,servlet-api,tomcat-embed,fastjson。 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> ...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:49
字节跳动_电商_前端开发
java通过视频URL获取视频时长,无需下载视频,修复jave在linux上的bug
背景 项目中有一个需求,要获取前端上传过来的视频的时长、分辨率等信息。网上查了下,java后端基本上都是用的jave获取视频信息,jave的官网在此。 不过网上的教程都是获取本地视频的信息,jave提供的功能也不支持获取网络视频的信息。那要怎么搞咧? 首先看下jave的原理,jave使用FFmpeg处理多媒体文件。 jave将FFmpeg的可执行文件放到了jar包里面,在运行的时候将FFmpeg可执行文件拷贝到操作系统的临时文件夹中,并通过命令行来调用FFmpeg。这里面包含了windows的可执行文件和linux的可执行文件。jave源码包结构如下图: 所以现在就要看FFmpe...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:48
已编辑
字节跳动_电商_前端开发
前端多个vue项目公共组件的三种方法(推荐npm file引入)
背景 目前很多公司的开发模式都是多个前端一个后端。笔者所在的公司就是这样,移动端前端的产品有两个,这两个产品有很多内容是相似的、甚至一样的。包括页面、样式、JS逻辑等。这样就想将这些公共部分封装成公共组件供这两个项目调用。 Vue很好的提供了单个项目公共组件的解决方案,包括组件复用、传参、监听、通讯、插槽等功能。但多个vue项目怎么使用公共组件呢。 这篇文章就来介绍前端多个vue项目公共组件的三种方法,npm发布引用、npm link、npm本地file引用,其中本文主要推荐本地file引用方式,若嫌篇幅太长可直接翻到文章最后查看npm本地file引用方式。 准备工作 本示例代码的g...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:48
字节跳动_电商_前端开发
Springboot @Async 异步线程的异常捕获和处理的两种方式
原因 Springboot有个很方便的Controller的异常捕获,如何使用可以查看这一篇。但是Springboot没有很方便的异步线程异常捕获和处理。 在Springboot中,我们可以通过注解@EnableAsync来开启异步任务,@Async加在需要异步执行的方法上。在这个方法中抛出的异常就是异步线程异常。那么如何捕获该异常呢?我们来看源码一步一步分析。 源码分析 首先来看异步任务开启的入口@EnableAsync @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:48
已编辑
字节跳动_电商_前端开发
数据源连接池未关闭的问题 Could not open JDBC Connection for transaction
背景 公司线上运行的项目最近报了这个错,Could not open JDBC Connection for transaction,无法获取数据源连接池了。 分析 阅读源码,看看各个情况下是否都能自动释放数据源连接吧。 MyBatis释放连接 MyBatis自己单独运行的时候运行SQL语句是不会自动释放数据源连接的,但和Spring整合后就会自动释放数据源连接了。Spring改变了MyBatis的SqlSession,改成Spring整合包中的SqlSessionTemplate,关键代码如下: public class SqlSessionTemplate implements...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:47
字节跳动_电商_前端开发
监控数据源连接池使用情况
背景 上一篇《数据源连接池未关闭的问题 Could not open JDBC Connection for transaction》分析源码了解了MyBatis框架和Spring事务管理自动关闭数据源连接池的功能,解决了一个线上数据源连接池占满的问题。 但解决了一个可能还有下一个,现在需要一个能监控数据源连接池使用情况、快占满了报警的方案。 方案一 这里使用的是Druid数据源,其他数据源可以使用下面的方案二。 Druid数据源本身有一个filter,在获取数据源连接(调用getConnection方法)时会依次调用所有的filter。 于是乎,我们就可以在数据源初始化时增加一个fil...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:47
字节跳动_电商_前端开发
JavaScript实现同步Ajax请求的两种方式
JavaScript的Ajax请求默认是异步的,有以下两种方式能让Ajax请求变成同步 方式一 使用ES7的Async和Await async function main(){ const env = await queryEnv('141001') console.log(env) } async function queryEnv (platform) { const result = await axios({ url: '/chronic/userPlatformConfig/getBaseInfo', params: { ...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:46
字节跳动_电商_前端开发
JavaScript 阻塞方式实现异步任务队列
问题 有个需求,需要实现一个异步任务队列,并依次处理队列中的所有任务,具体如下: 随机时间增加异步任务到队列中 队列中的任务按照先进先出的规则依次执行 任务为异步请求,等一个执行完了再执行下一个 这个需求若使用Java语言的BlockingQueue很容易实现,但是JavaScript没有锁机制,实现起来就不那么容易。 方案一 很容易想到使用同步非阻塞方案,每隔一定的时间去检测一下队列中有无任务,有则取出第一个处理。这里检测间隔间隔500毫秒,使用setTimeout模拟异步请求。 <body> <button onclick="click...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:46
字节跳动_电商_前端开发
JavaScript实现锁功能,同一时间多次异步请求函数都取到返回值,只触发一次异步请求
问题 有个需求,某个异步请求函数可能被多次调用,重复调用消耗资源,需要对其进行优化 每次调用该函数都能取到返回值 只发送一次异步请求 这个和节流、防抖功能不一样,节流防抖会丢弃掉中间的请求,中间的请求获取不到返回值,这里要求每一个函数调用都能取到返回值。 方案一 很容易想到使用同步非阻塞方案,在第一个点击时,进入loading状态,之后的点击判断loading就等50毫秒继续检查loading的值,直到loading为false,返回localEnv。这里使用setTimeout来模拟异步请求。 <body> <input onclick="...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:46
字节跳动_电商_前端开发
手写时钟
代码 <!DOCTYPE html> <html lang="cn"> <head> <meta charset="UTF-8"> <title>Clock</title> </head> <style> .container { width: 500px; height: 500px; border-radius: 50%; background: #000; border: 30px solid #0002fd; display: fl...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:45
字节跳动_电商_前端开发
JS重写Date函数,兼容IOS系统
IOS系统Date的坑 要创建一个指定时间的new Date对象时,通常的做法是: new Date("2020-09-21 11:11:00") 这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是 new Date("2020/09/21 11:11:00") 通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。 所以就想试着重写Date函数,一劳永逸,避免每次new Date都要考虑兼容性的问题。 ...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:45
已编辑
字节跳动_电商_前端开发
Vue在路由中懒加载并创建组件,省去写页面的步骤
需求 现在有一个公共组件,在多个端都需要使用,但传入组件的参数不同,每个端都要写个vue的页面或是component有点麻烦。 <template> <child blPath="/patient/record" nextPatientPath="/patientList"></child> </template> <script> import child from 'baqi-doctor/src/pages/group/checkJoinInfo' export default {...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:45
字节跳动_电商_前端开发
Vue Cli3 添加Loader和plugin
添加loader 在vue.config.js中的chainWebpack中添加配置: chainWebpack: config => { // my-loader为loader的别名,./src/myLoader.js是loader的位置 config.resolveLoader.alias.set('my-loader', path.resolve(__dirname, './src/myLoader.js')) // 修改vue文件Loader的选项,增加新的处理loader const vueRule = config.module.rule('vue...
0
点赞
评论
收藏
转发
中年抠脚程序猿
2021-12-08 21:44
已编辑
字节跳动_电商_前端开发
Vue项目自动设置版本号,版本号变更清空缓存
需求 项目中在cookie和localStorage中,存储了不少信息,希望每次发布后能清空cookie和localStorage,避免缓存和版本不一致带来的影响。 方式一 自定义webpack的plugin,在afterPlugins钩子函数中修改package.json文件版本号,使用当前时间作为版本号 在main.js中读取package.json文件,判断当前版本号是否和localStorage中的版本号是否一致。若不一致,清空localStorage 将当前版本号存入localStorage vue.consig.js中定义插件 chainWebpack: con...
0
点赞
评论
收藏
转发
1
2
3
工具箱
TA的圈子
暂未加入圈子
TA的圈子
TA的笔记
暂无笔记
TA的笔记
登录
0
天
已登录
0
天
连续登录
0
人
今日访客
牛客网
牛客企业服务