保存成功
订阅成功
保存失败,请重试
提交成功
woodwang

woodwang

Java软件工程师
从事 Java 开发 7 年+,精于 Java 服务器端程序开发,熟悉设计模式及其在各大主流框架中的应用原理,研究过 Java 并发包源码,搭建过 ORM 框架。路漫漫,仍然在路上的 Java 程序员!...更多
创作文章16

五个锦囊妙计,助你解决 80% 的 Vue 开发问题

学习 Vue.js 半年了,经历了三个月的纯 Vue开发后,笔者完成了新产品的三个大功能模块。从基础管理列表,到 Go.js 的拓扑图绘制,再到 Echarts 各种图渲染,思路已经从用 jQuery 纯手工操作 HTML,转换到 Vue.js 基于数据驱动的开发模式了。 汇总了近三个月的工作笔记,笔者总结出了覆盖 80% 开发问题的五个技术点及其相关思考。时隔半年,终于决定发起 2020 年第二篇 Chat 啦,它是一份 Vue 开发锦囊,请查收: 1. 复杂引用中,直接用 Vue.set 完成父子组件通信。 2. 同步请求是必要的:同步请求的应用场景、如何利用 Await 实现同步封装以及 async 的注意事项。 3. 子组件依赖的数据,如果需要在异步请求中初始化,用 v-if :v-if 和 v-show 对子组件渲染的影响,如何抉择? 4. v-for 循环引用子组件的定位方法:使用 v-for 生成的 el-tree 组件,如何编写 NodeClick 事件才能获取当前操作的树节点? 5. Echarts 绘图组件封装需谨慎:父组件多次引用同一个绘图组件时,封装不当引发渲染错乱问题分析。 6. Vue.js 其他小而隐的知识点。
96 订阅

Vue 弹出框组件的完整封装过程

Vue.js 是以数据驱动的前端框架,相比年初玩过的 Angular.js,Vue.js 简单且更契合后端开发人员的思维。它与 Java 的 OOP 思想类似,将前端分为数据和行为两大块,行为对应着方法,数据绑定着页面元素;在方法中修改数据,用户就能在页面上实时看到数据的变化。 总的来说,后端转 Vue 也相对容易。本文将介绍 Vue 弹出框组件的相关原理,并教大家实现一个完整的弹出框组件,主要内容如下: 1. 常见的几种弹出框类型 2. 实现弹出框组件的两种方式 3. 父子组件数据传输方式简介 4. 从零搭建一个弹出框组件的完整过程 5. 后端转战 Vue 的入门感悟 本文的预期读者为已入门的 Vue.js 开发者或者对 Vue.js 感兴趣的后端开发人员。
Vue.js
134 订阅

五张 RIA 便签,轻松入门 Java 并发编程实战

最近习得一种新的读书方法,叫 RIA 拆书法。本场 Chat 将练习用 RIA 拆书法温故《Java 并发编程实战》这本书的第一部分。这是一本值得 Java 开发人员反复阅读和练习的技术书籍,它是由 JDK 并发包的作者们联合编写而成。吃透了这本书,工作中大部分并发问题都能迎刃而解了! 主要内容为: 1、什么是 RIA 拆书法 2、为什么线程无处不在 3、安全性问题是什么 4、用锁保护状态的常识 5、如何正确使用 volatile 6、对象安全发布的常用模式
RIA并发编程
120 订阅

如何快速接手一个 Java 项目

新入职一个公司或者中途介入一个新项目时,最初的工作就是熟悉项目结构。那么,在职场或者学习过程中,如何快速接手一个项目呢?答案就是夯实基础技能,理解 Java 项目的本质,了解常用技巧,胸中有丘壑,方能处之泰然。 详细内容如下: 1. Java 工程导入的基础知识 2. Java 应用导出的类型及部署方式 3. 不同 IDE 视图及其作用 4. 利用快捷键跟踪源码的方法 5. Web 应用的基本结构 6. 快速了解一个 Web 应用的基本步骤 7. 掌握 Web 技术框架的本质,万变不离其宗 本文适合刚入行的 Java 同仁们,学完本文,希望您能了解提高源码阅读效率的工具和方法,并形成全局看项目意识。
实战
199 订阅

