生活中很少使用到开方运算, 前段时间为了计算理财复合收益率, 运用到了这一块的内容, 在这里做个记录
场景复现
比如64需要进行开6次方的操作, 计算器该如何操作呢?
第一种
第二种
本帖附件
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站
乱码三千 – 码出一个新世界
在团队开发的时候, 经常会出现某次commit导致整个项目出现无法名状的错误, 这个时候, 最好的解决办法就是删除错误的commit
1.假设有2个提交记录
1 | commit def5adef853da4cc05752bdb36577c127be71ba5 |
2.现在需要回滚到上一次提交
那么 我们可以使用
1 | git reset --hard HEAD^ |
或者
1 | git reset --hard HEAD~1 |
或者
1 | git reset --hard f36801544670e00b2f59a28e19017d2786c4085e |
3.执行完后 查看日志,就会发现只剩下一个提交了
1 | git log |
4.如果这个时候,你突然发现回退版本错了,那么就用git reflog查看提交记录
1 | git reflog |
5.然后找出想要回退的版本,进行回退
1 | git reset --hard def5ade |
6.如果此时需要同步远程仓库, 需要使用强推
1 | git push -f |
因为我们本地库HEAD指向的版本比远程库的要旧
由此可见, git reset
可以很方便的回滚到指定的历史commit,
但是它的劣势也很明显, 一旦回滚到指定commit, 那么后面提交的commit都会一并删除
*为了保留后面需要的的commit内容, 咱们可以使用另一种指令 *git revert
1.假设有3个提交记录
1 | commit def5adef853da4cc05752bdb36577c127be71ba5 |
2.现在我们不需要第二个commit的操作,也就是不需要 增加文件 这个操作
那么, 我们可以使用git revert -n
+版本号 命令进行反做
1 | git revert -n 853dadef5adef4cc05752bdb36577c127be71ba5 |
注意: 这里可能会出现冲突,那么需要手动修改冲突的文件, 然后重新add提交
1 | git add . |
3.执行完后 查看日志,会发现原来的commit记录还在,同时新增了一个commit版本
1 | git log |
4.如果此时需要同步远程仓库
1 | git push |
使用git revert
这种方式既可以清除指定的commit操作, 同时可以保留后面的commit
但是也存在一个让人不舒服的地方, 虽然操作被重写了,但是记录还在, 而且由新增了一个记录,感觉有些冗余
为了解决这个问题, 最后我选择了第三种方式, 也就是使用 git rebase
节点切片
1.假设有3个提交记录
1 | commit def5adef853da4cc05752bdb36577c127be71ba5 |
2.现在我们不需要第二个commit的操作,也就是不需要 增加文件 这个操作
假设是master分值那么, 我们可以使用git rebase --onto [startpoint] [endpoint]
1 | git rebase --onto master~853dade master~def5ade master |
或者
1 | git rebase --onto master~2 master~1 master |
或者使用
1 | git rebase i f368015 /把 需要改动那条 commit 前面的 pick 改成drop 然后, 保存退出即可 |
3.执行完后 查看日志 指定的commit已被切除
1 | git log |
4.如果此时需要同步远程仓库
1 | git push -f |
要注意的是,这样做会 彻底 删掉那条 commit。唯一的找回方式是通过 git reflog
。
5.如果你只是想改下那条 commit 的 author
这样就行:
1 | git rebase -i f368015 |
把 需要改动那条 commit 前面的 pick 改成 edit
然后
1 | git commit --amend --author="xxxxxxxx" |
然后
1 | git rebase --continue |
最后保存退出即可
适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,彻底清除commit记录, 而又不增加新的commit记录, 就可以用这种方法
本帖附件
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站
点击注册.
注册地址:https://plugins.gradle.org/user/register
拷贝API Key到电脑$USER_HOME/.gradle/gradle.properties
文件中,如果电脑没有该文件, 就自行创建一个
$USER_HOME
指的是你的电脑用户名
如果你嫌手动配置api麻烦, 可以使用官方的login
task进行自动注册,
执行login task
执行窗口会出现授权链接 点击浏览器打开即可
在此之前需要先应用插件, 往下看:
在你自己的插件工程build.gradle中添加如下代码
1 | // 第一步 应用插件 |
配置完成后,执行 publishPlugins
task即可自动上传代码
审核通过后,即可在官网搜索到你的插件, 上面附有插件的使用方法
本帖附件
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站
有时候我们需要在不改变版本号的前提下 同步gradle重新从远程更新依赖包
方案一:
修改项目任意一个依赖库版本号,然后同步gradle,同步完成后再改回来
方案二:
执行以下指令强制刷新
1 | Windows: |
本帖附件
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站
当我们在进行maven打包时
1 | apply plugin: 'maven' |
如果工程在本地引用了第三方jar包, 那么直接使用uploadArchives
指令是无法将第三方jar包打进去的
解决方案如下:
方案一: 将jar包源代码拷入工程,然后一并打包(不推荐 )
方案二: 只需加入以下代码
1 | task makeJar(type: Jar) { |
1 | // 源代码一起打包(不需要打包源代码的不要添加这几行) |
1 | //生成文档注释 |
1 | task makeJar(type: Jar) { |
然后执行makeJar
指令
成功后,可以在build目录中找到合并后的jar包
本帖附件
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站
在Textiew中可以通过设置TextView的属性
1 | android:maxEms |
和
1 | android:ellipseize |
来使过多的文字显示为省略号,但在在EditText中设置只这两个属性则不行,
android默认只有在文字不可编辑的状态下才可以显示这些效果,但是EditText重写了这个属性,使得文字默认都是可以编辑的。
所以若想要呈现TextView的效果,必须加上以下属性
1 | android:editable= "false" |
另外EditText不支持跑马等的效果.咱们来看看android源码
1 | override |
如果设置跑马灯效果,会直接抛出异常
那么有同学会说了,editable设为false, 那岂不是没法进行文本编辑了?
这里呢, 建议大家自定义EditText并重写onTouchEvent方法,从外部进行控制是否获取焦点, 如下:
1 | class FocusEditText(context: Context, attrs: AttributeSet) : EditText(context, attrs){ |
本帖附件
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站
在项目的build.gradle中buildscript中添加如下脚本,使用最新版本号,在https://github.com/novoda/bintray-release
查看:
buildscript {
repositories {
jcenter()
}
dependencies {
//classpath 'com.novoda:bintray-release:<latest-version>'
classpath 'com.novoda:bintray-release:0.8.1'
}
}
在库模块(需要上传的模块)的build.gradle中添加:
apply plugin: 'com.novoda.bintray-release'
publish {
userOrg = '组织ID' //bintray账户下某个组织id 个人用户填写账户名
groupId = 'com.insworks.plugin' //maven仓库下库的包名,一般为模块包名
artifactId = 'framework-plugin' //项目名称
publishVersion = '1.0.2' //版本号
desc = '组件化架构插件' //项目介绍,可以不写
website = '' //项目主页,可以不写
}
tasks.withType(Javadoc) {//防止编码问题
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
options.addStringOption('charSet', 'UTF-8')
}
在bintray中创建仓库并获取仓库key。Bintray网站点击右上角用户名–>Edit Your Profile -> API Key –>输入密码–>Submit–>Show。
使用指令上传代码:
在Android Studio的Terminal面板中执行下面命令,其中BINTRAY_USERNAME替换为你的binatray用户名,BINTRAY_KEY替换为上面获取的API Key,-PdryRun=false会上传到仓库中,如果为true,只会执行gradle任务,但不会上传。替换完成后回车执行
示例
gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
我的
gradlew clean build bintrayUpload -PbintrayUser=songjianziana -PbintrayKey=5e7f0ea95e85af4cceca20cb109fb50ad7cba6bc -PdryRun=false
或者使用gradle快捷上传, 需要先编译项目(切记)
Android Studio中配置https://bintray.com仓库地址
maven { url 'https://dl.bintray.com/songjianzaina/insoan' }
和然后在app模块build.gradle中添加依赖:
1 | implementation 'com.xxx.xxx.xx.:1.0.0' |
添加到JCenter。点击“Add to JCenter”,填写项目介绍,点击Send发送,然后等待审核,审核成功之后会发送站内通知
上传成功之后将maven { url 'https://dl.bintray.com/songjianzaina/insoan' }
替换成jcenter即可
本帖附件
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站
Android源码下载支持的系统目前只有Ubuntu和Mac OS两种操作系统, 本次以Ubuntu系统为例.
官方网站: http://source.android.com/source/downloading.html
下载单独项目的源码:https://github.com/android
下载Git(版本控制工具). 调出命令行: ctrl + alt + T
1 | sudo apt-get install git (下载地址在源中,"系统设置/软件和更新",路径:/etc/apt/sources.list) |
安装curl(上传和下载数据的工具).
1 | sudo apt-get install curl |
安装repo(一个基于git的版本库管理工具, 这里用于自动批量下载android整个项目.).
1 | // 创建目录 |
创建文件夹, 用于存放下载的Android源码.
1 | // 创建目录 |
初始化库.
1 | // 需要先配置git的用户信息 |
1 | repo initialized in /home/haha/android_source |
开始同步下载.
1 | repo sync |
注意: 下载过程中, 因为网络问题, 可能会中断下载. 当中断下载时, 继续使用repo sync命令继续下载.
本帖附件
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站
1. 安装JDK, google官方要求编译2.3源码需要JDK1.6.
2). 创建目录.
1 | sudo mkdir /usr/java |
3). 在文件系统中右击上面的创建的文件夹,选择“以管理员权限打开”,然后把下载好的jdk-6u45-linux-x64.bin拖动到/usr/java目录中
4). 添加可执行权限.
1 | sudo chmod 755 /usr/java/jdk-6u45-linux-x64.bin |
5). 解压.
1 | cd /usr/java |
6). 配置环境变量.
1 | export JAVA_HOME=/usr/java/jdk1.6.0_45 |
7). 验证是否成功.
1 | java -version |
1 | sudo apt-get install gnupg |
安装注意事项:
1 | cd ~/android_source |
1). 备份ubuntu自带的源.
1 | sudo cp /etc/apt/sources.list /etc/apt/sources.list.old |
2). 修改源文件.
1 | sudo gedit /etc/apt/sources.list |
3). 这时会弹出一个文本编辑框, 先删除所有内容, 然后把以下内容拷贝进去, 并保存.
1 | deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse |
4). 保存之后, 更新数据源.
1 | sudo apt-get update |
本帖附件
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站
总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。
这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。
注: stash只对被追踪的文件才有效, 也就是说 是针对被add的文件 。
能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
1 | $ git status |
作用等同于git stash,区别是可以加一些注释,git stash save “test1”的效果 如下:
1 | stash@{0}: On master: test1 |
查看当前stash中的内容
将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。
注:该命令将堆栈中最近保存的内容删除(栈是先进后出)
顺序执行git stash save “test1”和git stash save “test2”命令,效果如下:
1 | $ git stash list |
可见,test2的stash是首先pop出来的。
如果从stash中恢复的内容和当前目录中的内容发生了冲突,也就是说,恢复的内容和当前目录修改了同一行的数据,那么会提示报错,需要解决冲突,可以通过创建新的分支来解决冲突。
将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。
1 | $ git stash apply |
堆栈中的内容并没有删除。
可以使用git stash apply + stash名字
(如stash@{1})指定恢复哪个stash到当前的工作目录。
从堆栈中移除某个指定的stash
清除堆栈中的所有 内容
查看堆栈中最新保存的stash和当前目录的差异。
1 | $ git stash show |
git stash show stash@{1}
查看指定的stash和当前目录差异。
通过 git stash show -p
查看详细的不同:
1 | $ git stash show -p |
同样,通过git stash show stash@{1} -p查看指定的stash的差异内容
从最新的stash创建分支。
应用场景:当储藏了部分工作,暂时不去理会,继续在当前分支进行开发,后续想将stash中的内容恢复到当前工作目录时,如果是针对同一个文件的修改(即便不是同行数据),那么可能会发生冲突,恢复失败,这里通过创建新的分支来解决。可以用于解决stash中的内容和当前目录的内容发生冲突的情景。
发生冲突时,需手动解决冲突。
本帖附件
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站