一些记录

本文记录了一位程序员的学习与成长过程,包括Spring相关技术的学习、数据库操作、线程安全、多线程、事务管理以及面试经验。在学习过程中,作者通过实践项目和阅读文章不断提升技术能力,并分享了关于程序员如何利用技术变现和提升价值的思考。
摘要由CSDN通过智能技术生成

需要学的

Springcloud、Springboot、Springmvc 迁移为Boot项目、在 Boot 中使用 Xml、线程安全、线程安全类、多线程、事务管理、悲观锁乐观锁、集合、Dubbo 原理、Sql 调优问题、中间件、Mybatis 如何防止 Sql 注入、Redis原理、Mybatis原理、Tcp、Mq

10/18

计划:

  • 搭建开发环境
  • 构建云收藏项目并运行
  • 阅读五篇技术文章并记录
  • 跑步

结果:

  • 搭建开发环境完成
  • 构建云收藏项目完成,但无法运行,缺少数据库(后面发现不需要数据库,JPA 自动生成)
  • 文章:
  1. 迷茫的时候,究竟应该做些什么?
    我们要明白的是,迷茫其实是人生的一种常态,每个人都会遇到一种精神状态,在这时候我们应该做但却经常忽略的是 收集更多的信息。
    迷茫是什么,迷茫就是当下有很多条路可以走但你不知道究竟该走哪一条,但如果你有足够多的信息是你判断走其中一条路是最适合你的,你还会迷茫吗?
    接受迷茫这种精神状态,静下心来,收集更多的信息作出决断。

  2. Springboot 入门
    Springboot helloword 项目开发完成,引用配置使用 @value("${xxx}") 注解,多环境配置版本 spring.profiles.active 取值 dev/prod
    @RequestMapping(value = {"/hello","/hi"}, method = RequestMethod。GET) 本注解是为一个方法配置多个请求路径,@GetMapping("/hi") Get 请求注解
    @RequestParam 和 @PathVariable 都是获取请求中的参数 @PathVariable 针对请求路径上的参数("/hello/{id}") @RequestParam 针对表单参数,此注解可以设置可否为空,可设置为空默认值。

10/19

计划:

  • 学习 Springboot 的数据库操作-- JPA 方式和数据库事务管理
  • 下午 面试重庆慧软和八戒财税
  • 跑步或运动 1h

结果:

  • 完成数据库操作,事务管理视频已学习。
  • 面试,一个电话面,一个公司面,电话免得看不上,公司面的没结果,估计嫌我要价高。
  • 跑步完成。

10/30

计划:

  • 学习线程安全相关知识
  • 完成Spring boot 事务管理代码编写
  • 阅读五篇优质公众号文章
  • 跑步 + 哑铃 + 俯卧撑

结果:

  • 创建线程的方法有:
    1. 继承 Thread 类,重写 run(),调用时声明该类并执行 start();
    在类 A 中创建匿名内部类 thread, 重写 run() 调用 start();
    2. 创建类 A 实现 java.lang.Runnable 接口,重写 run,调用时 Thread thread = new Thread(new MyRunnable()); thread.start();
    匿名实现同理

  • Spring-boot-starter-data-jpa 会将代码中的实体类映射到数据库表中,自动建表,主键注解 @Id 自增长序列注解 @GeneratedValue 实体类需要些无参构造方法。
    Spring.jpa.hibernateddl-auto: 取值说明:

    1. update 无表建表,有表不变,有数据不会删除
    2. create 新建表,删除原有表和数据
    3. create-drop 新建表,应用停的时候就会将表删除
    4. validate 验证表结构,有误则报错。

    @Transactional 事务注解,一般用于 service 层,使一个 service 方法中的所有操作成为事务。

  • 频繁在集合中插入和删除数据,优先选择 LinkedList,频繁按集合下标读取元素,则优先选择 ArrayList。

  • 跑步 10 Km,耗时 80 分钟。

10/31

计划:

  • 学习「深入浅出Java多线程课程」
  • 学习「Springboot-Web进阶」
  • 阅读五篇「左耳听风」
  • 100个俯卧撑
  • 跑步四十分钟
  • 写一篇博文,并发公众号

