本文介绍 Java 调用 Matlab 程序(Java 和 Matlab 混合编程)流程方法。
环境搭建1、 Java 环境,建议使用如下版本 。
Java™ SE Development Kit 8, Update 151 (JDK 8u151)
2、Matlab 工具(开发环境)
编写 Mattlab 代码,本文以最新版 Matlab 2018b 为例。
3、MATLAB Runtime(部署环境)
已经安装过 Matlab 就不需要再安装了,用来执行编译后的 Matlab 程序。
从以下网址下载即可,本文以 R2018b (9.5) 为例。
https://ww2.mathworks.cn/products/compiler/matlab-runtime.html
MATLAB Runtime 相比 Matlab 更加轻量级,免费。
环境确认:
本文建议 Java 版本和 Matlab 自带 JVM 保持一致。
在 Matlab 命令中输入 version -java 查看机器 Matlab 版本。
在 CMD 中执行 java -version 查看机器 Java 版本, ...
本文介绍 Glide 图片加载框架,包含简单的使用和源码解析。本文内容基于 Glide 4.7.1 版本。
Glide 是一个快速高效的 Android 图片加载库,注重于平滑的滚动。Glide 提供了易用的 API,高性能、可扩展的图片解码管道,以及自动的资源池技术。https://muyangmin.github.io/glide-docs-cn/
Glide 支持拉取,解码和展示视频快照,图片,和 GIF 动画。Glide 的 API 是如此的灵活,开发者甚至可以插入和替换成自己喜爱的任何网络栈。默认情况下,Glide 使用的是一个定制化的基于 HttpUrlConnection 的栈,但同时也提供了与 Google Volley 和 Square OkHttp 快速集成的工具库。
Glide 的简单使用前面有比较详细的介绍,这里不再赘述。
Android 图片加载框架 Glide 简单使用 | CirGIS
https://www.wshunli.com/posts/d82d8606.html
Glide 的源码解析1、我们先看 Glide 的 with() 方法
@Non ...
本文介绍 Retrofit 网络框架,包含简单的使用和源码解析。本文内容基于 Retrofit 2.4.0 版本。
Type-safe HTTP client for Android and Java by Square, Inc. http://square.github.io/retrofit/
前面介绍过 OkHttp ,Retrofit 是对 OkHttp 网络请求框架的封装,前者专注于接口的封装,后者专注于真正的网络请求。
应用程序通过 Retrofit 请求网络,实际上是由 Retrofit 接口层封装请求参数、Header、Url 等信息,由 OkHttp 完成实际的请求操作;在服务端返回数据后,OkHttp 将原始的结果交给 Retrofit,Retrofit 根据用户的需求对结果进行解析。
Retrofit 的简单使用参考官网的介绍:
1、创建 HTTP API 接口
public interface GitHubService { @GET("users/{user}/repos") Call<Lis ...
本文介绍 OkHttp 网络框架,包含简单的使用和源码解析。本文内容基于 OkHttp 3.11.0 版本。
网上关于 OkHttp 源码解析的文章有很多,我在这里参考他们的资料,形成自己的知识体系。
只是停留在应用层面,会使用一些框架是不行的,还需要深入源码、剖析结构。
An HTTP+HTTP/2 client for Android and Java applications. http://square.github.io/okhttp/
支持 HTTP/2 协议,允许连接到同一个主机地址的所有请求共享 Socket 。在 HTTP/2 协议不可用的情况下,通过连接池减少请求的延迟。支持 GZip 透明压缩,减少传输的数据包大小。支持响应缓存,避免同一个重复的网络请求。
OkHttp 的简单使用一般情况下,对于网络框架有两种常见的使用场景,同步请求和异步请求。
同步请求:
OkHttpClient okHttpClient = new OkHttpClient.Builder().build();Request request = new ...
《剑指Offer》编程题目 Java 实现,老是看书学习理论知识不太行,还得动手写代码啊。
笔试中的重要性不必多说,面试官还总是喜欢让手写代码。
1、赋值运算函数
2、单例设计模式
在设计模式中有详细的介绍,这里不再赘述,请移步:
https://www.wshunli.com/posts/d1c4534.html
3、二维数组中查找目标值
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
(1)直接暴力查找
public boolean Find(int target, int[][] array) { for (int[] anArray : array) { for (int anAnArray : anArray) { if (anAnArray == target) return true; } } return false;} ...
数据结构与算法
未读数据结构与算法一直是比较薄弱的地方,不仅在面试的时候会问相关问题、手写代码,而且在笔试的时候发挥重要作用。
前面一直学习的数据结构,下面排序、查找属于算法的范畴了。
排序所谓 “排序” (Sorting) 就是指将一组数据,按特定规则调换位置,使数据具有某种顺序关系(递增或递减)。
排序分类,可分为内部(内存中)和外部(外部存储器)排序两大类。
常见的内部排序法有:冒泡排序法、选择排序法、插入排序法、合并排序法、快速排序 法、堆积排序法、希尔排序法、基数排序法等。 至于比较常见的外部排序法有:直接合并排序法、K 路合并法、多相合并法等。
排序算法分析:算法是否稳定、时间复杂度、空间复杂度。
稳定的排序是指数据在经过排序后,两个相同键值的记录仍然保待原来的次序。
内部排序法内部排序法的时间复杂度及键值整理。
1、冒泡排序法
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
实现算法:
int i, j, tmp;int data[] = {6, 5, 9, 7, 2, 8 ...
数据结构与算法
未读数据结构与算法一直是比较薄弱的地方,不仅在面试的时候会问相关问题、手写代码,而且在笔试的时候发挥重要作用。
这次选择看的书籍是 《图解数据结构-使用Java》 ,先入门,后面再深入学习。
算法的时间复杂度,用来度量算法的运行时间,记作: T(n) = O(f(n))。它表示随着 输入大小 n 的增大,算法执行需要的时间的增长速度可以用 f(n) 来描述。
线性表是 n 个元素的有限序列(n >= 0),是计算机科学中一种相当基础的数据结构。
数组数组 其实是一排紧密相邻的可读内存,并提供一个能够 直接访问 单一数据内容的计算方法。
这样能够直接通过计算,并访问任一位置的数据,即所谓的数组的 随机读取 。
当 Java 数组声明时会在内存中分配一定的暂存空间,空间大小以数据类型和数组数量为依据。
一维数据、二维数组、三维数组、n 维数组。
数组可用于矩阵、多项式等的运算。
链表链表 是由许多相同数据类型的元素按照特定顺序排列而成的线性表,其在内存中是不连续与随机存储的。
这样就不能像数组那样随机读取数据,而要 按照顺序 找到所需数据。
单向链表单向链表是由节 ...
2f1f22b262c5c5f48f1931f0a262bffc5efb0785a6077000bac24df2c1c1b12e419752508b227eefa5fd07a9178e68adb60c61d5bf582f664dc7360ed18304aa4016f2826bb5b443c18695456b2cfda4ed3148ca754051077fb030edd58a6ff8851ae47ee77e32f09ca00f0f3ff0fcccb619e6fdfc0dd73792cff82b423d879219add5dc54bbf93a327b756d7b232d6ab43c79ca4c49ac675b050be0b90633af6be62751013cb149793c83ad84d10949579f6be958792e8596b6927910b5e720f52467b975d75c6f6f4f1131179091329ceb5ed4d24dc7635e922be21613073fb170952b6591db95dbe9334060787e177d3b9c476638b0b52 ...
2f1f22b262c5c5f48f1931f0a262bffc5efb0785a6077000bac24df2c1c1b12ee922f5ca5ccc2c491b07646ec4ca696797f25b2d9021f75498340a50e73b9b37b3b191cb35011a7390aa110945b1619759fc71f55cca02d7f0d7f115397ff54fe04749cac0073ac681319915d6ab8615f1f5fe99eadcf733600ead541bfff8d62b6b103e98b324a2a81b2af02a33eeec1a275beaf6e007c5646633cbd36e0d29dd1fa0d5f5fa5c0e4803f7873e5d08dc024ef35c97a6d84d725b2d6cbb5350f127e0379d9348ded9939b5b9377544eac276625a5304d19bd3ee44c4428787bf8b699628c0c31cf5d82adb240abb88e7f37a46c3f27f43ae08 ...
本文介绍 Checkstyle、PMD、FindBugs 三款主流的 Java 静态分析工具,以及 SourceMonitor 代码度量工具,Simian 代码重复检查工具等。
Jenkins 安装 Java 代码质量分析工具在 Java 世界中,Checkstyle、PMD、FindBugs 插件是三款主流的静态分析工具。
1、Checkstyle 擅长检查编码标准和约定,编码行为以及其他的一些质量指标(如代码复杂度)。
Checkstyle(https://checkstyle.sourceforge.net/ ) 是 SourceForge 下的一个项目,提供了一个帮助 JAVA 开发人员遵守某些编码规范的工具。
CheckStyle 检验的主要内容包括:Javadoc 注释、命名约定、标题、Import 语句、体积大小、空白、修饰符、块、代码问题、类设计和混合检查(包括一些有用的比如非必须的 System.out 和 printstackTrace)。
在 Jenkins 中安装 CheckStyle 插件并重启。
在项目中配置 pom.xml (可选)
<plug ...








