win7和ubuntu双系统出现grup rescue问题

grub rescue> ls
(hd0) (hd0,msdos1) (hd0,msdos5) (hd0,msdos6) (hd1,msdos1) (hd0,msdos2) (hd0,msdos3) (hd1) ##我的硬盘是两块2T的,hd1上是win7 三个区,hd0上 装的是ubuntu和kubuntu
grub rescue> ls (hd1)/
文件系统未知 ##此处应该是英文
grub rescue> ls (hd0)/
文件系统是 ext2 ##鬼知道为什么是 ext2
grub rescue> set root=(hd0,1) ## 也可以是set root=(hd0,msdos1) ,当然你的可能是 (hd0,6)
grub rescue> set prefix=(hd0,1)/grub ##这里就是和网上查到的版本的区别,没有中间的/boot/
grub rescue> insmod normal ##直接这样写就可以,写那些路径反而有可能会错,不要问我为什么,我叫不知道
grub rescue> normal ##进入正常的 ubuntu启动菜单
选择进入恢复模式(recovery mode),ubuntu 14.04的恢复模式在高级选项里面,如果您选择了您删掉的那个版本的,不好意思,上面步骤重来一遍
选择 grub Update grub bootloader ##应该是倒数第四项
选择 YES
选择 resume Resume normal boot
好吧,上面选择了倒数第四项,重启还是问题重现,所以,还是选择倒数第二项吧 ,root Drop to root shell prompt
然后输入
sudo update-grub
sudo grub-install /dev/sda

双系统 window7和 ubuntu13.04 ,Ubuntu两个分区分别是 /和交换分区,没有/boot 分区 ubuntu13.04安装的时候就没有grub引导项,一直没用也就没管。后来室友在Windows 中把linux的分区给删了,导致开机grub rescue,按照网上教程 到最后一步输入 insmod /boot/grub/normal.mod 显示 not found…..是不是13.04的grub路径不对啊。。求大神!!!

具体如下
error: no such partition
grub rescue> ls (hd0,3)/boot/grub
./../unicode.pf2 x86_64-efi/ locale/ fonts/ grub.efi grubenv grub.cfg
grub rescue> set root=(hd0,3)
grub rescue> set prefix=(hd0,3)/boot/grub
grub rescue> insmod /boot/grub/normal.mod
error: file ‘/boot/grub/normal.mod’ not found.

http://forum.ubuntu.org.cn/viewtopic.php?p=3024640
http://forum.ubuntu.org.cn/viewtopic.php?t=458174

gradle多渠道打包、配置签名信息

定制生成的apk文件名

applicationVariants.all { variant ->
         if (variant.buildType.name.equals('release')) {
             variant.outputs.each { output ->
                 def outputFile = output.outputFile
                 if (outputFile != null && outputFile.name.endsWith('.apk')) {
                     def fileName = "gradle4android_v${defaultConfig.versionName}_${releaseTime()}_${variant.flavorName}.apk"
                     output.outputFile = new File(outputFile.parent, fileName)
                 }
             }
         }
     }

Could not find method releaseTime() for arguments [] on com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@50fe0eed. 
为什么我抱这种错误:
releaseTime 是自定义这个我没有定义      

yyyyMMddHHmm打包时间戳方法:

def releaseTime() {
      return new Date().format("yyyyMMddHHmm", TimeZone.getTimeZone("GMT+8"))
}

添加到build.gradle文件中android{…} 方法体外

打包方法:

applicationVariants.all { variant ->
    if (variant.buildType.name.equals('release')) {
          variant.outputs.each { output ->
        def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                  def fileName = "MinicashboxSdk_${releaseTime()}.apk"
              output.outputFile = new File(outputFile.parent, fileName)
            }
          }
    }
  }

mac中如何卸载pkg包

一、问题背景

在mac中,安装程序有dmg和pkg两种形式。对于dmg,直接在应用程序中删除即可,但是pkg包却没有如此方便。需要通过命令行进行删除。

Mac OS X 10.9.2

二、解决方案

###1、打开“应用程序”->“实用工具(Utilities)”->“终端(Terminal)”。

###2、使用”pkgutil –pkgs”命令,列出安装了的pkg包。

