<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>工具 on bystander&#39;s blog</title>
    <link>http://blog.leaver.me/tags/%E5%B7%A5%E5%85%B7/</link>
    <description>Recent content in 工具 on bystander&#39;s blog</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Sun, 14 Aug 2016 17:33:52 +0000</lastBuildDate>
    <atom:link href="http://blog.leaver.me/tags/%E5%B7%A5%E5%85%B7/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>修改mac单应用创建线程的限制</title>
      <link>http://blog.leaver.me/2016/08/14/%E4%BF%AE%E6%94%B9mac%E5%8D%95%E5%BA%94%E7%94%A8%E5%88%9B%E5%BB%BA%E7%BA%BF%E7%A8%8B%E7%9A%84%E9%99%90%E5%88%B6/</link>
      <pubDate>Sun, 14 Aug 2016 17:33:52 +0000</pubDate>
      <guid>http://blog.leaver.me/2016/08/14/%E4%BF%AE%E6%94%B9mac%E5%8D%95%E5%BA%94%E7%94%A8%E5%88%9B%E5%BB%BA%E7%BA%BF%E7%A8%8B%E7%9A%84%E9%99%90%E5%88%B6/</guid>
      <description>&lt;p&gt;最近遇到一个问题,公司的 java 服务端应用,启动后,通过 &lt;code&gt;jstack pid |grep nid -c&lt;/code&gt;,可以看到大概创建了2044个线程,然后此时应用就会报错,提示无法创建更多线程, jvm 开始抛错.
查看 mac 的内存,发现还是够的.因为一般认为可创建的线程数=(总内存-其他占用的内存)/线程大小,所以内存够的情况下,应该是能创建的.&lt;/p&gt;
&lt;p&gt;google 一圈,发现mac 对单线程创建的线程是有限制的.理由应该是为了保持系统稳定性.主要有两个参数&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sysctl kern.num_threads&lt;/code&gt; 这个可以看一下,说明了系统能够创建的总共的线程,单个应用能够创建的线程是&lt;code&gt;sysctl kern.num_taskthreads&lt;/code&gt;,第二个参数就是导致我们创建不出来更多线程的原因,
因为2044+一些 gc 的线程,基本上刚刚达到这个极限.&lt;/p&gt;
&lt;p&gt;那么要么改程序,要么改参数.改程序这是不可能的..因为只有 mac 会有这个问题..该参数尝试通过&lt;code&gt;sudo sysctl -w kern.num_taskthreads=4096&lt;/code&gt;,修改,会发现提示是只读属性.google 了一圈,无解.&lt;/p&gt;
&lt;p&gt;最终意外解决..&lt;/p&gt;
&lt;p&gt;参考这里&lt;a href=&#34;https://support.apple.com/en-us/HT202528&#34;&gt;开启性能模式&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;nvram boot-args&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo nvram boot-args=&amp;quot;serverperfmode=1 $(nvram boot-args 2&amp;gt;/dev/null | cut -f 2-)&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;重启&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果想要恢复的话: &lt;code&gt;sudo nvram boot-args=&amp;quot;$(nvram boot-args 2&amp;gt;/dev/null | sed -e $&#39;s/boot-args\t//;s/serverperfmode=1//&#39;)&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;当时各种搜索,加打apple 支持电话.无解.搜索意外看到这个说明,说开启之后,可以支持更多服务应用之类的.猜测应该会改这个值..果然..改完之后,直接重启,这个限制会变成5000..完美解决..理论上,应该通过继续修改这个参数
是可以自定义这个值的.不过还没尝试.&lt;/p&gt;</description>
    </item>
    <item>
      <title>homebrew缓慢解决方案</title>
      <link>http://blog.leaver.me/2016/08/07/homebrew%E7%BC%93%E6%85%A2%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</link>
      <pubDate>Sun, 07 Aug 2016 17:29:55 +0000</pubDate>
      <guid>http://blog.leaver.me/2016/08/07/homebrew%E7%BC%93%E6%85%A2%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/</guid>
      <description>&lt;p&gt;mac 下使用 homebrew 作为包管理工具是非常好的. brew 用来安装非 gui 界面的程序. cask 用来安装 gui 界面的程序.但是这两个是使用的源在国外.所以你懂得..&lt;/p&gt;
