Java
文章平均质量分 66
记录Java相关知识与实战例子。
申未曲
好好思考,努力生活。
展开
-
从0到1开发一个简单的RPC框架
RPC就是远程过程调用,在工作中很多需求背景都会有多个服务器,有服务器A、服务器B、服务器C。有时候就会需要服务器B调用服务器A上的某个方法,这时候就需要用到RPC了。市面上也有很多成熟的RPC框架,在我国常用的就是Dubbo。因为它有比较好的社区动态,也有比较成熟的案例项目。Dubbo、Motan、gRPC、Thrift,这四种是比较常见的RPC框架RPC开发商生态/社区活跃度适配语言Dubbo阿里√Motan新浪×JavagRPCGoogle√Thrift。原创 2023-02-07 11:14:53 · 660 阅读 · 0 评论 -
记录Java序列化关键字transient
1、序列化就是将对象写入io流的过程。2、反序列化就是从io流中提取对象的过程。这是在网络传输的过程中需要必须进行的操作,也是为了网络传输的安全性。所以建议每个JavaBean都需要进行序列化操作。通常我们序列化是让某个对象实现Serializable接口,就会自动序列化。有些场景我们传输对象的时候不能对所有的字段进行序列化。比如一些敏感的字段:身份证、密码等等。那么我们就只需要在不要序列化的变量前面加上transient关键字进行修饰就可以了看代码import java.io.*;pu原创 2022-01-26 16:49:52 · 118 阅读 · 0 评论 -
记录volatile的用法
volatile的玩法一、作用1、保证变量在内存中对线程可见。2、禁用指令重排。二、用法1、可见性public class VolatileTest { private static volatile int count = 0; public static void increase() { count++; } public static void main(String[] args) { for (int i = 0;原创 2022-01-26 15:14:39 · 234 阅读 · 0 评论 -
SpringBoot引入本地jar包,打包成war并成功部署。
在做项目的时候,有时需要引入第三方Jar包来完成指定的功能。原创 2021-11-05 11:32:43 · 1352 阅读 · 0 评论 -
springboot + thymeleaf页面无法访问的问题
1、访问html总是404查了各种方法。1、有说springboot 和 thymeleaf版本不匹配的(我是springboot.io自动创建的,所以不是这个问题)2、自己打断点,跟着看,也看不出什么东西3、查看application.properties文件,取消了手动设置的suffix和prefix(依旧不行)查看了各种方式后,终于让我发现问题所在了!!之前自以为是的,在application.properties中配置了这一行代码:spring.thymeleaf.servlet.co原创 2021-05-25 14:53:40 · 3076 阅读 · 4 评论 -
如何用Java获取并操作系统进程?
声明:本篇文章主要记录如何使用 Java查询Windows电脑的进程,并解析结果,显示于浏览器上。使用SpringBoot没有写前端框架,简单的生成一个Table显示在浏览器上。后续有空,就写个前端,使用仪表盘显示。内容:代码主要使用了dos的几个命令:查找进程列表命令:tasklist根据pid删除进程命令:tasklist /f /pid 123456查询当前系统的内存命令:wmic ComputerSystem get TotalPhysicalMemory代码:查询进程代码: p原创 2021-03-11 14:57:27 · 2392 阅读 · 0 评论 -
哎哟!网页版聊天室新鲜出炉!
基于WebSocket的简易聊天室,开发完成不过还是脱离了原来对期的技术构想。等完成了优化,打算去研究,换另一种方式。技术就是需要不断学习~话不多说,开始讲讲用到了什么技术技术框架用Maven管理jar包SSM框架安全框架(shiro)前端框架(vue+element-ui)数据库用的是Mysql首先逻辑是这样的进入系统首先会被shiro拦截,判断是否有认证和权限能访问该页面,如果有认证没有权限会跳转403页面。如果没有认证,直接跳转登录页面。登录呢,你得有账号,所以你就去注.原创 2020-07-10 10:15:49 · 664 阅读 · 0 评论 -
自我学习之反射机制
JAVA反射机制原创 2020-08-13 12:34:52 · 152 阅读 · 0 评论 -
如何理解按位与(&)、按位或(|)、按位异或(^)?
今天做题遇到了一道题如下:int x=3,y=6,z=0;z = x ^ y << 2;那么z的值等于多少呢?它的二进制又是多少呢?这一道题就涉及到了按位异或(^)运算符和左移运算符<<接这个式子的优先顺序是先计算y<<2,再计算x^y。那么就理解一下y<<2等于多少?1.按位异或(^)y=6,可以将6转换为2进制为00110,那么左移两位就为11000,其十进制为24。那么就接着计算x^y了,x的二进制为00011,y的二进制为..原创 2021-02-02 16:52:29 · 1632 阅读 · 0 评论 -
早睡身体好!SpringAOP学习笔记
什么是SpringAOP?AOP(Aspect Oriented Programing)面向切面编程。在整个程序贯穿之下,存在N个切点,而切点会连接着横切面。若程序执行到了连接点后,就会进入到横切面中执行你的逻辑增强。AOP相关注解@Pointcut该注解是指定一个切点,拦截你需要拦截的东西进入切面,这里介绍两种常用的表达式:execution()和annotation()execution(* * com.service..*(..))该表达式的意思是,监听了com.service原创 2021-01-12 15:15:20 · 305 阅读 · 0 评论 -
利用Java实现哲学家进餐问题并提供解决方案~
哲学家进餐问题,是并发执行共享资源的代表性问题。某天有五位哲学家围在一张桌子上吃饭,桌子上有五根筷子,每个人的左手边都有一只筷子。吃饭嘛就得有两根筷子才能吃,但是每个人都先抢左手筷子再抢右手筷子,抢完左手筷子体力不行了休息一秒再接着抢,不出所料,右手筷子已经被别人给抢了,总所周知每个哲学家都轴得很就是不让,大不了一起“饿死”。此时就产生了死锁。如何用java重现这个场景呢?通过面向对象的思想就很简单。这个场景中,主要有了两个对象,筷子与哲学家。public class ChopSticks.原创 2020-11-11 15:07:39 · 424 阅读 · 0 评论 -
Java学习之线程与多线程
1.什么是线程? 每个进程都有至少一个线程,也就是说线程是进程内的最小单位量。360安全卫视就是进程,木马查杀、垃圾清理就是360安全卫士中的线程。说到这,就得说明线程的串行与并行。线程串行,则木马查杀的时候就不允许垃圾清理,在时间上是不重叠的。线程并行,则是木马查杀和垃圾清理可以同时进行,基本上是在同一时间下执行的。2.线程的使用方法在JAVA中,有几种使用线程的方式。1.继承Thread类,重写run方法。2.实现Runnable接口,重写run方法。3.继承Callable类,原创 2020-06-16 10:56:30 · 160 阅读 · 0 评论 -
JVM调优学习之GC垃圾回收器
学习马士兵老师的课程,根据笔记自己得出以下自己的理解,继续学习后续课程后,再来添加笔记。什么是垃圾?如何定义垃圾?栈中 ,每个方法一个栈帧,每个方法结束后,自动释放。这时,堆中有堆空间没有被引用,但是每个堆空间都不允许被访问,这些堆空间就是垃圾。c和c++都是手工释放垃圾。这就存在几个问题:1.如果堆中的空间一直没有释放,此时这个空间一直被占用状态,这就会导致内存泄漏,泄漏得多了,就导致了内存溢出。2.如果释放了多次,就可能会导致误删。例如:程序1第一次释放空间后,程序2又访问了该空间,.原创 2020-09-12 13:06:11 · 163 阅读 · 0 评论 -
初学Redis之Redis学习笔记之基础命令篇
这篇开始学习Redis,与spring boot并行学习。安装redisredis github选择与自己电脑匹配的版本,我这边选择ZIP包解压后,配置环境变量(这样就不需要输入redis路径啦,一劳永逸~)配置完成后,启动redis打开cmd,输入以下命令redis-server.exe redis.windows.conf测试需要重新打开一个cmd,不能关掉第一个redis-cli.exe -h 127.0.0.1 -p 6379注意:6379是redis默认端口到这,安装就.原创 2020-09-17 16:15:20 · 84 阅读 · 0 评论 -
spring全家桶之Jdbc必知必会的内容
如何快速的创建Spring boot项目?可以通过spring.如何运行Spring Boot?方法一在SpringBootApplication中直接运行方法二通过maven命令导出jar包mvn clean package -Dmaven.test.skipjava -jar ***.jar 执行jar包第二种方式在生产、测试环境中运行比较方便。...原创 2020-09-17 11:13:29 · 163 阅读 · 0 评论