
java高级
文章平均质量分 73
潘多编程
yinyouhai@aliyun.com
展开
-
Java Code Review 最佳实践:确保代码卓越与团队成长
代码审查是软件开发中不可或缺的一部分,它有助于提高代码质量、减少bug、促进团队成员间的知识共享,并确保项目遵循既定的编码标准。本文将探讨Java代码审查的最佳实践,并提供一份详尽的检查清单,帮助你的团队提高代码审查的效率和效果。通过遵循上述最佳实践和检查清单,你的Java开发团队将能够实施更为高效和深入的代码审查流程,从而提升代码质量,减少后期维护成本,促进团队的技术成长和协作精神。鼓励开发者在提交代码之前进行自我审查,使用静态代码分析工具检查代码,修复明显的问题,减少代码审查过程中的负担。原创 2024-07-21 09:48:35 · 509 阅读 · 0 评论 -
如何开始一个软件项目:从构思到启动
启动一个新的软件项目是一项复杂但令人兴奋的任务。它要求我们有条不紊地进行规划和执行。原创 2024-07-14 15:44:59 · 1112 阅读 · 0 评论 -
装饰模式:动态扩展对象的功能
装饰模式是一种结构型设计模式,它允许向现有的对象添加新功能,同时保持类的原有结构。装饰模式通过创建一个包装对象,也就是“装饰”来包裹真实的对象,可以在不改变原有对象结构的前提下,为其添加新的职责或行为。原创 2024-07-13 17:59:18 · 404 阅读 · 0 评论 -
观察者模式:构建响应式系统的基石
观察者模式定义了对象之间的一对多依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式通常用于实现发布/订阅机制,其中发布者(主题)广播消息,而订阅者(观察者)接收并响应这些消息。原创 2024-07-13 17:53:54 · 574 阅读 · 0 评论 -
高可用系统架构设计技术方案:Java架构师视角
在现代互联网环境下,高可用性(High Availability, HA)已成为衡量系统质量的重要指标之一。对于Java架构师而言,设计一套能够保证业务连续性、快速恢复和持续服务的高可用系统架构,是一项复杂而挑战性的任务。本文将从Java架构师的角度出发,探讨构建高可用系统的关键技术和设计思路。原创 2024-07-12 14:57:44 · 906 阅读 · 0 评论 -
Java架构师必知必会的15个关键技术
在软件工程的世界里,Java架构师扮演着至关重要的角色,他们不仅需要具备深厚的编程功底,还要有广泛的技术视野和卓越的决策能力。为了成为一名优秀的Java架构师,掌握一系列的关键技术是必不可少的。以下是Java架构师应当精通的15个核心技术点,它们覆盖了从底层基础设施到上层业务逻辑的各个层面。原创 2024-07-12 14:44:15 · 597 阅读 · 0 评论 -
Java策略模式在动态数据验证中的应用
策略模式允许一组算法在运行时互换,它定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换。策略模式让算法的变化独立于使用算法的客户端,非常适合于那些有多种算法可供选择的情况,如数据验证、排序算法等。原创 2024-07-07 12:46:39 · 1103 阅读 · 0 评论 -
Java实战:JSON文件到Excel文件的转换
库来创建Excel文件,并将Java对象的数据填充到Excel中。库来解析JSON文件,并将其转换为Java对象。如果你使用的是Maven,可以在。首先,确保你的项目中已经添加了。类,以及一个包含多个。对象的JSON文件。原创 2024-04-22 21:03:48 · 2174 阅读 · 0 评论 -
HMAC API 接口签名 Message安全验证
什么是HMAC?HMAC 全称(Hash-based Message Authentication Code,即基于Hash的消息的认证码)。 - 基本过程为对某个消息,利用提前共享的对称密钥和Hash算法进行加密处理,得到HMAC值。 - 该HMAC值提供方可以证明自己拥有共享密钥的对称密钥,并且消息自身可以利用HMAC确保未经篡改。为什么需要API接口签名?对外开放的 API 接口都会面临一些安全问题,例如伪装攻击、篡改攻击、重放攻击以及数据信息泄漏的风险。利用 API 接口签名能...原创 2022-05-21 20:57:46 · 2068 阅读 · 0 评论 -
Java如何保护RestAPI? 如何指定client可以访问API?
如何利用对称加密实现简单的请求鉴权。前期沟通服务端与客户端需要在前期敲定以下内容:秘钥对(apiKey和secretKey),由服务端通过安全的途径交给客户端,如邮件、IM等内部渠道。头部名称,包括APIKey、时间戳、签名及业务相关的头部。加签算法,即根据业务参数及secretKey如何生成加密签名,客户端与服务端需保持一致。由客户端加密后的内容,在服务端用同样的秘钥加密应该是一模一样的。客户端流程客户端的加签过程如下图所示。代码创建一个拦截器publi.原创 2022-05-14 22:38:56 · 322 阅读 · 0 评论 -
tcp,http,socket,https,ssl,tls
SO/OSI七层模型和TCP/IP模型的关系tcp协议tcp协议属于传输层协议(UDP也属于传输层协议,但是UDP协议是无状态的)。建立一个TCP连接需要三次握手,断开一个TCP连接需要四次挥手。手机能够使用联网功能,是因为手机底层实现了TCP/IP协议,使用手机终端通过无线网就可以与服务端建立一个tcp连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。http协议http协议,简称超文本传输协议(Hypertext Transfer Protoco原创 2022-03-12 23:37:27 · 3620 阅读 · 0 评论 -
《Java Web项目开发实战案例》最新源码
《Java Web项目开发实战案例》最新源码介绍《Java Web项目开发实战案例—Spring Boot+Mybatis+Hibernate+SpringCloud》的10个项目源码 各大电商有售, 书本当当链接:http://product.dangdang.com/29323989.html最新源码:github:https://github.com/bseayin/springbootbookcode码云:bsea/springbootbookcode章节对应的源码.原创 2021-12-30 09:41:48 · 2027 阅读 · 1 评论 -
本人出版《Java Web 项目开发案例实战—Spring Boot+Mybatis+Hibernate+Spring Cloud》
这是我自己写的第一本书,读者有问题,可以在博客留言。1.本书不仅介绍了Spring Boot,还涵盖其他的主流框架及Spring Boot与其他框架的整合使用本书涵盖Spring Boot 2.x、Spring、MyBatis、Hibernate、MyBatis-Plus、Shiro、Swagger、Redis和Spring Cloud等热门开源技术及Spring Boot Spring MyBatis、Spring Boot Spring Hibernate、Spring Boot Redis..原创 2021-12-03 21:00:54 · 2647 阅读 · 0 评论 -
如何写好一份软件开发设计文档
设计文档-也被称作技术规范和实现手册,描述了你如何去解决一个问题,是确保正确完成工作最有用的工具,其目的是迫使你对设计展开缜密的思考,并收集他人的反馈,进而完善你的想法,同时在软件交付和交接的过程中,能让其他人更通俗易懂的了解之前的设计目的和思路目录: 一、什么是软件开发设计文档 二、为什么要写软件开发设计文档 三、写软件开发设计文档需要注意些什么 四、怎么写好一份开发设计文档 一、什么是软件开发设计文档 设计文档-也被称作技术规范和实现手册....原创 2021-10-14 13:44:29 · 20610 阅读 · 3 评论 -
Springboot内置Tomcat配置调优
我们在使用springboot(版本:2.0.3.RELEASE)开发web项目时,大多数时候采用的是内置的Tomcat(当然也可以配置支持内置的jetty),内置Tomcat有什么好处呢?1、方便微服务部署,减少繁杂的配置2、方便项目启动,不需要单独下载web容器,如Tomcat,jetty等。#云服务器配置12核心,24G内存,java启动jar命令:nohup $JAVA_HOME/bin/java -server -Xms10240m -Xmx14336m -Xmn9216m -X原创 2021-09-04 10:43:24 · 1215 阅读 · 0 评论 -
开发错误记录
错误:SQLNonTransientConnectionException: Public Key Retrieval is not allowed解决办法:spring.datasource.url = jdbc:mysql://localhost:3306/db_usercore?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true原创 2021-06-23 21:08:44 · 131 阅读 · 0 评论 -
JUnit4入门 Mockito单元测试示列
JUnit4入门JUnit注解JUnit断言示列一package com.xsz;import org.junit.Assert;import org.junit.Test;/** * assertEquals() 如果比较的两个对象是相等的,此方法将正常返回;否则失败显示在JUnit的窗口测试将中止。 * assertSame() 和 assertNotSame() 方法测试两个对象引用指向完全相同的对象。 * assertNull() 和 assertNotNull() 方法原创 2021-03-07 22:47:14 · 1395 阅读 · 5 评论 -
Java实现股票最大收益 一次买卖和多次买卖两种实现
剑指offer面试题63(java版) 题目:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?只允许 一次交易 /** * 只允许 一次交易 * @param prices * @return */ public int maxProfit(int[] prices){ int rs=0; int min=Integer.MAX_VALUE; for(int p:原创 2021-01-26 17:07:44 · 1909 阅读 · 0 评论 -
Java web 面试 学习 资料百度云学习
程序员必看:《JAVA核心知识点整理.pdf》https://pan.baidu.com/s/1pIfWB1XfXcFLWRyb3930DQ提取码:feyr 《Java面试手册》链接:https://pan.baidu.com/s/1-86WDl870ouj2P0_A_5o8g 提取码:djou 如果链接已经失效,请加微信:pre798《某大厂P8面试题库》链接: https://pan.baidu.com/s/1PirmsAWJWAeo_L_jdcCUIQ...原创 2020-08-15 17:27:35 · 1016 阅读 · 0 评论 -
Java 面试重点
1、MySQL的事物有了解吗?简单说一下你的理解。说一下批处理事务的作用 总的来说就是要么全部成功,要么全部失败。比如 银行转账的时候,A转给B 1000元钱, 这个业务实现的时候需要两个数据库的update,第一个update,我们需要从A的账户余额减掉1000,第一个update ,给B的账户余额加1000.如果 第一个update执行完成以后,执行第二个update的时候失败了,最终会导致1000元不见了或者说给银行了,这个是不允许发生的情况。所以我们需要 把这两个update,用事务包裹起来原创 2020-05-20 22:09:09 · 815 阅读 · 0 评论 -
Java 发送邮件
设置授权码代码运行main方法package com.jeeplus.common.utils;import org.apache.commons.mail.HtmlEmail;public class SendMessage { public static void main(String[] args) { SendMessage sm = new SendMessag...原创 2019-12-13 00:21:26 · 496 阅读 · 0 评论 -
Ubuntu 16.04 安装 JAVA Web环境
nginxapt-get updateapt-get install nginx安装成功原创 2019-11-24 12:38:41 · 568 阅读 · 1 评论 -
java web 开发错误记录
No identifier specified for entity原因: entity 没有设置 @Id原创 2019-11-05 21:43:14 · 462 阅读 · 0 评论 -
权限管理设计
表权限表角色表用户表权限角色中间表用户角色中间表管理操作流程创建权限,一共三种权限类型,1,地址 2, 按钮 3, 字段。 所以创建权限的时候,需要先选择权限类型创建角色,数据结构简单,就角色名字就可以。给创建的角色,配置权限创建用户给用户配置角色用户通过配置角色,来获取角色对应的权限...原创 2019-11-02 19:02:49 · 283 阅读 · 0 评论 -
Java 随笔2
题目转载 2019-06-26 20:30:32 · 206 阅读 · 0 评论 -
Java 反转字符串
package com.javabase;import java.util.Arrays;/** * @Description: java类作用描述 * @Author: Bsea * @CreateDate: 2019/6/12$ 21:26$ */public class Test11 { public static void main(String[] args) ...原创 2019-06-12 22:05:14 · 192 阅读 · 0 评论 -
JAVA入门14 算法和设计模式
递归算法模拟单向链表package com.zz;/** * 单向链表 结构 * @author jiyu * */public class Node { //指向, 下一个节点 Node next; //节点的名字 String name; public Node getNext() { return next; } public void setNext(...原创 2019-09-07 16:22:01 · 254 阅读 · 0 评论 -
SpringBoot 日志 Log4j比System.out.println的优势
log4j可以自己定义日志文件的,命名规则,备份规则,存放路径,system.out默认输出到控制台log4j 可以自己定义日志的格式,使得日志可读性更加好log4j 可以灵活使用日志的级别,通过设置日志级别,可以在不同的运行环境使用不同的日志级别,从而达到只输出我们需要的日志到文件的目的。 (日志级别从小到大:debug,info,warn,error)...原创 2019-06-07 20:02:54 · 3293 阅读 · 0 评论 -
Java 注解介绍和自定义注解实现
定义java注解是java5引入的, 附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。作用注解主要是用来减少代码的冗余,用较少的代码就可以实现更多的功能.什么叫元注解(一共4个元注解)元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5...原创 2019-06-07 19:36:59 · 298 阅读 · 0 评论 -
Java 多线程学习 sleep
概述public static void sleep(long millisec)在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响要点sleep 是Thread类上的静态方法 sleep是让当前正在运行的线程休眠,所以一般写在run方法里面,如果写在外面,就是休眠其他线程(正在运行的)demopackage com.jav...原创 2019-05-29 21:43:02 · 294 阅读 · 0 评论 -
Java 多线程学习 练习题目 join方法
题目 * 1. 现在有线程 T1、T2 和 T3。你如何确保 T2 线程在 T1 之后执行, * 并且 T3 线程在 T2 之后执行?代码package com.javabase;/** * 1. 现在有线程 T1、T2 和 T3。你如何确保 T2 线程在 T1 之后执行, * 并且 T3 线程在 T2 之后执行? * @author jiyu * */public cla...原创 2019-05-29 21:16:23 · 376 阅读 · 0 评论 -
Java 线程安全和不安全
概念线程安全就是要让程序运行出我们想要的结果假设A和B同时去不同ATM上取同一张卡的1000块钱,如果是线程不安全,那么A和B可以同时取到1000块钱(两人赚大发啦),而如果线程安全呢,就只有一个人能取出来1000块钱。代码演示, 不安全package com.javabase;public class User { public int age=1; public...原创 2019-05-31 21:31:38 · 199 阅读 · 0 评论 -
Java 简单爬虫
demo1package com.javabase;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.List;...原创 2019-05-26 21:07:30 · 263 阅读 · 0 评论 -
两个线程,一个对一个变量加100次 一个对一个变量减50次
实现方式1package com.javabase;public class Test3 { static int a=1; public static void main(String[] args) { Thread t1=new Thread(new Runnable(){ @Override public void run() { // TODO Aut...原创 2019-05-26 20:37:01 · 1339 阅读 · 0 评论 -
java 线程《三》Thread 方法
#列表测试线程是否处于活动状态。 上述方法是被Thread对象调用的。下面的方法是Thread类的静态方法。package com.javabase;//实现多线程的第二种方式: 实现runnable接口public class RunableDemo3 implements Runnable { public static void main(String[] args) {...原创 2019-05-26 18:54:46 · 280 阅读 · 0 评论 -
java 线程《二》 线程的生命周期
线程的生命周期新建状态:使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。就绪状态:当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。运行状态:如果就绪状态的线程获取 CPU 资源,就可以执行 run(),此时线程便处...原创 2019-05-26 18:40:50 · 373 阅读 · 0 评论 -
JVM 内存模型
JVM 一共分5块内存线程私有的:程序计数器虚拟机栈本地方法栈线程共享的:堆方法区原创 2019-06-02 20:26:50 · 678 阅读 · 0 评论 -
java 数组和链表 数据结构的区别
数组数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。链表链表恰好相反,链表中的元素在内存中不是顺序存储的,...原创 2019-06-08 19:58:06 · 1112 阅读 · 0 评论 -
HashMap 源码
使用无参构造方法,创建一个HashMap HashMap h1=new HashMap();只是是初始化了加载因子,默认值是0.75. public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted }h1.put(“key1”,“tt”); ...原创 2019-06-08 20:46:30 · 266 阅读 · 0 评论 -
Java 学习资源
软件安装包地址:链接:https://pan.baidu.com/s/1GJ_gv19w6JpG3LXCRzPrFg提取码:nw0w原创 2019-07-07 23:48:50 · 2517 阅读 · 0 评论