自学太慢了?不报班只白嫖行不行?又或者报个班,逼自己一把?

关于学习Java路线总结 掌握这些技术可以让开发者更加高效地进行 Web 开发工作。7. Web 开发:学习 Java 的 Web 开发,包括 Servlet、JSP、MVC 框架等,掌握 HTML、CSS、JavaScript 等前端技术和数据库操作。4. MVC 框架:学习常用的 MVC 框架,如 Struts、Spring MVC 等,了解 MVC 模式的原理和优势,掌握框架的使用方法。6. ORM 框架:学习常用的 ORM 框架,如 Hibernate、MyBatis 等,了解对象关系映射的原理和优势,掌握框架的使用方法。 阅读详情

无论你是大学生还是在职人员,想学 Java 时,都会面临两个选择,自学或者报班。报班通常太费钱,时间又不自由;自学又不知道如何下手,担心自己坚持不下来。怎么办呢?

                                           

本文将解答你自学 Java 的 N 种问题:

  1. 你适不适合自学 Java 呢?

  2. 如何自学 Java 呢?

  3. 有没有靠谱的 Java 自学资料推荐?

  4. 怎样让自己看到进步,坚持下来?

……

以上问题,课程中我都会呕心给你梳理答案,赶快开始学习吧。

什么人适合自学 Java

在自学前你可能会因为自身的条件有很多困惑和疑虑,不清楚自己是否适合自学 Java。下面我们来做个测验,来检测一下你是否适合自学 Java。

第一道题:你对学习 Java 的信念有多强?

最低分 0 分,最高分 5 分,你给自己打几分?

对学习 Java 抱有坚定的信念是学习 Java 的必备条件,如果你给自己的打分小于等于 2.5 分,建议你直接放弃学习 Java 吧。如果你给自己的打分大于 2.5 分(越高越好),恭喜你,第一关的考验过了!

第二道题:你学 Java 的目的是兴趣提升 or 就业?

如果你学习 Java 只是兴趣提升,那么你无论是自学或者报班怎么学都是适合的,因为你不差时间。那么后面的考验题你也可以直接跳过,看后面的干货。

但如果你是为了就业而学习 Java,那对学习 Java 效果和时间都有一定要求,还要满足社会岗位要求。建议你好好考虑报班还是自学。

如果你大于 30 岁的话,我已经不推荐你学习 Java 了,一方面 30 岁后学习能力和精力堪忧,另一方面 30 岁的 Java 初级小白几乎找不到工作。

但如果你小于 30 岁的话,那你的客观条件还是可以学习 Java 的。剩下的就要考验你的自控力和毅力了。

第三道题:最低分 0 分,最高分 5 分,你给自己的自控力和毅力打几分?

如果你的打分小于 3 分,我建议你报班学习 Java,自学不适合你。(如果你不能确定自己的自控力水平,你也可以去网上找一些自控力测试的问卷。)

但如果你自控力较强、个人时间较多、热爱独立思考钻研的话,那么恭喜你,我认为你是非常适合自学的。如果你也选择自学,那么本课程的内容你可以好好学习借鉴,相信你一定可以找到一条适合自己的道路!

最后你也许会问,性别、英语水平、数学水平、是否为科班等是否影响自学 Java,如果你上面的测试都通过了,这些其实都是一些非关键性的影响因素。

我们用一张图总结一下以上的所有问题:

注:需要原件PDF 以及本文中视频以及课件还有学习路线的同学☛☛【点击此处即可免费领取】

虽然性别、英语水平、数学水平、是否为计算机专业都等不是关键因素,但当你是女孩子,英语、数学水平较差,非计算机专业相对于男孩子,英语、数学水平较好的计算机专业还是会有一些影响,为了达到同样的结果可能需要付出更多的努力。

我们这里拿计算机专业和非计算机专业比较一下。

计算机专业和非计算机专业自学 Java 的区别?

虽然说计算机主要靠自学,但是计算机专业的学生相比非计算机还是有很大优势的,大部分计算机专业是有开设 Java 这门课程的,可以让这些学生在学习 Java 的道路上快速度过"冷启动";还有一些重要的基础课,例如数据结构、操作系统、数据库、计算机网络等课程能够帮助学生更深入地了解计算机,学习起 Java 语言也能有更深层次地理解。

而非计算机专业在自学 Java 时,会因为有原专业课程、作业的限制,学习时间相比计算机专业学生少了不少,但这些问题是可以被克服解决的,可以多花一些课余时间、周末时间,学习练习 Java,也可蹭一蹭计算机专业开设的 Java 课程,多与计算机相关专业同学交流碰撞。自学 Java 的心态也很重要,不要因为被本专业课程拖累而埋怨,要乐观地去面对学习上的困难,有长远的眼光,阳光总在风雨后!

总的来说,计算机专业自学 Java 资源、时间更多,更需注重自学的方法和内容;而非计算机条件较难,除注重方法和内容之外,重要的是要坚持在百忙之中挤出很多时间留给 Java,这对毅力是非常大的考验。

