作者: richardmiao

  • 腾讯CODING 填坑记

    目标:把代码部署到腾讯云的vm(ubuntu)上

    时间花费:差不多两天

    结果:终于成了

    下面是坑和填坑的故事:

    自定义的CI 只能使用Jenkins, 连自带的构建框架都不能选,然后很多配置跟原生的Jenkins还不一样…

    凭证的配置在开发者选项里面
    需要配置数据库密码和SSH 私钥,藏得很深

    Jenkins 不支持ssh-keygen 生成的OpenSSH私钥,需要通过ssh-keygen 命令转化成PEM
    ssh-keygen -p -m PEM -f /path/to/your/private_key -P “” -N “”

    私钥公钥的一些事情

    哪里生成,可以本地生成,也可以线上生成(比如Ubuntu)

    一个是私钥 – 不带.pub 的文件,要用在本地和Coding的Jenkins上

    一个是公钥 – 带.pub的文件,需要注册到服务器上,可以用命令,也可以手动
    ssh-copy-id username@remote_host
    手动则需要把私钥拷贝到~/.ssh/authorized_keys

    ssh 一个超级有用的参数 -v(verbose mode), 用来查看ssh的连接情况,判断哪里可能除了问题

    ssh -v username@remote_host  # 基本详细模式
    ssh -vv username@remote_host # 更详细的输出
    ssh -vvv username@remote_host # 最详细的调试输出

    另一个大坑是腾讯云的帐户,轻量级服务器的默认登录是lighthouse,不是ubuntu,这个坑要注意两点:
    a.注意用户权限,尤其是应用部署目录的

    b. 注意私钥,公钥的位置

    node环境如果选择any,他会给你一个老古董

    可以通过指定dokcer agent 来使用高版本的node

    agent {
          docker {
                reuseNode 'true'
                registryUrl 'https://coding-public-docker.pkg.coding.net'
                image 'public/docker/nodejs:18'
            }
    }


    后面再补吧~

  • 云端搭建mysql数据库-配置注意事项

    1. root 用户一般只允许本地链接,即 root’@’localhost’
    2. 创建允许远程连接(这里允许所有IP访问,可具体指定)的用户 CREATE USER ‘op_user’@’%’ IDENTIFIED BY ‘‘
    3. 授权(这里给所有,可以指定到Read,Write)GRANT ALL PRIVILEGES ON op_db.* TO ‘op_user’@’%’;
    4. 刷新权限:FLUSH PRIVILEGES;
    5. 防火墙,允许3306端口
    6. 还是连不上… 检查mysql 是否只开启了本地监听
    7. 修改mysql 配置文件:
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    [mysqld]
    bind-address = 0.0.0.0  # 允许所有 IP 连接(云环境常用)
    # 或 bind-address = <云服务器公网IP>  # 仅允许通过公网IP连接
    # mysqlx-bind-address 不需要改,这个是为 X Protocal(33060)定义的

    8. 重启MySQL

    sudo systemctl restart mysql

    9. 查看是否生效

    # 查看端口监听情况(需安装 net-tools)
    netstat -tulpn | grep 3306

    预期输出:
    tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1234/mysqld
    (若显示 127.0.0.1:3306,说明修改未生效,需检查配置文件)

    10. 开始测试

    出现了 出现 Public Key Retrieval is not allowed 错误

    这通常与 MySQL 8.0+ 的加密认证方式有关。MySQL 8.0 默认使用 caching_sha2_password 插件,需要通过公钥进行密码验证,而某些客户端(如 JDBC、Navicat)默认禁用了自动获取公钥的功能

    找到驱动属性,如下使用DBeaver为例, 修改为True,测试成功


    如果是代码,需要在connect string上增加下面的属性,

    allowPublicKeyRetrieval=true&useSSL=true&requireSSL=true

    以nodejs 为例

    好了,收工~

  • 通过云端入口访问本地AI服务

    线上的AI虽然好用,但是你的数据会共享出去,如果使用AI API,价格很贵,搭建云上自有的AI服务器,服务器又很贵,于是有了

    云端 nginx,配置了反向代理, 本地通过nodejs 包装了deepseek r1/v3服务

    在本地机器上通过SSH 连接 本地和远端,命令如下

    ssh -R 8888:localhost:8888 ubuntu@129.211.63.154

    测试结果:



    细节稍后补充…

  • 常用资源

    招聘网站

    网站名链接说明评价
    BOSS 直聘https://www.zhipin.com创新招聘平台,求职者能直接与招聘负责人在线沟通,职位遍布全国各行业,尤其互联网行业岗位较多1。AI 转换简历超方便, 消息反馈及时,页面布局合理
    智联招聘http://www.zhaopin.com/全国性人才网站,提供网络招聘、猎头服务等多种人力资源服务,外企、国企和大型非互联网公司岗位较多479。高端人才招聘有优势,品牌知名度高,但二三线城市职位数量相对较少,部分职位投递后反馈不及时4。
    前程无忧http://www.51job.com/国内第一个集多种媒介资源优势的专业人力资源服务机构,提供招聘猎头、培训测评等服务,岗位覆盖范围广4。在各方面较为均衡,对三线城市的关注比其他同类网站更多,搜索功能强大,但搜索结果精准度有待提高,界面更新较慢4。
    猎聘网https://wow.liepin.com/主要针对中高端人才,提供严格的会员制度和一对一顾问式服务,有大量国企、名企的中高层岗位1。拥有高质量人才库,能为中高端人才提供精准职位匹配和推荐服务,但存在猎头发布重复或虚假职位信息的情况4。
    应届生求职网https://www.yingjiesheng.com专门面向应届毕业大学生及在校生的求职招聘网站,提供校园招聘、兼职实习等信息。专注应届生求职,信息针对性强,与众多企业合作,是应届生找工作的重要渠道。
    24365 大学生就业服务平台https://www.ncss.cn/由教育部主管,为高校毕业生及用人单位提供公共就业服务,提供求职服务、就业指导等一站式服务11。官方背景,信息真实可靠,岗位资源丰富,还提供大量就业指导资源,对高校毕业生就业帮助较大11。
    拉勾招聘https://www.lagou.com专注于互联网和 IT 行业的招聘,提供开发、产品、设计等细分领域岗位1。职位信息专业且细分,招聘需求和求职期望匹配度高,有投递实时反馈功能,能让求职者及时了解简历状态4。
    康强医疗人才网https://www.kq36.com专注于医疗卫生领域,为医院、药店、医药制药公司等提供招聘服务。是医疗行业求职者的重要平台,岗位针对性强,便于医疗人才找到合适职位。
    万行教师人才网https://www.job910.com专注教师招聘双选的在线平台,已开设全国 34 个省市自治区招聘频道,服务覆盖全国10。专注于教育行业,招聘信息覆盖城市多,简历数据丰富,是教师求职的常用网站10。
    国聘网https://www.iguopin.com/由国投人力资源服务有限公司运营,是骨干中央企业、地方国有企业和社会知名机构组织人才引进的重要平台8。国企央企岗位丰富,官方性和权威性强,为求职者提供了可靠的国企就业渠道。
    领英(LinkedIn)https://www.linkedin.com全球知名的职业社交平台,连接全球数亿职场人士,提供职业资讯与行业动态12。适合寻找涉外岗位或跨国企业工作机会,可通过人脉获取内推机会,还能了解行业动态,提升职场竞争力112。
    脉脉https://maimai.cn职场实名社交平台,除社交功能外,也有大量企业发布招聘信息。可通过人脉关系获取求职机会,了解行业动态和企业内部情况,但信息质量可能参差不齐,需自行甄别。
  • 偶遇Dijkstra

    今天做题,偶遇Dijkstra,记录下来
    Dijkstra算法由计算机科学家Edsger Dijkstra在1956年提出。该算法适用于有向图和无向图,且图中的边权重必须为非负数。
    算法理解
    假设有如下图,我们需要计算从A到D的最短路径

    我们用一个数组记录A到所有节点的距离[]

    1. 第一步初始化,到自己为0,到其他节点为无穷, 所以得到 [0, ∞, ∞, ∞]
    2. 第二步计算A直接相连节点,更新A到所有节点的距离,得到 [0, 1,4,∞]
    3. 第三步移到节点B, 计算B直接相连的,更新A到所有节点的距离,得到 [0, 1,3,6]
    4. 第四步移到节点C, 计算C直接相连的距离,更新A到所有节点的距离,得到 [0, 1,3,4]
    5. D是最后一个节点,不需要计算了~

    所以我们就得到了A 到其他节点的最短路径

    强调一下:所有边的权重非负,因为负的权重会破坏数组是已知节点的最优解(比如重复走负权重这条路会让总距离越来越短~)

    实际应用场景举例:

    1. 地图导航-计算最短/最快路径
    2. 网络数据包路由
    3. 物流运输
    4. 社交网络-找朋友
    5. 电力/交通系统规划


    如果权重为负,比如计算最小成本的时候,某些路径上出现了收益…

    下一篇介绍Bellman-Ford算法来正确处理负权重的问题。