NOT
剑指 Offer II 085. 生成匹配的括号
题目链接:剑指 Offer II 085. 生成匹配的括号 方法:递归 解题思路 通过选择当前加 '(' 或 ')',递归的计算所有答案。 注意:对于 ')' 的选择,只有当前 ')' 数量少于 '(' 时才可以选择; 代码 class Solution { public: vector<strin ......
Docker 命令
Docker 命令 用 WindTerm( https://github.com/kingToolbox/WindTerm/releases/tag/2.5.0 )连接阿里云:直接新建会话——输入IP端口——配置代理——连接——输入用户名密码就OK了。还能可视化的从云服务器下载文件到本地,好用。 进 ......
JUC7_CountDownLatch_CyclicBarrier_Semaphore使用CountDownLatch
CountDownLatch 概念 让一些线程阻塞直到另一些线程完成一系列操作才被唤醒 CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程就会被阻塞。其它线程调用CountDown方法会将计数器减1(调用CountDown方法的线程不会被阻塞),当计数器的值变 ......
证明 volatile 不具备原子性
假设一个简单场景:多个线程同时操作一个共享数据 public class AtomicTest { public static volatile int count; public static void main(String[] args) { for (int i = 0; i < 500; ......
stream流的案例
案例1: 代码实现; import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.stream.Collectors;public class stream案例1 { p ......
使用git为指定项目设置用户名和密码
在开发中,经常会有很多个项目,不同的项目可能对应不同的账号密码,全局配置就不适用了,那么,这时候我么需要针对项目取配置账号和密码 1、找到项目中.git文件夹,如果没有看到,估计是隐藏起来了,使用git init,就可以看到了。 进入.git文件夹 git config user.name ‘你的账 ......
JUC1_谈谈Volatile2_Volatile不保证原子性
Volatile不保证原子性 前言 通过前面对JMM的介绍,我们知道,各个线程对主内存中共享变量的操作都是各个线程各自拷贝到自己的工作内存进行操作后在写回到主内存中的。 这就可能存在一个线程AAA修改了共享变量X的值,但是还未写入主内存时,另外一个线程BBB又对主内存中同一共享变量X进行操作,但此时 ......
JUC1_谈谈Volatile3_Volatile禁止指令重排
Volatile禁止指令重排 计算机在执行程序时,为了提高性能,编译器和处理器常常会对指令重排,一般分为以下三种: 源代码 -> 编译器优化的重排 -> 指令并行的重排 -> 内存系统的重排 -> 最终执行指令 单线程环境里面确保最终执行结果和代码顺序的结果一致 处理器在进行重排序时,必须要考虑指令 ......
JUC1_谈谈Volatile4_Volatile的应用
Volatile的应用 单例模式DCL代码 首先回顾一下,单线程下的单例模式代码 /** * SingletonDemo(单例模式) * * @author: 陌溪 * @create: 2020-03-10-16:40 */ public class SingletonDemo { private ......
JUC2_谈谈CAS5_CAS底层原理
CAS底层原理 概念 CAS的全称是Compare-And-Swap,它是CPU并发原语 它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的 CAS并发原语体现在Java语言中就是sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮 ......
JUC3_谈谈原子类的ABA问题6_原子类AtomicInteger的ABA问题
原子类AtomicInteger的ABA问题 连环套路 从AtomicInteger引出下面的问题 CAS -> Unsafe -> CAS底层思想 -> ABA -> 原子引用更新 -> 如何规避ABA问题 ABA问题是什么 狸猫换太子 假设现在有两个线程,分别是T1 和 T2,然后T1执行某个操 ......
JUC4_ArrayList为什么线程不安全ArrayList线程不安全的举例
Collection线程不安全的举例 前言 1、当我们执行下面语句的时候,底层进行了什么操作 new ArrayList<Integer>(); 底层创建了一个空的数组,伴随着初始值为10 当执行add方法后,如果超过了10,那么会进行扩容,扩容的大小为原值的一半,也就是5个,使用下列方法扩容 Ar ......
JUC5_TransferValue是什么
值传递和引用传递 举例 /** * 值传递和引用传递 * @author: 陌溪 * @create: 2020-03-14-18:25 */ class Person { private Integer id; private String personName; public Person(St ......
JUC6_Java的锁Java锁之读写锁
独占锁(写锁) / 共享锁(读锁) / 互斥锁 概念 独占锁:指该锁一次只能被一个线程所持有。对ReentrantLock和Synchronized而言都是独占锁 共享锁:指该锁可以被多个线程锁持有 对ReentrantReadWriteLock其读锁是共享,其写锁是独占 写的时候只能一个人写,但是 ......
JUC6_Java的锁Java锁之公平锁和非公平锁
Java锁之公平锁和非公平锁 概念 公平锁 是指多个线程按照申请锁的顺序来获取锁,类似于排队买饭,先来后到,先来先服务,就是公平的,也就是队列 非公平锁 是指多个线程获取锁的顺序,并不是按照申请锁的顺序,有可能申请的线程比先申请的线程优先获取锁,在高并发环境下,有可能造成优先级翻转,或者饥饿的线程( ......
JUC6_Java的锁Java锁之可重入锁和递归锁
可重入锁和递归锁ReentrantLock 概念 可重入锁就是递归锁 指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取到该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁 也就是说:线程可以进入任何一个它已经拥有的锁所同步的代码块 ReentrantLock / Syn ......
JUC6_Java的锁Java锁之自旋锁
Java锁之自旋锁 自旋锁:spinlock,是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU 原来提到的比较并交换,底层使用的就是自旋,自旋就是多次尝试,多次访问,不会阻塞的状态就是自旋。 优缺点 优点:循环比较获取直到 ......
JUC6_Java的锁Synchronized无法禁止指令重排却能保证有序性
为什么Synchronized无法禁止指令重排,却能保证有序性 前言 首先我们要分析下这道题,这简单的一个问题,其实里面还是包含了很多信息的,要想回答好这个问题,面试者至少要知道一下概念: Java内存模型 并发编程有序性问题 指令重排 synchronized锁 可重入锁 排它锁 as-if-se ......
C++ 学习 第六天
今日学习内容:数组 一维数组 二维数组 结构体数组 增删和数据反向读取 数组 数组的分类:一维数组 二维数组 N维数组 定义:用于一组同质类型(同种数据类型)的元素的 数组的每一个数都是一个独立的内存空间都有一个单独的地址 一维数组 创建与赋值: 在创建数组number[5]指的是数组的长度为5,在 ......
python 判断STATA 变量标签 变量名 变量值标签中找关键字
import pyreadstat as pyreadstat import pandas as pd import json,sys def dumca(ab): dataframe, meta = pyreadstat.read_dta(ab) mc=meta.column_names retu ......
软件测试工程师怎样快速熟悉项目业务
一、初步进入软件测试行业的表现和遇到的问题 1.看到项目模块较多、功能较多,就怕就慌,不知道从什么地方下手 2.理解不了业务,不知道自己发现的是不是bug 3.只能找出简单的界面bug、易用性bug 4.效率低下,登记一个bug 需要好半天 5.项目没有任何文档,不知道怎么开展测试工作 你中了几点? ......
使用Navicat为MySQL数据库数据表添加外键时没有效果,没有约束效果
这个问题困扰了很久,到处再往上遍历最佳的解决办法 最后找了一个很好的解决办法 首先查看你的数据表使用的引擎是什么,按照一般的MySQL来说,默认使用的是InnoDB引擎,这样是不会出现上述错误。 我的数据库引擎使用的是MyISAM引擎这样就会导致在创建外键索引时,无法创建,及时语法不报错,但外键是没 ......
斯坦福 UE4 C++ ActionRoguelike游戏实例教程 11.认识GAS & 创建自己的能力系统
在这篇文章中,将会带你简单认识一下GAS(Game Ability System)的概念,但是我们并不打算深入学习UE中的GAS,我们准备创建自己的“Action System”,作为最轻量级的GAS系统,来更好的理解这一理念。 ......
表单设计器开源的定义和应用场景布局介绍
为了实现提质增效的办公自动化,表单设计器开源工具的应用变得广泛起来。在低代码开发市场昌盛发展的今天,不少企业期望通过快速、现成的快速配置表单工具实现高效率表单制作,那么,现在给大家介绍的这款开发易用性强、组件丰富、高效率、灵活度高的表单工具就是今天的主角了,感兴趣的朋友可以来了解下它的定义和应用场景 ......
一次完整的HTTP请求过程
一、过程 1.DNS解析 浏览器进行DNS域名解析,得到对应的IP地址 2.TCP三次握手 根据这个IP,找到对应的服务器建立连接(三次握手) 3.发起HTTP请求 建立TCP连接后发起HTTP请求(一个完整的http请求报文) 4.服务器响应HTTP请求 服务器响应HTTP请求,浏览器得到html ......
剑指 Offer 65. 不用加减乘除做加法
题目链接:剑指 Offer 65. 不用加减乘除做加法 方法:二进制运算 解题思路 对于两个数 $a$ 和 $b$,其无进位的二进制位的和为 no_c = a ^ b,有进位的二进制位的和为 c = a & b << 1;有 a + b = no_c + c; 但是由于不能使用加法,那么继续对 no ......
兔子产子问题
问题:有一对兔子,从出生后的第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假设所有兔子都不死,问30个月内,每个月的兔子的总数是多少。 设计:题目类型:迭代循环,首先可以画出表格求出每个月的兔子对数,小兔子表示当月出生的兔子对数,中兔子表示已经成长了一个月的兔子,老兔子表示达 ......
JUC1_谈谈Volatile1_Volatile和JMM内存模型的可见性
JUC(java.util.concurrent) 进程和线程 进程:后台运行的程序(我们打开的一个软件,就是进程) 线程:轻量级的进程,并且一个进程包含多个线程(同在一个软件内,同时运行窗口,就是线程) 并发和并行 并发:同时访问某个东西,就是并发 并行:一起做某些事情,就是并行 JUC下的三个包 ......
折半查找
一问题描述 存在一个数组内部保存着十个数然后输入一个数利用二分法查找找到的话输出那个数的下标如果没找到输出not be found 二设计思路 二分法将数组的最大和最小的角标定义出来通过将所输入的数与数组的中间值比较进行范围的选择如此循环最后会找出与输入的数最近似的数 三程序流程图 四伪代码实现 # ......