当你适合自学的时候,那么你就要寻求好的方法提高自学 Java 的效率,如何做呢?看看下面内容吧~

高效自学 Java 三大关键点

这里我总结了三大点,分别从认识、方法、反馈角度来写,其中一定有适合你的方案!

1 了解 Java 知识体系

自学 Java 前,要对 Java 和 Java 体系知识有一定认识,心中有个大概的轮廓去学习,方能更踏实。通过几个问题了解 Java。

什么是 Java?

Java 是一种可以撰写跨平台应用程序的、面向对象的程序设计语言。简单说,Java 就是一种语言,不过是一种跑在 JVM 上的语言,Java 编译后是字节码,而 JVM 会把这些字节码解释成机器码,然后做出相应的动作。

Java 能干什么?

Java 当前用的较多的就是做后端开发、大数据开发、安卓开发,这是当前 Java 技术栈较为热门的三种岗位,其中以 Java 后端的市场需求最大。Java 也可以做桌面应用开发、游戏开发,但需求相对较少。

国内大厂,像阿里巴巴、美团、京东、拼多多等,使用的主要语言都是 Java,大部分中小企业为了成熟稳定也选择 Java 作为后端开发语言。此外,很多著名的中间件是由 Java 编写的,例如:Elasticsearch、RocketMQ、Hadoop 等。

Java 有哪些知识?

一、Java 基础

Java 入门部分:

  • JDK、IDEA 安装,第一个 HelloWorld

  • 基础内容:输入输出、命名规范、注释

  • 数据类型:基础数据类型(及其包装类)、引用类型

  • 修饰符:访问修饰符、非访问修饰符

  • 运算符:赋值、算数、自增自减、比较、逻辑、位、三元运算符及其优先级

  • 控制流程:条件判断、循环语句

  • 数组、字符型

  • 类与对象

  • 面向对象三大特征:继承、封装、多态

  • 日期、正则、大数运算(简单了解)

Java 进阶部分:

  • IO 常见文件操作

  • 集合框架:ArrayList、LinkedList、HashMap、HashSet、ArrayDeque 等

  • 异常处理

  • 泛型

  • JDBC

  • 网络编程

  • Java8 新特性(Lambda)

  • 反射、注解(有点难)

二、Java 高级

  • 多线程、高并发

  • 23 种设计模式

  • 树、红黑树、B 树、散列、堆、图等

  • 算法:十大排序、二分查找、分治、贪心算法、位运算、回溯、动态规划、搜索算法(bfs、dfs)、最短路径(Dijkstra、Floyd)、最小生成树(Prim、Kruskal)、并查集、KMP 等算法

三、JavaWeb:

  • HTML、JavaScript、CSS

  • XML、JSON

  • Tomcat

  • Servlet/JSP(以 Servlet 为主)

  • JQuery、Ajax

  • MVC

  • Cookie、Session

  • 过滤器、监听器

  • 文件上传下载(Servlet3.0)

  • Linux

四、常见框架:

  • ORM 框架:Mybatis

  • Spring 全家桶:Spring、SpringMVC、SpringBoot

  • 安全框架:Shiro、Spring Security(可选一种先学)

  • 其他框架:Swagger(在线接口)、Log4j2(日志)、Quartz(定时)等

  • 微服务:SpringCloud、Dubbo 等

五、常见中间件和工具:

  • 版本控制:Git、SVN

  • 包管理:Maven、Gradle

  • 关系型数据库:MySQL、Oracle 等

  • 非关系型数据库:Redis(缓存)、Memcached(缓存)、MongoDB(文档型)等

  • 搜索引擎:Elasticsearch、Solr 等

  • 消息队列:RocketMQ、ActiveMQ、RabbitMQ、Kafka 等

  • Web 服务器:Apache、 Nginx

  • 容器:Docker、K8S

  • 大数据:Hadoop、Spark、Strom、Flink 等

当然,上面只是罗列了大部分知识点,还有很多知识比如日志分析监控(ELK)、持续集成、分库分表等也都是热门技术,Java 后端技术体系庞大。这些内容可以根据你的工作或者兴趣,选择性深入学习。

2 自学 Java 的三大途径—书籍、视频、博客

自学 Java 一般有书籍、视频、博客等学习资料,这里主要讲解三者在自学 Java 中的异同点。

看书自学 Java

看书是最为传统的学习方式,我们从小到大大部分的自学知识是通过看书来获得的,所以可能很多人都喜欢和适应这种方式。书籍具有严谨、体系完整等特点,并且纸质的内容来回翻阅在回顾的时候也更便捷。

但看书也有一些缺点:可能分不清主次,在学习 Java 的时候其实是有侧重点的,而书上可能在这方面并不会有太多的介绍和标注,并且一些冷门淘汰知识可以不用学习(例如 Java Swing 部分);有些内容即使作者写得很棒了,但可能会因为案例、解释较少不能完全理解(尤其是小白)。

看视频自学 Java

