自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(111)
  • 收藏
  • 关注

原创 C++项目引入依赖_例jsoncpp(MAC/CLion)

cmakelist.txt 文件中,导入头文件和lib文件,配置 include_directories() 和 target_link_libraries() 导入依赖。接下来,在需要导入#include 语句在 C 或 C++ 代码中包含 jsoncpp 库,并使用 jsoncpp 提供的 API 来处理 JSON 数据。将 jsoncpp 项目中的 include 文件夹和 build/lib 中的 lib文件,复制粘贴至项目里。执行上述步骤, jsoncpp 编译成了 lib。

2023-12-14 16:42:06 922

原创 Java中的SPI(service provider interface)服务提供者接口机制

当运行上述代码时,ServiceLoader会自动查找并加载META-INF/services/目录下的配置文件,并实例化服务接口的实现类。在循环中,可以通过迭代器获取每个实现类的实例,并调用其方法。在Java中,SPI(Service Provider Interface)是一种服务提供者接口机制,它允许应用程序通过插件的方式动态加载、实例化和使用服务的实现类,实现了组件之间的解耦和扩展性。SPI机制使得应用程序能够动态加载和使用服务的实现类,而无需在代码中显式指定具体的实现类。

2023-08-29 16:10:46 462

转载 Scala教程

Scala入门教程

2022-06-13 18:22:14 843

原创 基本数据类型和引用数据类型作为方法参数传递的区别

