- 博客(10)
- 收藏
- 关注
原创 动态规划的一个简单实例java
如果一个问题可以分为多个子问题,这若干个子问题如果是相互独立的,那么我们可以使用分治的思想解决,如果分解的子问题之间并不是独立的,那么就可以使用动态规划来解决了。动态规划原理:一个最优策略的决策过程中产生的子问题的子策略必然也是最优的,简单的一个说明就是,最终的策略最优,必然是在前一个最优策略的基础上做出的最优策略。动态规划的一般步骤:1)描述最优解的结构2)对最优解的值进行递
2017-06-01 14:02:41
854
原创 java继承关系中静态代码块、非静态代码块的执行顺序
class Parent { private String name = setName(); private static Parent p = new Parent("父类"); public Parent() { } public Parent(String name) { System.out.println("父类构造器"); this.name =
2017-05-24 22:29:57
379
原创 servlet的初始化过程
1、Web Client 向Servlet容器(Tomcat)发出Http请求2、Servlet容器接收Web Client的请求3、Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中4、Servlet容器创建一个HttpResponse对象5、Servlet容器调用HttpServlet对象的service方法,
2017-05-24 16:46:39
2689
原创 spring中bean的初始化过程
Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类: 1、Bean自身的方法: 这个包括了Bean本身调用的方法和通过配置文件中的init-method和destroy-method指定的方法 2、Bean级生命周期接口方法: 这个包括了BeanNameAware、BeanFactoryAware、InitializingBean和Di
2017-05-24 16:42:33
355
原创 静态synchronized方法和非静态synchronized方法的锁对象不是同一个
静态synchronized方法的锁是Java文件对应的Class对象,而非静态synchronized方法的锁是是个实例对象,这两个锁并不是同一个,因此静态synchronized方法和非静态synchronized方法之间不会相互干扰验证public class Service { synchronized public static void printA() { //Class锁 t...
2017-05-21 17:32:21
4106
2
原创 Java多线程中join的用法
在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时计算,主线程会比子线程提前结束,如果主线程需要用到子线程返回的结果,就要用到join()方法了,这样就将异步的变为同步的了。比如下面这个例子,如果不用join(),我们将无法控制运行流程子线程随机休眠时间public class ThreadA extends Thread{ public vo
2017-05-21 16:06:35
650
原创 使用BlockingQueue,多个线程同时处理同一类型的多个资源
如果是单线程处理一批事情,例如,有16个日志需要处理,各个日志之间是独立的,假设处理每个的时间是1秒, 一共需要处理16秒才能处理完。现在使用多线程来加速处理时间,思路:创建4个线程,每个线程从一个任务列表中获取一个任务,进行处理,处理完后,再获取一个,直到任务被处理完。因为每个任务(处理日志)是独立的,因此,每个线程就是独占该任务资源,因此处理任务时并不需要加锁,需要加锁的是任务列表
2017-05-21 10:33:21
2121
原创 Java使用Condition唤醒指定线程
使用ReentrantLock实现同步首先创建一个功能类,用于实现线程的功能public class MyService { private Lock lock = new ReentrantLock(); public void methodA() { try { lock.lock(); //加锁,作用相当于synchronized Syste
2017-05-20 17:36:01
7573
原创 Java子线程和主线程交替输出(一个简单的实例)
实现主线程和子线程的交替输出打印,首先创建一个实现线程方法的Servicepublic class Service { boolean flag = false; //这是一个控制sub和mian的开关 public synchronized void sub(){ while(flag) { //因为flag初始值是false,所以当子线程获取锁进入时不会等待,会直接输出打
2017-05-20 16:42:19
3658
原创 Map按Key或者Value排序
今天做了一道算法题,简单总结一下思路题目如下:题目描述数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。输入描述:先输入键值对的个数然后输入成对的index和value值,以空格隔开输出描述:输出合并后的键值对(多行)输入例子:40 10 21 23 4输出例子:0 31 23 4题目的思路大概是这样的:1、首先...
2017-05-11 16:53:41
565
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人