Tomcat JULI 应用日志隔离原理解析

最近协助项目组部署 Tomcat 时遇到一种情况:同一 Tomcat 下多 war 包部署时,有一个简单的应用无法启动,所有日志渠道中都没有关于它异常信息,catalina 日志中只轻描淡写地说它部署失败了。在该应用的类路径下放置一个 logging.properties 文件后,看到了完整异常,最终改正配置、重启得以成功部署。 笔者因此对 Tomcat 日志框架产生了几个疑问: 1. 为什么 catalina 日志文件中没有具体应用的异常信息 2. 如何让应用启动异常信息输出 3. 应用类路径下的 logging.properties 和 Tomcat 的 conf 目录下的该文件的关系如何 4. Tomcat 是如何做到应用日志隔离的 本场 Chat 将以笔者弄清楚上述疑惑的过程为背景,详细介绍 Tomcat 对 java.util.logging 的日志框架“偷梁换柱”的底层支撑: 1. java.util.logging 原始包中的 LogManager 2. Tomcat 的 JULI 是什么 3. Tomcat 的 ClassloaderLogManager 是如何加载日志配置的 4. ClassloaderLogManager 替换 LogManager 的巧妙过程 5. 官方日志配置的几点建议 6. 启示录:-D , Java 中让人叹为观止的一种发明
Tomcat应用日志
104 订阅

理理 Java 开发中常见的设计模式

2009 年,我在 Java 选修课上第一次听老师说起设计模式,由于当时理解能力有限,对四人帮(GOF)的入门教程也只是浅尝辄止。如今接触 Java 已经整整十年了,回头来看设计模式,发现它没其实那么神秘。从 JDK 源码,到主流开源框架,设计模式的应用俯拾皆是,“设计模式为我所用”或多或少已经成为程序员编码思维的本能了。 本文就来理一理开发中常见的设计模式: 1. Spring 框架中的单例模式; 2. 单例模式在某些场景下的重要性,如:使用 Sqlite 数据库的应用; 3. IO 体系中的装饰模式; 4. 随处可见的工厂模式; 5. Tomcat 源码中的责任链模式和模板方法模式; 6. AOP 编程中的代理模式; 7. slf4j 日志框架中的门面模式; 8. 我的编程启示录。
Java
272 订阅

Java 多线程并发运用:解析单个大文件入库

今天看到一个问题“如何快速对 1GB 级别的 CSV 文件进行解析并入库?”,百度了一下这些关键字,搜索到的有效文章都是直接贴代码、没有分析过程的,因此想结合自己的工作经历来谈谈这个话题。 本场 Chat 的主要内容包括: 1. 普通 IO 读取大文件存在的问题; 2. Java 多线程解析大文件的基本思路; 3. 内存映射技术和多线程并发解析大文件的实现过程; 4. 其他方案分析; 5. 执行效率对比; 6. 大数据生态中数据处理任务的思考。
Java
313 订阅

Java 实现滑块验证码登录原理及完整流程

去年参与的一个外包项目,客户在二期需求中提出将登录验证码改为滑块验证码。全网搜索也没有找到一个完整的 Java 实现滑块验证码的项目,最终搜到了三个可用资源:Java 生成抠图的类,一个 Python 实现的滑块验证码,还有一个素材网纯前端项目。我将这三个资源整合:使用第一个项目的后端代码,第二个项目的前端代码,第三个项目的前端样式和图片素材,最终完成了 Java 实现滑块验证码登录功能。 本场 Chat 将详细介绍 Java 实现滑块验证码登录的过程,具体内容如下: 1. 验证码的发展历史; 2. 滑块验证码的原理; 3. 如何防止滑块验证码的恶意重放攻击; 4. Java 后端逻辑; 5. 前端代码; 6. 重难点内容总结。
Java
238 订阅

