技术性
文章平均质量分 65
技术性质的文章
缘之妙不可言
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 · 732 阅读 · 0 评论 -
库存生产-实用sql知识:如何在保证去重分组的情况下获取组内最新数据(可按时间排序),distinct +group by +嵌套结果 的联合妙用
这是花了一个小时实践出来的!网上有特别多的distinct +group by 的比较区别的,几乎没有几篇文章说他们的联合妙用。步入正题,先说我发现妙用的基于实际问题:库存与入库单的一个关系业务:在统计库存时,需要带出与库存相关的且是最近的入库单的一个入库人作为库存数据的一个属性那么问题来了,业务中一个库存记录可能会存在多张入库单与之关联,要去取最新的入库单的信息与库存信息关联,假设关联入库单信息为lastInUserName(最后入库人),不可避免的查出一个重复的库存记录,但实际上数据库只有一条这原创 2021-11-04 23:57:05 · 871 阅读 · 0 评论 -
雪花算法之唯一ID生成器理解
雪花算法基本情况雪花算法是一个分布式的唯一ID生成器。它应该具有高并发,以及高性能优点。基于时间戳,ID具有有序性,同时分布式下机器间时间差异过大(类似同一台机器时间回拨,一定会重复),会导致重复ID。基于机器码和操作中心id,ID具有不可重复性。它的ID是8字节64bit的一个Long长整型数据。ID基本组成ID基本组成:不用: 1bit,因为最高位是符号位,0表示正,1表示负,所以这里固定为0时间戳: 41bit,服务上线的时间毫秒级的时间戳(为当前时间-服务第一次上线时间),这里原创 2021-08-10 09:21:01 · 1588 阅读 · 0 评论 -
MYSQL | 索引最左匹配原则(最左前缀原则)
今天完成一道简单的mysql题目时收获了新的索引知识:索引最左匹配原则使用OR(and)搜索时,条件顺序重要(最左前缀原则,索引失效,需要将索引放左边)以下是题目内容和知识点:package org.j.mysql;/** * @author *** * @version 1.0 * @description 一个国家如果面积超过300万平方公里或人口超过2500万,就大。 * 编写SQL解决方案以输出大国的名称,人口和地区。 * @date 2020-09-07 10:59 **原创 2020-09-07 12:09:44 · 1135 阅读 · 0 评论 -
java-Set集合源码学习
Set集合Set注重独一无二的性质,该体系集合用于存储无序(存入和取出的顺序不一定相同)元素, 值不能重复。对象的相等性本质是对象hashCode值(java 是依据对象的内存地址计算出的此序号)判断的,如果想要让两个不同的对象视为相等的,就必须覆盖Object的hashCode方法和equals方法。实现类有:HashSet,(一张hash表)哈希表边存放的是哈希值。HashSet 存储元素的顺序并不是按照存入时的顺序(和List显然不同)而是按照哈希值来存的所以取数据也是按照哈希值取得。元原创 2020-06-18 08:53:20 · 201 阅读 · 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 · 287 阅读 · 0 评论 -
java-List集合的源码分析(数据结构方面,源码注释方面),迭代器快速失败机制
List实现了Collection接口,产生三个子类:ArrayList,LinkedList,Vector文章包含解释方面:数据结构方面,源码注释方面&迭代器快速失败机制方面1—基于源码的数据结构基于源码的数据结构,我们先给出如下比较结果:ArrayList&Vector是基于数组的实现。那么他们:-基于数组下标的快速查找功能-数据插入费力,因为要移动一大段数据为新数据提供插入位-数组可能溢出(已经被开发者利用grow()扩容解决)必须是一片连续内存空间注解原创 2020-06-15 00:12:00 · 259 阅读 · 0 评论 -
探究java-JVM的五步(三步)类加载机制(包含类加载过程的一些代码书写,如类加载代码)
前言:写了不少java代码,以前一直都是关心java程序跑起来后的情况步骤,今天我们就来探究一下:在java程序还是一个个存在于静态.class文件中的类的时候,JVM是在怎么将它们变成一个个存在于内存的对象的。为此,JVM专门有一个类加载机制,用于处理.class文件加载到内存这个过程。正文:JVM类加载机制分为5个步骤:1.加载2.验证3.准备4.解析5.验证...原创 2020-06-12 01:03:33 · 327 阅读 · 0 评论 -
idea-jvm参数设置(有注释)
idea-jvm调优:#设置最大堆内存,相同大小可避免扩容-Xms800m-Xmx800m# 年轻代大小,Sun推荐设置为堆大小的3/8-Xmn281m#开启项目后不检测字节码正确性#禁用字节码验证。IDEA的代码足够可靠,-Xverify:none# 对象晋升到老年代的年龄,默认15。根据观察,对IDEA来说设成10就足够了-XX:MaxTenuringThreshold=10# 在JVM启动时即预初始化堆中的所有页,能够快速利用-XX:+AlwaysPreTouch-原创 2020-05-28 00:29:40 · 843 阅读 · 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 · 1420 阅读 · 0 评论 -
汇编-子程序参数传递的三种方式-寄存器法,堆栈法,参数赋值法【详述后两者】
汇编-子程序参数传递的三种方式:寄存器法,堆栈法,参数赋值法子程序结构如下:名称 PROC FAR|NEAR;DO SOMETHINGRET [N];返回断点地址,N可忽略,加了必须对SP进行 平栈 操作名称 ENDP结合此结构,我们来看,1.寄存器法这个方法最简单易用,但是要注意对寄存器的选择,一般选ABCD[X]通用寄存器就可以了。步骤如下:1.通过MOV指令将参数存到寄存器2.再在子程序中调用寄存器即可【注意保护寄存器】样例就不给了。2.堆栈法过程原创 2020-05-23 13:55:23 · 6689 阅读 · 1 评论 -
oracle使用sqlplus工具命令连接,快速启动oracle服务。
安装oracle完成后,使用sqlplus链接;为节约系统资源(生产环境就不必手动启动),设置services.msc所有Oracle服务为手动启动然后仅仅需要启动:OracleOraDb11g_home1TNSListener OracleServiceORCL便启动了基本的oracle服务(服务名可能因为版本不同)想要快速启动一般使用bat、sh命令(不过要管理员权限)介绍一下这些服务的基本信息:Oracle ORCL VSS Writer Service:Oracle卷映射拷贝写原创 2020-05-19 20:27:13 · 768 阅读 · 0 评论 -
windows-oracle下载安装,简单的启动使用。
在windows环境下,Oracle数据库安装比较简单;以11g为例,大致分为以下几步:1.官网下载(很快)https://www.oracle.com/database/technologies/112010-win64soft.html这两个包都需要进行下载,一共大约2.0G2.下载完成就解压到同一目录(不是最终安装目录),然后点击setup.exe再创建一个安装目录,像数据库这些软件都不建议安装到c盘。如果遇到类似:的警告,基本都不用管,点是即可(其它地方也是,360阻止也可以原创 2020-05-19 10:54:30 · 380 阅读 · 0 评论 -
windows-vscode编写c/c++(适用日期2020-5月的vscode)--简洁版(下载gdb.exe)
阅读提示:耐心仔细,按步骤操作首先要知道vscode只是一款编辑器,不是IDE所以c编译器需要一定的配置1.确定系统环境:有g++编译,输入g++ -v可查看有gdb32.exe这个文件(没有,后面下)有vscode(自己下)如果没有环境就去下载软件:minGW Installers Manager右键单击勾选这两个bin:gcc (编译链接用)gdb (debug用)右上角installation-》apply change进行下载 (gdb一般会失败,需要f墙)如果下原创 2020-05-15 20:52:39 · 929 阅读 · 0 评论 -
javaweb实现文件上传,前端与后台的结合实现
大家好,这是原创的文件上传源码哦。希望给大家带来参考价值。阅读注意:1.只给出了关键代码(但是绝大部分代码),需要自己小小润色一下。2.代码分为前端与后台,3.本人初学者,有错,望您指出。前端代码:采用ajax获取(自己写的ajax,原理性强):ajax.js(ajax重构)/** * Ajax重构 多次使用,代码重构 */var timer = null;var net...原创 2019-06-20 12:00:05 · 7665 阅读 · 1 评论 -
matlab-Grefenstette的编码与解码
在遗传算法中执行交叉变异得到正确的子代结果是十分重要的一步为了更好的交叉变异有人发明了Grefenstette编码Grefenstette的编码定义如下:既是:通过已有的顺序(非常重要,编码解码都靠它),产生一个访问序列,且每访问完一个点,就需要把点从已有序列删除,形成新的序列作为新的访问前置条件例如已有顺序1,2,3,4,5编码集:4,2,1,2,1通过编码集得到的解码集:解码集:4,2,1,5,3注意编码集最后一位永远都是以1结束以种群数量S 与 生存环境数量M为研究对原创 2020-05-13 16:22:44 · 1238 阅读 · 0 评论 -
操作系统P,V(wait,signal原语)操作讲解,以及两个例题(答案仅供参考)
操作系统的pv操作是很核心的概念。pv操作又称wait,signal原语。主要是操作进程中对进程控制的信息量的加减控制。wait用法:wait(num),num是目标参数,wait的作用是使其(信息量)减一。signal用法:signal(num),num是目标参数,signal的作用是使其(信息量)加一。一下提供两个例题,答案仅供参考。1.有一阅览室,共有100个座位。读者进入时...原创 2020-03-22 20:46:56 · 48011 阅读 · 11 评论 -
进程的并发与并行,三种状态
进程的特征:1.动态性,是进程最基本的特性,可表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,以及由撤销而消亡,因而进程由一定的生命期。2.并发性,是进程的重要特征,同时也是OS的重要特征。引入进程的目的正是为了使其程序能和其它建立了进程的程序并发执行。3.独立性,是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位。进程的并发与并行并发相比并...原创 2020-03-17 09:23:30 · 6829 阅读 · 6 评论 -
bat以管理员方式运行
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"if '%errorlevel%' NEQ '0' (goto UACPrompt) else ( goto gotAdmin ):UACPromptecho Set UAC = CreateObject^(...原创 2020-03-04 18:31:59 · 1095 阅读 · 0 评论 -
快速git本地项目到github的关键命令及执行步骤(附上idea到git的步骤)
前提:已有github账户,本地git已安装1.建立本地仓库(一个文件夹)和远程github仓库2.对本地仓库对应文件右键单击 点击Git bash here得到如图命令框:3.将github的仓库克隆到本地仓库命令如下, 地址为http类型的克隆地址,在github项目可找到,如图第二张。4.在得到了github内容后,将目标项目全部文件放到新增目录并依次执行以下命令gi...原创 2020-02-23 22:51:50 · 169 阅读 · 0 评论 -
bat基础学习--bat批量执行其他bat(start&call),bat执行后暂停(调试)&关闭,批量执行关闭exe----基础
因为不想每次写程序都慢慢打开一大堆要用的软件,就想到windows下的批处理,学一些基础的,好自己用。包含内容:bat执行后暂停&关闭,,批量执行与关闭exe,,bat批量执行其他bat首先什么是批处理,其实他就是一个cmd命令的集合体,我用到的及其解决过程如下几点:**1.bat注释常用的有::双冒号等,可以百度,一般的双冒号就可以了。**2.bat下怎么执行(批量)其他b...原创 2020-02-19 14:57:10 · 4540 阅读 · 0 评论 -
linux后台运行命令&,nohup
linux后台运行命令1.&当结束终端时,进程就会停止command &例子:./test.sh &2.nohup为不挂起进程的意思如下时会使得应用在关闭终端时继续在后台运行nohup command &例子:nohup ./test.sh &会生成一个nohup.out文件,其中包含整个应用的输出信息。转载精简原文:ht...转载 2020-05-03 21:28:41 · 168 阅读 · 0 评论 -
java简单的死锁检测(转载线下代码)
一个简单的死锁检测功能、1.探测出死锁主要是:java.lang.management类的关于线程的系列方法一个线程监控类ThreadMXBean x=ManagementFactory.getThreadMXBean();使用x的方法findDeadlockedThreads();得到发生死锁线程的ID通过ID获取线程信息ThreadInfo发送到处理类package com....原创 2020-05-01 11:22:18 · 411 阅读 · 0 评论 -
java死锁的产生与解决
死锁产生的原因:两个或两个以上的进程(线程)对某一个资源的请求,但是始终请求不到对应的资源,原因是其中有进程(线程)对其它进程(线程)需要的资源进行了锁,即:synchronized产生的形式一般为:锁中套锁:例如1:被锁代码块1里面 还有 被锁代码块2 且 2需要 1锁定的资源2:被锁代码块1里面 还有 被锁方法2 且 2需要 1锁定的资源等好几种给一份参考:记...原创 2020-04-19 22:34:04 · 186 阅读 · 0 评论 -
使用批处理查看.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 · 173 阅读 · 0 评论 -
从操作系统的PV操作理解JAVA的synchronized同步方法,同步代码块实现,及比较
也有利于理解操作系统的同步知识果然是息息相关的JAVA同样离不开操作系统的原理,不过他体现在虚拟机JVM中synchronized关键字是同步关键字首先我们知道在操作系统里PV两者操作信息量S的自增自减P自增V自减现在类比知道在JVM中:【知道JVM的本地方法栈与底层的操作系统OS息息相关】同步方法:例://同步方法public synchronized void get...原创 2020-04-13 21:28:09 · 502 阅读 · 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 · 197 阅读 · 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 · 182 阅读 · 0 评论 -
Java批量完成对文件夹下全部的css与js压缩,利用yuicompressor
大部分代码我是从网上找的,只有对文件的遍历是我自己写的;其实原理十分简单利用yuicompressor已经编好的方法,我们写一个Java程序来调用即可;yuicompressor-2.4.8.jar封装好的两个类:JavaScriptCompressor;CssCompressor;然后就是底下的程序了:提醒一句最好把项目插件去掉再来,毕竟那不是自己写的,压缩可能出毛病。里面的f...原创 2019-11-15 19:06:00 · 259 阅读 · 0 评论 -
关于go语言中的JWT(JSON WEB TONKE)ECHO
jwt用作验证用户登录,很好的解决了session单点的问题//验证//在调用Parse时,会进行加密验证,同时如果提供了exp,会进行过期验证;//如果提供了iat,会进行发行时间验证;如果提供了nbf,会进行发行时间验证.//创建 tokenStringfunc createJwt() (string, error) { // token := jwt.NewWith...原创 2019-12-08 19:35:19 · 425 阅读 · 0 评论 -
java跨域请求,且附上前端跨域请求代码
为了跟上新的潮流,学习前后端分离的概念及技术是必须的,跨域也随之而产生。首先确定什么是前后端分离,它不仅是对代码的解耦,也是对开发人员的解耦,真正的前端是前端,后台是后台,开发速度至少快一倍。即你是后台,可以不用写太多前端代码,设计什么ui等等,都交给了前端人员,前端人员也是如此。说到底,还是有人关心在这种模式该使用什么数据格式通信,无疑是json.在此之后随之而来的是很多的跨域问题。...原创 2019-11-13 13:00:38 · 187 阅读 · 0 评论 -
hibernate更新部分字段的几种方法
1.使用hql语句,写的代码多,但很灵活public void update(){Session session = HibernateUitl.getSessionFactory().getCurrentSession();session.beginTransaction();Query query = session.createQuery(“update Teacher t set ...原创 2019-11-08 18:23:05 · 739 阅读 · 0 评论 -
关于java自动生成一个tostring-json,解决hibernate框架,每次全属性输出,的数据动态且限制对象的属性书写到前端,使用模板!
["member.name()":"{member.name()}":"member.name()":"{member.value}",${otherMembers}]自动在bean产生一个toString()方法,返回一个全属性的json字符串当然可以修改里面的成员参数,就实现后端控制他的动态显示了但是不可避免的是:hibernate任然需要获取对象,整个数据从数据库获取才能得到poj...原创 2019-11-06 18:25:11 · 147 阅读 · 0 评论 -
linux关于/etc/profile.d与/etc/profile的正确运用
/etc/profile.d是一个很神奇的目录它也代表/etc/profile前者是后者的软链接这个目录里面包含了很多关于系统颜色,字体,vim命令等的启动信息基本都是为了显示终端而存在的。如图:且只有当你打开(切换)终端时才会执行。例如我需要在切换到root后输出一些东西可以写一个脚本到该目录下终端启动就会变成:welcome for you 属于自定义内容还可以再切换后直接登录到数据库(mysql例)只要一句: mysql -u root -p到脚本再到该目录即可。要立即原创 2020-05-10 15:03:26 · 797 阅读 · 0 评论 -
linux服务器设置开机自启(.sh脚本)
今天又去弄服务器上的前后端分离,想着怎么把后端变成本地访问,失败了,但还是学到一些关于linux的东西:除了常规的注册服务并设置自启动,还有一种可以设置开机自启的方式就是设置rc.local该文件位于/etc/rc.local,它的软链接是/etc/rc.d/rc.local,它的作用是设置一些开机启动的脚本初始内容是:只有一条命令该命令是用于管理系统时间的,不用管它重点是自己接下来写的代码:一般是直接添加,注意要在exit 0前面,没有就算了例如想执行/usr/的test原创 2020-05-10 14:47:07 · 3551 阅读 · 0 评论 -
汇编-输入8位二进制串并转换为16进制数显示到屏幕(利用8421转换)
今天编写了一个输入二进制串并转换为16进制数显示到屏幕的汇编程序在编写过程中遇到一些问题,并解决后,想把它与大家分享。题目是这样的:分析题目:可得要求输入 11111111得到 00FFH那么思路就是:0.输入类似11111111的8位二进制1.对输入的字符串要转换为对应的数字0,1二进制存在内存中。2.对输入的字符串可通过8421方法计算10进制存到AX。3.输出AX那么代码:数据段:用8421计算2进制串的10进制数子过程:do8421: ;计算每4位的84原创 2020-05-13 15:50:12 · 5273 阅读 · 1 评论 -
汇编-简单的条件转移指令应用-附例子:判断坐标所在象限
在汇编分支程序设计中,条件转移指令扮演着很重要的角色首先让我们认识一下简单的条件转移指令:这些指令都是通过flag寄存器中的标志位进行判断的一般情况下使用CMP指令来影响标志位结合这些指令执行相当于高级语言的if,else如图:例题:做出分析:主要是判断是否为0,以及它的正负情况。所以:主要应用条件转移指令,判断不同象限,主要指令:JZ/JE,JNS/JS,JMP假设:为方便查看结果,可将K输出为对应的ascll字符,既是48到52,达到k=i的显示效果那么代码部分:数据段:原创 2020-05-13 15:28:38 · 800 阅读 · 0 评论 -
汇编---输出AX的地址值
输出步骤:定义一个字变量对AX求ASCLL字符存入操作内存地址的寄存器—SI打印mov ax,mov si,offset Temp+3;保存存储结果的字符串的最后一个字符偏移地址 xor cx,cx ;对cX清零 mov cl,4 ;设置循环次数为4次MainPart: mov DH,AL ;将Al...转载 2020-04-24 23:50:30 · 2055 阅读 · 0 评论 -
常用的汇编系统功能指令(包含字符功能类,中断终止类)
中断功能:INT N;N代表整数一般DOS下使用INT 21H中断代码终止功能:可以使用INT 20H终止程序但不建议一般使用4CH功能号:MOV AH,4CH或MOV AX,4C00H,都一样字符功能:几乎每个功能都与AH或AX,AL有关格式一般为MOV AH,功能号MOV 寄存器,目标值01H、07H和08H—从标准输入设备输入字符 从标准输入设备(如:键盘...原创 2020-04-21 21:00:17 · 1294 阅读 · 0 评论 -
汇编--两种过程定义的方式,调用方式。
了解一些基础:过程是伪指令的一种过程通过CALL调用过程一定放在代码段过程的定义两种方式:1.默认使用near近调用参数,若修改,必须使用方式2指定2.一定要用RET,强制返回方式1:NAME:;DOSOMETHINGRET方式2:NAME PROC [FAR/NEAR];二选一;DOSOMETHINGRETNAME ENDP注意:当代码段仅含一个过程时,需要...原创 2020-04-21 08:51:47 · 1140 阅读 · 0 评论