自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 创建线程的方式四:使用线程池

创建线程的方式四:使用线程池好处:1.提高响应速度(减少了创建新线程的时间)2.降低资源消耗(重复利用线程池中线程,不需要每次都创建)3.便于线程管理corePoolSize:核心池的大小maximumPoolSize:最大线程数keepAliveTime:线程没有任务时最多保持多长时间后会终止面试题:创建多线程有几种方式?四种!class NumberThread implements Runnable{ @Override public void run() {

2021-10-25 18:07:36 141

原创 创建多线程方式三:实现Callable接口

创建线程的方式三:实现Callable接口-JDK 5.0新增如何理解实现Callable接口的方式创建多线程比实现Runnable接口创建多线程方式强大?call()可以有返回值的。call()可以抛出异常,被外面的操作捕获,获取异常的信息Callable是支持泛型的//1.创建一个实现Callable的实现类class NumThread implements Callable{ //2.实现call方法,将此线程需要执行的操作声明在call()中 @Override

2021-10-25 17:56:19 137

原创 多线程-线程通信:生产者消费者例题

/** * 线程通信的应用:经典例题:生产者/消费者问题 * * 生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品, * 店员一次只能持有固定数量的产品(比如:20),如果生产者试图生产更多的产品,店员 * 会叫生产者停一下,如果店中有空位放产品了再通知生产者继续生产;如果店中没有产品 * 了,店员会告诉消费者等一下,如果店中有产品了再通知消费者来取走产品。 * * 分析: * 1. 是否是多线程问题?是,生产者线程,消费者线程 ..

2021-10-25 17:44:11 380

原创 多线程之sleep和wait的异同

线程通信的例子:使用两个线程打印 1-100。线程1, 线程2 交替打印class Number implements Runnable{ private int number = 1; private Object obj = new Object(); @Override public void run() { while(true){ synchronized (obj) { obj.notify();

2021-10-25 16:29:56 75

原创 解决线程安全问题的方式三:Lock锁 --- JDK5.0新增

解决线程安全问题的方式三:Lock锁 — JDK5.0新增面试题:synchronized 与 Lock的异同?相同:二者都可以解决线程安全问题不同:synchronized机制在执行完相应的同步代码以后,自动的释放同步监视器Lock需要手动的启动同步(lock()),同时结束同步也需要手动的实现(unlock())2.优先使用顺序:Lock  同步代码块(已经进入了方法体,分配了相应资源)  同步方法(在方法体之外)面试题:如何解决线程安全问题?有几种方式class Window

2021-10-23 11:41:09 57

原创 线程安全之死锁

演示线程的死锁问题1.死锁的理解:不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁2.说明:1)出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续2)我们使用同步时,要避免出现死锁。public class ThreadTest { public static void main(String[] args) { StringBuffer s1 = new StringBuffer();

2021-10-23 11:37:52 73

原创 线程安全之(使用同步机制将单例模式中的懒汉式改写为线程安全的)

使用同步机制将单例模式中的懒汉式改写为线程安全的public class BankTest {}class Bank{ private Bank(){} private static Bank instance = null; public static Bank getInstance(){ //方式一:效率稍差// synchronized (Bank.class) {// if(instance == nu

2021-10-23 11:15:08 64

原创 线程安全问题及处理方法

同步代码块处理实现Runnable的线程安全问题例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的方式1.问题:卖票过程中,出现了重票、错票 -->出现了线程的安全问题2.问题出现的原因:当某个线程操作车票的过程中,尚未操作完成时,其他线程参与进来,也操作车票。3.如何解决:当一个线程a在操作ticket的时候,其他线程不能参与进来。直到线程a操作完ticket时,其他线程才可以开始操作ticket。这种情况即使线程a出现了阻塞,也不能被改变。4.在Java中,我们通过

2021-10-23 11:13:32 268

原创 创建多线程方法二(实现Runnable接口)

创建多线程的方式二:实现Runnable接口创建一个实现了Runnable接口的类实现类去实现Runnable中的抽象方法:run()创建实现类的对象将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象通过Thread类的对象调用start()比较创建线程的两种方式。开发中:优先选择:实现Runnable接口的方式原因:1. 实现的方式没有类的单继承性的局限性2. 实现的方式更适合来处理多个线程有共享数据的情况。联系:public class Th

2021-10-23 09:41:37 164

原创 多线程的常用方法以及调度

测试Thread中的常用方法:start():启动当前线程;调用当前线程的run()run(): 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中currentThread():静态方法,返回执行当前代码的线程getName():获取当前线程的名字setName():设置当前线程的名字yield():释放当前cpu的执行权join():在线程a中调用线程b的join(),此时线程a就进入阻塞状态,直到线程b完全执.

2021-10-23 09:10:56 108

原创 多线程的创建(一)

多线程的创建,方式一:继承于Thread类创建一个继承于Thread类的子类重写Thread类的run() --> 将此线程执行的操作声明在run()中创建Thread类的子类的对象通过此对象调用start()例子:遍历100以内的所有的偶数//1. 创建一个继承于Thread类的子类class MyThread extends Thread { //2. 重写Thread类的run() @Override public

2021-10-23 08:50:58 42

原创 记录我的错误

Exception in thread “main” com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry ‘5’ for key ‘PRIMARY’今天在练习javaweb 插入语句报了以下的错误 可是到mysql里查看却添加上了这条记录仔细看了看原来是多写了执行的语句把第十八行代码删掉重新运行成功...

2021-09-03 18:17:49 43

原创 c快速排序

#include <iostream>using namespace std;void swap(int k[],int l,int r){int temp=k[l];k[l]=k[r];k[r]=temp;}int partition(int k[],int low,int high){ int point=k[low]; while(low<high) { while(low<high&.

2021-05-04 20:46:50 69

原创 被3整除的子序列

链接:https://ac.nowcoder.com/acm/problem/21302来源:牛客网题目描述给你一个长度为50的数字串,问你有多少个子序列构成的数字可以被3整除答案对1e9+7取模输入描述:输入一个字符串,由数字构成,长度小于等于50输出描述:输出一个整数示例1输入复制132132输出复制33示例2输入复制99输出复制11示例3输入复制333333输出复制77.

2021-04-28 19:49:07 66

原创 A1046-shortest distance

题目描述1046 Shortest Distance (20 分)The task is really simple: given N exits on a highway which forms a simple cycle, you are supposed to tell the shortest distance between any pair of exits.输入格式Each input file contains one test case. For each case, the f

2021-04-20 21:32:13 60

原创 算法笔记-数组元素循环右移问题

#include <iostream>using namespace std;int main(){ int a[110]; int n,m,count=0;//count记录已经输出数的个数 cin>>n>>m; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=n-m;i<n;i++){//输出n-m号到n-1号 ...

2021-04-17 11:12:51 74

原创 数组默认的初始值问题

静态数组,全局数组 不初始化默认是0;而局部数组不初始化,默认的值时系统随机分配的垃圾值

2021-04-11 20:53:29 405

原创 sizeof

sizeof实际上是获取了数据类型在内存中所占用的存储空间

2021-04-11 20:27:12 60

原创 break和continue的区别和用法

break和continue的区别和用法:1.break用于跳出本层循环;而continue 用于跳出本次循环;注:break不会跳出其他层的循环;

2021-04-11 10:18:07 119

原创 动态规划

最少硬币问题【题目描述】使用3枚币值分别为 1、3、5的硬币兑换11,最少需要几枚硬币。【思路】确定状态 : -最后一步:最优策略中使用的最后一枚硬币ak -化成子问题:用最少的硬币依次从小面值拼到大面值 -状态:tmp[x]=最少用多少枚硬币拼出x 转移方程:tmp[i]=min{tmp[i-1]+1,tmp[i-3]+1,tmp[i-5]+1} 初始条件和边界情况:设初始值:tmp[0]=0因为转移方程无法求出tmp[0];若不能拼出来i,则tmp[i]为无穷大;.

2021-03-31 17:13:11 169

转载 Fence Repair-哈夫曼树

#include<iostream>#include<algorithm>#define MAX_N 1000using namespace std;int N, L[MAX_N];void init(){ cin>>N; for(int i=0;i<N;i++){ cin>>L[i]; }}bool complare(int a,int b){ return a>b;}void solve(){ /...

2021-03-26 19:53:04 118

原创 贪心算法

#include<iostream>using namespace std;#define MAX 2000char S[MAX+1];int main(){ int n; cin>>n; for(int i=0;i<n;i++) { cin>>S[i];//用数组来存放字母 } int a=0,b=n-1; while(a<=b){ bool vis...

2021-03-24 17:27:59 63

原创 贪心算法

求硬币个数有1元、5元、10元、50元、100元、500元的硬币各C1,C5,C10,C50,C100,C500枚。现在要用这些硬币来支付A元,最少需要多少枚硬币?假设本题至少存在一种支付方案。限制条件:0<=C1,C5,C10,C50,C100,C500<=10的9次方0<= A <= 10的9次方l例如:输入:C1 = 3 ,C2 = 2, C10 = 1 , C50 = 3, C100 = 0 ,C500 = 2 ,A = 620输出:6(5...

2021-03-19 17:31:01 55

原创 宽度优先遍历-迷宫的最短路径

迷宫的最短路径输出:22#include<bits/stdc++.h>#define INF 10000000using namespace std;typedef pair<int,int> P;char c[105][105];//表示迷宫的字符串的数组int N,M;int sx,sy;//起点坐标int gx,gy;//终点坐标int d[105][105];//到各个位置的最短距离的数组int dx[4]={1,0,-1,0},dy[4]={

2021-03-19 15:15:06 149

原创 lake counting -深度优先遍历

Lake CountingLake counting 问题思路:深度优先遍历举例:输入:10 12W........WW..WWW.....WWW....WW...WW..........WW..........W....W......W...W.W.....WW.W.W.W.....W..W.W......W...W.......W.输出:3#include <bits/stdc++.h>using namespace std;char .

2021-03-15 18:03:56 135

原创 蓝桥杯-数列求值

给定数列1, 1, 1, 3, 5, 9, 17, …,从第4 项开始,每项都是前3 项的和。求第20190324 项的最后4 位数字。思路:类似于斐波那契数列,但是可以不用数列,设置几个变量求值更简单#include <stdio.h>int main (){ int a,b,c,d; int i; a=1; b=1; c=3; for(i=4;i<20190324;i++) { d=(a+b+c)%10000; a=b;//依次成为下一个数a变b,

2021-03-12 18:03:16 167

原创 蓝桥杯-数的分解

把2019 分解成3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18 和 1001+1000+18 被视为同一种。思路:首先,三个数都不包含2和4,可设置一个函数过滤其次,三个数都不大于2019/3,三个数的关系为:i<j<2019-i-j最后,让次数循环累加#include<bits/stdc++.h>using namespace std;

2021-03-12 17:55:02 203 2

原创 试题 基础练习 Fibonacci数列 蓝桥杯

试题 基础练习 Fibonacci数列问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表示Fn除以10007的余数。说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。样

2021-03-10 19:28:48 203

原创 2021-03-09

#include <iostream>using namespace std;int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++) cout<<"+-"; cout<<"+"<<endl;; for(int j=1;j<.

2021-03-09 19:22:49 54

原创 升级三角形

//升级版三角形#include<iostream>using namespace std; int main(){ char c; cin >>c; //下面分两种情况,一种情况是字母的情况,另外一种情况是数字的情况 if(c>='A'&&c<='Z'){ for(int i=0;i<=c-'A';i++){ //画空格 for(int j =0.

2021-03-09 18:23:25 84

原创 组件化开发

1.组件化的使用<div id="app"> <!--3.使用组件--> <my-cpn></my-cpn> <my-cpn></my-cpn> <my-cpn></my-cpn> <my-cpn></my-cpn> <div> <div> <my-cpn></my-cpn> </

2021-01-30 18:08:02 60

原创 2021-01-18

1.let和var的区别:let有块级作用域,而var没有2.在ES6开发中,优先使用const,只有需要改变某个标识符时,用let3.const的使用和注意点:一旦给const修饰的标识符赋值后就不能修改用其修饰标识符必须赋值const name;❌const name=‘abc’;✔常量的含义是指向的对象不可修改,但可以改变对象内部的属性4.ES6对象字面量增强写法//1.属性的增强写法const name='abc';const age=18;const height=1

2021-01-18 11:35:43 50

原创 vue-computed属性

1.computed计算属性简单用法:<body> <script src="vue.js"></script> <div id="app"> <h2>{{firstName+' '+lastName}}</h2> <h2>{{firstName}} {{lastName}}</h2> <h

2021-01-16 21:43:41 57

原创 2021-01-13

1.v-show2.v-if3.v-bindv-bind:属性名=表达式<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>v-bind指令</title> <script src="vue.js" type="text/javas

2021-01-13 19:30:10 119 4

原创 2021-01-12

1.![在这里插入图片描述](https://img-blog.csdnimg.cn/20210112173438597.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tha2FfZA==,size_16,color_FFFFFF,t_702.3.v-text!](https://img-blog.csdnimg.cn/20210112

2021-01-13 19:29:46 78

原创 数据结构 图

无向图中,如果任意两个顶点之间都能够连通,则称此无向图为连通图。例如,图 2 中的无向图就是一个连通图,因为此图中任意两顶点之间都是连通的。有向图中,若任意两个顶点 Vi 和 Vj,满足从 Vi 到 Vj 以及从 Vj 到 Vi 都连通,也就是都含有至少一条通路,则称此有向图为强连通图。如图 4 所示就是一个强连通图。连通图是在无向图的基础上对图中顶点之间的连通做了更高的要求,而强连通图是在有向图的基础上对图中顶点的连通做了更高的要求。参考https://m.sogou.com/web/id=b805

2020-12-26 10:57:26 156

原创 #program预处理指令

#pragma comment。将一个注释记录放置到对象文件或可执行文件中。#pragma pack。用来改变编译器的字节对齐方式。#pragma code_seg。它能够设置程序中的函数在obj文件中所在的代码段。如果未指定参数,函数将放置在默认代码段.text中#pragma once。保证所在文件只会被包含一次,它是基于磁盘文件的,而#ifndef则是基于宏的。...

2020-11-10 16:54:19 1149

原创 统计二叉树中度为1,2的结点个数c++

#include<iostream> using namespace std;//字符类型#define TElemType char //二叉树的二叉链表的表示与实现typedef struct BiTNode{ TElemType data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;//先序创建二叉树 BiTree CreateBiTree(){ char ch; BiTree T; cin>

2020-10-24 20:26:17 1880

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除