https://www.gravatar.com/avatar/7a0c24f697ea1587001c36d00039b60f?s=240&d=mp

anaconda3 pip安装scf后出现command not found scf解决办法

在Mac上,通过anaconda3安装python后,可能会出现pip安装的包command not found: xxx这种情况。

正常情况下,包应该被安装到/usr/local/anaconda3/lib/python3.7/site-packages下 但是通过安装打印日志你发现实际被安装到了~/.local/lib/python3.7/site-packages 如果安装时的日志没了,可以再次pip install xxx来看输出日志。

当我安装scfpip install scf --user

打印出路径:

Requirement already satisfied: scf in ./.local/lib/python3.7/site-packages (0.2.7)

在命令行查看是否安装成功: scf --version 然而出现 command not found: scf

解决办法: 环境变量中引入安装的实际路径即可

export PATH="$HOME/bin:/Users/xxx/.local/bin:/usr/local/bin:$PATH"

然后source ~/.zshrc 再次scf --version 打印[o] Version: 0.2.7

Flutter开发App常见问题解决方案

Flutter开发真的会遇到各种各样的坑爹问题,Android运行起来了可能发现iOS出问题了。遇到过不少问题,因此写这个文章做个汇总,也免得以后遇到了再次翻车。

当成FAQ使用吧

Q: [!] The ‘Pods-Runner’ target has transitive dependencies that include statically linked binaries: A: 这种问题一般都是ios/Podfile中的use_frameworks!造成的,注释掉它。

Q: Flutter中如何引用库工程? A: 我在18年尝试过各种办法,真的无解,还是老实的传到jcentercocoapods上去。

AndroidX和旧版本包对照表

AndroidX作为新一代的标准库,所有的项目必定要全部迁移过来的,但是目前还是存量大量的旧款项目,大量的主流开源库都还是用的旧款,当项目中用了大量开源库的情况下,继续使用旧库也是必要的。