&lt;p&gt;1.替换 homebrew 默认源&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cd /usr/local
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git remote set-url origin git://mirrors.ustc.edu.cn/brew.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里注意记一下以前的默认源.防止以后想换回来..&lt;/p&gt;
&lt;p&gt;默认源是
&lt;code&gt;https://github.com/Homebrew/brew&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;2.替换homebrew bottles默认源&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~/.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bashrc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里的.bashrc根据自己的情况替换.我是 zsh,就写到.zshrc 文件.&lt;/p&gt;</description>
    </item>
    <item>
      <title>mac使用全局代理</title>
      <link>http://blog.leaver.me/2016/08/07/mac%E4%BD%BF%E7%94%A8%E5%85%A8%E5%B1%80%E4%BB%A3%E7%90%86/</link>
      <pubDate>Sun, 07 Aug 2016 17:18:51 +0000</pubDate>
      <guid>http://blog.leaver.me/2016/08/07/mac%E4%BD%BF%E7%94%A8%E5%85%A8%E5%B1%80%E4%BB%A3%E7%90%86/</guid>
      <description>&lt;p&gt;自从入了 hexo 的坑.这玩意折腾的我不要不要的.各种诡异的问题,不过也顺便搞了搞其他的东西.看了很多相关的代理设置方案.最终沿用 windows 下的策略.最简单高效.&lt;/p&gt;
&lt;p&gt;mac 下的 ss 代理是只能设置浏览器代理的.对于一些不走 http 代理的.比如终端.或者其他软件.那么就需要将 ss 代理指定给其他软件或者终端使用.&lt;/p&gt;
&lt;p&gt;1.有一个 ss 代理
2.安装proxifier,直接 &lt;code&gt;brew cask install proxifier&lt;/code&gt;
3.安装好之后,添加Proxies 里面,把 ssh 的信息添加进入
4.添加 Rules, 我为了简单..直接将default 设置成走代理.这样,就啥也不用管了.等 hexo deploy 结束.再关闭proxifier 就行了.&lt;/p&gt;
&lt;p&gt;实际使用中.可以先开全局代理.然后知道哪个程序走了代理.需要走代理.然后单独设置即可.软件很好使用.&lt;/p&gt;
&lt;p&gt;不得不说, wall 越来越令人难受与不安.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sourceTree设置使用svn</title>
      <link>http://blog.leaver.me/2016/08/06/sourcetree%E8%AE%BE%E7%BD%AE%E4%BD%BF%E7%94%A8svn/</link>
      <pubDate>Sat, 06 Aug 2016 09:28:01 +0000</pubDate>
      <guid>http://blog.leaver.me/2016/08/06/sourcetree%E8%AE%BE%E7%BD%AE%E4%BD%BF%E7%94%A8svn/</guid>
      <description>&lt;p&gt;mac 下面不想安装多个 GUI 的 svn 客户端.所以使用 sourceTree 来做.&lt;/p&gt;
