Java多线程

简介

程序:是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。

进程:执行程序的一次执行过程,它是一个动态的概念,是系统资源分配的单位。

线程:通常在一个进程中可以包含若干个进程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是CPU调度和执行的单位。

多线程:多条执行路径,主线程和子线程并行交替执行。很多多线程是模拟出来的,真正的多线程是指有多个CPU,即多核,如服务器。如果是模拟出来的多线程,即在一个CPU的情况下,在同一个时间点,CPU只能执行一个代码,因为切换的很快,所以就有同时执行的错觉。

阅读更多

Java 注解与反射

注解 Annotation

作用

  • 对程序作出解释(类似于注释)
  • 可以被其他程序读取(如:编译器等)

使用方式

  • 注解以 “@注释名” 形式存在,如 “@Override”,有些可以添加一些参数值,如 “@SuppressWarnings(value=”unchecked”)”
阅读更多

静态代码块,构造代码块,构造函数及其执行顺序和逻辑

静态代码块:

  1. 随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。类调用时,先执行静态代码块,然后才执行主函数的。
  2. 静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。
  3. 静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。
  4. 一个类中可以有多个静态代码块(顺序由上至下)。

构造代码块

  1. 构造代码块的作用是给对象进行初始化。
阅读更多

每日一题:地下城游戏 (dp)

题意

给定权值矩阵,需要从左上角走到右下角,只能往右或往下走且权值会累加,问至少需要提前准备多少权值才能保证过程中不出现权值被耗尽的情况。

Solution

正着不太好写,可以尝试倒过来dp,$dp[i][j]$ 表示当前位置到终点至少需要准备多少权值,这样每个点要么从下边转移,要么从右边转移,选择最小的那个点转移即可,过程中需要保证权值至少为1,得到转移方程:$dp[i][j] = max(min(dp[i+1][j],dp[i][j+1])-mp[i][j],1)$。

阅读更多

每日一题:Contest (树状数组)

题意

$n$ 支队伍一共参加了三场比赛。
一支队伍 $x$ 认为自己比另一支队伍 $y$ 强当且仅当 $x$ 在至少一场比赛中比 $y$ 的排名高。
求有多少组 $(x,y)$,使得 $x$ 自己觉得比 $y$ 强,$y$ 自己也觉得比 $x$ 强,$(x, y)$, $(y, x)$算一组。

solution

阅读更多

每日一题:Protecting the Flower (贪心)

题意

一共有 $n$ 只牛在花坛旁边,第 $i$ 头牛每分钟破坏 $d_i$ 朵花,把第i头牛带回牛棚需要 $2 \times ti$ 这么多时间,每次只能带回一头牛,请问怎样能使得被破坏的花最少。

solution

以小化大,先考虑两头牛,先领 $a$ ,损失为:$2\times{t_a}\times{d_b}$,先领 $b$,损失为 $2\times{t_b}\times{d_a}$,故得到排序条件 ${a_t \times {b_d} < b_t \times {a_d}}$,最后模拟得出答案。

阅读更多

每日一题:货币系统 (背包dp)

题意

$n$ 种面额货币,数量无限,问最多保留几种,使得原来可以组成的仍然可以组成。($t<=20,n<=100,a[i]<=25000$)

solution

由于大的只会被小的组成,所以先排序,对于存在性问题就显然是完全背包了,dp[i] 表示是否能表示出 $i$ 价值,得到状态转移方程:$dp[i]|=dp[i-a[i]]$,对于已经可以表示出来对 $a[i]$,已经可以由小的组成,因此不需要在枚举。

阅读更多

每日一题:建筑抢修 (贪心)

题意

$n$ 栋建筑,第 $i$ 栋建筑需要 $s_i$ 时间修,截止到 $t_i$ 时间,问最多可以修多少建筑。

solution

我们可以类比成写作业,先截止的我们会先做,这是大体的贪心策略。但他并不是最优的,因为可能那一科会花你非常多的时间,够你做更多的科目,得不偿失。因此我们用优先队列维护做过的作业中花费时间最大的那份,当目前要做的作业时间不够的时候,与这个最大值比较看是否花的时间更少,可行的话就把这个塞进去,那个丢出来,这样做了同样多的作业却花了更少的时间,同时维护答案。

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×