欢迎来到 艾瑞可erik 的魔法世界 🧙‍♂️

给我一个需求,还你一个项目——别管它是什么。这就是全栈。

📚 291 篇文章 🏷️ 504 个标签 📂 90 个分类

🔥 最新文章

Jenkins安装及使用

作者:回首笑人间,高级Java工程师一枚,热爱研究开源技术,架构师社区合伙人!
目录

什么是持续集成
Jenkins简介
Jenkins安装与启动
Jenkins插件安装
全局工具配置
自动安装
本地安装
代码上传至Git服务器
任务的创建与执行
Go项目
JAVA项目
什么是持续集成

Installing and Using Jenkins

Author: 回首笑人间, a senior Java engineer, passionate about researching open source technologies, and a partner of the Architect Community!
Contents

What Is Continuous Integration
Introduction to Jenkins
Installing and Starting Jenkins
Installing Jenkins Plugins
Global Tool Configuration
Automatic Installation
Local Installation
Uploading Code to the Git Server
Creating and Running a Job
Go Project
JAVA Project
What Is Continuous Integration

php数学函数

  • bccomp — 比较两个任意精度的数字

    • bccomp ( string $left_operand , string $right_operand [, int $scale = int ] ) : int
    • 参数解释
      • left_operand左边的运算数, 是一个字符串.
      • right_operand右边的运算数, 是一个字符串.
      • scale可选的scale参数被用作设置指示数字, 在使用来作比较的小数点部分.
    • 如果两个数相等返回0, 左边的数left_operand比较右边的数right_operand大返回1, 否则返回-1.

    • 已验证:如果参数是字符串,不论这个字符串是什么,这个字符串始终是0。参数可以为数字作比较。

PHP Math Functions

  • bccomp — compare two numbers of arbitrary precision

    • bccomp ( string $left_operand , string $right_operand [, int $scale = int ] ) : int
    • Parameter explanation
      • left_operand, the left operand, is a string.
      • right_operand, the right operand, is a string.
      • the optional scale parameter is used to set the indicated number, i.e. the decimal part used in the comparison.
    • Returns 0 if the two numbers are equal, returns 1 if the left number left_operand is greater than the right number right_operand, otherwise returns -1.

    • Verified: if the argument is a string, no matter what the string is, the string is always 0. The arguments can be numbers for comparison.

cphalcon compilation errors

What I downloaded was the stable version, that is, version 1.3.3-Stable-0.
But it still failed to compile. I only found out later, after digging through some references, that there was a catch.

My local gcc version is gcc version 9.2.1 20190909 (Debian 9.2.1-8), which is fairly new, so it’s stricter about form. The author’s version is probably an old one, so there’s a bit of incompatibility.

光明小镇游记

时间:2019-10-03 上午