比起书籍,更多人愿意看视频自学 Java,因为看书时大部分人会觉得比较枯燥。但是视频就不一样了,视频中老师们通常会边敲边讲解,更易于知识点的理解,并且人是感性动物,看视频就如同与老师交流,好的老师会让学习效率直接翻倍。

看视频当然也会有些缺点,视频时间较长较多,很难快速回顾学过的知识或者快速浏览章节内容,所以有可能会浪费一点学习的时间。

看博客自学 Java

博客是程序员必不可少的学习资源,近些年高质量博客、文章也越来越多。这种博客文章阅读比较方便,内容选择也比较丰富,好的博客图文并茂生动形象非常有助于理解记忆,并且博客在代码拷贝学习方面更占优势。

看博客也有一些缺点:比如博客比较碎片化,体系不太完整。还有博客质量参差不齐差距较大,甚至有的博客还出现较大的错误,所以挑选好的博客是一大挑战。

总的来说,系统自学 Java 主力军还是 看视频和看书 ,可以以看视频为主,看书为辅,遇到疑难点不理解的可以通过搜索相关博客多看文章进行学习吸收。

3 回顾与交流,牢牢锁住知识点

学习很容易遗忘,因此要时常回顾。不推荐视频作为长期回顾的方法,更推荐博客、纸质书回顾,因为它们可以快速定位,很多内容看一遍就想起来了。

除了回顾以外,交流可能是另一种锁住知识的好方法了,通过交流倾听别人的意见,能深入思考,加深对知识的理解。交流的方式和途径有很多

和身边人交流:最方便和高效的交流方式就是和身边同学、舍友、一起学习的人进行交流,一起学习进步共享学习的心得;

社群论坛交流:最大众化的就是添加一些 QQ、微信的技术交流群或者在一些问答论坛交流,群中或者论坛中会有不少大神或者志同道合的人能够帮到你。作为技术人加几个技术社群、多逛技术论坛还是很有必要的。

当然还有一种方式并不一定适合所有人,就是和"自己"交流,将自己的学习内容重难点以笔记、文章形式输出出来,虽然这会耗费大量精力和时间,但这不断思考、优化、写的过程会使你对知识印象更深刻。

史上最实用的 Java 学习路径

上面已经介绍了高效自学 Java 的关键点,下面来推荐实用的 Java 自学路径。

实际上,阿里巴巴发展也离不开公司里的每一个付出的员工们,更值得一提的是阿里的程序员们除了完成自己的本分工作以外,还会抽出时间去提升自己的技术。近日,阿里又迎来一里程碑,首推 Java 架构技术成长笔记,理论与实战兼备,被业内评级“钻石级”,可以说是程序员必备!

下文内容主要是写这份《Java 技术成长笔记》的主要提纲内容,提纲内容包括 Xmind 思维图+实战文档+面试礼包,需要下载完整版的朋友,可以 【点击此处即可免费领取】

一、架构筑基必备技能

1.并发编程进阶:线程共享和协作+并发工具类实战+站在巨人肩上操作 CAS+阿里面试常问的显式锁和 AQS+并发容器源码解析及应用实战+仅会用线程池是不够的+架构师应该知道的并发安全解决方案+性能优化实战+并发编程面试题目汇集

2.JVM 性能深度调优:15 种方式编写高效优雅 Java 程序实战+Java 内存区域深入剖析+垃圾回收器和内存分配策略+你必须知道的 JVM 执行子系统+JVM 的类加载机制及执行引擎原理+JVM 性能优化实战+JVM 面试锦囊妙计

3.网络编程与高效 IO:http/tcp/udp 网络协议原理透析+原生 JDK 网络编程+Netty 应用快速入门+Netty 粘包/半包问题解决实战+Netty 进阶和实战+Netty 源码深入分析+Netty 常被问到的那些面试题汇集

4.深入 Tomcat 底层:10 分钟熟悉 Tomcat 体系架构+Tomcat 容器及运用机制+Tomcat 核心组件源码解读+Tomcat 高级进阶+Tomcat 面试题整理

5.MySQL 深度优化:Mysql 存储引擎选型及注意事项+解读 Mysql 的共享锁及排它锁+Mysql 事务及隔离性级别+30 分钟深入掌握执行计划+解读 BTree 与 B+Tree 索引+Sql 慢查询配置及分析+Sql 优化策略及实战+Mysql 面试题汇总

6.架构筑基必备 Linux:Linux 安装指南+Linux 基础命令+用户与用户组系列操作+文件与权限系列操作+架构师应该掌握的 shell 脚本基础

二、设计思想解读开源框架

1.六大原则:单一职责原+开闭原则+里氏替换原则+依赖倒置原则+接口隔离原则+迪米特法则

2.结构型模式:桥接模式+适配器模式+装饰器模式+代理模式+组合模式

3.创建型模式:建造者模式+单例模式+抽象工厂模式+工厂方法模式+静态工厂模式

4.行为型模式:模板方法模式+策略模式+观察者模式+责任链模式+命令模式+访问者模式