com.apple.pkg.IncompatibleKextConfigData.3-15
com.apple.pkg.iPhoto_AppStore
com.apple.pkg.iTunesAccess
com.apple.pkg.iTunesX
com.apple.pkg.iTunesXPatch
com.apple.pkg.JavaEssentials
com.apple.pkg.JavaForMacOSX107
com.apple.pkg.JavaMDNS
com.apple.pkg.JavaSecurity
com.apple.pkg.JavaTools
com.apple.pkg.Keynote6
如图,我们安装了JavaForMacOSX107,假设我们想卸载,那么继续以下步骤。

###3、使用”cd /private/var/db/receipts”,”ls”命令,列出所有的.bom和.plist文件。

com.apple.pkg.JavaEssentials.bom
com.apple.pkg.JavaEssentials.plist
com.apple.pkg.JavaForMacOSX107.bom
com.apple.pkg.JavaForMacOSX107.plist
com.apple.pkg.JavaMDNS.bom
com.apple.pkg.JavaMDNS.plist
com.apple.pkg.JavaSecurity.bom
com.apple.pkg.JavaSecurity.plist
com.apple.pkg.JavaTools.bom
com.apple.pkg.JavaTools.plist
com.apple.pkg.Keynote6.bom
如图,com.apple.pkg.JavaForMacOSX107.bom记录了这个包所有的关联文件。

###4、使用”lsbom com.apple.pkg.JavaForMacOSX107.bom”,查看所有关联文件。

. 40755 0/0
./System 40755 0/0
./System/Library 40755 0/0
./System/Library/Java 40755 0/0
./System/Library/Java/JavaVirtualMachines 40755 0/0
./System/Library/Java/JavaVirtualMachines/1.6.0.jdk 40755 0/0
./System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents 40755 0/0
./System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes 40755 0/0
./System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/alt-rt.jar100644 0/0 123448 2146194501
./System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/alt-string.jar 100644 0/0 42031 862452543
./System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar 100644 0/0 3515769 438110220
./System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.ja100644 0/0 31193251 1347176735
./System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/dt.jar 120755 0/0 18 3676296750 ../Home/lib/dt.jar
./System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jce.jar 120755 0/0 19 925190531 ../Home/lib/jce.jar
./System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jconsole.jar 120755 0/0 24 3933942479 ../Home/lib/jconsole.jar
如图,此包的文件主要在/System/Library/Java/JavaVirtualMachines/1.6.0.jdk文件夹中,只要删除此文件夹即可。

###5、进入/System/Library/Java/JavaVirtualMachines文件夹,执行”sudo rm -r 1.6.0.jdk”命令。

###6、整个pkg删除完成。

三、注意

第5步,sudo需要输入管理员密码,此密码必须要设置。
在“系统偏好设置”->“用户与群组”中设置管理员密码。

也可使用开源的统一卸载方式

https://github.com/mpapis/pkg_uninstaller

让Go2Shell支持iTerm2

让Go2Shell支持iTerm2

安装过后发现找不到Go2Shell的配置,Google后找到解决方案:在终端里敲如下命令即可:open -a Go2Shell –args config在打开的窗口中切换成iTerm2即可

Activity的生命周期和启动模式

学习Android时间也不短了,所谓温故而知新,每每公司让面试别人时,却觉得Android能问的点就那么几个,有种“黔驴技穷”的感觉,不管了,补补基础知识吧。

android最重要和常用的,也就四大组件了,所以四大组件的认识,是面试必问问题。而谈起与用户交互的Activity这一组件,生命周期自然是不得不说的。下面看你都知道这些知识点了吗?
生命周期主要有:1、正常情况下的生命周期 2、异常情况下的生命周期。(异常情况下举例有:a、资源相关的系统配置发生改变 b、资源内存不足产生改变)

先说说正常情况下的生周期:这里采用一张图来概括。

2、异常情况下的生命周期
a、资源相关的系统配置发生改变:
理解这个问题,首先要对系统的资源加载机制有一定了解,简单来说,如我们常用到的图片适配,为了兼容不同的设备,我们需要在一些目录下放置不同的图片,比如:drawable-mdpi,drawable-hdpi,drawable-land等,当应用启动时,系统会根据当前设备的情况去加载合适的Resource资源,比如横竖屏时手机就会拿到两张不同的图片(前提是设置了landscape和portrait状态下的图片);当Activity处于竖屏状态时,如果旋转屏幕,由于系统配置发生了改变,默认情况下,此Activity就会被销毁并重建。

