- 博客(25)
- 资源 (36)
- 问答 (5)
- 收藏
- 关注
原创 图算法-Prim、Kruskal、Dijkstra、Floyd、Bellman
现实生活中,我们常常遇到一些涉及到图的问题;比如一个视频网站如何分配网络服务器,才能使得资源成本最小化;几个城市之间要修路,如何规划才能使得成本最小。另外现在是五一,有几个城市路线规划,在考虑路费时间等因素条件下,如何规划旅游路线。这些的种种问题,都可以化为图规划问题。前两个即最小生成树问题,后面一个即最短路径问题。最小生成树 最小生成树,即对于一个加权图,如何规划路线,使得图中每...
2018-04-30 23:56:17 483
原创 Hadoop的HA集群HDFS搭建-错误记录
Live Nodes显示为0 * 第一步:查看datanode日志tail -100 /home/hadoop-2.5.1/logs/hadoop-root-datanode-node2.log * 异常问题: * 原因:重复格式化。在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时...
2018-04-27 18:09:18 411
原创 hadoop集群-单词计数wordcount
开发环境 系统:CentOS release 6.5 jdk:jdk1.7.0_45 hadoop:2.5.2hadoop集群搭建 参照:https://blog.csdn.net/soundslow/article/details/80101146eclipse插件配置 由于需要使用跨平台文件传递,多以需要一个hadoop插件hadoop-eclipse-plugin-2.5.2...
2018-04-27 18:08:52 688
原创 Hadoop的HA高可靠性集群搭建(Hadoop+High availability+Zookeeper)
一.概述 部分转载自:http://eksliang.iteye.com/blog/22269861.1 hadoop1.0的单点问题 Hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作。在hadoop1时代,只有一个NameNode。如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了。这是hadoop1中的单点问题,也是hadoop1不可靠的...
2018-04-26 22:40:45 713
原创 路径搜索算法-A星算法
A*算法的核心就是f(M)=g(M)+h(M),g(M)表示当前节点到初始节点的最短路径大小,h(M)表示当前节点到终止节点的可能路径大小(即虚拟的,如欧氏距离,曼哈顿距离等)。即不仅仅考虑当前节点到初始节点的最短路径,还要考虑离终点的距离。而一般的路径查找方法只会考虑当前节点到初始节点的路径两个关键集合open和close 简单一句话即:open 往close 插入元素...
2018-04-25 12:23:18 2314
原创 遗传算法求解TSP问题
TSP问题(Travelling Salesman Problem)即旅行商问题,又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。参考:用遗传算法求解TSP问题 相关博客由于网上的结果只有路径...
2018-04-23 12:02:27 709
原创 集体智慧编程5-优化算法-爬山法、模拟退火、遗传算法
最优化算法的思想在于,我们往往并不需要得到最优解,而是得到一个近似最优解,来节省时间的开销。 * 随机算法 为了解决遍历引发的时间问题,有时候在没有严格要求的情况下,可以通过随机去一定的点,比较这些取的点数,总能找到一个近似最优解的情况。爬山算法 随机算法没有逻辑可寻,成本较低,但是效果较差。而爬山算法利用了数据的内在规律。就像爬山一样,为了,爬到上的最顶部,在到达一个点后...
2018-04-22 21:51:40 489
原创 并发编程实战15-重排序、happens-before
指令重排序 为了优化CPU的运行效率,在条件允许的情况下,直接运行当前有能力立即执行的后续指令,避开获取下一条指令所需数据时造成的等待3。通过乱序执行的技术,处理器可以大大提高执行效率。 比如:对于如下代码int a = 10 // 1 int b = 100 // 2int c = a // 3实际的执行过程可能会是:1-3-2,而不是:1-2-3;因为第一步获取a的值后...
2018-04-17 16:12:28 185
原创 并发编程实战14-LongAdder统计加法器-计数器jdk8
传统的原子锁AtomicLong/AtomicInt虽然也可以处理大量并发情况下的计数器,但是由于使用了自旋等待,当存在大量竞争时,会存在大量自旋等待,而导致CPU浪费,而有效计算很少,降低了计算效率。而LongAdder是根据ConcurrentHashMap这类为并发设计的类的基本原理——锁分段,通过维护一个计数数组cells来保存多个计数副本,每个线程只对自己的副本进行操作,最后汇总来得...
2018-04-17 11:46:56 931
原创 并发编程实战13-同步中的四种锁synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock
synchronized同步锁 synchronized属于悲观锁,直接对区域或者对象加锁,性能稳定,可以使用大部分场景。ReentrantLock可重入锁(Lock接口) 相对于synchronized更加灵活,可以控制加锁和放锁的位置可以使用Condition来操作线程,进行线程之间的通信核心类AbstractQueuedSynchronizer,通过构造一个基于阻塞的CLH队列容...
2018-04-17 09:58:58 670
原创 并发编程实战11-并发容器CopyOnWriteArrayList
一、同步容器和并发容器 在jdk早期,为了解决并发安全问题,引入了同步容器Vector和Hashtable。在JDK1.2中,引入了同步封装类,可以由Collections.synchronizedXxxx等方法创建,可以直接对ArrayList进行封装以达到同步。但是,同步容器有一个问题,过于严格,即完全串行执行,导致即便是在复合操作下,并没有线程安全问题,也会加锁。 常见复合操作如下:...
2018-04-11 15:37:52 298
原创 并发编程实战10-多线程中的任务分解机制ForkJoinPool详解
Fork/Join 模式类似于MapReduce,也相当于一种分而治之的理念,或者说就像二分查找、二路归并算法。通过将一个大量的计算分解为许多的小计算,分而治之,然后再合并,同时,这些分出来的每个小计算都是并行进行的,这样就大大增大了CPU的利用率。Fork/Join 模式有自己的适用范围。如果一个应用能被分解成多个子任务,并且组合多个子任务的结果就能够获得最终的答案,那么这个应用就适...
2018-04-10 22:35:07 900
原创 并发编程实战9-Java中的并发工具类
在JDK的并发包里提供了几个非常有用的并发工具类。CountDownLatch、CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段,Exchanger工具类则提供了在线程间交换数据的一种手段。一、等待多线程完成的CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作。 比如我们现在需要一个计算c=a+b总和的任...
2018-04-10 22:34:28 228
原创 并发编程实战8-ThreadLocal原理与使用-线程局部变量
首先,我的理解,ThreadLocal只是一个公用对象,但是并不是完全用来作为线程之间共享的。原因在于,它只是一种公用变量模板,每个线程只是拥有它的复制版(线程死亡后,复制版也随之死亡),而不是直接使用公用变量,这样就避免了共享安全问题。但是,为什么不让每个线程直接去创建自己的实例变量呢?主要是因为,线程进来时它自己可能并不清楚需要哪些变量,而且在线程执行完毕,还需要自己去销毁这些变量,这样...
2018-04-10 17:38:29 306
原创 并发编程实战7-线程之间的通信2-join加塞线程
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。t.join(); //使调用线程 t 在此之前执行完毕。 t.join(1000); //等待 t 线程,等待时间是1000毫秒一、为什么要用join()方法: 在很多情况下,主线...
2018-04-10 11:46:42 256
原创 并发编程实战6-线程之间的通信-深入解析Condition源码
Object类的几个方法notify方法:只会随机唤醒一个wait线程,然后此wait线程将会继续执行 notifyAll方法:会唤醒所有的wait线程,所有wait线程将会全部执行显示锁的condition对象对于Object类的wait和notify方法有一定的缺陷,即无法精确唤醒指定的线程。所以引入了lock的condition对象,可以对不同的条件进行判断,来选择唤醒不同的线...
2018-04-10 11:46:09 171
转载 Java中的读写锁
并发安全问题主要是出现在写的情况下,而读取数据并不影响数据的结果;另外,大高并发的情况下,大多数都是数据的读取,写操作是很少的,所以可以将数据的读写进行分离,将大大提高运行效率。读写锁又叫做共享锁和排它锁,即读取是线程共享的:可以多个线程一起读取,但是不能被写;写入是排他性的,只能有一个线程进行操作:既不能被读取,也不能被其他线程写入。三种:读读不互斥,读写互斥,写写互斥。 ...
2018-04-10 11:44:08 211
原创 并发编程实战4-自旋锁,死锁,以及锁重入详解
锁重入:也叫做递归锁 某个线程获得一个已经由它自己持有的锁对象,那么这个请求就会成功,即重入重入是对本线程来说,即本线程多资源可以多次加锁进入,而不会出现阻塞在JAVA环境下 ReentrantLock 和synchronized 都是可重入锁场景:比如数据库中,用户名和密码保存在本地txt文件中,则登录验证方法和更新密码方法都应该被加synchronized,那么当更新密码的时候需要验...
2018-04-09 21:14:32 725
原创 并发编程实战3-单例模式与线程安全性问题
单例模式是为了保证一个应用中只有一个实例对象,在单线程的情况下,只需对构造方法私有化,加上对象唯一指定就能实现,但是在多线程的情况下,就会出现问题指令重排序: 大多数现代微处理器都会采用将指令乱序执行(out-of-order execution,简称OoOE或OOE)的方法,在条件允许的情况下,直接运行当前有能力立即执行的后续指令,避开获取下一条指令所需数据时造成的等待3。通过乱...
2018-04-09 21:13:48 329
原创 并发编程实战2-Synchronized原理与使用
Synchronized分类:修饰实例方法、静态方法和代码块1、放在普通类方法上,内置锁就是实例对象2、修饰静态方法,内置锁为当前的class字节码对象Sequence.class3、修饰代码块,内置锁为括号里的对象锁分类:偏向锁、轻量级锁和重量级锁 Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的。但是监视器锁本质又是依赖于底层的操作系统的Mute...
2018-04-08 22:41:01 174
原创 并发编程实战1-多线程的周期、实现方式和意义
day01:线程的周期day02:创建线程的多种方式(7中):一般推荐采用Runnable接口或者Callable接口来实现多线程。西红丝鸡蛋汤:继承Thread类主线成为最简单的汤的做法,现在需要仿照这个做法,定做自己的直接继承,可以使用一些父线程的共同属性实现Runnable接口做汤的方法都知道,但是需要自己安排还可以继承其他类,可拓展性比较好由于接口内部...
2018-04-08 21:35:08 198
原创 一部电影晓生活-韩国
和科学技术不同,艺术并不直接促进社会的变革,但是却是一种无形的引导。然而欣赏艺术的能力却并不总是被常人所拥有,而作为八大艺术之一的电影,却显得格外亲民,这种不需要太多“艺术”细胞的东西,相对于美术绘画、音乐旋律等,更容易使人产生共鸣。就像音乐的风格随着时代的不同而改变一样,电影的发展在不同的时期,不同的社会也会有着千差万别,其中多多少少代表着不同社会的发展或者是人们期望发展的方向。...
2018-04-05 22:02:59 763
原创 hadoop学习记录2-Hadoop安装配置
安装前的环境:四台机器的时间一致;需要一台机器进行免密码登录,即可以访问任何一台机器,包括自己,而不需要输入密码。这样便于通过一台机器进行控制,而且避免每一次都需要输入密码。 时间一致: date查看时间ntpdate -u xx.xx.xx.xx同步xx.xx.xx.xx服务器的时间到本机,一般使用ntpdate -u ntp.api.bz。参看链接 设置免密码登录Setup pas...
2018-04-02 18:19:31 286
原创 hadoop学习记录1-基本原理
创始人:Doug cutting有两个有名的开源项目一个是搜索索引器Lucene,之后为了解决Lucene大规模数据问题,创建了Hadoop开源框架。其中Lucene是他妻子的名字,Hadoop是他儿子玩具大象的名字。Hadoop简介:两个重要的组成部分,存储和计算 分布式存储系统HDFS (Hadoop Distributed File System ) • 分布式存储系统 ...
2018-04-02 18:18:37 220
原创 海量搜索服务架构搭建2-SolrCloud集群搭建
平台:linux第一步,安装solr1.解压solr,路径solr-4.9.1\example\webapps的solr.war拷贝到tomcat的webapp下面启动2.将solr-4.9.1\example\lib\ext下面的jar包拷贝到solr在tomcat中解压的目录的WEB-INFO下面的lib里面3.修改WEB-INFO下面的web.xml里面修改solr/h...
2018-04-01 20:40:21 330
An_Introduction_to_Voice_Computing_in_Python
2019-01-24
风控算法大赛解决方案
2017-10-31
Adaboost 算法的原理与推导
2017-10-31
技术之瞳+阿里巴巴技术笔试心得
2017-09-22
sqljdbc4.jar
2017-07-14
opencv_python-3.2.0+contrib-cp35-cp35m-win_amd64.whl
2017-06-15
统计自然语言处理
2016-09-30
JAVASCRIPT实例自学手册
2016-09-30
jsp中连接跳转丢失项目名
2018-05-10
Java中如何动态修改JFrame的内容?
2017-05-06
Java中如何根据我点击的按钮呈现不同的JTable样式(一个JFrame中)?
2017-04-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人