Java应用
文章平均质量分 62
dosthing
do something useful
展开
-
Java Servlets简介
Java Servlet概念简介翻译 2023-10-10 15:03:37 · 162 阅读 · 0 评论 -
数据分片设计
数据分片设计,分片算法整合原创 2022-05-13 10:15:44 · 603 阅读 · 0 评论 -
查找java最耗费CPU线程的命令
查找java应用耗费CPU进程、线程的命令原创 2022-02-23 11:30:35 · 1942 阅读 · 0 评论 -
faas函数使用
faas简单快速使用指引原创 2022-01-03 12:50:01 · 1785 阅读 · 0 评论 -
面向对象六大原则
面向对象6大原则宗旨:高内聚,低耦合,最大限度复用代码,降低后续软件维护成本。单一职责原则(Single Responsibility Principle)明确每个类的功能角色定位,界定好职责边界。一款成功的软件犹如一个紧密协调的团队,每个团队成员各司其职,分工明确。专业的事情交给专业的人去做,这是面向对象单一职责原则的最好体现。这样的好处是,软件的每个功能都能够内聚起来,形成专一性,为后续功能升级或者Bug链路追踪定位提供便捷性。职责边界划分是一门艺术,在现实生活中,每个对象都与外界存在千丝万缕的原创 2021-08-21 18:13:32 · 312 阅读 · 0 评论 -
JSON Schema数据校验入门
快速开始我们用一个例子来介绍说明 JSON Schema,虽然不可能面面俱到,但是对JSON Schema的基本概念、语法、使用有个较为全面的了解是完全没问题的。这里假设我们有一个产品类目接口是用JSON Data格式来交互的,这个类目的产品信息字段有: 产品ID:productId 产品的名称:productName 产品的销售价格:price 可选字段的产品标签:tags 产品类目数据简单例子:{ "productId": 1, "produ..原创 2021-08-07 23:06:50 · 1958 阅读 · 0 评论 -
压缩算法算法
算法笔记–压缩算法定义压缩算法:在计算机科学和信息论中,用更少的比特来表示未经过压缩的源数据算法。完整的压缩算法包括压缩和还原的过程,如下图,http开启压缩可以显著提升传输效率。核心概念我们可利用资料的一致性,规则性,与可预测性去实现数据压缩。源数据越一致,亦代表其统计特性越集中。以影像压缩为例,其集中度代表有傅里叶变换的时域及频域、直方图、特征值数据压缩能够实现是因为多数现实世界的数据都有统计冗余。例如,字母“e”在英语中比字母“z”更加常用,字母“q”后面是“z”的可能性非常小。无损数据压原创 2021-03-25 22:11:39 · 1105 阅读 · 0 评论 -
二分查找算法
算法笔记–二分查找二分查找是对有序序列查找的一种高效方法,时间复杂度为 log2(n),它的核心思想是分而治之,逐渐细化,最终匹配结果。看图理解首先将数组对半分,判断目标值是在mid的左边,或者右边,或者等于mid值进一步细化,并采用同样的判断重复步骤,直至mid的值等于目标的值案例实践public class BinarySearch { public static void main(String[] args) { int[] a = {1,2,原创 2021-03-21 22:14:50 · 212 阅读 · 0 评论 -
快速排序算法
算法笔记–快速排序快速排序 是对 冒泡排序的一种改进,时间复杂度为 O(nlogn)。其核心思想是选定一个基准值,将所有比它小的放在左边,所有比它大的放在右边,然后将左右两边的数据递归调用直至完成排序。看图理解核心实现是两个指针索引,分别在左右两边,并向中间推进,当左边遇到比基准值大的,同时右边遇到比基准值小的,将它们值进行交换交换数据后,将指针索引继续向中间靠拢,并重复比较交换的过程直至两指针索引相遇为止,此时左边数据比基准值小,右边诗句比基准值大将左右两部分数据递归调用,原创 2021-03-21 14:13:24 · 223 阅读 · 0 评论 -
归并排序算法
算法笔记–归并排序归并排序一种有效、稳定的排序算法,其核心思想是分治思想,通过递归调用实现排序。归并排序的时间复杂度为 O(nlogn),适用于数据量大,并且对稳定性有要求的场景。看图理解核心排序,分而治之,引用了另一数组进行数据暂存,双指针引索引推进,实现两个无序数组排序递归思想,分组,由小到大进行排序对第三行两个一组的数据进行归并排序对第二行四个一组的数据进行归并排序整体进行归并排序动图描述整个过程解题:用一个数组来表示元素集合二分数组,分为原创 2021-03-21 12:16:38 · 390 阅读 · 0 评论 -
希尔排序算法
算法笔记–希尔排序希尔排序是插入排序的一种,它是针对直接插入排序算法的改进,看起来也比较抽象,现实生活中感觉比较类似的例子是扑克洗牌整理牌的过程。它的核心是在大方向分组有序,然后逐渐细化分组有序,最终达到统一有序。希尔排序时间复杂度是 O(n^(1.3-2)),空间复杂度为常数阶 O(1)。希尔排序没有时间复杂度为 O(n(logn)) 的快速排序算法快 ,因此对中等大小规模表现良好,但对规模非常大的数据排序不是最优选择,总之比一般 O(n^2 ) 复杂度的算法快得多。看图理解初始增量第一趟 gap原创 2021-03-21 11:08:59 · 232 阅读 · 0 评论 -
插入排序算法
算法笔记–再回顾插入排序插入排序也很符合人类的直觉,相比选择排序它看上去更加佛系,它的核心在于插入,就是从无序的元素中佛系取出一个元素然后插入到有序的元素中。这里仍然可以用一篮子苹果来形象描述这个过程,首先我们从篮子中随机取出一个,然后继续从篮子随机取出一个,这时手中有两个苹果,我们对他两按大小进行排序,然后继续从篮子随机取出一个,此时将第三个苹果按大小插入到前面排好序的苹果中去,重复此过程,直至篮子的苹果被拿完。对比可见选择排序在于挑,插入排序在于插。解题:用一个数组来表示元素集合佛系从数组中取原创 2021-03-20 19:41:24 · 209 阅读 · 1 评论 -
选择排序算法
算法笔记–再回顾选择排序选择排序很符合人类的直觉,它的核心就是从无序的元素中挑选出有序的元素排序,可以用一篮子苹果来形象描述,首先我们从篮子中挑选出最小的一个,然后继续从篮子中挑选出最小一个,这时手中就得到了两个比较小的苹果排序,重复此过程,直至篮子的苹果被挑选完,可见这样的挑选过程本身也是排序过程。解题:用一个数组来表示元素集合选定第一个元素,与数组其他元素遍历比较,找到最小的一个,然后交换,此时挑选出最小值选定第二个元素,与剩下的数组(篮子中的苹果)元素遍历比较,找到最小的一个,然后交换,此原创 2021-03-20 18:44:06 · 189 阅读 · 0 评论 -
冒泡法排序算法
算法笔记–再回顾冒泡法排序冒泡法是我们学习编程接触到的第一个排序算法,简单而形象,整个比对过程跟泉水冒泡十分形似。冒泡法排序首先拿第一个元素与相邻元素进行比较,如果它比较大,就相互交换,这样第一轮遍历下来,最大的值就确定了,第n轮也是如此,都是从第一个开始,一直比较到倒数第n个,这样最大的n个就排好了。解题:用一个数组来表示元素集合拿第一个元素与相邻的元素相比,循环遍历到数组最后,确定最大值拿第一个元素与相邻的元素相比,循环遍历到数组倒数第二个,确定次大值循环遍历直至数组完全排序时间复杂程原创 2021-03-20 17:50:36 · 286 阅读 · 0 评论 -
算法笔记--简单实现栈的先入后出(FILO,First In Last Out)功能
算法笔记–简单栈的先入后出(FILO,First In Last Out)功能stack 栈,是一个 先入后出(FILO,First In Last Out)的 有序列表,可以形象地理解为手枪的弹匣,装子弹是入栈,打枪是出栈。主要概念:栈顶(Top):允许插入和删除的一端,为 变化的一端。称为栈顶栈底(Bottom):另一端为 固定的一端,称为栈底单向链表如图所示:解题:栈的实现可以用数组、链表来实现定义一个数据存储类型,栈顶指针入栈:栈顶指针++出栈:栈顶指针–栈的优点:原创 2021-03-14 14:10:01 · 1580 阅读 · 0 评论 -
算法笔记--简单实现单链表的增删功能
算法笔记–简单实现单链表的增删功能链表也是一种线性的数据结构,节点与节点通过指针相连,从指针角度来看,链表可以分为单向链表、双向链表、循环链表。单向链表如图所示:解题:Java没有指针,使用对象引用实现定义一个头结点,链表长度计数器链表的插入:将尾结点的指向改为当前插入的节点链表的删除:找到删除节点,并将删除节点的前节点指向下一节点链表的有点:增删节点十分方便案例实践public class SimpleListDemo { public static void mai原创 2021-03-14 12:50:17 · 599 阅读 · 2 评论 -
求两个字符串匹配算法
算法笔记–求两个字符串匹配有如下字符串 ,判定 str1 中是否包含 str2,如果出现则返回第一次出现的位置,如果没有则返回 -1String str1 = "早安,打工人,打工魂!";String str2 = "打工";解题:使用暴力匹配先拿str2第一个字去str1挨个匹配匹配成功,则拿第 2 个字去匹配如果不匹配,则从头开始暴力匹配法优缺点:优点:简单,容易理解缺点:效率低下可以看到上图的描述,只要有一个不匹配,就从头开始再来,「回溯」次数太多。案例实原创 2021-03-13 23:19:08 · 789 阅读 · 0 评论 -
Mysql 性能优化分析
文章目录Mysql 性能优化分析思考1.硬件操作系统层面2.Mysql调优2.1性能瓶颈分析与优化2.2日志分析优化2.3查询优化 [连接](https://juejin.cn/post/6844903750839058446#heading-106)2.4建表优化2.5架构优化Mysql 性能优化分析思考性能分析主要是从硬件操作系统和应用软件方面着手:1.硬件操作系统层面硬件操作系统调优对其他应用软件也是一样的,主要从网络传输,运算速度、存储性能方面入手,涉及网卡带宽吞吐效率、CPU性能、内存容量原创 2021-03-13 17:36:50 · 294 阅读 · 1 评论 -
消息队列RabbitMQ、ActiveMQ、Kafka
消息队列消息队列(Message queue)是一种进程间或同一进程的不同线程间的通信方式,消息队列提供了异步的通信协议,也就是说消息的发送者和接收者不需要同时与消息队列交互,消息会保存在队列中,直到接收者取回它。队列可以用链表来实现,它又分为链式队列、循环队列、双端队列等。**功能特点:**应用耦合、异步消息、削峰/限流、高可用性(集群/分布式)常用消息队列 ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQAMQP协议概念AMQP(高级消息队列协议)是原创 2020-08-16 18:42:08 · 336 阅读 · 0 评论 -
Java网络编程实现
前言计算机网路实现了多个网络终端的互联,彼此之间能够进行数据交流。而网络应用程序就是在已连接的不同终端设备上运行的程序,这些网络程序相互之间可以进行数据交互。网络程序的数据交互则依赖于TCP/IP协议,在实际应用中TCP网络程序提供可靠的数据通信,而UDP网络程序则不保证数据的可靠性,但是协议简单、传输速度快(比如用在音视频数据传输,它们不需要很高的可靠性,偶尔丢帧是可以忍受的)。Serv...原创 2018-10-14 12:17:06 · 14032 阅读 · 0 评论 -
Java异常处理
前言在程序的生命周期内,总是避免不了发生各种异常,一个好的程序必须具备良好的容错能力,以提高系统运行的可靠性。Java提供了异常处理机制来帮程序员检查可能出现的错误,保证了程序的可读性和可维护性。它将异常封装到一个类中,当出现错误时(比如打开一个不存在的文件、网络Socket连接超时等)就会抛出异常。Java类库中的每个包都定义了异常类,所有这些类都是Throwable类的子类,它派生出了Ex...原创 2018-10-27 22:40:55 · 7599 阅读 · 0 评论 -
Java枚举类型
前言在众多编程语言中如果想选出一个最没有用的数据类型,那我觉得肯定是枚举类型了,因为通过定义常量的方式就可以替代枚举的定义。其实单从数值运算方面考虑枚举类型,它的存在确实没有什么必要,但如果从程序可读性角度来看,它就是程序员的福音,毕竟程序代码是给人看的,试想一下,用1~7来代表星期和用枚举类型来表示星期的直观性差异就知道了。此外在Java中枚举类型本质是以类的形式存在的,它的一个优点就是提供...原创 2018-11-01 23:27:31 · 6966 阅读 · 0 评论 -
Spring-boot-email邮件
前言电子邮件(e-mail)属于互联网一种最为典型的应用,虽然伴随着即时通信软件的广泛使用,它的通信功能有所减弱,但是在账号注册、账号安全以及工作对接方面仍然占有很大应用空间。电子邮件系统包含三个重要的组件,即用户代理、邮件服务器,以及邮件发送协议(如SMTP)和邮件读取协议(如POP3)。Spring-boot-email属于用户代理部分,使用SMTP、IMAP、MIME等协议进行邮件发送,...原创 2018-11-30 23:29:46 · 11713 阅读 · 0 评论 -
JSONP跨域请求
前言与跨域相反的是同源,浏览器出于安全性考虑都会选用同源策略,主要是限制cookie、DOM、JS对象的获取,此外AJAX请求也不能发送。显然同源策略限制了前端的向外拓展的能力,实际应用中可以使用跨域请求来实现对外拓展。跨域顾名思义就是请求域名不同,如果考虑到细节,同一域名不同端口、同一域名不同协议也算跨域。举个例子,当前项目的请求是自己的公司域名下的链接,但是又想引用百度或者其他开放的API...原创 2018-12-18 00:00:47 · 4789 阅读 · 0 评论 -
百度地图API使用样例
前言随着移动互联网的急速发展,对位置服务的需求越来越强烈,如美团、滴滴、共享单车等等一系列的互联网应用都是基于位置提供服务的。国内两大地图提供商百度地图、高德地图不仅仅在导航等应用提供基础的服务,还对外提供一些开放的位置服务的API,开发者可以利用这些第三方的API快速构建自己的位置服务应用。初识百度地图API基于百度地图位置服务开发应用,首先应当先到百度地图开放平台注册开发者账号,然...原创 2018-12-23 15:44:50 · 12479 阅读 · 2 评论 -
数据库设计三大范式
数据的概念对象object,也称为实体型。在现实世界中具有相同性质、遵循相同规则的一类事物的抽象称为对象。对象是实体集数据化的结果,比如学生、老师、课程等是对象。实例instance 是指对象中的每一个具体的事物,例如学生张三、李四。属性attribute 是实体的某一方面特征的抽象表示,例如学生的姓名、性别、班级、年龄等。主码primary key 能够唯一标识一个实体。次码...原创 2019-02-26 22:51:35 · 56456 阅读 · 6 评论 -
Hibernate知识梳理
前言Hibernate 是一个高性能的对象关系型持久化存储和查询的服务框架,能胜任大多数对象存储需求。ORM即Object、Relation、Mapping对象关系映射,它可以建立关系型数据与实体类之间的映射关系,方便进行数据库操作。优势特点:1.Hibernate 使用 XML 文件来处理映射 Java 类别到数据库表格中,并且不用编写任何代码。2.为在数据库中直接储存和...原创 2019-04-01 16:27:16 · 9216 阅读 · 0 评论 -
数据库知识整理
where条件查询知识汇总语法:where 条件表达式常用的运算符字符匹配符在where子句中使用匹配符like或not like可以把表达式与字符串进行比较,从而实现对字符串的模糊查询。其语法格式如下:Where 表达式 [not] like ‘字符串’ [escape ‘换码字符’]注意,比较字符串是不区分大小写的,如M%和m%是相同的比较运算符。...原创 2019-03-28 23:11:22 · 9315 阅读 · 0 评论 -
Javascript es6语法新特性总结
目录前言let命令const命令数组的特性前言随着2015年6月份发布的第一个ES6版本开始,新生代的JavaScript语言在编程中用得越来越多,众多浏览器也对ES6有良好的支持。那么ES6出来后,它有哪些新特性,有哪些需要注意的地方,在这里做一个总结。let命令es6为我们带来了let命令,与var命令类似,但是它声明的变量只在代码块中有效(块作用域),即局部变量声明的效果。{ l...原创 2019-05-30 23:51:27 · 11127 阅读 · 0 评论 -
OAuth 2.0 的解析与应用
文章目录前言授权解析如何授权使用与更新授权讲个例子总结前言互联网是一个巨头垄断的市场,市场资源大多被有实力的大公司支配着,比如google、Alibaba、Tencent等等,当我们想用它们的资源时,就需要用到授权。而OAuth 2.0是目前最流行的授权机制,用来授权给第三方应用,从而能够获取到授权方得用户数据信息。OAuth 2.0给第三方应用带来了巨大的便利,使我们的用户信息可以适用于整个...原创 2019-06-27 23:57:24 · 9068 阅读 · 0 评论 -
Java多线程实现
前言多线程的应用使程序拥有并发运行的能力,进而实现程序的多任务作业。在java中主要提供两种方式现实多线程,它们需要继承java.lang.Thread类或实现java.lang.Runnable接口。继承Thread类程序员启动一个新线程需要建立Thread实例,Thread类中常用的两个构造方法如下:Public Thread(): 创建一个新的线程对象Public Thr...原创 2018-10-13 15:43:25 · 3152 阅读 · 0 评论