Java
文章平均质量分 87
c173甘甘
JavaEE Web
展开
-
简单了解下JDK19预览版的 Virtual Threads
最近看到JDK19发布了,拖了这么多年终于加入了虚拟线程功能,目前还是预览阶段,上有详细的介绍,来先看看 Java 版的协程是怎么样的。原创 2022-10-16 00:54:16 · 845 阅读 · 0 评论 -
如何加密保护配置文件中的敏感内容(Spring Cloud微服务)
日常开发中接触到的敏感数据包括但不限于数据库和其他中间件及其他系统的账号密码,日志中的个人数据,比如手机号、身份证号和住址等等信息…这里我们只讨论在代码层面如何加密保护敏感数据,主要是配置文件中的敏感数据处理和推送到git仓库平台如何隐藏敏感数据。对对敏感数据的加密保护方法多种多样,不同层面上有不同的方法。对于数据库密码这类信息,常用的连接池比如带有加密工具,但是比较局限,如果是SpringCloud很多服务的项目,可以用配置中心,统一管理各个服务的配置;如果是想加密整个配置文件,可以使用。...原创 2022-07-31 13:11:05 · 1223 阅读 · 0 评论 -
别再用Field注入了
Spring依赖注入原创 2022-07-31 13:08:13 · 381 阅读 · 0 评论 -
几种消除if/else的方式
随着项目的越来越复杂,条件分支越来越多,代码充斥着大量的if/else和switch/case判断,甚至是多层嵌套的if/else,我们需要重新重构或者组织逻辑代码。原创 2022-06-28 11:08:53 · 3278 阅读 · 0 评论 -
动态规划算法
动态规划(英语:Dynamic programming,简称DP)是一种在数学、管理科学、电脑科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。原创 2022-06-28 11:06:40 · 154 阅读 · 0 评论 -
再探枚举类Enum
枚举类是 Java 很常见的类了,最近在推上看到一个很有意思的枚举用法,加上执行开发中碰到的枚举的一些问题,这里记录一下。枚举定义和使用场景枚举是一个被命名的整形常数的集合。在 Java 中,描述抽象的事物外面用类和接口,但有些特殊的类的属性是一组固定的常数集合,那么就可以用枚举来表示,典型的例子比如星期有周日到周一,人类的性别有男女…嗯,如果见过国外的一些网站可能会有一些跨性别或其他选项可选,不过还是一样是常数集合。比如一个 Person 类,性别 gender 用0表示女的,1表示男的,在数据库字原创 2022-04-04 19:25:34 · 696 阅读 · 0 评论 -
从 Java8 到 Java11 再到 Java17 的新特性(2)
2018年9月26日,Oracle 官方宣布 Java 11 正式发布,这是自 Java8 之后 Java 大版本周期变化后的第一个长期支持版本。这篇介绍的是 Java9 到 Java11 累积的一些新特性,只涉及语法和编码上的功能,其他的如工具和虚拟机改进不涉及。本文源码地址:code-note1. 接口接口允许有私有方法interface Enhance { default void defaultMethod() { init(); } privat原创 2021-11-09 17:24:22 · 2110 阅读 · 0 评论 -
从 Java8 到 Java11 再到 Java17 的新特性(1)
从 JDK8 之后,Java 的更新策略改为以时间驱动的方式,每六个月发布一个新的Java版本,每三年发表一个长期支持版本。一般如果要对旧 JDK 进行升级,都会选择长期支持版,JDK11 和最近更新的 JDK17 是长期支持版本。但是由于商业项目更看重稳定性,更新 JDK 带来的收益不大,大多数人不愿意踩坑去更新 JDK。因此,很多人都只是从新闻了解到新 JDK 的新特性,平常开发没有接触到,甚至有些在用 JDK8 的人连 JDK8 的新特性都用不利索或者直接就不知道。其实许多新特性是可以简化我们的开发,原创 2021-11-09 17:23:27 · 8368 阅读 · 2 评论 -
知识库——微服务
微服务是一种用于构建应用的架构方案。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。1. 实施微服务好处针对特定服务发布,影响小,风险小,成本低频繁发布版本,快速交付需求低成本扩容,弹性伸缩,适应云环境2. 带来的问题分布式系统的复杂性部署,测试和监控的成本问题分布式事务和CAP的相关问题3. Spring Cloud 组件注册中心 Eureka,其他的还有.原创 2021-06-05 01:04:14 · 241 阅读 · 0 评论 -
知识库——第三方框架
1. Spring1.1. Spring 模块组成Spring Core 框架核心,提供 IOC 容器,管理 bean 对象Spring Context 提供上下文信息Spring Dao 提供 JDBC 抽象层Spring ORM 提供“对象/关系”映射 APIs 的集成层Spring AOP 切面编程功能Spring Web 提供 web 开发的上下文信息Spring Web MVC 提供了 web 应用的 model-view-controller 实现1.2. AOP面向切面编原创 2021-06-05 01:03:33 · 978 阅读 · 0 评论 -
知识库——集合框架
1. 总体结构容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。Map 接口和 Collection 接口是所有集合框架的父接口Collection 接口的子接口包括:Set 接口和 List 接口Map 接口实现:HashMap:线程不安全,键值可为 nullLinkedHashMap:双向链表,元素默认按插入顺序排序TreeMap:实现 SortedMap 接口,默认按键值升序排序,可指定排序的原创 2021-06-05 00:55:36 · 324 阅读 · 0 评论 -
知识库——Linux 命令
系统信息1. uname用于查看系统信息uname -a 显示全部信息2. lscpucpu 架构信息文件和目录操作1. ls列出文件或者目录的信息,目录的信息就是其中包含的文件。## ls [-aAdfFhilnrRSt] file|dir-a :列出全部的文件-d :仅列出目录本身-l :以长数据串行列出,包含文件的属性与权限等等数据-h : 和 -l 一起使用,列出文件同时以合理易读的单位显示文件大小2. cd更换当前目录。cd [相对路径或绝对路径]3.原创 2021-06-05 00:52:27 · 618 阅读 · 0 评论 -
知识库——数据库
1. 数据库三范式列不可分,确保表的每一列都是不可分割的原子数据项。作用:方便字段的维护、查询效率高、易于统计。属性字段完全依赖(完全依赖指不能存在仅依赖主键的部分属性)于主键。作用:保证每行数据都是按主键划分的独立数据。任何非主属性字段不依赖于其它非主属性字段。作用:减少表字段与数据存储,让相互依赖的非主键字段单独成为一张关系表,记录被依赖字段即可。三大范式只是一般设计数据库的基本理念,可以设计冗余较小、存储查询效率高的表结构。但不能一味的去追求数据库设计范式,数据库设计应多关注需求和性能,原创 2021-06-05 00:46:03 · 1243 阅读 · 0 评论 -
知识库——Java 并发
1. 基本概念1.1. 进程、线程和协程进程:程序执行时的一个实例,一个进程至少包含一个线程,同进程里多个线程可共享数据,不同进程之间切换代价大。线程:CPU 调度的基本单位,线程上下文切换代价比进程小,是进程的一个实体。协程:是一种用户态的轻量级线程,一个线程可包含多个协程。进程和线程都是同步,协程是异步。1.2. 并行与并发并行指多个事件在同一个时刻发生;并发指在某时刻只有一个事件在发生,某个时间段内由于 CPU 交替执行,可以发生多个事件。并行没有对 CPU 资源的抢占;并发执行的原创 2021-06-04 14:18:39 · 268 阅读 · 0 评论 -
知识库——Java 内存模型和 JVM
1. Java 内存模型1.1. 概念Java 内存模型(即 Java Memory Model,简称 JMM )本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。1.2. JMM 关于同步的规定线程解锁前,必须把共享变量的值刷新回主内存;线程加锁前,必须读取主内存的最新值到自己的工作内存;加锁解锁为同一把锁。1.3. 主内存和工作内存Java 内存模型规定了所有的变量都存储在主内存中原创 2021-06-04 13:23:31 · 297 阅读 · 0 评论 -
知识库——Java 基础
1. 基本概念1.1. JDK 和 JRE 有什么区别?JRE:Java Runtime Environment( Java 运行时环境)。即java程序的运行时环境,包含了 Java 虚拟机,Java 基础类库。JDK:Java Development Kit(Java 开发工具包)。即 Java 语言编写的程序所需的开发工具包。JDK 包含了 JRE,同时还包括 Java 源码的编译器 javac、监控工具 jconsole、分析工具 jvisualvm 等。1.2. Java 语言有哪些特原创 2021-06-04 13:19:20 · 366 阅读 · 0 评论 -
知识库——计算机基础
1. 操作系统1.1. 基本特征1.1.1. 并发1.1.2. 共享1.1.3. 虚拟1.1.4. 异步1.2. 基本功能1.3. 系统调用1.4. 宏内核和微内核1.4.1. 宏内核1.4.2. 微内核1.5. 中断分类1.5.1. 外中断1.5.2. 异常1.5.3. 陷入2. 网络2.1. 网络模型2.1.1. OSI(Open System Interconnection 开放系统互连)七层模型2.1.2. 五层协议2.1.3. ..原创 2021-06-04 13:08:05 · 403 阅读 · 0 评论 -
Java 知识库
构建自己的知识库个人认为是一件很有必要的事情,可以让自己知道会哪些知识不会哪些知识,规划学习的路线。知识库内容不管是自己写的,还是通过整理资料汇总的,能经过自己消化的都能够对自己有收益。最近离职有空就做了下整理,顺便可以准备面试。文档中许多文本内容和图片搜集于 GitHub 上其他作者编写的文档、专业技术书籍和各类博客文章,由于大量引用和出处繁杂,没有一一做出处说明。下面是在 GitHub 上的大纲模板,后面会把内容再搬到博客来,如果有错误欢迎指出。文档Java 知识脑图计算机基础Ja原创 2021-06-04 11:28:56 · 184 阅读 · 0 评论 -
spring springmvc mybatis 整合
最近鼓捣ssm框架的东西,写篇博文记录。 环境 apache-tomcat-8.0.33、jdk1.8.0_05 maven Dynamic Web Module 2.5 1、各个xml配置文件的配置 (1)pom.xml 配置清单文件 连接池用的阿里巴巴Druid,数据库mysql,指定jdk编译版本1.8<project xmlns="http://maven.apache.org/原创 2016-04-10 10:39:56 · 1909 阅读 · 0 评论 -
内部类相关——定义、匿名内部类、回调实现及静态内部类
内部类的使用原创 2017-02-23 00:00:29 · 387 阅读 · 0 评论 -
反射
相信大家经常听说某些框架设计用到了反射机制啥啥,但自己对此概念却了解甚少,虽然一般开发不会用到,但还是有必要知道反射的基本原理和操作。使用反射,可以做到:在运行中分析类的能力。在运行中查看对象,例如,编写一个toString方法供所有类使用。实现数组的操作代码。利用Method对象,这个对象很像C++中的函数指针。反射操作主要用到的类有Class(类)、Field(属性)、Method(原创 2017-04-04 01:54:10 · 248 阅读 · 0 评论 -
多线程
线程是Java重要的部分,多线程的应用广泛原创 2017-05-09 01:03:56 · 269 阅读 · 0 评论 -
ThreadLcoal
ThreadLcoal不是线程,而是一个创建线程的局部变量的类,主要用于存储多线程下类的某些变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本,当前线程的ThreadLocal的变量只能被该线程访问,而其他线程访问不到。使用类定义,支持泛型 public class ThreadLocal<T> 初始化值 private T setInitialValue() set方法原创 2017-07-02 11:00:20 · 398 阅读 · 0 评论 -
泛型
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。使用泛型,意味着编写的代码可以被很多不同类型 的对象所重用。泛型类public class ClassTest<T> { public T firtsFiled; public T secondFiled; public void setFirtsFiled(T data){ firtsFiled原创 2017-07-07 16:44:11 · 255 阅读 · 0 评论 -
线程池
创建一个新的线程是有代价的,创建大量的线程会消耗许多系统资源,影响系统的性能。这时,我们就需要使用线程池来管理线程,线程池能缓存线程,可用闲置的线程来执行新任务,能有效控制线程并发数,并对线程进行一些简单的管理。先创建一个线程任务类public class TaskThread implements Runnable{ private static final Logger LOG = Lo原创 2017-08-02 22:31:03 · 345 阅读 · 0 评论 -
Spring Boot打包和部署(解决打包太大和快速部署补充)
SpringBoot 工程若用简单的 clean package 命令打包会包含所有依赖 jar 包,如果工程依赖比较多的时候,打的包通常动不动就几十 m 大。这使得在部署到远程的时候,如果你的网络是小水管的就要传半天了,而且上微服务的项目,多个工程,一个工程还多台机器,更新部署需要浪费许多时间。SpringBoot 启动可以以加载外部依赖目录来启动工程,所以我不必每次打包都包含一堆 jar 包...原创 2019-03-08 14:56:21 · 2579 阅读 · 5 评论 -
MySQL入门接触记录--从安装到Java通过JDBC连接MySQL数据库
MySQL安装和java通过JDBC连接数据库流程原创 2015-12-12 14:46:29 · 519 阅读 · 0 评论