1.2021Դ?源码搭建?
2.一般建设一个网站大概需要多少钱啊?
3.私有化代码仓库Gitlab的落地与应用(一)
4.å°ç¨åºä½ä»£ç å¼åå¹³å°ï¼
5.十款代码表白特效,一个比一个浪漫 2021-11-08 21:01·Java码农之路
6.Ubuntu16.04/18.04配置mumax3+oommf
2021Դ?源码搭建?
工欲善其事必先利其器,IDEA的源码搭建优秀毋庸置疑。对于初入Java行业的源码搭建新手,安装工具往往成为第一道关卡。源码搭建错误的源码搭建微信外链 源码一步操作可能会让一些人望而却步,与高薪Java开发失之交臂。源码搭建不过,源码搭建今天,源码搭建我们带来了IDEA的源码搭建安装教程,以及DataGrip软件的源码搭建安装指引,希望能帮助到大家。源码搭建
针对学习Java的源码搭建初学者,我们还准备了一份自学笔记。源码搭建这份笔记的源码搭建排版简洁明了,导航栏清晰,没有繁琐的大红字或水印,方便大家学习。
在自学过程中,我们整理了关于Spring源码的学习资料,这些资料至今保存完好。当初的艰辛努力,现在看来都是值得的。
安装IDEA和DataGrip的步骤相对简单,但为了确保安装成功并能正常使用,以下是一些基本的步骤指导。首先,确保你的电脑满足IDEA和DataGrip的最低系统需求。然后,访问官网下载最新版本的软件。下载完成后,双击安装包,按照安装向导的提示进行操作。在安装过程中,语音输入源码记得勾选“添加到PATH环境变量”选项,这将帮助IDEA和其他Java相关工具在系统中正常运行。安装完成后,打开IDEA或DataGrip,进行基本的设置,如选择默认的代码编辑器、配置JDK路径等。在IDEA中,你将拥有一个强大的开发环境,支持代码高亮、自动补全、代码片段等功能,大幅提升开发效率。DataGrip则专注于数据库管理,提供数据库连接、查询、数据迁移等功能,是进行数据库操作的理想工具。
通过IDEA和DataGrip的安装和使用,你将获得强大的开发和数据库管理工具,为你的Java学习之旅提供坚实的基础。希望这些教程能帮助你顺利进入Java领域,开启你的编程之旅。
一般建设一个网站大概需要多少钱啊?
百忙之中写了此文,但愿对你有帮助。我非常遗憾的告诉你,搭建一个网站的价格跨度非常大,从几百块到上千万的都有。从第一个网站诞生至今,已有年,但国内外的建站行业还非常传统,没有发展成为一个标准化、高效率能满足绝大部分企业需求的知乎网站源码工具/系统。
搭建网站的环节分为:域名购买、网站服务器空间、网站开发、网站设计、网站备案、网站部署上线、网站推广组成,除了设计及开发费是一次性收取之外,域名和空间费是按年支付的。
详细花费如下:
域名申请:0元到几十元到几千元甚至上亿元的域名都有。一般来说域名每年费用在元以内。
服务器购买:
独立主机:2-3万/年,一个1U服务器,分为服务器购买费用和机房托管费。
云服务器:以阿里云服务器为例,元-元/年,基本可以满足普通企业的需求。可按月付费,随时升级或降级。
网站开发:0元—万人民币
网站设计:单个页面费用在—元左右
网站备案:费用:0费用,主要是时间成本。
网站上线:0费用,如果你是自己做网站,那就是人力成本,如果你找了建站公司,不单独收费。
网站推广:有的网站就做做SEO,分文不花。有的网站大量推广,一年推广费用上亿。
总计:元—上千万元不等
下面我向大家详细介绍建站步骤以及注意事项,让你效率更高的搭建属于自己的网站:
第一步:域名选择
选取域名技巧:
越短越好、易于记忆;以com、软件网页源码、cn、edu、gov为佳;和品牌名相关。现在好的域名都被人抢注了,如果你的品牌名已经没有了,你可能花上万元从别人手上购买域名,很多人靠域名交易发了家。
申请域名步骤:
1:登录域名注册网站,比如国内的阿里云(前万网)或者美国的Godady。
国内还有很多域名服务商,比如新网、新网互联、时代互联,但这些公司都没有我前面提到的那两个品牌靠谱。对于企业服务购买,还是要选择大品牌安全可靠,我想你肯定不希望因为你贪图便宜出了问题影响整个公司的业务或者你个人的前途。
2:搜索你想要的域名,并根据域名技巧来挑选适合自己的域名
3:付款结算,即可实时查看你购买的域名,记得来年付费
第二步:服务器购买
服务器分为物理服务器和云服务器,现在大部分人都买性价比更高的云服务器。
独立主机:2-3万/年,一个1U服务器,分为服务器购买费用和机房托管费。
云服务器:以阿里云服务器为例,元-元/年,基本可以满足普通企业的需求。还可以按月付费,随时升级或降级。和申请域名步骤类似,国内可供选择的微商网站源码云服务器的品牌有:阿里云、腾讯云、百度云、华为
云。
第三步:网站设计和开发
采取网站开发的方式有5种,而开发的模块分为前端开发和后台开发。这部分的技术含量是最高的,需要专业团队来完成。
网站开发有5种方式可供选择:
程序自助部署:自己开发写代码,主要是人力成本。
全定制开发:找建站公司定制自己的网站,提供源代码。费用:3万—上百万人民币。
半定制开发:找建站公司开发,功能用对方的系统,设计可以按照你的需求定制。一般不提供源代码。费用:1万以内。
模版自助建站:功能和设计都是建站公司现成的,你只需要提供文字和域名,一般是SaaS工具来搭建你的网站,无源代码。也不需要你后期进行网站运维。费用:元以内。
免费建站工具:适合个人建站,很多免费工具无法商用。费用:主要是人力成本。
如果你没有技术研发团队自己也不懂代码,最好是找建站公司来做,比如阿里云服务商五叶草互联网就提供建站服务,有模板建站、半定制化和全定制服务,以及中企动力、凡科也是做建站的,中企动力主要提供定制化建站,报价较高,凡科业内口碑不是特别好。
五叶草互联网:...
3. 安装Gitlab
4. 配置Gitlab
编辑配置文件:
主要涉及两处改动:
5. 启动Gitlab
6. 访问Gitlab
..1.:
三、常见问题及解决
1. 前端页面访问出现
出现可能有以下原因:
通过后台运行日志,排查如果是因为端口被占用引起的,可以按照上述修改配置文件方法,将配置文件中的端口号修改即可,修改后需要按照第4步重新加载配置文件、重启服务。更多配置信息,可以在 /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml 中进行查看。
四、Gitlab配置信息及常用操作命令
1. 常见配置
默认安装的gitlab,主要有四个目录:
◆ /opt/gitlab/ # 主目录
◆ /etc/gitlab/ # 放置配置文件
◆ /var/opt/gitlab/ # 各个组件
◆ /var/log/gitlab/ # 放置日志文件
2. 常用命令
◆ gitlab-ctl start # 启动所有 gitlab 组件;
◆ gitlab-ctl stop # 停止所有 gitlab 组件;
◆ gitlab-ctl restart # 重启所有 gitlab 组件;
◆ gitlab-ctl status # 查看服务状态;
◆ vim /etc/gitlab/gitlab.rb # 修改gitlab配置文件;
◆ gitlab-ctl reconfigure # 重新编译gitlab配置;
◆ gitlab-ctl tail # 查看日志;
◆ gitlab-ctl help # 查看相关的帮助
五、代码仓库数据迁移
1. 旧服务器数据手动备份
先停掉gitlab,然后执行备份命令
生成的备份文件会存在/var/opt/backups/目录下,生成的文件名如____.0.6_gitlab_backup.tar,其中.0.6是当前gitlab的版本号,恢复时使用的gitlab必须是同样的版本号,否则没法进行恢复。该文件里面包含了所有user、group、git repository数据。
2. 新服务器上恢复数据
将备份文件复制到新服务器的/var/opt/backups/目录下,停掉gitlab的puma、sidekiq两个服务,然后执行恢复操作
特别注意:
六、代码仓库自动备份方式一:使用gitlab配置文件设置自动备份
1. 编辑 /etc/gitlab/gitlab.rb文件,找到以下内容并按照如下配置:
2. 更新配置
方式二:使用Linux系统crondtab服务自动备份
1. 配置定时任务:crontab -e
查看定时任务:crontab -l
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create 表示每天凌晨两点执行备份命令
设置cron服务开机自启:systemctl enable crond.service
修改后重启cron服务:systemctl restart crond
tips:
2. 自动上传gitlab的备份文件到另一台服务器
1)设置两台服务器免密登录
2)编写自动上传备份文件shell脚本:gitlab-upload.sh,内容如下:
编写完成后要对文件赋予执行权限:chmod +x gitlab-upload.sh
3)设置crondtab定时任务
执行crondtab -e命令,设置为每天凌晨三点执行远程传输备份文件任务,内容如下,
保存后要重载crond服务:systemctl reload crond.service
七、小结
总的来说,Gitlab的搭建过程比一般软件的搭建要繁琐,另外像数据自动备份、数据迁移所用到的Linux技能也较多,可以按需配置和操作。最后,总结一下本次用到的Linux技能:
å°ç¨åºä½ä»£ç å¼åå¹³å°ï¼
è·ªæ±ä½ä»£ç å¼åæåªäºï¼
å¹´å½å 家ä¼ç§ä½ä»£ç å¼åå¹³å°æ±æ»çç¹ï¼
1ãå®æââé¿é
å®ææ¯é¿éå·´å·´èªç çä½ä»£ç åºç¨æ建平å°ï¼å¯æ大æé«å¼åæçãäºå¹´3æä¸çº¿ï¼ç¨æ·å¯ä»¥å¨å¯è§åçé¢ä¸ä»¥æææ½çæ¹å¼ç¼è¾åé 置页é¢ã表ååæµç¨ï¼å¹¶ä¸é®åå¸å°PCåææºç«¯ã
2ãç»ä¿¡Informatââåºç³åä½
ç»ä¿¡Informatæ¯é¢åä¸å¡äººåçä½/é¶ä»£ç å¹³å°ï¼å ·æé«åº¦çµæ´»çâæ°æ®+æé+æµç¨âå¨æä¿¡æ¯ç®¡ç模åï¼ç¨æ·ä¸éè¦ä¾èµä»£ç å¼åï¼å¯ä»¥éè¿èªä¸»é ç½®çæ¹å¼ï¼å¿«éæ建ä¼ä¸è¿è¥æéçå类管çç³»ç»ï¼äº®ç¹æ¯æä¾æ°¸ä¹ å è´¹çè¯ç¨ã
3ãç±éæââç¾åº¦
ç±éææ¯ç¾åº¦æºè½äºæ¨åºçä½ä»£ç å¼åå¹³å°ï¼æ¯æå¤ç§åºç¨é¡µé¢æ建形å¼åæ°æ®æ¥é©³æ¹å¼ï¼æ¢å¯èªå»ºæ°æ®æ¨¡åï¼ä¹å¯çµæ´»æ¥é©³å®¢æ·å·²ææ°æ®æºæ对æ¥å¤é¨APIï¼æ¯ææµ·éåè½ç»ä»¶ï¼å¹¶æ¯æèªå®ä¹ä»£ç ãç³»ç»åéåæ¥å£éé è½åï¼çµæ´»åº¦åª²ç¾ä»£ç å¼åã
4ãè½»èââç½æ
ç½æè½»èæ¯ç½ææ¨åºçä½ä»£ç å¹³å°ï¼ä»¥æ¨¡å驱å¨çæ¹å¼ï¼æ¯æææ½å³å¯æ建ä¸å¡æ¨¡åï¼æµç¨å¼æï¼æ¯æææ½çææ ååä¸å¡æµç¨ãæ¯æå¤å±æ¬¡ãç»ç²åº¦èµäº§å¤ç¨ï¼ä¸æ¬¡å¼åï¼å¤å¤ä½¿ç¨ï¼åºäºäºåçåºåº§ï¼ä¸é®åå¸ï¼èªå¨åé¨ç½²è¿ç»´ã
5ãå¾®æââè ¾è®¯
è ¾è®¯äºå¾®æä½ä»£ç 以äºå¼åä½ä¸ºåºå±æ¯æï¼éè¿è¡ä¸å模æ¿ãææ½å¼ç»ä»¶åå¯è§åé 置快éæ建å¤ç«¯åºç¨ï¼å°ç¨åºãH5ãPCWebåºç¨çï¼ï¼å å»äºä»£ç ç¼åå·¥ä½ï¼åºäºè ¾è®¯ççæé¾ï¼å®å¯ä»¥éæä¼ä¸å¾®ä¿¡ãé¾æ¥è ¾è®¯SaaSçæãå¿«éæ建å°ç¨åºã
6ãIVXå¹³å°ââäºå¨åç§æ
0代ç å¯è§åç¼ç¨å·¥å ·ï¼å¯ä»¥å¿«éçæç½ç«ï¼æ¬æºAPPåå®å ¨éæçâ微信å°ç¨åºâå¼åç¯å¢ãæ¨ä¹å¯ä»¥ç´æ¥çææºä»£ç ã带æ¥äºç¼ç¨æ¹æ³åç¼ç¨è¯è¨çå级ã
7ãæ´»åæ ¼ââè¡èå
æ´»åæ ¼å ·ææ´å¼ºçå¼æ¾æ§åæ©å±è½åï¼å ç½®æ°æ®åºéæãWebAPIéæã串å£éæåç¼ç¨æ©å±è½åï¼å¯ä¸è¿è¡å¨å±åç½çå类软件ã硬件以åææ°çäºèç½æå¡æ ç¼éæï¼ä¸ºæéç°æ软硬件ï¼æ建ä¼ä¸æ°ååå¹³å°æä¾åå®çææ¯ä¿éã
8ãç®éäºââå¸è½¯
ç®éäºæ¯ä¸ä¸ªçµæ´»ä¸æäºä½¿ç¨çåºç¨ç¨åºæ建平å°ï¼å æ¬èªå®ä¹è¡¨åï¼èªå®ä¹æ¥åï¼èªå®ä¹æµç¨å¼æï¼æ¶æ¯æéåå ¶ä»æ¨¡åãæ é代ç ï¼æ¨å¯ä»¥å¿«éèçµæ´»å°æ建ä¸å¡ç®¡çç³»ç»ï¼ä»¥æ»¡è¶³ä¼ä¸ç个æ§å管çã
9ãæéäºââä¸ä¼æé
ç¨æ·ä¸éè¦ä»£ç å¼åå°±è½å¤æ建åºç¨æ·ä½éªä¸ä½³çéå®ãè¿è¥ã人äºãéè´çæ ¸å¿ä¸å¡åºç¨ï¼æéä¼ä¸å é¨æ°æ®ï¼ä¹è½å¤éè¿APIåWebhookåå ¶ä»ç³»ç»å¯¹æ¥ãå¹³å°å çèªå¨åå·¥ä½æµè¿å¯ä»¥å®ç°å®¡æ¹ãå¡«åçæ§å¶æµç¨åä¸å¡èªå¨åï¼å¦æç¨æ·ä¼ä¸ä½¿ç¨ééæä¼ä¸å¾®ä¿¡ï¼ä¹å¯ä»¥å°å¹³å°å æ建çåºç¨ç´æ¥å¯¹æ¥å°å·¥ä½å°ä¸ã
ãäºè¡¨ââä¹é软件
äºè¡¨æ¯ä¸ä¸ªåºäºäºç«¯çé¢åæç»ç¨æ·çä¿¡æ¯ç³»ç»è®¾è®¡ä¸è¿è¡å¹³å°ï¼åºäºWeb表åçæ¦å¿µå¼åçæ建表åçåè½é常快éä¸æäºä½¿ç¨ï¼é¢åä¸å¡ï¼éç¨è¡¨æ ¼å¼ç¼ç¨æ¹æ³ï¼è®¾è®¡è ä¸åéè¦å¦ä¹ ä¼ ç»ä»£ç ç¼ç¨åæ°æ®åºè®¾è®¡ã
ãææäºââä¹ç« ä¿¡æ¯
ææäºæ¯ä¸ä¸ªä½ä»£ç åºç¨ç¨åºå¹³å°ï¼è¯¥å¹³å°å°ä¼ä¸çå端åå端è¿æ¥èµ·æ¥ãå¯ä»¥èªå®ä¹åç§ä¼ä¸åºç¨ç¨åºå¹¶å°å ¶ç¨äºäºå¸æ·ï¼å¹¶ä¸å¯ä»¥å®æ¶å¨çº¿è¿è¡è°æ´ãå¼å人åè¿å¯ä»¥éè¿ä»£ç èªç±å¼åã
ãJePaaSââå¯ç¹ä¼ä¸
JEPaaSæ¯å½å å®ç¨çä½ä»£ç å¿«éå¼åå¹³å°ï¼å ·æå¹´çææ¯æ²æ·ï¼å¯è§åå¼åç¯å¢ï¼ä½ä»£ç ææ¾é ç½®å¼å以åæå ¶ç®åçæä½ï¼å¯ä»¥æ大å°å¸®å©å ¬å¸åå°äººå·¥åæ¶é´ææ¬ã
ãåçéæ¹ââåç软件
åçéæ¹åæ°ç使ç¨é ç½®æ件æ¥æè¿°ä¸å¡æ¨¡ååä¸å¡åè½ãå¼å人ååªéè¦ç¼åç®åçé ç½®æ件å³å¯æ建ä¼ä¸çº§åºç¨ç¨åºãå¯ä»¥éè¿è®¾ç½®åæ°æ¥é ç½®æ°ç¾ä¸ªç³»ç»åè½ã
ãAPICloudââç¨å软件
é¢å ç移å¨åºç¨ç¨åºäºæå¡å¹³å°ä¸ºå¼å人åæä¾äºåç§APPå¼åå·¥å ·ï¼éç¹æ¯ç§»å¨APPå¼åï¼ç§»å¨APPç产çã
ãè½»æµââææ ¡ä¿¡æ¯
å¨çº¿ä¸å¡æµç¨ç³»ç»å¯ä»¥éè¿è½»æµè¿è¡å®å¶ãéè¿äººåï¼æµç¨åæ°æ®ç管çï¼å¢å¼ºä¼ä¸ä»·å¼æµï¼éè¿å¨çº¿åä½ï¼å ±äº«ï¼ä¸å¡æ²éï¼å建âæ°ä¸ä»£âä¼ä¸å¨ææ°æ®åºãå¼åçé¢è¶äºå¹´è½»åã
ãéæ¹ç½è¡¨ââéæ¹æä¹
Excelåºäºè¡¨åçå¼åå·¥å ·ï¼æ为å®å¶çæ°æ®åºåºç¨ç¨åºï¼å¹¶æä¾äºæ éçä¸å¡æ建åºç¨ç¨åºå¹³å°çèªç±ãå¨æ¯å¤©çå®æ½å¨æä¸ï¼Excelå°æ建åºç¨ç¨åºä»¥åæ建å®æ½åæä½éæã
ãClickPaaså¹³å°ââç±æ¹æ¯ç§æ
å´ç»å建è ï¼è¿æ¥å¨åé«å¼ºåº¦åºå±è¿ä¸ä¸ªæ¨¡åå¿«éæ建系ç»ååºç¨ç¨åºã模å驱å¨çå¼åæ¯è®¾è®¡æ¦å¿µï¼å æ¬æ¦å¿µæ¨¡åï¼æ°æ®æ¨¡åï¼é¡µé¢æ¨¡åï¼è¿ç¨æ¨¡åçã
ãJeecgBootââå½ç¬ä¿¡æ¯
JeecgBootæ¯ä¸æ¬¾åºäºBPMçä½ä»£ç 产åï¼æ¯æå¾®æå¡ãåè½å ¨é¢ï¼å¯ä¸é®çæåå端代ç ï¼ç®ååè½ä¹å¯å®å ¨å¨çº¿å®æãæ¢è½å¿«éæé«æçï¼èçç åææ¬ï¼åæ¶åä¸å¤±çµæ´»æ§ã
ãæ°äºââ奥å²
è·é¿éææï¼èé é¿é强å¿åå±ï¼ééåæ级å®å¶æå¡åï¼æä¾è¡¨åãæµç¨å¼æï¼æ¥è¡¨çåè½ã积æ¨å¼åºç¨æ建ï¼åæ¶å ·å¤ä»£ç å¼ååå¤é¨ç³»ç»éæè½åãä¸éééæï¼æ¯æPC端ä¸ç§»å¨ç«¯ä½¿ç¨ã
ãJ2PaaSââåé¼ç§æ
J2PaaSæ¯åé¼ç§æåºäºå¹´ææ¯æ²æ·å项ç®ç»éªèç åï¼æ©å¨å¹´å°±è·å¾å ç¼ç å½å®¶åæä¸å©ï¼ç®åç»è¿5次çæ¬è¿ä»£ï¼è¦ç软件项ç®éæ±åæã设计ãå¼åãæµè¯ãè¿è¡ãç»´æ¤ä¸ç®¡ççå ¨è¿ç¨ãJ2PaaSå¹³å°æ常è§éè¦ç¨åºåå®æçåè½éæå¨æ¡æ¶ä¸ï¼å°è£ 为å大åæ°ï¼å¼å人ååªéå ³æ³¨ä¸å¡é»è¾ï¼é¡µé¢ç»è£ åæµç¨è®¾è®¡çç¸å ³åè½å·²ç»å ç½®å®æï¼æ¯ä¸æ¬¾ä¼ä¸çº§ä½ä»£ç å¹³å°ã
ãå为äºAppCube
åºç¨éæ¹AppCubeï¼ç®ç§°AppCubeï¼æ¯ä¸æ¬¾ä½ä»£ç åºç¨å¼åå¹³å°ï¼æºäºå为åºç¨å¼ååæ°åå转åçå®è·µï¼æä¾äºäºä¸æ ç åãä½ç åãæ¯æå¤ç åçåºç¨å¼å模å¼ï¼å±è½äºææ¯çå¤ææ§ï¼æåäºä¼ä¸å¼åçæçãåæ¶æä¾åºç¨èµäº§çå¼åæ ååå¾®æå¡æ¡æ¶ï¼å©åä¼ä¸ä¸ææ²æ·å¯å¤å¶çå¥ä»¶ï¼å éåºç¨çå®å¶ï¼å¹¶éè¿å¼æ¾ççæï¼å®ç°å¥ä»¶èµäº§çåä¸åç°ã
ãé£ä¹¦å¤ç»´è¡¨æ ¼ââåè
åèè·³å¨é£ä¹¦å¤ç»´è¡¨æ ¼æ¯ä¸æ¬¾ä»¥è¡¨æ ¼ä¸ºåºç¡çæ°ä¸ä»£æçåºç¨ãå®å ·å¤è¡¨æ ¼çè½»çåä¸å¡ç³»ç»ç强大ï¼èåäºå¨çº¿åä½ãä¿¡æ¯ç®¡çåå¯è§åè½åï¼è½å¤èªéåºå¢éæç»´åä¸å¡åå±éæ±ï¼æ¯å ·å¤ä¸ªæ§åè½åçä¸å¡ç®¡çå·¥å ·ã
ãéè¶äºè穹ââéè¶è½¯ä»¶
éè¶äºè穹çå¼åæå¡äºæ¯åºäºéè¶ç¬åç第å代å¨æé¢å模å(KDDM)ï¼å¼åæå¡äºæä¾å¨æå»ºæ¨¡å·¥å ·ï¼æ¯æå¯è§åé ç½®ãä½ä»£ç å¼åï¼è½»æ¾æ建åºäºå¾®æå¡æ¶æçèªå®ä¹åºç¨ã为äºåºç¨(SaaSæå¡)çå¼åãé¨ç½²ãè¿è¡åè¿è¥æä¾ä¸ç³»åæå¡å管çå·¥å ·ï¼æ¶µçå¾®æå¡ç»ä»¶ãå¼åæå¡ãè¿è¡æå¡ãæå¡ç®¡çãAPIæå¡æ¡æ¶ãåºç¨å»ºæ¨¡ãäºæ¯ææå¡ä¸è¿ç»´æå¡çãéè¶äºÂ·è穹å¼åæå¡äºåºäºå¨æé¢å模åæä¾å¨æå»ºæ¨¡å·¥å ·ï¼æ¯æå¯è§åé ç½®ãä½ä»£ç å¼åï¼è½»æ¾æ建åºäºå¾®æå¡æ¶æçèªå®ä¹åºç¨ã
ãæ³å¾®ä½ä»£ç ââæ³å¾®
æ³å¾®ä»¥âç»ç»æéå¼æã建模å¼æãæµç¨å¼æãéæå¼æãå 容å¼æãé¨æ·ä»¥åæ¶æ¯å¼æâç7大å¼æ为æ¯æï¼å¸®å©ç»ç»æé å¼æ¾å ±äº«çä½ä»£ç åºç¨æ建平å°ãå¿«éæ建è½åæ¯æ³å¾®ä½ä»£ç æ建平å°çéè¦ç¹æ§ï¼ç»ç»éè¿åå°å¼æé ç½®æ¹å¼ï¼æææ½å³å¯æ建个æ§ååºç¨åºæ¯ãçµæ´»ç表å设计ãæµç¨æ建åè½ï¼è¿æå¨çº¿è°è¯ãæºè½ä¿®æ¹åè½ï¼è®©åºç¨æ建æ´å æ¹ä¾¿ãæºè½ãæ³å¾®ä½ä»£ç å¹³å°å®ç°äºå é¨ååï¼ç¡®ä¿å é¨æµç¨ãé¨æ·ãææ¡£ãæ°æ®ãè§è²ä¹é´çååå ³èï¼ç¹å»ä»»ä½ä¸ä¸ªå段ï¼å³å¯è¿½æº¯ä¸ä¹ç¸å ³çæ°æ®åå·¥ä½å 容ï¼äºè§£ä¸å¡å ¨è²ãéè¿æ³å¾®ä½ä»£ç ä¸å¡æ建平å°ï¼ç»ç»å¯ä»¥å¨ä¸ä¸ªå¹³å°è¿æ¥ãæ©å±åéæERPãCRMãHRMãSRMçåºç¨ã
ãiGIXââ浪潮
浪潮iGIXä¼ä¸æ°ååè½åå¹³å°ï¼å å«ææ¯ãæ°æ®ãä¸å¡ä¸å¤§ä¸å°ï¼åºäºäºåçææ¯ï¼å¾®æå¡æ¶æï¼èåå¼¹æ§è®¡ç®ãæºè½ç©èã大æ°æ®æ²»çãæºå¨å¦ä¹ ã认ç¥æå¡ãæ°åæ°æ®å¹³å°çåºç¡ææ¯ï¼æä¾ä½ä»£ç å¼åãDevOpsãæ··åäºéæãçæå¼æ¾çåºç¨åæ°å éè½åï¼å ç½®æ°æ®èµäº§ç®¡çä¸ä¸°å¯çæ°æ®æå¡ï¼æç ´æ°æ®å£åï¼å ¨é¢æ´åä¼ä¸æ°æ®èµæºï¼æ建åºäºæ°æ®çåæ°è½åï¼æ²æ·å ±äº«ä¸å¡æå¡ï¼æ建ä¸å¡æå¡è½åã浪潮iGIXæ¯æä¼ä¸ææ¯ãä¸å¡ãæ°æ®ä¸åä¸èååæ°ï¼èµè½ä¼ä¸æ建æ°ååä¸å°ï¼ä¸ºä¼ä¸å»ºç«æ´å ·åæ°çµæ´»çä¸å°ç»ç»æºå¶åä¸å¡æºå¶ï¼ä½¿åå°ä¸å¡æ´ææ·ãæ´å¿«éçéåºå¿«éå¤åçåä¸ç¯å¢ï¼å éä¼ä¸å®ç°æ°åå转åã浪潮iGIXæ¨å¨æé ä¸ä¸ªå®æ´çä¼ä¸åºç¨çæç³»ç»ï¼æ¢æ¯æµªæ½®äºERPGSCloudçåºç¡æ¯æå¹³å°ï¼ä¹æ¯é¢åä¼ä¸ä¿¡æ¯ä¸å¿/å ¬å¸ãåä½ä¼ä¼´ãç¬ç«è½¯ä»¶å¼ååï¼ISVï¼ççæèµè½å¹³å°ï¼æ¿åä¼ä¸æç»çæ°åååæ°è½åã
ãæ鲸äºââçé»çå¨
çé»çå¨æ鲸äºæ¯é¢å çä½ä»£ç åBPMPaaSæå¡åä¹ä¸ï¼äº§ååè½å·²è¦çä½ä»£ç ãæºè½æµç¨ãéæã移å¨ãä¸å¡è§åå¨å çPaaSè½åï¼æ¯ææ°åå转åä¸ååå±çº§å«çè½åè¦æ±ã产åå¸å±ä¸æä¾é¢å大ä¸åç»ç»çAWSPaaSä½ä»£ç å¼åå¹³å°åé¢åæé¿åç»ç»çæ鲸äºä½/æ 代ç äºåºç¨å¹³å°ï¼å¸®å©ç¨æ·å éæ°åå转ååè¿è¥åæ°ãæ æç¨æ·è¦çåå·¥ãéèãæ¿åºãæè²ãçµåé¶å®ãè½æºåå·¥ãå·¥ç¨å»ºççåç´è¡ä¸ãå¹´è·éå±±åå ¬A+è½®æç¥æèµï¼å ±å»ºææ¡£åä½+ä½ä»£ç PaaSåçæï¼æ»¡è¶³ä¸åè§æ¨¡ãä¸åé¢åç¨æ·å¯¹æ°åå转åçéæ±ã
ãèåä½ä»£ç ââèå软件
èå软件æ¯å½å ç¥åçç¥è¯ç®¡çãååOAæå¡åçãå¨åååå ¬å¸åºåé åºè¾é«çç¥å度ï¼ä¹æ¯ææ©ä¸äºèç½TOBçæèµ°çæè¿çèçååååãå¹´èå软件ä¸ééè¾¾ææç¥åä½ï¼ç´è³å¹´éé注èµï¼èå软件ä¸ééçæå¼å§ç´§å¯ç»åï¼ç±äºå ¶è¿å¾ç大é大客æ·é¡¹ç®ç»éªå产åæå¡ç积累ï¼èå软件å¨åºäºå¤§å®¢æ·çâè¡¨æ ¼+æµç¨+æ°æ®âçä½ä»£ç æå¡é¢åæçä¸å®çå åä¼å¿ï¼å½¢æäºå¯¹ééçæçå¸åºè¡¥å ãèå软件水桶å产åç¹å¾æ¯è¾çªåºï¼ä½ä¸ºä¸ä¸ªèçååOAåçï¼èå软件å°ä½ä»£ç ä½ä¸ºè½åä¹ä¸è¾åºç»å®¢æ·çå¾åæ´æµï¼å¦ä½å®ä½/平衡âä½ä»£ç âç产ååè·¯å¾å°æ¯èåçææä¹ä¸ã
ãä¼ä¼´äºââä¼ä¼´æºæ §
ä¼ä¼´äºï¼æ¯ç±æç年以ä¸è®ºå软件å¼ååä¸å°ä¼ä¸æå¡ç»éªçåDiscuz!å¢éæé çï¼åç»âä¼ä¼´äºè¡¨æ ¼âãâä¼ä¼´åå ¬âï¼éæ¥å级为ä¸ä¸ªä¸ºä¼ä¸ç»è¥æå¡çæ°æ®å¯è§åå¹³å°ï¼ä¸ºä¼ä¸çå ¨æµç¨è¿è¥ç®¡çä¸ç»è¥æ ¸ç®æä¾æ´ä½è§£å³æ¹æ¡ãéè¿å¼ºå¤§çæ°æ®åºå¼æåæéæ¶æï¼æé å¯çµæ´»å®å¶çæµç¨å¼æä¸å¤§æ°æ®åæå¼æï¼é åä¸å®¶çº§ç»è¥é¡¾é®ä¸æå¡ï¼æé å ¨æµç¨ãå®æ¶å¯è§åçç»è¥æ ¸ç®ä½ç³»ï¼ä¸ºä¼ä¸æ建起ä¸ä¸åå¿çç»è¥ä¼ä¼´å ³ç³»ï¼å®ç°åå·¥æç»æé¿ãç»ç»æç»åé©ãä¸ç»©æç»æé«ã
ãè½»éªå µââéç°ä»£
è½»éªå µä½ä»£ç å¼åå¹³å°ï¼HussarLCDPï¼æ¯ä¸æ¬¾éç°ä»£å»ºè®¾äºåä½å¹´çå¼åå¹³å°äº§åã使ç¨è¯¥äº§åå¯æ éç¼ç ï¼é¶ä»£ç ï¼æéè¿å°é代ç å°±å¯ä»¥å¿«éçæé«ä½éªçåºç¨ç¨åºãå¯è§ç¼ç¨ï¼æè§æå¾ï¼å¯è§åUIå¸å±æ¹æ¡ï¼æè§å³æå¾çå¼åä½éªï¼ä¸ç²¾äºä¸å¡æ°æ®ä¸å°çä¿¡æ¯èåçæ°æ®å¯è§åï¼éè¿å¾å½¢çé¢è½»æ¾æ建ä¸ä¸çå¯è§ååºç¨ï¼æ»¡è¶³æ¨æ¥å¸¸ä¸å¡çæ§ãè°åº¦ãä¼å±æ¼ç¤ºçå¤åºæ¯éæ±ã
ãæ°ç¿æ°æ®ââå京æ°ç¿
æ°ç¿æ°æ®æ¯ä¸å®¶æ°æ®é©±å¨çä¼ä¸çº§æ 代ç 软件平å°åï¼ä»¥â让人人尽享æ°æ®ä»·å¼â为ä¼ä¸æ¿æ¯ï¼â让天ä¸æ°æ®å¿«é使ç¨â为使å½ï¼å¤å¹´æ¥éè¿èªèº«ææ¯ä¼å¿å åèå大æ°æ®åè¡ä¸ä¸å¡ç§¯ç´¯ï¼å¸®å©ä¼ä¸æ大åæ°æ®ä»·å¼ï¼ä»¥åæ°ç软件å¼å模å¼ï¼å¼å¯è½¯ä»¶æºè½å¶é æ°é©å½ï¼ä¸ºä¸å½ä¼ä¸çæ°æºå转åæéãå ¶ç¬æçåå模åï¼è½å¤å®æ´è¦çæ°æ®ãåæã管çãè¿è¥å个é¢åï¼æ¶å客æ·è¡¨åãæµç¨ãæç´¢ãéæãåæçå ¨ä¸å¡çå½å¨æã
个平å°å ¨é¨çç¹å®æ¯ï¼å¸æ对大家ææ帮å©å~
æåªäºæ¯è¾å¥½ç¨çä½ä»£ç å¼åå¹³å°ï¼
æ¯è¾å¥½ç¨çä½ä»£ç å¼åå¹³å°æå®å¤©è½¯ä»¶ãå®æãç®éäºçã
ä½ä»£ç å¼åå¹³å°çæ ¸å¿ä»·å¼è§æ¯ä¸ºäºæé«åºç¨ç¨åºå¼åçæçï¼ä½ä»£ç å¼åå¹³å°ä¸»è¦ç使ç¨è æ¯ç¨åºåï¼ç¨åºåéè¿ä½¿ç¨ä½ä»£ç å¹³å°æé«äºå·¥ä½æçåå°äºIT积åãå¼åç³»ç»çæ ¸å¿ç®çæ¯ä¸ºäºæåæçï¼å轻人工çå·¥ä½éãå æ¤å¿ ç¶è¦å¤çå¾å¤å¤æçä¸å¡é»è¾ãæ¯å¦å¼åååä»æ¬¾ç®¡ççæ¶åè¯å®è¦è®¡ç®å·²ä»æ¬¾ãæªä»æ¬¾ãå¼åç©åç´ç¨çæ¶åè¦æ£é¤åºåï¼è¿äºé½éè¦ç¼åä¸å¡é»è¾ä»£ç ãæççä½ä»£ç å¼åå¹³å°ï¼åºè¯¥æä¾å®æ´çå ¥å£ï¼è®©å¼å人åå¯ä»¥ç¼ååç§ä¸å¡é»è¾ãä½ä»£ç å¼åå¹³å°éè¿é ç½®åçæ¹å¼æ建系ç»ååï¼ä¸è¾¹æ建ä¸è¾¹è¿è¡çææï¼æ ¹æ®ææéæ¥è°æ´åå®åãå¾å¿«å°±å¯ä»¥æ建åºç³»ç»ååãå³ä½¿ç³»ç»æ£å¼ä¸çº¿ï¼ä¹å¯ä»¥éæ¶æç §å®¢æ·çéæ±ï¼å¿«éä¿®æ¹ç³»ç»é ç½®ã
æ³äºè§£æ´å¤å ³äºä½ä»£ç çç¸å ³ä¿¡æ¯ï¼æ¨èå¨è¯¢å®å¤©è½¯ä»¶ãå®å¤©è½¯ä»¶ç»è¿å¹´çææ¯ä¸é¡¹ç®ç§¯ç´¯ï¼bpmç¸å ³åè½å·²ç»é常å®åï¼å¤§åå¤æçä¸å¡éæ±é½æ对åºçé 置项ï¼ä¸ææä½ï¼ç»ç«¯å®æ½äººåå¯ä»¥é ç½®å®ç°%çåºç¨ä¸æµç¨éæ±ï¼å°éä¼ä¸ä¸ªæ§åéæ±å¯ä»¥ç±å¼å人åå¨çº¿éæå¼åå¿«éå®ç°ï¼æ¢æ»¡è¶³ä¼ä¸ä½ææ¬å¿«é交ä»éæ±ï¼å满足ä¼ä¸ä¸ªæ§åéæ±ãã欢è¿ç¹å»å¨è¯¢å®å¤©è½¯ä»¶ï¼ã
ä¸è¬ä¼ä¸çº§ä½ä»£ç å¼åå¹³å°ï¼é½æåªäºå ·ä½åè½ï¼ä¼æå¨ç¥ï¼æ¯å®¶å ¬å¸å¨åå±è¿ç¨ä¸é½éè¦æ建大éçå é¨ç³»ç»ï¼å¦è¿è¥ä½¿ç¨çç¨æ·ç®¡çåå°ï¼éå®çº¿ç´¢åå°ï¼ååä¸æ´»å¨åå°çã许å¤å ¬å¸å é¨ä¹ä¼è请ä¸ä¸çç åå¢éè´è´£å¼ååç±»åå°åå é¨å·¥å ·ï¼å¤§éçå ¬å¸ä¸ºæ¤ä»åºäºé«é¢çææ¬ï¼å·¥ç¨å¸ä¹å éæ±é大åå¤æ建åºç¡ä»£ç ï¼å¹¶å¨è¿ç§éå¤é è½®åçè¡ä¸ºä¸ç£¨çäºåé ççæ ãé£ä¹ä¸æ¬¾ä½ä»£ç çåºç°ï¼å°±æ¾å¾å¼¥è¶³çè´µäºï¼é常æ¹ä¾¿ã
ä¸ãä½éªè¿ç¨
大è´æµç¨æä½éªè¿äºï¼æ们å æ¥ççå®å ·ä½æåªäºå¼å亮ç¹ï¼æ¹ä¾¿åé¢åç»åã
éé¢è³å°å å«è¡¨å建模ãæµç¨è®¾è®¡ãæ¥è¡¨å¯è§åã代ç çæå¨ãç³»ç»ç®¡çãå端UIçç»ä»¶ã
åä¸é¢è¿äºåè½ï¼å¯ä»¥ç´æ¥å¼ç¨ï¼æä»¬å°±æ²¡å¿ è¦éæ°é è½®åï¼ä» éæ©åéçç»ä»¶è¿è¡éæåäºæ¬¡å¼åï¼å³å¯èªä¸»å¼åä¸ä¸ªä½ä»£ç å¹³å°ã
ãè¿æ¥æ°æ®æº
æ¯æè¿æ¥å¤æ°æ®æºï¼å¸®å©åºç¨å¿«éä¸ç¬¬ä¸æ¹ç³»ç»å®ææ°æ®æ´åï¼å°ç¬¬ä¸æ¹ç³»ç»æ°æ®æ´åå¨å¹³å°éãæ¯æå æ¬ä¸»æµæ°æ®åºSQLServerãMySQLãOracleãPostgreSQLï¼åæ¶å ¼å®¹å½äº§æ°æ®åºè¾¾æ¢¦ã人大éä»çã
ã设计表å
å ç½®è¾ä¸ºä¸°å¯ä¾¿æ·ç表åå¼æï¼ææ½æ建å³å¯ï¼å®ç½æ¾ç¤ºæ¯ææä½ç§æ§ä»¶ï¼åæ¯å¯ä»¥æ»¡è¶³å¤ç§ä¸å¡åºæ¯ä¸çæ建éæ±ã
PC端设计好表ååï¼æ¯æ移å¨ç«¯åæ¥è®¾è®¡ï¼ä¸é®åå¸è³APPãå°ç¨åºãH5ç移å¨å¹³å°ä¸ï¼è¾ä¸ºé«æçå°±å®æäºå¤ç«¯èªå¨éé ï¼å®ç°ä¿¡æ¯äºèäºéã
ãæµç¨è®¾è®¡
强大æµç¨å®ä¹åè½ï¼èç¹å®¡æ¹ãåæµç¨ãæ¡ä»¶åæ¯ãéæ©åæ¯ã并åæ¯ãå®æ¶å¨çï¼ï¼ä¸å¡é»è¾ç®å好ç解ãä¸å¡æµç¨æ¢³çå¿«æ·æäºï¼åæ¶æ¯æä¸è¡¨åå¤æµç¨ç设置ã
å°è£ 大éå ·æä¸å½ç¹è²çæµç¨å¨ä½ï¼æ»¡è¶³å®¡æ¹éæ±ï¼å æ¬æé设置ãä¼ç¾ãæç¾ãé审ã转审ãå¬åãæ¤åãå ç¾ç审æ¹å¨ä½ã
ãå¾è¡¨åç°
éè¿ç®æé ç½®å³å¯èªå¨çæåç§ç±»åçæ¥è¡¨ï¼å 置大éå¯è§åæ§ä»¶ææï¼éè¿OLAPå¤ç»´åæåè½ï¼å¸®å©æ´å¯è§£å³æ°æ®èåçé®é¢ã
åæ¶æ¯æéææ°æ®ãæ°æ®åºåAPIçå¤ç§æ°æ®æºæ¥å ¥æ°æ®ï¼å¯æ»¡è¶³å¤å åçæ°æ®æ´åéæ±ã
ãç»ç»æ¶æ设置
JNPFæ¯æå¤ç§æ·æ¨¡å¼ï¼å¯æ ¹æ®ç®¡ç模å¼å·®å¼è¿è¡ä¸å¡ååºåºç¨ï¼æ¯æåæ¥ç®¡çå¤ä¸ªèµå·¥ä½åºç¯å¢ï¼å®ç°ååå·¥ä½åºçæ¥å¸¸ä½¿ç¨äºä¸å¹²æ°ã
å½ç¶ï¼ä¸ç¨æ å¿çæ¯ï¼ä¸åçååå ¬å¸å®ä¹æ¯æåå«å¯¹æ¥ä¼å¾®åééæ¶æã
äºãæçè¯ä»·
ææå®ç°ãæ´ä¸ªè¿ç¨æµç ï¼åºæ¬æ å¡é¡¿ï¼æäºç解åè°è¯ã
å¤ç«¯å¼åãPC端设置好表åå移å¨ç«¯åæ¥çæï¼å¾ä¾¿æ·ã
æç®åçåè½é ç½®ï¼ä¹æå¯ç¨äºé ç½®å¤æçåºæ¯ãåè ï¼å¯è½å¯¹äºä¸å¡äººåç¬ç«å¼åä¸è¦ä¸ç¹å夫ï¼ä½å¹¶ä¸å½±åå®çå ¨è½æ§ã
ä¸ãå°ç»
对äºæ´ä¸ªåºç¨å¼åæµç¨ä½éªå®æåã个人认为å®ç综å使ç¨æåå¸åºæ§ä»·æ¯ç®æ¯ä¸éçãåéå®æä¸ä¸ªåºç¡åºç¨ï¼2-3å°æ¶å°±è½æ¸æ¸ æ´å¥ç³»ç»ç使ç¨æµç¨ååºæ¬åè½çä½ç½®ï¼äº§åçåè½éæåæä½å¤æ平衡ä¹è¾ä¸ºåçã
十款代码表白特效,一个比一个浪漫 -- :·Java码农之路
程序员,这个群体常常被与一系列标签相连,如“直率、宅、不浪漫、单调”,但这并不意味着他们缺乏情感表达。实际上,他们的专注与逻辑思维在浪漫时刻也能发挥独特魅力。 以雷军的名言为例,他热爱代码的简单世界,这正是他们对待感情的认真态度。尽管程序员可能在日常生活中显得有些宅,但当感情需要表达时,他们能借助代码创造出意想不到的浪漫。比如,他们可以用编程语言绘制出玫瑰花和爱心,甚至打造网页上的爱心树和烟花,用代码语言说出深情的告白。代码表白实例
玫瑰花表白源码展示部分
爱心表白源码如下
网页爱心树表白部分代码展示
烟花和网页爱心表白源码展示
程序语言表白创意
程序语言表白一 程序语言表白二 程序语言表白三 程序语言表白四Ubuntu./.配置mumax3+oommf
年更新:添加了mumax3的编译命令,确保完整。
年更新:链接已更新至百度网盘。
从年起,逐步搭建Ubuntu.和.的mumax3+oommf环境,详细步骤如下:
首先,安装mumax3和nvidia显卡驱动。推荐避免官方推荐方法,因Ti不支持nvidia-驱动,且cuda版本过低。apt安装驱动时需谨慎,避免系统冲突。在ubuntu.上,cuda-9.0需配合gcc/g++6.0,且安装前需确保系统环境整洁。
安装cuda-9.0时,需关闭桌面并切换到命令行,确保无其他vnc进程干扰。选择cuda版本时,ubuntu.虽无官方支持,但可以通过其他方式安装。安装过程中,添加环境变量至终端。
下载并解压mumax3源代码,修改cuda/cufft/mode.go文件,然后设置GOPATH和安装位置。通过winscp上传并解压源代码后,添加环境变量以使mumax3可用。
安装oommf前,需配置tcl/tk环境并安装g++编译器。使用ActiveTcl 8.6.8,先安装ActiveTcl,然后在bashrc中添加环境变量。oommfb2版本的安装需运行特定命令,可能需要解决x安装不完整的问题。
最后,创建启动脚本以管理启动和环境切换,尤其是与Anaconda的兼容性问题。通过vnc桌面操作,添加启动器图标,即可愉快地使用mumax3和oommf。
所需文件和软件包括:百度网盘提取码df6q,CUDA,mumax3,ActiveTcl,oommf,以及相关链接。详细步骤请参考提供的官方资源和链接。
çè±ä»£ç ç¼ç¨python(ç«ç°è±ä»£ç ç¼ç¨python)
æ¾çè±ç代ç
#-*-coding:utf-8-*-importmath,random,timeimportthreadingimporttkinterastkimportreuuidFireworks=[]maxFireworks=8height,width=,classfirework(object):def__init__(self,color,speed,width,height):=uuid.uuid1()self.radius=random.randint(2,4)~4åç´ self.color=colorself.speed=speed.5-3.5ç§self.status=0ï¼status=0ï¼çç¸åï¼status=1ï¼å½statusæ¶ï¼çè±ççå½æç»æ¢self.nParticle=random.randint(,)self.center=[random.randint(0,width-1),random.randint(0,height-1)]self.oneParticle=[]ï¼%ç¶ææ¶ï¼self.rotTheta=random.uniform(0,2*math.pi)ï¼x=a*cos(theta),y=b*sin(theta)=[a,b]
pythonç«é ·çè±è¡¨ç½æºä»£ç æ¯å¤å°ï¼å¦å®æ¬æç¨åï¼ä½ ä¹è½ååºè¿æ ·ççè±ç§ã
å¦ä¸å¾ç¤ºï¼æ们è¿ééè¿è®©ç»é¢ä¸ä¸ä¸ªç²ååè£ä¸ºXæ°éçç²åæ¥æ¨¡æçç¸ææãç²åä¼åçï¼è¨èâï¼æææ¯å®ä»¬ä¼ä»¥æé移å¨ä¸ç¸äºä¹é´çè§åº¦ç¸çãè¿æ ·å°±è½è®©æ们以ä¸ä¸ªåå¤è¨èçååå½¢å¼æ¨¡æåºçè±ç»½æ¾çç»é¢ã
ç»è¿ä¸å®æ¶é´åï¼ç²åä¼è¿å ¥ï¼èªç±è½ä½âé¶æ®µï¼ä¹å°±æ¯ç±äºéåå ç´ å®ä»¬å¼å§å è½å°å°é¢ï¼ä»¿è¥ç»½æ¾åççççè±ã
åºæ¬ç¥è¯ï¼ç¨PythonåTkinter设计çè±ã
è¿éä¸åä¸è¡èææ°å¦ç¥è¯å ¨ä¸¢åºæ¥ï¼æ们边å代ç 边说ç论ãé¦å ï¼ç¡®ä¿ä½ å®è£ åå¯¼å ¥äºTkinterï¼å®æ¯Pythonçæ åGUIåºï¼å¹¿æ³åºç¨äºåç§åæ ·ç项ç®åç¨åºå¼åï¼å¨Pythonä¸ä½¿ç¨Tkinterå¯ä»¥å¿«éçå建GUIåºç¨ç¨åºã
importtkinterastk
fromPILimportImage,ImageTk
fromtimeimporttime,sleep
fromrandomimportchoice,uniform,randint
frommathimportsin,cos,radians
é¤äºTkinterä¹å¤ï¼ä¸ºäºè½è®©çé¢ææ¼äº®çèæ¯ï¼æ们ä¹å¯¼å ¥PILç¨äºå¾åå¤çï¼ä»¥åå¯¼å ¥å ¶å®ä¸äºå ï¼æ¯å¦timeï¼randomåmathãå®ä»¬è½è®©æ们æ´å®¹æçæ§å¶çè±ç²åçè¿å¨è½¨è¿¹ã
Tkinteråºç¨çåºæ¬è®¾ç½®å¦ä¸ï¼
root=tk.Tk()
为äºè½åå§åTkinterï¼æä»¬å¿ é¡»å建ä¸ä¸ªTk()æ ¹é¨ä»¶ï¼rootwidgetï¼ï¼å®æ¯ä¸ä¸ªçªå£ï¼å¸¦ææ é¢æ åç±çªå£ç®¡çå¨æä¾çå ¶å®è£ 饰ç©ãè¯¥æ ¹é¨ä»¶å¿ é¡»å¨æ们åå»ºå ¶å®å°é¨ä»¶ä¹åå°±å建å®æ¯ï¼èä¸åªè½æä¸ä¸ªæ ¹é¨ä»¶ã
w=tk.Label(root,text="HelloTkinter!")
è¿ä¸è¡ä»£ç å å«äºLabelé¨ä»¶ã该Labelè°ç¨ä¸ç第ä¸ä¸ªåæ°å°±æ¯ç¶çªå£çååï¼å³æ们è¿éç¨çï¼æ ¹âãå ³é®ååæ°ï¼textâæææ¾ç¤ºçæåå 容ãä½ ä¹å¯ä»¥è°ç¨å ¶å®å°é¨ä»¶ï¼Buttonï¼Canvasççã
w.pack()
root.mainloop()
æ¥ä¸æ¥çè¿ä¸¤è¡ä»£ç å¾éè¦ãè¿éçæå æ¹æ³æ¯åè¯Tkinterè°æ´çªå£å¤§å°ä»¥éåºæç¨çå°é¨ä»¶ãçªå£ç´å°æ们è¿å ¥Tkinteräºä»¶å¾ªç¯ï¼è¢«root.mainloop()è°ç¨æ¶æä¼åºç°ãå¨æä»¬å ³éçªå£åï¼èæ¬ä¼ä¸ç´å¨åçå¨äºä»¶å¾ªç¯ã
å°çè±ç»½æ¾è½¬è¯æ代ç
ç°å¨æ们设计ä¸ä¸ªå¯¹è±¡ï¼è¡¨ç¤ºçè±äºä»¶ä¸çæ¯ä¸ªç²åãæ¯ä¸ªç²åé½ä¼æä¸äºéè¦çå±æ§ï¼æ¯é äºå®çå¤è§å移å¨ç¶åµï¼å¤§å°ï¼é¢è²ï¼ä½ç½®ï¼é度ççã
跨年çè±ä»£ç ï½ç¨Pythonéä½ ä¸åºè·¨å¹´çè±ç§å·²ç»æ¥è¿å°¾å£°äºï¼å³å°å°æ¥ï¼æ¬ææ们ç¨Pythonéä½ ä¸åºè·¨å¹´çè±ç§ã
æ们ç¨å°çPython模åå æ¬ï¼tkinterãPILãtimeãrandomãmathï¼å¦æ第ä¸æ¹æ¨¡å没æè£ çè¯ï¼pipinstallä¸ä¸å³å¯ï¼ä¸é¢çä¸ä¸ä»£ç å®ç°ã
导åº
çè±é¢è²
å®ä¹çè±ç±»
çæ¾çè±
å¯å¨
çä¸ä¸ææï¼
年跨年çè±ä»£ç å¯å¤å¶
çè±ä»£ç å¦ä¸ï¼
packagelove;
importjava.applet.Applet;
importjava.awt.Color;
importjava.awt.Graphics;
importjava.net.URL;
importjava.util.Random;
çè±
@authorenjoy
@SuppressWarnings("serial")
publicclassQextendsAppletimplementsRunnable
publicintspeed,variability,Max_Number,Max_Energy,Max_Patch,
Max_Length,G;
publicStringsound;
privateintwidth,height;
privateThreadthread=null;
privateBeaClassDemobcd[];
publicvoidinit()
inti;
this.setSize(,);
width=getSize().width-1;
height=getSize().height-1;
speed=1;//çè±ç»½æ¾çé度
variability=;
Max_Number=;//å¯ååºçè±çæ大æ°ç®
Max_Energy=width+;
Max_Patch=;//æ大çæç¹æ°
Max_Length=;//æç¹çæ大è·ç¦»
G=;//åå°é¢å¼¯æ²çå度
bcd=newBeaClassDemo[Max_Number];
for(i=0;iMax_Number;i++)
bcd[i]=newBeaClassDemo(width,height,G);
}
publicvoidstart(){
if(thread==null){
thread=newThread(this);
thread.start();
}
}
@SuppressWarnings("deprecation")
publicvoidstop(){
if(thread!=null){
thread.stop();
thread=null;
}
}
@SuppressWarnings({ "unused","static-access"})
publicvoidrun(){
inti;
intE=(int)(Math.random()*Max_Energy*3/4)+Max_Energy/4+1;
intP=(int)(Math.random()*Max_Patch*3/4)//çè±çæç¹æ°
+Max_Patch/4+1;
intL=(int)(Math.random()*Max_Length*3/4)//çè±å¯åå°åºçè·ç¦»
+Max_Length/4+1;
longS=(long)(Math.random()*);
booleansleep;
Graphicsg=getGraphics();
URLu=null;
while(true){
try{
thread.sleep(/speed);
catch(InterruptedExceptionx){
sleep=true;
for(i=0;iMax_Number;i++)
sleep=sleepbcd[i].sleep;
if(sleepMath.random()*variability){
E=(int)(Math.random()*Max_Energy*3/4)+Max_Energy/4
+1;
P=(int)(Math.random()*Max_Patch*3/4)+Max_Patch/4
+1;
L=(int)(Math.random()*Max_Length*3/4)+Max_Length/4
+1;
S=(long)(Math.random()*);
for(i=0;iMax_Number;i++){
if(bcd[i].sleepMath.random()*Max_Number*L1)
bcd[i].init(E,P,L,S);
bcd[i].start();
bcd[i].show(g);
publicvoidpaint(Graphicsg)?
g.setColor(Color.black);
g.fillRect(0,0,width+1,height+1);
classBeaClassDemo
publicbooleansleep=true;
privateintenergy,patch,length,width,height,G,Xx,Xy,Ex[],Ey[],x,
y,Red,Blue,Green,t;
privateRandomrandom;
publicBeaClassDemo(inta,intb,intg)
width=a;
height=b;
G=g;
publicvoidinit(inte,intp,intl,longseed)?
inti;
energy=e;
patch=p;
length=l;
//å建ä¸ä¸ªå¸¦ç§åçéæºæ°çæå¨
random=newRandom(seed);
Ex=newint[patch];
Ey=newint[patch];
Red=(int)(random.nextDouble()*)+;
Blue=(int)(random.nextDouble()*)+;
Green=(int)(random.nextDouble()*)+;
Xx=(int)(Math.random()*width/2)+width/4;
Xy=(int)(Math.random()*height/2)+height/4;
for(i=0;ipatch;i++){
Ex[i]=(int)(Math.random()*energy)-energy/2;
Ey[i]=(int)(Math.random()*energy*7/8)-energy/8;
publicvoidstart
t=0;
sleep=false;
publicvoidshow(Graphicsg)
if(!sleep)?
if(tlength)
inti,c;
doubles;
Colorcolor;
c=(int)(random.nextDouble()*)-+Red;
if(c=0c)
Red=c;
c=(int)(random.nextDouble()*)-+Blue;
if(c=0c)
Blue=c;
c=(int)(random.nextDouble()*)-+Green;
if(c=0c)
Green=c;
color=newColor(Red,Blue,Green);
for(i=0;ipatch;i++)
s=(double)t/;
x=(int)(Ex[i]*s);
y=(int)(Ey[i]*s-G*s*s);
g.setColor(color);
g.drawLine(Xx+x,Xy-y,Xx+x,Xy-y);
if(t=length/2)
intj;
for(j=0;j2;j++)
s=(double)((t-length/2)*2+j)/;
x=(int)(Ex[i]*s);
y=(int)(Ey[i]*s-G*s*s);
g.setColor(Color.black);
g.drawLine(Xx+x,Xy-y,Xx+x,Xy-y);
常ç¨çç¼ç¨è¯è¨ã
ç¼ç¨è¯è¨ä¸ï¼Cè¯è¨
Cè¯è¨æ¯ä¸çä¸ææµè¡ã使ç¨æ广æ³çé«çº§ç¨åºè®¾è®¡è¯è¨ä¹ä¸ãå¨æä½ç³»ç»åç³»ç»ä½¿ç¨ç¨åºä»¥åéè¦å¯¹ç¡¬ä»¶è¿è¡æä½çåºåï¼ç¨Cè¯è¨ææ¾ä¼äºå ¶å®é«çº§è¯è¨ï¼è®¸å¤å¤§ååºç¨è½¯ä»¶é½æ¯ç¨Cè¯è¨ç¼åçã
ç¼ç¨è¯è¨äº:java
Javaæ¯ä¸ç§å¯ä»¥æ°å跨平å°åºç¨è½¯ä»¶çé¢å对象çç¨åºè®¾è®¡è¯è¨ï¼æ¯ç±SunMicrosystemså ¬å¸äºå¹´5ææ¨åºçJavaç¨åºè®¾è®¡è¯è¨åJavaå¹³å°ï¼å³JavaSE,JavaEE,JavaMEï¼çæ»ç§°ã
ç¼ç¨è¯è¨ä¸:c++
C++è¿ä¸ªè¯å¨ä¸å½å¤§éçç¨åºåååä¸é常被读åâCå å âï¼è西æ¹çç¨åºåé常读åâCplusplus","CPPâãå®æ¯ä¸ç§ä½¿ç¨é常广æ³ç计ç®æºç¼ç¨è¯è¨ãC++æ¯ä¸ç§éææ°æ®ç±»åæ£æ¥çãæ¯æå¤éç¼ç¨èå¼çéç¨ç¨åºè®¾è®¡è¯è¨ã
Gitea源码分析(一)
Gitea是一个基于Go编写的Git代码托管工具,源自于gogs项目,具有良好的后端框架和前端集成。
前端框架采用Fomantic UI和Vue,路由控制器框架在年4月从macaron切换到chi,形成了gitea项目的结构基础。
在调用接口时,gitea引入了'User','Repo','Org'等内容,简化了接口调用,便于管理。'ctx.User'和'ctx.Repo'内容动态变化,需要用户登录和进入仓库时赋值。
在'routers'下,'handler'相关文件分为'get'和'post'两类,前者涉及前端渲染,后者负责执行操作。
'get'请求通过'templates'中的文件渲染到前端,通过'ctx.Data["name"]'传递需要渲染的数据,获取URL参数使用'c.Query'。
'post'请求接收前端数据,通常通过'form'传值,从'context'生成,可以使用'form.xxx'直接调用,添加内容则需在'form'结构体中定义。
渲染生成网页使用'ctx.Html(,tplName)',根据'context'内容做条件判断。
权限管理功能实现中,数字越大权限越高,便于后续对比。'UnitType'包含多项,如仓库页面导航栏显示。检查权限时,对比AccessModeRead和模块权限,大于则认为具有读权限。
gitea默认运行于单一服务器,伸缩性有限。若需分布式改造,需解决大规模并发访问、存储库分片和数据库支撑等问题。通过ELB负载均衡分散到多个节点,数据库使用集群方案,但存储库分片面临巨大挑战,现有技术难以实现。
官方文档提供了其他开源库的介绍,包括配置文件、容器方式下的轻量仓库与CI使用方案等。深入研究可发现Gitea的配置、路由控制框架chi、权限管理实现及分布式架构改造思路。