前言 写这篇文章的初衷主要是最近发生了两件事,让我感慨良多,觉得踏入这个行业的初始,有些事情就应该长远考虑,这样对职业发展才更有利,仅仅停留在技术的追求上固然能壮大自身,可逆水行舟的程序员们终究会面临职业转折点,如何避免自己成为弃子是一个沉重又不得不思考的话题.本篇的两个故事就是我分享给大家的真实情况,以及我的一点点感悟. 事件 1.我的老师找不到工作了   很多年前我参与过技术培训的机构,一位和我亦师亦友且是同乡的老师,忽然微信找到我,问我有没有合适的工作可以推荐,5-6K就行,我当时人懵了,…
前言   大家好,我是福隆苑居士,今天给大家聊聊XXL-JOB的使用.   XXL-JOB是本人呆过的三家公司都使用到的分布式任务调度平台,前两家都是服务于传统行业(某大型移动基地和某大型电网),现在这家是服务于互联网行业(和腾讯阿里都有战略合作),从1.9.x版本使用到现在的2.3.0版本,我认为XXL-JOB的使用方式越来越简单且高效,刚发版时的BUG也修复了很多,并且跟上了这些年技术发展的节奏,可以预见会继续被更多中小企业所亲睐. 推荐原因 1).经过几年的发展,受众多,中小企业尤其喜欢:…
前言 前两周经常有大学生小伙伴私信给我,问我可否有偿提供毕设帮助,我说暂时没有这个打算,因为工作实在太忙,现阶段无法投入到这样的领域内,其中有两个小伙伴又问到我websocket该怎么使用,想给自己的项目中加入这样的技术. 刚好我所在的公司有做问诊服务,里面就使用了websocket实现聊天通讯,就在闲暇之余专门把部分代码摘取出来,做了一个简单的demo分享给他们了,之后想想这块可以再丰富一下,就花时间又做了一个更完整的小项目出来,且加了详细的注释说明,分享给对websocket感兴趣的小伙伴们…
前言   工作中你可能会遇到很多这样的场景,一个接口,要从其他几个service调用查询方法,分别获取到需要的值之后再封装数据返回.   还可能在微服务中遇到类似的情况,某个服务的接口,要使用好几次feign去调用其他服务的方法获取数据,最后拿到想要的值并封装返回给前端.   这样的场景下,当某个或多个rpc调用的方法比较耗时,整个接口的响应就会非常慢.Java8之后,有一个工具非常适合处理这种场景,就是CompletableFuture. 场景   本章主要讲解CompletableFutur…
一.前言   首先说一句,如果比较忙顺路点进来的,可以先收藏,有时间或用到了再看也行:   我相信很多人会有一个困惑,这个困惑和我之前一样,就是线程池这个玩意儿,感觉很高大上,用起来很fashion,本地环境测试环境调试毫无问题,但是一上线就出问题.   然后百度一大堆资料,发现都在讲线程池要自定义,以及各种配置参数,看完之后点了点头原来如此,果断配置,结果线上还是出问题.   归根究底,还是对自定义线程池的配置参数不了解造成的,本篇就通过一个很简单的案例给大家梳理清楚线程池的配置,以及线上环境…
一.前言 本章主要是承接上一篇讲CompletableFuture的文章,想了解的可以先去看看案例: https://juejin.cn/post/7091132240574283813 CompletableFuture已经提供了串行.并行等常用异步编排的方案,但在细节上还是有许多不足,比如回调方面,编排复杂顺序方面,就捉襟见肘了. 之前我有关注过Gitee上star量还不错的一款开源工具AsyncTool: https://gitee.com/jd-platform-opensource/a…
前言 请问今天您便秘了吗?程序员坐久了真的会便秘哦,如果偶然点进了这篇小干货,就麻烦您喝杯水然后去趟厕所一边用左手托起对准嘘嘘,一边用右手滑动手机看完本篇吧. 实现 本篇AOP统一日志管理写法来源于国外知名开源框架JHipster的AOP日志管理方式 1.引入依赖 <!-- spring aop --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr…
前言 我有一个朋友,昨天和前端工程师联调一个接口,然后被狠狠鄙视了一番. 大家知道,自从前后端分离以后,像我一样一直以Java工程师为傲而自居的码圣们就砍掉了一半脊梁,从此被贴上了"Java服务端工程师"."Java后端工程师"等等这样的标签. 同时,前端爸比越来越多,也让我们写个接口都如履薄冰. 那么到底发生了审麽事情咧? 经过 梳理出来,大体经过是这样滴: 1).我朋友是Java工程师,入职公司四个月,刚转正一个月,目前正在参与一个紧急的项目开发: 2).他写完…
前言 挺长时间没发文了,因为公司有一个紧急项目要赶进度,加班如吃饭喝水,久违的进入到码农的状态. 之所以抽空来发个文,是这个项目才刚上线,时间不长却因为一位新同事的代码引起了生产环境的事故,造成了一批短款,差点让整个团队这段时间的努力付诸东流. 所以,本着好人一生平安的处事原则,百忙之中我依然抽空以文章的形式把这次事故记录下来,希望有做支付相关功能的同行们能够引以为鉴. 经过 1.包装简历不是错   大家知道,每年到这个时候就是一个公司人员变动最频繁的时候,有些是拿了年终奖走人,有些人是骑驴看唱…
前言 Apollo又称阿波罗配置中心,在前两年还是挺火的,但阿里SpringCloud套件席卷国内之后,nacos就成为了最被亲睐的分布式配置中心,nacos是配置中心和注册中心二合一的产品,单纯功能上Apollo其实更强大一些.本篇就把Apollo的安装及使用分享给大家. 安装 1.安装包 1).GitHub下载:https://github.com/nobodyiam/apollo-build-scripts 2).网盘下载:https://github.com/ctripcorp/apol…
前言 如果我做不了最厉害的Java工程师,那我就做Java工程师中最厉害的前端工程师. 前段时间,我默默给自己又喂了这碗心灵鸡汤-- 我不是很厉害的Java工程师,哪怕我已经工作八年,我依然觉得自己和顶尖工程师存在不小的差距,但我有个优点,就是对待学习乐观且执拗,我会经常暗示自己前进,哪怕我已经寸步难行. 我从参加工作三年后就意识到了一件事,我不是特别聪明有悟性的人,我对技术领悟的慢,哪怕我经常熬夜也解决不了工作中一些十分简单的问题. 曾经有个女孩对我说过:如果你不是特别幸运,那就请特别努力.这…
前言 因为前段时间新项目已经完成目前趋于稳定,所以最近我被分配到了公司的运维组,负责维护另外一个项目,包含处理客户反馈的日常问题,以及对系统缺陷进行优化. 经过了接近两周的维护,除了日常问题以外,代码层面我一共处理了一个BUG,优化了三个问题,我把这四个问题归纳成了四段编码小技巧分享给大家,希望能有所帮助,今后若遇到类似的问题可以到我这里翻出来看看,想必能节省许多时间. 技巧 1.stream分组 很多人都知道java8的stream很好用,但很多人其实不会用,或者说搜了许多资料还是用不好,归根…
前言 因为工作需要,久违的从自己的有道云笔记中去寻找压测相关的内容,翻开之后发现还不错,温故一遍后顺便整理出来分享给大家. 题外话,工作8年多,有道云笔记不知不觉都6G多了,扫一眼下来尽是云烟过往,竟然还能发现Struts的东西,令人甚为感怀,挺好奇你们的云笔记长什么样子. 话说,我如果一直这么记下去,有朝一日能成为IT界的司马迁不哈哈? 为何JMeter 犹记得当年工作之初,压测根本不成为话题,当时的框架也相对复杂,和现在的SpringBoot用法简直云泥之别,在那种环境下,除了大公司,压测自…
前言 微服务治理方案中,链路追踪是必修课,SpringCloud的组件其实使用很简单,生产环境中真正令人头疼的往往是软件维护,接口在微服务间的调用究竟哪个环节出现了问题,哪个环节耗时较长,这都是项目上线后一定会遇到的问题,为了解决这些问题链路追踪便应运而生了. 主流方案 1).SkyWalking:这应该是目前最主流的方案了,我所在公司今年的新项目就开始使用这个,效果确实很显著,功能强大,最重要还是国产的,后面不用看了我们支持国产吧!开个玩笑哈哈,其实这个框架也有缺点,就是稍微有点重,比较适合稍…
上海尚学堂Java培训学员参加面试带回来的真题,分享出来与大家,希望大家能认真地看看做一遍.后面有详细题解答案,对照下,看看自己做得怎么样,把这些面试遇到的真题全部掌握,做好面试笔试前的准备. 一.13个面试题目 先自己看看这题目,动手做一做,然后再对照后面的答案. 第一,谈谈final, finally, finalize的区别. 最常被问到. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)inter…
惟楚有材,于斯为盛 本文有感于2019长沙互联网求职招聘大会,内容比较多,但都是我自己的一些所见.所感和所愿. 2019年3月的最后一天,参加2019长沙互联网求职招聘大会,看到了很多的招聘企业,也看到了很多来求职的技术朋友们.金三银四,找工作的黄金时间,也是招聘的旺季!从去年开始,网上一直可以看到说互联网的寒冬来了,一些一线城市互联网公司的程序员们纷纷被“优化”,那么对于长沙来说,一个互联网发展离一线差距还有点远的城市,今天在三月的最后一天能够聚集这么多优秀的公司,一起组织这次线下的招聘大会,…
前言:从过年前就萌生出要跳槽的想法,到过年来公司从3月初提出离职到23号正式离职,上班的时间也出去面试过几家公司,后来总觉的在职找工作总是得请假,便决心离职后找工作.到4月10号找到了一家互联网公司成功应聘上,中间也经历了很多公司,有外包的.创业的.互联网的等等各种类型,也收到了很多offer,也有面试不顺利的...今天就通过博客来记录一下自己面试中的问题,围绕着两年java到底应该具备什么样的水平才能适应现在市场的要求的主题来谈一谈. 本篇博客目录: 一:面试中的问题 二: 面试中要注意的问题…
body { font-family: 微软雅黑; font-size: 14px; line-height: 2; } html, body { color: inherit; background-color: inherit; } h1 { font-size:1.5em; font-weight:bold; } h2 { font-size:1.4em; font-weight:bold; } h3 { font-size:1.3em; font-weight:bold; } h4 {…
IoC(Inversion of Control): IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责将这些联系在一起. 其原理是基于OO设计原则的The Hollywood Principle:Don't call us, we'll call you(别找我,我会来找你的).也就是说,所有的组件都是被动的(Passive),所有的组件初始化和调用都由容器负责.组件处在一个容器当中,由容 器负责管理.…
问题:多个访问线程将需要写入到文件中的数据先保存到一个队列里面,然后由专门的 写出线程负责从队列中取出数据并写入到文件中. http://blog.csdn.net/top_code/article/details/8896047 Java中的ReentrantLock和synchronized两种锁定机制的对比 IP地址类 .net IPAddress java InetAddress…
------- android培训.java培训.期待与您交流! ---------- 多线程: 进程和线程: 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元.线程在控制着进程的执行. 一个进程中至少有一个线程. 主线程: Java VM  启动的时候会有一个进程java.exe.该进程中至少一个线程负责java程序的执行.而且这个线程运行的代码存在于main方法中.该线程称之为主线程. 扩展:其实更…
原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html 多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言.核心类库包含一个 Thread 类,可以用它来构建.启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 volatile .在简化与平台无关的并发类的开发的同时,它决没有使并…
一.java环境中基于jvm的两大语言:scala,groovy 可以在java项目里混编这两种语言: scala:静态语言,多范式语言,糅合了面向对象.面向过程:可以与java和net互操作:融汇了众多的语言特性,包括类似net的闭包.lambda表达式:正是语言特性较多,语言复杂度也较高~~ groovy:动态语言,既可作为面向对象语言又可做脚本语言:拥有动态语言的好处:语法简单~~ scala.groovy都是作为java的替代语言,基于jdk1.6可以使用起来像jdk1.8的高级语法特性…
一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676   JNative地址:http://www.jb51.net/article/35232.htm JNA方法: 介绍 给大家介绍一个最新的访问本机代码的Java框架—JNA. JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架…
Java Swing jpanel paint方法执行两次的问题: 在其他环境下执行了两次,自己测试怎么都是执行了一次,记录一下这个问题:需要后继工作: 可能是进行各种参数设置的时候导致了paint方法的调用: 在调试过程中,发现repaint方法会因为各种情况不断的调用:注意JFrame和JPanel是不一样的哦: package com.srie.test; import java.awt.BorderLayout; import java.awt.EventQueue; import ja…
大部分情况下,我们面对在两个java进程只见传递数据的问题时,第一个想到的就是开server,然后通过socket收发消息.这方面有大量的框架可用,就不细说了.但如果两个进程是在一台机器上,那么还可以使用另一种方式来传递数据,那就是使用RandomAccessFile的文件映射模式.RandomAccessFile的map方法把文件映射到内存中进行快速读写.因此可以通过把消息包写入到文件中,然后另一个进程读取出来的方式来完成数据传递.在这个过程中,重点是要考虑什么时候写入完成,只有写入完成后,读…
serialVersionUID适用于Java的序列化机制.简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastException. serialVersionUID有两种显示的生成方式:        一是默认的1…
处理配置文件对于Java程序员来说再常见不过了,不管是Servlet,Spring,抑或是Structs,都需要与配置文件打交道.Java将配置文件当作一种资源(resource)来处理,并且提供了两个类来读取这些资源,一个是Class类,另一个是ClassLoader类. 当我们自己的程序需要处理配置文件时(比如xml文件或properties文件),通常会遇到两个问题: (1)我的配置文件应该放在哪里? (2)怎么我的配置文件找不到了? 在了解了Java加载资源文件的机制后,以上这两个问题便…
原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html 多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言.核心类库包含一个 Thread 类,可以用它来构建.启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 -- synchronized 和 volatile.在简化与平台无关的并发类的开发的同时,它决没有使并发…
最近听了一节Java公开课,讲的Tomcat8.0的,老师分享的学习方法很好, 时间和精力要用对地方 1.学习一个知识的广度和深度,先学主要的主流的,不要学了很多不该学,没必要学的东西 2.要花时间总结,实践下,练习下,整理下,避免没有收获到本该收获到的内容…