算法 源码 编码java

Netty——5、源码分析

1、启动剖析 我们来看看 netty 中对下面的代码是怎样处理的。 public class Test { public static void main(String[] args) throws IOException { //1 netty 中使用 NioEventLoop (简称 nio b ......
源码 Netty

JAVA-去掉小数点后面多余的0

```java @Test public void TestCompare() { // JAVA中Float类型的小数超过4位(前面都是0,例如0.0001)会转成科学计数法存储 Float f = 0.0001F; // 转BigDecimal的时候避免精度丢失,先转成String类型 Stri ......
小数点 小数 JAVA

Java数据类型转换,字符串(String)转日期(Date)

Java类型转换,字符串(String)转日期(Date) ```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateTime ......
字符串 字符 日期 类型 数据

Java解析json数据(fastjson2)

# Json数据 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它以易于阅读和编写的方式来表示结构化数据,常用于在不同系统之间进行数据交互和传输。 JSON使用键值对的方式来组织数据,具有以下几个特点: - 具有简洁的语法:JSON使用了人类可读的文本格 ......
fastjson2 fastjson 数据 Java json

Java学习——方法

# 方法 ## 一、方法的定义 ```java 修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体 ... return 返回值; } ``` 方法包含一个方法头和一个方法体。下面是一个方法的所有部分: - **修饰符:**修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访 ......
方法 Java

Java线程实现方式

在Java中,可以通过以下几种方式实现线程: 1. 继承`Thread`类:可以创建一个继承自`Thread`类的子类,并重写`run()`方法,在`run()`方法中定义线程的执行逻辑。然后通过创建该子类的实例,并调用`start()`方法来启动线程。 ```java public class M ......
线程 方式 Java

Java微服务

## 微服务技术 ###### 服务架构的发展 单体架构:将所有的功能都集成在一个项目里面开发,打成一个包部署 优点:架构简单,部署成本低 缺点:耦合度高 分布式架构:根据业务功能对系统进行拆分,将每个业务模块作为独立项目开发,称为一个服务 优点:降低服务耦合度,利于服务的升级和扩展 微服务是一种经 ......
Java

Java 设计模式实战系列—工厂模式

>在 Java 开发中,对象的创建是一个常见的场景,如果对象的创建和使用都写在一起,代码的耦合度高,也不利于后期的维护。我们可以使用工厂模式来解决这个问题,**工厂模式是一个创建型模式**,将对象的创建和使用分离开来,降低代码的耦合度,提高程序的可维护性和扩展性。 # 工厂模式应用场景 * 调用方无 ......
模式 设计模式 实战 工厂 Java

数据结构与算法 - 链表

# 双链表的的基本结构 从 STL 源码抽出的基本双链表结构 ## 代码 ```c++ #ifndef _GRAVER_GLIB_LIST_H_ #define _GRAVER_GLIB_LIST_H_ #include #include "graver/util/log_util.h" names ......
数据结构 算法 结构 数据

Linux停止java应用脚本

脚本如下: ~~~ #!/bin/bash appName=AppExample # 获取进程号 pid=`ps -ef | grep java| grep $appName | grep -v grep | grep -v PPID | awk '{print $2}'` # 遍历进程号使用kil ......
脚本 Linux java

用JAVA自己实现一套背压机制

单线程版本: > 一个生产者,一个消费者 ~~~ import lombok.SneakyThrows; import java.util.ArrayList; import java.util.List; import java.util.Random; public class Backpres ......
机制 JAVA

Java通配符? extends SomeClass或? super SomeClass

通配符的使用是用于具体的泛型对象或者类型声明,而非具体的类型定义; 比如List<? extends Foo> list,它表示list对象(或者形参对象或返回值)是一个生产者,它只能给外部提供泛型数据,即可以调用list.get()方法,而无法调用list.add(T xx)方法 ,因为能调用li ......
SomeClass 通配符 extends super Java

java替换word/doc文件中的内容

docx格式的文件本质上是一个XML文件,只要用占位符在指定的地方标记,然后替换掉标记出的内容,就能达到我们的目的 封装成工具类 import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.*; i ......
文件 内容 java word doc

linux源码编译安装Python3.9.6及pip

#### linux源码编译安装Python3.9.6及pip 1. 卸载之前的python ```shell sudo apt remove python3 sudo apt autoremove ``` 2. 安装依赖 ```shell sudo apt update sudo apt inst ......
源码 Python3 Python linux 9.6

决战圣地玛丽乔亚重新归来之Day58--算法回溯

电话号码 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 多少个数 ......
算法 Day 58

欧几里得(及其扩展算法)

# 欧几里得算法 - 算法内容 计算两个数的最大公约数的算法,也叫辗转相除法。即: gcd(a,b)=gcd(b,a%b)。 - 数学证明 设gcd(a,b)=d,则必定有:d|a且d|b,则必定有d|(ax+by)而a%b=a-a/b*b,所以d|(a%b),则d必定为b和a%b的约数,并且a%b ......
算法

Java标识符和关键字

|关键字|关键字|关键字|关键字|关键字| | | | | | | |abstract|assert|boolean|break|byte| |case|catch|char|class|const| |continue|default|do|double|else| |enum|extends|f ......
标识符 标识 关键字 关键 Java

算法导论-第22章-BFS和DFS

本章将介绍图的表示和图的搜索。图的搜索指的是跟随图中的边来访问图中的每个结点。图搜索是整个图算法领域的核心。22.1介绍图的两种表示方法:邻接链表和邻接矩阵。22.2介绍广度优先搜索(BFS)。22.3介绍深度优搜索(DFS)。 # 22.1 图的表示 对于图 $G=(V, E)$,有用两种标准表示 ......
导论 算法 BFS DFS

算法导论-第33章-最近点对问题

# 最近点对问题 **问题描述**:在 $n \ge 2$ 个点的集合 $Q$ 中寻找最近点对的问题,“最近”指的是欧几里得距离最小,即点 $p_1=(x_1, y_1)$ 和 $p_2=(x_2, y_2)$ 之间的欧几里得距离 $d=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}$ ......
导论 算法 问题

算法导论-第16章-贪心算法

求解最优化问题时候通常要经过一串步骤,每一步都有多种选择。对于很多问题来说,用动态规划求最优解就是杀鸡用牛刀,可以使用更简单的算法。 **贪心算法**(greedy algorithm)在每一步都做出当时看起来是最佳的选择。也就是说,它综述做出局部最优的选择,希望通过局部最优解得到全局最优解。 ** ......
算法 导论

算法导论-第15章-动态规划

**动态规划**(dynamic programming)的思想是**分治思想**和**解决冗余**。 - 与分治法相似的是 - 将原问题**分解为若干个子问题**,先求解子问题,然后从这些子问题的解得到原问题的解。 - 与分治法不同的是 - 经分解的子问题**往往不是相互独立的**。若用分治法来解 ......
导论 算法 动态

算法导论-第13章-红黑树

第12章介绍了一棵高度为$h$的二叉搜索树,它可以支持任何一种基本动态集合操作,如`SEARCH`、`PREDECESSOR`、`SUCCESSOR`、`MINIMUM`、`MAXIMUM`、`INSERT`和`DELETE`等,其时间复杂度均为$\Omicron(h)$。因此,如果搜素树的高度较低 ......
导论 算法

算法导论-第17章-摊还分析

本章主要涉及理论分析,感觉第3版讲的不是很好(也有可能是翻译的语句不通顺),这里搬运了知乎上的文章。 - https://zhuanlan.zhihu.com/p/536470404 - https://zhuanlan.zhihu.com/p/577232877 - https://zhuanla ......
导论 算法

算法导论-第14章-数据结构的扩张

本章讨论通过扩展红黑树构造出的两种数据结构。14.1节介绍一种支持一般动态集合上顺序统计操作的数据结构。通过这种数据结构,我们可以快速地找到一个集合中的第 $i$ 小的数,或给出一个指定元素在集合的全序中的位置。14.2节抽象出数据结构的扩张过程,并给出一个简化红黑树扩张的定理。14.3节使用这个定 ......
数据结构 导论 算法 结构 数据

算法导论-第21章-用于不相交集合的数据结构

21.1节描述不相交集合数据结构支持的各种操作,并给出一个简单的应用。21.2节使用一种简单链表结构来实现不相交集合。21.3节使用有根树来实现,使用树表示的运行时间理论上好于线性时间,然而对于所有的实际应用它确是线性的。 # 21.1 不相交集合的操作 一个**不相交集合数据结构**(disjoi ......
数据结构 导论 算法 结构 数据

算法导论-第4章-分治法

# 回忆 在2.3.1中,归并排序使用了分治法。在分治法中,当递归地求解一个问题,在每层递归中执行如下三步骤: - 分解(Divide):将问题划分为子问题,子问题的形式与原问题一样,只是规模更小。 - 解决(Conquer):递归地求解出子问题。如果子问题的规模足够小,则停止递归,直接求解。 - ......
导论 算法

算法导论-第6章-堆排序

# 6.1 堆及堆的性质 **(二叉)堆**可以看作完全二叉树,其存储结构通常是**数组**,表示堆的数组A中有两个重要属性:$A.length$表示数组元素的个数;$A.heap-size$表示有多少个堆元素在数组中,$0 \le A.heap-size \le A.length$。 ![Figu ......
导论 算法

算法导论-第7章-快速排序

# 7.1 快速排序的描述 对一个典型的子数组$A[p..r]$进行快速排序的三步分治过程: - **分解**:数组$A[p..r]$被划分为两个(可能为空)的子数组$A[p..q-1]$和$A[q+1..r]$,使得$A[p..q-1]$中的每一个元素都小于等于$A[q]$,而$A[q+1..r] ......
导论 算法

算法导论-第8章-线性时间排序

# 前言 此前我们已经学习了几种$\Omicron(n \log n)$的排序算法,这些排序算法都有一个有趣性质,在排序的最终结果中,各元素的次序依赖于它们之间的比较,我们将这类排序称为**比较排序(comparison sort)**。 8.1节将要证明**对包含$n$个元素的输入序列,在最坏情况 ......
导论 线性 算法 时间

算法导论-第9章-中位数和顺序统计量

一个包含 $n$ 个元素的集合中的第 $i$ 个**顺序统计量**指集合中的第 $i$ 小的元素。**最小值**是第 $1$ 个顺序统计量($i= 1$),**最大值**是第 $n$ 个顺序统计量($i = n$)。 9.1节将讨论从集合中找出最小值和最大值的问题。9.2节将分析一个实用的算法,它在 ......
中位数 导论 算法 顺序