编程小知识合集
编程小知识合集
Hello word(多语言实现)
C#
// 创建一个文件hello.cs,内容如下
using System;
namespace CH01
{
class Program
{
static void Main()
{
Console.WriteLine("Hello Word");
}
}
}
// 编译成exe文件,在c#自己的编译环境下编译(VS工具)
$ csc + hello.cs
$ hello
Java
// 创建一个文件hello.java,内容如下
public class Hello {
public static void main(String args[]) {
System.out.println("Hello Word");
}
}
// 编译成class文件
$ javac hello.java
$ java hello
Hello World
Python
# 创建一个文件hello.py,内容如下
print("Hello Word!!!")
# 在python环境下解释执行
$ python3 hello.py
解决程序端口占用
程序运行时可能会产生端口占用的问题,下面是解决方案:
1)打开dos窗口,执行netstat -ano命令,可以查看所有进程,找到冲突端口的PID,然后去到任务管理器(ctrl+shift+esc)找到该PID程序并结束进程
2)打开dos窗口,执行netstat -aon|findstr "8080"命令,可以查看指定端口的PID
使用curl命令发送GET/POST请求
命令详细资料网站:https://man.linuxde.net/curl
1)发送GET
curl http://127.0.0.1:8080/login?admin&password=12345678
2)发送POST
curl -d "user=admin&password=12345678" http://127.0.0.1:8080/login
3)发送指定格式并且输出到日志
curl -H "Content-Type:application/json" -X POST -d "user=admin&password=12345678" http://127.0.0.1:8080/login >> ./alert.log
学习Spring5源码时所遇到的坑
1)本人下载的源码版本是spring-framework-5.0.2.RELEASE
配置好gradle环境变量之后,cmd进入到spring项目,执行gradlew.bat编译项目。
2)如何导入到IDEA中
file>>>open>>>找到spring项目的build.gradle文件,导入时设置gradle安装包路径和jdk版本以及是否自动导包。
3)在导包时出现问题,提示连接超时
这是由于国外网络请求超时,我们可以设置从阿里下载jar包, 这样所有的gradle项目都将从阿里仓库下载jar包。在gradle的本地仓库里创建一个init.gradle文件,内容如下:
allprojects{
repositories {
def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
remove repo
}
}
}
maven {
url REPOSITORY_URL
}
}
}
4)Could not find org.jetbrains.dokka:integration:0.9.15.
导包继续时无法找到该包,所以我们要修改该包版本号,解决办法如下:
1)修改build.gradle文件,将id "org.jetbrains.dokka" version "0.9.15" 修改为id "org.jetbrains.dokka" version "0.9.17"
2)repositories中添加maven { url "https://plugins.gradle.org/m2/" },问题解决了,可以下载新版本的jar包
雪花算法生成的Long类型id返回前端时后几位为0
原因:JS支持的最大整数是2的53次方减1,所以损失了精度。
解决办法:
1、存储到数据库时为varchar类型
2、取出后返回前端前转为String类型
3、通过json序列化做全局处理,传到前端的转为字符串,保存到后台时是Long
在Mybatis的xml文件调用Java类的方法
使用的是OGNL表达式,表达式格式为:${@prefix@methodName(传递参数名称)}
1)赋值时判断
SELECT * FROM USER WHERE name='${@org.apache.commons.lang3@StringUtils(name)}'
2)IF条件判断
<if test="@org.apache.commons.lang.StringUtils@isNotBlank(name)">name=#{name}</if>
3)自定义生成ID
<insert id="importData">
insert into myproperty (id,asset_id,asset_name,dept_name,brand,specifications,units,produce_time,indate,purchase_time,price,
total_money,address,classification,is_fixed) values
<foreach collection="list" item="property" separator=",">
(
${@cn.hutool.core.util.IdUtil@getSnowflake(1, 3).nextIdStr()},
${@cn.hutool.core.util.IdUtil@getSnowflake(1, 3).nextId()},
#{property.assetName},
#{property.deptName},
#{property.brand},
#{property.specifications},
#{property.units},
#{property.produceTime},
#{property.indate},
#{property.purchaseTime},
#{property.price},
#{property.price},
#{property.address},
#{property.classification},
<choose>
<when test="property.price > 1000">
'0'
</when>
<otherwise>
''
</otherwise>
</choose>
)
</foreach>
</insert>