&lt;p&gt;sourceTree 对于 svn 只能从远程 url 拷贝.不能从本地来.所以在 gui 页面进行添加&lt;/p&gt;
&lt;p&gt;但是会发现报错&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Can&amp;#39;t locate SVN/Core.pm in @INC (you may need to install the SVN::Core module) (@INC contains:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;网上搜了一下.原因是 Perl 升级后 版本路径不对.于是执行&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level/SVN /System/Library/Perl/Extras/5.18/SVN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; sudo ln -s /Applications/Xcode.app/Contents/Developer/Library/Perl/5.18/darwin-thread-multi-2level/auto/SVN/ /System/Library/Perl/Extras/5.18/auto/SVN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里就是创建两个软连接.以便 sourceTree 识别.这里注意.如果你装了 Xcode 的 CommandLineTools, 而不是完整的 Xcode.
那么你的目录是没有这个原始文件的所以需要执行的&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level/SVN /System/Library/Perl/Extras/5.18/SVN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level/auto/SVN/ /System/Library/Perl/Extras/5.18/auto/SVN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;但是执行的时候还是会报错.因为新版本的 mac系统.已经不允许在 System 目录写文件了.除非关闭安全选项.这就得不偿失了.&lt;/p&gt;
&lt;p&gt;但是从stackexchange说法看.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir /Library/Perl/5.18/auto
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level/SVN /Library/Perl/5.18/SVN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo ln -s /Library/Developer/CommandLineTools/Library/Perl/5.18/darwin-thread-multi-2level/auto/SVN /Library/Perl/5.18/auto/SVN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个方法也是可以的.就是使用另一个目录作为软连接的目录.测试通过.同理,上面的真实目录根据你装的是 Xcode 还是 CommandLineTools 来替换.记录备用.&lt;/p&gt;
&lt;p&gt;参考:http://apple.stackexchange.com/questions/208300/issue-with-creating-a-symbolic-link-inside-system-folder&lt;/p&gt;</description>
    </item>
    <item>
      <title>执行简单sql的小工具</title>
      <link>http://blog.leaver.me/2015/07/12/%E6%89%A7%E8%A1%8C%E7%AE%80%E5%8D%95sql%E7%9A%84%E5%B0%8F%E5%B7%A5%E5%85%B7/</link>
      <pubDate>Sun, 12 Jul 2015 19:36:22 +0000</pubDate>
      <guid>http://blog.leaver.me/2015/07/12/%E6%89%A7%E8%A1%8C%E7%AE%80%E5%8D%95sql%E7%9A%84%E5%B0%8F%E5%B7%A5%E5%85%B7/</guid>
      <description>&lt;p&gt;工作过程中,有时候需要在本地执行一些简单的sql,但是不想下载太大的mysql这类客户端.恰好看到&lt;a href=&#34;https://code.google.com/p/java-ascii-table/&#34; title=&#34;java-ascii-table&#34;&gt;https://code.google.com/p/java-ascii-table/&lt;/a&gt;,完美辅助,于是写个了简单的工具.应该是支持sqlserver,oracle,和mysql的.mysql的测试了.其他的没有测试.还要继续完善.已经放在了&lt;a href=&#34;https://github.com/leizhiyuan/sqlclient&#34; title=&#34;sqlclient@github&#34;&gt;github&lt;/a&gt;上.&lt;/p&gt;
&lt;p&gt;代码很简单.就不贴了.&lt;/p&gt;
&lt;h2 id=&#34;使用说明&#34;&gt;使用说明&lt;/h2&gt;
&lt;p&gt;先打包,然后&lt;code&gt;https://github.com/leizhiyuan/sqlclient/blob/master/README.md&lt;/code&gt; 根据不同的情况写几个简单的bat就可以了.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;mysql
&lt;code&gt;java -jar sqlclient.jar -u &amp;quot;jdbc:mysql://localhost:3306/mysql&amp;quot; -n &amp;quot;name&amp;quot;&lt;/code&gt;
&lt;code&gt;-p &amp;quot;pass&amp;quot; -d &amp;quot;com.mysql.jdbc.Driver&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;oracle
&lt;code&gt;java -jar sqlclient.jar -u &amp;quot;jdbc:oracle:thin:@127.0.0.1:1521:XE&amp;quot; -n &amp;quot;name&amp;quot;&lt;/code&gt;
&lt;code&gt;-p &amp;quot;pass&amp;quot; -d &amp;quot;oracle.jdbc.driver.OracleDriver&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;sqlserver
&lt;code&gt;java -jar sqlclient.jar -u &amp;quot;jdbc:jtds:sqlserver://localhost:1433/sqlserver&amp;quot;&lt;/code&gt;
&lt;code&gt;-n &amp;quot;name&amp;quot; -p &amp;quot;pass&amp;quot; -d &amp;quot;net.sourceforge.jtds.jdbc.Driver&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;截图&#34;&gt;截图&lt;/h2&gt;
&lt;p&gt;交互式执行截图
&lt;img alt=&#34;交互式截图&#34; loading=&#34;lazy&#34; src=&#34;http://blog.leaver.me/images/sqlclient-interactive-screen.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;普通执行截图
&lt;img alt=&#34;一次执行&#34; loading=&#34;lazy&#34; src=&#34;http://blog.leaver.me/images/sqlclient-direct-sql-screen.jpg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;引用&#34;&gt;引用&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://code.google.com/p/java-ascii-table/&#34; title=&#34;java-ascii-table&#34;&gt;java-ascii-table项目&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://commons.apache.org/proper/commons-cli/&#34; title=&#34;commons-cli&#34;&gt;commons-cli命令行解析&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
  </channel>
</rss>