5.Spring5 源码解读:5 分钟快速理解 Spring 核心流程+熟练掌握 Spring 工作常用注解及陷阱+后置处理源码解读+IOC 容器源码解读+AOP 源码解读+声明式事务源码解读+Spring 源码面试题汇总

6.SpringMVC 框架源码解读:Servlet3.0+性能实战+手写 SpringMVC 实战

7.MyBatis 框架源码解读:5 分钟掌握 MyBatis 的配置使用+动态 SQL、缓存及关联查询深入讲解+10 分钟掌握 Mybatis 与 Spring 的集成实战+Mybatis 插件开发及源码分析实战+多级关联实战+手写 MyBatis 框架实战+Mybatis 常见面试题汇集

三、高效存储让项目性能起飞

1.Redis:5 分钟搞定 Linux 下 Redis 安装+String、List、Hash、Set、Zset 类型使用场景+时间轴、队列应用场景设计实战+购物车开发与设计实战+Redis 与 Lua 模拟抢红包实战+网站投票设计与开发实战+Lua+Redis 联合开发指南+Redis 慢操作优化+Redis 哨兵机制及底层机制分析+10 分钟搭建 Redis 高可用集群实战+动态扩容、缩减集群节点实战+Redis 常见面试题汇总

2.缓存解决方案实战:15 分钟掌握项目中 SpringCache 的用法+缓存的一致性策略(更新及失效处理机制)+缓存雪崩解决方案+缓存穿透方案

3.mongoDB:Mongodb 使用场景分析+20 分钟玩转增删改查+MongoDB 开发时你应该注意的事项+安全设置及存储引擎分析指南+性能调优与索引实战+复制架构解析实战+MongoDB 分区实战

4.MySQL 高可用:Mysql 主从复制、读写分离高可用方案实战+Mysql、Keepalived 实现双主高可用方案实战+Mysql 实现分库分表高性能解决方案实战

5.Mycat:Mycat 简介及用途+基于 Mycat 实现 Mysql 读写分离实战+基于 Mycat 实现数据库切分实战+全局表、ER 表、分片机制分析

6.Sharding-Sphere:Sharding-JDBC+Sharding-Proxy

7.Fastdfs:文件存储实战+文件同步实战+文件查询实战+分布式部署实战

四、分布式拓展到微服务架构

1.从 RPC 开始:服务注册与发布+动态代理+序列化与反射+手写 RPC 框架实战

2.DUBBO:10 分钟学会 Dubbo 使用+项目之间的依赖划分实战+传统项目拆解分布式实战+Dubbo spi 扩展实战+Dubbo 源码深度解读+Dubbo 面试题指南

3.Spring Boot:SpringBoot 快速入门+核心组件分析+性能优化+jta+atomikos 分布式事务+SpringBoot 核心源码解读+手写 SpringBoot 实战+SpringBoot 面试汇总

4.Spirng Cloud Netflix:Zuul 路由网关详解及源码探析+Ribbon 客户端负载均衡原理与算法详解+Feign 声明式服务调用方式实现+Hystrix 服务熔断及服务降级实战+Eureka 注册中心构件分析+Config 配置服务中心与 svn、git 快速集成+BUS 消息总线技术+Sleuth 调用链路跟踪+Stream 消息驱动的微服务+SpringCloud 面试题目汇总

5.Spring Cloud Alibaba:Nacos+SkyWalking+Sentinel 限流+Seata 分布式事务

6.Docker:5 分搞懂定 Docker 安装与使用+Docker 的基础操作+Docker File 快速进阶+Docker 网络与存储那些事+DockerCompose 高阶用法+微服务与 Docker 集成实现动态扩容实战

7.K8S(Kubernetes):Kubernetes 简介及安装配置+Kubernetes 核心原理+Kubernetes 集群管理方案实战

8.Service Mesh:10 分钟快速入门与介绍+核心组件解析+如何用 Helm 部署 Istio+快速解析 Istio 的常用功能+Mixer 适配器的应用+http 流量管理实战+Istio 的安全加固实战

五、性能直线提升

1.分布式架构思维:大型互联网架构演进过程+架构师应具备的分布式知识+主流分布式架构设计详解

2.ZooKeeper:5 分钟搞定 Zookeeper 安装及指令解析+原生客户端、zkclient、curotor 快速开发实战+Zookeeper 应用实战+Zookeeper 底层协议解读+Zookeeper 面试资料整理

3.Nginx:5 分钟将你的项目实现 Nginx 分流+Nginx 安装及基本使用+Nginx 进程模型及配置详解+location 规则及 rewrite 解析+动静分离实战+反向代理实战+跨域配置实战+缓存配置及 Gzip 配置实战+https 安全认证实战+LVS 高可用实战+Nginx 那些面试题汇总

4.消息中间件概述:消息中间件和 RPC 的区别+消息中间件使用场景介绍+ActiveMQ、RabbitMQ、RocketMQ、Kafka 对比+消息中间件的编年史

