hexo博客的xxxx.github.io的xxxx一定要和GitHub的名称相同
Hero g -d 别忘了
AtomicLong是作用是对长整形进行原子操作。
在32位操作系统中,64位的long 和 double 变量由于会被JVM当作两个分离的32位来进行操作,所以不具有原子性。而使用AtomicLong能让long的操作保持原子型。
首先你得了解synchronized(同步锁),atomiclong 可以理解是加了synchronized的long。
alias 别名
git绑定仓库的命令
1 | git init //第一次要先初始化一个git目录 |
warning: adding embedded git repository: .deploy_git
当前目录下面有.git文件夹——默认是隐藏的,直接将.git文件夹掉,再重新git add .
…or create a new repository on the command line
1 | echo "# myBlog" >> README.md |
…or push an existing repository from the command line
1 | git remote add origin git@github.com:wzr1005/myBlog.git |
Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。我对这个词组的翻译是”表现层状态转化”。
如果一个架构符合REST原则,就称它为RESTful架构。
要理解RESTful架构,最好的方法就是去理解Representational State Transfer这个词组到底是什么意思,它的每一个词代表了什么涵义。如果你把这个名称搞懂了,也就不难体会REST是一种什么样的设计。
三、资源(Resources)
REST的名称”表现层状态转化”中,省略了主语。”表现层”其实指的是”资源”(Resources)的”表现层”。
“资源”是一种信息实体,它可以有多种外在表现形式。我们把”资源”具体呈现出来的形式,叫做它的”表现层”(Representation)。
比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。
五、状态转化(State Transfer)
访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。
客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
Log注解
- 打开访达,切到应用程序,找到
Pycharm.app
,右键->显示包内容,打开Contents/MacOS/
- 打开终端,cd 到
Contents/MacOS/
目录,直接将MacOS
文件夹拖到终端里面,就会显示该文件件的全路径,然后cd进去. - 执行该文件夹下的
pycharm
文件,即:./pycharm
,之后可以在终端看到输出的信息, 如果没问题会直接打开Pycharm
解决方法:
- 在终端cd 到
/Users/{替换成自己的用户名}/Library/Application Support/JetBrains/PyCharm2020.1/
,这个文件夹下有一个pycharm.vmoptions
的文件,我们需要将这个文件删除. - 终端执行
rm -f pycharm.vmoptions
- 重新打开即可.
说明:
cd 到Application Support时 提示找不到路径的问题
原因:/Application Support/
这个地方Application
和 Support
中间有一个空格,需要转义。
正确的为:
cd /Users/{替换成自己的用户名}/Library/Application\ Support/JetBrains/PyCharm2020.1/
/PyCharm2020.1/
这个路径根据安装版本的不同路径会有所不同。
安装py3 直接去官网就可以,安装了之后,需要重启pycharm
更新pip3
sudo pip3 install –upgrade pip
pylab安装不能像其他scipy等计算包一样直接pip install,它是模块matplotlib下的一个包,需要先安装matplotlib等,再用import导入。
%matplotlib inline。可以注释掉
lambda表达式的语法格式如下:
(parameters) -> expression 或 (parameters) ->{ statements; }
1 | homeApiTotalMapper.toDto(homeApiTotalRepository |
这样,我们就成功的非常优雅的把“一块代码”赋给了一个变量。而“这块代码”,或者说“这个被赋给一个变量的函数”,就是一个Lambda表达式。
但是这里仍然有一个问题,就是变量aBlockOfCode的类型应该是什么?
在Java 8里面,所有的Lambda的类型都是一个接口,而Lambda表达式本身,也就是”那段代码“,需要是这个接口的实现。这是我认为理解Lambda的一个关键所在,简而言之就是,Lambda表达式本身就是一个接口的实现。直接这样说可能还是有点让人困扰,我们继续看看例子。我们给上面的aBlockOfCode加上一个类型:
这种只有一个接口函数需要被实现的接口类型,我们叫它”函数式接口“。为了避免后来的人在这个接口中增加接口函数导致其有多个接口函数需要被实现,变成”非函数接口”,我们可以在这个上面加上一个声明@FunctionalInterface, 这样别人就无法在里面添加新的接口函数了:
这样,我们就得到了一个完整的Lambda表达式声明:
这两种写法本质上是等价的。但是显然,Java 8中的写法更加优雅简洁。并且,由于Lambda可以直接赋值给一个变量,我们就可以直接把Lambda作为参数传给函数, 而传统的Java必须有明确的接口实现的定义,初始化才行: