- 博客(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 290
原创 java高并发编程详解第一章知识要点总结
线程的介绍线程是程序执行的一个路径,每一个线程都有自己的局部变量表、程序计数器(指向正在执行的指令指针)以及各自的生命周期,当启动了一个java虚拟机(JVM)时,从操作系统开始就会创建一个新的进程(JVM)进程,JWM进程中将会派生或者创建很多线程。线程的生命周期NEWRUNNABLERUNNINGBLOCKEDDTERMINATED当我们用new关键字创建Thread对象,并且还没调用start()方法,此时线程为NEW状态。NEW状态的线程通过调用start()方法进入R
2020-10-20 09:20:58 231 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 497
原创 684. 冗余连接(leetcode)
题目描述在本问题中, 树指的是一个连通且无环的无向图。输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, …, N)的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v] ,满足 u < v,表示连接顶点u 和v的无向图的边。返回一条可以删去的边,使得结果图是一个有着N个节点的树。如果有多个答案,则返回二维数组中最后出现的边。答案边 [u, v] 应满足相同的格式u <
2020-08-20 23:37:17 232
原创 4. 寻找两个正序数组的中位数(leetcode)
题目描述给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例nums1 = [1, 3]nums2 = [2]则中位数是 2.0nums1 = [1, 2] nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5代码public class 两个正序数组的中位数 { public
2020-08-12 22:09:47 108
原创 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 133
原创 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 144
原创 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 125
原创 (回溯法)批处理作业调度
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 138
原创 (回溯法)图的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 713
原创 (迭代回溯)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 271
原创 (回溯法)递归解决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 451
原创 (递归和分治)合并排序
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 336
原创 (递归和分治)快速排序
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 163
原创 (动态规划)矩阵连乘问题
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 95
原创 (动态规划)电路布线问题
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 232
原创 最长公共子序列
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 140 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 226
原创 《设计模式》(单一职责原则)
单一职责原则定义:应该有且仅有一个原因引起类的变更单一职责适用于接口、类代码示例1(不满足的情况)public interface IPhone { // 拨通 void dial(String phoneNumber); // 聊天 void chat(Object message); // 挂断 void hangup();}示例1是不符合单一职责原则的。显而易见的是示例1中的接口具有拨通电话挂断电话以及聊天功能。将功能分类,可将拨通电话挂
2020-07-23 08:36:06 109
原创 回溯法解决装载问题的四种方式
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 1202
原创 守护线程
什么是守护进程?可以被称作后台线程,具备自动结束生命周期的特性。设置线程为java虚拟机在线程全部是守护线程的时候退出 Thread thread = new Thread(()-> { while (true) { try { Thread.sleep(1); }catch (InterruptedException e){
2020-05-17 23:54:05 128
原创 《mysql必知必会》学习笔记第七章--第十二章
第七章:数据过滤7.1组合WHERE子句7.1.3 计算次序SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。解决:任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认计算次序,即使它确实是你想要的东西也是如此。使用圆括号没有什么坏处,它能消除歧义。7.2 IN操作符为什么要使用IN操作符?其优点具体如下。❑ 在使用长...
2020-04-23 12:28:44 446
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人