自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C#—线程

加锁的目的就是避免不同线程访问相同的内存空间时造成冲突,加了static的count就是类共享的,不同的线程也不能同时访问和改值,不加static,count属于不同的对象,不同的线程访问和改值互不影响。

2024-04-17 10:51:22 116

原创 C#_枚举

C#新特性:可以指定枚举,可以指定具体的类型,但是还是只能是整数类型。

2024-04-15 22:03:08 179

原创 2.C#-贪吃蛇

贪吃蛇

2024-04-13 22:43:36 62

原创 C#—贪吃蛇

贪吃蛇

2024-04-13 22:35:16 62

原创 2.音乐播放器

就只放了一首歌,也比较简单,以后有时间可以扩展一下歌单。

2024-04-11 09:31:20 76

原创 1.音乐播放器

突然兴起,做的比较简单,大概做出来就是这样的:

2024-04-11 09:26:28 71

原创 C#_iTextSharp

在C#中对对pdf进行编辑,加密,模板打印等等都可以选择使用ITextSharp来实现。将一个功能从java版移植到C#中时用到了该功能,做个记录吧。

2024-04-08 17:10:31 84

原创 java_itextpdf

iText是著名的开源项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。刚好工作中用到了这个,做个记录吧;值得一说的是java的itextpdf在C#中也有一个对应的iTextSharp。

2024-04-08 17:06:10 90

原创 C#的可空类型

在不增加引用类型开销的情况下,num仍然是一个struct值类型。//这里会在调用前检查str的值,如果为空,不会调用方法,且右边表达式的结果为null;总结:对于值类型,后台会使用一个Nullable<T>的类型,但是对于引用类型,关联一个Nullable的特性做检测。可以将正常的字面值和不可空类型的值复制给可控值类型的变量,通过Value属性来访问它的值。num是可空的int,可以被赋值为null,可以调用HasValue来检查他是否被赋值。有两种方法来处理,?

2024-04-03 16:12:30 184

原创 C#的几个关键字

2.常量值必须在编译时能计算出来,因此不能用变量给其初始化,多用字面值。如果需要用变量初始化,就必须使用只读字段。var:类型推断的关键字,可以用来声明变量。根据赋值语句右侧的类型来推导被赋值的对象的类型。new:用来声明和初始化变量,在C#9后也可以一定程度上作类型推断。3.常量总算隐式静态的,所以不必明面标记static。左侧已经知道了变量的类型,就不用在赋值语句右侧重复指定类型。1.常量必须在声明时初始化,而且一经初始化,其值不可更改。const:定义常量的关键字。

2024-04-03 15:49:47 144

原创 C#的switch语句

在C#8以后的一种方便的新写法,根据不同的输入情况,返回对应情况下的值,本质上只能算作一条语句。当然case部分的内容还支持更复杂一些的逻辑。

2024-04-03 15:32:14 103

原创 C#的switch和模式匹配

在C#的switch雨季中不能删除不同case的break来实现fall through,不过对于常量模式的case语句,可以使用goto语句实现。对于类型模式和关系模式,暂时还没有成。

2024-04-03 15:08:35 161

原创 顶级语句(新特性)

根据提供的信息,C# 9.0 需要 Visual Studio 2019 版本 16.8 或更高版本才能运行。这意味着,如果你想要在 Visual Studio 中使用 C# 9.0 的新特性,你需要确保你的开发环境至少是 Visual Studio 2019 的 16.8 版本。感觉C#9.0后心拓展的这个功能,有点类似于脚本,不需要复杂的结构就可以直接书写代码内容。嗯,感觉和C语言比少了一个自己写main函数的过程,对于小型的样例程序应该会比较有用处吧。

2024-04-02 11:15:37 108

原创 扉页-晚熟的人

马上就要到清明节啦,晚樱即将开过,漫长的雨季。感觉三月是不是大家都普遍性的忙碌啊,晚归的次数明显变多了诶。后面还是得多抽点时间扩展自己的知识面,当然也得多动手啦。

2024-04-02 11:06:18 58

原创 java-输出流的两种常见操作

【代码】java-输出流的两种常见操作。

2023-12-01 16:31:06 372

原创 java-输入流的两种常见操作

【代码】java-输入流的两种常见操作。

2023-12-01 15:53:15 347

原创 java_双括号初始化

在构建匿名内部类的时候,可以用双括号构建一个初始化对象的代码块。

2023-11-30 14:15:45 354

原创 java_内部类

局部内部类不能用访问修饰符修饰,作用域就在声明这个局部内部类的块中。第二个有点就是可以访问作用域存在的这个块的局部变量,这些变量属于事实最终变量,实际上算是在生成局部内部类是形成了一个拷贝一样的字段,及时局部变量出来作用域,局部内部类里还是可以用。使用内部类只是为了把一个类隐藏在另外一个类的内部,并不需要内部类有外部类的引用,就可以将这个内部类声明为static类型。1.只要内部类不需要访问外部类对象,一般就应该声明为静态内部类。2.与常规内部类不同,静态内部类可以有静态字段和方法。

2023-11-30 14:01:45 373

原创 java_内部类

内部类转换的.class文件和外部类在一块,用美元符号$分隔,outerclass$innerclass.clss。所以给类命名时,最好不要用到$符号,保留给系统使用。

2023-11-30 10:44:56 336

原创 java_内部类

2.内部类方法可以访问定义这些方法的作用域中的数据,包括私有数据(内部类的对象会有一个隐式引用,指向实例化这个对象的外部类对象,通过这个引用(指针),内部类可以访问外部对象的全部状态,权限等于this,这个是默认的,编译器会修改所有内部类的构造器,添加一个对应外部类引用的参数,当构建内部类对象时,就会吧this指针传进来)1.内部类中声明的所有静态字段必须是final类型,并初始化编译一个常量。1.内部类可以对同一个包中的其它类隐藏。2.内部类不能有static方法。就是内部类最好不要有静态的成员。

2023-11-30 10:31:53 381

原创 java_lambda表达式

版权声明:本文为CSDN博主「尘觉」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。语法格式五:若 Lambda 体中只有一条语句, return 和 大括号都可以省略不写。语法格式四:有两个以上的参数,有返回值,并且 Lambda 体中有多条语句。-> 左边:lambda 形参列表的参数类型可以省略(类型推断);语法格式六:Lambda 表达式的参数列表的数据类型可以省略不写,语法格式三:若只有一个参数,小括号可以省略不写。语法格式二:有一个参数,并且无返回值。

2023-11-29 19:22:35 353

原创 java_数组引用

数组引用的语法格式是。

2023-11-29 19:18:11 361

原创 java_构造器引用

它与函数式接口相结合,自动与函数式接口中方法兼容,可以把构造器引用赋值给定义的方法,但。构造器引用的语法格式是。

2023-11-29 19:16:19 350

原创 java-方法引用

1.方法引用的访问符(::),和C++的域访问符好像是一样的,从类里面直接获取方法的引用,用来取代函数接口中的虚函数的函数体的 意思,我感觉,如下面,本来虚函数也是要实现println的函数的内容,就直接将println函数丢进去,根据能推导就可以省略省略的原则,printstring的函数体内容和println的函数体的内容是一样的,都是将s输出到窗口上。myMethod2:通过对象去访问类的成员函数;meMethod3:通过类名访问成员函数,报错了= =myMethod:通过类名访问类的静态方法。

2023-11-29 19:01:34 328

原创 java-Consumer接口

首先做一个操作,然后再做一个操作,实现组合。而这个方法就是 Consumer 接口中的 default 方法 andThen。Consumer 接口中包含抽象方法 void accept(T t) ,意为消费一个指定泛型的数据。如果一个方法的参数和返回值全都是 Consumer 类型,那么就可以实现效果:消费数据的时候,就是先接受参数“Hello”,然后再把“Hello”返回。

2023-11-28 20:15:20 318

原创 java-Supplier接口

T指定了返回类型,类型推导。至于get里面实现什么内容,可以根据自己需要来写。注意如果有参数的时候,lambda表达式的参数和所在的函数的局部变量的参数名称不能冲突。接口仅包含一个无参的方法: T get()。用来获取一个泛型参数指定类型的对象数据。java.util.Function.Supplier<T> 标准的函数式接口。传入lambda表达式的局部变量的值也不能改变。

2023-11-28 20:02:20 420

转载 java-常用的函数式接口

java.util.function.Supplier<T> 接口仅包含一个无参的方法: T get()。java.util.function.Function<T,R> 接口用来根据一个类型的数据得到另一个类型的数据,前者称为。然后再做一个操作,实现组合。Function 接口中最主要的抽象方法为: R apply(T t) ,根据类型 T 的参数获取类型 R 的结果。数组当中有多条 “ 姓名 + 性别 ” 的信息如下,请通过 Predicate 接口的拼装将符合要求的字符串筛选到。

2023-11-28 17:55:55 25

原创 java-函数式编程

这个接口的抽象函数,是没有参数的,所以lanbda表达式->的左边是();上面执行这个log函数的时候,实参到形参的过程一定会完成三个字符串的拼接工作,但是如果lever不是1级的,那拼接的msg也用不上,相当于做了无用功,直观感受就是浪费性能。首先是传递参数,会验证level这个判断,而lanbda表达式的内容只有在需要的时候,才会用到,也就是调用。上面的博客讲的很清楚哈,但是我还是想自己敲一下,印象深刻一些,所以算是炒现饭啦。的时候,需要这个接口的实现的对象的时候,才会传递进去。

2023-11-28 17:53:02 348

原创 Java -函数式接口

