java
文章平均质量分 60
缘之妙不可言
java
展开
-
java-native方法,通过JNI实现c的动态库的加载,实现软硬件之间的交互,跨平台的基础之一
java跨平台是java一个具有十分优势的语言特性,为什么能跨平台?我想除了java的jvm本身在语言设计时,采用了字节码这样一种能运行在虚拟机上的指令占了50的功劳,还有50%来自基于C的对不同平台硬件的优良支持。今天我了解学习了java的一个关键字:native,让我对java的理解又多了一些。从概念上:native是一个修饰方法的关键字,被修饰的方法叫本地方法。这些方法都是非JAVA语言实现的方法,可以去调其它语言的库类,与abstract关键字相似却又相反。为什么要有native关键字呢,因为原创 2021-12-28 09:21:21 · 778 阅读 · 0 评论 -
库存生产-实用sql知识:如何在保证去重分组的情况下获取组内最新数据(可按时间排序),distinct +group by +嵌套结果 的联合妙用
这是花了一个小时实践出来的!网上有特别多的distinct +group by 的比较区别的,几乎没有几篇文章说他们的联合妙用。步入正题,先说我发现妙用的基于实际问题:库存与入库单的一个关系业务:在统计库存时,需要带出与库存相关的且是最近的入库单的一个入库人作为库存数据的一个属性那么问题来了,业务中一个库存记录可能会存在多张入库单与之关联,要去取最新的入库单的信息与库存信息关联,假设关联入库单信息为lastInUserName(最后入库人),不可避免的查出一个重复的库存记录,但实际上数据库只有一条这原创 2021-11-04 23:57:05 · 937 阅读 · 0 评论 -
雪花算法之唯一ID生成器理解
雪花算法基本情况雪花算法是一个分布式的唯一ID生成器。它应该具有高并发,以及高性能优点。基于时间戳,ID具有有序性,同时分布式下机器间时间差异过大(类似同一台机器时间回拨,一定会重复),会导致重复ID。基于机器码和操作中心id,ID具有不可重复性。它的ID是8字节64bit的一个Long长整型数据。ID基本组成ID基本组成:不用: 1bit,因为最高位是符号位,0表示正,1表示负,所以这里固定为0时间戳: 41bit,服务上线的时间毫秒级的时间戳(为当前时间-服务第一次上线时间),这里原创 2021-08-10 09:21:01 · 1779 阅读 · 0 评论 -
开发技巧-使用SQL与Navicat快速导出一个自定义的MYSQL数据库字段表格(数据字典)为Word或Excel
1.基于MYSQL快速形成数据字典表格(数据库字段表格元信息)的需求在书写数据库开发文档或相关文章时,总是可能应用到所设计的数据库元信息,形成一个科学的数据字典表格,相比传统的在Word、Excel中手动录入元信息,这样既麻烦且数据字典不具备易扩展性。2.利用SQL+Navicat形成解决方案我们知道在mysql中,一切表的元信息都存在于information_schema中。我们只需要书写一个查询SQL形成自定义查询结果即可:可按需求修改SQL-- 快速生成表及其字段信息并形成wordSEL原创 2021-03-29 14:35:28 · 530 阅读 · 1 评论 -
springboot集成swagger2,以及swagger-ui.html访问404的问题解决:拦截器造成的
404即视为资源不存在。那么我们可以认为有两种情况发生(swagger里):1.真的不存在2.被后台拦截了我遇到的是后台拦截了:配置了springMVC的拦截器需要把swagger资源取消拦截:在拦截器重写方法定位swagger-ui.html的资源链接/** * 解决swagger被拦截的问题 * @param registry */ @Override public void addResourceHandlers(ResourceHandl原创 2020-10-14 15:49:49 · 2517 阅读 · 0 评论 -
java-Set集合源码学习
Set集合Set注重独一无二的性质,该体系集合用于存储无序(存入和取出的顺序不一定相同)元素, 值不能重复。对象的相等性本质是对象hashCode值(java 是依据对象的内存地址计算出的此序号)判断的,如果想要让两个不同的对象视为相等的,就必须覆盖Object的hashCode方法和equals方法。实现类有:HashSet,(一张hash表)哈希表边存放的是哈希值。HashSet 存储元素的顺序并不是按照存入时的顺序(和List显然不同)而是按照哈希值来存的所以取数据也是按照哈希值取得。元原创 2020-06-18 08:53:20 · 310 阅读 · 1 评论 -
java-HashMap源码学习
阅读提示:HashMap源码在不同版本情况下,具体源码可能不一样(优化问题),但功能几乎是相同的(博主1.8)什么是Hash?hash表是一种数据结构,它拥有惊人的效率,它的时间复杂度低到接近O(1)这样的常数级。hash表的实现主要是:1.计算存储位置的hash函数。2.处理哈希冲突的方法。3.hash的物理存储。hash函数:它的目的是通过一个key选出(映射)一个唯一的存储地址。最常见的hash函数:f(key)=a*key+b这里a,b为常数(不为0),f(key)就是计算出的哈原创 2020-06-17 23:12:16 · 326 阅读 · 0 评论 -
java-List集合的源码分析(数据结构方面,源码注释方面),迭代器快速失败机制
List实现了Collection接口,产生三个子类:ArrayList,LinkedList,Vector文章包含解释方面:数据结构方面,源码注释方面&迭代器快速失败机制方面1—基于源码的数据结构基于源码的数据结构,我们先给出如下比较结果:ArrayList&Vector是基于数组的实现。那么他们:-基于数组下标的快速查找功能-数据插入费力,因为要移动一大段数据为新数据提供插入位-数组可能溢出(已经被开发者利用grow()扩容解决)必须是一片连续内存空间注解原创 2020-06-15 00:12:00 · 284 阅读 · 0 评论 -
探究java-JVM的五步(三步)类加载机制(包含类加载过程的一些代码书写,如类加载代码)
前言:写了不少java代码,以前一直都是关心java程序跑起来后的情况步骤,今天我们就来探究一下:在java程序还是一个个存在于静态.class文件中的类的时候,JVM是在怎么将它们变成一个个存在于内存的对象的。为此,JVM专门有一个类加载机制,用于处理.class文件加载到内存这个过程。正文:JVM类加载机制分为5个步骤:1.加载2.验证3.准备4.解析5.验证...原创 2020-06-12 01:03:33 · 350 阅读 · 0 评论 -
java图形界面设计 swing之JTable表格的创建使用-添加鼠标监听
最近用java设计了一个桌面管理系统,在数据展示模块的时候遇到了一点问题,找不到好的展示方式最后发现了JTable这个类,主要涉及这个类的构造与使用注意:JTable都需要在JScrollPane中才能显示//必须加这一句JScrollPane jsp = new JScrollPane(table);先说构造:我用到的有两种:1.使用默认表模板的:new JTable(5,6);能生成一个5行6列的表格,表头列名是A-Z的大写字母,类似Excel2.使用自己的指定模板new原创 2020-05-27 15:13:23 · 1503 阅读 · 0 评论 -
java简单的死锁检测(转载线下代码)
一个简单的死锁检测功能、1.探测出死锁主要是:java.lang.management类的关于线程的系列方法一个线程监控类ThreadMXBean x=ManagementFactory.getThreadMXBean();使用x的方法findDeadlockedThreads();得到发生死锁线程的ID通过ID获取线程信息ThreadInfo发送到处理类package com....原创 2020-05-01 11:22:18 · 446 阅读 · 0 评论 -
java死锁的产生与解决
死锁产生的原因:两个或两个以上的进程(线程)对某一个资源的请求,但是始终请求不到对应的资源,原因是其中有进程(线程)对其它进程(线程)需要的资源进行了锁,即:synchronized产生的形式一般为:锁中套锁:例如1:被锁代码块1里面 还有 被锁代码块2 且 2需要 1锁定的资源2:被锁代码块1里面 还有 被锁方法2 且 2需要 1锁定的资源等好几种给一份参考:记...原创 2020-04-19 22:34:04 · 213 阅读 · 0 评论 -
如何使用命令行编译运行java文件(一个或多个),找不到主类解决
编译java文件:一个正确的java文件是必要的,不要马虎了。用到的两个主要命令://编译得到classjavac projectpath/projectname.java//运行classjava projectpath/projectname.class示例及结果:public class Test { public static void main(String[] ...原创 2020-04-16 14:42:36 · 985 阅读 · 2 评论 -
使用批处理查看.class文件内容--javap指令
想研究java的class的小伙伴注意了。查看.class文件内容--javap指令用到的指令是javap -verbose 目标.class文末给出了批处理脚本首先我们看:一个简易的输出功能的class中是这样的:Classfile /C:/Users/Administrator/Desktop/test/Test.class Last modified 2020-4-16;...原创 2020-04-16 11:12:32 · 198 阅读 · 0 评论 -
从操作系统的PV操作理解JAVA的synchronized同步方法,同步代码块实现,及比较
也有利于理解操作系统的同步知识果然是息息相关的JAVA同样离不开操作系统的原理,不过他体现在虚拟机JVM中synchronized关键字是同步关键字首先我们知道在操作系统里PV两者操作信息量S的自增自减P自增V自减现在类比知道在JVM中:【知道JVM的本地方法栈与底层的操作系统OS息息相关】同步方法:例://同步方法public synchronized void get...原创 2020-04-13 21:28:09 · 548 阅读 · 0 评论 -
idea自动为行尾加分号
idea并没有eclipse直接在语句后加;的功能我知道的idea自动补全:ctrl+shift+enter1.缺分号,自动补BufferedImage image = ImageIO.read(Url):BufferedImage image = ImageIO.read(Url);2.代码不足(但语义明确),可不全例子:URI uri = new: URI uri ...原创 2020-04-07 11:51:11 · 5937 阅读 · 0 评论 -
编写java实用工具-针对未压缩的pdf转word,(java实现),压缩过的pdf勿进
压缩过的pdf勿进!压缩过的pdf勿进!压缩过的pdf勿进!重要的事情说三遍。主要是提供两种解决办法第一种:转成同级目录word第二种:直接console打印java的好处之一就是取之不尽的第三方包这个先介绍pdf转word的方法:利用的依赖包:pdfbox.jar<dependency> <groupId>org.apache....原创 2020-03-27 10:34:42 · 226 阅读 · 0 评论 -
Java创建线程的三种方式,以前只知道两种,现在添加一种Callable与FutureTask创建的方式
一共有以下三种方式:1.继承Thread2.实现Runnable3.实现Callable,并FutureTask包装线程启动方式均是使用start()方法先阐述优缺点:1和2,3:2,3优于1是使用了借口,留出来了继承的位置1优于2,3是使用简单,实现简单2和3:我认为3的实现比2更复杂一些,因为2的方法效果单一但正所谓一分耕耘一份收获,程序也是如此3的call()方法比2...原创 2020-03-23 23:44:59 · 204 阅读 · 0 评论 -
Java批量完成对文件夹下全部的css与js压缩,利用yuicompressor
大部分代码我是从网上找的,只有对文件的遍历是我自己写的;其实原理十分简单利用yuicompressor已经编好的方法,我们写一个Java程序来调用即可;yuicompressor-2.4.8.jar封装好的两个类:JavaScriptCompressor;CssCompressor;然后就是底下的程序了:提醒一句最好把项目插件去掉再来,毕竟那不是自己写的,压缩可能出毛病。里面的f...原创 2019-11-15 19:06:00 · 284 阅读 · 0 评论