JUST DO IT


  • 首页

  • 归档

  • 分类

  • 标签

  • 关于

  • 搜索

Java并发总结-底层原理

发表于 2019-08-31 | 分类于 Java并发

并发常见问题

如何减少上下文切换

减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。

  • 无锁并发编程。多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。

  • CAS算法。Java的Atomic包使用CAS算法来更新数据,而不需要加锁。

  • 使用最少线程。避免创建不需要的线程,比如任务很少,但是创建了很多线程来处理,这样会造成大量线程都处于等待状态。

  • 协程。在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换。

    阅读全文 »

Oracle数据治理

发表于 2019-07-22 | 分类于 数据库

表相关

| 系统名 | 表名 | 表类型 | 记录数 | 是否空表 | 表说明 |

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
select 'analyze table '||table_name||' compute statistics;' from user_tables where tablespace_name='PMSAlex' and INSTR(table_name, 'W_')>0;

SELECT
t1.SYSTEM_NAME 系统名,
t1.OBJECT_NAME 表名,
t1.OBJECT_TYPE 表类型,
t2.num_rows 记录数,
t2.ISNULLTB 是否空表,
t3.COMMENTS 表说明
FROM (SELECT
'Alex' SYSTEM_NAME,
OBJECT_NAME,
OBJECT_TYPE
FROM USER_OBJECTS
WHERE OBJECT_TYPE='TABLE' OR OBJECT_TYPE='VIEW'
ORDER BY OBJECT_TYPE,OBJECT_NAME) t1

LEFT JOIN (SELECT
TABLE_NAME,
num_rows,
(CASE num_rows WHEN 0 THEN 'Y' ELSE 'N' END) ISNULLTB
FROM user_tables) t2
ON t1.OBJECT_NAME = t2.TABLE_NAME

LEFT JOIN USER_TAB_COMMENTS t3
ON t1.OBJECT_NAME = t3.TABLE_NAME;
阅读全文 »

对象克隆

发表于 2019-07-20 | 分类于 Java深入

为什么要克隆?

  1. new出来的对象的属性都是初始化时候的值,当需要一个新的对象来保存当前状态的对象就要靠clone方法。
  2. 把这个对象的临时属性一个一个的赋值给我新new的对象可以是可以,但是一是麻烦,二是,通过源码发现clone是一个native方法,在底层实现,速度快。

注意:我们常见的Object a = new Object(); Object b = a;这种形式的代码复制的是引用,即对象在内存中的地址,a和b对象仍然指向了同一个对象。而通过clone方法赋值的对象跟原来的对象是同时独立存在的。

阅读全文 »

解决问题的一般套路

发表于 2019-07-20 | 分类于 其他

什么是问题

  1. 上下文 – 和问题相关的场景,指一组已经是明确已知的,关于问题的条件的描述(比如订单-产品-支付-库存肯定有关系)。
  2. 目标 – 指关于构成问题的结论的明确的描述(让系统更流畅,更高速的,更稳定的运行)。
  3. 障碍 – 指问题的正确解决方法不是显而易见的,必须通过一定的思维活动,才能找到答案。

如何定义问题

  1. 定义问题就是鉴别期望和现状的差异:

  2. 收集整理关于现状的可信的信息,而不要假设已经拥有完备的可信信息;

  3. 不暗示倾向于某种原因或者解决方法;

    阅读全文 »

ThreadLocal源码剖析

发表于 2019-07-14 | 分类于 Java并发

常用方法

  • get()方法用来获取ThreadLocal在当前线程中保存副本变量。
  • set()用来设置当前线程中副本变量。
  • remove()用来移除当前线程中副本变量。
  • initialValue()是一个protected方法,一般是用来在使用时进行重写的,它是一个延迟加载方法。
阅读全文 »

SimpleDateFormat线程安全问题

发表于 2019-07-12 | 分类于 Java并发

问题复现

官方说明:simple beautiful strong immutable thread-safe。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class SimpleDateFormatTest {
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

public static String formatDate(Date date) throws ParseException {
return sdf.format(date);
}

public static Date parse(String strDate) throws ParseException {
return sdf.parse(strDate);
}

public static void main(String[] args) throws InterruptedException, ParseException {
ExecutorService service = Executors.newFixedThreadPool(100);
for (int i = 0; i < 20; i++) {
service.execute(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for (int j = 0; j < 10; j++) {
try {
System.out.println(parse("2018-01-02 09:45:59"));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
});
}
// 等待上述的线程执行完
service.shutdown();
service.awaitTermination(1, TimeUnit.DAYS);
}
}
阅读全文 »

HashMap源码解析

发表于 2019-07-06 | 分类于 Java深入

容量和扩容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* The default initial capacity ‐ MUST be a power of two.
*/
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
/**
* The maximum capacity, used if a higher value is implicitly specified
* by either of the constructors with arguments.
* MUST be a power of two <= 1<<30.
*/
static final int MAXIMUM_CAPACITY = 1 << 30;
/**
* The load factor used when none specified in constructor.
*/
static final float DEFAULT_LOAD_FACTOR = 0.75f;

我们这里能看到,和 HashTable 一样有 Capacity 和 Factor 的设定,这里面我们的默认值也是 16 和 0.75 的值。

阅读全文 »

敏捷开发

发表于 2019-07-05 | 分类于 其他

关于敏捷开发

一般敏捷开发以两周为一个周期,称为一个迭代。在一个迭代中快速完成预估的工作量。敏捷开发的步骤如下:

  1. 需求澄清会:搞清楚用户需求。
  2. 迭代会:提炼出核心需求,把每个工作分解,并估算完成点数(人数×天数),开完会后录入Jira中管理。
  3. 站会:每天早上开一个短会,每个人讲一下昨天做了什么、今天要做什么、遇到了什么困难。根据站会的内容,同步Jira中对应任务的进度。
  4. 回顾会:让领导对这个迭代内做的产品进行评估,提出问题,同时每个人说一下这个迭代收获或者需要改进的地方。
阅读全文 »
1…678…13
Try.Catch

Try.Catch

孤单而灿烂

102 日志
16 分类
26 标签
© 2017 — 2023 Try.Catch
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
本站访客数 人次 本站总访问量 次
0%