Java
RKGG爱吃鱼
每天进步一点点。
展开
-
Java 面向对象基础
由于对此概念产生了模糊,所以再来总结学习一下,不对之处,请指正。说起面向对象,首先要说明一下Java类,其本质是用来描述事物类型的。关于Java方法的创建和重载和类的定义、声明,由以下演示:class 类名{//类名一般大写 属性; 方法: 访问修饰符 返回值类型 方法名(){ 方法主体 }}其中,注意Java方法的返回值类型,如果没有特殊要求返回值类型,可以定义为vo原创 2017-03-21 11:17:49 · 833 阅读 · 0 评论 -
Java TCP/UDP
1. 网络通讯基本要素,寻址IP和应用逻辑端口,定义通讯规则,即协议。通用协议TCP/IP。2.网络模型OSI:应用层封装数据,向下传递数据,应用层继续封装,继而传递到会话层,封装数据,传递到传输层(TCP/UDP),网络层给予数据IP地址,选择底层传输协议,到达物理层(如网线、光纤、无线等),封装成包进行传输。数据包传输到另一台机器,进行数据解析,从物理层开始向上传递,逐层解析拆原创 2017-03-14 15:00:56 · 336 阅读 · 0 评论 -
Java中累计时间的计算(以小时为最终结果)
最近在项目中需要用到工作累计时间,所以就就写了一个小方法,作用是可以计算两个时间点之间的累积时间(即累积工作小时),这里头需要注意的是输入的日期格式为“yyyy-MM-dd-HH”,目前测试过后,可以计算不同年月日之间的小时差,下面附上主要代码:public static int workHours(String startTime,String endTime){ String[]原创 2017-10-19 14:20:12 · 5189 阅读 · 0 评论 -
仿C# BinaryReader 读取二进制文件的Java实现代码
最近手头的活儿暂告一段落,正好有时间整理一下前面做的一个项目,在某些时候,我们需要读取一个格式明确的二进制文件,由于格式确定,我们还需要按照位数来读取相对应的内容(例如,我们需要读取第44位到第56位的这12个字节),说到这儿,很多人大概都会说,这有什么难的,Java读取二进制的方法有一大堆,随便找一个都可以读取,的确,Java的读取方法有很多,但是似乎没有一个读取一个字节就会让当前字节位提升一位原创 2017-12-26 09:04:29 · 2650 阅读 · 1 评论 -
Java实现的几种色差公式
最近做色差计算,需要用到CIE 1976Lab、CMC(l:c)、CIE DE 2000三个色差公式,需要用Java实现,具体的公式网上都有,这里就不再赘述,下面直接贴代码:1.CIE 1976Lab/*** CIE 1976Lab* */public static double CIE_1976(double L1,double a1,double b1,double L2,double...原创 2018-03-11 13:28:31 · 4419 阅读 · 1 评论 -
动态规划-06分组背包
本文主要介绍一下“分组背包”,分组背包,即一开始选取的物品以及分成几个组,在选取时,可以从一个分组中选取一件物品或者一件物品也不选取,以此到达最大价值的选取目的。其方程也可以写成类似于“01背包”的方程,如下:c[k][j] = max(c[k-1][j], c[k-1][j-w[k-1][i]]+v[k-1][i])其中,k表示当前分组号,i表示当前分组中的第i件物品。以下为具体题目示...原创 2018-04-22 10:24:06 · 3979 阅读 · 0 评论 -
动态规划-07依赖背包
按照《背包九讲》的顺序,本文主要讲其第七讲-依赖背包,所谓“依赖背包”即指背包物件有主附件,类似的解释之前在“二维费用背包”中提到过,不过这里的主附件是从属关系,即选择主件,必须要选择附件,而附件的类别又可以有很多种,同样的附件也可以有附件,这样如此反复,即会形成一个“树形DP”,其结果和考虑的情况将呈指数型增长,所以无法写成类似于“01背包”的方程式,但如果给定限定条件,我们同样也可以将其转换成...原创 2018-04-22 13:15:09 · 579 阅读 · 0 评论 -
动态规划-01基础背包
最近在做华为OJ题,做到“购物单”一题,突然感觉一脸懵逼,有点熟悉却又思维混乱,研究了一下,发现是由来已久的背包问题,遂详细的了解一下该算法。这里将最简单的背包问题——即无重复选取,每个物品仅放一次,其核心方程如下:f[i][j] = max{f[i-1][j],f[i-1][j-[w[i-1]]]+v[i-1](j>=w[i-1])}假设:定义可容纳总重量W =10 Kg,物品种...原创 2018-04-19 10:14:56 · 317 阅读 · 1 评论 -
动态规划-02完全背包
继上一篇01基础背包,本文主要利用Java实现“完全背包”问题,该问题类似于基础背包问题,主要区别在于“完全背包”对于放置的物品个数没有限制,即可以重复选取,每个物品的选取放置次数可以是0、1、2······,情况相比基础背包要复杂的多,其核心方程也可以写成类似于01问题的方程,如下:c[i][j] = max(c[i-1][j-(k*w[i-1])] + k*v[i-1], c[i-1][j...原创 2018-04-20 10:54:22 · 933 阅读 · 0 评论 -
动态规划-03多重背包
紧接前面一篇,讲一下“多重背包”问题,该问题与“完全背包”相比,在每个物品的选取次数上给出了限定,即选取次数k不能无限的增大,其方程和“完全背包”的极度相似,只是k的限定条件发生了变化。c[i][j] = max(c[i-1][j-(k*w[i-1])] + k*v[i-1], c[i-1][j]) (0 <= k <= counts[i])其中,counts[i]表示第i件...原创 2018-04-20 14:58:25 · 911 阅读 · 0 评论 -
动态规划-04混合背包
前面的三种背包问题介绍完后,基于这三种背包问题可以引申出这三类的混合形式-混合背包问题。可以两两混合,也可以三种混合,无非是在分析的时候,根据每个物品的出现次数将其分类组合。假设:定义可容纳总重量W =10 Kg,物品种类 N = 3,每件物品重量w[i],对应价值v[i],求解在可容纳重量范围内如何选取可获最大价值。具体题目:可能出现的情况:由于使用二维数组较为繁琐,以下...原创 2018-04-20 15:46:01 · 426 阅读 · 0 评论 -
动态规划-05二维费用背包
前面4篇博客已经将几种基础背包问题介绍,本文主要对“二维费用”背包问题进行介绍。“二维费用”背包问题,较前面几种背包问题主要是对每类物品增加了一维费用,用一个简单的例子来说,即选取某一个物品的同时增加了一个附属物品,同时对附属物品的费用也有了限制,通过这种思维,可以将“二维费用”背包转换为“01基础背包”问题,按照“01基础背包”方程可以得到该基础方程:c[i][j][k] = max(c[...原创 2018-04-21 10:40:59 · 1153 阅读 · 0 评论 -
信号分析——导数(Java/Matlab)
信号求导,可以消除信号的背景,确定谱峰的位置,改善谱峰分辨情况,一般地,在信号分析中,常用的信号求导为一阶、二阶导数。基于S-G滤波的基础上,获取拟合参数矩阵A后,可以利用滤波窗口的2m+1个数据对窗口中心点(i=0)求该点信号处的p阶导数,对其多项式:进行求导,当i=0时,可得:因此,窗口中心点数据的p阶导数等于A矩阵的第p+1个元素和p的阶乘的乘积。其一阶导数和二阶导数分别如下...原创 2019-05-08 10:46:54 · 2904 阅读 · 0 评论 -
信号分析——S-G卷积平滑(Java/Matlab)
Savitzky-Golay滤波,即S-G滤波平滑,利用多项式进行数据平滑,基于最小二乘法,能够保留分析信号中的有用信息,消除随机噪声,在信号图谱中最直接的结果就是将图谱的“毛刺”去掉,整个图谱更加平滑。平滑窗口宽度:2m+1,即为该窗口原始数据点个数n(n=2m+1),一般要求窗口宽度为奇数,从测量原始数据中选取一子集作为窗口,而非整个数据集。假设窗口内的原始数据点可以用一个k-1次多项...原创 2019-05-06 15:10:45 · 11966 阅读 · 4 评论 -
信号分析——曲线拟合(多项式非线性拟合Java/Matlab)
曲线拟合,即以一条函数曲线去逼近已知测量数据点的过程,考察化学理论值和实验数据之间的吻合程度。一般地,光谱曲线、伏安曲线、色谱曲线等均可以用多项式函数拟合。设有N组测量数据点(xi,yi)(i=1,2,···,N),可以用一个m阶多项式进行表示:式中,bj为拟合系数,N组数据点按照上述多项式可组成N个方程,改写成矩阵形式如下:记作:由前文知,B的最小二乘解为:则...原创 2019-05-14 16:16:45 · 3225 阅读 · 2 评论 -
信号分析——高斯函数拟合(Java/Matlab)
由于上一篇博文提到的多项式拟合模型的拟合系数没有任何物理意义,而化学分析中,有许多具有明确物理意义的二维谱图,图光谱、色谱等,其信号峰位置、峰高、峰宽等均具有实际物理意义,因此,提出使用高斯曲线进行数据拟合和表征。高斯函数仅适用于对称谱图,其简图如下:假设光谱曲线,可用简单的高斯函数表达:其中,ymax、xmax和S分别为峰高、峰位和区域宽度,可通过非线性拟合的方法来求解,其过...原创 2019-05-15 10:13:09 · 13068 阅读 · 8 评论 -
Java小函数
Java中面对需要各种对象输出的情况,可以使用此小函数进行输出。 public static void sop(Object obj)//输出各种类型的对象 { System.out.println(obj); }再附上一个四舍五入的小函数public static void rounding(double obj1)//设置输出为四舍五入后的值 { ...原创 2017-01-03 11:02:25 · 865 阅读 · 0 评论 -
关于如何获得截取byte[]的高低位?
最近利用CH340B串口进行Android端的软件开发,通讯协议中要求使用拼接byte[]来进行指令的发送,其中涉及到了类型转换和byte高低位的截取,这里小结一下。由于发送指令参数是int型数据,所以基本的方法是利用int转byte[]来进行截取,这里再写一下关于int和byte[]之间的转换,不论是从高位到低位还是低位到高位,方法基本一样:1.int转byte[](高位到低位)pu原创 2017-07-11 10:00:55 · 4911 阅读 · 0 评论 -
关于 Commons-math 中的矩阵算法小结
对于大的数据量,转换成矩阵或者行列式进行计算会将运算效率提高。所用jar包:Commons-math3-3.5.jar相关API:http://commons.apache.org/proper/commons-math/javadocs/api-3.3/1.double[]数组转换为矩阵double[] martxData = {1d,2d,3d};RealMatrix mat原创 2017-04-27 11:21:13 · 4207 阅读 · 0 评论 -
利用空间距离比较两张图片颜色的相似度
在图像处理中,图像模式一般有RGB模式和HSI模式。前者将色彩分为red、green、blue三种颜色,通过各个分量的值来比较颜色,但是需要注意的是,计算rgb分量需要算出一张图片的像素点,取平均得到rgb的平均值,这种颜色比较简单,但是不能真实地反映两张图像的颜色的相似性,因此,需要用空间距离来比较。/* * 利用空间距离比较rgb * */ public void space(S原创 2017-02-25 10:24:16 · 6923 阅读 · 0 评论 -
利用Java处理图片,更换背景
这个是网上一个大牛想到的方法,独特的见解,适用于给证件照换背景,即颜色RGB值在一个范围内的图像处理,稍加修改,可以适用于一切需要更换背景的情况,可以利用NetBeans设计一个UI,然后写成一个小程序,将PS里的抠图取代。import java.awt.image.BufferedImage;import java.io.File;import java.io.FileDescripto转载 2017-02-25 09:48:04 · 9187 阅读 · 3 评论 -
Java实现二值化处理图像
由于需求,在做图像处理这块,大概也学习了小半年,本文利用Java通过设置一个阈值来读一图像进行二值化处理。import java.awt.Color;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.math.BigDecimal;import原创 2017-02-25 09:31:01 · 6638 阅读 · 8 评论 -
Java 中常用的类型转换
基础不扎实,一遇到类型转换的问题就得找度娘,所以利用这段时间,自己总结一下(重学一下)。首先复习一下Java中的类型:1byte = 8bit;一个short占2byte;一个long占8byte;一个int占4byte;一个char占2byte;一个float占4byte;一个double占8byteJava中常用的主要类型有int、String、float、double、char、by原创 2017-04-26 15:33:44 · 504 阅读 · 0 评论 -
Java 读取excel指定行列数据以及将数据保存到txt文件中
在使用的软件中经常要用到一些数据的导入导出,以及准确的定位数据,这些经常会涉及excle表格,因此把今天学习到的关于如何利用Java准确获取到excle中的某一列数据,同时将此列数据输出到txt文件格式中。使用的jar包:jxl.jar 相关的API:http://jxl.sourceforge.net/javadoc/index.html(还是比较强大的,感兴趣的可以学一下)1.首先原创 2017-04-25 20:49:19 · 20710 阅读 · 1 评论 -
Jxl 中Cell获取到的excel数据保留精度问题
在使用Jxl获取excel中指定的某行某列数据时,发现获取数据精度值保留到小数点后三位,对于某些精度高的数据来说,之就成了一个大的问题,在查阅相关API后,发现在Cell下边有很多子接口,例如NumberCell、DateCell等,猜想获取的数据类型和这些子接口应该会一一对应,因此,利用NumberCell对其进行验证,将原来的Cell替换,代码如下:numberCell = (Number原创 2017-05-05 09:30:22 · 3829 阅读 · 0 评论 -
Java中的Lab和RGB的相互转换
很长时间里都是接触的RGB三原色处理,最近刚好要做Lab的色度分析,利用CIE色匹配函数和CIE标准光源相对功率分布表来进行计算,所以来总结一下在这一过程中学习到的小知识点。1.CIE色匹配函数和CIE标准光源相对功率分布表(可见光)在获得分析物的吸光度值后,我们需要根据对应的波长来进行相关计算,通过以下公式来进行计算:其中,x10为色匹配函数值。2.XYZ--->Lab原创 2017-05-06 10:05:37 · 2997 阅读 · 0 评论 -
Java IO流(一) 字符流
IO流用来处理设备间的数据传输,分为字节流和字符流(融合了编码表,处理常见的文本数据)。常用基本类:字节流:InputStream OutputStream ;字符流:Reader Writer原创 2017-05-06 14:58:27 · 491 阅读 · 0 评论 -
Java IO流(二) 字节流
字节流常用来处理图片文件等,不包含编码表。常用基本类之字节流:InputStream:OutputStream1.FileInputStream和FileOutputStream字节流和字符流的使用方法一样,需要注意的是因为操作的是最小数据单位,所以不需要刷新,但是需要关闭流。写入:FileOutputStream fos = new FileOutputStream("/Vo原创 2017-05-06 20:45:20 · 235 阅读 · 0 评论 -
Java IO流(三) 流转换和流操作的基本规律
通过学习前两篇的流基本类,对流的操作有了基本的认识。在一些操作中,当处理某些字节流时,如果可以使用字符流的一些方法,例如readLine()方法等,可以更加方便快速的解决问题,所以就有了流之间的转换,通过查阅API发现,有InputStreamReader和OutputStreamWriter两个方法,即可以实现字节流和字符流之间的转换。下面通过一个实例演示一下://输入InputStrea原创 2017-05-07 10:15:33 · 301 阅读 · 0 评论 -
Java 递归算法
Java中的递归,其实就是该函数自己调用自己的一种方法,通过这种方法可以省略代码,但是在递归的过程中需要注意限定条件,本质上,递归也是一种循环,所以需要通过限定条件来结束函数。以下通过一个小例子,即1~99的叠加,具体代码示例如下:public static void main(String[] args) throws IOException{ // TODO Auto-generat原创 2017-05-08 09:15:34 · 1459 阅读 · 0 评论 -
Java IO流(四) File
Java中的File类用来将文件或者文件夹封装成对象,方便对文件与文件夹进行操作。原创 2017-05-08 09:35:53 · 234 阅读 · 0 评论 -
Java中Synchronized的用法
由于在处理指令的时候,遇到了不能顺序执行的问题,查询后发现需要添加一个Synchronized同步锁来监听指令的发送,避免出现指令发送的问题,所以学习一下同步类Synchronized。同步类的使用是为了确保多线程执行命令时,避免出现运行出错,即多条语句在操作同一个线程的共享数据时,只执行了一部分还没有结束的时候,另一个线程又参与进来执行该共享数据,这就导致了多线程的安全问题。此转载 2017-05-08 10:52:58 · 199 阅读 · 0 评论 -
JAVA中的反射机制
反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧! 一,先看一下反射的概念: 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 反射是Java中一种强大的转载 2017-05-27 14:58:20 · 304 阅读 · 0 评论 -
Java 常用Math方法
在数据处理的时候,经常要用到一些数学方法,下面是一些Math类中常用的方法。abs(Object object) 返回值为object的绝对值 acos(double a) 返回值为a的反余弦 asin(double a) 返回值为a的反正弦 atan(double a) 返回值为a的反正切 cos(double a)原创 2017-04-27 10:05:33 · 1653 阅读 · 0 评论 -
经典蓝牙那些事儿——(登录、登录异常、自动连接、中断、断后重连等)
最近项目中用到传统蓝牙连接设备通讯,折腾了一周把基本功能实现了,这里简单记录一下。蓝牙设备:HC-05蓝牙模块主要功能:-首次手动配对;-自动连接;-连接超时或异常处理;-中断监听;-中断后检测重新连接测试版本:Android 6.0实现经典蓝牙功能的基本逻辑:整个蓝牙功能逻辑如上图所示,其中比较关键的是蓝牙自动连接和断开后重新连接。关于蓝牙自动连接,本文采用的是首次配对...原创 2019-07-17 13:13:58 · 3021 阅读 · 0 评论