结论基本数据类型作为方法参数传递的时候,传递的是值,并不是基本数据类型所存的地址。引用类型作为方法参数传递的时候,传递的是引用,当我们通过引用改变变量的内容的时候,由于两个对象的地址指向同一块内存区域,所以可以成功改变值。案例基本数据类型对于int基本类型以及他的包装类(考虑到Integer的缓存地址(-128~127),设置的值大一点),传递的是值,通过方法改变参数不能实现。特殊的,String类型是final修饰的,也不能通过方法修改值(当然,String类型其他的方法也不能修改哈哈哈哈,

2021-07-13 21:09:27 1424 1

原创 校园网自动登录脚本及定时任务设置

校园网自动登录脚本:login.py# -*- coding: utf-8 -*-"""@author: tan"""from urllib import request, parseimport subprocessimport reimport timedef get_Local_ipv6_address(): """ This function will return your local machine's ipv6 address if it exits

2021-06-21 15:07:52 2014

原创 react中使用Ant Design中OnFilter显示index of 报错: Uncaught TypeError: Cannot read property ‘indexOf‘ of null

问题:Uncaught TypeError: Cannot read property ‘indexOf‘ of null 。解决办法:默认语句:修改为:onFilter: (value, record) => record.highest_city_id_name!= null && record.highest_city_id_name.indexOf(value) === 0,增加一个非空判断。...

2021-05-13 16:01:20 855

原创 golang中struct作为func中的参数需要定义为指针类型的原因

为什么golang struct结构体方法中的参数需要定义为指针类型的原因在参考博客中提到的案例:写一个网页的简单计数器问题时防线,计数器居然永远为0,计数器不计数,见鬼了。。。。代码如下:type Counter struct { n int}func (ctr Counter) ServeHTTP(c http.ResponseWriter, req *http.Request) { fmt.Fprintf(c, "%08x\n", ctr) ctr.n++ fmt.Fprintf

2021-04-26 11:57:53 2046

转载 Go语言中结构体与JSON映射

常常能见到如下的这样结构体成员后边带有json的标签:type Model struct { ID int `gorm:"primary_key" json:"id"` Del int `json:"del"` //是否删除 CreatedOn time.Time `json:"-"` ModifiedOn time.Time `json:"-"` DeletedAt *time.Time `json:"deleted_at,om

2021-04-26 11:41:23 1722

转载 golang中下划线(_)的使用说明

golang的下划线的三种用法1. 忽略返回值这个应该是最简单的用途,比如某个函数返回三个参数,但是我们只需要其中的两个,就可以这样写:v1, v2, _ := function(...)2. 用在变量,特别是接口断言例如我们定义了一个接口(interface)type Foo interface { Say()}然后定义了一个结构体(struct)type Dog struct {}然后我们希望在代码中判断Dog这个struct是否实现了Foo这个interfacevar

2021-04-26 11:01:04 242

原创 shell文件中 if [ “x${var}“ == “x“ ] 里面x的作用

示例if [ "x${var}" == "x" ]if [ x"$DPVS_TYPE" == x"SNAT" ]目的防止出现语法错误。分析因为如果不写x,只用 if [ “var=="0"]来判断{var} == "0" ]来判断var=="0"]来判断{var}的值;当var为空或未设置时,语句被解释为if[=="0"],出现语法错误。加上x后,当{var}为空或未设置时,语句被解释为 if [ == "0" ],出现语法错误。加上x后,当var为空或未设置时,语句被解释为if[=="0

2021-04-21 18:20:30 1240

原创 linux中操作文件:读取文件的前几行、后几行、中间几行的命令

linux 如何显示一个文件的某几行(中间几行)简单版1、如果你只想看文件的前100行,可以使用head命令,如head -100 filename2、如果你想查看文件的后100行,可以使用tail命令,如tail -100 filename 或 tail -n 100 filename3、查看文件中间一段,你可以使用sed命令,如sed -n '100,200p' filename 复杂版例子1:从第3000行开始,显示1000行。即显示3000~3999行cat file

2021-04-11 21:18:34 3813

原创 HashSet类对象使用迭代器无法进行增删操作的问题及解决办法

问题描述在HashSet类的使用过程中有一个案例:金角大王有一个紫金葫芦,里面装进了“孙行者”,“者行孙”,“行者孙”。现在来了一个“孙悟空”,他说:现放出我的朋友“孙行者”,再把我装进去。请用HashSet和Monkey类实现以上需求。如果按常理使用迭代器进行增删操作:public class Test { public static void main(String[] args) { Monkey m1 = new Monkey("孙行者"); M

2021-03-17 17:18:22 301

原创 win10上的VMware安装黑Mac(黑苹果、AMD)

使用AMD处理器的笔记本,在虚拟机上安装MAC操作系统。本机安装配置:华硕天选 AMD Ryzen 4800H 24G运存Mac OS 10.13 High Sierra1. 下载所需资源所需资源下载链接: mac os 10.13镜像,其他工具链接: https://pan.baidu.com/s/1ncKY0T37zBcU_XGP6tPXnQ 提取码: sf472. 使用VMware的Mac补丁—Unlocker需要python2.7以上环境右键任务栏, 打开任务栏.

2021-02-22 21:31:45 2421 2

原创 Idea 各种图标的含义

在咱们使用 IntelliJ IDEA 创建文件的时候, 随着文件类型的不同,其显示的图标也不相同。例如,咱们分别创建 Java、Interface、Enum 和 JavaScript 文件,如下图所示:如上图所示,显然不同的文件类型,其显示的图标也不相同。为了能够更好的掌握 IntelliJ IDEA,在这里,咱们更进一步,了解一下 IntelliJ IDEA 各种文件类型的图标,主要分为三类:Common、Data Sources 和 File Types.CommonData Sourc

2021-01-17 11:06:42 1043

原创 SpringCloud原生注解 @RefreshScope 的作用

作用SpringBoot 使用 @RefreshScope注解,实现配置文件的动态加载。使用方法修改配置文件后,不重启应用。在需要读取配置文件的地方添加 @RefreshScope注解发送POST请求:http://localhost:port/actuator/refresh。然后在重新发送controller层的请求,发现配置文件的更新已经生效了。适用场景1. Springcloud的config分布式配置中心:springcloud中各个模块的配置统一放置在 github上,通过

2021-01-13 17:16:28 4860

原创 CAP理论/AP架构/CP架构

Eureka服务治理机制与Dubbo服务治理机制的比较:FeatureEurekaZookeeper服务健康检查可配支持(弱)长连接,keepaliveCAPAPCPwatch支持(客户端观察到服务提供者的变化)支持long polling/大部分增量支持自我保护支持-客户端缓存支持-自身集群监控metrics-Eureka 支持健康检查,自我保护等。Zookeeper为CP设计,Eureka为AP设计。作为服务发现.

2021-01-13 16:51:48 349 1

原创 Springcloud+gateway报错Parameter 0 of method modifyRequestBodyGatewayFilterFactory in...

搭建Springcloud + Gateway项目时,启动gateway模块报错:***************************APPLICATION FAILED TO START***************************Description:Parameter 0 of method modifyResponseBodyGatewayFilterFactory in org.springframework.cloud.gateway.config.GatewayAutoC

2021-01-12 13:01:09 8277 2

原创 服务端负载均衡 VS 客户端负载均衡(Ribbon)的区别

1. 什么是负载均衡负载均衡可以想象为将所有请求先聚在一起,然后根据负载均衡算法分发请求达到合理分配请求,将服务器处理请求的效率达到最大化,为微服务集群分担请求,降低系统的压力。常见负载均衡算法:1、随机,通过随机选择服务进行执行,一般这种方式使用较少;2、轮询,负载均衡默认实现方式,请求来之后排队处理;3、加权轮询,通过对服务器性能的分型,给高配置,低负载的服务器分配更高的权重,均衡各个服务器的压力;4、地址Hash,通过客户端请求的地址的HASH值取模映射进行服务器调度。5、最小链接数;

2021-01-10 21:04:14 575

原创 compareAndSet()方法的使用

问题导入public static AtomicLong largest = new AtomicLong();//在某些线程中largest.set(Math.max(!largest.get(),observed));//错误--竞争条件上述代码在多线程环境下是不正确的,更新过程不是原子性的。不是原子性,也就意味着在多线程并发的情况下,有可能这个变量会被修改。对于上面那么操作,并不能说要么一次就执行成功,或者要么就不执行。使用 compareAndSet利用compareAndSet, C

2021-01-10 20:24:53 6945

原创 Java实现Comparable接口(重写compareTo方法)和Comparator接口(重写compare方法)

Compareable接口和Comparator接口实体类: java.lang.Comparable(接口)+compareTo(重写方法)业务类:java.util.Comparator(接口) +compare(重写方法)两个接口分别对应的业务实现在实际的需求中,我们根据对象的各种属性(标题,时间,点击率,销售额。。。)进行排序(升序,降序),可以做哎数据库的sql上进行处理,但是不是每一个场景都适合在sql上进行处理,我们有时候需要在程序根据不同的属性,对一个对象进行各种排序通过页面呈现给

2021-01-04 11:40:54 3437

原创 Integer的大于127与小于128使用==比较

代码效果:Integer i=127;Integer j =127;system.out.println(i==j);i=128;j=128;system.out.println(i==j);i=new Integer(127);j=new Integer(127);system.out.println(i==j);//输出结果truefalsefalse原因分析:JVM 的缓存机制导致的jvm在运行时创建了一个缓存区域,并创建了一个Integer数组。这个数组存储

2021-01-03 14:47:39 750 1

原创 秒杀项目分析

秒杀项目分析一、redis① redis相关设置、类和接口的作用1)application.propertiesredis的配置信息:application.properties#redisredis.host=localhostredis.port=6379redis.timeout=100redis.password=123456redis.poolMaxTotal=1000redis.poolMaxIdle=500redis.poolMaxWait=5002)redis

2020-12-26 19:39:27 309 1

原创 nohup命令 和 &的作用

1. nohup- 用途:不挂断地运行命令。- 语法:nohup Command [Arg ...] [&]无论是否将nohup明林的呼出重定向到终端,输出都将附加到当前目录的 nohup.out文件中。如果当前目录的nohup.out文件不可写,输出重定向到 $HOME/nohup.out文件中。如果没有文件能创建或打开用于追加,那么Command参数指定的命令不可调用。2. &- 用途:在后台运行一般两个在一起用nohup command &...

2020-12-24 10:49:11 330

转载 登录密码的两次MD5加密设计的原因和流程

一、为什么要对密码进行MD5密码明文传递或者直接写到数据库中,都有被偷看的风险。二、为什么要对密码进行两次MD5加密单次的MD5不一定安全,在实验室条件下可能通过碰撞进行解码。并且针对一些简单的密码,有一些反查md5的软件,对密码进行两次md5操作是为了更好地保密。三、两次MD5加密整体流程如何实现整体加密流程:MD5(MD5(pass明文+固定salt)+随机salt)第一次固定salt写死在前端第二次加密采用随机的salt 并将每次生成的salt保存在数据库中登录流程:前端对用户输入

2020-12-22 16:12:14 2357

转载 @ConfigurationProperties注解理解和使用

参考:https://www.cnblogs.com/jimoer/p/11374229.html理解@ConfigurationProperties在编写项目代码时,我们要求更灵活的配置,更好的模块化整合。在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 application.yml 文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值使用@ConfigurationPro

2020-12-21 21:12:09 425

原创 mysql创建索引时字段名后括号里的length的作用

创建索引最基本的方式:CREATE INDEX indexName ON mytable(username(length));其中,indexName代表创建的索引的名字,mytable代表使用的表名,username代表我们创建索引的字段(即针对某个字段创建的索引),length代表我们使用前面字段中的长度限制。如果是CHAR,VARCHAR类型,length可以小于实际长度;如果是BLOB和TEXT类型,必须制定length。创建索引中字段名后的 length的作用:对于CHAR和VAR

2020-12-14 21:13:12 1191

原创 python用pd.read_csv()方法来读取csv文件,用DataFrame对象.to_csv()方法来保存数据成csv文件

csv文件是一种用,和换行符区分数据记录和字段的一种文件结构,可以用excel表格编辑,也可以用记事本编辑,是一种类excel的数据存储文件,也可以看成是一种数据库.一、用DataFrame对象.to_csv()方法来保存数据成csv文件DataFrame 数据的保存和读取:df.to_csv 写入到 csv 文件pd.read_csv 读取 csv 文件df.to_json 写入到 json 文件pd.read_json 读取 json 文件df.to_html 写入到 html 文件.

2020-12-11 09:59:25 29968

原创 idea使用lombok不生效的解决办法(Java)

解决方法步骤一file–>setting–>plugins点击下方的 browse repositories。搜索lombok plugin。安装后,重启。步骤二file–>setting–>build,excecution,deployment–>compiler–>annotation processors勾选上 enable annotation processing。即可生效。...

2020-11-30 11:27:45 300

原创 Java中的静态代理和动态代理

什么是代理代理是设计模式的一种,代理类为委托类提供 消息预处理,消息转发,事后消息处理等功能。Java中的代理分为三种角色:代理类(ProxySubject)委托类(RealSubject)接口(Subject)三者的关系可以表示如下图:Java中的代理按照代理类的生成时机不同又分为 静态代理 和 动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在java运行时动态生成。静态代理Java中的静态代理要求代理类(ProxySubject)和委托类(RealSubject

2020-11-27 21:18:50 140

原创 JAVA设计模式总结之23种设计模式

一、什么是设计模式设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应

2020-11-27 21:17:31 57

原创 JAVA基础:java元注解之@Target、@Retention、@Documented、@Inherited详解

一、元注解元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:@Target@Retention@Document@Inherited这些类型和它们所支持的类在java.lang.annotation包中可以找到。下面我们看一下每个元注解的作用和相应分参数的使用说明。1.1 @Target注解1.1.1 定义:@Target说明了Annotation所修饰的

2020-11-27 21:15:10 237

原创 数据库的四种隔离级别及对应解决的脏读、不可重复读、幻读问题

数据库的四种隔离级别数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。脏读、不可重复读、幻读的概念说明脏读:指当一个事务正在访问数据,并且对数据进行了修改,而这种数据还没有提交到数据库中,这时,另外一个事务也访问这个数据(修改后的还没提交的数据),然后使用了这个数据。因为这个数据还没有提交那么另外一个事务读取到的这个数据我们

2020-11-27 21:00:58 3742 7

原创 element-ui 下拉el-dropdown-item添加点击事件@click无效

添加: @click.native

2020-11-27 21:00:13 192 1

原创 百度人脸识别API调用(人脸搜索)Java实现

调用百度的AI平台接口,做一个人脸搜索的例子。搜索效果展示首先展示一下搜索效果{"error_code":0,"error_msg":"SUCCESS","log_id":1594001001201,"timestamp":1605865451,"cached":0,"result":{"face_token":"869a08589f2ef7d0c9424204ae3bd3f5","user_list":[{"group_id":"user","user_id":"001","user_info":

2020-11-20 20:00:20 2180

原创 java使用POI获取sheet、行数、列数

java使用POI获取sheet、行数、列数FileInputStream inp = new FileInputStream("E:\\WEIAN.xls"); HSSFWorkbook wb = new HSSFWorkbook(inp);HSSFSheet sheet = wb.getSheetAt(2); // 获得第三个工作薄(2008工作薄)// 填充上面的表格,数据需要从数据库查询HSSFRow row5 = sheet.getRow(4); // 获得工作薄的第五行HSSFCel

2020-11-16 20:11:35 1945

转载 TCP字节流与UDP数据报的区别

TCP是一种流模式的协议,UDP是一种数据报模式的协议但是, ”流模式“与”数据报“模式在编程的时候有什么区别呢?1. TCP打个比方比喻TCP,你家里有个蓄水池,你可以里面倒水,蓄水池上有个龙头,你可以通过龙头将水池里的水放出来,然后用各种各样的容器装(杯子、矿泉水瓶、锅碗瓢盆)接水。上面的例子中,往水池里倒几次水和接几次水是没有必然联系的,也就是说你可以只倒一次水,然后分10次接完。另外,水池里的水接多少就会少多少;往里面倒多少水,就会增加多少水,但是不能超过水池的容量,多出的水会溢出。结

2020-11-16 11:32:41 119

原创 lombok编译时注解@Slf4j的使用及相关依赖包

相关依赖的导入slf4j是一个日志门面模式的框架,只对调用者开放少量接口用于记录日志主要接口方法有debugwarninfoerrortrace在idea中可以引入lombok框架,使用@Slf4j注解,在编译时动态成功日志调用实例。 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId>

2020-10-12 20:04:32 12330

原创 MybatisPlus采坑点 @TableId注解的使用

使用@TableId注解时,类型为: type = IdType.AUTO 数据库也需要设置自增否则会出 Cause: java.sql.SQLException: Field ‘id’ doesn’t have a default valueMybatis-plus优秀博客学习网站https://www.cnblogs.com/MessiXiaoMo3334/p/13237247.html...

2020-10-12 20:03:44 2904

原创 Navicat 中没有设置默认CURRENT_TIMESTAMP选项

如图所示没有CURRENT_TIMESTAMP下拉选项,这个可以用sql语句弥补第一步 查看数据库的sql文件第二步 查看sql语句第三步 将sql语句复制到查询窗口中,并进行更改DEFAULT CURRENT_TIMESTAMP第四步 运行sql语句,修改成功。...

2020-10-12 20:03:18 1510

转载 弹性布局(display:flex;)属性详解

参考Blog https://www.cnblogs.com/hellocd/p/10443237.html

2020-10-12 20:02:12 46

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除