Java EE

一名 40 岁“老”程序员的反思

不想你离开。 提交于 2020-07-29 03:04:49
两个概念 三个阶段 两个方向 <本文是国外一位 40 岁“老”程序员对职业生涯的思考,他认为从长远来看,应该多投资一些不容易过期、衰竭期较长的知识领域中。译文大意如下。> 我是一名程序员,几个月前刚过完四十岁生日。某个星期六的早晨,我参加了一个 React Native 技术交流会,演讲者正在竭力说服我们为什么它会成为移动开发领域真正的下一个大事件。但对我来说,它有点像十五年前的 jsp ,将所有的逻辑都放在演示代码里面。但我“老”了,我认为这是因为自己还没有完全理解它。 演讲者展示完 ppt 后,现场进行编码,还展示了大约半打我没听说过的配套工具,这些都让我感到有点沮丧。 当然,我并不是真的惊讶。在过去20年里,我也掌握了一些比较流行的技术,并享受驾驭它们的乐趣。新的东西总能给编程带来一丝激动的体验,并且能让事情变得更容易、更快和更清楚。但是在这个特别的早晨,在40岁的这个门槛上,我不得不承认我感觉有些落伍。我知道如果想跟上节奏,我得继续付出,抛弃一些已经充分吸收的知识,吸收一些新的知识,为下一次旅程做准备。 我在想,我的编程生涯不像其他的专业人士,医生到了40岁不用担心他对血管系统的知识会蒸发,同样的,律师、水管工、会计、英语老师,也是如此。他们积累的知识是相对稳定的,并随着年龄会给予他们相应的尊重和补偿。但是在编程领域,20年的经验,似乎并没有赋予同样的优势。 两个概念 当然

说程序员吃青春饭,忽略技术就是在作死

瘦欲@ 提交于 2020-07-29 01:15:22
2020年5月全国程序员平均工资14542元,工资中位数12500元,其中95%的人的工资介于5250元到35000元。 不可否认,互联网行业确实算是赚钱的行业,而程序员更是这个行业里的香饽饽。程序员升职加薪比起其他岗位来说,相对更加容易。 但是根据调查显示,但仅有13.57%的程序员在这个行业坚持了十年以上。 笔者看到不少“大龄”程序员惶惶不安,“后浪”奔涌而来,继续996,彷徨却又无可奈何。 中年,在这个标志着“成熟”的年龄阶段,家庭、事业、财富,看似拥有了一切,他们却有些力不从心。左手牵着年幼的儿女,右手扶着年过花甲的父母。房贷、教育等开支“大山”,互联网人才结构性过剩,年龄增长带来的高薪压力,身体机能不可逆下滑…… 甚至连刚满30岁的青年也开始有了危机意识,直言“中年程序员太难了!” 单纯按年龄说事 一个行业如果完全以年龄为衡量,以年轻为最高优先级,新入行的年轻血液立刻或者简单熟悉行业规则之后很快就可以替代上年纪的中年人,那么此行业一定是吃青春饭的。 但是这个世道,不是独独只有程序员在吃青春饭。 大家都知道,想在私企干到65岁退休基本就是不可能的事情,职场人都难逃脱中年危机。 无论你什么年龄,无论是什么职位,无论你有什么过往业绩,都将面临严重的危机,没有任何保障,心里没有一点底。在笔者看来,45-60岁的中年人才真正算是危机。 竞争总是存在的,活下去的办法就是学习

Spring学习(1)——快速入门

只愿长相守 提交于 2020-07-28 20:21:51
认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的 成功来源于理念,而不是技术本身 ,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程) 。 什么是 Spring: Spring 是一个 轻量级的 DI / IoC 和 AOP 容器的开源框架 ,来源于 Rod Johnson 在其著作 《Expert one on one J2EE design and development》 中阐述的部分理念和原型衍生而来。 Spring 提倡以 “最少侵入” 的方式来管理应用中的代码,这意味着我们可以随时安装或者卸载 Spring 适用范围:任何 Java 应用 Spring 的根本使命:简化 Java 开发 尽管 J2EE 能够赶上 Spring 的步伐, 但 Spring 并没有停止前进, Spring 继续在其他领域发展,而 J2EE 则刚刚开始涉及这些领域,或者还没有完全开始在这些领域的创新。 移动开发、社交 API 集成、NoSQL 数据库、云计算以及大数据 都是 Spring 正在涉足和创新的领域。Spring 的前景依然会很美好。 Spring 中常用术语: 框架: 是能 完成一定功能 的 半成品 。 框架能够帮助我们完成的是:

计算机毕业设计——基于java的毕业设计

我的未来我决定 提交于 2020-07-28 20:09:03
  对于Java方向的毕业设计题目选题,我们可以从技术点出发,比如现在最热门的就是java web方向了,我们还可以从技术框架出发,目前最热门的是spring MVC,ssh,ssm这三种框架集合,这些是Java后台的框架,然后前端的框架就比较简单了,通常就是jQuery和Bootstrap。   说完技术层面的东西,现在讲讲具体业务的毕设应该如何选择,一般情况下有:管理系统、统计系统、电商、招聘等。管理系统是最简单最实用的毕设选题了,因为需求比较清楚明了,而且也不需要太多业务进行转换,大部分的毕业生都喜欢用管理系统作为自己的毕设题目,无非就是在原有的功能基础上添加一些新的、独特的功能,或者题目更加新颖一点,可以使管理系统看起来给人焕然一新的感觉。   一、java方向毕业设计题目   我这里就详细列举下有哪些管理系统方面的Java方向的毕业设计题目:   1.教师档案管理系统   2.基于JSP的学生信息管理系统   3.基于web的财务管理系统   4.学生成绩信息管理系统   5.医药管理系统   6.小区物业管理系统   7.学生考勤系统   8.蔬菜水果购物销售系统   9.固定资产管理系统   10.图书借阅管理系统   11.xxx县的应急物资管理信息系统   12.电脑配件购物商城   二、基于ssm毕业设计题目   然后这里列举下关于基于ssm毕业设计题目:  

