
杂集
文章平均质量分 81
叩丁狼
用心做教育,专注每一位学员的成长
展开
-
刚进职场的程序员,和工作了2、3年的程序员到底有什么不一样?
“老师,我们刚进职场,和工作了2、3年的程序员到底有什么不一样?”这是很多同学在进入职场后,问过我最多的问题。不妨让我来翻译一下:老师,我到底有哪些表现让我在职场显得特别“嫩”,没办法获得领导、同事更多的认可和信任?于是我总结分析了工作中常见的三个误区,如果在工作中有意识地规避这些误区,也许就能帮助你快速成为“职场老司机”——01 不敢争取【情景】公司有一个做大项目的机会,经理问你是否愿意参与,但你没有十足的把握,最后权衡来权衡去还是拒绝了。【解析】这里面有两个层次的问题。第一,还是自信.原创 2021-12-23 11:56:20 · 4783 阅读 · 0 评论 -
互联网最大谣言:程序员35岁必淘汰?今天我就来击碎他!
朋友,只要你是程序员,你一定知道996和“程序员35岁必死”的言论。这两个话题在互联网上的讨论一次比一次激烈。996工作制,众所周知,每天早上9点到岗,一直待到晚上9点,每周工作6天,很多互联网公司在招聘前甚至就会私下告诉你公司实行996制度。尽管很多年轻程序员在工作之前已经做了一定的心理准备,而一旦真正直面这些问题,心里肯定会打怵:“我现在年轻,还可以接受加班,可等我成家了、年纪大了、身体吃不消怎么办?”今天我就从个人的角度跟大家分享一下我的看法。程序员最爱给自己挖坑本人从事过开发工作,现在原创 2020-12-02 10:03:06 · 14822 阅读 · 35 评论 -
用了这么久开源社区,还搞不明白免费/自由/开源软件?
在开源社区中,有很多人经常把免费软件、自由软件、开源软件这三个概念混淆在一起。今天就来和大家谈谈这三个软件到底有什么不一样。免费软件用户可以免费使用该软件,但通常会有其他权限的限制:1.源码不一定会公开/不能修改软件源码;2.限制拷贝的代码数量和段落;3.不得用于商业用途、不能以该软件牟利、仅供个人使用、仅供学习交流使用等等,如果有人未经作者允许则随意散布、传播,作者有权进行追责;4.限制使用者研究、修改和再散布的权利;免费软件免费的目的无非出于:先提供免费版本软件扩大市场占有率,当原创 2020-11-02 18:12:16 · 1433 阅读 · 3 评论 -
中国开发者现状报告:最想学Java语言、金融业高收入比例大、仅2%的人不安排学习时间......
在《2019-2020 年中国开发者调查报告》中,我们从「开发者现状」中有最新的发现:6成开发者在使用Java语言;在一线城市,30%开发者月薪超过1.7万元;互联网、软件、IT制造三个技术领域涵盖了国内84%以上的开发者;开发者学习热情高涨,31%接受了软件开发的在职培训…*以下数据报告来源:优快云软件开发工具使用特点分析01Java长盛:使用最多、最想学60%的开发者使用最多的编程语言是Java,Java、Python、Javascript是开发者最想学的三种语言。左图为开原创 2020-08-20 10:36:03 · 974 阅读 · 1 评论 -
如何在百度中脱颖而出——前端与SEO
SEO:译为搜索引擎优化,搜索引擎优化技术现在随着百度,谷歌,搜狗等搜索引擎的兴起,越来越火爆,那今天,我们一起来看看,SEO和前端有着怎样千丝万缕的联系~SEO的由来:早在90年代国外便有了SEO的概念,曾经由于谷歌的SEO,导致很多媒体行业的不满。后来大约03年,由于一款游戏(传奇私服),各种私服产业恶性竞争,慢慢的,SEO在中国逐渐商业化。SEO分类:SEO主要分为白帽SEO和黑帽SEO,就像白帽黑客和黑帽黑客一样。白帽SEO:改良网站设计规范,使网站对搜索引擎和用户更加友好黑帽SEO:利原创 2020-07-13 11:54:39 · 892 阅读 · 1 评论 -
28岁程序员郭宇财务自由退休,都说他运气爆棚,但我看未必...
今年6月,一封退休告别信最近引爆了微博、知乎等各大平台,一位名叫郭宇的程序员走进了大众的视野。郭宇是谁?他的微博简介是这么写的:株式会社山月夜代表取缔役社长/住过150+个日本温泉乡/100万公里飞行进度86.5%/程序员/原字节跳动资深技术专家。说到程序员,大家都会想到996、过劳、无休止地加班、没有自由…而这位程序员颠覆了大众的认知,不仅在28岁成功实现财务自由从字节跳动退休,并在日本开了一家温泉旅馆,当起了作家。面对这一系列的“暴击”,让不少互联网行业人直呼:“我酸了!”01 28岁财原创 2020-07-02 10:07:30 · 3653 阅读 · 1 评论 -
疫情让程序员活得更难吗?2020年程序员薪资满意度、跳槽状况、裁员补偿数据大公开!
自从网传程序员到了35岁之后必须要转行,现在又有人传言:“疫情之下,程序员今年要过苦日子了,降薪裁员是大趋势。”不是,我就不明白了,你们怎么就看不得程序员好呢?天天巴望着程序员降薪、转行、裁员…我们不可否认,从去年年底开始,疫情就导致了很多企业陷入危机,继而停发薪资、变相裁员,在如此“难搞”的大环境下,对程序员来说究竟意味着什么?在疫情期间,程序员客栈对北京、上海、广东、浙江等全国29个省、直辖市、特别行政区的近40万程序员进行了一次详细调查。我想这份详细调查数据足以吊打网络上传出莫名其妙的“程序原创 2020-05-25 09:37:48 · 2031 阅读 · 2 评论 -
程序员和码农有什么不同?从这三个单词就看得出来
码农这个词很早就有了,但我以为这只是程序员偶尔自黑的幽默,直到论坛、博客上越来越多人正儿八经地自称“码农”、“码畜”、“搬砖的”…有人认为“码农”、“程序员”、“工程师”等等这些称谓大可不必过于在意,名称和真实情况是两回事。不过我也比较介意别人叫我码农,可能本身并无恶意,但是感觉这个称呼实在配不上自己的工作创意与工作程度,就像我可以说自己是屌丝,但别人这么叫自己肯定不舒服。举个对比的例子:设计师VS美工艺人VS唱歌的心理咨询师VS路边算卦财务计算VS收银新媒体运营VS小编…程序员不是码原创 2020-05-12 09:52:33 · 6746 阅读 · 2 评论 -
MyBatis Generator代码分析一
【原创文章,转载请注明原文章地址,谢谢!】注意:以下代码都有适当修改和删改,为了更好看清楚执行流程首先是简单分析使用Shell Runner执行MBG的最概略的执行流程分析:org.mybatis.generator.api.ShellRunner:运行MyBatis Generator 的Main入口类;核心代码(main方法)://解析命令行Map<String, String>...原创 2018-06-21 09:06:30 · 412 阅读 · 0 评论 -
Mybatis Generator最完整配置详解
【原创文章,转载请注明原文章地址,谢谢!】同学们有福了,花了一些时间,重新整理了一个最完整的Mybatis Generator(简称MBG)的最完整配置文件,带详解,再也不用去看EN的User Guide了;<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//my...原创 2018-06-21 09:07:34 · 159 阅读 · 0 评论 -
PowerMock介绍
【原创文章,转载请注明原文章地址,谢谢!】一、为什么要使用Mock工具在做单元测试的时候,我们会发现我们要测试的方法会引用很多外部依赖的对象,比如:(发送邮件,网络通讯,远程服务, 文件系统等等)。 而我们没法控制这些外部依赖的对象,为了解决这个问题,我们就需要用到Mock工具来模拟这些外部依赖的对象,来完成单元测试。二、PowerMock简介PowerMock 也是一个单元测试模拟框架,它是在其...原创 2018-06-21 09:08:25 · 418 阅读 · 0 评论 -
理解MyBatis Generator Plugin
【原创文章,转载请注明原文章地址,谢谢!】Plugin能够用来在MyBatis Generator生成Java和XML文件过程中修改或者添加内容;Plugin必须实现org.mybatis.generator.api.Plugin接口,在这个接口中提供了非常多的方法,所以,很自然,MBG提供了一个适配器org.mybatis.generator.api.PluginAdapter,一般情况下只需要...原创 2018-06-21 09:09:18 · 397 阅读 · 0 评论 -
提高代码质量—FindBugs代码审查工具
【原创文章,转载请注明原文章地址,谢谢!】一、什么是FindBugsFindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。它可以简单高效全面地帮助我们发现程序代码中存在的bug,bad smell,以及潜在隐患。针对各种问题,它并且提供了简单的修改意见供我们重构时进行参考; 通过使用它,可以一定程度上降低我们code review的工作量...原创 2018-06-21 09:10:03 · 631 阅读 · 0 评论 -
MySQL 5.7 使用原生JSON类型
【原创文章,转载请注明原文章地址,谢谢!】首先回顾一下JSON的语法规则:数据在键值对中,数据由逗号分隔,花括号保存对象,方括号保存数组。按照最简单的形式,可以用下面的JSON表示:{"NAME": "Brett", "email": "brett@xxx.com"}如何在MySQL中使用JSON类型:新建user表,设置lastlogininfo列为JSON类型。mysql> C...原创 2018-06-21 09:11:09 · 666 阅读 · 0 评论 -
大飞带你深入理解Tomcat(六)
接上篇,代码已经能处理简单的请求,但走读一下代码,会发现这些代码非常粗糙,可改动的地方非常多,本篇先对HttpServlet进行优化上上篇中HttpServer类担当2个责任,1:负责接收客户端发起的请求2:解析并响应请求。按照单一类设计原则应该给予拆分,参考tomcat源码,HttpServer类可以分为HttpConnector类和HttpProcessor类,前者仅负责接收各类请求,后者解析...原创 2018-06-15 09:31:43 · 223 阅读 · 0 评论 -
大飞带你深入Tomcat(五)
接上篇, 上篇讲到解析请求行,这篇来讲下,请求头的处理, 基于http协议的请求头格式key:value形式存在,再解析时可以以:为分隔点, 左边为name, 右边value,循环,一行一行解析:新增类:HttpHeaderpackage com.wolfcode._02_2_tomcat.http;public class HttpHeader { public static fi...原创 2018-06-15 09:32:29 · 151 阅读 · 0 评论 -
大飞带你深入理解Tomcat(四)
接上篇,代码已经能处理简单的请求,但走读一下代码,会发现这些代码非常粗糙,可改动的地方非常多,本篇先对Request类进行优化原代码: // 解析浏览器发起的请求 public void parseRequest() { // 暂时忽略文件上传的请求,假设都字符型请求 byte[] buff = new byte[2048]; Stri...原创 2018-06-15 09:33:05 · 303 阅读 · 0 评论 -
大飞带你深入理解Tomcat(三)
上篇代码设计中存在一个设计上的问题:ServletProcessor类 Class myClass = loader.loadClass(servletName); Servlet servlet= (Servlet) myClass.newInstance(); //使用servlet调用service方法,servlet处理完成 servlet.service(...原创 2018-06-15 09:33:56 · 195 阅读 · 0 评论 -
大飞带你深入理解Tomcat(二)
接上一篇,通过HttpServer,Request,Response个类的配合勉强可以处理浏览器发起的请求跟响应请求。但功能有点寒酸,只可以处理静态网页和404,本篇加入对servlet的支持,注意,仅仅是对servlet的简单支持。servlet回顾:servlet是java web一个组件,是java动态网页的基石,使用相对简单,想深入学习的朋友可以腾讯课堂看任小龙老师传送门:java大神之路...原创 2018-06-15 09:35:29 · 194 阅读 · 0 评论 -
大飞带你深入理解Tomcat(一)
作者:叩丁狼教育王一飞,高级讲师。转载请注明出处。声明:1:本系列仅记录本人读<<深入剖析Tomcat>>此书的一些感悟,不足之处,留言指正,不胜感激。2:本系列所有代码参照<<深入剖析Tomcat>>,不对之处,留言指正,不胜感激。概念:传送门:tomcat百度百科,这里说一个点,tomcat是轻量级的javaweb服务器,用于处理servlet/...原创 2018-06-15 09:36:07 · 496 阅读 · 0 评论 -
怎么判断对象流已经读取到末尾
作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。对于有用过对象流的人来说,都很清楚,对象流操作的是对象,存入一个一个的对象,也只能读一个一个的对象,但是存在一个问题就是写入多少个就只能读多少个,没有读取到结尾的判断方法,如果读取超过了则会抛出异常java.io.EOFException,那咱们想做到通用如何来判断是否是最后一个呢?方法一在存入对象的时候使用集合的方式来存储对象,这样在获取时...原创 2018-06-15 09:36:48 · 6121 阅读 · 4 评论 -
跟我快速学习XStream(五)
作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。通过之前的四节的学习,相信很多人对 XStream 的基本操作已经掌握的差不多,当然也有一些特殊的操作,比如咱们想自定义 xml 标签的生成方式怎么处理呢?XStream 允许开发人员自己编写对象和 xml 的转换实现,只需实现 XStream 的 Converter 接口即可Converter 接口中的方法canConvert(clz) :...原创 2018-06-15 09:37:25 · 325 阅读 · 0 评论 -
跟我快速学习XStream(四)
作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。上一节咱们遗留下一个问题,就是当我们需要保存多个对象到 xml 中时怎么处理?当然我们也可以在对象中存入集合,但是毕竟不是多个对象,而是对象中存多个元素.那使用 XStream如何处理呢?请看 XStream 对象流APIAPIXStream 在针对存储多个对象的操作提供了java.io.ObjectInputStream,java.io.O...原创 2018-06-15 09:38:10 · 234 阅读 · 0 评论 -
跟我快速学习XStream(三)
作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。上一节咱们讲解了在 XStream 中如何自定义标签名和包名等操作,但是需要在 Java 代码中使用调用方法的方式去设置这些别名,用起来比较麻烦,接下来咱们就使用注解的方式来解决.之前的操作修改类对应别名: xstream.alias(“user”, User.class);将字段作为属性:xstream.useAttributeFor(Us...原创 2018-06-19 09:16:46 · 282 阅读 · 0 评论 -
跟我快速学习XStream(一)
作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。介绍:XStream是一种 OXMapping 技术,Object XML Mapping 对象和 XML 的映射处理.用来处理 XML 文件序列化的小框架,将 JavaBean 序列化为 XML,或将 XML 反序列化成对象,不需要其它辅助类和映射文件,使得XML序列化和反序列化不再繁琐。适用于使用 XML 做数据传输的接口书写和数据传输....原创 2018-06-19 09:09:17 · 271 阅读 · 0 评论 -
跟我快速学习XStream(二)
作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。上一节咱们已经学习了一个快速的案例,从快速开始的例子上我们也知道XStream 的默认生成模式如下,1 类的全限定名作为 xml 的跟标签2 类的属性名作为子标签的名称3 属性值作为标签的内容而默认生成我们可能存在以下疑问或者迫切想知道如何处理的一些问题1 得到xml后模型包名不同怎么办,如何解析xml?2 如何用一个单词来表示根标签,而不是...原创 2018-06-19 09:10:31 · 664 阅读 · 0 评论 -
跟我快速学习XStream(三)
作者:黄少存,叩丁狼高级讲师。原创文章,转载请注明出处。上一节咱们讲解了在 XStream 中如何自定义标签名和包名等操作,但是需要在 Java 代码中使用调用方法的方式去设置这些别名,用起来比较麻烦,接下来咱们就使用注解的方式来解决.之前的操作修改类对应别名: xstream.alias(“user”, User.class);将字段作为属性:xstream.useAttributeFor(Us...原创 2018-06-19 09:11:20 · 395 阅读 · 0 评论 -
Hibernate入门教程(一)
讲师:钟昕灵,叩丁狼教育高级讲师。原创文章,转载请注明出处。框架的介绍什么是框架?框架其实就是一个半成品,为某一领域提供解决方案,我们可以在这个基础之上继续开发,完成实际的业务需求三层架构在实际开发中,为了项目的可维护性和可拓展性,我们往往将项目按照功能性分为三层:表现层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问;代表框架:Struts2/SpringMVC业务层:负责业务...原创 2018-06-19 09:12:26 · 7343 阅读 · 0 评论 -
Hibernate入门教程(二)
讲师:钟昕灵,叩丁狼教育高级讲师。原创文章,转载请注明出处。在上一节中,我们使用Hibernate实现了基本的CRUD操作,可以看出整个过程还是比较简单的,但是我们还是需要去分析一下其执行的流程,达到灵活使用的目的.save方法的执行流程:首先,回顾一下保存操作实现的代码:public void save(User u) { // 创建hibernate的配置对象 ...原创 2018-06-19 09:13:26 · 374 阅读 · 0 评论 -
Hibernate入门教程(三)
讲师:钟昕灵,叩丁狼教育高级讲师。原创文章,转载请注明出处。在上面的章节中,我们使用Hibernate完成了基本的CRUD,并对相关操作的执行流程进行了分析,相信大家对Hibernate的简单使用有了一定的了解,那么,接下来,我们来了解一下Hibernate中常用的API.1. ConfigurationConfiguration conf = new Configuration();创建配置Co...原创 2018-06-19 09:14:14 · 414 阅读 · 0 评论 -
SSH免密登录配置
作者:贺圣君,叩丁狼高级讲师。原创文章,转载请注明出处。1 SSH协议的基本介绍 对于我们关于数据传递相关的协议可能知道有ftp,telnet等协议,对于使用ftp和telnet等相关协议,其实是不安全的,因为这些协议在传输的过程中是明文传递的,换句话说,对于使用ftp和telnet等相关协议传输的数据,只要别人在网络上获取到对应的数据报文,就知道我们所传递的内容,这个安全性有要求的数据显然不是...原创 2018-06-19 09:14:59 · 484 阅读 · 0 评论 -
理解Java死锁之死锁检测
作者:禹明明,叩丁狼高级讲师。原创文章,转载请注明出处。看此文章前请先了解之前一篇文章 “Java死锁之理解死锁” 中的死锁示例我们在开发中应该尽量避免死锁,但是如果真的有死锁产生那么我们怎么在一个复杂的项目中快速的找到死锁产生的原因呢?我大概总结了一下常用的几种方式:使用JConsole检测死锁在我们的JAVA_HOME/bin目录下我们可以找到一个jdk提供的虚拟机监控工具叫Jconsole,...原创 2018-06-19 09:15:41 · 11945 阅读 · 0 评论 -
理解Java死锁原理
作者:禹明明 叩丁狼高级讲师。原创文章,转载请注明出处。线程死锁示例为了维护数据的一致性,多线程环境下必须对一些方法进行加锁,但是如果锁资源使用不当也会带来一些隐患,比如死锁。死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。先来看一下死锁产...原创 2018-06-19 09:16:31 · 1136 阅读 · 0 评论 -
手把手教你搭建基于 Let’s Encrypt 的免费 HTTPS 证书
作者:刘刚,叩丁狼高级讲师。原创文章,转载请注明出处。Let’s Encrypt 是国外一个公共的免费 SSL 项目,该项目是为了普及 HTTPS 而发起的,目前已经被 Mozilla、Google、Microsoft 和 Apple 等主流浏览器支持,对 HTTPS 技术的普及有着巨大贡献。随着 HTTPS 的普及,Let’s Encrypt 已经成为全球最受欢迎的免费 SSL 证书签发机构。注...原创 2018-06-20 16:24:42 · 1714 阅读 · 2 评论 -
Mybatis使用插件去掉Domain的Getter和Setter
原创文章,转载请注明出处有一个朋友在留言问,现在都使用Lombok来生成domain的getter和setter,但是mybatis-generator在生成domain的时候,要生成setter和getter方法,这个删除很讨厌,今天就来介绍一下怎么去掉这个getter和setter方法,并且还自动帮你加入@Getter和@Setter标签;首先,如果只是想完成这个功能,按照下面的步骤即可,因为...原创 2018-06-20 16:26:59 · 2207 阅读 · 0 评论 -
MyBatis Generator生成纯净代码
作者:梁开权,叩丁狼高级讲师。原创文章,转载请注明原文章地址,谢谢!各位小伙伴们大家好,我是叩丁狼的梁开权老师,代号逍遥,今天要给大家带来的福利是如何覆盖MyBatis Generator的源码还你一个纯洁的mapper.xml文件。相信大家在使用MyBatis框架时一定会遇到要重复的去写domain / mapper接口 / mapper.xml,这些基础性的工作既没有技术含量又不得不写,后来官...原创 2018-06-20 16:28:08 · 413 阅读 · 0 评论 -
Mybatis全局配置对象的创建流程
作者:梁飞 叩丁狼教育高级讲师。原创文章,转载请注明出处。源码分析-Mybatis全局配置对象的创建Mybatis所有的配置信息以及mapper的配置信息,全部存储于Configuration对象中,Configuration相当于Mybatis的对象实体。Configuration对象从初始创建会一直贯穿Mybatis运行的整个生命周期,为Mybatis的运行提供必要的配置信息。Mybatis全...原创 2018-06-20 16:29:00 · 665 阅读 · 0 评论 -
mybatis velocity使用
【原创文章,转载请注明原文章地址,谢谢!】可能很多童鞋都还不是很清楚在mybatis可以使用各种脚本语言来定义Mapper文件里面的动态SQL;目前mybatis支持的脚本语言有XML(默认的);Velocity和Freemarker三种。使用不同的脚本语言来完成Mapper文件的编写,第一是使用自己熟悉的脚本语言,第二是能够定义更多丰富的自定义指令来简化Mapper的开发,关于MyBatis支持...原创 2018-06-20 16:30:04 · 1407 阅读 · 0 评论 -
mybatis-redis项目分析
【原创文章,转载请注明原文章地址,谢谢!】redis作为现在最优秀的key-value数据库,非常适合提供项目的缓存服务。把redis作为mybatis的查询缓存也是很常见的做法。在网上发现N多人是自己做的Cache,其实在mybatis的git下有一个子项目mybatis-redis;这个项目提供了redis作为mybatis查询缓存的一个实现,下面先分析一下这个项目的实现原理,再提出几个项目的...原创 2018-06-20 16:30:51 · 329 阅读 · 1 评论 -
MyBatis Generator去掉生成的注解
【原创文章,转载请注明原文章地址,谢谢!】是不是很讨厌mybatis Generator帮我们生成代码的时候在Mapper和mapper.xml文件中生成的一大堆注解?今天在看MyBatis Generator代码的时候发现,原来mybatis generator是提供了配置注解的能力,配置如下,在generatorConfig.xml中加上配置: <commentGenerator&...原创 2018-06-20 16:31:45 · 7689 阅读 · 0 评论