【Share】做事三问 what/why/how
我在Tip里面分享了EL-ADMIN的快速上手记录,因为大家的码下时间都很宝贵,所以在Share里面我想说一些“题外话”,码下帮助看文章的码下人厘清思路,更有目的码下性的找到他想要的东西,毕竟磨刀不误砍柴工嘛。码下源码开发mysql
我们做事之前,码下如果想把它做的码下又快又好,一般都要想想以下三个问题:
这个事情是码下什么?
我们为什么要做这件事?
这件事情要怎么做?
如果换成英语,那就是码下What? Why? How? 这样写起来比较简洁。
“What”:做事之前要明确目标,码下如果目标都没弄清楚,码下或者搞错了,码下那么很大可能你做的码下工作都是无用功,甚至有可能南辕北辙,码下做得越多,错的越多。
“Why”:为什么要做这件事,就是要知道这件事的来龙去脉。很多时候,我们完成事件A,目的是为了完成事件B,本质可能是为了完成事件C,如果你有方法可以直接完成事件B,甚至C,那么会省去很多功夫。另一方面,知道事情的原委,会让你做事更踏实,不至于盲目劳动,像个机器。
“How”:知道what,why之后,怎么做事?(需要注意一点,此处不论能力是否足够,讨论的是力所能及的事。)接到任务直接开干,固然畅快直接,如果是很熟稔的事情,甚至能够很快做好(做这种事的时,同样可以思考一下这3个问题)。素材源码站不过通常情况下,开始做事之前,我们一般只知道自己的能力、资源和事情的大概,具体怎么做,则需要思考。直接开干,有可能完成任务,但是如果能够做个计划,把事情的重要程度、已有资源的分配、步骤、时间等都考虑清楚,再按照计划一步步执行,那么做事自然得心应手,无往不利了。
结合“EL-ADMIN快速上手”这个主题:
What:快速上手“EL-ADMIN”这个后台管理系统框架。
如果你的目标不是这个,比如你想学习微服务或者分布式技术,你大可不必通过这个框架来学习,直接去找相应的技术博客或者教程会更有效果。
如果你的目标与之相近,是想学习java,找一个项目练练手,那这个项目能够满足你的需求,不过还需要考虑到自己的技术水平与具体想要学习的技术等问题,可能其他的项目更加适合你。
如果你的目标与之几乎完全一致,你就是想要一个后台管理系统,前后端分离,微服务,可扩展的更好,那你可以不用犹豫了,一般来说,完全一样的目标是很难的,能够满足需求就已经足够好了。
Why:为什么要“快速上手EL-ADMIN”。
我们来假设一个极端的情况:
你之所以想要“快速上手EL-ADMIN”,是因为你想要一个后台管理系统;
你之所以想要一个后台管理系统,是建立内核源码树因为你要完成工作任务;
你之所以要完成工作任务,是因为你要赚钱养家糊口;
你之所以AAA,是因为BBB……
如果不设限制的话,似乎可以推演到宇宙大爆炸。
在这些“之所以,是因为”里面,有些事情是你无法避免的,比如你要养家糊口。而有些事情是可做可不做的,比如“快速上手EL-ADMIN”,你要一个后台管理系统,不一定要EL-ADMIN作为框架,也可以选其他的,如果要求不高,或者时间充裕,可以自己写一个,解决问题的方法有很多,不一定都得亲自上场,也可以外包或者买一个。
想清楚why,就是确定当前主要矛盾的主要方面,要透过现象看本质。如果知道这件事是必须要做,且只能这样做,那剩下的事情就相对简单了(开始干活)。当然这是极端的情况,省略了很多细节,也还有很多种可能性,不过用来说明也足够了。
How:怎么快速上手“EL-ADMIN”
怎么快速上手“EL-ADMIN”,当然是看我的“EL-ADMIN快速上手记录”啦,开个玩笑。
太过于具体的方法论,不是这里想要讨论的。我们可以把“快速上手EL-ADMIN”稍微抽象一下,比如说“怎么快速上手一个新框架”,这样更具有实际意义。
一般来说,一个较为成熟的项目,都会有说明文档,那么首先阅读说明文档,二八杠源码下载会帮助你对这个项目产生一个大概的印象,如果这个说明文档写得好,可以省去你很多功夫。
而有时候项目是没有说明文档的,或者说写的很烂,有跟没有一样,一种可能是这个项目水平较差,你需要考虑是否要花费精力在学习该项目上,另外一种可能是这个项目很新,还没有来得及写好说明文档,除了直接阅读源代码与注释,你需要和提供者进行交流才能获得比较清晰的了解。
那这样的情况下,我们只能运用已有的知识帮助自己理解,比如你用过的框架与这个项目使用的相同,你大概率可以对比出相应的结构目录、功能模块。如果之前没有接触过,那么根据项目的目录来个粗读,是个比较合适的方法。
先总体了解模块与模块之间的关系,整个项目使用的技术,主要的业务流程之后,就可以根据你的着重点,来精读代码细节了,你想了解权限控制、错误处理、某个业务逻辑等等内容,可以debug调试,也可以查看日志文件,必要时可以画图辅助思考,去除暂时无用的代码。
一般等这步做完之后,可以说你已经初步上手了这个项目了,剩下就是利用和改造项目了(不用完全理解掌握项目,要时刻记住,能够满足需求即可)。
总结:其实做事的方法论世界上已经有很多了,各种成功学、管理学书籍课程都会有类似的短信群发 php 源码内容。在此我也只是抛砖引玉,求一个知行合一罢了。XD
深入理解Vue3自定义指令ClickOutside的实现
在开发组件时,常需处理下拉框或模态框的显示隐藏逻辑,确保点击元素外可相应操作。本文深入解析 Vue3 自定义指令 ClickOutside 实现,通过阅读 Element-Plus 和 naive-ui-admin 源码,总结经验,以便更好地理解实现细节。
先简要介绍工具函数 on 和 off,用于事件绑定和解除。它们提供简洁的事件管理方式,如利用组合实现一次性事件处理。在学习自定义指令时,on 和 off 函数是基础工具。
Vue 提供多种内置指令,自定义指令可扩展功能,满足特定业务需求。自定义指令包含七个声明周期钩子函数,其中 mounted、updated 和 beforeUnmount 最常用。这些函数分别在组件生命周期的不同阶段执行操作。
指令对象包含 el 和 binding 属性,el 是绑定指令的 DOM 元素,binding 是绑定数据的容器,其属性如 oldValue、value 等用于控制指令行为。通过实例化指令,可灵活使用这些属性。
动态参数指令通过 arg 属性实现,允许指令参数动态变化,简化复杂需求处理。例如,通过 arg 参数传递方向值来控制 div 的定位变化。
简易版 ClickOutside 实现中,指令挂载时绑定全局事件处理器,事件处理逻辑在指令内部定义。使用 value 属性传递操作函数,判断点击事件是否触发目标外点击逻辑。contains 函数用于判断事件目标是否在绑定元素内。
简易版优化时,考虑全局绑定事件多次,改为一次性绑定,以减少操作复杂性。引入 Map 对象收集事件处理器,便于统一执行并管理,简化解绑逻辑。
升级优化阶段,考虑 click 事件限制,对比使用 mousedown 和 mouseup 事件,确保支持不同按钮触发。通过事件对象区分上下文,增强指令兼容性。
源码实现中,包含 createDocumentHandler 函数用于创建事件处理器,确保内部使用 el 和 binding。详细逻辑包括完整性、元素位置、特殊情况等判断,确保准确执行指令逻辑。
文章总结了 ClickOutside 的实现逻辑,从基础工具封装到指令学习,再到深入源码解析。理解 ClickOutside 不仅需关注整体流程,还需思考事件处理和指令机制的细节。随着实践和深入研究,开发者能更好地应用自定义指令,优化组件交互逻辑。
深入掌握Spring SpEL及其实战应用
Spring Spring Expression Language(SpEL)是一种强大的表达式语言,支持运行时对象图的查询和操作。它类似于Unified EL,但增加了方法调用和基本字符串模板功能。SpEL是Spring家族产品中受支持的表达式语言,用于创建安全、灵活的应用。
在Spring Security中,四个关键注解用于安全控制:PreAuthorize、PostAuthorize、PreFilter、PostFilter。它们接收SpEL表达式。例如:
hasAuthority('ROLE_ADMIN') or #reqVo.sysUser.username == #userDetails.username
表示:当前登录用户必须拥有ROLE_ADMIN权限,或username匹配,才允许进入findUsers方法。
hasAuthority('ROLE_ADMIN') or (#reqVo.username == #userDetails.username and !T(org.springframework.util.StringUtils).isEmpty(#reqVo.password))
意味着:当前登录用户必须有ROLE_ADMIN权限,且username匹配且password非空,才允许进入updatePassword方法。
通过SpEL,可实现安全控制,其用途广泛,但应避免复杂安全表达式和嵌入无关业务逻辑,以免难以测试和调试。
SpEL可用于创建自定义功能,如接口加锁,避免重复用户名。通过注解和SpEL表达式,可实现此功能,且Spring Security注解处理也是按此法实现。
SpEL具备多种强大功能,例如读取系统属性、解析基本类型数据、调用方法、解析对象属性值、调用Java类静态方法、注册方法和对象变量引用、处理null值和安全调用、进行List运算、访问map等。具体用法可参考官方文档。
项目源码可在GitHub和Gitee上找到,代码同步更新。
搭建nextcloud私有云存储网盘的教程详解
Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。它的客户端覆盖了Windows、Mac、Android、iOS、Linux 等各种平台,也提供了网页端以及 WebDAV接口,所以你几乎可以在各种设备上方便地访问你的云盘。
简介:
搭建个人云存储一般会想到ownCloud,堪称是自建云存储服务的经典。而Nextcloud是ownCloud原开发团队打造的号称是“下一代”存储.
真正试用过后就由衷地赞同这个Nextcloud:它是个人云存储服务的绝佳选择。一开始以为Nextcloud只是一个网盘云存储,后来看到
Nextcloud内置了Office文档、相册、日历联系人、两步验证、文件管理、RSS阅读等丰富的应用,我发现Nextcloud已经仅仅可以
用作个人或者团队存储与共享,还可以打造成为一个个人办公平台,几乎相当于一个个人的Dropbox了。Nextcloud运行环境与平常我们
常用的程序差不多,LAMP是官方首选,不过LNMP也照样可以运行,只不过需要自己写URL重写规则。当然,官方还提供了SNAP一键安装包
注:以上来自网上某处,重点是下面的安装
本篇采用rpm源码安装,本人亲测有效,在线或一键安装没难度,请自行百度,
1.安装LAMP架构:
注:为了避免权限,网络问题等请用root用户或较高级别账号登录再操作
yum install -y /yum/el7/epel-release.rpm
rpm -Uvh /yum/el7/webtatic-release.rpm
centos/redhat 6:
rpm -Uvh /yum/el6/latest.rpm
centos/redhat 5:
rpm -Uvh /yum/el5/latest.rpm
安装好后先停止mon 开始安装php5.6
yum install -y phpw phpw-opcache phpw-xml phpw-devel phpw-mcrypt phpw-gd phpw-mysql phpw-intl phpw-mbstring 安装完成后启动aptech
systemctl start /deezer/spleeter...
项目二:FlutterBoost。由阿里系闲鱼团队开源的框架,提供快速便捷的原生应用与 Flutter 混合集成方案,最新版本为 v3.0-preview,目前仍持续维护中。
项目地址:github.com/alibaba/flutterboost...
项目三:Orika。一个基于字节码技术栈实现的高性能 Java 对象映射框架,以其简单易用、高效的特点成为众多映射框架中的佼佼者。
项目地址:github.com/orika-mapper...
项目四:hotkey。京东 APP 后台热数据探测开源框架,经过多次高压压测和京东 大促的考验,精确探测热门商品并快速推送到服务端,大幅减轻数据层查询压力,提升应用性能。
项目地址:gitee.com/jd-platform-hotkey...
项目五:PaddleOCR。基于飞桨的 OCR 工具库,提供超轻量级中文 OCR,支持中英文数字组合识别、竖排文本识别、长文本识别,同时包含多种文本检测、识别的训练算法。
项目地址:gitee.com/paddlepaddle/...
项目六:XXL-JOB。一个轻量级分布式任务调度平台,设计目标是开发迅速、学习简单、轻量级、易扩展,现已开放源代码,并在多家公司线上产品线中应用。
项目地址:github.com/xuxueli/xxl-job...
项目七:CIM。基于 Netty 框架的即时消息推送系统,支持多端接入,适用于移动应用、物联网、智能家居等领域。
项目地址:gitee.com/farsunset/cim...
项目八:DevSidecar。为开发者提供辅助的边车工具,通过本地代理将 HTTP 请求代理到加速通道,解决网站和库无法访问或访问速度慢的问题。
项目地址:github.com/docmirror/devsidecar...
项目九:Jsoup。一款 Java 的 HTML 解析器,可直接解析 URL 或 HTML 文本,提供简单易用的 API,支持 DOM、CSS 以及类似 jQuery 的操作方法。
项目地址:github.com/jhy/jsoup...
项目十:Knife4j。为 Java MVC 框架集成 Swagger 生成 API 文档的增强解决方案,前身是 swagger-bootstrap-ui,取名 knife4j,旨在小巧、轻量、功能强大。
项目地址:github.com/xiaoymin/swagger-bootstrap-ui...
项目十一:Arthas。阿里巴巴开源的 Java 诊断工具,支持 JDK 6+,适用于 Linux/Mac/Windows,提供命令行交互模式与丰富的 Tab 自动补全功能。
项目地址:github.com/alibaba/arthas...
项目十二:El-admin。基于 Spring Boot、Jpa、Spring Security、redis、Vue 的前后端分离的开源后台管理系统,采用 RBAC 权限控制方式,支持数据字典、数据权限管理与代码生成。
项目地址:github.com/elunez/eladmin...
项目十三:Halo。使用 Java 开发的开源博客系统,基于 Spring Boot 框架,通过一行命令即可完成安装。
项目地址:github.com/halo-dev/halo...
项目十四:Hutool。一个功能全面的 Java 工具类库,提供静态方法封装,降低学习成本,提高工作效率。
项目地址:github.com/dromara/hutool...
希望以上推荐能满足您的需求,若感兴趣,不妨前往 GitHub 上探索更多好玩的开源项目,每日都有更新!
2024-12-28 23:51
2024-12-28 23:45
2024-12-28 23:38
2024-12-28 22:02
2024-12-28 21:57