Home
Live In a Dream
Cancel

Java并发编程笔记(线程篇)

什么是线程 线程是操作系统调度的最小单元。线程通常也被称为是轻量级的进程,在一个进程中可以创建多个线程,每个线程有自己的计数器,堆栈和局部变量,并且可以访问共享变量。处理器可以在线程上高速切换,感觉就像是不同的线程在同时执行。 随着硬件的发展,基于多核处理器以及超线程技术,计算机现今更擅长并行计算。如何利用好处理器上多个核心成了现在的主要问题。 一个线程在一个时刻只能运行在一个处理器核心上,...

【算法】字符串匹配之Z算法

求文本与单模式串匹配,通常会使用KMP算法。后来接触到了Z算法,感觉Z算法也相当精妙。在以前的博文中也有过用Z算法来解决字符串匹配的题目。 下面介绍一下Z算法。 先一句话讲清楚Z算法能求什么东西。 输入为一个字符串s,Z算法可以求出这个字符串每一个后缀与自身的最长公共前缀LCP,Z算法可以求出一个数组z,z[i]表示suffix(i)与字符串本身的最长公共前缀。 接下来,介绍Z算法的具体内容...

关于Java中Arrays.sort()方法TLE

最近一直在练用Java写题,今天无意发现一道很简单的二分题(链接),我一开始是直接开int[]数组调用Arrays.sort()去排序,没想到TLE了,原来是因为jdk中对于int[]的排序是使用快速排序的,jdk中相关调用源码如下 1 public static void sort(int[] a) { 2 DualPivotQuicksort.sort(a, ...

MySQL执行sql查询并上传至远程服务器

最近项目中有需要做一个shell脚本,可以对一个数据库执行sql操作,并将结果转为txt,筛选结果用tab隔开,保存至一个远程服务器上,以供其他人用Excel读取用txt中的内容。 MySQL中将结果保存下来,有两种方案,一种是在sql语句中增加INTO OUTFILE语句,并且可以定制化输出的格式。但是这种方法留下的文件在数据库所在的服务器上,而期望的是将文件放在执行脚本的机器上。 后来实...

vim技巧整理

习惯用vim来编辑代码,但总觉得自己一些编辑操作还是不够最优化,之前买了一本Pratical Vim,闲来无事的时候看看里面的一些vim技巧,读过之后,才发现自己其实vim还有很多地方没有掌握。 本文整理的一些技巧源自Pratical Vim一书以及自己平时实践所得。   普通模式 1.使用<C-a> <C-x>来对数字进行增加和减少 有时候代码中一些数字我...

Tomcat 配置用户名和密码

首先在tomcat的目录下找到tomcat-users.xml文件。 在文件的最下方添加两行如下代码,即可生成一个密码为admin,账户名为admin的账户,可以从tomcat主页面中进入管理界面 <role rolename="manager-gui"/> <user username="admin" password="admin" roles="manager-gu...

Homebrew常用命令

这里整理一下个人经常会用到的Homebrew命令   安装xxx $ brew install xxx   删除xxx $ brew uninstall xxx   更新xxx $ brew upgrade xxx   查看xxx的依赖包 $ brew deps xxx   搜索xxx(关键词) $ brew search ...

Git工作流程

Git工作流程 刚接触Git进行多人开发,可能会对工作流程有些无所适从,使用git进行开发的工作流程有很多种。 这里分享一下参考自一下segment fault此篇贴文中coder的回答。我觉得这种工作流程还是比较清爽的。 切换到自己的工作分支work $ git checkout work 开发 将所有修改提交到本地仓库 $ git commit -a 切换到master...

我使用的Chrome插件列表

AdBlock 用来屏蔽广告的,有一些网站会探测出你在使用AdBlock。如果一定要继续浏览的话,你可能需要暂停一下AdBlock   Vimium 非常推荐喜欢vim的用户试试看这款插件,它的主要特色是用类vim快捷键来管理chrome的常用操作,比如标签页的切换,新标签的打开,复制链接,搜索网页内容等等。我觉得是属于life changing级别的插件。   Synt...

从花式swap引出的pointer aliasing问题

上次,一个同学问我,你知不知道可以不用引入中间变量就可以实现swap? 我说,我知道,可以用加减法或者异或实现,像是这样 void mySwap(int &x,int &y) { x=x+y; y=x-y; x=x-y; } 或者这样 void mySwap(int &x,int &y) { x=x^y; y=x^...