Maven-dependencyManagement 用法

耗尽温柔 提交于 2020-07-28 19:33:12
DepencyManagement应用场景 当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理 构建、文档、报告、依赖、scms、发布、分发 的方法。可以方便的 编译代码、进行依赖管理、管理二进制库 等等。 由于我们的模块很多,所以我们又抽象了一层,如下图抽出一个 femicro 来管理子项目的公共的依赖。为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。 在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。 父类POM配置 继承自springboot-parent 本项目中,父类POM中dependencyManagement配置 <!--依赖管理,用于管理spring-cloud的依赖--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId>

spring boot Websocket(使用笔记)

一笑奈何 提交于 2020-07-28 17:52:17
本文只作为个人笔记,大部分代码是引用其他人的文章的。 在springboot项目中使用websocket做推送,虽然挺简单的,但初学也踩过几个坑,特此记录。   使用websocket有两种方式:1是使用sockjs,2是使用h5的标准。使用Html5标准自然更方便简单,所以记录的是配合h5的使用方法。 1、pom   核心是@ServerEndpoint这个注解。这个注解是Javaee标准里的注解,tomcat7以上已经对其进行了实现,如果是用传统方法使用tomcat发布项目,只要在pom文件中引入javaee标准即可使用。 < dependency > < groupId > javax </ groupId > < artifactId > javaee-api </ artifactId > < version > 7.0 </ version > < scope > provided </ scope > </ dependency >   但使用springboot的内置tomcat时,就不需要引入javaee-api了,spring-boot已经包含了。使用springboot的websocket功能首先引入springboot组件。 < dependency > < groupId > org.springframework.boot </ groupId > <

微服务设计 10 大反模式和陷阱!

故事扮演 提交于 2020-07-28 17:11:50
作者:飒然Hang rowkey.me/blog/2018/06/02/microservice-pitfall/ O’Reilly的电子书《Microservices AntiPatterns and Pitfalls》讲述了在微服务设计实现时十种最常见的反模式和陷阱。本文基于此书,将这十个点列出。 数据驱动迁移反模式(Data-Driven Migration) 如上图所示,此种反模式的问题在于微服务的粒度没有最终确定之前就做了数据迁移,如此当不断的调整服务粒度时,那么数据库就免不了频繁迁移,带来极大的成本。更好的方式如下图所示: 即先分离功能,数据库先保持之前的单体,等到服务粒度最终确定之后,再分离数据库。 前后端分离与不分离的本质区别 ,推荐看下。 超时反模式(The Timeout) 微服务架构是由一系列分离的服务组成的,这些服务之间通过一些远程协议进行互相之间的通信。其中牵扯到了服务的可用性和响应性问题。如下图所示: 可用性:服务消费方能够连接服务方,并可以向其发送请求。 响应性:服务方能够在消费方期望时间内给予请求响应。 为了防止服务的不可用和无法响应,通常的做法就是设置一个调用超时。此种做法表面上看是没问题的,但是试想一下如下情景:发起一个购买100个商品的请求,请求成功返回一个确认号。如果当请求超时但是请求在服务端已经成功执行了,此时这个交易实际是完成的

spring boot容器启动详解

风流意气都作罢 提交于 2020-07-28 15:53:46
一、前言 spring cloud大行其道的当下,如果不了解基本原理那么是很纠结的(看见的都是 约定大于配置 ,但是原理呢?为什么要这么做?如何串联起来的?)。spring cloud是基于spring boot快速搭建的,今天咱们就看看spring boot容器启动流程(全文基于1.5.9版本)。(本文不讲解如何快速启动spring boot,那些直接官方看即可, 官网文档飞机票 ) 二、容器启动 spring boot一般是 指定容器启动main方法,然后以命令行方式启动Jar包 ,如下图: 1 @SpringBootApplication 2 public class Application { 3 public static void main(String[] args) { 4 SpringApplication .run(Application. class , args); 5 } 6 } 这里核心关注2个东西: 1.@SpringBootApplication注解 2. SpringApplication.run()静态方法 下面我们就分别探究这两块内容。 2.1 @SpringBootApplication注解 源码如下: 1 @Target(ElementType.TYPE) 2 @Retention(RetentionPolicy.RUNTIME) 3

Servlet--实例

对着背影说爱祢 提交于 2020-07-28 15:04:46
Servlet--实例 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! HelloWorld 创建Java Web项目,在src目录下新建类文件Helloworld.java import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * @author tanglei * @date 2020/6/21 6:04 下午 */ public class HelloWorld extends HttpServlet { private String message; public void init() throws ServletException { // 执行必需的初始化 message = "Hello World"; } public void doGet(HttpServletRequest request

Spring Boot Sample 013之spring-boot-web-cors

懵懂的女人 提交于 2020-07-28 14:06:59
一、环境 Idea 2020.1 JDK 1.8 maven 二、目的 spring boot 异常处理controller实现方式 gitHub地址: https://github.com/ouyushan/ouyushan-spring-boot-samples 三、步骤 3.1、点击File -> New Project -> Spring Initializer,点击next 3.2、修改项目信息 3.3、选择Web依赖,选中Spring Web。可以选择Spring Boot版本,本次默认为2.3.0,点击Next 3.4、项目结构 四、添加文件 pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org