旧编译工件 AndroidX 编译工件
android.arch.core:common androidx.arch.core:core-common
android.arch.core:core androidx.arch.core:core
android.arch.core:core-testing androidx.arch.core:core-testing
android.arch.core:runtime androidx.arch.core:core-runtime
android.arch.lifecycle:common androidx.lifecycle:lifecycle-common
android.arch.lifecycle:common-java8 androidx.lifecycle:lifecycle-common-java8
android.arch.lifecycle:compiler androidx.lifecycle:lifecycle-compiler
android.arch.lifecycle:extensions androidx.lifecycle:lifecycle-extensions
android.arch.lifecycle:livedata androidx.lifecycle:lifecycle-livedata
android.arch.lifecycle:livedata-core androidx.lifecycle:lifecycle-livedata-core
android.arch.lifecycle:reactivestreams androidx.lifecycle:lifecycle-reactivestreams
android.arch.lifecycle:runtime androidx.lifecycle:lifecycle-runtime
android.arch.lifecycle:viewmodel androidx.lifecycle:lifecycle-viewmodel
android.arch.paging:common androidx.paging:paging-common
android.arch.paging:runtime androidx.paging:paging-runtime
android.arch.paging:rxjava2 androidx.paging:paging-rxjava2
android.arch.persistence.room:common androidx.room:room-common
android.arch.persistence.room:compiler androidx.room:room-compiler
android.arch.persistence.room:guava androidx.room:room-guava
android.arch.persistence.room:migration androidx.room:room-migration
android.arch.persistence.room:runtime androidx.room:room-runtime
android.arch.persistence.room:rxjava2 androidx.room:room-rxjava2
android.arch.persistence.room:testing androidx.room:room-testing
android.arch.persistence:db androidx.sqlite:sqlite
android.arch.persistence:db-framework androidx.sqlite:sqlite-framework
com.android.support.constraint:constraint-layout androidx.constraintlayout:constraintlayout
com.android.support.constraint:constraint-layout-solver androidx.constraintlayout:constraintlayout-solver
com.android.support.test.espresso.idling:idling-concurrent androidx.test.espresso.idling:idling-concurrent
com.android.support.test.espresso.idling:idling-net androidx.test.espresso.idling:idling-net
com.android.support.test.espresso:espresso-accessibility androidx.test.espresso:espresso-accessibility
com.android.support.test.espresso:espresso-contrib androidx.test.espresso:espresso-contrib
com.android.support.test.espresso:espresso-core androidx.test.espresso:espresso-core
com.android.support.test.espresso:espresso-idling-resource androidx.test.espresso:espresso-idling-resource
com.android.support.test.espresso:espresso-intents androidx.test.espresso:espresso-intents
com.android.support.test.espresso:espresso-remote androidx.test.espresso:espresso-remote
com.android.support.test.espresso:espresso-web androidx.test.espresso:espresso-web
com.android.support.test.janktesthelper:janktesthelper androidx.test.jank:janktesthelper
com.android.support.test.services:test-services androidx.test:test-services
com.android.support.test.uiautomator:uiautomator androidx.test.uiautomator:uiautomator
com.android.support.test:monitor androidx.test:monitor
com.android.support.test:orchestrator androidx.test:orchestrator
com.android.support.test:rules androidx.test:rules
com.android.support.test:runner androidx.test:runner
com.android.support:animated-vector-drawable androidx.vectordrawable:vectordrawable-animated
com.android.support:appcompat-v7 androidx.appcompat:appcompat
com.android.support:asynclayoutinflater androidx.asynclayoutinflater:asynclayoutinflater
com.android.support:car androidx.car:car-alpha5
com.android.support:cardview-v7 androidx.cardview:cardview
com.android.support:collections androidx.collection:collection
com.android.support:coordinatorlayout androidx.coordinatorlayout:coordinatorlayout
com.android.support:cursoradapter androidx.cursoradapter:cursoradapter
com.android.support:customtabs androidx.browser:browser
com.android.support:customview androidx.customview:customview
com.android.support:design com.google.android.material:material-rc01
com.android.support:documentfile androidx.documentfile:documentfile
com.android.support:drawerlayout androidx.drawerlayout:drawerlayout
com.android.support:exifinterface androidx.exifinterface:exifinterface
com.android.support:gridlayout-v7 androidx.gridlayout:gridlayout
com.android.support:heifwriter androidx.heifwriter:heifwriter
com.android.support:interpolator androidx.interpolator:interpolator
com.android.support:leanback-v17 androidx.leanback:leanback
com.android.support:loader androidx.loader:loader
com.android.support:localbroadcastmanager androidx.localbroadcastmanager:localbroadcastmanager
com.android.support:media2 androidx.media2:media2-alpha03
com.android.support:media2-exoplayer androidx.media2:media2-exoplayer-alpha01
com.android.support:mediarouter-v7 androidx.mediarouter:mediarouter
com.android.support:multidex androidx.multidex:multidex
com.android.support:multidex-instrumentation androidx.multidex:multidex-instrumentation
com.android.support:palette-v7 androidx.palette:palette
com.android.support:percent androidx.percentlayout:percentlayout
com.android.support:preference-leanback-v17 androidx.leanback:leanback-preference
com.android.support:preference-v14 androidx.legacy:legacy-preference-v14
com.android.support:preference-v7 androidx.preference:preference
com.android.support:print androidx.print:print
com.android.support:recommendation androidx.recommendation:recommendation
com.android.support:recyclerview-selection androidx.recyclerview:recyclerview-selection
com.android.support:recyclerview-v7 androidx.recyclerview:recyclerview
com.android.support:slices-builders androidx.slice:slice-builders
com.android.support:slices-core androidx.slice:slice-core
com.android.support:slices-view androidx.slice:slice-view
com.android.support:slidingpanelayout androidx.slidingpanelayout:slidingpanelayout
com.android.support:support-annotations androidx.annotation:annotation
com.android.support:support-compat androidx.core:core
com.android.support:support-content androidx.contentpager:contentpager
com.android.support:support-core-ui androidx.legacy:legacy-support-core-ui
com.android.support:support-core-utils androidx.legacy:legacy-support-core-utils
com.android.support:support-dynamic-animation androidx.dynamicanimation:dynamicanimation
com.android.support:support-emoji androidx.emoji:emoji
com.android.support:support-emoji-appcompat androidx.emoji:emoji-appcompat
com.android.support:support-emoji-bundled androidx.emoji:emoji-bundled
com.android.support:support-fragment androidx.fragment:fragment
com.android.support:support-media-compat androidx.media:media
com.android.support:support-tv-provider androidx.tvprovider:tvprovider
com.android.support:support-v13 androidx.legacy:legacy-support-v13
com.android.support:support-v4 androidx.legacy:legacy-support-v4
com.android.support:support-vector-drawable androidx.vectordrawable:vectordrawable
com.android.support:swiperefreshlayout androidx.swiperefreshlayout:swiperefreshlayout
com.android.support:textclassifier androidx.textclassifier:textclassifier
com.android.support:transition androidx.transition:transition
com.android.support:versionedparcelable androidx.versionedparcelable:versionedparcelable
com.android.support:viewpager androidx.viewpager:viewpager
com.android.support:wear androidx.wear:wear
com.android.support:webkit androidx.webkit:webkit