b、资源内存不足发生改变:

mac设置--brew and brew cask

#安装环境
本人mac,在使用过程中,发现安装和管理开发工具不是很方便,于是便发现了brew这一利器!!
brew是ruby的包管理,所以需要装ruby,默认情况mac都装了。所以可以直接安装brew.

#brew 和 brew cask
brew主要用来下载一些不带界面的命令行下的工具和第三方库来进行二次开发
brew cask主要用来下载一些带界面的应用软件,下载好后会自动安装,并能在mac中直接运行使用
例如,
brew install curl可以安装curl第三方库,这样你在开发时就可以使用它的库来进行开发
brew cask install chrome可以安装谷歌浏览器应用程序,可直接运行

brew 偏管理第三方库和命令行工具方面
brew cask可以看作是苹果官方app store的补充,是一个众多贡献者们维护的非苹果官方软件商店,你也可以在这里下mac软件用

一些免费好用的mac软件没有在苹果官方app store商店上架,我们就可以在brew cask中下载。如果我要下载10个免费小软件,而这些软件没有在苹果商店上架,我们不需要一个一个去谷歌它们的官方网站,再去这些软件的官网去下载,我们统一在brew cask中下载。使用brew cask来进行包管理还有一个好处,这10个免费软件如果自身不带升级功能,但现在它们有更新,我只能去官网重新下载?不,直接在brew cask里就可以统一升级。这也是你问的那句“为何网路上跟推荐用brew cask呢?”的原因。
如果安装mac图形界面软件,推荐先在苹果官方商店里搜索下载,没有的话去brew cask试试,如果还没有,只能去这个软件的官方网站去下载了。

cask 官方的两个安装索引源,一个针对稳定版本,一个针对 Dev:

稳定版:https://github.com/caskroom/homebrew-cask

Dev版:https://github.com/caskroom/homebrew-versions

#brew安装
brew的安装很顺利,可以在官网找到安装步骤教程:

$ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

装完就能使用了

#brew操作
brew常用命令

  • brew install name # 安装源码
  • brew info svn # 显示软件的各种信息,包括版本啊源码地址啊等等
  • brew uninstall name # 卸载软件,很爽,一键静默卸载
  • brew search name # 搜索brew 支持的软件,支持模糊搜索
  • brew list # 列出本机通过brew安装的所有软件
  • brew update # 跟新brew软件自身
  • brew upgrade name # 更新安装过的软件,如果不加软件名,就更新所有可以更新的软件
  • brew cleanup # 清除下载的各种缓存

详见man brew

#brew cask安装
~ brew install caskroom/cask/brew-cask

安装完后即可使用。默认将app安装到/opt/homebrew-cask/Caskroom下并连接到~/Applications目录

#brew cask操作
操作和brew差不多,就是brew替换成brew cask而已。
brew cask的常用命令

  • brew cask search # 列出所有可以被安装的软件
  • brew cask search name # 查找所有和 name相关的应用
  • brew cask install name # 下载安装软件
  • brew cask uninstall name # 卸载软件
  • brew cask info app # 列出应用的信息
  • brew cask list # 列出本机按照过的软件列表
  • brew cask cleanup # 清除下载的缓存以及各种链接信息
    PS:详见man brew cask

#brew及brew cask的更新
更新brew cask及通过brew-cask安装的程序

  • brew update && brew upgrade brew-cask #更新cask自身
  • brew cask uninstall name && brew cask install name #更新程序
    (目前homebrew-cask 并没有命令直接更新已安装的软件,软件更新主要是通过软件自身的完成更新)

设计模式:策略设计模式

#策略设计模式:
定义算法族,分别封装起来,让他们之间可以相互替换,此模式让算法的编号独立于使用算法的客户。

原则:
1、多用组合,少用继承;
2、封装变化;
3、针对接口编程,不针对实现编程;

基础:
java的3大特点:继承、封装、多态。