上面的doSomething方法需要一个MyfunctionInterface的参数,但是接口是不能实例化的,肯定要传实现该接口的子类的对象进去,但是利用匿名内部类的方式,我们可以实例化一个这样的对象,相当于他的子类的对象吧,在其中实现了它的抽象方法。我的理解是,因为接口只有一个待实现的方法,所以写lambda表达式的时候很好匹配上,传进来的代码块就是待实现的这个抽象方法的具体执行方式。主要是要看到lambda表达式,要先了解什么是函数式接口。

2023-11-28 17:29:11 335

原创 4.4 A*算法——运行结果

随便点起点和终点,然后设置黑色的障碍物,看看寻路的结果吧;其实不一定是唯一的,但是会选代价最小的其中一条。

2023-11-24 15:01:54 403

原创 4.3A*算法——算法内容

【代码】4.3A*算法——算法内容。

2023-11-24 14:59:35 351

原创 4.2A*算法——绘制地图的界面

就是把每次计算出来的结果绘制出来,算是对算法每一步的结果的一个可视化吧。

2023-11-24 14:58:25 343

原创 4.1 A*算法

主要的功能界面:就是定义地图绘制的位置,按钮等控件的位置,然后吧界面稍微调的和谐一点。

2023-11-24 14:56:24 309

原创 4.A*算法

先说一下想法,收先肯定要画一个类似于棋盘的东西,然后需要几个按钮,设置起始位置、设置障碍物、开始寻路、清空地图,所以需要在一个pannel里至少分出两块,一个交互区域,一个地图显示区域。集成第一个内容上去吧,不然都是架子,空荡荡的;关于A*算法的原理网上有很多啦,也有很多升级版,我就写一个最基本的吧,完成最短路径的计算就行了。然后就是算法的内容,肯定还是需要交互,然后吧坐标点返回出来,所以还需要写一个算法类。主要可能就是这些,至于Point等这些辅助类,有需要的话就自己设计一下。

2023-11-24 13:42:49 895

原创 3.6 主界面——信息窗

主要就是建一个panel,实现下面的两个方法,后面需要打印的时候,就通过单例找到这个窗体的实例,然后调用者两个方法,就可以输出在这个信息窗了。其实我的想法就是一个信息暂时的窗口,比如后面跑算法的时候,凡是需要println的地方,都可以输出到这个信息窗来,这样方便检查。写一下信息窗,信息窗的实现主要是为了很好的打印需要打印的信息,可能这些信息会需要向日志一样输出。到这里 主界面其实就算是搭好了,后面就开始实现一些例子吧。

2023-11-24 11:25:35 331

原创 3.5 主界面——文件树

在gui的包里建一个DocumentTreePanel的类;因为暂时也没实现什么功能,所以就比较简单的加几个节点看一下就行了。本质上就是在一个panel中加tree,然后通过添加节点和节点的响应来实现的。

2023-11-24 10:54:46 329

原创 3.主界面-主工作区

主工作区主要还是一个panel,主要还是用javadocking将主工作区划分为四个部分,也就是四个小块,左上角放文件树,左下角暂时保留,右边中间是主工作区内容,右下放信息窗口,有什么需要打印的信息都可以放在右下角。

2023-11-24 10:51:53 327 1

原创 3.3主界面——初始化菜单栏和工具栏

因为工具栏可能会用到combobox和button这些控件实现,所以我们去建一个tool的包,实现一些这些可能用到的组件。其实就是继承后重写了一下样式,然后写了一下响应时间,如果不嫌难看,用自带的也是可以的。虽然现在菜单栏和工作栏还没有什么功能,不过还是初始化一下把,放在上面装装样子,后面需要通过他们实现一些功能的时候再来实现吧。因为暂时也没设计这部分的功能,所以随便写写吧。

2023-11-24 10:23:58 366 1

原创 3.2 主界面——mainframe

还是在QHgui的包里建一个QHMainFrame的窗体类,继承JFrame;然后在欢迎界面验证成功的后面,将主窗体的对象实例化并且show出来。前面做了点准备,现在开始写主窗体吧。欢迎界面部分的实例化,设置一个logo吧。

2023-11-24 09:45:35 364 1

原创 3.1 主界面——单例服务

首先写一个SingleInstanceKey的类,类似于一个枚举类型吧,把可能用到的单例的Key放进去,以后就可以按key值访问。想来主界面、主工作区、文件树和信息窗这些,以后多半也是全局唯一的,所以先去做一个单例,以后通过单例的注册就可以在需要的时候很方便的找到对应的内容。然后写一个SingleInstance类用来存放单例,相当于字典,在生成单例是就放进来,以后要用的时候就从这里取。先去工程下,建一个QHService的模块,然后建一个SingleService的包。

2023-11-24 09:36:15 297 1

空空如也

空空如也

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

TA关注的人

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