V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  gowk  ›  全部回复第 3 页 / 共 57 页
回复总数  1138
1  2  3  4  5  6  7  8  9  10 ... 57  
152 天前
回复了 dululu 创建的主题 问与答 2023 年,用一个字来总结你的年度?


职业生涯第 16 年,又重新找到的编程的快感
对 C# 的理解又加深了一层,用起来更得心应手了
Vue3 也入了门,写了几个不大不小的项目
CSS 、JS 、组件玩的也还算遛,配合 C# 写任何页面都不惧
算是一个合格的全栈了
多少次废寝忘食的研究代码结构,各种设计模式
不断重构代码,重构 UI ,最后收到用户的好评,很欣慰
对代码、设计、产品都形成了自己独特的品味
160 天前
回复了 inSpring 创建的主题 Python 大家最近新项目用什么 Web 框架?
我选 ASP.NET 8 + SqlSugar + Vue 3.x
167 天前
回复了 errorMsg0xff 创建的主题 Java Java 值得读源码的开源项目
自荐一下我 Star 过的 Repo: https://github.com/gowk?tab=stars
逛 GitHub 这些年积攒下来的,有些还不错
前几天听说淘宝竟然有打包卖书签的
不知道 Star 的代码库可不可以卖 😂
168 天前
回复了 QiShine 创建的主题 Python 感觉 C# 在蚕食 Python 的生态
@thinkershare #56 看老哥使用了 ABP ,ABP 有啥书籍可以推荐吗
169 天前
回复了 toubi 创建的主题 职场话题 程序员如何从公司上班转型
100W 打卡
170 天前
回复了 shijingshijing 创建的主题 Chrome 新版 Chrome 换了 UI 了,感觉更丑了
@yjd #7 我也感觉丑,禁用后舒服了
173 天前
回复了 fxjson 创建的主题 程序员 springboot orm 选型
这么成熟的 Java 没有一个好用的 ORM 真的挺感慨的
JPA 不灵活,学起来繁琐,多表联查要配合 QueryDSL ?个人不喜欢 DSL ,SQL 之上再封装一层,纯属无聊
Mybatis 还 tm 在用古早的 XML ,虽然有注解但 SQL 写在源码里更丑
Mybatis Plus 现在选择这个的比较多,但是想到它在 Mybatis 基础上又封装一层,再配合上 Spring Boot/Spring 那一套诘屈聱牙的技术迷宫,顿时性趣全无,另外就是上面的朋友说的,Mybatis Plus LOGO 丑 😀
再还有什么好的选择? JOOQ ?还是国产的小众框架?
虽然没用过 Furion 但是做为 .neter 一直在关注这个框架。商业化无可厚非,但是这种套路挺恶心人的,也损害了国内开源项目的声誉。

贴几个评论大家一起讨论讨论:

陈钇蒙 2023-11-30 19:53
管你有什么大道理, 你确实违反了你用的开源协议 mit 协议, 说再多都没有用, 你搞的就不是开源这种东西

魔力猫 2023-12-01 09:50
作者表示想不通?绑匪觉得绑票拿钱,天经地义,我们更想不通。如果不把你骂死,始作俑者,其无后呼?大家都这么玩,谁还敢用开源?特别是国内开源!你不就是仗着国内绝大多数用户,不愿意花钱跟你打官司么。我要正好是项目技术负责人,脑子昏聩,把你的框架引入了项目,结果现在被绑了,咋办?和老板说,咱们被勒索了?苛刻点的老板,我怕不是马上卷铺盖滚蛋!还不是只能含泪自掏腰包,找你买文档,赎肉票?!作者洋洋得意的三千多文档用户,有多少不是这么来的?!

思北谢 Special 2023-12-02 10:36
开始用 MIT 完全不限制商用这个宽松协议,忽悠大家用上,很多程序员冒着被质疑,去说服公司用,如果你是 GPL 有多少敢用?而一旦大家用上了,轻易更换代价很大,这时候封闭文档收费,完全撕毁 MIT 协议,这么玩,其实是损害了所有国产开源软件的信誉度,所有国产开源软件的同仁都应该出来抵制,在社会里,大家要遵守一些底线,当有人突破了底线开始赚钱的时候,其实是损害了同行的信誉度,而那些守规矩的人将更加难以生存,当有人再想以 MIT 协议推出开源软件的时候,大家就会说:国产的软件用 MIT 协议你也敢信?
180 天前
回复了 pccilipp 创建的主题 MacBook Pro 把老的 intel mac 挂某鱼,居然无人问津。
你可以试试小红书出
183 天前
回复了 GeekGao 创建的主题 Python Python is Easy. Go is Simple. Simple != Easy.
看作者介绍,他的主要技术栈是 Java+Go+Svelte
185 天前
回复了 Flourite 创建的主题 Go 编程语言 go 语言用起来好操蛋
@gongquanlin #102 ts 类型体操写起来会爽? github 上面有没有推荐的 ts 库,我学习一下
186 天前
回复了 Flourite 创建的主题 Go 编程语言 go 语言用起来好操蛋
188 天前
回复了 cyhone 创建的主题 Go 编程语言 剖析 Golang Bigcache 的极致性能优化
感谢 OP 分享,文章深入浅出,结构清晰,语言流畅,让我对 bigcache 有了一个清晰的认识
推荐下 Mithril.js
190 天前
回复了 mangojiji 创建的主题 数据库 Mybatis 到底是或不是 ORM?为什么?
DSL 纯粹是多此一举,失去了 SQL 的灵活,又增加了认知负担,得不偿失,SQL builder 或者 ORM 专注自己的领域就好了,do one thing and do it well ,Mybatis 真的就是一个 Mapper 而已,用起来还不错,就是业务逻辑复杂改起来就很啰嗦,Gorm ent 之流也能凑合用,但是都没有 EF ,Active Record ,Eloquent ,还有 node 世界的某些好用。真的感慨 Java 世界竟然没有一个顺手的 ORM ,JPA 太重,不灵活,也可能是我菜,所以干脆连笨重啰嗦的 Java 一并抛弃,拥抱 .NET ,EF 自不必说,甚至连国产的 SqlSugar 都可圈可点,用起来很舒服。