5.ActiveMQ:3 分钟快速安装 ActiveMQ+JMS 规范解读+原生 ActiveMQ 的 API 编程+ActiveMQ 高级特性和用法+限时订单实战+用户注册的异步处理实战+企业级高可用集群部署实战

6.RabbitMQ:Linux 下安装与配置+消息发布与消费权衡+消息的拒绝怎么解决+控制队列与消息属性+与 Spring 集成完成应用解耦实战+集群化与镜像队列实战+RabbitMQ 常见面试题汇总

7.RocketMQ:RocketMQ 快速安装与配置+消息发送与消费流程解读+RocketMQ 消息存储、消息过滤及事务消息+RocketMQ 高可用实战+整体 Spring 完成用户注册的异步处理实战+整合 Spring 完成限时订单实战+RocketMQ 面试题汇集

8.Kafka:Kafka 快速安装部署+开启 Kafka 的集群模式+Kafka 的生产者和消费者+Kafka 高级特性解读+Kafka 处理请求的内部机制剖析+整合 Spring 完成削峰填谷实战+Kafka 面试题汇集

9.elastic:ElasticSearch+Logstash+Kibana+ELK 常见面试题汇总

六、分布式方案团队协作工具

1.分布式事务解决方案:事务与锁+标准分布式事务+两阶段提交+BASE 理论与柔性事务+TCC 方案+补偿性方案+异步确保型与最大努力型

2.单点登陆方案:单点登陆的问题背景+页面跨域问题+Session 跨域共享方案+session 的扩展

3.分布式任务调度方案:Quartz 调度的用法+Elastic-Job 示例+分布式调度的疑难点+Quartz 集群定制化分布式调度

4.maven:安装和配置+使用入门+坐标和依赖+聚合与继承+生命周期与插件+仓库及版本管理+私服-Nexus+手写 Maven 插件实战

5.Jenkins:Jenkins 远程测试+Jenkins 持续部署+Jenkins 自动部署+Jenkins 分布式构建+Jenkins 管理+Jekins 安装

6.Git:与 SVN 对比+基本运作流程+Git 常用操作及问题处理

七、架构师应该具备的职场软技能

每个程序员心中都有一个大厂梦,无论是阿里还是腾讯,对于程序员的技术要求都是比较高的,抛开学历不谈,你的技术水平是否达到了阿里的标准和要求?

所以,不管你是否想要进入大厂,或是想要拥有一份满意的薪资,都需要认真对待自己。以上这份 Java 技术成长笔记,可以【点击此处即可免费领取】免费获取并下载

Java 自学常见疑难解答

  1. 在自学 Java 前或者自学中你会不会有这样的疑惑:

  2. 自学 Java,学多久可以找到工作?

  3. 进大厂和进中小公司自学 Java 的侧重点有区别吗?

  4. 为什么学了那么久还只会“Hello World” ?

  5. 编程能力从什么时候开始突飞猛进?

  6. 以上选项无关对错,让我慢慢给你唠~

1 自学 Java,学多久可以找到工作?

如果是小白的话,每天保证 8 小时以上的学习时间,达到 Java 初级程序员的水平最快也要 6 个月。前 5 个月正常学习 Java 技术,最后一个月准备简历以及面试。Java 面试非常重要,要找一些面经将面试常考的问题搞明白。

2 进大厂和进中小公司自学 Java 的侧重点有区别吗?

大厂更重基础,需要你对学习的 Java 内容有透彻地理解,以及学习和理解数据结构与算法、操作系统、计算机网络、设计模式。而小厂更重项目和框架的使用。因此不同的定位,决定了在学习和面试准备的时候要有不同的侧重点。

还要提一点,大厂都注重编程能力,会笔试算法题,对应届生的要求更高,所以如果有条件的话一定要把剑指 offer 刷 2-3 遍,力扣最好能刷 100 题以上(学生的话刷 200 题以上)。

3 为什么学了那么久还只会“Hello World” ?

学那么久只会"Hello World"就是因为只看不练或者练少了。很多人在学习时眼高手低,不去敲代码或者只是 copy 一下执行,到后面碰到有难度的代码,就发现自己啥都不会。

解决这个问题一方面是学习途中遇到的案例都要动手敲;另一方面就是要刷题巩固,因为跟着案例,逻辑上还是有所依赖,但刷题时必须要自己充分思考才能通过。

所以自学 Java,要一步一个脚印,每部分的案例都要动手去实现,并在实现的基础上去巩固和创新。

4 编程能力从什么时候开始突飞猛进?

编程能力的进步靠练习,一般突飞猛进会有两个阶段。

第一个突飞猛进就是学完 Java 基础部分。刷了 100 题左右,这时候遇到简单逻辑题都可以轻松解决,自己的逻辑能力、编程能力都有不错的提升,你会觉得自学 Java 这么久,努力没白费。

第二个突飞猛进的体会就是独立完成一两个项目的后端模块时。从搭建项目、到 MVC 分层编写业务逻辑代码会让学到的知识真正应用起来,自己会有点窃喜:哇,我自己也能写项目啦!这时候就是编程能力的第二次突飞猛进。

