- 博客(70)
- 收藏
- 关注
原创 前端复杂表格导出excel,一键导出 Antd Table 看这篇就够了(附源码)
前端导出 excel 的需求很多,但市面上好用的库并不多,讲明白复杂使用场景的文章更少。本文将以文字 + demo 源码的形式,力求讲清楚满足 99% 使用场景的终极 excel 导出方案。如果项目中用到了 AntD,那就更简单了,因为 Table 本身已经设置好了 column 和 dataSource,只需解析 column 和 dataSource 即可快速导出 Excel。实现功能:简单表格导出为表格添加样式(更改背景色、更换字体、字号、颜色)设置行高、列宽解析 ant-design
2022-03-29 10:21:45
7346
6
原创 前端提效 - js 批量导出 excel 为zip压缩包
本篇文章主要介绍使用 exceljs、file-saver、jszip实现下载包含多层级文件夹、多个 excel、每个 excel 支持多个 sheet 的 zip 压缩包。上一篇文章:前端复杂表格导出excel,一键导出 Antd Table 看这篇就够了(附源码)详细介绍了如何实现解析 Antd Table、组装数据和调整表格的样式,感兴趣的可以先看看。本篇将接着上一篇,重点讲方法的更高级抽象,和下载多层级文件夹的 zip 压缩包。源码地址:https://github.com/cachecats/ex
2022-03-29 10:19:19
3387
原创 100 行代码实现 Flutter 自定义 TabBar
Flutter 的确很强大,但美中不足的是生态还有待完善,没有出现像前端的 Antd 或 Element 那样全能的基础 UI 库。由此带来的直接影响是开发效率提不上去,需要耗费大量的时间精力在基础组件的封装上。官方的 TabBar 不满足需求,又没有合适的轮子,只好自己造轮子啦。接下来带你一步步实现自定义 TabBar……一、目标和效果需求目标是:这个页面不要 material 左侧统一的返回键和 Title在右侧有取消按钮,点取消即返回点击 Tab 可以实现 content 切换并带有动
2020-09-26 15:02:45
1149
原创 微信小程序国际化探索(附源码地址)
随着小程序应用越来越广泛,国际化支持逐渐成了刚需。官方文档给出了一个 国际化方案,但觉得配置起来稍微有点复杂,对项目结构还有一定的要求。如果是旧项目改动成本太大,遂决定自己实现一个小程序国际化方案。源码地址:https://github.com/cachecats/miniprogram-i18n一、项目结构整体目录结构如下图:assets 存放资源文件,如图片constants 存放项目中用到的常量i18n 存放语言文件,中文是 zh-CN.js 英文是 en-US.js ,如果还需要支
2020-06-05 15:44:40
785
原创 前端面试必备技巧(二)重难点梳理
针对面试中出镜率比较高的重难点知识梳理。相比于第一篇 前端面试必备技巧,本篇文章更贴合今年的面试实际。第一篇比较全面,也比较基础,建议先看一遍上一篇再看本篇会更容易理解。一、ES6常见用法关于 ES6(泛指 ECMAScript 2015 及以后的版本)几乎是面试必问的,一般的问法是:“平常会使用 ES6 吗?列举几个 ES6 的用法”。回答出来三四个就差不多了,但回答的每一个都要弄清楚,有的面试官会延伸着追问。如果时间充足,还是建议看看 阮一峰的 ES6 入门教程 。1.1 let 和 c
2020-06-05 15:37:40
1243
原创 2020前端面试必备技巧
2020最全的前端面试指南,一个多月 1.8w 字的面试经验积累,凭借它最终成功入职大厂……今年的金三银四刚好赶上疫情,很多大公司都停止招聘甚至裁员,想跳槽的小伙伴被打的措手不及。需求减少要求肯定随之提高,谨以此面经献给在如此艰难之时逆风而动、勇敢坚强的你~与面试贴合度更高的 前端面试必备技巧(二)重难点梳理 整理好啦,两篇文章结合起来看效果更佳~前言今年问的难度和深度应该比前几年有所增加,下面从总体分析和重要点两个维度来分析一下:总体分析前端问的最多的还是 js基础、计算机网络基础等,建议
2020-06-05 15:35:06
963
原创 Vue 图片压缩并上传至服务器
本文主要讲解基于 Vue + Vant ,实现移动端图片选择,并用 Canvas 压缩图片,最后上传至服务器。还会封装一个工具类,方便直接调用。一、工具类封装废话不多说先上代码,封装一个 CompressImageUtils 工具类:/** * 图片压缩工具类 * 最大高度和最大宽度都为 500,如果超出大小将等比例缩放。 * * 注意可能出现压缩后比原图更大的情况,在调用...
2020-01-15 11:12:23
2105
原创 全栈式部署:SpringCloud 微服务+Docker + Vue + nginx 前后端一站式部署
本文将带大家从一台全新的 CentOS 服务器开始,部署一套完整的前后端分离项目。操作步骤非常详细,新手友好型文章~后端技术栈:SpringCloud 微服务架构 + Redis + RabbitMQ + MySql;前端技术栈:Vue + ElementUI;部署工具:后端用 Docker 容器化部署,并把命令封装成脚本自动执行;前端用 Nginx 做代理。一、前期准备系统版本为:Ce...
2019-10-26 12:41:06
1522
原创 PostgreSQL 修改默认用户 postgres 的密码 - 图形化界面操作
如何修改 PostgreSQL 的用户密码呢?网上的方法大都是使用命令行修改,但不知为何我执行总是失败。找了好多文章试了 n 次还是不行,最后终于摸索出不用命令行,用图形化界面修改密码的简单方法。一、找到并运行 pgAdmin打开应用程序,找到 PostgreSQL,点击会看到 pgAdmin 4.app,双击运行。运行成功之后会在顶栏看到一个大象图标然后浏览器会自动打开一个页面,如...
2019-09-07 11:15:05
27539
2
原创 SpringBoot 集成 Schedule 详解
一、如何使用 Schedule1.1 启动类加注解在启动类上添加注解 @EnableScheduling@SpringBootApplication@EnableSchedulingpublic class Application { public static void main(String[] args) { SpringApplication.run(Applicat...
2019-08-21 16:04:17
1174
原创 SpringBoot 整合 liquibase
SpringBoot 整合 liquibaseLiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到迁移。其有点主要有以下:支持几乎所有主流的数据库,如MySQL, PostgreSQL, Oracle, Sql Se...
2019-08-17 18:58:18
3702
3
原创 重拾安卓:自定义View之表格封装实现
今天开始更新【重拾安卓】系列文章。因业务需要又要做一个 Android 原生的项目,记录下时隔几年之后再开发安卓的那些事。讲的不会太基础,基本上是自定义View封装,复杂功能的实现等等,有需要的小伙伴可以关注~安卓对表格的支持不是太友好,前端很快能实现的简单表格,安卓写的话要费很大精力。拿到需求之后,稍微复杂点的功能在 github 上搜一下有没有好用的第三方框架,无疑是最节省时间的。表格...
2019-07-16 16:24:25
449
1
原创 基于 Vue 的移动端富文本编辑器 vue-quill-editor 实战
优秀的富文本编辑器有很多,比如:UEditor,wangEditor 等,但并不是每个都能在移动端有很好的表现。我们暂且不讨论移动端是否真的需要富文本,既然有这需求,就把它实现出来。失败的尝试正确的选择是成功的开始,开发之前肯定要做一些调研。通过各种资料搜集,确定了几个备选的:UEditor,vue-quill-editor,wangEditor,vue-html5-editor ,tin...
2019-05-27 11:55:16
5956
2
原创 用 moment 实现获取本周、前 n 周、后 n 周开始结束日期
本文用 moment.js 实现了获取本周、前 n 周、后 n 周开始结束日期,即周一、周日日期的方法。先看代码,封装了个工具类 DateTimeUtils.js,可以直接复制到项目中使用/** * 时间日期工具类 */import moment from 'moment'export default { /** * 获取本周周一和周日日期 */ getCurre...
2019-04-19 15:20:02
8733
原创 Vue-cli3 项目在安卓低版本系统和 IE 上白屏问题解决
最近遇到一个问题,用 Vue 开发的项目在最近两年新出的安卓手机上没问题,在三四年前的旧手机上出现白屏问题。分析一下应该是安卓系统版本的原因,目前已知的是Android 6.0 以上都 OK,6.0 以下就不行了。低版本安卓系统内置的 webview 不支持 ES6 语法等一些新特性,所以报错。但在手机上调试不方便,受一篇文章的启发, IE 浏览器也是同样的问题,所以可以在 IE 上调试,一个调...
2019-04-13 21:03:45
3737
原创 Android原生同步登录状态到H5网页避免二次登录
本文解决的问题是目前流行的 Android/IOS 原生应用内嵌 WebView 网页时,原生与H5页面登录状态的同步。大多数混合开发应用的登录都是在原生页面中,这就牵扯到一个问题,如何把登录状态传给H5页面呢?总不能打开网页时再从网页中登录一次系统吧… 两边登录状态的同步是必须的。100 多位经验丰富的开发者参与,在 Github 上获得了近 1000 个 star 的全栈全平台开源项目想...
2019-03-14 14:52:51
3581
原创 Vue 开发经验小记
使用 vue 开发过程中遇到的问题或知识点总结,持续更新中…1.国际化国际化插件:vue-i18n2.让多行内容显示一行,多余的用…表示white-space : nowrapoverflow: hiddentext-overflow : ellipsis3.显示宽高相等的图片,宽度为屏幕宽度,高度与宽度相等<div class="image-header"> &...
2019-03-05 11:28:47
245
原创 在小程序框架 wepy 中使用 iconfont 图标字体
新的小程序项目准备踩坑 Wepy 啦!纠结过原生、Wepy、mpvue到底用哪个。原生:之前的项目用的就是原生,开发起来有点太原始,想换换口味。把原生作为托底方案,假如另外两个遇到踩不过去的坑就转用原生做。wepy:star数量有16k,看了看官方文档,感觉开发方式还不错。毕竟算是腾讯亲生儿子,感觉靠谱些。mpvue:star数跟 wepy 不相上下,也是 16k,一套代码多端通用很有吸...
2019-03-04 16:50:55
705
原创 Vue 返回记住滚动条位置详解
最近用 Vue 做移动端页面遇到一个问题,从列表页进入详情页,再返回到列表页,不管之前滚动到哪里,每次返回时都跳到列表最顶部。这样体验肯定不好,期望的应该是记住滚动条的位置,每次返回还是在原来的位置上,便于继续浏览。于是在网上搜解决方法,搜了一大圈看了 n 篇文章,都没有说清楚。起码我是没有通过看一篇文章而完美解决,所以决定写一篇详细的亲测可行的解决方案。一共分三步:给 router-v...
2019-03-04 16:49:49
24302
6
原创 Python数据处理(二):处理 Excel 数据
在本章和下一章里,我们将研究两种文件类型实例:Excel 文件和 PDF,并给出几条一般性说明,在遇到其他文件类型时可以参考。处理 Excel 比上章讲的处理 CSV、JSON、XML 文件要难多了,下面以 UNICEF(联合国儿童基金会) 2014 年的报告为例,来讲解如何处理 Excel 数据。相关文章:十分钟快速入门 PythonPython数据处理(一):处理 JSON、XML、C...
2019-02-16 14:40:32
688
原创 Python数据处理(一):处理 JSON、XML、CSV 三种格式数据
Python 数据处理系列博客来啦!本系列将以《Python数据处理》这本书为基础,以书中每章一篇博客的形式带大家一起学习 Python 数据处理。书中有些地方讲的不太详细,我会查阅其他资料来补充,力争每篇博客都把知识点涵盖全且通俗易懂。这本书主要讲了如何用 Python 处理各种类型的文件,如 JSON、XML、CSV、Excel、PDF 等。后面几章还会讲数据清洗、网页抓取、自动化和规模化...
2019-01-27 17:57:42
2171
原创 高性能 MySQL (一):Schema 与数据类型优化
本文摘录总结自《高性能MySQL》(第三版),将以每章一篇文章的方式带大家读这本数据库经典之作。总结精华,帮大家快速抓住重点信息,节省宝贵时间。这章概念性东西比较多,可能有点枯燥。但讲了很多底层原理,坚持读下来还是会有一些收获的。100 多位经验丰富的开发者参与,在 Github 上获得了近 1000 个 star 的全栈全平台开源项目想了解下吗?项目地址:https://github.c...
2019-01-23 23:12:53
468
原创 十分钟快速入门 Python
本文以 Eric Matthes 的《Python编程:从入门到实践》为基础,以有一定其他语言经验的程序员视角,对书中内容提炼总结,化繁为简,将这本书的精髓融合成一篇10分钟能读完的文章。读完本篇文章后,可对 Python 语言特性、编码风格有一定了解,并可写出简单的 Python 程序。100 多位经验丰富的开发者参与,在 Github 上获得了近 1000 个 star 的开源项目想了解...
2019-01-22 15:07:46
458
原创 全栈全平台开源项目 CodeRiver 数据库设计文档
前言CodeRiver 是一个免费的项目协作平台,愿景是打通 IT 产业上下游,无论你是产品经理、设计师、程序员或是测试,还是其他行业人员,只要有好的创意、想法,都可以来 CodeRiver 免费发布项目,召集志同道合的队友一起将梦想变为现实!CodeRiver 本身还是一个大型开源项目,致力于打造全栈全平台企业级精品开源项目。涵盖了 React、Vue、Angular、小程序、ReactNa...
2019-01-18 22:45:41
269
原创 CodeRiver BAT企业级后端架构设计及讲解(附视频链接)
CodeRiver:致力于打造全栈全平台精品开源项目。上个月我们公布了后端项目的架构设计文档,后端的项目架构是由两位资深架构师设计的,采用了最新最流行的技术组合。文档在这篇文章里可以找到:CodeRiver 全栈全平台开源项目:全面升级 从新出发直播讲解项目的基础架构上周也上传至了 项目仓库:https://github.com/coderiver-org/coderiver-pla...
2019-01-07 23:29:48
288
原创 CodeRiver 全栈全平台开源项目:全面升级 从新出发
CodeRiver 河码:致力于打造全栈全平台精品开源项目。项目在2018年11月底获得广泛关注之后,我们随即组建了 80余人参与的更专业、更强大的开发团队,继续朝着打造全栈全平台企业级精品开源项目的目标不懈努力。在 2018 年 12 月份我们进行了一些 CodeRiver 的准备工作。重新整理第一迭代产品的功能。重新设计了产品的交互和 UI 渲染图。获取两位优秀架构师的帮助,完成...
2019-01-03 15:38:02
369
原创 MyBatis 与 SpringBoot 整合:注解和xml两种使用方式介绍
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。无论是使用注解还是 xml 映射文件配置...
2018-12-13 16:35:08
7193
1
原创 nginx详解-详细配置说明
本文为看视频《Nginx入门到实践》总结的学习笔记。一、服务器基础配置远程链接服务器ssh 用户名@公网ip默认的用户名是root,假如公网 ip 是 a.b.c.d, 那链接命名就是ssh root@a.b.c.d下载安装基础库yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automakeyum -y ins...
2018-11-29 11:22:35
707
原创 你想要的全平台全栈开源项目 - PC(Vue、React)、移动H5(Vue、React)、小程序、Android原生、ReactNative、java后端
全平台全栈开源项目 coderiver 今天终于开始前后端联调了~首先感谢大家的支持,coderiver 在 GitHub 上开源两周,获得了 54 个 Star,9 个 Fork,5 个 Watch。这些鼓励和认可也更加坚定了我继续写下去的决心~ 再次感谢各位大佬!项目地址: https://github.com/cachecats/coderiver靠业余时间从产品立项,到画原型图设计...
2018-11-19 16:59:40
927
原创 评论模块优化 - 数据表优化、添加缓存及用 Feign 与用户服务通信
前段时间设计了系统的评论模块,并写了篇文章 评论模块 - 后端数据库设计及功能实现 讲解。大佬们在评论区提出了些优化建议,总结一下:之前评论一共分了两张表,一个评论主表,一个回复表。这两张表的字段区别不大,在主表上加个 pid 字段就可以不用回复表合成一张表了。评论表中存了用户头像,会引发一些问题。比如用户换头像时要把评论也一起更新不太合适,还可能出现两条评论头像不一致的情况。的确...
2018-11-16 19:03:45
562
原创 Redis详解 - SpringBoot整合Redis,RedisTemplate和注解两种方式的使用
本文主要讲 Redis 的使用,如何与 SpringBoot 项目整合,如何使用注解方式和 RedisTemplate 方式实现缓存。最后会给一个用 Redis 实现分布式锁,用在秒杀系统中的案例。更多 Redis 的实际运用场景请关注开源项目 coderiver项目地址:https://github.com/cachecats/coderiver一、NoSQL 概述什么是 NoSQL ?...
2018-11-16 16:36:08
32612
6
原创 服务网关 Zuul 与 Redis 结合实现 Token 权限校验
这两天在写项目的全局权限校验,用 Zuul 作为服务网关,在 Zuul 的前置过滤器里做的校验。权限校验或者身份验证就不得不提 Token,目前 Token 的验证方式有很多种,有生成 Token 后将 Token 存储在 Redis 或数据库的,也有很多用 JWT(JSON Web Token)的。说实话这方面我的经验不多,又着急赶项目,所以就先用个简单的方案。登录成功后将 Token ...
2018-11-14 23:14:13
3048
原创 Spring Cloud 微服务实战详细笔记
本文是看某课网关于 SpringCloud 微服务实战的视频总结的笔记,其中涉及了Eureka Server 和 Eureka Client 的配置Eureka Server 高可用性服务间通信的两种方式:RestTemplate 和 FeignRabbitMQ 的安装和使用配置中心的使用Spring Cloud Stream 的使用服务网关 Zuul 的各种用法由于是随堂笔记...
2018-11-08 16:54:40
472
原创 评论模块 - 后端数据库设计及功能实现
评论模块在很多系统中都有,CodeRiver河码 作为类似程序员客栈的沟通协作平台自然也不会少。前端界面是参考了简书的评论模块,专门写了一篇文章介绍实现步骤:vue + element-ui + scss 仿简书评论模块感兴趣的可以看看。项目地址:https://github.com/cachecats/coderiver代码在 根目录/java/comments-service文章...
2018-11-07 18:58:50
12243
11
原创 【Android从零撸美团四】美团首页布局解析及实现 - Banner+自定义View+SmartRefreshLayout下拉刷新上拉加载更多
这是【从零撸美团】系列文章第四篇。项目地址:https://github.com/cachecats/LikeMeiTuan仿美团开源项目整体架构和首页其实早就完成了,前段时间家里各种事情搞得心力交瘁,停更了一段时间。甚至一度动摇继续这个项目的决心,因为最近在学前端,在技术的深度和广度之间一直纠结摇摆不定。一个声音是继续完成这个项目,把安卓玩的更深入一些;另一个声音是赶紧学前端吧,抓紧拓展技...
2018-11-04 09:47:08
8253
2
原创 【Android从零撸美团三】Android多标签tab滑动切换 - 自定义View快速实现高度定制封装
这是【从零撸美团】系列文章第三篇【从零撸美团】是一个高仿美团的开源项目,旨在巩固 Android 相关知识的同时,帮助到有需要的小伙伴。GitHub 源码地址:https://github.com/cachecats/LikeMeiTuan每个项目基本都会有多个 Tab ,以期在有限的屏幕空间展现更多的功能。有需求就会有市场,如今也出现了很多优秀的 tab 切换框架,使用者众多。但是...
2018-11-03 12:23:15
6051
原创 【Android从零撸美团二】仿美团下拉刷新自定义动画
这是【从零撸美团】系列文章第二篇。项目地址:https://github.com/cachecats/LikeMeiTuan今天写了下拉刷新,框架用的是 SmartRefreshLayout ,不为啥,因为Github 上它有 9.5k 个 star,中文支持好节省时间。先上图:一、分析美团的下拉加载动画初看挺简单的,就一个卖萌的小人。细看的话还稍微有点复杂,一共有三个状态。刚开...
2018-11-03 12:20:30
1825
原创 【Android从零撸美团一】统一管理 Gradle 依赖 提取到单独文件中
前言从今天开始带大家一起从零开始撸一个美团Android版App。【从零撸美团】这个专题将持续更新,用以详细记录分享开发过程,欢迎关注。源码地址:https://github.com/cachecats/LikeMeiTuan专题的第一篇文章本来想按惯例讲项目介绍、整体架构、代码规范之类的。但今天有点躁动,不想讲那么正经深奥的东西,定的最低计划又是周三和周日每周两更,所以就暂且讲构建项目...
2018-11-03 12:17:10
1913
1
原创 AlertDialog中EditText软键盘自动弹出与隐藏
好久没动安卓原生开发,都快忘的差不多了。项目有个需求是在弹出的 AlertDialog 中输入一些文字,这就牵扯到软键盘的自动弹出与隐藏了。虽然以前也做过,但时间久了有些生疏,还是费了些时间。所以记录下来便于以后翻阅。效果图:点开之后自动弹出有延时,这个时间是自己设的,设多长时间根据情况而定。具体实现关键点说明:这句代码解决软键盘不能弹出的问题。如果不加这句,软键盘不会弹出。a...
2018-11-03 12:06:28
3426
原创 FragmentTabHost 用法
一、FragmentTabHost结构如下图:FragmentTabHost 包含两个内容:TabWidget和FrameLayout。标准的FragmentTabHost是TabWidget在上面,FrameLayout在下面。如果想要制作TabWidget在下面的效果,可以在布局文件中手动添加一个FrameLayout,并将FragmentTabHost 中的FrameLayout...
2018-11-03 11:53:20
4481
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人