查询语法:
var exp = Expressionable.Create<Supplier, SysUser>();
exp.AndIF(dto.SupName.IsNotEmpty(), (t, u) => t.SupName.Contains(dto.SupName));
exp.AndIF(dto.CreditCode.IsNotEmpty(), (t, u) => t.CreditCode.Contains(dto.CreditCode));
exp.AndIF(dto.Address.IsNotEmpty(), (t, u) => t.Address.Contains(dto.Address));
exp.AndIF(dto.DetailAdmissionType.IsNotEmpty(), (t, u) => t.DetailAdmissionType.Contains(dto.DetailAdmissionType));
exp.AndIF(dto.Leader.IsNotEmpty(), (t, u) => t.Leader.Contains(dto.Leader));
exp.AndIF(dto.AdmissionTerm.HasValue, (t, u) => (int)t.AdmissionTerm == dto.AdmissionTerm);
exp.AndIF(dto.StartNumber.HasValue, (t, u) => t.RegCapitalSubscribed >= dto.StartNumber);
exp.AndIF(dto.EndNumber.HasValue, (t, u) => t.RegCapitalSubscribed <= dto.EndNumber);
exp.AndIF(dto.DeptId.HasValue, (t, u) => u.DeptId == dto.DeptId);
exp.AndIF(dto.AdmissionType.HasValue, (t, u) => t.AdmissionType == dto.AdmissionType);
exp.AndIF(dto.CompanyType.HasValue, (t, u) => t.CompanyType == dto.CompanyType);
exp.AndIF(dto.BeginTime.HasValue, (t, u) => t.CreateTime >= dto.BeginTime);
exp.AndIF(dto.EndTime.HasValue, (t, u) => t.CreateTime <= dto.EndTime);

var result = _supplierService.Queryable()
.InnerJoin<SysUser>((t, u) => t.CreateBy == u.UserId)
.InnerJoin<SysDept>((t, u, d) => u.DeptId == d.DeptId)
.LeftJoin<SupplierInvoice>((t, u, d, si) => t.Id == si.SupId)
.LeftJoin<SupplierChange>((t, u, d, si, ch) => t.Id == ch.SupId && ch.MostRecent)
.Where(exp.ToExpression())
.OrderByDescending(t => t.Id)
.Select((t, u, d, si, ch) => new SupplierVo
{
Id = t.Id.SelectAll(),
DeptName = d.DeptName,
NickName = u.NickName,
InvoiceStatus = si.Status,
ChangeStatus = ch.Status,
})
.ToPage(dto);

int count = DB.Queryable<T>().ClearFilter()
.InnerJoin<SysUser>((table, usr) => table.CreateBy == usr.UserId)
.InnerJoin<SysDept>((table, usr, dept) => usr.DeptId == dept.DeptId)
.Where(table => table.Id == Record.TableId)
.WhereIF(transition.Condition.IsNotEmpty(), transition.Condition, parameters)
.Count();

根据指定条件更新指定列:
Update(new SysUser(){ Status = 1 }, it => new { it.Status }, f => f.Userid == 1));
Update(w => w.NoticeId == model.NoticeId, it => new SysNotice(){ Update_time = DateTime.Now, Title = "通知标题" });

另外还有不计其数的 CRUD 重载方法,覆盖了全部使用场景,开发效率很高
@wuzhanggui #2 可以,后台管理真的没必要上 ts 全是类型体操 脱裤子放屁 写起来烦的一批
1  2  3  4  5  6  7  8  9  10 ... 57  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1770 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 56ms · UTC 00:32 · PVG 08:32 · LAX 17:32 · JFK 20:32
Developed with CodeLauncher
♥ Do have faith in what you're doing.