java
ByteFlys
这个作者很懒,什么都没留下…
展开
-
【Android】Analysis of OnErrorReturn in RxJava
Analysis of OnErrorReturn in RxJava原创 2024-08-28 09:38:56 · 609 阅读 · 1 评论 -
【Kotlin】在Kotlin项目中使用AspectJ
AOP编程在Java开发中是一个非常火热的话题,最著名的库为AspectJKotlin项目中,通过Gradle插件,也能够使用该库,这是我们下面讲解的重点由于AspectJ的原理是在预编译阶段,通过插件修改代码,生成代理对象属于编译阶段的功能,因为非常依赖编译工具的版本这里用的版本是Gradle8.7,如果不兼容记得调整版本号Gradle脚本代码,用的也是Gradle8.7+KotlinScript的语法,记得根据版本调整。原创 2024-08-19 10:06:37 · 343 阅读 · 0 评论 -
【加密与解密】【09】GPG Client签名流程
GPG客户端是实现PGP加密协议的一套客户端程序,可用于加密或签名原创 2024-07-03 22:46:59 · 216 阅读 · 0 评论 -
【加密与解密】【05】数据加密知识体系
包括Java加密套件使用方式,BouncyCastle的CommonsCodec的使用。公钥,私钥,对称秘钥,秘钥协商,摘要,签名,证书,指纹,秘钥库,CA,自签等。包括加密算法的分类,加密算法的作用,加密算法的优缺点,加密算法应用场景。包括SSL具体工作原理,SSL代码实现,秘钥和证书工具的使用。PGP协议,GPG客户端。原创 2024-06-24 17:47:59 · 215 阅读 · 0 评论 -
【加密与解密】【04】Java安全架构
MessageDigest(摘要,MD5,SHA)Signature(数字签名和验证)Certificate(证书)原创 2024-06-05 22:24:10 · 238 阅读 · 0 评论 -
【加密与解密】【03】加密系统
术语RSA,加密算法,同时也是一个公司的名称,该公司制定了PKCS公钥加密标准PKI,Public Key Infrastructure,公钥基础设施PKCS,Public Key Cryptography Standards,公钥加密标准X.509,一种公钥格式规范PKIX,基于X.509规范实现的公钥基础设施实现协议CA,Certificate Authority,认证中心CR,Certificate Repository,数字证书库PKI系统构成认证中心数字证书库秘钥备份及原创 2024-06-04 18:31:32 · 185 阅读 · 0 评论 -
【加密与解密】【02】加密算法类型
单向加密算法(MD5,SHA,校验数据完整性)非对称加密算法(RSA算法,数据传输加密)对称加密算法(DES,数据存储加密)非对称加密安全性更高。对称加密计算效率更高。原创 2024-06-04 18:30:35 · 195 阅读 · 0 评论 -
【加密与解密】【01】网络安全体系
网络通信OSI模型物理层(Physical)链路层(DataLink)网络层(Network)传输层(Transport)会话层(Session)表示层(Presentation)应用层(Application)安全服务认证鉴别服务访问控制服务数据保密性服务(数据不被破解)数据完整性服务(数据不被篡改)抗否认性服务(已发生操作不可抵赖)安全机制认证机制数字签名机制访问控制机制路由控制机制加密机制业务流填充机制数据完整性机制公证机制TCP/IP安全体系原创 2024-06-03 20:14:55 · 364 阅读 · 1 评论 -
【Maven】自定义仓库位置不生效
Maven可通过配置settings文件中的localRepository选项,来指定发布目录。对于第三方程序,比如IntelliJ Idea,或者Gradle,可能并不会生效。但该配置,只对maven程序自身有效。原创 2024-04-14 09:00:00 · 432 阅读 · 0 评论 -
【Java】Java中的引用类型
通过new直接创建的对象,只要该对象还可以被其它对象使用或访问到,就不会被回收。原创 2023-11-01 22:55:39 · 615 阅读 · 0 评论 -
【Java】Stream使用方式详解
【Java】Stream使用方式详解原创 2023-03-22 16:23:15 · 168 阅读 · 0 评论 -
【SOAP】Java通过SOAP框架将Xml对象转为字符串
它被广泛应用于传统的WebService服务框架当中,如今正逐渐被更加简单灵活的JSON/RESTful组合取代。代码如下,这里的Object必须被@XmlRootElement注解,表示它是一个XmlObject。SOAP是一套用Xml来表示对象的协议规范,因为对象想要在网络中传输必须转换为字符串。Java SOAP最麻烦的地方在于,XmlObject不能直接视为字符串来进行观察。我们无法在第一时间知道xml内容,必须手动将XmlObject输出为String。原创 2022-09-27 10:01:20 · 994 阅读 · 0 评论 -
【ONVIF】ONVIF密码加密方式解析
所以特地总结一下,供大家学习,加密方式属于通用知识,不仅适用于摄像头,也适合与客户端、服务端等领域。今天在实现android版本ONVIF协议时,发现它的加密方式,是一个很好的学习案例。ONVIF是一个国际通用的摄像头通信控制协议,一般主流的设备厂商都支持该协议。这里我们把摄像头当作服务端,因为它内置了一个Http服务。原创 2022-09-26 17:43:51 · 2147 阅读 · 0 评论 -
【JVM】Java虚拟机CPU占用率100%问题,排查过程记录
原博客转载自:https://www.cnblogs.com/fengweiweicoder/p/10992043.html在平时开发过程中,经常会碰到Java进程占用cpu过高的现象,本篇将简单记录一下自己分析该类问题的步骤。1.使用 top -p <pid> 命令(<pid>为Java进程的id号)查看Java进程的cpu占用:该Java进程占用cpu达到92.2%。2.使用 top -Hp <pid> 命令(&l转载 2022-05-07 09:29:18 · 2744 阅读 · 0 评论 -
【Nginx】Nginx,正向代理,反向代理,负载均衡
Nginx这个词,凡是有点开发经验的,应该经常听说前端用到它,后台用到它,运维用到它,做音视频还是要用到它那么,它到底是个什么东西呢Nginx全称EngineX,翻译成中文就是X引擎,一副牛逼轰轰的样子,看起来就很牛逼Nginx最核心的功能,就是作为代理服务器来使用,同时还提供了一些常用的周边配套功能Nginx常用的功能包括 正向代理服务器,为客户端提供代理,当客户端无法直接访问服务器时,可通过客户端 - Nginx - 服务端的模式来访问服务器 反向代理服务器,为服务端提供代理,当服务端压原创 2022-05-04 19:01:02 · 1916 阅读 · 1 评论 -
【IDE】IntelliJ Idea或Android Studio,设置默认不折叠代码
Idea默认代码是折叠的,这有时候用起来不太方便,可以通过以下方式来关闭Settings - Editor - General - Code Folding - Show code folding outline通过打钩,就可以设置全部关闭,或是开启个别项目原创 2022-04-24 10:22:39 · 3485 阅读 · 0 评论 -
【Java】【网络通信】UDP收发消息
这里以两个客户端为例,一个客户端发广播,一个客户端收到广播后回消息由于UDP默认是在主线程收发消息的,这会阻塞主程序,所以这里做了一点封装,将通信功能放到子线程代码中线程和异常处理,用到了一些工具类,替换成自己的代码就行了 import com.easing.commons.java.code.Console; import com.easing.commons.java.thread.Threads; @SuppressWarnings("all") public class ZZZ {原创 2022-04-09 15:35:44 · 3047 阅读 · 0 评论 -
【Java】【MQTT】QOS参数作用详解
什么是QOSQOS全程Quality of Service,即服务质量,代表MQTT消息发送接收的准确率由于MQTT是标准协议,QOS的取值也有三种常量可选QOS含义 public class QOS { //最多一次,Sender只发送一次消息,Receiver收不到就算了 //这个方案的缺点是,Receiver有可能收不到消息 public static final int AT_MOST_ONCE = 0; //至少一次,Sender发送多次消原创 2021-12-24 10:43:43 · 4150 阅读 · 0 评论 -
【Java】【断点续传】大文件断点续传实现方案和原理
实现思路 断点续传是Http协议自带的功能,通用的文件下载服务,都支持这个特性 比如Tomcat服务器,NodeJs服务器,SpringBoot内置的FileSystemResource,都支持该特性,实现起来一般几行代码即可 断点续传的工作原理大致如下 首先,客户端获取文件总长度,客户端在请求头中设置Accept-Encoding=identity 然后服务端会在回复头中返回Content-Length,即文件总长度 客户端在下载文件时,可以在请求头中设置range=bytes=start-原创 2021-12-23 17:59:06 · 921 阅读 · 0 评论 -
【Java】【文件上传】SpringBoot去除文件大小限制
错误原因SpringBoot默认限制了文件上传的最大大小为1M如果附件大于这个大小,就会上传失败,并抛出MaxUploadSizeExceededException修改方法在application.properties中添加以下配置 #去除附件大小限制 spring.servlet.multipart.max-file-size = -1 spring.servlet.multipart.max-request-size = -1 server.tomcat.max-swallow-siz原创 2021-12-23 11:52:50 · 1857 阅读 · 0 评论 -
【IDE】【IDEA】批量将GBK编码的工程,转换为UTF8编码的工程
转换原理原理非常简单,就是以GBK编码读取文件中的字符串再将字符串转为UTF8编码的字节,重新写入文件即可转换工具这里已经写好了转换程序,大家点击批处理文件,直接启动JAR包即可程序启动时需要指定转换目录,大家选择源码目录就行了这个程序会转换所有的文件,所以不要把非文本类的文件也放到目录下面比如所选目录包含Jar包,Jar包也会被转换,就没法正常使用了工具下载GBK2UTF8.zip...原创 2021-12-16 13:55:17 · 2397 阅读 · 0 评论 -
【语言】C++和Java的不同开发体验,NDK开发一年后的感悟
前篇都说C++难,那么C++到底难在哪里,我来说句公道话首先,只要大家愿意学,没有克服不了的问题,还没难道学不会,不能用的地步其次,难是相对的,相对于Java和Javascript这些语言来说,C++使用上确实是麻烦很多的,这点不可否认语言特性不同C++相对其它高级语言的最大的特点,就是指针和引用,资源释放指针和指针释放,本身只能算是比较麻烦,不算难但当一个工程变大,对象之间关系变复杂,使用的库增多,又混合多线程使用时,它真的就是一大难点了因为此时,很多人已经很难弄清楚,别的地方会不会还在使原创 2021-09-06 11:41:12 · 235 阅读 · 0 评论 -
【编程思想】【模块化】模块化的三个层次
源代码分离不同的代码,放在不同的目录,或放在工程下的不同模块,分开管理这点初学者基本都能做到功能分离不同模块的功能定位非常清晰,没有交叉混乱的情况当工程规模变大,需求变得复杂,或者有很多奇葩要求时,很多人就做不到这一点了依赖分离当我们不需要使用某个模块时,可以直接在打包时去除整个模块大多初中级工程师做不到这一点,大多工程师的模块化,只是将不同功能,不同实现写到不同的模块主模块还是会使用到所有的子模块代码,只是通过if-else或switch控制调用哪个子模块代码而已绝对的依赖分离,应当是原创 2021-08-08 16:15:02 · 655 阅读 · 0 评论 -
【Java】【IDE】IntelliJ Idea出现非法字符【\ufeff】错误
BOM介绍BOM全称Byte Order Mark,即字节顺序标记它是一个特殊的标记字符,用在文件开头,表示字符的编码类型和字节顺序而在UTF-8编码中,它的第一个字节就起到了这样的作用,并不需要BOM这样的字符BOM的出现,是为了解决识别Unicode字符具体编码的问题,后来微软在UTF-8字符的编码上,也使用了这样一种方案,但这是不标准的,标准的UTF-8是不带BOM的IntelliJ Idea使用的标准格式的UTF-8,之所以会出现这样的错误,是因为我们可能从其它环境导入了UTF8-BOM格原创 2021-06-15 12:42:20 · 1867 阅读 · 1 评论 -
【Java】【项目发布】Spring项目打包
如果打包配置发生变化,要重新打包,请先删除旧的打包配置,以及META-INFO所在文件夹原创 2021-06-11 19:00:38 · 350 阅读 · 0 评论 -
【Java】多层for循环嵌套时,break指定循环
Java提供了标签功能,在执行跳转语句,如break/continue时,可以通过标签指定跳转到哪个位置 breakPoint1: for (int i = 0; i < 100; i++) breakPoint2: for (int j = 0; j < 100; j++) breakPoint3: for (int k = 0; k < 100; k++) { //没原创 2021-06-08 15:49:22 · 2898 阅读 · 0 评论 -
【Java】【注解】获取字段上的注解为空
注解只有声明了RetentionPolicy.RUNTIME,才可以在运行时通过Field.getDeclaredAnnotations()等方法获取到,否则只相当于一个普通的标记,注释而已 @Retention(RetentionPolicy.RUNTIME) @Target(FIELD) public @interface Layout { UiLayout value() default UiLayout.Flow; }...原创 2020-06-10 16:30:00 · 1854 阅读 · 1 评论 -
【Java】【Json】Gson序列化时忽略特定字段
在字段前加transient关键字,gson就会在序列化时忽略这个字段transient关键字本是配合Java自带的Serilizable序列化接口使用的,gson直接借用了这个特性 public class TreeNode<T extends TreeNode> { public String id; public String parentId; ...原创 2020-04-08 16:21:40 · 2814 阅读 · 0 评论 -
【Java】【Gradle】Gradle构建SpringBoot项目,Gradle模块化管理
为什么我要使用Gradle 我是个Android开发者,对Gradle接触较多,较为熟悉,使用Gradle对我问题不大 Gradle比Maven更加简洁灵活,代码看起来更加美观 我爱研究探索,喜欢折腾,想尝试新事物。用Gradle构建SpringBoot项目是我自己想出来的,后来去网上一查,还真的可以这样做 用了一段时间熟悉了之后,发现还是挺方便的。但是Idea中的Gradle和Stud...原创 2020-03-19 20:45:05 · 2919 阅读 · 1 评论 -
【Java】【IDE】解决IntelliJ Idea控制台乱码问题
打开idea/bin/idea64.exe.vmoptions文件,添加以下配置 -Dfile.encoding=UTF-8原创 2020-03-19 15:33:13 · 347 阅读 · 0 评论 -
【Java】【正则表达式】去除字符串中的非数字字符
//将异常的字符串转化为整数 public static Integer abnormalTextToInt(String text, Integer defaultValue) { try { return Integer.parseInt(Pattern.compile("[^0-9]").matcher(text).replaceAl...原创 2019-10-23 10:13:56 · 7936 阅读 · 0 评论 -
【Java】【序列化】gson实现json美化
GsonBuilder builder = new GsonBuilder(); builder.setPrettyPrinting(); gson = builder.create(); //如果是对象,直接进行序列化即可 gson.toJson(object); //如果是没有美化的文本,转成JSONObject再序列化即可 gson.toJson(new JSONObjec...原创 2019-10-19 11:50:54 · 844 阅读 · 0 评论 -
【Java】【Spring】SpringBoot中添加拦截器
添加一个拦截器,用于拦截token过期的请求,直接返回错误提示,不交给Controller处理public class TokenInterceptor implements HandlerInterceptor { //一小时内不操作,则token失效 public static final long tokenExpireDuration = 1 * 60 * 60 * ...原创 2019-07-09 10:59:37 · 2907 阅读 · 0 评论 -
【Java】【Spring】SpringBoot中添加过滤器
添加一个过滤器,设置请求和响应编码为UTF-8public class BaseFilter implements Filter { @Override @SneakyThrows public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterCha...原创 2019-07-09 10:52:49 · 2388 阅读 · 0 评论 -
【Java】【Spring】SpringBoot中添加监听器
添加一个监听器,在项目完全启动后,打印项目地址@Componentpublic class ContextListener implements ApplicationListener<ApplicationReadyEvent> { @Override @SneakyThrows public void onApplicationEvent(Appli...原创 2019-07-09 10:45:57 · 3226 阅读 · 0 评论 -
【Java】【通信安全】怎么保证http请求的安全性
要保证http请求的安全性,首先我们得知道,http有哪些安全隐患,再针对每个问题,寻找对策。先有问题,才有解决方法,不要空谈技术。假设我们的电脑上被人偷偷安装了窃听软件,或者我们使用的路由器,代理服务器被人安装了抓包软件,这样我们的ip,所有通信数据,都是可以被别人轻松捕获的。网页源码只需打开浏览器控制台,所有人都可以看到。如果是Java代码,也可以通过反编译看到。现在,我们的ip,通信...原创 2019-07-02 16:54:27 · 3079 阅读 · 0 评论 -
【Java】【Spring】Spring中监听器,过滤器,拦截器区别
监听器:监听项目启动和关闭过滤器:监听请求,对编码,参数等做些简单处理,一般用于处理全局配置拦截器:可以监听和拦截请求,可以在Controller处理前后进行操作,也可以阻断Controller的执行,还能对请求回复进行修改功能全面,一般用于处理业务逻辑,比如判断token是否有效,对报错时的Response进行修改等等...原创 2019-07-07 16:33:22 · 944 阅读 · 0 评论 -
【Java】【正则表达式】利用正则表达式去除首尾重复字符
去除开头重复字符String str = "000000021";str = str.replaceAll("^(0+)", "");去除结尾字符String str = "210000000";str = str.replaceAll("(0*)$", "");原创 2019-06-21 16:28:48 · 1491 阅读 · 0 评论 -
【Java】【IDE】Eclipse调用外部工具打开文件
Eclipse调用外部工具打开文件原创 2018-05-23 12:25:28 · 1426 阅读 · 0 评论 -
【Java】【Spring】SpringBoot中添加异常处理器
异常处理器可以在服务器代码报错,路径不存在,请求方法错误,参数校验失败时,对Response进行拦截,将指定的提示信息返回给客户端@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(BindException.class) @ResponseStatus(HttpStatus.BA...原创 2019-07-09 11:10:35 · 485 阅读 · 1 评论