早早的起床,光明小镇还是比较偏远的,地铁不通。早早起床赶了一个多小时地铁。刚开始定位的是光明小镇OTC欢乐田园,公交站台是 第二职业技术学校。后来快到站的时候,听到车上有人过去,才知道是中山七院(或中大附七公交站。
中大附七附近有停车场,驾车来比较合适。
下车,直走车流方向。
早上人还是那么多

A Trip to Guangming Town

Time: morning of 2019-10-03

I got up early. Guangming Town is still fairly remote, and the subway doesn’t go there. So I got up early and spent over an hour on the subway. At first I set my destination to Guangming Town OTC Happy Farmland, and the bus stop was Second Vocational Technical School. Later, as we were nearly at the stop, I heard someone on the bus saying they were going there, and only then did I learn that the bus stop is the Seventh Affiliated Hospital of Sun Yat-sen University (or Zhongda Affiliated No. 7).
There’s a parking lot near Zhongda Affiliated No. 7, so coming by car is more convenient.
Get off the bus and walk straight in the direction of traffic.
There were still just as many people in the morning

JetBrains full lineup, activation and usage

A universal permanent crack: just install the plugin, and it works with most IDEs of the 2019.2 versions

pycharm2019.2 phpstorm2019.2 intelli2019.2 gloand2019.2 clion2019.2 webstorm2019.2

Note: do not use it for commercial purposes; personal use for practice is fine.

Download the crack plugin jetbrainsCrack.jar and place it in the bin directory under the directory of the installed IDE tool

Pitfalls of Installing PHP with Docker

After installing a specific version of php-fpm through docker, I went into the container and changed the php-fpm user group www-data to my own erik (because the host uses the same one, which makes debugging easier).
After installation, configuring nginx locally always gave an error:

6239#6239: *1 FastCGI sent in stderr: “Primary script unknown” while reading response header from upstream

数学基础知识-行列式

二阶行列式

$\begin{vmatrix} a{11} & a{12} \newline a{21} & a{22} \newline \end{vmatrix}a{11}a{22}-a{12}a{21}$

三阶行列式

$\begin{vmatrix}
a{11} & a{12} & a{13} \newline
a
{21} & a{22} & a{23} \newline
a{31} & a{32} & a{33} \newline
\end{vmatrix}a
{i1}A{i1}+a{i2}A{i2}+a{i3}A_{i3} \left( i=1,2,3 \right) $

Math Fundamentals - Determinants

Second-Order Determinant

$\begin{vmatrix} a{11} & a{12} \newline a{21} & a{22} \newline \end{vmatrix}a{11}a{22}-a{12}a{21}$

Third-Order Determinant

$\begin{vmatrix}
a{11} & a{12} & a{13} \newline
a
{21} & a{22} & a{23} \newline
a{31} & a{32} & a{33} \newline
\end{vmatrix}a
{i1}A{i1}+a{i2}A{i2}+a{i3}A_{i3} \left( i=1,2,3 \right) $

socket进程通信及多进程

socket是操作系统提供的通信层的一组抽象API

函数介绍

  • socket_create(int $domain , int $type , int $protocol)

    正确时返回一个套接字(通讯),失败时返回 FALSE。要读取错误代码,可以调用 socket_last_error()。这个错误代码可以通过 socket_strerror() 读取文字的错误说明。

    创建一个通讯节点,socket_create包含三个参数

    • $domain 指定哪个协议用在当前套接字(通讯节点),有以下三种:
      • AF_INET:IPv4网络协议。TCP 和 UDP 都可使用此协议。
      • AF_INET6: IPv6网络协议。TCP 和 UDP 都可使用此协议。
      • AF_UNIX: 本地通讯协议。具有高性能和低成本的 IPC(进程间通讯)。

Socket Process Communication and Multiple Processes

socket is a set of abstract APIs provided by the operating system for the communication layer

Function Introduction

  • socket_create(int $domain , int $type , int $protocol)

    Returns a socket (communication endpoint) on success, and FALSE on failure. To read the error code, you can call socket_last_error(). That error code can be turned into a textual error description with socket_strerror().

    Creates a communication node. socket_create contains three parameters

    • $domain specifies which protocol is used for the current socket (communication node). There are three:
      • AF_INET: IPv4 network protocol. Both TCP and UDP can use this protocol.
      • AF_INET6: IPv6 network protocol. Both TCP and UDP can use this protocol.
      • AF_UNIX: local communication protocol. High-performance, low-cost IPC (inter-process communication).

代理服务搭建

代理服务器(Proxy)主要是用户有因特网数据要求时,Proxy会帮用户去向目的地取得用户所需要的数据。

Proxy获取信息的工作流程
  • 当Proxy的缓存拥有用户所想要的数据时
    • Client端向Server端发送一个数据需求数据包。
    • Server端接收后,先比对这个数据包的来源与预计要前往的目标网站是否为可接受?如果来源与目标合法,或者说,来源与目标网站Proxy都能帮忙取得数据时,那么Server端会开始替Client取得数据。
    • Server首先会检查自己缓存数据,如果有Client所需的数据,那就将数据取出,而不经过向Internet要求数据的程序。
    • 最后将数据发送给Client端。

Setting Up a Proxy Server

A proxy server is mainly about this: when a user has a request for data on the Internet, the Proxy goes to the destination on the user’s behalf and fetches the data the user needs.

How the Proxy fetches information
  • When the Proxy’s cache already holds the data the user wants
    • The Client sends a data request packet to the Server.
    • After the Server receives it, it first compares the source of this packet and the target website it intends to reach to see whether they are acceptable. If the source and the target are legitimate, or in other words, if the Proxy can help fetch data for both the source and the target website, then the Server will start fetching data on behalf of the Client.
    • The Server first checks its own cached data. If it has the data the Client needs, it takes the data out without going through the process of requesting data from the Internet.
    • Finally it sends the data to the Client.