Quartz 分布式定时任务的使用及原理解析

单节点应用中使用 Quartz 定时任务比较容易,但是当应用需要支持分布式部署时,如何保证 Quartz 定时任务不会被不同的节点重复执行呢? 答案就是可以选择 Quartz 的分布式任务。Quartz 提供了一种基于数据库的分布式任务解决方案,本场 Chat 将从 Quartz 分布式定时任务的实践入手,根据 Quartz 的日志信息以及 Quartz 表中数据变化的过程,逐一分析其背后的实现过程,不通过源码,从实践的角度,管中规豹。 本场 Chat 将介绍如下内容: 1. Quartz 分布式任务的基础知识; 2. Java Web 中使用 Quartz 分布式任务的流程; 3. Quartz 分布式任务原理分析; 4. Quartz 分布式任务缺陷分析; 5. 构建分布式Java应用需要解决的问题。
Quartz分布式
203 订阅

Redis Sentinel 模式实践及问题整理

Redis-Sentinel 是 Redis 官方推荐的高可用性(HA)解决方案,虽然网络上 Sentinel 实践的文章很多,但是整理得并不全,初学者想要顺利完成 Redis Sentinel 模式的部署及应用,还需要费一番周折,比如我就折腾了两天才透彻理解官方文档中的所有内容。 本场 Chat 将以笔者自己的实践过程,分享 Redis-Sentinel 的部署及应用的相关知识: 1. Redis Sentinel 基本原理; 2. Redis Sentinel 部署过程; 3. Redis Sentinel 常用 API 及作用; 4. Sentinel 的添加与删除方法; 5. Sentinel master 的添加与删除方法; 6. Sentinel 的高级概念 sdown 和 odown; 7. 如何在 Java 应用中支持 Sentinel。
严选Redis
252 订阅

论 Java 编码中资源关闭的重要性

Java 开发过程中,各种资源输入输出流、线程池调度对象、线程对象、会话对象、连接对象等,都提供了 Close 等用于释放资源的方法,刚开始接触编程时可能都了解过资源流必须写在 Finally 中保证其被关闭,但是为什么要关闭呢?大家有没有吃过资源不关闭的亏呢? 本场 Chat 将探讨 Java 开发过程中各种资源泄露问题,了解常见的 Java 资源泄露风险,规范编码,以便能更高效地进行开发工作,减少不必要的问题排查工作。 具体探讨问题如下: 1. Java 常见资源有哪些; 2. 资源不关闭的可能危害; 3. 数据库连接为什么需要随用随关; 4. 线程池调度类的 Shutdown 作用; 5. 手动创建的线程是否有必要关闭; 6. Jboss 服务器下的内存泄露问题整理。
Java
139 订阅

基于 Tomcat 中间件的 Web 应用安全加固措施整理

作为 Java 开发人员,大家对 Tomcat 都不陌生,使用 Tomcat 作为应用服务器的同时,我们还应该关注 Web 应用的安全问题。那么在 Java Web 应用开发过程中,有哪些安全加固措施呢?这里笔者将分享自己在工作中的漏洞加固经历,通过本场 Chat,希望您能学到关于 Web 应用安全的一些技术和知识。 本场 Chat 主要内容: 1. OWASP 公布的哪些漏洞是我们容易遭遇的; 2. Tomcat 中间件中有哪些缺陷; 3. 如何加固我们的 Web 应用; 4. Web 应用安全加固措施整理; 5. 由我的漏洞加固经历所引发的思考。
TomcatWeb
151 订阅

新一代网络安全协议 TLS1.3 揭秘