当然,后面可能也会因为一些其他原因让自己再次突飞猛进,但总的来说,想要突飞猛进,就要在短期内高强度学习、高强度敲代码。

文章总结

通过上面自学 Java 的介绍,我想你对 Java 的学习方法和路线已经有所认识和掌握,通过一张表来复习一下。

如果你觉得自己适合自学 Java,必须要鼓足干劲一鼓作气!自学前先了解 Java 知识体系,掌握一些学习资源和方法,学习过程一定要多敲代码、多回顾交流。

IT 界经常流传这么一句话:"talk is easy,show me the code"。自学 Java,就是学会写代码,多多练习是非常非常重要的。之后的锦上添花是懂原理,但深入理解原理是一个任重而道远的过程。

加油吧后浪!

注:关于文中提到的java资料以及视频等学习课件☛☛☛【点击此处即可免费领取】

Java学习路线总结(思维导图篇) 优快云最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。 阅读详情

相关推荐

双层优化入门(2)—基于yalmip的双层优化求解(附matlab代码)

​上一篇博客介绍了双层优化的基本原理和使用KKT条件求解双层优化的方法,这篇博客将介绍使用yalmip的双层优化问题的求解方法。 1.KKT函数 通过调用yalmip工具箱中的KKT函数,可以直接求出优化问题的KKT条件,省去自己手动写的步骤。 2.solvebilevel函数 solvebilevel是yalmip工具箱内置的求解双层优化问题的函数。也就是通过这个函数,不需要咱手动写KKT条件,也不需要使用KKT函数,直接把上、下层优化的目标函数、约束条件往里面一放,就能求出结果。 ​

配电网和matlab的博客 1万+

Java学习路线

门永不过时的编程语言——Java 编程开发。 Java编程语言占比: 据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以900万的程序员数量位居首位。 而且很多软件的开发都离不开Java编程,因此其程序员的数量最多。而在以Java编程为核心的开发领域中,javaEE程序员的需求量10年来一直居于首位! Java工程师人才缺口: 根据IDC的统计数字:就2017年来说,我国Java人才...

3446

