- 博客(22)
- 收藏
- 关注
原创 第二章:深入理解Thread构造函数
线程的命名 线程的默认命名: Thread() Thread(Runnable target) Thread(ThreadGroup group,Runnable target) 如果没有为线程显示地指定一个名字,那么线程会以“Thread-”作为前缀与一个自增数字进行组合,这个自增数字在整个JVM进程中会不断自增。 关于修改线程名: public final synchronized void setName(String name) { checkAccess();
2020-10-21 20:03:36
319
原创 java高并发编程详解第一章知识要点总结
线程的介绍 线程是程序执行的一个路径,每一个线程都有自己的局部变量表、程序计数器(指向正在执行的指令指针)以及各自的生命周期,当启动了一个java虚拟机(JVM)时,从操作系统开始就会创建一个新的进程(JVM)进程,JWM进程中将会派生或者创建很多线程。 线程的生命周期 NEW RUNNABLE RUNNING BLOCKEDD TERMINATED 当我们用new关键字创建Thread对象,并且还没调用start()方法,此时线程为NEW状态。 NEW状态的线程通过调用start()方法进入R
2020-10-20 09:20:58
270
1
原创 679. 24 点游戏(leetcode)
题目描述 你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。 示例 输入: [4, 1, 8, 7] 输出: True 解释: (8-4) * (7-1) = 24 输入: [1, 2, 1, 2] 输出: False 代码 public class 二十四点游戏 { static final int GOAL = 24; static final double INFINITESIMAL = 1e-6; // 无穷小量
2020-08-22 23:53:12
546
原创 684. 冗余连接(leetcode)
题目描述 在本问题中, 树指的是一个连通且无环的无向图。 输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, …, N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。 结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v] ,满足 u < v,表示连接顶点u 和v的无向图的边。 返回一条可以删去的边,使得结果图是一个有着N个节点的树。如果有多个答案,则返回二维数组中最后出现的边。答案边 [u, v] 应满足相同的格式 u <
2020-08-20 23:37:17
274
原创 4. 寻找两个正序数组的中位数(leetcode)
题目描述 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 nums1 = [1, 3] nums2 = [2] 则中位数是 2.0 nums1 = [1, 2] nums2 = [3, 4] 则中位数是 (2 + 3)/2 = 2.5 代码 public class 两个正序数组的中位数 { public
2020-08-12 22:09:47
128
原创 98.复原ip地址(leetcode)
题目描述 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。 示例 输入: “25525511135” 输出: [“255.255.11.135”, "255.255.111.3 代码 public class 复原IP地址 { // ip地址的段数 static int SEG_COUNT = 4; List<String> ips = ne
2020-08-10 00:00:26
159
原创 5. 最长回文子串(leetcode)
题目描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 输入: “cbbd” 输出: “bb” 代码 class Solution { public String longestPalindrome(String s) { int n = s.length(); char[] arr = s.toCharArray();
2020-07-25 09:37:45
165
原创 1025.除数博弈(leetcode)
题目描述 爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。 最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作: 选出任一 x,满足 0 < x < N 且 N % x == 0 。 用 N - x 替换黑板上的数字 N 。 如果玩家无法执行这些操作,就会输掉游戏。 只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游戏。 示例 输入:2 输出:true 解释:爱丽丝选择 1,鲍勃无法进行操作。 输入:3 输出:f
2020-07-24 22:35:33
144
原创 (回溯法)批处理作业调度
public class FlowShop { static int n, // 作业数 f1, // 机器1完成处理时间 f, // 完成时间和 bestf; // 当前最优值 static int[][] m; // 各作业所需的 static int[] x; // 当前作业调度 static int[] bestx; // 当前最优作业调度 static int[]
2020-07-24 22:02:51
155
原创 (回溯法)图的n着色问题
public class Coloring { static int n, // 图的顶点数 m; // 可用的颜色数 static boolean[][] a; // 图的邻接矩阵 static int[] x; // 当前解 static long sum; // 当前已找到的可m着色的方案数 public static long mColoring(int mm) { m = mm; sum =
2020-07-24 22:01:31
750
原创 (迭代回溯)n皇后问题
public class NQueen2 { static int n; // 皇后个数 static int[] x; // 当前解 static long sum; // 当前已找到的可行方案数 public static long nQueen(int nn) { n = nn; sum = 0; x = new int[n + 1]; for (int i = 0; i < n; i++) x[i
2020-07-24 21:58:25
295
原创 (回溯法)递归解决n皇后问题
public class NQueen1 { static int n; // 皇后个数 static int[] x; // 当前解 static long sum; // 当前已找到的可行方案数 public static long nQueen(int nn) { n = nn; sum = 0; x = new int[n + 1]; for (int i = 0; i < n; i++) x[i
2020-07-24 21:57:04
488
原创 (递归和分治)合并排序
public class MergeSort { static Comparable b[]; /** * 递归方式 * @param a * @param left * @param right */ public static void mergeSort(Comparable a[], int left, int right) { if (left < right) { int i
2020-07-24 21:55:28
358
原创 (递归和分治)快速排序
public class QuickSort { static Comparable[] a; public static void quickSort(int p, int r) { if (p < r) { int q = partition(p,r); quickSort(p,q - 1); quickSort(q + 1,r); } } private st
2020-07-24 21:52:44
183
原创 (动态规划)矩阵连乘问题
public class MatrixQuestion { static int n; // 矩阵数量 public static void MatriaxChain(int[] p, int[][] m, int[][] s) { for (int i = 0; i <= n; i++) { m[i][i] = 0; } for (int r = 2; r <= n; r++) { // 多少个矩阵相乘
2020-07-24 21:49:00
112
原创 (动态规划)电路布线问题
public class MNset { public static void mnset(int[] c, int[][] size) { int n = c.length - 1; for (int j = 0; j < c[1]; j++) { size[1][j] = 0; // 下面没有接线柱的时候,都为0 } for (int j = c[1]; j <= n; j++) {
2020-07-24 21:47:07
260
原创 最长公共子序列
public class LcsLength { static int[][] c; public static int lcsLength(char[] x, char[] y, int[][] b) { int m = x.length - 1; int n = y.length - 1; c = new int[m+1][n+1]; for(int i = 1; i <= m; i++) {
2020-07-24 21:43:22
163
1
原创 《设计模式》里氏替换原则
里氏替换原则 定义 定义1 如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。 定义2 所有引用基类的地方必须能透明地使用其子类的对象。 通俗点讲,只要父类能出现的地方子类就可以出现。 对定义的解释 1.子类必须完全实现父类的方法 什么意思呢?且看下列代码。 // 定义一个抽象的枪支类 public abstract class AbstractGun { public abstrac
2020-07-24 12:41:30
258
原创 《设计模式》(单一职责原则)
单一职责原则 定义:应该有且仅有一个原因引起类的变更 单一职责适用于接口、类 代码示例1(不满足的情况) public interface IPhone { // 拨通 void dial(String phoneNumber); // 聊天 void chat(Object message); // 挂断 void hangup(); } 示例1是不符合单一职责原则的。显而易见的是示例1中的接口具有拨通电话挂断电话以及聊天功能。将功能分类,可将拨通电话挂
2020-07-23 08:36:06
137
原创 回溯法解决装载问题的四种方式
1.无上界函数: /** * @author 042 * @date 2020/5/23 19:53 * @description 无上界函数 */ public class Loading { static int n; // 集装箱数 static int[] w; // 集装箱重量数组 static int c; // 第一艘轮船的载重量 static int cw; // 当前载重量 static int bestw; // 当前最优载重量
2020-05-23 23:55:12
1261
原创 守护线程
什么是守护进程? 可以被称作后台线程,具备自动结束生命周期的特性。 设置线程为 java虚拟机在线程全部是守护线程的时候退出 Thread thread = new Thread(()-> { while (true) { try { Thread.sleep(1); }catch (InterruptedException e){
2020-05-17 23:54:05
149
原创 《mysql必知必会》学习笔记第七章--第十二章
第七章:数据过滤 7.1组合WHERE子句 7.1.3 计算次序 SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。 解决:任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认计算次序,即使它确实是你想要的东西也是如此。使用圆括号没有什么坏处,它能消除歧义。 7.2 IN操作符 为什么要使用IN操作符?其优点具体如下。 ❑ 在使用长...
2020-04-23 12:28:44
502
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人