参考: https://developer.android.google.cn/jetpack/androidx/migrate/artifact-mappings

Java常见面试题

作者:SnailClimb 链接:https://juejin.im/post/5dba72c96fb9a02047526331 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1. 面向对象和面向过程的区别

  • 面向过程面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。
  • 面向对象面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,面向对象性能比面向过程低

参见 issue : 面向过程 :面向过程性能比面向对象高??

这个并不是根本原因,面向过程也需要分配内存,计算内存偏移量,Java性能差的主要原因并不是因为它是面向对象语言,而是Java是半编译语言,最终的执行代码并不是可以直接被CPU执行的二进制机械码。

而面向过程语言大多都是直接编译成机械码在电脑上执行,并且其它一些面向过程的脚本语言性能也并不一定比Java好。

2. Java 语言有哪些特点?

  1. 简单易学;
  2. 面向对象(封装,继承,多态);
  3. 平台无关性( Java 虚拟机实现平台无关性);
  4. 可靠性;
  5. 安全性;
  6. 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);
  7. 支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计的,因此 Java 语言不仅支持网络编程而且很方便);
  8. 编译与解释并存;

修正(参见: issue#544 ):C++11开始(2011年的时候),C++就引入了多线程库,在windows、linux、macos都可以使用std::threadstd::async来创建线程。参考链接:http://www.cplusplus.com/reference/thread/thread/?kw=thread

3. 关于 JVM JDK 和 JRE 最详细通俗的解答

JVM

Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。

什么是字节码?采用字节码的好处是什么?

在 Java 中,JVM可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java程序无须重新编译便可在多种不同操作系统的计算机上运行。

Java 程序从源代码到运行一般有下面3步:

https://img.ibook8.club/15755405585267.jpg

macOS Catalina 10.15: Read-only file system

在高版本的MacOS上,苹果为了系统安全默认开启了系统权限保护,本意是好的,但是对于我们开发者来说就是灾难。

当我准备写一个Python脚本的时候出现了一些权限问题,发现所有的系统目录都成为了可读Read-only file system。于是开始各种尝试安装新版本,替换系统版本的操作。然而权限问题让我以前设置的各种软连接,比如/usr/bin/python等都无法删除了。这样的结果就是我brew install python的版本也无效。

于是常规操作,谷歌启动,一个小时过去了,无果。

继续尝试,终于在某个角落找到了一个可用的方案。

解决方案如下:

  1. 关闭系统的SIP保护。
  • 重启系统,按住 Command + R 进入恢复模式。
  • 点击顶部菜单栏 实用工具 中的 终端 。
  • 输入csrutil disable命令来禁用 SIP 保护机制。
  1. 重新挂载根目录
  • sudo mount -uw /
  1. 到这里不出意外,权限应该恢复了

E: Package fonts-droid has no installation candidate

原本一直正常的travis-ci脚本突然报错了.

However the following packages replace it:
  fonts-droid-fallback
E: Package 'fonts-droid' has no installation candidate
apt-get.diagnostics
apt-get install failed
The command "sudo -E apt-get -yq --no-install-suggests --no-install-recommends $(travis_apt_get_options) install libstdc++6 fonts-droid" failed and exited with 100 during .
Your build has been stopped.

fonts-droid已经被移除了,我们只需要将fonts-droid替换为fonts-noto或者fonts-droid-fallback就可以了。