ConcurrentLinkedQueue学习记

ConcurrentLinkedQueue学习记

package concurrentLinkedQueueTest;

public class User { private String userName; private String password;

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

}

package concurrentLinkedQueueTest;

import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue;

public class ConcurrentLinkedQueueTest {

private static Queue<User> queue;

// 基于链接节点的无界线程安全队列
static {
    if (null == queue) {
        queue = new ConcurrentLinkedQueue<>();
    }
}

/**
 * 初始化创建队列
 */
public static void init() {
    if (null == queue) {
        queue = new ConcurrentLinkedQueue<>();
    }
}

/**
 * 判断此队列是否有元素 ,没有返回true
 *
 * @return
 */
public static boolean isEmpty() {
    return (queue.isEmpty());
}

/**
 * 添加到队列方法,将指定元素插入此队列的尾部。
 *
 * @param u User对象
 * @return 成功返回true,否则抛出 IllegalStateException
 */
public static boolean add(User u) {
    return (queue.add(u));
}

/**
 * 获取并移除此队列的头 ,如果此队列为空,则返回 null
 *
 * @return
 */
public static User getPoll() {
    return (queue.poll());
}

/**
 * 获取但不移除此队列的头;如果此队列为空,则返回 null
 *
 * @return
 */
public static User getPeek() {
    return (queue.peek());
}

/**
 * 获取size,速度比较慢
 *
 * @return
 */
public static int getQueueSize() {
    return (queue.size());
}

public static void main(String[] args) {
    // 先判断队列是否有数据
    System.out.println("队列是否为空:" + !isEmpty());
    // 添加数据
    User u1 = new User();
    u1.setPassword("3333");
    u1.setUserName("zhangsan");
    queue.add(u1);
    // 再次判断队列是否有数据
    System.out.println("队列是否为空:" + !isEmpty());
    // 查看队列有多少条数据
    System.out.println("队列数据条数:" + getQueueSize());
    User u2 = new User();
    u2.setPassword("4444");
    u2.setUserName("lisi");
    queue.add(u2);
    User u4 = new User();
    u4.setPassword("5555");
    u4.setUserName("王五");
    queue.add(u4);
    User u3 = getPeek();
    System.out.println("userName=" + u3.getUserName() + ",password=" + u3.getPassword());
    // 把未删除的数据打印出来
    for (int i = 0; i < 3; i++) {
        User u5 = getPoll();
        if (u5 != null) {
            System.out.println("\n获取队列数据并删除:" + u5.getUserName() + "---" + u5.getPassword());
        }
    }
    // 再次查看队列有多少条数据
    System.out.println("队列数据条数:" + getQueueSize());
}

}

Read more

超快速,使用ChatGPT编写回归和分类算法

超快速,使用ChatGPT编写回归和分类算法

本文将使用一些 ChatGPT 提示,这些提示对于数据科学家在工作时非常重要。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 以下是一些示例ChatGPT 提示的列表以及数据科学家的响应。 ChatGPT 提示 为决策树回归算法生成 python 代码。 下面是使用scikit-learn在 Python 中进行决策树回归的示例代码: import numpy as np import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeRegressor # Generate random data rng = np.random.default_rng() x = 5 * rng.random(100) y = np.sin(x) + 0.

By Ne0inhk
力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

993.二叉树的堂兄弟节点 难度:简单 题目: 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。 我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。 只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。 示例: 示例 1: 输入:root = [1,2,3,4], x = 4, y = 3 输出:false

By Ne0inhk
1239.串联字符串的最大长度 关于字符串的回溯算法!

1239.串联字符串的最大长度 关于字符串的回溯算法!

题目: 给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串, 如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。 请返回所有可行解 s 中最长长度。 提示: 1 <= arr.length <= 16 1 <= arr[i].length <= 26 arr[i] 中只含有小写英文字母 示例: 示例 1: 输入:arr = ["un","iq","ue"] 输出:4 解释:所有可能的串联组合是

By Ne0inhk