用GPT-4极速搞一款跨平台图片压缩工具--MoreImages
通过NewBing的GPT-4,从0快速开发一个跨平台的图片压缩处理工具
开源: 地址安装包下载:地址
绝大部分由new Bing生成,框架采用Compose Desktop理论上支持linux,windows,mac三端
软件截图:主界面:设置界面:压缩:
开发过程总共净耗时约一天半天时间,包含代码生成,组装代码,调试bug
详细调教开发过程先略过
资源解锁new bing :https://github.com/Vanda688/Using-GPT4-image-recognition-on-NewBing
Kotlin协程总结
相关的概念
协程UML图
相关资源
coroutines-best-practices
kotlin-coroutines-patterns-anti-patterns
github–kotlin-coroutines-class-diagram
Tabby--这款终端用起来真不错
缘由
手下小有几个服务器, 管理起来有点麻烦.
想当年(去年O(∩_∩)O), 我还是个大学生, 还能白嫖Github学生包, 还能免费用Termius(这款ssh终端属实好用, 就是有点gui), 害, 现如今, 咱可是正经社会好公民.
白嫖他不香吗?
找个Termius替代品, 要求:
界面美观, 花里胡哨
高拓展性, 插件系统
可以同步配置(这才是根本)
多平台, 最好还有移动端
开源啊
锁定以下几款
electerm 不错, 基本完美
Hyper 本地用完美
Tabby 完美啊, 还有个web版本, 自己部署美滋滋, 就你了
Tabby体验
GitHub仓库地址
mac端体验
主页面
设置页面
支持分组-这点不错,不过跟Termius还是差点体验,Termius多层嵌套分组,哈哈,不过开源,想加可以自己动手
同步设置
同步支持自定义主机,也可以用官网提供的
这点同步有点问题,差点白费劲儿
记得把自动同步关了,多传几个配置
好不容易把Termius配置手动迁移过来,然后开了自动同步,然后就o了,忙活半天数据没了。还得重新迁移。
不行,怎么能白费劲 ...
Kotlin开发总结
Kotlin基础
Kotlin_Basics
类与方法
Kotlin_Functions
Lambda
都是冒号:,继承,变量类型定义,都是冒号,跟在冒号后边
定义方法 fun functionName(): T{}
用 :后边跟返回类型,不写默认 Unit ,可以定义泛型
方法后边可直接跟表达式,返回类型编译器可以自动推断
1fun sum(n1:Int,n2:Int) = n1 + n2
方法的形参可以有默认值
1fun nice(s1:String="我",s2:String="真NB") = s1 + s2
方法参数可以使Lambda
1234567fun ok( no:Boolean=false, yes:()->Unit={println("oh yeah")}, )={ yes() println(no)}
参数最后一个lambda可以再调用时候直接写成代码块
12345fun main(){ ok(true){ // ...
Docker运行macOS?Docker-OSX
Docker的mac镜像
https://github.com/sickcodes/Docker-OSX
https://github.com/kholia/OSX-KVM
Github官方云端IDE——CodeSpaces
CodeSpaces内测
官网 https://github.com/features/codespaces
使用体验
内测阶段只能创建两个库,库之间是独立的。
有休眠策略,但是个性化配置会保存,在重启后仍然有效
使用起来跟本地vscode没有多大区别,网络由于某些原因,直连稍微有些延迟。
内置的容器保存文件不会丢失,相当于给了一台虚拟机。
Java探索之集合
Java集合相关问题List,Set,Map区别
Collections框架延伸
Map延伸
描述
List(顺序):List接口存储一组不唯一(可以多个元素引用相同对象),有序的对象。
Set(注重独一无二):元素不可重复,不会多个元素引用相同对象。
Map(Key来搜索):键值对存储。Map会维护与Key有关联的值,两个Key可以引用相同的对象,Key不可重复。
ArrayList和LinkedList区别
是否保证线程安全:ArrayList 和LinkedList都是不同步的,线程不安全。
底层数据结构:ArrayList底层用的Object数组;LinkedList底层使用双向链表数据结构(JDK1.6之前为循环链表,JDK1.7取消循环)
插入和删除是否受元素位置影响:
ArrayList采用数组存储,所以插入和删除元素时间复杂度收到元素位置影响。add(E e),会把元素追加到列表末尾,O(1);若在指定i处插入或删除,(add(int index,E element)),O(n-i),因为在进行操作时候,集合中第i和第i个元素之后的(n-i)个元素都要执行向后/向前移 ...
Java基操之Stream
Java Stream操作Dzone
cheatsheet
Collectors
Collections
流水线式的处理数据
生产流的方式
Collection集合
Map集合
数组
中间操作
Stream filter(Predicate predicate)利用谓词接口进行过滤筛选.
Stream limit(long n)截断流中数据,n为返回个数
Stream skip(long n)指定跳过n个数据,返回剩下的流
static Stream concat(Stream a,Stream b)组合两个流成一个流
Stream distinct()返回流中独特的元素组成的流
Stream sorted()返回自然排序后的流
Stream sorted(Comparator comparator)返回经过自定义比较器的排序流
Stream map(Function mapper)返回经过指定函数处理的结果的流
IntStream mapToInt(ToIntFunction mapper)返回IntStream,源流映射成Int流
终结操作
一般操作
void f ...
Linux命令之cut
Linux命令之cut