VisionPro开发实战:CogRecordDisplay控件显示与保存图片的完整流程(附C#代码示例)

本文详细解析了VisionPro开发中CogRecordDisplay控件的图像处理全流程,包括图像加载、显示优化、动态清屏及结果保存等关键操作。通过C#代码示例,展示了如何高效使用该控件进行工业视觉应用开发,特别适合自动化检测系统的开发者参考。

weixin_42523792的博客 276

Java学习路线总结,搬砖工逆袭Java架构师

定期分享Java硬核技术干货、分享Java学习路线、分享Java经典面试题

学Java,找哪吒 26万+

警惕AI依赖:如何避免数字水蛭侵蚀你的认知能力

在人工智能技术日益普及的今天,人机协作已成为现代工作流的核心范式。其原理在于通过算法模型辅助人类完成信息处理、内容生成等任务,从而提升效率。然而,过度依赖AI可能导致认知卸载,引发思考能力退化等潜在风险。从技术价值看,AI的核心在于增强而非替代人类智能,关键在于建立健康的协作模式。在应用场景上,无论是编程开发、内容创作还是决策分析,用户都需警惕工具依赖对深度工作、创造性思维和决策责任的侵蚀。本文聚焦于识别AI依赖的早期信号,并提供构建分阶段使用流程、将AI作为质疑者等具体策略,旨在帮助读者守护核心认知能力,

weixin_30240349的博客 625

MCP协议桥接AdsPower:AI原生时代的浏览器自动化新范式

浏览器自动化是Web开发和数据采集领域的核心技术,其核心原理是通过程序控制浏览器内核执行页面导航、元素交互和数据提取等操作。传统方案如Selenium和Playwright虽功能强大,但在管理多实例、指纹隔离等复杂场景下,配置和维护成本较高。随着AI原生应用的发展,Model Context Protocol(MCP)作为一种标准化协议,为AI助手与外部工具间的通信提供了统一接口,显著提升了自动化流程的构建效率和自然语言交互能力。通过MCP Server桥接AdsPower指纹浏览器的本地API,开发者可将

weixin_30552811的博客 296

2020最新版Java学习路线图--Java语言进阶重点知识

Java学习路线图的第二阶段是Java语言进阶学习,在学习完第一阶段的Java语言入门后,大家对Java语言编程有了初步的认识。 黑马程序员的2020最新版Java学习路线图把Java语言进阶学习分为九个部分:面向对象进阶,常见API,异常,集合,IO,多线程,网络编程,Lambda以及反射。 下面介绍的是Java语言进阶学习阶段的技术要点,跟着学一定会有所收获。如果在被某个知识点卡住了,请不要轻...

CZ-001的博客 8061

详解AXI4-Lite接口(3)--AXI4-Lite接口IP源码仿真及分析(Master接口)

通过本文您会学到:1、了解AXI4-Lite_Master接口的逻辑实现;2、加深Xilinx IP、仿真工具的使用;3、提高阅读时序图的能力。

孤独的单刀 6446

自学一周的第一个小爬虫

本人是一名学生,最近在看《凡人修仙传》动漫,更新太慢了,就去看了小说,对于游戏零氪党的我来说,想要白嫖又不想看见烦人的广告。。。于是学了一周爬虫想要方便一下阅读。所以就有了我的第一个小爬虫,由于第一次写,所以不是很熟悉,有好多不足之处,大家可以在评论区指出来,谢谢啦………^~^好了,废话不多说(上面已经说完了),直接上效果图:网上有好多小说网站,我这里随便找了一个。用到的工具:pycharm,浏览器需要的库:requests,etree(个人感觉xpath解析比较简单,所以就选择了etree)工具的安装和库

weixin_57254695的博客 969

MicroPython学习:在STM32上进行移植

本文将介绍如何在STM32上移植MicroPython,并提供相应的源代码。通过以上步骤,你已经成功地将MicroPython移植到STM32上,并可以使用MicroPython语言编写和运行代码。你可以进一步探索MicroPython的功能和API,以利用STM32的各种外设和功能。使用STM32CubeProgrammer或其他适当的烧录工具,将编译生成的MicroPython固件烧录到STM32微控制器中。打开该文件,并根据你的STM32微控制器类型进行必要的配置更改。模块来控制STM32的LED。

JeeVue的博客 1237

5.3-集群电源模式解析

DSU-120 DynamIQ™集群支持9种电源模式,包括正常运行(ON)、完全断电(OFF)、三种数据保持模式(FUNC_RET、FULL_RET、MEM_RET)、两种调试模拟模式(OFF_EMU、MEM_RET_EMU),以及系统恢复模式(WARM_RST、DBG_RECOV)。这些模式通过智能管理电源状态,在保持数据完整性的同时实现功耗优化,并为系统调试和故障恢复提供支持。不同模式在RAM保持、逻辑断电和调试能力方面各有侧重,满足从正常运行到深度调试等不同场景需求。

baron-周贺贺-代码改变世界ctw 117

万年一更——吐血整理JavaScript—DOM操作

返校之后各种忙哈哈哈哈操,今天我突然想起了我的博客。本次博客以手写笔记为主(因为感觉打字太慢,浪费时间) 啊这,大家别嫌我字丑!!! 因为大二想学习一下web开发,给自己立了一个小flag,大三前基本做出来一个属于自己的网站,最近一直在刷B站的视频。今天DOM操作算是学习完结吧。但还没咋实战过。这就有点不ZBC了。废话不多说,先来一张JavaScript基础重点知识 下面的手写笔记以JavaScriptDOM操作为主,学过C++或C或者其他语言的,基本上在逻辑理论上都能理解,学一门,门门通。 排他算法

终成大师的博客 674

Android 14.0 系统开机屏幕设置默认横屏显示

在14.0的系统ROM产品定制化开发中,对于产品需求来说,由于是宽屏设备所以产品需要开机默认横屏显示,开机横屏显示这就需要从 两部分来实现,一部分是系统开机动画横屏显示,另一部分是系统屏幕显示横屏显示,从这两方面就可以做到开机默认横屏显示了

安卓兼职framework和app工程师的博客 2151

VecMap 四大模式怎么选?监督/半监督/相同词/无监督完整对照指南

VecMap 是一个用于学习跨语言词嵌入映射(cross-lingual word embedding mappings)的开源框架,它能把两种语言的词向量映射到同一个向量空间,让英文单词和中文单词可以直接计算相似度,是机器翻译、词典构建、跨语言检索等任务的基础工具。很多刚接触 NLP 的朋友都会困惑:VecMap 提供的监督、半监督、相同词、无监督四种模式到底有什么区别?手上的数据该配哪种模式?

gitblog_01026的博客 285

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

又有坑是吧——MediaPlayer加载视频为什么这么慢

(如果哥哥们想自己体验一把, mac可以用MediaParaser, window用Mp4Info)ftyp,moov,mdat就是Box的名字。这里需要重点关注的是moov和mdat两个Box。moov就是,存放着视频的总体信息,时长啦,码率啦,宽高等等mdat是具体的媒体数据,也就是我们播放的内容下面这句话很关键播放器获取到moov box才能开始播放视频!!!播放器获取到moov box才能开始播放视频!!!播放器获取到moov box才能开始播放视频!!!这句话是这篇文章的核心。

1042

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

初学者学Java常遇到的问题,我都给你回答了!

前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 春节在家刷知乎,看到了一个知乎的问题:《学习Java可以干什么呢?》 我是一个Java的初学者,大概学了四天,对Java到底能做什么还是一头雾水,每天对着黑屏(DOS系统)除了编译还是编译,那么Java对于一个初学者来说Java可以做些什...

3y 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

西北工业大学 NOJ 2023 程序设计基础(C++) 完结撒花(已停止维护)

2023-2024 西北工业大学 C++ NOJ 含额外样例,题意分析,coding note

zooperjook的博客 4万+

初学者学Java常遇到的问题,统统在这里了

前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star: https://github.com/ZhongFuCheng3y/3y 春节在家刷知乎,看到了一个知乎的问题:《学习Java可以干什么呢?》 我是一个Java的初学者,大概学了四天,对Java到底能做什么还是一头雾水,每天对着黑屏(DOS系统)除了编译还是编译,那么Java对于一个初学者来说Java可以做些什么呢? 问题的链接: https://www.zhihu.com/question/36757

weixin_48674590的博客 765

插件预热 且看安全小白如何轻松利用Goby插件快速上分_goby 导入插件(4)

接下来看我是如何使用Foradar插件进行刷分的(嘿嘿嘿嘿白嫖就是香)

2401_84254087的博客 515

C/C++编程笔记:最强IDE和它的天才第一步!带你稳步学编程

在学习C语言的过程中,编译环境和编辑器肯定是必不可少的。比如大家常见的VC 6.0,Dev,g++等等,但是目前市场上使用最广泛,相对成熟的集成开发环境依旧是Visual Studio。 只是很多高校在教学实践中普遍采用VC或者Dev,因为文件小,安装便捷嘛!不过相对而言,这些软件对初学者往往不够友好,包括界面、提示符、文件系统等等。 而与之对应的,VS凭借它出色的界面、友好的操作方式和完备的体系得到很多开发者的青睐,所以也是奉劝一些仍在坚持学校的软件的同学入坑VS,只有四个字送给你们:绝对不亏!

致力于C语言C++知识分享! 446

看视频的一点小建议

作者:阿秀阿秀的校招笔记:https://interviewguide.cn你好,我是阿秀。上次跟大家分享了不少优秀的编程视频,全部可以白嫖的那种优秀编程视频。我学编程全靠B站了,真香(第...

博客 468

总结笔记 || 软件测试的基础理论(测试模型+测试用例+软件缺陷+测试总结......

参考学习资料 书籍:《软件测试》[美] 罗恩 佩腾(Ron Patton)著 张小松 王钰 曹跃 等译 机械工业出版社 视频: ① B站 - 软件测试全套白嫖:零基础转行精品课,自学完拿不到8K,你找我!https://www.bilibili.com/video/BV13Q4y127ac?p=16&spm_id_from=333.1007.top_right_bar_window_history.content.click ② B站 - B站最强软件测试教程=软件测试基础+软件测试面

Inochigohan的博客 5131

java常用的设计模式面试题,满满干货指导

前言 这期我想写很久了,但是因为时间的原因一直拖到了现在,我以为一两天就写完了,结果从构思到整理资料,再到写出来用了差不多一周的时间吧。 你们也知道作者一直都是创作鬼才来的,所以我肯定不会一本正经的写,我想了好几个切入点,最后决定用一个完整的电商系统作为切入点,带着大家看看,我们需要学些啥,我甚至还收集配套视频和资料,暖男石锤啊,这期是呕心沥血之作,不要白嫖了。 在校生 如果你是在校生,你应该趁着在学校的时间夯实基础(比如计算机系统、算法、编译原理等等)不要动不动去搞什么项目,你也搞不出一个让面试官很满意的

m0_57700563的博客 178

大学生如何合规稳定使用GPT-5.2构建学术工作流

GPT-5.2作为新一代大语言模型,在教育场景中展现出强大的认知增强能力,其核心价值在于辅助信息整合、逻辑推演与知识结构化,而非替代人类思考。它依托于严格的教育身份认证(如.edu邮箱实名绑定)、校园网络基础设施(Eduroam/白名单IP)及本地化工具链(CLI代理、系统提示工程)实现稳定调用。技术原理上,教育账号可获得更高调度优先级与专用计算资源,显著降低响应延迟;工程实践中,需遵循‘模块化生成+人工校验’范式,严守学术诚信边界。典型应用场景包括课程论文精读与提纲构建、编程作业错误诊断与测试生成、竞赛方

weixin_34068198的博客 420

Java学习路线(超详细)

Java中的网络编程技术非常广泛应用,在学习Java网络编程时,你需要了解Java中的Socket、HTTP协议、TCP/IP协议和UDP协议等内容,以便实现网络通信。在学习Java基础知识时,你需要了解Java的语法、变量和数据类型、控制结构、数组、字符串和输入/输出操作等基础知识。在学习面向对象编程时,你还需要了解Java中的抽象类和接口、内部类、枚举等概念,这些都是面向对象编程的重要组成部分。学习Java异常处理,你需要了解Java中的异常分类、异常的捕获和处理等内容,以确保程序的健壮性和可靠性。

桑稚远方的博客 7859
上一篇: 面试进阶齐飞!上线一天就遭 Github 全面封杀
下一篇: 外包 CRUD3 年,被导师一句话点醒,直接涨薪 15K
奇迹摘星w
博客等级 码龄6年 1844粉丝 189原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值