结果:

  • 已完成「Springboot-Web进阶」课程学习,明日计划写代码并学习「深入浅出Java多线程课程」。

  • 程序员如何用技术变现
    应当尽量去简化工作中没有技术含量的工作,提高代码重用度,自动化,简化需求。

    要去经历大多数人经历不到的,要把学习时间花在那些比较难的地方。

    要写文章就要写没有人写过的,或是别人写过,但我能写得更好的。

    技术和知识完全是可以变现的。

    最好的SEO就是独一份,要学会展现自己。

    25~35岁是每个人最宝贵的时光,应该用在刀刃上。

    并不是社会不尊重程序员,只要你能帮上大忙,就一定会赢得别人的尊重。能帮上大忙的前提就是你能人所不能。

    得让身边的人有求于你,或是向别人推荐你,这就需要你能掌握大多数人不能掌握的技能或技术,需要你更多地学习,并要有更多别人没有的经验和经历。

    更好的技术敏感度,看清市场需求。

    学习技术是需要多问自己:「这个技术解决什么问题?和同类型产品的优势在哪? 为什么是这样的解决方式,有没有更好的方案? 不可替代性?」

    找到能体现价值的地方(公司或网站) 只有在一家高速发展的公司,技术人员的价值才能达到最大化。

    关注技术付费点 挣钱和省钱两个方向。

    尽量阅读英文技术文档,保证一手信息源。

    输出观点和价值观,想清楚,写明白,快发声,打造自己的稀缺性!

    不要只寄望于在工作中学习,工作没有覆盖的地方你就不学了。真正的高手在工作之余都会花很多时间去自己研究点东西的。永远和高手一起工作。如果你面试的公司的面试太简单了,那就不要去,因为简单的面试通常意味着平庸。去那样的公司工作只会让你的学习速度变慢,甚至倒退。

  • 高估自己了,上半身太重,做了五十个做不动了

  • 吃饭吃晚了,去不了,改为50次哑铃弯举。

  • 博客写好了, 三年是程序员的一个坎.

11/1

计划:

  • 「Springboot-Web进阶」相关代码 coding
  • 学习「深入浅出Java多线程课程」 50%
  • 阅读三篇左耳听风
  • 跑步 40 Min+

结果:

  • @Valid 注解可以校验表单参数,具体验证方式写在实体类中
    @Aspect 切面类注解 @Piontcut 切面点注解 可用于记录请求参数和返回使用
  • 没学。。。
  • 没看。。。
  • 跑步还是跑了的 -

11/2

计划:

  • 完成统一异常处理代码 coding
  • 学习「深入浅出Java多线程课程」 50%
  • 阅读三篇左耳听风
  • 纠正打字指法训练
  • 腹肌撕裂者一组

结果:

  • 想要成为一个好的程序员,必须注意以下几个方面:
    英文能力、问问题的能力、写代码的修养、安全防范意识、软件工程和上线规范
  • 然后就跑去望海花市玩去了。。。我有罪

中间这几天去女朋友家了。。

11/5

计划:

  • 学习「深入浅出Java多线程课程」 50%
  • 阅读两篇「左耳听风」

结果:

  • 发现,在 mysql 数据库中,MyISAM 数据库引擎不支持事务,但 Select 查询更有效率,InnoDB 数据库引擎支持事务,更适合 Insert 和 Update 操作。
  • 在程序完成编写后,需要对代码进行测试,包括 service 和 controller。
  • 在 SrpingBoot 版本迭代中,将 JPA 的 findOne() 改成了 findById()。尽量不要使用 getOne() 代替

11/6

计划:

  • 了解 Dubbo 实现原理
  • 写一个 Dubbo 的 Demo
  • 看看面试题
  • 投投简历

结果:

  • 看了好几篇实现原理,感觉都一般,或者说我没看懂。。。
  • demo 已完成,并建立管理控制台
  • 面试题看了几个,明天多看点。
  • 投简历发现重庆的公司真不怎么样,有点恼火,后面准备好了之类找人内推一下。

11/7

计划:

  • 观看「Spring Cloud 微服务实战」前三章内容
  • 看看面试题,细看

结果:

  • 微服务是一种架构风格,不是组件不是框架。
    1.一系列微小的服务共同组成
    2.跑在自己的进程
    3.每个服务为独立的业务开发
    4.独立部署
    5.分布式的管理

  • 单体架构的优点:
    容易测试(本地启动完整的测试,不需要外部依赖)
    容易部署(直接打成war包,放在tomcat下面就可以了)

  • 单体架构的缺点:
    开发效率低(容易提交代码的时候造成冲突)
    代码维护难(尤其是新人来的时候业务代码写在一块,不知从何下手)
    部署不够灵活(任何小修改都要重新构建,构建时间特别长)
    稳定性不够 (任何一个小问题容易让整个系统挂掉)
    扩展性不够(无法满足高并发下的业务需求,如需要某部分服务获取更多资源和流量 )

  • 分布式的定义:
    旨在支持应用程序和服务的开发,可以利用物理架构由多个自治的处理元素,不共享内存,但通过网络发送消息合作。
    两个厨师,一个洗菜一个炒菜,互不干扰就是分布式,两个都炒菜就是集群。

11/9

计划:

  • 观看「Spring Security」前三章内容
  • 面试重庆讯云

结果:

  • 内容较多,看了前两章
  • 面试等通知,估计无果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值