java

JAVA的发展前景如何好不好自学

2020-06-23
Java前景如何?我负责任地说,Java非常有前景,因为使用Java的开发场景就非常非常多,可以说是多不胜数. 我刚参加工作的时候,使用Java开发网站应用,用JSP和Servlet,那时候J2EE已经被认为过重了,新的Java应用框架层出不穷,还用Java的Java Applet功能做过网页,当时就感觉Java这种语言非常全能. 后来,我去了Motorola,在Motorola开发一个手机平台,目标场景内是用Java开发手机应用,很不幸,这个项目中途夭折了(值得一提的是,这个项目解散之后不少美

实例讲解JAVA 模板方法模式

2020-06-23
在讲述这个模式之前,我们先看一个案例:抄题目:两个学生将老师出的题目抄写在纸上,并且写出答案 先看一个比较笨的写法 public class TestPaperA { public void testQuestion1(){ System.out.println("1+1等于几? a.1 b.2 c.3 d.4"); System.out.println("答案:b"); } public void testQuestion2(){ System.out.print

Spring Framework常用面试题及答案汇总

2020-06-23
1.什么是Spring Framework ? Spring Framework 是一个提供了完整性的编程或配置一个现代化的基于JAVA的企业应用,各种基础设施的支持. 参见官方(https://spring.io/projects/spring-framework#overview): The Spring Framework provides a comprehensive programming and configuration model for modern Java-based e

Springboot全局异常捕获及try catch区别解析

2020-06-23
今天在码代码的时候突然想到这个问题,觉得有点困惑.在网上也翻阅不少帖子其中有一个帖子给了我一个思路,其实也是解释了基础概念. 概念一:try catch 语句在try里面捕获到异常之后会进入catch子句内,执行catch内的代码. 概念二:springboot中的全局异常处理在捕获到异常之后,异常代码之后的语句是不会再运行了的 那么从我一开始思路理解开始,这个时候我觉得这2个的功能用处都是在代码出现异常情况的时候对其进行处理,且向调用者(或者就是用户)返回一个友好的提示,那这2个有啥区别呢,重

Spring Boot编写拦截器教程实例解析

2020-06-23
创建一个类并使其实现接口HandlerInterceptor 接口提供了一个请求的三个周期的拦截方法 在controller之前,返回true则放行,false反之,handler包含处理请求的controller类以及其方法 boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 在controller接受请求之后,contorller渲染视图之前,如果发生异常就不执

Java中try、catch的使用方法

2020-06-23
Java中有两种处理异常的方式,分别是用throws抛出异常.用try.catch捕获异常. try-catch 在Java try-catch语句的语法格式: try{ //代码块 }catch(Exception1 e){ //抛出异常后所要进行的操作 } 当try语句当中捕获到异常时,会将异常抛出到catch语句中匹配异常类型,当异常和catch后面的异常类型相匹配时,则catch语句将会执行. 举个最基础的例子,除数不能为0 try中的异常与catch后面的异常类型匹配的情况: try{

AndroidQ沙盒机制之分区存储适配

2020-06-23
为了让用户更好地控制自己的文件,Android Q更改了应用访问设备外部存储空间中文件的方式.Android Q用更精细的媒体特定权限来替换READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限,并且无需特定权限,应用即可访问自己在外部存储设备的文件. 1.针对应用私有文件的隔离存储沙盒 对于每个应用,Android Q 都会创建一个"隔离存储沙盒",以限制其他应用访问本应用在外部存储设备的文件.常见的外部存储设备是/sdcard.此定义具有两个优

eclipse实现Schnorr数字签名

2020-06-22
Schnorr数字签名,供大家参考,具体内容如下 一.实验目的 学习Schnorr算法在数字签名方面的使用,掌握公钥签名中最基础的签名算法-Schnorr数字签名算法的编写. 二.实验要求 1. 熟悉Schnorr算法的描述,已经其使用场景. 2. 熟悉Schnorr数字签名算法. 3. 掌握如何使用java语言,实现Schnorr签名算法. 三.开发环境/p> JDK1.8,eclipse. 四.实验原理 数字签名是指消息发送方利用特定参数产生的一段消息码,该消息码可以用来标识消息发送者真实身

详解Java 类的加载、连接和初始化

2020-06-22
系统可能在第一次使用某个类时加载该类,也可能采用预加载机制来加载某个类.本节将会详细介绍类加载.连接和初始化过程中的每个细节. JVM 和类 当调用 java 命令运行某个 Java 程序时,该命令将会启动一个 Java 虚拟机进程,不管该 Java 程序有多么复杂,该程序启动了多少个线程,它们都处于该 Java 虚拟机进程里.正如前面介绍的,同一个 JVM 的所有线程.所有变量都处于同一个进程里,它们都使用该 JVM 进程的内存区.当系统出现以下几种情况时,JVM 进程将被终止. 程序运行到最

Spring循环依赖的解决办法,你真的懂了吗

2020-06-22
介绍 先说一下什么是循环依赖,循坏依赖即循环引用,两个或多个bean相互引用,最终形成一个环.Spring在初始化A的时候需要注入B,而初始化B的时候需要注入A,在Spring启动后这2个Bean都要被初始化完成 Spring的循环依赖有两种场景 构造器的循环依赖 属性的循环依赖 构造器的循环依赖,可以在构造函数中使用@Lazy注解延迟加载.在注入依赖时,先注入代理对象,当首次使用时再创建对象完成注入 属性的循环依赖主要是通过3个map来解决的 构造器的循环依赖 @Component publi

SpringCloud让微服务实现指定程序调用

2020-06-22
我们在做微服务时,有时候需要将微服务做一些限制,比如只能我们自己的服务调用,不能通过浏览器直接调用等. 我们可以使用spring cloud sleuth,在应用调用微服务时通过Tracer产生一个traceId,并通过request设置到header里面, 然后sleuth会将该traceId在整个链路传递,我们在微服务中定义一个拦截器,取到header里面的traceId并和链路中的traceId比较, 如果相等,则表明是我们自己的应用调用,拦截器通过,否则这次请求被拦截 代码详见githu

在SpringBoot中整合使用Netty框架的详细教程

2020-06-22
Netty是一个非常优秀的Socket框架.如果需要在SpringBoot开发的app中,提供Socket服务,那么Netty是不错的选择. Netty与SpringBoot的整合,我想无非就是要整合几个地方 让netty跟springboot生命周期保持一致,同生共死 让netty能用上ioc中的Bean 让netty能读取到全局的配置 整合Netty,提供WebSocket服务 这里演示一个案例,在SpringBoot中使用Netty提供一个Websocket服务. servlet容器本身提

eclipse实现DSA数字签名

2020-06-22
DSA数字签名,供大家参考,具体内容如下 一.实验目的 在掌握了ElGamal和Schorr数字签名算法的基础上,进一步地学习和掌握DSA签名算法.深入地理解该算法是如何降低了签名信息的长度(当其中一个重要参数 选为512bit的素数时,ElGamal签名的长度为1024bit,而DSA中通过160bit的素数 可以将签名的长度降低为320bit),从而减少了存储空间和传输带宽. 二.实验要求 4.学习DSA数字签名算法. 5.掌握如何使用Java BigInteger类,简单实现最基础的DSA

详解spring中aop不生效的几种解决办法

2020-06-22
先看下这个问题的背景:假设有一个spring应用,开发人员希望自定义一个注解@Log,可以加到指定的方法上,实现自动记录日志(入参.出参.响应耗时这些) package com.cnblogs.yjmyzz.springbootdemo.aspect; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy

Java Scoket实现双向通信代码详解

2020-06-22
你好我是辰兮,很高兴你能来阅读,本篇总结了Java Scoket类的相关知识,并且整理了实现双向通信的相关代码也有案例实现截图,分享获取新知,大家一起进步. 一.网络通信 网络通信,在网络中程序(发送者)与程序(接受者)之间的数据交互. 通信要素①ip + 端口号 ②传输协议 java.net包: 包含了Java用于网络通信所需的类. ServerSocket类,用于表示网络服务 创建网络服务(创建ServerSocket对象) //构造器 public ServerSocket(int por

如何基于spring security实现在线用户统计

2020-06-22
1.修改web.xml,需要在web.xml描述文件中配置中使得o.s.s.web.session.HttpSessionEventPublisher生效,这样servelt容器将会通知Spring Security session生命周期的事件(通过HttpSessionEventPublisher) <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </lis

androidQ sd卡权限使用详解

2020-06-22
默认情况下,如果应用以 Android Q 为目标平台,则在访问外部存储设备中的文件时会进入过滤视图.应用可以使用 Context.getExternalFilesDir() 将专用于自己的文件存储在特定于自己的目录中. 1. 临时停用分区存储行为: 以 Android 9(API 级别 28)或更低版本为目标平台. 如果您以 Android Q 为目标平台,请在应用的清单文件中将 requestLegacyExternalStorage 的值设为 true. <manifest ... >

eclipse实现可认证的DH密钥交换协议

2020-06-22
可认证的DH密钥交换协议,供大家参考,具体内容如下 一.实验目的 通过使用密码学库实现可认证的DH密钥交换协议(简化STS协议),能够编写简单的实验代码进行正确的协议实现和验证. 二.实验要求 1.熟悉DH密钥交换算法基本原理: 2.理解原始DH密钥交换算法存在的中间人攻击: 3.理解简化STS协议抗中间人攻击的原理. 4.掌握使用java编写实验代码进行正确的简化STS协议实现和验证. 三. 开发环境 JDK 1.7,Java开发环境(本实验采用Windows+eclipse作为实验环境),要

Springboot项目基于Devtools实现热部署步骤详解

2020-06-22
1.在pom.xml(如果是多模块,则此pom根据需要可设为具体模块)文件中添加 <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-devtools</artifactId>    <scope>runtime</scope>     <optional>true</option

深入分析JAVA 建造者模式

2020-06-22
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 一个 Builder 类会一步一步构造最终的对象.该 Builder 类是独立于其他对象的. 介绍 意图: 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. 主要解决: 主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个