无题
JDK使用IDEA,配置JavaFX1、下载JavaFX相关的包(下载地址:JavaFX - Gluon (gluonhq.com))
嫌麻烦的可以使用自带JavaFX的JDK,很好用
比如:
Java Download | Java 8, Java 11, Java 13 - Linux, Windows & macOS (azul.com)
2、到IDEA中配置【1】下载完成之后,解压,记住你存放的路径
【2】打开IDEA新建project,选择javaFX,自己修改Project name和location,可以按照自己的习惯去定义名字和路径,这些步骤和新建java的project很像
【3】在新建好了之后,显示报错,无法编译,这个时候我们就找到需要导入东西了,需要配置javaFX 相关,找到你之前下载的包,导入lib文件夹,点击OK
【4】此时编译已经可以通过了,但是还不能执行,需要配置VMoption。操作 run->Edit Configuration->填入下列路径双引号里面填写你的javafx sdk的路径,一直 ...
无题
最近看完一些文章后的学习感悟1、不要把时间精力都花费在各种工具库、框架、中间件的的使用以及配置上!
从投资的角度来看,这些东西的投资价值并不高,有很大概率过几年就过时了或者被淘汰了。举个例子:Struts2被Spring干掉了,Spring又被Spring Boot继承了,ActiveMQ被Kafka、RabbitMQ等优秀的消息队列干掉了。太多这样的例子了,就算是Spring Boot目前依然存在被其他框架替代的可能性,没有什么是永恒不变的,尤其对于工具库、框架和中间件来说。(但是这些工具和中间件的底层原理还是值得学习的)
2、技术方面我们应该投资计算机基础知识、优秀的编码设计、系统设计、设计模式、各种技术的原理,定位问题的能力等等
基础以及原理性的知识一般不会淘汰,只会被更先进的技术给覆盖
3、非技术方面,我们应该投资业务的理解能力、抗压能力、表达能力等等
4、构建知识组合并对知识组合做定期投资
什么是知识组合?我们喜欢把程序员所知道的关于计算机的所有方面、他们所工作的应用程序领域以及他们的所有经验作为他们的知识组合。管理知识组合与管理金融组合非常相似
5、成功 ...
无题
Mac下安装多个jdk、配置环境变量灵活切换1、安装多个jdk
Zulu jdk
Oracle jdk
Releases · graalvm/graalvm-ce-builds (github.com)
2、查看所有jdk1cd /Library/Java/JavaVirtualMachines
1234kazama@KAZAMAdeMacBook-Air / % cd /Library/Java/JavaVirtualMachineskazama@KAZAMAdeMacBook-Air JavaVirtualMachines % lsgraalvm-ce-java17-22.2.0 zulu-8.jdkzulu-17.jdk
3、使用export和alias命令
关于alias命令,看这里传送门。
关于export命令, 看这里传送门。
4、修改mac的配置文件12345# 使用该命令打开文件进行编辑(推荐)open ~/.bash_profile# 直接在终端进行编辑vim ~/.bash_profile
Ps:上述命令执行完需要修改~/.z ...
无题
一门教学语言:C[V] 翁恺C语言程序编程全系列[B] C primer
四门基础(408考研大纲)计算机组成原理计算机系统数据结构与算法计算机网络
[V] 王道论坛B站(无论新旧)[B] 深入理解计算机系统[B] 自顶向下:计算机网络[V] 【精校中英字幕】2015 CMU 15-213 CSAPP深入理解计算机系统 编程视频
一个系统:linux基本操作[V] C/C++ 高级编程系列(1)之Linux服务器开发—基础教程[V] 黑马程序员-Linux系统编程[V] 黑马程序员-Linux网络编程[V] 2020全新shell脚本从入门到精通实战教程
一个工作语言:Cpp/Golang/Lua/Java[V] C++翁恺老师[B] Cpp primer[B] Effective C++[B] More Effective C++
刷题不止:LeetCode/牛客C语言基本语法学完后即可开始刷题推荐leetcode
一些小项目[V] C++ 游戏服务器开发,C++ 后台服务器开发,C++ 网游开发 根据自己的方向进行选择一些经验
配置环境 ...
无题
感觉自己学的有点太追求速度了,质量上不太行,今天看到这条视频,简直释怀了,特别有感触,知识点针对特别容易遗忘,于是我总结了下,又开始了我的自学之旅:
关于学编程的学习方法
学习时
【巩固知识】开始学习前,一定要复习前一天的笔记以及代码,代码一定要再敲一遍,目的是复习前一天的知识,其实是又增加了一次的锻炼了编程思维
【阶段性复习,变短期记忆为长期记忆】学习一个模块,就要按照自定的时间段再次复习,过一个星期,一个礼拜,半个月,一个月….
学习中
【化繁为简,先死后活思想】学习时,解决复杂问题,先从简单的逻辑步骤开始实现,逐渐添加复杂的逻辑
【提高学习效率,事半功倍的方法】每自学一段视频后,就跟着老师的思路再实现一遍代码,代码中涉及逻辑的重要的地方一定要加注释,便于后面复习回顾,例如:做项目时,写好实现业务逻辑的思路的注释,也便于后面根据思路来实现业务逻辑,
【做好笔记】要多做笔记,笔记分门别类,条理清晰,便于复习查阅
【遇到问题,如何去解决?】遇到不懂的问题,一定要多提问去解决这个问题而不是堆积问题,可以问老师,问朋友,以及加一些编程交流群向群中大佬提问弄清问题为止(脸面是最不值钱的东 ...
无题
C++开启多线程和实现sleep的三种方式1、C++多线程编程C++11已经支持多线程,但编译时需要添加-std=c++11和-pthread选项。
1g++ -std=c++11 sample.cpp -pthread
如果使用CMake编译:
1234# CMakeLists.txt中添加set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-std=c++11 -pthread")# 头文件:<thread>
2、C++多线程—线程管理12345678910111213141516171819#include <iostream>#include <thread>using namespace std;void output(int i){ cout << i << endl;}int main(){ // 在一个for循环内,创建4个线程分别输出数字0、1、2、3 for(int i = 0 ...
无题
C++必须使用【初始化列表】初始化数据成员的三种情况1、类对象的构造过程《C++ Primer Plus》中这样描述:从概念上来说,调用构造函数时,对象将在括号中的代码被执行之前被创建。因此,调用构造函数将导致程序先给其成员变量分配内存。然后,程序流程进入到括号中,使用常规的赋值方式将值存储到内存中。
我们将构造函数分为两个先后过程:
①初始化阶段。创建对象,给成员变量分配内存。调用构造函数时,创建对象,隐式/显示的初始化各数据成员(给其成员变量分配内存);
②赋值计算阶段。进入构造函数体中执行一般赋值与计算操作。
2、成员初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。成员初始化列表只能在构造函数中使用。
3、使用初始化列表的原因
其一:C++语法规定使然。其二:主要是性能问题,对于内置类型,如int, float等,使用初始化类表和在构造函数体内初始化差别不是很大,但是对于类类型来说,最好使用初始化列表。
为什么呢?使用初始化列表少了一次调用默认构造函数的过程,这对于数据 ...
无题
C/C++静态变量和静态函数
C语言必须注意的几个问题
1、内存泄漏:
申请一块内存,但没有释放,程序结束也没回收,导致其他程序不能使用。
2、野指针:
指一个内存指针已经被释放free或者realloc,但指针依然在使用。避免野指针的情况,将内存的指针置为NULL,并在程序使用的时候判断该内存是否为NULL,如果为空,则认为该内存已经释放,不对内存进行访问。
3、非法释放内存
同样释放函数中的局部变量也是非法的.还有一种情况是,对一个堆内存释放两次也是错误的用法。因为free()函数是不能释放未分配的堆内存。在程序使用free释放内存之后,应该将指针置为NULL,free一个NULL地址是没有问题的。
1、static变量静态变量的类型 说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态 存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。
2、静态局部变量静态局部变量在函数内定义它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用 ...
无题
Linux C/C++实现UDP通信1、UDP通信流程
2、函数原型介绍123456789101112131415161718192021ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);/*sockfd:socket返回的套接字文件描述符。buf:应用缓存,用于存放接收到的数据。len:buf的大小。flags:一般写0,表示阻塞接收数据(其他的常用设置同recv函数)。src_addr:“数据发送方”的ip和端口。addrlen:src_addr的大小。*//*注意src_addr:用于保存“数据发送方”的ip和端口,以便“接收方”回答对方。若是局域网通信,ip就为局域网ip;若是广域网通信,ip就为对方所在路由器的公网ip。若无需回答对方数据,则可以不用保存对方的ip和端口,recvfrom最后两个参数写NULL,此时与recv函数的功能完全等价。函数返回值:成功返回接收到的字节数,失败返回-1,ernn ...
无题
Qt中使用Sleep()Qt提供了QThread::sleep(500);
也可以使用各系统中对应的Sleep()函数,只要包括各系统对应的头文件即可。
windows平台
#include <windows.h>,就可以用Sleep()了。
Linux平台
#include <sys/stat.h>,
或者使用(windows下测试可使用,Linux未测试)
#include <synchapi.h>,synchapi.h是Qt自带的头文件
Sleep(40);延迟40毫秒。