网络安全日益严峻,目前 HTTPS 协议所依赖的 TLS1.2 协议也面临着种种脆弱性威胁,日前最新的 TLS1.3 协议已经尘埃落定,本场专题将带领大家探究 TLS 协议的前世今生,希望读者能对网络安全协议的概况有所了解。 本场 Chat 主要内容: 1. TLS 协议的发展历史。 2. TLS1.2 的加密流程及缺陷。 3. 新一代 TLS 协议做了哪些优化。 4. Wireshark抓包分析 HTTPS 协议的处理流程。 5. TLS1.3 的前景和落地挑战。
TLS1.3网络安全协议
146 订阅

详谈 Java Web 的监听器、过滤器、拦截器原理

JavaWeb 开发过程中,我们经常使用监听器、过滤器、拦截器,我们对 SpringMVC 项目的 web.xml 拦截器和监听器已经习以为常。可是作为开发者的你有没有细究过他们的原理、这三者之间的区别以及执行顺序呢? 本场 Chat 将带领大家理理这几个概念及背后的流程,为您解答如下几个疑问: 1. 监听器、过滤器、拦截器究竟是什么? 2. 项目启动过程中这三种类的实例化顺序如何? 3. 过滤器的启动和执行顺序受什么影响? 4. 过滤器使用场景? 5. 如何使用过滤器实现 Web 应用的安全防护? 6. 总结。
Java
221 订阅

SpringMVC 整合 SequoiaDB 数据库实现企业级应用

SequoiaDB 巨杉数据库是一款支持 SQL、高并发、实时性、分布式、可扩展、灵活存储的操作型 NewSQL 数据库(Operational NewSQL Database)。作为商业化的数据库产品,现已开源。SequoiaDB 企业版还具有一系列企业级特性,帮助企业更好落地大数据。 2018 年,SequoiaDB 巨杉数据库入选 Gartner 数据库 2017 报告,这样一款优秀的具有大数据存储能力的 NoSQL 数据库,也日益受到许多企业的青睐,笔者所任职的公司的一款软件产品也将 SequoiaDB 数据库作为底层数据存储组件。 本场 Chat 将结合笔者自己在项目实践过程中的经验,向大家介绍巨杉数据库在企业项目中的应用及整合流程。 通过本场 Chat,希望大家能够了解如下相关知识: 1. SequoiaDB 基础知识概述; 2. 技术选择依据; 3. SequoiaDB 数据库与 Java 对象的 ORM 基础; 4. SequoiaDB 开源 ORM 项目分析; 5. SpringMVC 整合 SequoiaDB 数据库的流程; 6. SequoiaDB 数据库结合 JS 实现数据库表操作; 7. SequoiaDB 数据库使用过程中的问题整理。
数据库
103 订阅

IDEA Maven 使用教程

Maven 工具日益成为 Java 开发人员喜爱的开发工具之一,随着很多公司对 Maven 的青睐,初识 Maven 的开发者应该会有很多疑惑,而百度出的内容又缺乏系统的指导意义。笔者最初学习Maven时也相当困惑,经过一段时间的摸索最终厘清了Maven工具的用法,所以萌生了发布 Chat 的念头,供同行参考,希望能给大家一些入门帮助。 本场 Chat 首先会带领大家了解 Maven 的基础内容,然后带领大家开发第一个Maven Web 应用,并针对 Maven 项目和传统的Eclipse项目进行详细地对比阐述,帮助大家对 Maven 的用法做到知其然,并知其所以然。 本场 Chat 您将学到如下内容: 1. 了解 Maven 的概念及其优缺点; 2. 了解 IDEA 中使用 Maven 注意事项; 3. 学会如何将普通项目迁移为 IDEA 的 Maven 项目; 4. 学会如何发布第一个 Maven Web 项目; 5. 了解 Maven 项目目录结构; 6. 了解 Maven 项目和普通项目的区别及联系; 7. 领悟 Maven 的优势并喜欢上 Maven。
IDEA Maven
389 订阅