一、锁的使用
Java的多线程环境下,由于共享资源的竞态可能导致错误的结果。因此锁的使用就是保护临界代码,这个就不再赘述。
代码: 没有锁的时候,临界区没有保护,可能出现错误的结果(出错概率跟你的并发程度有关,小概率事件),尽管代码比较简单,可以通过其他手段来规避多线程问题,这里还是以这个代码为例,仅仅用来说明多线程问题
理解Java线程间的通信
多个线程间肯定是需要通信的,回忆一下我们的并发编程模型里的流水线工作模式(流水线工作模式),我们的线程在遇到io阻塞的时候,肯定不能在那边一直等着,得出让自己的cpu资源,等到io完成了,再把任务交给下一个工作线程,我们试着来实现下看看。
写给计算机专业毕业生的22条宝贵建议
自从毕业后,人们一直问我:“现在做什么?”我的回答是毫不含糊的:“我不知道。”“我曾经以为,当我完成硕士学位的时候,我就知道该怎么做了。”我以为我会成为一个“大师”。
可是,我错了。学校并没有让我为毕业后的世界做好准备。学校的学术环境能够提供持续的反馈——你稍微偏离了轨道,有人肯定会告诉你,甚至引导你到正确的轨道上。在现实生活中,我害怕自己会做出一系列错误的决定,而当有人指正你的时候已经为时已晚。一个错误的工作选择可能会让我浪费几年的时间,甚至错过许多更好的发展机会。
tensortFlow安装和开发环境配置
古人云,工欲善其事必先利其器,想要开始一个TensorFlow程序,一个好的开发工具是必不可少的。古人又云,万事开头难。如果你之前没有任何Python工程经验,你会发现看了很多入门文章,却不知道如何下手。今天就介绍下如何把TensorFlow工程环境搭建起来,剩下的就靠自己实践啦。
其实运行TensorFlow工程也就是运行一个Python工程,我大概看了下Python语法,用起来跟php、java没什么两样,大概是一些基本的数据类型,循环,条件等等,于是你可以使用pycharm很轻易的写出一段hello world!出来,但是你怎么去运行TensorFlow呢?
继续阅读“tensortFlow安装和开发环境配置”
spring boot应用在 POST请求的Invalid CORS request的问题
继上一篇遇到的Invalid CORS request之后,很久没有遇到这个问题了,今天又遇到了这个问题。上次问题是因为nginx没有把host信息代理给后面的java应用导致的,https://huster.top/htmls/511.html,而这次居然不是这个问题,检查了下 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;该有的配置都有。
这就奇怪了,就是为什么呢?
现象: GET请求没有问题。POST请求下在http下是好的,在https报403 Invalid CORS request错误。刚开始,我并没有意识到是http和https的问题,而是集团有日常、预发环境。日常验证是http验证的,一切正常。上到预发就发生了这个问题,排查其他配置、差异什么的走了一些弯路。
Mac下Pip的报错问题
想试试TensorFlow来着,结果在安装的时候就悲剧了。先安装Python 2.7.10版本。然后试试pip -v 发现报错:
ValueError: invalid truth value 'true #\xe5\x8f\x96\xe6\xb6\x88pip\xe7\x89\x88\xe6
\x9c\xac\xe6\xa3\x80\xe6\x9f\xa5\xef\xbc\x8c\xe6\x8e\x92\xe9\x99\xa4\xe6\xaf\x8f
\xe6\xac\xa1\xe9\x83\xbd\xe6\x8a\xa5\xe6\x9c\x80\xe6\x96\xb0\xe7\x9a\x84pip'
并发编程模型(转载)
这篇文章写的可是真好,把以前模模糊糊的概念弄的很清晰
从ThreadPoolExecutor的invokeAll方法说开去:如何等待多个并发任务结束并收集结果
ThreadPoolExecutor的invokeAny方法会返回第一个完成的任务的结果,与之对应的是invokeAll方法,返回的是所有任务的执行结果。主线程会阻塞,一直到所有任务都执行完毕。 我们总结下,想要等待所有任务都完成并且开始处理结果到底有几种办法。
认识ExecutorCompletionService返回最快的结果
场景: 我们用多线程来做一次搜索,一共有5个搜索引擎可用,我们运行多线程程序,哪个搜索引擎最先返回搜索结果就用哪个结果,剩余的4个结果已经不重要了,可以放弃了。这种场景可用ThreadPoolExecutor.invokeAny方法。
继续阅读“认识ExecutorCompletionService返回最快的结果”
Java里的Join的执行顺序问题
最近在看Java多线程的同步工具,正好看到了CountDownLatch和Join的区别,看到main线程里join的调用,写了几个例子,帮助
理解join的执行。